在iPhone开发中有一种方法可以从我的RSA公钥生成X509证书(seckeyref)
或者有任何人知道如何将我的公钥传输到java服务器?
感谢Patrick
答案 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()进行签名,以免违反密钥库上的安全规则。