Search in sources :

Example 1 with JcaPGPContentVerifierBuilderProvider

use of org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider in project camel by apache.

the class PGPKeyAccessDataFormat method getSignature.

protected PGPOnePassSignature getSignature(Exchange exchange, PGPOnePassSignatureList signatureList) throws Exception {
    if (SIGNATURE_VERIFICATION_OPTION_IGNORE.equals(getSignatureVerificationOption())) {
        return null;
    }
    if (SIGNATURE_VERIFICATION_OPTION_NO_SIGNATURE_ALLOWED.equals(getSignatureVerificationOption())) {
        throw new PGPException("PGP message contains a signature although a signature is not expected. Either change the configuration of the PGP decryptor or send a PGP message with no signature.");
    }
    List<String> allowedUserIds = determineSignaturenUserIds(exchange);
    for (int i = 0; i < signatureList.size(); i++) {
        PGPOnePassSignature signature = signatureList.get(i);
        // Determine public key from signature keyId
        PGPPublicKey sigPublicKey = publicKeyAccessor.getPublicKey(exchange, signature.getKeyID(), allowedUserIds);
        if (sigPublicKey == null) {
            continue;
        }
        // choose that signature for which a public key exists!
        signature.init(new JcaPGPContentVerifierBuilderProvider().setProvider(getProvider()), sigPublicKey);
        return signature;
    }
    if (signatureList.isEmpty()) {
        return null;
    } else {
        throw new IllegalArgumentException("Cannot verify the PGP signature: No public key found for the key ID(s) contained in the PGP signature(s). " + "Either the received PGP message contains a signature from an unexpected sender or the Public Keyring does not contain the public key of the sender.");
    }
}
Also used : PGPException(org.bouncycastle.openpgp.PGPException) PGPPublicKey(org.bouncycastle.openpgp.PGPPublicKey) PGPOnePassSignature(org.bouncycastle.openpgp.PGPOnePassSignature) JcaPGPContentVerifierBuilderProvider(org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider)

Aggregations

PGPException (org.bouncycastle.openpgp.PGPException)1 PGPOnePassSignature (org.bouncycastle.openpgp.PGPOnePassSignature)1 PGPPublicKey (org.bouncycastle.openpgp.PGPPublicKey)1 JcaPGPContentVerifierBuilderProvider (org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider)1