2012-03-29 17 views
5

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?

+0

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

Trả lời

2

Official response from Apple về chủ đề này chính xác là nó không được hỗ trợ. Cách duy nhất được hỗ trợ để nhận khóa riêng tư vào Keychain là thông qua các tệp PKCS # 12.

+0

Nhưng sau đó, cách bạn truy cập khóa riêng sau khi bạn nhập nó? –

+0

Khi bạn đã nhập tệp P12, bạn có thể truy cập khóa cá nhân bằng cách sử dụng hàm SecItemCopyMatching(). –

+0

Liên kết trong câu trả lời này không hoạt động. Nó chuyển hướng đến https://developer.apple.com/account. –

0