All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.asn1.cms.Attribute Maven / Gradle / Ivy

Go to download

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.5 and up.

There is a newer version: 1.70
Show newest version
package org.bouncycastle.asn1.cms;

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.ASN1Set;
import org.bouncycastle.asn1.DERSequence;

/**
 * RFC 5652:
 * Attribute is a pair of OID (as type identifier) + set of values.
 * 

*

 * Attribute ::= SEQUENCE {
 *     attrType OBJECT IDENTIFIER,
 *     attrValues SET OF AttributeValue
 * }
 * 
 * AttributeValue ::= ANY
 * 
*

* General rule on values is that same AttributeValue must not be included * multiple times into the set. That is, if the value is a SET OF INTEGERs, * then having same value repeated is wrong: (1, 1), but different values is OK: (1, 2). * Normally the AttributeValue syntaxes are more complicated than that. *

* General rule of Attribute usage is that the {@link Attributes} containers * must not have multiple Attribute:s with same attrType (OID) there. */ public class Attribute extends ASN1Object { private ASN1ObjectIdentifier attrType; private ASN1Set attrValues; /** * Return an Attribute object from the given object. *

* Accepted inputs: *

    *
  • null → null *
  • {@link Attribute} object *
  • {@link org.bouncycastle.asn1.ASN1Sequence#getInstance(java.lang.Object) ASN1Sequence} input formats with Attribute structure inside *
* * @param o the object we want converted. * @exception IllegalArgumentException if the object cannot be converted. */ public static Attribute getInstance( Object o) { if (o instanceof Attribute) { return (Attribute)o; } if (o != null) { return new Attribute(ASN1Sequence.getInstance(o)); } return null; } private Attribute( ASN1Sequence seq) { attrType = (ASN1ObjectIdentifier)seq.getObjectAt(0); attrValues = (ASN1Set)seq.getObjectAt(1); } public Attribute( ASN1ObjectIdentifier attrType, ASN1Set attrValues) { this.attrType = attrType; this.attrValues = attrValues; } public ASN1ObjectIdentifier getAttrType() { return attrType; } public ASN1Set getAttrValues() { return attrValues; } public ASN1Encodable[] getAttributeValues() { return attrValues.toArray(); } /** * Produce an object suitable for an ASN1OutputStream. */ public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(attrType); v.add(attrValues); return new DERSequence(v); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy