如何从AsymmetricCipherKeyPair创建PGP公钥和私钥?

时间:2019-07-02 12:02:40

标签: java android cryptography openpgp

我的目标是生成Armoer椭圆曲线(ECC)公钥和私钥。因此,我已经实现了AsymmetricCipherKeyPair,现在我必须将其转换为OpenPGP Key,然后将其传递给KeyRingGenrator。


X9ECParameters parms = ECNamedCurveTable.getByOID(new ASN1ObjectIdentifier("curve25519"));
      ECParameterSpec domainparams =  EC5Util.convertToSpec(parms);

        ECDomainParameters domainParams = EC5Util.getDomainParameters(null,domainparams);


        SecureRandom secureRandom = new SecureRandom();
        ECKeyGenerationParameters keyParams = new ECKeyGenerationParameters(domainParams, secureRandom);

        ECKeyPairGenerator generator = new ECKeyPairGenerator();
        generator.init(keyParams);
        AsymmetricCipherKeyPair keyPair = generator.generateKeyPair();

在生成keyPair之后,我必须将其转换为OpenPGP密钥对,以便可以在以下函数中传递它。 PGPKeyPair eccKeyPair = new PGPKeyPair("openPGPPublicKey", "openPGPPrivateKey");

此功能还用于生成钥匙圈。



PGPKeyRingGenerator    keyRingGen = new PGPKeyRingGenerator (PGPSignature.DEFAULT_CERTIFICATION,
                eccKeyPair ,
                "umaimaahmed1@gmail.com", null, null,
                null, new BcPGPContentSignerBuilder(PGPPublicKey.EC,
                HashAlgorithmTags.SHA256),
                new BcPBESecretKeyEncryptorBuilder(PGPEncryptedData.AES_256).build(passPhrase));

1 个答案:

答案 0 :(得分:0)

查看API文档时,我发现:

  

已弃用。适当使用BcPGPKeyPairJcaPGPKeyPair

BcPGPKeyPair呢?

您毕竟是使用Bouncy Castle的轻量级API生成密钥对。