Comment exporter la clé privée RSA au format pem à l'aide de java


J'ai une clé privée vers laquelle je voudrais exporter .format pem Le problème est que, quand j'appelle privateKey.getEncoded () Je reçois null. Mais je peux obtenir toutes les informations comme l'exposant, le module et donc un (tous à partir de l'interface RSAPrivateKey). privateKey est org.mozilla.jss.pkcs11.PK11RSAPrivateKey Objet.

    public String exportPrivateKey(PrivateKey privateKey) throws Throwable {
    byte[] encoded = privateKey.getEncoded();//this is null:<
    String body = DatatypeConverter.printBase64Binary(encoded);

    return RSA_PRIVATE_HEADER + body + RSA_PRIVATE_FOOTER;
}

Comment exporter cette clé dans un fichier pem?

Author: Marcin Mierzejewski, 2015-10-31

1 answers

Méthode que j'ai trouvée dans PKCS12Export, et cela fonctionne correctement: P

private byte[] getEncodedKey(PrivateKey var1) throws Exception {
    CryptoManager var2 = CryptoManager.getInstance();
    CryptoToken var3 = var2.getInternalKeyStorageToken();
    KeyGenerator var4 = var3.getKeyGenerator(KeyGenAlgorithm.DES3);
    SymmetricKey var5 = var4.generate();
    KeyWrapper var6 = var3.getKeyWrapper(KeyWrapAlgorithm.DES3_CBC_PAD);
    byte[] var7 = new byte[]{(byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1};
    IVParameterSpec var8 = new IVParameterSpec(var7);
    var6.initWrap(var5, var8);
    byte[] var9 = var6.wrap(var1);
    Cipher var10 = var3.getCipherContext(EncryptionAlgorithm.DES3_CBC_PAD);
    var10.initDecrypt(var5, var8);
    return var10.doFinal(var9);
}
 1
Author: Marcin Mierzejewski, 2015-10-31 12:59:55