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 ICryptoHelper
javax.mail.MessagingException
public boolean isSigned(javax.mail.internet.MimeBodyPart part) throws javax.mail.MessagingException
isSigned
in interface ICryptoHelper
javax.mail.MessagingException
public boolean isCompressed(javax.mail.internet.MimeBodyPart part) throws javax.mail.MessagingException
isCompressed
in interface ICryptoHelper
javax.mail.MessagingException
public String calculateMIC(javax.mail.internet.MimeBodyPart part, String digest, boolean includeHeaders) throws GeneralSecurityException, javax.mail.MessagingException, IOException
calculateMIC
in interface ICryptoHelper
GeneralSecurityException
javax.mail.MessagingException
IOException
public String calculateMIC(javax.mail.internet.MimeBodyPart part, String digest, boolean includeHeaders, boolean noCanonicalize) throws GeneralSecurityException, javax.mail.MessagingException, IOException
calculateMIC
in interface ICryptoHelper
GeneralSecurityException
javax.mail.MessagingException
IOException
public 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 ICryptoHelper
GeneralSecurityException
javax.mail.MessagingException
org.bouncycastle.cms.CMSException
IOException
org.bouncycastle.mail.smime.SMIMEException
public 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 ICryptoHelper
GeneralSecurityException
org.bouncycastle.mail.smime.SMIMEException
javax.mail.MessagingException
public void initialize()
initialize
in interface ICryptoHelper
public 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 ICryptoHelper
GeneralSecurityException
org.bouncycastle.mail.smime.SMIMEException
javax.mail.MessagingException
public 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 ICryptoHelper
GeneralSecurityException
IOException
javax.mail.MessagingException
org.bouncycastle.cms.CMSException
org.bouncycastle.operator.OperatorCreationException
public 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 ICryptoHelper
org.bouncycastle.mail.smime.SMIMEException
OpenAS2Exception
public void decompress(AS2Message msg) throws DispositionException
decompress
in interface ICryptoHelper
DispositionException
protected X509Certificate castCertificate(Certificate cert) throws GeneralSecurityException
GeneralSecurityException
protected PrivateKey castKey(Key key) throws GeneralSecurityException
GeneralSecurityException
protected String convertAlgorithm(String algorithm, boolean toBC) throws NoSuchAlgorithmException
NoSuchAlgorithmException
protected 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 ICryptoHelper
KeyStoreException
NoSuchProviderException
public KeyStore loadKeyStore(InputStream in, char[] password) throws Exception
loadKeyStore
in interface ICryptoHelper
Exception
public KeyStore loadKeyStore(String filename, char[] password) throws Exception
loadKeyStore
in interface ICryptoHelper
Exception
public 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 © 2018. All rights reserved.