2016-03-20 7 views
0

Ich habe eine EG öffentlichen Schlüssel mit OpenSSL:Validate Signatur Objective-C

openssl ecparam -name prime256v1 -genkey -noout -out ec-key.pem 
openssl ec -in ec-key.pem -pubout -out ecpubkey.pem 

Wie kann ich importieren (ecpubkey.pem) und verwenden Sie es in meiner Objective-C-Code, eine Signatur zu validieren?

Antwort

0

Das ist für mich gearbeitet: den Schlüssel Erstellen von OpenSSL öffnet mit

openssl ecparam -name prime256v1 -genkey -noout -out ec-key.pem 

Mit der Zertifikat verschlüsselt zu generieren:

openssl req -new -x509 -key ec-key.pem -outform der -out server.pem -days 730 

Zeichen der Inhalt

openssl dgst -sha256 -sign ec-key.pem content.txt > signature 

Dann Laden des Zertifikats

NSString *cerPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"server" ofType:@"cer"]; 
NSData *cerData = [NSData dataWithContentsOfFile:cerPath]; 
SecCertificateRef certificate = SecCertificateCreateWithData(NULL, (CFDataRef)cerData); 

den öffentlichen Schlüssel aus dem Zertifikat Extrating

SecPolicyRef secPolicy = SecPolicyCreateBasicX509(); 
SecTrustRef trust; 
SecTrustCreateWithCertificates(certificate, secPolicy, &trust); 
SecTrustResultType resultType; 
SecTrustEvaluate(trust, &resultType); 
SecKeyRef publicKey = SecTrustCopyPublicKey(trust); 

Verifing die Signatur

uint8_t digest[CC_SHA256_DIGEST_LENGTH]; 
if (!CC_SHA256([content bytes], (CC_LONG)[content length], digest)) return NO;  
OSStatus status = SecKeyRawVerify(publicKey, 
            kSecPaddingPKCS1, 
            digest, 
            CC_SHA256_DIGEST_LENGTH, 
            (uint8_t*)[signature bytes], 
            [signature length]); 

return status == errSecSuccess; 
2

Eine Möglichkeit zur Verwendung von EC-Schlüsseln in iOS besteht in der Verwendung der Drittanbieterbibliothek GMEllipticCurveCrypto: https://github.com/ricmoo/GMEllipticCurveCrypto. Hör zu.

+0

Ich suche CSR mit ecdsawithsha256 und ich folgte dieser Bibliothek ist dies nur für die Unterzeichnung von EC Könnten Sie mir helfen, wie kann ich ein CSR-Zertifikat (PEM-Format) über diese Bibliothek erzeugen? – Aleem