public class BCCryptoHelper extends Object implements ICryptoHelper
AES128_CBC, AES192_CBC, AES256_CBC, AES256_WRAP, COMPRESSION_NONE, COMPRESSION_UNKNOWN, COMPRESSION_ZLIB, CRYPT_3DES, CRYPT_CAST5, CRYPT_IDEA, CRYPT_RC2, CRYPT_RC2_CBC, DIGEST_MD2, DIGEST_MD5, DIGEST_SHA1, DIGEST_SHA224, DIGEST_SHA256, DIGEST_SHA384, DIGEST_SHA512, JCE_LIMITATION_ERROR, JCE_LIMITED_MAX_LENGTH| Constructor and Description |
|---|
BCCryptoHelper() |
| Modifier and Type | Method and Description |
|---|---|
String |
calculateMIC(javax.mail.internet.MimeBodyPart part,
String digest,
boolean includeHeaders) |
String |
calculateMIC(javax.mail.internet.MimeBodyPart part,
String digest,
boolean includeHeaders,
boolean noCanonicalize) |
protected X509Certificate |
castCertificate(Certificate cert) |
protected PrivateKey |
castKey(Key key) |
javax.mail.internet.MimeBodyPart |
compress(Message msg,
javax.mail.internet.MimeBodyPart mbp,
String compressionType,
String contentTxfrEncoding) |
protected String |
convertAlgorithm(String algorithm,
boolean toBC) |
void |
decompress(AS2Message msg) |
javax.mail.internet.MimeBodyPart |
decrypt(javax.mail.internet.MimeBodyPart part,
Certificate cert,
Key key) |
void |
deinitialize() |
javax.mail.internet.MimeBodyPart |
encrypt(javax.mail.internet.MimeBodyPart part,
Certificate cert,
String algorithm,
String contentTxfrEncoding) |
protected String |
getEncoding(String contentTxfrEncoding) |
String |
getHeaderValue(javax.mail.internet.MimeBodyPart part,
String headerName) |
KeyStore |
getKeyStore() |
protected org.bouncycastle.operator.OutputEncryptor |
getOutputEncryptor(String algorithm)
Looks up the correct ASN1 OID of the passed in algorithm string and returns the encryptor.
|
void |
initialize() |
boolean |
isCompressed(javax.mail.internet.MimeBodyPart part) |
boolean |
isEncrypted(javax.mail.internet.MimeBodyPart part) |
boolean |
isSigned(javax.mail.internet.MimeBodyPart part) |
KeyStore |
loadKeyStore(InputStream in,
char[] password) |
KeyStore |
loadKeyStore(String filename,
char[] password) |
void |
logSignerInfo(String msgPrefix,
org.bouncycastle.cms.SignerInformation signer,
javax.mail.internet.MimeBodyPart part,
X509Certificate cert) |
javax.mail.internet.MimeBodyPart |
sign(javax.mail.internet.MimeBodyPart part,
Certificate cert,
Key key,
String digest,
String contentTxfrEncoding,
boolean adjustDigestToOldName,
boolean isRemoveCmsAlgorithmProtectionAttr) |
protected InputStream |
trimCRLFPrefix(byte[] data) |
javax.mail.internet.MimeBodyPart |
verifySignature(javax.mail.internet.MimeBodyPart part,
Certificate cert) |
public boolean isEncrypted(javax.mail.internet.MimeBodyPart part)
throws javax.mail.MessagingException
isEncrypted in interface ICryptoHelperjavax.mail.MessagingExceptionpublic boolean isSigned(javax.mail.internet.MimeBodyPart part)
throws javax.mail.MessagingException
isSigned in interface ICryptoHelperjavax.mail.MessagingExceptionpublic boolean isCompressed(javax.mail.internet.MimeBodyPart part)
throws javax.mail.MessagingException
isCompressed in interface ICryptoHelperjavax.mail.MessagingExceptionpublic String calculateMIC(javax.mail.internet.MimeBodyPart part, String digest, boolean includeHeaders) throws GeneralSecurityException, javax.mail.MessagingException, IOException
calculateMIC in interface ICryptoHelperGeneralSecurityExceptionjavax.mail.MessagingExceptionIOExceptionpublic String calculateMIC(javax.mail.internet.MimeBodyPart part, String digest, boolean includeHeaders, boolean noCanonicalize) throws GeneralSecurityException, javax.mail.MessagingException, IOException
calculateMIC in interface ICryptoHelperGeneralSecurityExceptionjavax.mail.MessagingExceptionIOExceptionpublic javax.mail.internet.MimeBodyPart decrypt(javax.mail.internet.MimeBodyPart part,
Certificate cert,
Key key)
throws GeneralSecurityException,
javax.mail.MessagingException,
org.bouncycastle.cms.CMSException,
IOException,
org.bouncycastle.mail.smime.SMIMEException
decrypt in interface ICryptoHelperGeneralSecurityExceptionjavax.mail.MessagingExceptionorg.bouncycastle.cms.CMSExceptionIOExceptionorg.bouncycastle.mail.smime.SMIMEExceptionpublic void deinitialize()
public javax.mail.internet.MimeBodyPart encrypt(javax.mail.internet.MimeBodyPart part,
Certificate cert,
String algorithm,
String contentTxfrEncoding)
throws GeneralSecurityException,
org.bouncycastle.mail.smime.SMIMEException,
javax.mail.MessagingException
encrypt in interface ICryptoHelperGeneralSecurityExceptionorg.bouncycastle.mail.smime.SMIMEExceptionjavax.mail.MessagingExceptionpublic void initialize()
initialize in interface ICryptoHelperpublic javax.mail.internet.MimeBodyPart sign(javax.mail.internet.MimeBodyPart part,
Certificate cert,
Key key,
String digest,
String contentTxfrEncoding,
boolean adjustDigestToOldName,
boolean isRemoveCmsAlgorithmProtectionAttr)
throws GeneralSecurityException,
org.bouncycastle.mail.smime.SMIMEException,
javax.mail.MessagingException
sign in interface ICryptoHelperGeneralSecurityExceptionorg.bouncycastle.mail.smime.SMIMEExceptionjavax.mail.MessagingExceptionpublic javax.mail.internet.MimeBodyPart verifySignature(javax.mail.internet.MimeBodyPart part,
Certificate cert)
throws GeneralSecurityException,
IOException,
javax.mail.MessagingException,
org.bouncycastle.cms.CMSException,
org.bouncycastle.operator.OperatorCreationException
verifySignature in interface ICryptoHelperGeneralSecurityExceptionIOExceptionjavax.mail.MessagingExceptionorg.bouncycastle.cms.CMSExceptionorg.bouncycastle.operator.OperatorCreationExceptionpublic javax.mail.internet.MimeBodyPart compress(Message msg, javax.mail.internet.MimeBodyPart mbp, String compressionType, String contentTxfrEncoding) throws org.bouncycastle.mail.smime.SMIMEException, OpenAS2Exception
compress in interface ICryptoHelperorg.bouncycastle.mail.smime.SMIMEExceptionOpenAS2Exceptionpublic void decompress(AS2Message msg) throws DispositionException
decompress in interface ICryptoHelperDispositionExceptionprotected X509Certificate castCertificate(Certificate cert) throws GeneralSecurityException
GeneralSecurityExceptionprotected PrivateKey castKey(Key key) throws GeneralSecurityException
GeneralSecurityExceptionprotected String convertAlgorithm(String algorithm, boolean toBC) throws NoSuchAlgorithmException
NoSuchAlgorithmExceptionprotected org.bouncycastle.operator.OutputEncryptor getOutputEncryptor(String algorithm) throws NoSuchAlgorithmException
algorithm - The name of the algorithm to use for encryptionNoSuchAlgorithmException - - Houston we have a problem
TODO: Possibly just use new ASN1ObjectIdentifier(algorithm) instead of explicit lookup to support random configured algorithms
but will require determining if this has any side effects from a security point of view.protected InputStream trimCRLFPrefix(byte[] data)
public KeyStore getKeyStore() throws KeyStoreException, NoSuchProviderException
getKeyStore in interface ICryptoHelperKeyStoreExceptionNoSuchProviderExceptionpublic KeyStore loadKeyStore(InputStream in, char[] password) throws Exception
loadKeyStore in interface ICryptoHelperExceptionpublic KeyStore loadKeyStore(String filename, char[] password) throws Exception
loadKeyStore in interface ICryptoHelperExceptionpublic String getHeaderValue(javax.mail.internet.MimeBodyPart part, String headerName)
public void logSignerInfo(String msgPrefix, org.bouncycastle.cms.SignerInformation signer, javax.mail.internet.MimeBodyPart part, X509Certificate cert)
Copyright © 2019. All rights reserved.