Cuando intento utilizar SecPKCS12Import()
desde el marco de seguridad proporcionado por Mac OS X 10.6, el código de resultado siempre es errSecUnimplemented
, independientemente de los argumentos proporcionados.SecPKCS12Import() de Security.framework falla en OS X 10.6
Además, el vinculador no puede encontrar símbolos para las constantes relevantes para esta función declarada en SecImportExport.h (es decir, kSecImportExportPassphrase
, kSecImportItemIdentity
, et al.).
¿Qué diablos está pasando con esta biblioteca? ¿Está implementada la función o no? ¿Por qué el enlazador puede resolver todos los demás símbolos en el marco, pero no estos? ¿Cómo debo convertir un blob binario con formato PKCS12 en un par SecIdentityRef o SecCertificateRef y SecKeyRef?
¿Qué estoy haciendo mal? Estoy seguro de que este es un problema PEBKAC. :-)
EDIT: Veo que no estaba muy claro en mi pregunta. Soy consciente de que Security.framework está implementado, dado que puedo usar la otra funcionalidad que proporciona sin problemas. Dado esto, estoy bastante seguro de que estoy vinculándome contra el marco correctamente, ya que si elimino el enlace, ninguno de los símbolos se puede encontrar, como se esperaba. Cuando vuelvo a vincular el marco, se encuentran todos los símbolos, con la excepción de las constantes correspondientes al SecPKCS12Import()
, p. kSecImportExportPassphrase
, kSecImportItemIdentity
, etc.
Teniendo en cuenta que no puedo usar estos símbolos, que pasó en las cadenas de lo que podría haber sido incorrecta (@"kSecImportItemIdentity"
, etc.), pero devolvió el código de error fue errSecUnimplemented
. Esto me llevó a creer que tal vez esta funcionalidad específica no se haya implementado.
Intenté usar el 10.5 SDK, pero eso no funcionó, por supuesto. :-)
EDIT: La importación es sólo un habitual #import <Security/Security.h>
. Para las patadas, probé #import <Security/SecImportExport.h>
también, pero esto no afectó ningún cambio. Dicho esto, el error es emitido por el vinculador, no el compilador.
Ejecuté dyldinfo -export Security.framework/Security
para enumerar los símbolos exportados por la biblioteca y encontré muchos de los símbolos new, pero faltaban kSecImportExportPassphrase
y amigos. Esto podría explicar por qué el enlazador no puede encontrar los símbolos. El símbolo para SecPKCS12Import
aparece en la tabla de símbolos y puedo llamarlo sin problemas, es solo que la funcionalidad no parece estar allí.
Confirmado que no se ha implementado, al menos a partir de 10.6.2 - presente un Radar al respecto. Detalles en mi respuesta a continuación. –