2012-03-14 28 views
4

iOSアプリケーション内でプログラムで証明書を作成したいとします。最も近いAPIはSecCertificateCreateWithDataで、DERでエンコードされたバイナリ入力が必要です。iOS上でSecCertificateCreateWithDataを使用して証明書を作成しました

実行時オブジェクトとして必要なすべてのデータがあることを考えれば、DERでエンコードされたバイナリデータの入力をどのように構築できますか?

答えて

5

これはDOENすることができる方法である。

NSString* certPath = [[NSBundle mainBundle] pathForResource:@"myCertificate" ofType:@"cer"]; 
NSData* certData = [NSData dataWithContentsOfFile:certPath]; 
SecCertificateRef cert; 
if([certData length]) { 
    cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certData); 
    if(cert != NULL) { 
     CFStringRef certSummary = SecCertificateCopySubjectSummary(cert); 
     NSString* summaryString = [[NSString alloc] initWithString:(__bridge NSString*)certSummary]; 
     NSLog(@"CERT SUMMARY: %@", summaryString); 
     CFRelease(certSummary); 
    } else { 
     NSLog(@" *** ERROR *** trying to create the SSL certificate from data located at %@, but failed", certPath); 
    } 
} 
// play with cert here 

myCertificate.cerは、アプリケーションバンドル内になければなりません。私はopensslでcerファイルを作成します。 iOSアプリケーションでこれを使用する予定の場合は、証明書に必要な内線番号が含まれていることを確認して、hereを確認してください。答えは-1ですが、これは私がこの実行を得るのを助けました。

+0

こんにちは@lawick、あなたが提案している解決策は、既存の証明書 "myCertificate.cer"をコピーすることです。私の質問は、既存のものをコピーするのではなく、プログラムで証明書を作成することです。必要な情報(キー、ユーザーの詳細など)はすべて持っています。 – Jamil

+0

申し訳ありませんが、私はあなたの質問に誤解しました。 DERデータはすでに証明書であるため、** SecCertificateCreateWithData **メソッドはこれをサポートしません。なぜiOSで証明書自体を作成したいのですか? – lawicko

+0

各ユーザーごとに証明書が必要です。あなたは、アプリケーション内でOpenSSLを使用して見て簡単になると思いますか? – Jamil

-1

SecKeyGeneratePairをご覧ください。これはあなたが探しているものだと思います。

+0

これは質問に対する回答ではなく、コメントであったはずです。 –

関連する問題