List of usage examples for org.bouncycastle.openpgp PGPKeyPair PGPKeyPair
public PGPKeyPair(PGPPublicKey pub, PGPPrivateKey priv)
From source file:com.goodvikings.cryptim.api.KeyRing.java
License:BEER-WARE LICENSE
private void ASN1DecodeKeys(byte[] plain) throws IOException, PGPException, NoSuchProviderException, ParseException, InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException { JcaPGPKeyConverter converter = new JcaPGPKeyConverter(); ASN1Sequence seq = (ASN1Sequence) new ASN1InputStream(new ByteArrayInputStream(plain)).readObject(); PGPPublicKey pub = converter.getPGPPublicKey(PGPPublicKey.RSA_GENERAL, new RSAPublicKeyImpl( ((ASN1OctetString) ((ASN1Sequence) seq.getObjectAt(0)).getObjectAt(1)).getOctets()), ((ASN1UTCTime) ((ASN1Sequence) seq.getObjectAt(0)).getObjectAt(0)).getAdjustedDate()); kp = new PGPKeyPair(pub, converter.getPGPPrivateKey(pub, KeyFactory.getInstance("RSA") .generatePrivate(new PKCS8EncodedKeySpec(((ASN1OctetString) seq.getObjectAt(1)).getOctets())))); ASN1Sequence keySeq = (ASN1Sequence) seq.getObjectAt(2); for (int i = 0; i < keySeq.size(); i++) { keys.put(((DERUTF8String) ((ASN1Sequence) keySeq.getObjectAt(i)).getObjectAt(0)).getString(), converter.getPGPPublicKey(PGPPublicKey.RSA_GENERAL, new RSAPublicKeyImpl( ((ASN1OctetString) ((ASN1Sequence) keySeq.getObjectAt(i)).getObjectAt(3)).getOctets()), ((ASN1UTCTime) ((ASN1Sequence) keySeq.getObjectAt(i)).getObjectAt(2)) .getAdjustedDate())); nicks.put(((DERUTF8String) ((ASN1Sequence) keySeq.getObjectAt(i)).getObjectAt(0)).getString(), ((DERUTF8String) ((ASN1Sequence) keySeq.getObjectAt(i)).getObjectAt(1)).getString()); }/*from w w w.jav a2s . c om*/ }
From source file:google.registry.keyring.api.KeySerializer.java
License:Open Source License
/** Deserialize a PGPKeyPair */ public static PGPKeyPair deserializeKeyPair(byte[] serialized) throws IOException, PGPException { PGPSecretKey secretKey = new BcPGPSecretKeyRing( PGPUtil.getDecoderStream(new ByteArrayInputStream(serialized))).getSecretKey(); return new PGPKeyPair(secretKey.getPublicKey(), secretKey.extractPrivateKey(createSecretKeyDecryptor())); }
From source file:google.registry.keyring.api.PgpHelper.java
License:Open Source License
/** * Same as {@link #lookupPublicKey} but also retrieves the associated private key. * * @throws VerifyException if either keys couldn't be found. * @see #lookupPublicKey/*from w w w. j a v a 2 s.co m*/ */ @SuppressWarnings("deprecation") public static PGPKeyPair lookupKeyPair(PGPPublicKeyRingCollection publics, PGPSecretKeyRingCollection privates, String query, KeyRequirement want) { PGPPublicKey publicKey = lookupPublicKey(publics, query, want); PGPPrivateKey privateKey; try { PGPSecretKey secret = verifyNotNull(privates.getSecretKey(publicKey.getKeyID()), "Keyring missing private key associated with public key id: %x (query '%s')", publicKey.getKeyID(), query); // We do not support putting a password on the private key so we're just going to // put char[0] here. privateKey = secret.extractPrivateKey( new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(new char[0])); } catch (PGPException e) { throw new VerifyException(e.getMessage()); } return new PGPKeyPair(publicKey, privateKey); }
From source file:google.registry.keyring.kms.KmsKeyring.java
License:Open Source License
private PGPKeyPair getKeyPair(String publicKeyName, String privateKeyName) { try {/*from ww w . j a v a 2 s.c om*/ PGPPublicKey publicKey = new BcPGPPublicKeyRing(getPgpInputStream(publicKeyName)).getPublicKey(); return new PGPKeyPair(publicKey, getPrivateKey(privateKeyName)); } catch (IOException e) { throw new KeyringException(String.format("Could not parse public key %s and private key %s", publicKeyName, privateKeyName), e); } }
From source file:google.registry.tools.GetKeyringSecretCommand.java
License:Open Source License
@Override public void run() throws Exception { OutputStream out = outputPath != null ? new FileOutputStream(outputPath.toFile()) : System.out; Security.addProvider(new BouncyCastleProvider()); switch (keyringKeyName) { case BRAINTREE_PRIVATE_KEY: out.write(KeySerializer.serializeString(keyring.getBraintreePrivateKey())); break;//from w ww .ja va2 s. c om case BRDA_RECEIVER_PUBLIC_KEY: out.write(KeySerializer.serializePublicKey(keyring.getBrdaReceiverKey())); break; case BRDA_SIGNING_KEY_PAIR: out.write(KeySerializer.serializeKeyPair(keyring.getBrdaSigningKey())); break; case ICANN_REPORTING_PASSWORD: out.write(KeySerializer.serializeString(keyring.getIcannReportingPassword())); break; case JSON_CREDENTIAL: out.write(KeySerializer.serializeString(keyring.getJsonCredential())); break; case MARKSDB_DNL_LOGIN: out.write(KeySerializer.serializeString(keyring.getMarksdbDnlLogin())); break; case MARKSDB_LORDN_PASSWORD: out.write(KeySerializer.serializeString(keyring.getMarksdbLordnPassword())); break; case MARKSDB_SMDRL_LOGIN: out.write(KeySerializer.serializeString(keyring.getMarksdbSmdrlLogin())); break; case RDE_RECEIVER_PUBLIC_KEY: out.write(KeySerializer.serializePublicKey(keyring.getRdeReceiverKey())); break; case RDE_SIGNING_KEY_PAIR: out.write(KeySerializer.serializeKeyPair(keyring.getRdeSigningKey())); break; case RDE_SSH_CLIENT_PRIVATE_KEY: out.write(KeySerializer.serializeString(keyring.getRdeSshClientPrivateKey())); break; case RDE_SSH_CLIENT_PUBLIC_KEY: out.write(KeySerializer.serializeString(keyring.getRdeSshClientPublicKey())); break; case RDE_STAGING_KEY_PAIR: // Note that we're saving a key pair rather than just the private key because we can't // serialize a private key on its own. See {@link KeySerializer}. out.write(KeySerializer.serializeKeyPair( new PGPKeyPair(keyring.getRdeStagingEncryptionKey(), keyring.getRdeStagingDecryptionKey()))); break; case RDE_STAGING_PUBLIC_KEY: out.write(KeySerializer.serializePublicKey(keyring.getRdeStagingEncryptionKey())); break; } }
From source file:org.kontalk.crypto.PersonalKey.java
License:Open Source License
/** Creates a {@link PersonalKey} from private and public key byte buffers. */ @SuppressWarnings("unchecked") public static PersonalKey load(byte[] privateKeyData, byte[] publicKeyData, char[] passphrase, byte[] bridgeCertData) throws KonException, IOException, PGPException, CertificateException, NoSuchProviderException { KeyFingerPrintCalculator fpr = new BcKeyFingerprintCalculator(); PGPSecretKeyRing secRing = new PGPSecretKeyRing(privateKeyData, fpr); PGPPublicKeyRing pubRing = new PGPPublicKeyRing(publicKeyData, fpr); PGPDigestCalculatorProvider sha1Calc = new JcaPGPDigestCalculatorProviderBuilder().build(); PBESecretKeyDecryptor decryptor = new JcePBESecretKeyDecryptorBuilder(sha1Calc) .setProvider(PGPUtils.PROVIDER).build(passphrase); PGPKeyPair signKp, encryptKp;//from w w w . j a v a 2s . c o m PGPPublicKey signPub = null; PGPPrivateKey signPriv = null; PGPPublicKey encPub = null; PGPPrivateKey encPriv = null; // public keys Iterator<PGPPublicKey> pkeys = pubRing.getPublicKeys(); while (pkeys.hasNext()) { PGPPublicKey key = pkeys.next(); if (key.isMasterKey()) { // master (signing) key signPub = key; } else { // sub (encryption) key encPub = key; } } // secret keys Iterator<PGPSecretKey> skeys = secRing.getSecretKeys(); while (skeys.hasNext()) { PGPSecretKey key = skeys.next(); if (key.isMasterKey()) { // master (signing) key try { signPriv = key.extractPrivateKey(decryptor); } catch (PGPException ex) { throw new KonException(KonException.Error.LOAD_KEY_DECRYPT, ex); } } else { // sub (encryption) key encPriv = key.extractPrivateKey(decryptor); } } // X.509 bridge certificate X509Certificate bridgeCert = X509Bridge.load(bridgeCertData); if (encPriv == null || encPub == null || signPriv == null || signPub == null || bridgeCert == null) throw new PGPException("invalid key data"); signKp = new PGPKeyPair(signPub, signPriv); encryptKp = new PGPKeyPair(encPub, encPriv); return new PersonalKey(signKp, encryptKp, bridgeCert); }
From source file:ubicrypt.core.crypto.PGPEC.java
License:Open Source License
private static PGPKeyPair extractKeyPair(final PGPSecretKeyRing skr, final Predicate<PGPSecretKey> predicate, final char[] passPhrase) throws PGPException { final PGPSecretKey sec = Utils.toStream(skr.getSecretKeys()).filter(predicate).findFirst() .orElseThrow(() -> new PGPException("key not found")); return new PGPKeyPair(sec.getPublicKey(), sec.extractPrivateKey( new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passPhrase))); }