| package org.bouncycastle.cms.jcajce; |
| |
| import java.security.Provider; |
| import java.security.PublicKey; |
| import java.security.cert.CertificateException; |
| import java.security.cert.X509Certificate; |
| |
| import org.bouncycastle.cert.X509CertificateHolder; |
| import org.bouncycastle.cms.DefaultCMSSignatureAlgorithmNameGenerator; |
| import org.bouncycastle.cms.SignerInformationVerifier; |
| import org.bouncycastle.operator.ContentVerifierProvider; |
| import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; |
| import org.bouncycastle.operator.DigestCalculatorProvider; |
| import org.bouncycastle.operator.OperatorCreationException; |
| import org.bouncycastle.operator.jcajce.JcaContentVerifierProviderBuilder; |
| import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; |
| |
| public class JcaSimpleSignerInfoVerifierBuilder |
| { |
| private Helper helper = new Helper(); |
| |
| public JcaSimpleSignerInfoVerifierBuilder setProvider(Provider provider) |
| { |
| this.helper = new ProviderHelper(provider); |
| |
| return this; |
| } |
| |
| public JcaSimpleSignerInfoVerifierBuilder setProvider(String providerName) |
| { |
| this.helper = new NamedHelper(providerName); |
| |
| return this; |
| } |
| |
| public SignerInformationVerifier build(X509CertificateHolder certHolder) |
| throws OperatorCreationException, CertificateException |
| { |
| return new SignerInformationVerifier(new DefaultCMSSignatureAlgorithmNameGenerator(), new DefaultSignatureAlgorithmIdentifierFinder(), helper.createContentVerifierProvider(certHolder), helper.createDigestCalculatorProvider()); |
| } |
| |
| public SignerInformationVerifier build(X509Certificate certificate) |
| throws OperatorCreationException |
| { |
| return new SignerInformationVerifier(new DefaultCMSSignatureAlgorithmNameGenerator(), new DefaultSignatureAlgorithmIdentifierFinder(), helper.createContentVerifierProvider(certificate), helper.createDigestCalculatorProvider()); |
| } |
| |
| public SignerInformationVerifier build(PublicKey pubKey) |
| throws OperatorCreationException |
| { |
| return new SignerInformationVerifier(new DefaultCMSSignatureAlgorithmNameGenerator(), new DefaultSignatureAlgorithmIdentifierFinder(), helper.createContentVerifierProvider(pubKey), helper.createDigestCalculatorProvider()); |
| } |
| |
| private class Helper |
| { |
| ContentVerifierProvider createContentVerifierProvider(PublicKey publicKey) |
| throws OperatorCreationException |
| { |
| return new JcaContentVerifierProviderBuilder().build(publicKey); |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(X509Certificate certificate) |
| throws OperatorCreationException |
| { |
| return new JcaContentVerifierProviderBuilder().build(certificate); |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(X509CertificateHolder certHolder) |
| throws OperatorCreationException, CertificateException |
| { |
| return new JcaContentVerifierProviderBuilder().build(certHolder); |
| } |
| |
| DigestCalculatorProvider createDigestCalculatorProvider() |
| throws OperatorCreationException |
| { |
| return new JcaDigestCalculatorProviderBuilder().build(); |
| } |
| } |
| |
| private class NamedHelper |
| extends Helper |
| { |
| private final String providerName; |
| |
| public NamedHelper(String providerName) |
| { |
| this.providerName = providerName; |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(PublicKey publicKey) |
| throws OperatorCreationException |
| { |
| return new JcaContentVerifierProviderBuilder().setProvider(providerName).build(publicKey); |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(X509Certificate certificate) |
| throws OperatorCreationException |
| { |
| return new JcaContentVerifierProviderBuilder().setProvider(providerName).build(certificate); |
| } |
| |
| DigestCalculatorProvider createDigestCalculatorProvider() |
| throws OperatorCreationException |
| { |
| return new JcaDigestCalculatorProviderBuilder().setProvider(providerName).build(); |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(X509CertificateHolder certHolder) |
| throws OperatorCreationException, CertificateException |
| { |
| return new JcaContentVerifierProviderBuilder().setProvider(providerName).build(certHolder); |
| } |
| } |
| |
| private class ProviderHelper |
| extends Helper |
| { |
| private final Provider provider; |
| |
| public ProviderHelper(Provider provider) |
| { |
| this.provider = provider; |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(PublicKey publicKey) |
| throws OperatorCreationException |
| { |
| return new JcaContentVerifierProviderBuilder().setProvider(provider).build(publicKey); |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(X509Certificate certificate) |
| throws OperatorCreationException |
| { |
| return new JcaContentVerifierProviderBuilder().setProvider(provider).build(certificate); |
| } |
| |
| DigestCalculatorProvider createDigestCalculatorProvider() |
| throws OperatorCreationException |
| { |
| return new JcaDigestCalculatorProviderBuilder().setProvider(provider).build(); |
| } |
| |
| ContentVerifierProvider createContentVerifierProvider(X509CertificateHolder certHolder) |
| throws OperatorCreationException, CertificateException |
| { |
| return new JcaContentVerifierProviderBuilder().setProvider(provider).build(certHolder); |
| } |
| } |
| } |