org.bouncycastle.cms.jcajce.CMSUtils Maven / Gradle / Ivy
package org.bouncycastle.cms.jcajce;
import java.io.IOException;
import java.security.AlgorithmParameters;
import java.security.Provider;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import java.util.HashSet;
import java.util.Set;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
import org.bouncycastle.asn1.sec.SECObjectIdentifiers;
import org.bouncycastle.asn1.x509.Certificate;
import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.jcajce.util.AlgorithmParametersUtils;
class CMSUtils
{
private static final Set mqvAlgs = new HashSet();
static
{
mqvAlgs.add(X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme);
mqvAlgs.add(SECObjectIdentifiers.mqvSinglePass_sha224kdf_scheme);
mqvAlgs.add(SECObjectIdentifiers.mqvSinglePass_sha256kdf_scheme);
mqvAlgs.add(SECObjectIdentifiers.mqvSinglePass_sha384kdf_scheme);
mqvAlgs.add(SECObjectIdentifiers.mqvSinglePass_sha512kdf_scheme);
}
static boolean isMQV(ASN1ObjectIdentifier algorithm)
{
return mqvAlgs.contains(algorithm);
}
static IssuerAndSerialNumber getIssuerAndSerialNumber(X509Certificate cert)
throws CertificateEncodingException
{
Certificate certStruct = Certificate.getInstance(cert.getEncoded());
return new IssuerAndSerialNumber(certStruct.getIssuer(), cert.getSerialNumber());
}
static byte[] getSubjectKeyId(X509Certificate cert)
{
byte[] ext = cert.getExtensionValue(Extension.subjectKeyIdentifier.getId());
if (ext != null)
{
return ASN1OctetString.getInstance(ASN1OctetString.getInstance(ext).getOctets()).getOctets();
}
else
{
return null;
}
}
static EnvelopedDataHelper createContentHelper(Provider provider)
{
if (provider != null)
{
return new EnvelopedDataHelper(new ProviderJcaJceExtHelper(provider));
}
else
{
return new EnvelopedDataHelper(new DefaultJcaJceExtHelper());
}
}
static EnvelopedDataHelper createContentHelper(String providerName)
{
if (providerName != null)
{
return new EnvelopedDataHelper(new NamedJcaJceExtHelper(providerName));
}
else
{
return new EnvelopedDataHelper(new DefaultJcaJceExtHelper());
}
}
static ASN1Encodable extractParameters(AlgorithmParameters params)
throws CMSException
{
try
{
return AlgorithmParametersUtils.extractParameters(params);
}
catch (IOException e)
{
throw new CMSException("cannot extract parameters: " + e.getMessage(), e);
}
}
static void loadParameters(AlgorithmParameters params, ASN1Encodable sParams)
throws CMSException
{
try
{
AlgorithmParametersUtils.loadParameters(params, sParams);
}
catch (IOException e)
{
throw new CMSException("error encoding algorithm parameters.", e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy