iPhone从RSA公钥生成X509证书

时间:2012-07-18 12:38:01

标签: iphone certificate rsa exchange-server x509

在iPhone开发中有一种方法可以从我的RSA公钥生成X509证书(seckeyref)

或者有任何人知道如何将我的公钥传输到java服务器?

感谢Patrick

1 个答案:

答案 0 :(得分:0)

不确定你的意思。如果你的意思是RSA整个证书,那么:

SecCertificateRef cert = ...
CFDataRef der = SecCertificateCopyData(cert);

const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);

// now write len bytes from ptr to a file, put it in a POST request
// to the server, etc.

您可以用二进制文件(作为DER文件)写出,或者作为PEM证书转换为base64。 Java将喜欢DER文件/格式并在

中接受它
FileInputStream certificateStream = new FileInputStream(aboveDerFileOrPost);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
java.security.cert.Certificate[] certs = {};
certs = certificateFactory.generateCertificates(certificateStream).toArray();
certificateStream.close();

有点道。如果你的意思是你有一个原始的RSA公钥 - 你现在想要添加X509的东西,使它成为一个证书,然后签署它 - 这是相当多的工作。和AFAIK需要使用openssl(或者至少我是这样做的)来创建x509结构;然后使用SecTransformExecute()或SecKeyRawSign()进行签名,以免违反密钥库上的安全规则。