blob: f70d28ae5f97b81aa0c863ede1c1b4fe417bf179 [file] [log] [blame]
package org.bouncycastle.asn1.smime;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
public class SMIMECapability
extends ASN1Object
{
/**
* general preferences
*/
public static final ASN1ObjectIdentifier preferSignedData = PKCSObjectIdentifiers.preferSignedData;
public static final ASN1ObjectIdentifier canNotDecryptAny = PKCSObjectIdentifiers.canNotDecryptAny;
public static final ASN1ObjectIdentifier sMIMECapabilitiesVersions = PKCSObjectIdentifiers.sMIMECapabilitiesVersions;
/**
* encryption algorithms preferences
*/
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;
public static final ASN1ObjectIdentifier aES128_CBC = NISTObjectIdentifiers.id_aes128_CBC;
public static final ASN1ObjectIdentifier aES192_CBC = NISTObjectIdentifiers.id_aes192_CBC;
public static final ASN1ObjectIdentifier aES256_CBC = NISTObjectIdentifiers.id_aes256_CBC;
private ASN1ObjectIdentifier capabilityID;
private ASN1Encodable parameters;
public SMIMECapability(
ASN1Sequence seq)
{
capabilityID = (ASN1ObjectIdentifier)seq.getObjectAt(0);
if (seq.size() > 1)
{
parameters = (ASN1Primitive)seq.getObjectAt(1);
}
}
public SMIMECapability(
ASN1ObjectIdentifier capabilityID,
ASN1Encodable parameters)
{
this.capabilityID = capabilityID;
this.parameters = parameters;
}
public static SMIMECapability getInstance(
Object obj)
{
if (obj == null || obj instanceof SMIMECapability)
{
return (SMIMECapability)obj;
}
if (obj instanceof ASN1Sequence)
{
return new SMIMECapability((ASN1Sequence)obj);
}
throw new IllegalArgumentException("Invalid SMIMECapability");
}
public ASN1ObjectIdentifier getCapabilityID()
{
return capabilityID;
}
public ASN1Encodable getParameters()
{
return parameters;
}
/**
* Produce an object suitable for an ASN1OutputStream.
* <pre>
* SMIMECapability ::= SEQUENCE {
* capabilityID OBJECT IDENTIFIER,
* parameters ANY DEFINED BY capabilityID OPTIONAL
* }
* </pre>
*/
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(capabilityID);
if (parameters != null)
{
v.add(parameters);
}
return new DERSequence(v);
}
}