如下代码先生成一对key,然后再由这对key生成一个证书,但是最后得出的这个证书的公钥总是为空,有什么地方错了吗?多谢指点
//keypair
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGenerator.initialize(2048,new SecureRandom());
KeyPair keyPair = keyPairGenerator.generateKeyPair();
//certificate
Calendar calendar = Calendar.getInstance();
calendar.set(2009, 0, 1);
Date notBefore = new Date(calendar.getTimeInMillis());
calendar.set(2029, 0, 1);
Date notAfter = new Date(calendar.getTimeInMillis());
BigInteger serialNumber = BigInteger.valueOf(Math.abs(System.currentTimeMillis()));
X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
X500Principal dnName = new X500Principal("C=XX,ST=XX,L=XX,O=XX,OU=XX,CN=XXXXX");
certGen.setSerialNumber(serialNumber);
certGen.setIssuerDN(dnName);
certGen.setNotBefore(notBefore);
certGen.setNotAfter(notAfter);
certGen.setSubjectDN(dnName);
certGen.setPublicKey(keyPair.getPublic()); //set public key here
certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");
PrivateKey signingKey = keyPair.getPrivate();
X509Certificate cert = certGen.generateX509Certificate(signingKey,"BC");
//why certification's public key is null?
android.util.Log.e("mylog","cert.getPublicKey():" cert.getPublicKey());
--
FROM 223.104.3.*