我尝试使用不能包含应用包的静态库进行RSA加密,这意味着我无法包含public_key.der文件。
因此,我尝试将.der文件信息硬编码到RSA类中的字节数组中并从中生成加密密钥,但每当我调用SecCertificateCreateWithData
时,我都会得到nil
1}}结果。
字节数组:
const char bytes[] = "3082 02b0 3082 0219 a003 0201 0202 0900 f4da 4db7 a151 5877 300d 0609 2a86 4886 f70d 0101...9aa2";
然后我从中创建NSData并尝试创建证书:
NSData *publicKeyFileContent = [NSData dataWithBytes:bytes length:sizeof(bytes)];
if (publicKeyFileContent == nil) {
NSLog(@"%s Could not read public key", __PRETTY_FUNCTION__);
return nil;
}
certificate = SecCertificateCreateWithData(kCFAllocatorDefault, ( __bridge CFDataRef)publicKeyFileContent);
if (certificate == nil) {
NSLog(@"%s Could not generate certificate", __PRETTY_FUNCTION__);
return nil;
}
答案 0 :(得分:1)
您使用的字节是密钥的人类可读表示,而不是密钥本身。
正确的密钥数据如下所示:
const char bytes[] = {
0x30, 0x82, 0x02, 0xb0, 0x30, 0x82, 0x02, 0x19, ...
};
(比较你得到的字符串表示中的第一个字节3082 02b0 3082 0219
。)