Tôi có một dự án mà tôi nhận được khóa riêng RSA được mã hóa cho người dùng từ máy chủ. Sử dụng thông tin do người dùng cung cấp, tôi có thể giải mã dữ liệu trở lại định dạng mong muốn. Tuy nhiên, tôi không thể tìm ra cách tải khóa riêng tư vào Keychain của iOS để sử dụng trong các chức năng mã hóa RSA.iOS: Thêm Khóa Cá nhân vào các thiết bị KeyChain
Hiện tại, tôi có mã sau đây mà tôi đã trộn với nhau từ các ví dụ khác nhau. Mã này hoạt động sẽ thêm một khóa công khai, nhưng dường như không hoạt động chút nào để thêm khóa riêng tư.
[peerPublicKeyAttr setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass];
[peerPublicKeyAttr setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
[peerPublicKeyAttr setObject:peerTag forKey:(__bridge id)kSecAttrApplicationTag];
[peerPublicKeyAttr setObject:privateKeyData forKey:(__bridge id)kSecValueData];
[peerPublicKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];
sanityCheck = SecItemDelete((__bridge CFDictionaryRef) peerPublicKeyAttr) ;
sanityCheck = SecItemAdd((__bridge CFDictionaryRef) peerPublicKeyAttr, (CFTypeRef *)&privateKey);
Khi tôi chạy mã này với các dữ liệu private key (giải mã sang định dạng DER), biến privateKey
được thiết lập để NULL bởi SecItemAdd()
gọi. Tuy nhiên, biến số sanityCheck
cho biết "Không có lỗi". Tôi đang thua lỗ vì những gì tôi đang mất tích.
Tôi cần làm gì để có khóa riêng tư tải vào khóa thành công?
bản sao có thể có của [Sử dụng khóa công cộng RSA trên iOS] (http://stackoverflow.com/questions/9728799/using-an-rsa-public-key-on-ios) – bobobobo