Uygulamamdaki veri dosyalarını imzalamak için dijital sertifikaları kullanıyorum. Aşağıdaki kod parçası, SecKeyRawVerify
numaralı çağrıya -9809 ile geri döndüğünde başarısız olur. Bu bir iPhone üzerinde çalışıyor. Bu hata kodunun tam olarak ne anlama geldiğini bile belirleyemiyorumSecKeyRawVerify ve OSError -9809
Önceki Güvenlik Çerçevesi, public anahtarın elde edildiği SecTrustRef'in yüklenmesi ve oluşturulmasını gerektiriyor - hata yok. Sadece küçük bir sorun, SecTrustEvaluate
numaralı aramanın kSecTrustResultUnspecified
döndürmesidir, ancak bunun benim kullandığım ilkenin SecPolicyCreateBasicX509
çağrısı tarafından döndürülen boilerplate olması nedeniyle olduğunu farz etmeliyim.
Herhangi bir yardım veya içgörü çok takdir edilecektir.
sayesinde
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]
);
'dan yüklenen sertifikaları kullanarak dinamik olarak oluşturulur. SecKeyRawVerify', verilerinizin karmasını beklemez. İmza oluşturmak için her ne yaparsanız yapın, bu, verilerinizin karmasına dayalı bir imza yarattı. – Greg