1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.cms; 2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x509.AlgorithmIdentifier; 4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.cert.X509CertificateHolder; 5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.ContentVerifier; 6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.ContentVerifierProvider; 7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.DigestCalculator; 8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.DigestCalculatorProvider; 9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.OperatorCreationException; 10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.operator.SignatureAlgorithmIdentifierFinder; 11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class SignerInformationVerifier 13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{ 14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private ContentVerifierProvider verifierProvider; 15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private DigestCalculatorProvider digestProvider; 16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private SignatureAlgorithmIdentifierFinder sigAlgorithmFinder; 17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private CMSSignatureAlgorithmNameGenerator sigNameGenerator; 18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public SignerInformationVerifier(CMSSignatureAlgorithmNameGenerator sigNameGenerator, SignatureAlgorithmIdentifierFinder sigAlgorithmFinder, ContentVerifierProvider verifierProvider, DigestCalculatorProvider digestProvider) 20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.sigNameGenerator = sigNameGenerator; 22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.sigAlgorithmFinder = sigAlgorithmFinder; 23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.verifierProvider = verifierProvider; 24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.digestProvider = digestProvider; 25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public boolean hasAssociatedCertificate() 28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return verifierProvider.hasAssociatedCertificate(); 30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public X509CertificateHolder getAssociatedCertificate() 33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return verifierProvider.getAssociatedCertificate(); 35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public ContentVerifier getContentVerifier(AlgorithmIdentifier signingAlgorithm, AlgorithmIdentifier digestAlgorithm) 38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom String signatureName = sigNameGenerator.getSignatureName(digestAlgorithm, signingAlgorithm); 41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return verifierProvider.get(sigAlgorithmFinder.find(signatureName)); 43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public DigestCalculator getDigestCalculator(AlgorithmIdentifier algorithmIdentifier) 46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws OperatorCreationException 47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return digestProvider.get(algorithmIdentifier); 49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom} 51