Example usage for org.bouncycastle.openpgp PGPKeyPair PGPKeyPair

List of usage examples for org.bouncycastle.openpgp PGPKeyPair PGPKeyPair

Introduction

In this page you can find the example usage for org.bouncycastle.openpgp PGPKeyPair PGPKeyPair.

Prototype

public PGPKeyPair(PGPPublicKey pub, PGPPrivateKey priv) 

Source Link

Document

Create a key pair from a PGPPrivateKey and a PGPPublicKey.

Usage

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)));
}