public KeyPair getKeyPair(String alias, char[] password) { try { synchronized (lock) { if (store == null) { synchronized (lock) { store = KeyStore.getInstance("jks"); store.load(resource.getInputStream(), this.password); } } } RSAPrivateCrtKey key = (RSAPrivateCrtKey) store.getKey(alias, password); RSAPublicKeySpec spec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent()); PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(spec); return new KeyPair(publicKey, key); } catch (Exception e) { throw new IllegalStateException("Cannot load keys from store: " + resource, e); } }
new RSAPublicKeySpec(pks.getModulus(), pks.getPublicExponent()));
@Test public void shouldGeneratePrivateKeyWithCRTFactorsForCompatibilityWithOtherPlatform() throws Exception { X509CertificateGenerator generator = new X509CertificateGenerator(); Registration registration = generator.createAgentCertificate(keystore, "agentHostName"); assertThat(registration.getPrivateKey(), instanceOf(RSAPrivateCrtKey.class)); RSAPrivateCrtKey key = (RSAPrivateCrtKey) registration.getPrivateKey(); assertThat(key.getModulus().signum(), is(1)); assertThat(key.getPrivateExponent().signum(), is(1)); assertThat(key.getPrimeP().signum(), is(1)); assertThat(key.getPrimeExponentQ().signum(), is(1)); assertThat(key.getCrtCoefficient().signum(), is(1)); }
/** * @throws IllegalArgumentException if data is not correct length */ public static RSASigningPrivateCrtKey fromJavaKey(RSAPrivateCrtKey pk) throws GeneralSecurityException { int sz = pk.getModulus().bitLength(); SigType type; if (sz <= ((RSAKeyGenParameterSpec) SigType.RSA_SHA256_2048.getParams()).getKeysize()) type = SigType.RSA_SHA256_2048; else if (sz <= ((RSAKeyGenParameterSpec) SigType.RSA_SHA384_3072.getParams()).getKeysize()) type = SigType.RSA_SHA384_3072; else if (sz <= ((RSAKeyGenParameterSpec) SigType.RSA_SHA512_4096.getParams()).getKeysize()) type = SigType.RSA_SHA512_4096; else throw new GeneralSecurityException("Unknown RSA type"); // private key is modulus (pubkey) + exponent BigInteger n = pk.getModulus(); BigInteger d = pk.getPrivateExponent(); byte[] b = SigUtil.combine(n, d, type.getPrivkeyLen()); return new RSASigningPrivateCrtKey(pk, type, b); }
public BigInteger getModulus() { return prv.getModulus(); }
@Override public PublicKey publicKeyFromPrivateKey(PrivateKey privateKey, KeyFactory keyFactory) throws InvalidKeySpecException { RSAPrivateCrtKey rsaPrivateKey = (RSAPrivateCrtKey) privateKey; RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec( rsaPrivateKey.getModulus(), rsaPrivateKey.getPublicExponent()); return keyFactory.generatePublic(publicKeySpec); } }
@VisibleForTesting static PublicKey extractPublicKey(PrivateKey privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException { RSAPrivateCrtKey privk = (RSAPrivateCrtKey)privateKey; RSAPublicKeySpec publicKeySpec = new java.security.spec.RSAPublicKeySpec(privk.getModulus(), privk.getPublicExponent()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); return publicKey; }
public static PublicKey extractPublicKey(PrivateKey key) { if (key == null) { return null; } try { RSAPrivateCrtKey rsaPrivateCrtKey = (RSAPrivateCrtKey) key; RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(rsaPrivateCrtKey.getModulus(), rsaPrivateCrtKey.getPublicExponent()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); return keyFactory.generatePublic(publicKeySpec); } catch (Exception e) { throw new RuntimeException(e); } }
private static KeyPair toKeyPair(final PrivateKeyInfo pki) throws PEMException, NoSuchAlgorithmException, InvalidKeySpecException { final PrivateKey privateKey = pemConverter.getPrivateKey(pki); // If it's RSA, we can use the modulus and public exponents as BigIntegers to create a public key if (privateKey instanceof RSAPrivateCrtKey) { final RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(((RSAPrivateCrtKey) privateKey).getModulus(), ((RSAPrivateCrtKey) privateKey).getPublicExponent()); final KeyFactory keyFactory = KeyFactory.getInstance("RSA"); final PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); return new KeyPair(publicKey, privateKey); } // If was a private EC key, it would already have been received as a PEMKeyPair return new KeyPair(null, privateKey); } }
@Override public void init(int keySize) throws Exception { KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(keySize, new SecureRandom()); KeyPair pair = keyGen.generateKeyPair(); RSAPublicKey pubKey = (RSAPublicKey) pair.getPublic(); RSAPrivateCrtKey prvKey = (RSAPrivateCrtKey) pair.getPrivate(); _d = prvKey.getPrivateExponent().toByteArray(); _e = pubKey.getPublicExponent().toByteArray(); _n = prvKey.getModulus().toByteArray(); _c = prvKey.getCrtCoefficient().toByteArray(); _ep = prvKey.getPrimeExponentP().toByteArray(); _eq = prvKey.getPrimeExponentQ().toByteArray(); _p = prvKey.getPrimeP().toByteArray(); _q = prvKey.getPrimeQ().toByteArray(); }
public RsaSsaPkcs1SignJce(final RSAPrivateCrtKey priv, HashType hash) throws GeneralSecurityException { this.privateKey = priv; this.signatureAlgorithm = SubtleUtil.toRsaSsaPkcs1Algo(hash); KeyFactory kf = EngineFactory.KEY_FACTORY.getInstance("RSA"); this.publicKey = (RSAPublicKey) kf.generatePublic(new RSAPublicKeySpec(priv.getModulus(), priv.getPublicExponent())); }
/** * construct a private key from another RSAPrivateCrtKey. * * @param key the object implementing the RSAPrivateCrtKey interface. */ JCERSAPrivateCrtKey( RSAPrivateCrtKey key) { this.modulus = key.getModulus(); this.publicExponent = key.getPublicExponent(); this.privateExponent = key.getPrivateExponent(); this.primeP = key.getPrimeP(); this.primeQ = key.getPrimeQ(); this.primeExponentP = key.getPrimeExponentP(); this.primeExponentQ = key.getPrimeExponentQ(); this.crtCoefficient = key.getCrtCoefficient(); }
/** * construct a private key from another RSAPrivateCrtKey. * * @param key the object implementing the RSAPrivateCrtKey interface. */ BCRSAPrivateCrtKey( RSAPrivateCrtKey key) { this.modulus = key.getModulus(); this.publicExponent = key.getPublicExponent(); this.privateExponent = key.getPrivateExponent(); this.primeP = key.getPrimeP(); this.primeQ = key.getPrimeQ(); this.primeExponentP = key.getPrimeExponentP(); this.primeExponentQ = key.getPrimeExponentQ(); this.crtCoefficient = key.getCrtCoefficient(); }
static public RSAKeyParameters generatePrivateKeyParameter(RSAPrivateKey key) { if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey k = (RSAPrivateCrtKey) key; return new RSAPrivateCrtKeyParameters(k.getModulus(), k.getPublicExponent(), k.getPrivateExponent(), k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); } else { RSAPrivateKey k = key; return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); } }
static public RSAKeyParameters generatePrivateKeyParameter(RSAPrivateKey key) { if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey k = (RSAPrivateCrtKey) key; return new RSAPrivateCrtKeyParameters(k.getModulus(), k.getPublicExponent(), k.getPrivateExponent(), k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); } else { RSAPrivateKey k = key; return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); } }
public static RSAKeyParameters generateRSAPrivateKeyParameter(final RSAPrivateKey key) { ParamUtil.requireNonNull("key", key); if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey rsaKey = (RSAPrivateCrtKey) key; return new RSAPrivateCrtKeyParameters(rsaKey.getModulus(), rsaKey.getPublicExponent(), rsaKey.getPrivateExponent(), rsaKey.getPrimeP(), rsaKey.getPrimeQ(), rsaKey.getPrimeExponentP(), rsaKey.getPrimeExponentQ(), rsaKey.getCrtCoefficient()); } else { return new RSAKeyParameters(true, key.getModulus(), key.getPrivateExponent()); } }
public static RSAKeyParameters generateRSAPrivateKeyParameter(RSAPrivateKey key) { Args.notNull(key, "key"); if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey rsaKey = (RSAPrivateCrtKey) key; return new RSAPrivateCrtKeyParameters(rsaKey.getModulus(), rsaKey.getPublicExponent(), rsaKey.getPrivateExponent(), rsaKey.getPrimeP(), rsaKey.getPrimeQ(), rsaKey.getPrimeExponentP(), rsaKey.getPrimeExponentQ(), rsaKey.getCrtCoefficient()); } else { return new RSAKeyParameters(true, key.getModulus(), key.getPrivateExponent()); } }
static RSAKeyParameters generatePrivateKeyParameter( RSAPrivateKey key) { if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey k = (RSAPrivateCrtKey)key; return new RSAPrivateCrtKeyParameters(k.getModulus(), k.getPublicExponent(), k.getPrivateExponent(), k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); } else { RSAPrivateKey k = key; return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); } } }
static RSAKeyParameters generatePrivateKeyParameter( RSAPrivateKey key) { if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey k = (RSAPrivateCrtKey)key; return new RSAPrivateCrtKeyParameters(k.getModulus(), k.getPublicExponent(), k.getPrivateExponent(), k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); } else { RSAPrivateKey k = key; return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); } }
static RSAKeyParameters generatePrivateKeyParameter( RSAPrivateKey key) { if (key instanceof RSAPrivateCrtKey) { RSAPrivateCrtKey k = (RSAPrivateCrtKey)key; return new RSAPrivateCrtKeyParameters(k.getModulus(), k.getPublicExponent(), k.getPrivateExponent(), k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); } else { RSAPrivateKey k = key; return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); } }