org.bouncycastle.asn1.smime.SMIMECapabilities Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcutil-debug-jdk18on Show documentation
Show all versions of bcutil-debug-jdk18on Show documentation
The Bouncy Castle Java APIs for ASN.1 extension and utility APIs used to support bcpkix and bctls. This jar contains APIs for JDK 1.8 and up.
package org.bouncycastle.asn1.smime;
import java.util.Enumeration;
import java.util.Vector;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.cms.Attribute;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
/**
* Handler class for dealing with S/MIME Capabilities
*/
public class SMIMECapabilities
extends ASN1Object
{
/**
* general preferences
*/
public static final ASN1ObjectIdentifier preferSignedData = PKCSObjectIdentifiers.preferSignedData;
public static final ASN1ObjectIdentifier canNotDecryptAny = PKCSObjectIdentifiers.canNotDecryptAny;
public static final ASN1ObjectIdentifier sMIMECapabilitesVersions = PKCSObjectIdentifiers.sMIMECapabilitiesVersions;
/**
* encryption algorithms preferences
*/
public static final ASN1ObjectIdentifier aes256_CBC = NISTObjectIdentifiers.id_aes256_CBC;
public static final ASN1ObjectIdentifier aes192_CBC = NISTObjectIdentifiers.id_aes192_CBC;
public static final ASN1ObjectIdentifier aes128_CBC = NISTObjectIdentifiers.id_aes128_CBC;
public static final ASN1ObjectIdentifier idea_CBC = new ASN1ObjectIdentifier("1.3.6.1.4.1.188.7.1.1.2");
public static final ASN1ObjectIdentifier cast5_CBC = new ASN1ObjectIdentifier("1.2.840.113533.7.66.10");
public static final ASN1ObjectIdentifier dES_CBC = new ASN1ObjectIdentifier("1.3.14.3.2.7");
public static final ASN1ObjectIdentifier dES_EDE3_CBC = PKCSObjectIdentifiers.des_EDE3_CBC;
public static final ASN1ObjectIdentifier rC2_CBC = PKCSObjectIdentifiers.RC2_CBC;
private ASN1Sequence capabilities;
/**
* return an Attribute object from the given object.
*
* @param o the object we want converted.
* @exception IllegalArgumentException if the object cannot be converted.
*/
public static SMIMECapabilities getInstance(
Object o)
{
if (o == null || o instanceof SMIMECapabilities)
{
return (SMIMECapabilities)o;
}
if (o instanceof ASN1Sequence)
{
return new SMIMECapabilities((ASN1Sequence)o);
}
if (o instanceof Attribute)
{
return new SMIMECapabilities(
(ASN1Sequence)(((Attribute)o).getAttrValues().getObjectAt(0)));
}
throw new IllegalArgumentException("unknown object in factory: " + o.getClass().getName());
}
public SMIMECapabilities(
ASN1Sequence seq)
{
capabilities = seq;
}
/**
* returns a vector with 0 or more objects of all the capabilities
* matching the passed in capability OID. If the OID passed is null the
* entire set is returned.
*/
public Vector getCapabilities(
ASN1ObjectIdentifier capability)
{
Enumeration e = capabilities.getObjects();
Vector list = new Vector();
if (capability == null)
{
while (e.hasMoreElements())
{
SMIMECapability cap = SMIMECapability.getInstance(e.nextElement());
list.addElement(cap);
}
}
else
{
while (e.hasMoreElements())
{
SMIMECapability cap = SMIMECapability.getInstance(e.nextElement());
if (capability.equals(cap.getCapabilityID()))
{
list.addElement(cap);
}
}
}
return list;
}
/**
* Produce an object suitable for an ASN1OutputStream.
*
* SMIMECapabilities ::= SEQUENCE OF SMIMECapability
*
*/
public ASN1Primitive toASN1Primitive()
{
return capabilities;
}
}