Package org.openas2.lib.helper
Class BCCryptoHelper
- java.lang.Object
-
- org.openas2.lib.helper.BCCryptoHelper
-
- All Implemented Interfaces:
ICryptoHelper
public class BCCryptoHelper extends java.lang.Object implements ICryptoHelper
-
-
Field Summary
-
Fields inherited from interface org.openas2.lib.helper.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 Summary
Constructors Constructor Description BCCryptoHelper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringcalculateMIC(javax.mail.internet.MimeBodyPart part, java.lang.String digest, boolean includeHeaders)java.lang.StringcalculateMIC(javax.mail.internet.MimeBodyPart part, java.lang.String digest, boolean includeHeaders, boolean noCanonicalize)protected java.security.cert.X509CertificatecastCertificate(java.security.cert.Certificate cert)protected java.security.PrivateKeycastKey(java.security.Key key)javax.mail.internet.MimeBodyPartcompress(Message msg, javax.mail.internet.MimeBodyPart mbp, java.lang.String compressionType, java.lang.String contentTxfrEncoding)protected java.lang.StringconvertAlgorithm(java.lang.String algorithm, boolean toBC)voiddecompress(AS2Message msg)javax.mail.internet.MimeBodyPartdecrypt(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert, java.security.Key key)voiddeinitialize()javax.mail.internet.MimeBodyPartencrypt(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert, java.lang.String algorithm, java.lang.String contentTxfrEncoding)protected java.lang.StringgetEncoding(java.lang.String contentTxfrEncoding)java.lang.StringgetHeaderValue(javax.mail.internet.MimeBodyPart part, java.lang.String headerName)java.security.KeyStoregetKeyStore()protected org.bouncycastle.operator.OutputEncryptorgetOutputEncryptor(java.lang.String algorithm)Looks up the correct ASN1 OID of the passed in algorithm string and returns the encryptor.voidinitialize()booleanisCompressed(javax.mail.internet.MimeBodyPart part)booleanisEncrypted(javax.mail.internet.MimeBodyPart part)booleanisSigned(javax.mail.internet.MimeBodyPart part)java.security.KeyStoreloadKeyStore(java.io.InputStream in, char[] password)java.security.KeyStoreloadKeyStore(java.lang.String filename, char[] password)voidlogSignerInfo(java.lang.String msgPrefix, org.bouncycastle.cms.SignerInformation signer, javax.mail.internet.MimeBodyPart part, java.security.cert.X509Certificate cert)javax.mail.internet.MimeBodyPartsign(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert, java.security.Key key, java.lang.String digest, java.lang.String contentTxfrEncoding, boolean adjustDigestToOldName, boolean isRemoveCmsAlgorithmProtectionAttr)protected java.io.InputStreamtrimCRLFPrefix(byte[] data)javax.mail.internet.MimeBodyPartverifySignature(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert)
-
-
-
Method Detail
-
isEncrypted
public boolean isEncrypted(javax.mail.internet.MimeBodyPart part) throws javax.mail.MessagingException- Specified by:
isEncryptedin interfaceICryptoHelper- Throws:
javax.mail.MessagingException
-
isSigned
public boolean isSigned(javax.mail.internet.MimeBodyPart part) throws javax.mail.MessagingException- Specified by:
isSignedin interfaceICryptoHelper- Throws:
javax.mail.MessagingException
-
isCompressed
public boolean isCompressed(javax.mail.internet.MimeBodyPart part) throws javax.mail.MessagingException- Specified by:
isCompressedin interfaceICryptoHelper- Throws:
javax.mail.MessagingException
-
calculateMIC
public java.lang.String calculateMIC(javax.mail.internet.MimeBodyPart part, java.lang.String digest, boolean includeHeaders) throws java.security.GeneralSecurityException, javax.mail.MessagingException, java.io.IOException- Specified by:
calculateMICin interfaceICryptoHelper- Throws:
java.security.GeneralSecurityExceptionjavax.mail.MessagingExceptionjava.io.IOException
-
calculateMIC
public java.lang.String calculateMIC(javax.mail.internet.MimeBodyPart part, java.lang.String digest, boolean includeHeaders, boolean noCanonicalize) throws java.security.GeneralSecurityException, javax.mail.MessagingException, java.io.IOException- Specified by:
calculateMICin interfaceICryptoHelper- Throws:
java.security.GeneralSecurityExceptionjavax.mail.MessagingExceptionjava.io.IOException
-
decrypt
public javax.mail.internet.MimeBodyPart decrypt(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert, java.security.Key key) throws java.security.GeneralSecurityException, javax.mail.MessagingException, org.bouncycastle.cms.CMSException, java.io.IOException, org.bouncycastle.mail.smime.SMIMEException- Specified by:
decryptin interfaceICryptoHelper- Throws:
java.security.GeneralSecurityExceptionjavax.mail.MessagingExceptionorg.bouncycastle.cms.CMSExceptionjava.io.IOExceptionorg.bouncycastle.mail.smime.SMIMEException
-
deinitialize
public void deinitialize()
-
encrypt
public javax.mail.internet.MimeBodyPart encrypt(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert, java.lang.String algorithm, java.lang.String contentTxfrEncoding) throws java.security.GeneralSecurityException, org.bouncycastle.mail.smime.SMIMEException, javax.mail.MessagingException- Specified by:
encryptin interfaceICryptoHelper- Throws:
java.security.GeneralSecurityExceptionorg.bouncycastle.mail.smime.SMIMEExceptionjavax.mail.MessagingException
-
initialize
public void initialize()
- Specified by:
initializein interfaceICryptoHelper
-
sign
public javax.mail.internet.MimeBodyPart sign(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert, java.security.Key key, java.lang.String digest, java.lang.String contentTxfrEncoding, boolean adjustDigestToOldName, boolean isRemoveCmsAlgorithmProtectionAttr) throws java.security.GeneralSecurityException, org.bouncycastle.mail.smime.SMIMEException, javax.mail.MessagingException- Specified by:
signin interfaceICryptoHelper- Throws:
java.security.GeneralSecurityExceptionorg.bouncycastle.mail.smime.SMIMEExceptionjavax.mail.MessagingException
-
verifySignature
public javax.mail.internet.MimeBodyPart verifySignature(javax.mail.internet.MimeBodyPart part, java.security.cert.Certificate cert) throws java.security.GeneralSecurityException, java.io.IOException, javax.mail.MessagingException, org.bouncycastle.cms.CMSException, org.bouncycastle.operator.OperatorCreationException- Specified by:
verifySignaturein interfaceICryptoHelper- Throws:
java.security.GeneralSecurityExceptionjava.io.IOExceptionjavax.mail.MessagingExceptionorg.bouncycastle.cms.CMSExceptionorg.bouncycastle.operator.OperatorCreationException
-
compress
public javax.mail.internet.MimeBodyPart compress(Message msg, javax.mail.internet.MimeBodyPart mbp, java.lang.String compressionType, java.lang.String contentTxfrEncoding) throws org.bouncycastle.mail.smime.SMIMEException, OpenAS2Exception
- Specified by:
compressin interfaceICryptoHelper- Throws:
org.bouncycastle.mail.smime.SMIMEExceptionOpenAS2Exception
-
decompress
public void decompress(AS2Message msg) throws DispositionException
- Specified by:
decompressin interfaceICryptoHelper- Throws:
DispositionException
-
getEncoding
protected java.lang.String getEncoding(java.lang.String contentTxfrEncoding)
-
castCertificate
protected java.security.cert.X509Certificate castCertificate(java.security.cert.Certificate cert) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
castKey
protected java.security.PrivateKey castKey(java.security.Key key) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
convertAlgorithm
protected java.lang.String convertAlgorithm(java.lang.String algorithm, boolean toBC) throws java.security.NoSuchAlgorithmException- Throws:
java.security.NoSuchAlgorithmException
-
getOutputEncryptor
protected org.bouncycastle.operator.OutputEncryptor getOutputEncryptor(java.lang.String algorithm) throws java.security.NoSuchAlgorithmExceptionLooks up the correct ASN1 OID of the passed in algorithm string and returns the encryptor. The encryption key length is set where necessary- Parameters:
algorithm- The name of the algorithm to use for encryption- Returns:
- the OutputEncryptor of the given hash algorithm
- Throws:
java.security.NoSuchAlgorithmException- - Houston we have a problemTODO: 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.
-
trimCRLFPrefix
protected java.io.InputStream trimCRLFPrefix(byte[] data)
-
getKeyStore
public java.security.KeyStore getKeyStore() throws java.security.KeyStoreException, java.security.NoSuchProviderException- Specified by:
getKeyStorein interfaceICryptoHelper- Throws:
java.security.KeyStoreExceptionjava.security.NoSuchProviderException
-
loadKeyStore
public java.security.KeyStore loadKeyStore(java.io.InputStream in, char[] password) throws java.lang.Exception- Specified by:
loadKeyStorein interfaceICryptoHelper- Throws:
java.lang.Exception
-
loadKeyStore
public java.security.KeyStore loadKeyStore(java.lang.String filename, char[] password) throws java.lang.Exception- Specified by:
loadKeyStorein interfaceICryptoHelper- Throws:
java.lang.Exception
-
getHeaderValue
public java.lang.String getHeaderValue(javax.mail.internet.MimeBodyPart part, java.lang.String headerName)
-
logSignerInfo
public void logSignerInfo(java.lang.String msgPrefix, org.bouncycastle.cms.SignerInformation signer, javax.mail.internet.MimeBodyPart part, java.security.cert.X509Certificate cert)
-
-