estoy usando certificados digitales para firmar los archivos de datos en mi aplicación. El siguiente fragmento de código falla cuando la llamada a SecKeyRawVerify
regresa con -9809. Esto se ejecuta en un iPhone. Ni siquiera puedo identificar exactamente qué significa este código de errorSecKeyRawVerify y OSError -9809
El Marco de Seguridad antes de escala para cargar y crear el SecTrustRef a partir del cual se obtiene la clave pública parecen estar bien - no hay errores. El único problema es que la llamada a SecTrustEvaluate
devuelve un kSecTrustResultUnspecified
, pero supongo que se debe a la política que estoy usando es el repetitivo devuelto por la llamada SecPolicyCreateBasicX509
.
Cualquier ayuda o penetración sería muy apreciado.
Gracias
SecKeyRef keyRef = SecTrustCopyPublicKey (trustRef);
fileURL = [[NSBundle mainBundle] URLForResource:@"data" withExtension:@"txt"];
NSData *data = [NSData dataWithContentsOfURL:fileURL];
fileURL = [[NSBundle mainBundle] URLForResource:@"data" withExtension:@"sgn"];
NSData *signature = [NSData dataWithContentsOfURL:fileURL];
NSLog(@"Hash block size = %zu",SecKeyGetBlockSize(keyRef));
status = SecKeyRawVerify (keyRef,
kSecPaddingPKCS1SHA1,
(const uint8_t *)[data bytes],
(size_t)[data length],
(const uint8_t *)[signature bytes],
(size_t)[signature length]
);
. No es que 'SecKeyRawVerify' espera el hash de sus datos. Es que cualquier cosa que utilizó para generar la firma en primer lugar creó una firma basada en el hash de sus datos. – Greg