Quando si tenta di utilizzare SecPKCS12Import()
dal framework Security fornito da Mac OS X 10.6, il codice risultato è sempre errSecUnimplemented
, indipendentemente dagli argomenti forniti.SecPKCS12Import() da Security.framework non riesce su OS X 10.6
Inoltre, il linker non è in grado di trovare i simboli per le costanti relative a questa funzione dichiarate in SecImportExport.h (ad esempio kSecImportExportPassphrase
, kSecImportItemIdentity
, ecc.).
Cosa succede a questa libreria con la libreria - la funzione è implementata o no? Perché il linker può risolvere tutti gli altri simboli nel framework, ma non questi? Come devo convertire un blob binario formattato PKCS12 in una coppia SecIdentityRef o SecCertificateRef e SecKeyRef?
Cosa sto sbagliando? Sono sicuro che questo è un problema PEBKAC. :-)
EDIT: Vedo che non ero molto chiaro nella mia domanda. Sono consapevole del fatto che Security.framework è implementato, dato che sono in grado di utilizzare le altre funzionalità fornite senza problemi. Detto questo, sono abbastanza sicuro di collegarmi correttamente al framework, poiché se rimuovo il collegamento, non è possibile trovare nessuno dei simboli, come previsto. Quando ricollego il framework, vengono trovati tutti i simboli, ad eccezione delle costanti relative a SecPKCS12Import()
, ad es. kSecImportExportPassphrase
, kSecImportItemIdentity
, ecc
Premesso che non posso usare questi simboli, ho passato nelle stringhe quello che avrebbe potuto non corretti (@"kSecImportItemIdentity"
, etc.), ma il codice di errore riscontrato è errSecUnimplemented
. Questo mi ha portato a credere che forse questa funzionalità specifica non è stata implementata.
Ho provato a utilizzare l'SDK 10.5, ma ciò non ha funzionato, ovviamente. :-)
EDIT: Il mio importazione è solo un normale #import <Security/Security.h>
. Per i calci, ho provato anche #import <Security/SecImportExport.h>
, ma questo non ha comportato alcun cambiamento. Detto questo, l'errore viene emesso dal linker, non dal compilatore.
Ho eseguito dyldinfo -export Security.framework/Security
per elencare i simboli esportati dalla libreria e ho trovato molti dei simboli new, ma kSecImportExportPassphrase
e gli amici erano evidentemente mancanti. Questo potrebbe spiegare perché il linker non riesce a trovare i simboli. Il simbolo per SecPKCS12Import
appare nella tabella dei simboli e posso chiamarlo senza problemi, è solo che la funzionalità non sembra essere lì.
Confermato come non implementato, almeno dal 10.6.2 - si prega di depositare un Radar su questo. Dettagli nella mia risposta qui sotto. –