現在、エンドツーエンドの暗号化を使用して iOS アプリを開発しています。ユーザーが相互に認証できるようにするために、すべてのユーザーは x509 証明書署名要求 (CSR) を生成し、署名のために CSR を CA サーバーに送信します。
ユーザーは、他のユーザーの証明書が CA によって署名されていることを確認することで、別のユーザーを信頼できます。
私の質問は:
iPhone には現在、認証が必要な CA 証明書とユーザー証明書があります。ユーザー証明書が実際に CA によって署名されていることを確認するにはどうすればよいですか?
私の最善の試みは次のコードですが、clientCert を評価する対象が指定されていないため、混乱します。
-(BOOL) evaluateTrust:(SecCertificateRef) clientCert{
SecPolicyRef myPolicy = SecPolicyCreateBasicX509();
SecCertificateRef certArray[1] = { clientCert };
CFArrayRef myCerts = CFArrayCreate(
NULL, (void *)certArray,
1, NULL);
SecTrustRef myTrust;
OSStatus status = SecTrustCreateWithCertificates(
myCerts,
myPolicy,
&myTrust);
SecTrustResultType trustResult;
if (status == noErr) {
status = SecTrustEvaluate(myTrust, &trustResult);
}
NSLog(@"trustresult %d", trustResult);
return trustResult == kSecTrustResultProceed || trustResult == kSecTrustResultUnspecified;
}