Ich verwende digitale Zertifikate zum Signieren von Dateien in meiner App. Das folgende Codefragment schlägt fehl, wenn der Aufruf von SecKeyRawVerify
mit -9809 zurückkehrt. Dies läuft auf einem iPhone. Ich kann nicht einmal genau identifizieren, was dieser Fehlercode bedeutetSecKeyRawVerify und OSError -9809
Das vorherige Security Framework Aufrufe zum Laden und Erstellen der SecTrustRef, von denen der öffentliche Schlüssel erhalten scheint gut - keine Fehler. Das einzige kleine Problem ist, dass der Anruf an SecTrustEvaluate
eine kSecTrustResultUnspecified
zurückgibt, aber ich nehme an, dass, weil die Politik, die ich benutze, das Boilerplate ist, das durch den SecPolicyCreateBasicX509
Aufruf zurückgegeben wird.
Jede Hilfe oder Einsicht würde sehr geschätzt werden.
Dank
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]
);
Es ist nicht so, dass 'SecKeyRawVerify' den Hash Ihrer Daten erwartet. Es ist das, was auch immer Sie verwendet haben, um die Signatur an erster Stelle zu erzeugen, die eine Unterschrift basiert auf dem Hasch Ihrer Daten. – Greg