Tôi đang sử dụng chứng chỉ kỹ thuật số để ký các tệp dữ liệu trong Ứng dụng của mình. Đoạn mã dưới đây không thành công khi cuộc gọi đến SecKeyRawVerify
trả về với -9809. Điều này đang chạy trên iPhone. Tôi thậm chí không thể xác định chính xác mã lỗi này có nghĩa là gìSecKeyRawVerify và OSError -9809
Khung bảo mật trước đây gọi để tải và tạo SecTrustRef mà khóa công khai được nhận là có vẻ không có lỗi. Vấn đề nhỏ duy nhất là cuộc gọi đến SecTrustEvaluate
trả về một kSecTrustResultUnspecified
, nhưng tôi cho rằng đó là vì chính sách tôi đang sử dụng là bản hợp đồng được trả về bởi cuộc gọi SecPolicyCreateBasicX509
.
Mọi hỗ trợ hoặc thông tin chi tiết sẽ được đánh giá rất nhiều.
Cảm ơn
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]
);
Nó không phải là 'SecKeyRawVerify' hy vọng băm dữ liệu của bạn. Đó là bất cứ điều gì bạn sử dụng để tạo chữ ký ở nơi đầu tiên tạo ra một chữ ký dựa trên băm dữ liệu của bạn. – Greg