JcaSimpleSignerInfoVerifierBuilder.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.cms.jcajce; 2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.security.Provider; 4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.security.PublicKey; 5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.security.cert.CertificateException; 6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.security.cert.X509Certificate; 7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.cert.X509CertificateHolder; 9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.cms.DefaultCMSSignatureAlgorithmNameGenerator; 10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.cms.SignerInformationVerifier; 11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.ContentVerifierProvider; 12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; 13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.DigestCalculatorProvider; 14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.OperatorCreationException; 15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.jcajce.JcaContentVerifierProviderBuilder; 16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; 17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class JcaSimpleSignerInfoVerifierBuilder 19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{ 20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private Helper helper = new Helper(); 21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public JcaSimpleSignerInfoVerifierBuilder setProvider(Provider provider) 23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.helper = new ProviderHelper(provider); 25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return this; 27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public JcaSimpleSignerInfoVerifierBuilder setProvider(String providerName) 30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.helper = new NamedHelper(providerName); 32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return this; 34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public SignerInformationVerifier build(X509CertificateHolder certHolder) 37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException, CertificateException 38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new SignerInformationVerifier(new DefaultCMSSignatureAlgorithmNameGenerator(), new DefaultSignatureAlgorithmIdentifierFinder(), helper.createContentVerifierProvider(certHolder), helper.createDigestCalculatorProvider()); 40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public SignerInformationVerifier build(X509Certificate certificate) 43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new SignerInformationVerifier(new DefaultCMSSignatureAlgorithmNameGenerator(), new DefaultSignatureAlgorithmIdentifierFinder(), helper.createContentVerifierProvider(certificate), helper.createDigestCalculatorProvider()); 46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public SignerInformationVerifier build(PublicKey pubKey) 49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new SignerInformationVerifier(new DefaultCMSSignatureAlgorithmNameGenerator(), new DefaultSignatureAlgorithmIdentifierFinder(), helper.createContentVerifierProvider(pubKey), helper.createDigestCalculatorProvider()); 52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private class Helper 55e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 56e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(PublicKey publicKey) 57e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 58e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 59e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().build(publicKey); 60e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 61e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 62e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(X509Certificate certificate) 63e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 64e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 65e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().build(certificate); 66e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 67e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 68e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(X509CertificateHolder certHolder) 69e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException, CertificateException 70e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 71e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().build(certHolder); 72e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 73e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 74e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom DigestCalculatorProvider createDigestCalculatorProvider() 75e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 76e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 77e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaDigestCalculatorProviderBuilder().build(); 78e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 79e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 80e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 81e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private class NamedHelper 82e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom extends Helper 83e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 84e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private final String providerName; 85e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 86e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public NamedHelper(String providerName) 87e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 88e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.providerName = providerName; 89e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 90e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 91e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(PublicKey publicKey) 92e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 93e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 94e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().setProvider(providerName).build(publicKey); 95e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 96e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 97e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(X509Certificate certificate) 98e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 99e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 100e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().setProvider(providerName).build(certificate); 101e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 102e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 103e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom DigestCalculatorProvider createDigestCalculatorProvider() 104e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 105e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 106e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaDigestCalculatorProviderBuilder().setProvider(providerName).build(); 107e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 108e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 109e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(X509CertificateHolder certHolder) 110e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException, CertificateException 111e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 112e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().setProvider(providerName).build(certHolder); 113e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 114e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 115e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 116e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private class ProviderHelper 117e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom extends Helper 118e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 119e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private final Provider provider; 120e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 121e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public ProviderHelper(Provider provider) 122e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 123e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.provider = provider; 124e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 125e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 126e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(PublicKey publicKey) 127e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 128e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 129e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().setProvider(provider).build(publicKey); 130e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 131e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 132e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(X509Certificate certificate) 133e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 134e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 135e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().setProvider(provider).build(certificate); 136e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 137e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 138e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom DigestCalculatorProvider createDigestCalculatorProvider() 139e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 140e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 141e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaDigestCalculatorProviderBuilder().setProvider(provider).build(); 142e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 143e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 144e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ContentVerifierProvider createContentVerifierProvider(X509CertificateHolder certHolder) 145e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException, CertificateException 146e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 147e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new JcaContentVerifierProviderBuilder().setProvider(provider).build(certHolder); 148e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 149e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 150e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom} 151