Khi tôi cố gắng sử dụng SecPKCS12Import()
từ khung Bảo mật như được cung cấp bởi Mac OS X 10.6, mã kết quả luôn là errSecUnimplemented
, bất kể đối số được cung cấp.SecPKCS12Import() từ Security.framework không thành công trên OS X 10.6
Hơn nữa, trình liên kết không thể tìm thấy các biểu tượng cho các hằng số liên quan đến hàm này được khai báo trong SecImportExport.h (tức là kSecImportExportPassphrase
, kSecImportItemIdentity
, et al.).
Điều gì trên trái đất đang diễn ra với thư viện này - là chức năng được triển khai hay chưa? Tại sao trình liên kết có thể giải quyết tất cả các biểu tượng khác trong khung công tác chứ không phải các biểu tượng này? Làm cách nào để chuyển đổi một blob nhị phân được định dạng PKCS12 thành cặp SecIdentityRef hoặc SecCertificateRef và SecKeyRef?
Tôi đang làm gì sai? Tôi chắc chắn đây là một vấn đề PEBKAC. :-)
EDIT: Tôi thấy rằng tôi không rõ ràng trong câu hỏi của mình. Tôi biết rằng Security.framework được triển khai, vì tôi có thể sử dụng chức năng khác mà nó cung cấp mà không có sự cố. Với điều này, tôi khá chắc chắn rằng tôi đang liên kết với khung chính xác, vì nếu tôi loại bỏ các liên kết, không ai trong số các biểu tượng có thể được tìm thấy - như mong đợi. Khi tôi liên kết lại khung, tất cả các ký hiệu được tìm thấy, ngoại trừ các hằng số có liên quan đến SecPKCS12Import()
, ví dụ: kSecImportExportPassphrase
, kSecImportItemIdentity
vv
Cho rằng tôi không thể sử dụng các biểu tượng này, tôi trôi qua trong chuỗi những gì có thể đã không chính xác (@"kSecImportItemIdentity"
, vv), nhưng các mã lỗi trả về là errSecUnimplemented
. Điều này khiến tôi tin rằng có lẽ chức năng cụ thể này chưa được thực hiện.
Tôi đã thử sử dụng SDK 10.5, nhưng điều đó không hiệu quả, tất nhiên. :-)
CHỈNH SỬA: Nhập của tôi chỉ là #import <Security/Security.h>
thông thường. Đối với đá, tôi đã thử #import <Security/SecImportExport.h>
là tốt, nhưng điều này ảnh hưởng không thay đổi. Điều đó nói rằng, lỗi được phát hành bởi trình liên kết chứ không phải trình biên dịch.
Tôi đã chạy dyldinfo -export Security.framework/Security
để liệt kê các biểu tượng được xuất bởi thư viện và tìm thấy nhiều biểu tượng new, nhưng kSecImportExportPassphrase
và bạn bè bị thiếu dễ thấy. Điều này có thể giải thích tại sao mối liên kết không thể tìm thấy các biểu tượng. Biểu tượng cho SecPKCS12Import
xuất hiện trong bảng biểu tượng và tôi có thể gọi điều đó mà không có vấn đề gì, nó chỉ là chức năng dường như không có ở đó.
Đã được xác nhận là chưa được thực hiện, ít nhất là 10.6.2 - vui lòng gửi một Radar về điều này. Chi tiết trong câu trả lời của tôi dưới đây. –