From 7124e1f6a5474fe76f92b4ce087ab561745e363e Mon Sep 17 00:00:00 2001 From: David Hook Date: Sat, 16 May 2020 18:27:43 +1000 Subject: [PATCH] removed dependency on lightweight classes --- .../openpgp/operator/jcajce/JcaPGPKeyConverter.java | 9 +++++---- .../jcajce/JcePublicKeyDataDecryptorFactoryBuilder.java | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcaPGPKeyConverter.java b/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcaPGPKeyConverter.java index a19713baf1..8903467e81 100644 --- a/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcaPGPKeyConverter.java +++ b/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcaPGPKeyConverter.java @@ -66,8 +66,6 @@ import org.bouncycastle.bcpg.RSAPublicBCPGKey; import org.bouncycastle.bcpg.RSASecretBCPGKey; import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags; -import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters; -import org.bouncycastle.crypto.params.X25519PublicKeyParameters; import org.bouncycastle.jcajce.util.DefaultJcaJceHelper; import org.bouncycastle.jcajce.util.NamedJcaJceHelper; import org.bouncycastle.jcajce.util.ProviderJcaJceHelper; @@ -83,6 +81,9 @@ public class JcaPGPKeyConverter { + private static final int X25519_KEY_SIZE = 32; + private static final int ED25519_KEY_SIZE = 32; + // We default to these as they are specified as mandatory in RFC 6631. private static final PGPKdfParameters DEFAULT_KDF_PARAMETERS = new PGPKdfParameters(HashAlgorithmTags.SHA256, SymmetricKeyAlgorithmTags.AES_128); @@ -480,7 +481,7 @@ else if (algorithm == PGPPublicKey.ECDSA) else if (pubKey.getAlgorithm().regionMatches(true, 0, "ED2", 0, 3)) { SubjectPublicKeyInfo pubInfo = SubjectPublicKeyInfo.getInstance(pubKey.getEncoded()); - byte[] pointEnc = new byte[1 + Ed25519PublicKeyParameters.KEY_SIZE]; + byte[] pointEnc = new byte[1 + ED25519_KEY_SIZE]; pointEnc[0] = 0x40; System.arraycopy(pubInfo.getPublicKeyData().getBytes(), 0, pointEnc, 1, pointEnc.length - 1); @@ -490,7 +491,7 @@ else if (pubKey.getAlgorithm().regionMatches(true, 0, "ED2", 0, 3)) else if (pubKey.getAlgorithm().regionMatches(true, 0, "X2", 0, 2)) { SubjectPublicKeyInfo pubInfo = SubjectPublicKeyInfo.getInstance(pubKey.getEncoded()); - byte[] pointEnc = new byte[1 + X25519PublicKeyParameters.KEY_SIZE]; + byte[] pointEnc = new byte[1 + X25519_KEY_SIZE]; pointEnc[0] = 0x40; System.arraycopy(pubInfo.getPublicKeyData().getBytes(), 0, pointEnc, 1, pointEnc.length - 1); diff --git a/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcePublicKeyDataDecryptorFactoryBuilder.java b/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcePublicKeyDataDecryptorFactoryBuilder.java index e8323eb7e5..e61e8d662c 100644 --- a/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcePublicKeyDataDecryptorFactoryBuilder.java +++ b/pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/JcePublicKeyDataDecryptorFactoryBuilder.java @@ -26,7 +26,6 @@ import org.bouncycastle.bcpg.ECDHPublicBCPGKey; import org.bouncycastle.bcpg.PublicKeyAlgorithmTags; import org.bouncycastle.bcpg.PublicKeyPacket; -import org.bouncycastle.crypto.params.X25519PublicKeyParameters; import org.bouncycastle.jcajce.spec.UserKeyingMaterialSpec; import org.bouncycastle.jcajce.util.DefaultJcaJceHelper; import org.bouncycastle.jcajce.util.NamedJcaJceHelper; @@ -43,6 +42,8 @@ public class JcePublicKeyDataDecryptorFactoryBuilder { + private static final int X25519_KEY_SIZE = 32; + private OperatorHelper helper = new OperatorHelper(new DefaultJcaJceHelper()); private OperatorHelper contentHelper = new OperatorHelper(new DefaultJcaJceHelper()); private JcaPGPKeyConverter keyConverter = new JcaPGPKeyConverter(); @@ -180,7 +181,7 @@ private byte[] decryptSessionData(JcaPGPKeyConverter converter, PGPPrivateKey pr KeyFactory keyFact = helper.createKeyFactory("XDH"); // skip the 0x40 header byte. - if (pEnc.length != (1 + X25519PublicKeyParameters.KEY_SIZE) || 0x40 != pEnc[0]) + if (pEnc.length != (1 + X25519_KEY_SIZE) || 0x40 != pEnc[0]) { throw new IllegalArgumentException("Invalid Curve25519 public key"); }