CMSSignedHelperpublic class CMSSignedHelper extends Object
Fields Summary |
---|
static final CMSSignedHelper | INSTANCE | private static final Map | encryptionAlgs | private static final Map | digestAlgs | private static final Map | digestAliases |
Methods Summary |
---|
private void | addCRLsFromSet(java.util.List crls, org.bouncycastle.asn1.ASN1Set certSet, java.security.Provider provider)
CertificateFactory cf;
try
{
if (provider != null)
{
cf = CertificateFactory.getInstance("X.509", provider);
}
else
{
cf = CertificateFactory.getInstance("X.509");
}
}
catch (CertificateException ex)
{
throw new CMSException("can't get certificate factory.", ex);
}
Enumeration e = certSet.getObjects();
while (e.hasMoreElements())
{
try
{
DERObject obj = ((DEREncodable)e.nextElement()).getDERObject();
crls.add(cf.generateCRL(
new ByteArrayInputStream(obj.getEncoded())));
}
catch (IOException ex)
{
throw new CMSException("can't re-encode CRL!", ex);
}
catch (CRLException ex)
{
throw new CMSException("can't re-encode CRL!", ex);
}
}
| private void | addCertsFromSet(java.util.List certs, org.bouncycastle.asn1.ASN1Set certSet, java.security.Provider provider)
CertificateFactory cf;
try
{
if (provider != null)
{
cf = CertificateFactory.getInstance("X.509", provider);
}
else
{
cf = CertificateFactory.getInstance("X.509");
}
}
catch (CertificateException ex)
{
throw new CMSException("can't get certificate factory.", ex);
}
Enumeration e = certSet.getObjects();
while (e.hasMoreElements())
{
try
{
DERObject obj = ((DEREncodable)e.nextElement()).getDERObject();
if (obj instanceof ASN1Sequence)
{
certs.add(cf.generateCertificate(
new ByteArrayInputStream(obj.getEncoded())));
}
}
catch (IOException ex)
{
throw new CMSException(
"can't re-encode certificate!", ex);
}
catch (CertificateException ex)
{
throw new CMSException(
"can't re-encode certificate!", ex);
}
}
| private static void | addEntries(org.bouncycastle.asn1.DERObjectIdentifier alias, java.lang.String digest, java.lang.String encryption)
digestAlgs.put(alias.getId(), digest);
encryptionAlgs.put(alias.getId(), encryption);
| private boolean | anyCertHasTypeOther()
// not supported
return false;
| private boolean | anyCertHasV1Attribute()
// obsolete
return false;
| private boolean | anyCertHasV2Attribute()
// TODO
return false;
| private boolean | anyCrlHasTypeOther()
// not supported
return false;
| org.bouncycastle.x509.X509Store | createAttributeStore(java.lang.String type, java.security.Provider provider, org.bouncycastle.asn1.ASN1Set certSet)
List certs = new ArrayList();
if (certSet != null)
{
Enumeration e = certSet.getObjects();
while (e.hasMoreElements())
{
try
{
DERObject obj = ((DEREncodable)e.nextElement()).getDERObject();
if (obj instanceof ASN1TaggedObject)
{
ASN1TaggedObject tagged = (ASN1TaggedObject)obj;
if (tagged.getTagNo() == 2)
{
certs.add(new X509V2AttributeCertificate(ASN1Sequence.getInstance(tagged, false).getEncoded()));
}
}
}
catch (IOException ex)
{
throw new CMSException(
"can't re-encode attribute certificate!", ex);
}
}
}
try
{
return X509Store.getInstance(
"AttributeCertificate/" +type, new X509CollectionStoreParameters(certs), provider);
}
catch (IllegalArgumentException e)
{
throw new CMSException("can't setup the X509Store", e);
}
| org.bouncycastle.x509.X509Store | createCRLsStore(java.lang.String type, java.security.Provider provider, org.bouncycastle.asn1.ASN1Set crlSet)
List crls = new ArrayList();
if (crlSet != null)
{
addCRLsFromSet(crls, crlSet, provider);
}
try
{
return X509Store.getInstance(
"CRL/" +type, new X509CollectionStoreParameters(crls), provider);
}
catch (IllegalArgumentException e)
{
throw new CMSException("can't setup the X509Store", e);
}
| java.security.cert.CertStore | createCertStore(java.lang.String type, java.security.Provider provider, org.bouncycastle.asn1.ASN1Set certSet, org.bouncycastle.asn1.ASN1Set crlSet)
List certsAndcrls = new ArrayList();
//
// load the certificates and revocation lists if we have any
//
if (certSet != null)
{
addCertsFromSet(certsAndcrls, certSet, provider);
}
if (crlSet != null)
{
addCRLsFromSet(certsAndcrls, crlSet, provider);
}
try
{
if (provider != null)
{
return CertStore.getInstance(type, new CollectionCertStoreParameters(certsAndcrls), provider);
}
else
{
return CertStore.getInstance(type, new CollectionCertStoreParameters(certsAndcrls));
}
}
catch (InvalidAlgorithmParameterException e)
{
throw new CMSException("can't setup the CertStore", e);
}
| org.bouncycastle.x509.X509Store | createCertificateStore(java.lang.String type, java.security.Provider provider, org.bouncycastle.asn1.ASN1Set certSet)
List certs = new ArrayList();
if (certSet != null)
{
addCertsFromSet(certs, certSet, provider);
}
try
{
return X509Store.getInstance(
"Certificate/" +type, new X509CollectionStoreParameters(certs), provider);
}
catch (IllegalArgumentException e)
{
throw new CMSException("can't setup the X509Store", e);
}
| private java.security.MessageDigest | createDigestInstance(java.lang.String algorithm, java.security.Provider provider)
if (provider != null)
{
return MessageDigest.getInstance(algorithm, provider);
}
else
{
return MessageDigest.getInstance(algorithm);
}
| java.lang.String | getDigestAlgName(java.lang.String digestAlgOID)Return the digest algorithm using one of the standard JCA string
representations rather than the algorithm identifier (if possible).
addEntries(NISTObjectIdentifiers.dsa_with_sha224, "SHA224", "DSA");
addEntries(NISTObjectIdentifiers.dsa_with_sha256, "SHA256", "DSA");
addEntries(NISTObjectIdentifiers.dsa_with_sha384, "SHA384", "DSA");
addEntries(NISTObjectIdentifiers.dsa_with_sha512, "SHA512", "DSA");
addEntries(OIWObjectIdentifiers.dsaWithSHA1, "SHA1", "DSA");
addEntries(OIWObjectIdentifiers.md4WithRSA, "MD4", "RSA");
addEntries(OIWObjectIdentifiers.md4WithRSAEncryption, "MD4", "RSA");
addEntries(OIWObjectIdentifiers.md5WithRSA, "MD5", "RSA");
addEntries(OIWObjectIdentifiers.sha1WithRSA, "SHA1", "RSA");
addEntries(PKCSObjectIdentifiers.md2WithRSAEncryption, "MD2", "RSA");
addEntries(PKCSObjectIdentifiers.md4WithRSAEncryption, "MD4", "RSA");
addEntries(PKCSObjectIdentifiers.md5WithRSAEncryption, "MD5", "RSA");
addEntries(PKCSObjectIdentifiers.sha1WithRSAEncryption, "SHA1", "RSA");
addEntries(PKCSObjectIdentifiers.sha224WithRSAEncryption, "SHA224", "RSA");
addEntries(PKCSObjectIdentifiers.sha256WithRSAEncryption, "SHA256", "RSA");
addEntries(PKCSObjectIdentifiers.sha384WithRSAEncryption, "SHA384", "RSA");
addEntries(PKCSObjectIdentifiers.sha512WithRSAEncryption, "SHA512", "RSA");
addEntries(X9ObjectIdentifiers.ecdsa_with_SHA1, "SHA1", "ECDSA");
addEntries(X9ObjectIdentifiers.ecdsa_with_SHA224, "SHA224", "ECDSA");
addEntries(X9ObjectIdentifiers.ecdsa_with_SHA256, "SHA256", "ECDSA");
addEntries(X9ObjectIdentifiers.ecdsa_with_SHA384, "SHA384", "ECDSA");
addEntries(X9ObjectIdentifiers.ecdsa_with_SHA512, "SHA512", "ECDSA");
addEntries(X9ObjectIdentifiers.id_dsa_with_sha1, "SHA1", "DSA");
encryptionAlgs.put(X9ObjectIdentifiers.id_dsa.getId(), "DSA");
encryptionAlgs.put(PKCSObjectIdentifiers.rsaEncryption.getId(), "RSA");
encryptionAlgs.put(TeleTrusTObjectIdentifiers.teleTrusTRSAsignatureAlgorithm, "RSA");
encryptionAlgs.put(X509ObjectIdentifiers.id_ea_rsa.getId(), "RSA");
encryptionAlgs.put(CMSSignedDataGenerator.ENCRYPTION_RSA_PSS, "RSAandMGF1");
encryptionAlgs.put(CryptoProObjectIdentifiers.gostR3410_94.getId(), "GOST3410");
encryptionAlgs.put(CryptoProObjectIdentifiers.gostR3410_2001.getId(), "ECGOST3410");
encryptionAlgs.put("1.3.6.1.4.1.5849.1.6.2", "ECGOST3410");
encryptionAlgs.put("1.3.6.1.4.1.5849.1.1.5", "GOST3410");
digestAlgs.put(PKCSObjectIdentifiers.md2.getId(), "MD2");
digestAlgs.put(PKCSObjectIdentifiers.md4.getId(), "MD4");
digestAlgs.put(PKCSObjectIdentifiers.md5.getId(), "MD5");
digestAlgs.put(OIWObjectIdentifiers.idSHA1.getId(), "SHA1");
digestAlgs.put(NISTObjectIdentifiers.id_sha224.getId(), "SHA224");
digestAlgs.put(NISTObjectIdentifiers.id_sha256.getId(), "SHA256");
digestAlgs.put(NISTObjectIdentifiers.id_sha384.getId(), "SHA384");
digestAlgs.put(NISTObjectIdentifiers.id_sha512.getId(), "SHA512");
digestAlgs.put(TeleTrusTObjectIdentifiers.ripemd128.getId(), "RIPEMD128");
digestAlgs.put(TeleTrusTObjectIdentifiers.ripemd160.getId(), "RIPEMD160");
digestAlgs.put(TeleTrusTObjectIdentifiers.ripemd256.getId(), "RIPEMD256");
digestAlgs.put(CryptoProObjectIdentifiers.gostR3411.getId(), "GOST3411");
digestAlgs.put("1.3.6.1.4.1.5849.1.2.1", "GOST3411");
digestAliases.put("SHA1", new String[] { "SHA-1" });
digestAliases.put("SHA224", new String[] { "SHA-224" });
digestAliases.put("SHA256", new String[] { "SHA-256" });
digestAliases.put("SHA384", new String[] { "SHA-384" });
digestAliases.put("SHA512", new String[] { "SHA-512" });
String algName = (String)digestAlgs.get(digestAlgOID);
if (algName != null)
{
return algName;
}
return digestAlgOID;
| java.lang.String[] | getDigestAliases(java.lang.String algName)
String[] aliases = (String[])digestAliases.get(algName);
if (aliases != null)
{
return aliases;
}
return new String[0];
| java.security.MessageDigest | getDigestInstance(java.lang.String algorithm, java.security.Provider provider)
try
{
return createDigestInstance(algorithm, provider);
}
catch (NoSuchAlgorithmException e)
{
String[] aliases = getDigestAliases(algorithm);
for (int i = 0; i != aliases.length; i++)
{
try
{
return createDigestInstance(aliases[i], provider);
}
catch (NoSuchAlgorithmException ex)
{
// continue
}
}
if (provider != null)
{
return getDigestInstance(algorithm, null); // try rolling back
}
throw e;
}
| java.lang.String | getEncryptionAlgName(java.lang.String encryptionAlgOID)Return the digest encryption algorithm using one of the standard
JCA string representations rather the the algorithm identifier (if
possible).
String algName = (String)encryptionAlgs.get(encryptionAlgOID);
if (algName != null)
{
return algName;
}
return encryptionAlgOID;
| java.security.Signature | getSignatureInstance(java.lang.String algorithm, java.security.Provider provider)
if (provider != null)
{
return Signature.getInstance(algorithm, provider);
}
else
{
return Signature.getInstance(algorithm);
}
|
|