2

我有一个存储在 PEM 文件中的公钥,我想加载这个文件并将公钥提取到一个 NSData 中,然后我可以将它发送到 [SecKeyWrapper addPeerPublicKey:keyBits:](参见http://developer.apple. com/library/ios/#samplecode/CryptoExercise/Listings/Classes_SecKeyWrapper_h.html)。

我如何在 Objective-C(在 iOS 上)中做到这一点?

4

1 回答 1

3

假设您知道公钥存在并以“-----BEGIN PUBLIC KEY-----”开头并以“-----END PUBLIC KEY-----”结尾,您可以执行以下操作:

NSString *startPublicKey = @"-----BEGIN PUBLIC KEY-----";
NSString *endPublicKey = @"-----END PUBLIC KEY-----";
NSString* path = [[NSBundle mainBundle] pathForResource:@"mykey"
                                                     ofType:@"pem"];
NSString* content = [NSString stringWithContentsOfFile:path
                                                  encoding:NSUTF8StringEncoding
                                                     error:NULL];
NSString *publicKey;
NSScanner *scanner = [NSScanner scannerWithString:content];
[scanner scanUpToString:startPublicKey intoString:nil];
[scanner scanString:startPublicKey intoString:nil];
[scanner scanUpToString:endPublicKey intoString:&publicKey];

NSData *data = [NSData base64DataFromString:publicKey];
于 2013-06-01T03:04:32.157 回答