4

私のアプリは、1 つの特定の URL をインターセプトする NSURLProtocol サブクラスを登録します。プロトコルは、秘密鍵を使用して要求に応答します。

@implementation PrivateURLProtocol

// ignore everything besides keyURL
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
    return [request.URL isEqual:keyURL];
}

// respond with secret key
– startLoading
{
    NSURLResponse *response = [[NSURLResponse alloc] initWithURL:self.request.URL
            MIMEType:@"text/plain" expectedContentLength:-1 textEncodingName:nil];
    [self.client URLProtocol:self didReceiveResponse:response
            cacheStoragePolicy:NSURLCacheStorageNotAllowed];

    NSData *data = [@"Swordfish" dataUsingEncoding:NSUTF8StringEncoding];
    [self.client URLProtocol:self didLoadData:data];
    [self.client URLProtocolDidFinishLoading:self];
}

// boilerplate
– (void)stopLoading { }
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
    return request;
}

@end

私のコードと私がリンクしているライブラリだけがキーを見ることができるはずです。進取の気性に富んだユーザーは、どのようにして私の秘密鍵を取得する可能性がありますか? これは安全ですか?

興味のある方のために説明すると、これは DRM セットアップの一部です。AVPlayer は、暗号化されたメディアを再生できるようにキーを要求します。

4

0 に答える 0