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

org.bouncycastle.asn1.cms.ContentInfo 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.

The 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.ASN1TaggedObject;
import org.bouncycastle.asn1.BERSequence;
import org.bouncycastle.asn1.BERTaggedObject;

/**
 * RFC 5652 ContentInfo, and
 * RFC 5652 EncapsulatedContentInfo objects.
 *
 * 
 * ContentInfo ::= SEQUENCE {
 *     contentType ContentType,
 *     content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL
 * }
 *
 * EncapsulatedContentInfo ::= SEQUENCE {
 *     eContentType ContentType,
 *     eContent [0] EXPLICIT OCTET STRING OPTIONAL
 * }
 * 
*/ public class ContentInfo extends ASN1Object implements CMSObjectIdentifiers { private ASN1ObjectIdentifier contentType; private ASN1Encodable content; /** * Return an ContentInfo object from the given object. *

* Accepted inputs: *

    *
  • null → null *
  • {@link ContentInfo} object *
  • {@link org.bouncycastle.asn1.ASN1Sequence#getInstance(java.lang.Object) ASN1Sequence} input formats with ContentInfo structure inside *
* * @param obj the object we want converted. * @exception IllegalArgumentException if the object cannot be converted. */ public static ContentInfo getInstance( Object obj) { if (obj instanceof ContentInfo) { return (ContentInfo)obj; } else if (obj != null) { return new ContentInfo(ASN1Sequence.getInstance(obj)); } return null; } public static ContentInfo getInstance( ASN1TaggedObject obj, boolean explicit) { return getInstance(ASN1Sequence.getInstance(obj, explicit)); } private ContentInfo( ASN1Sequence seq) { if (seq.size() < 1 || seq.size() > 2) { throw new IllegalArgumentException("Bad sequence size: " + seq.size()); } contentType = (ASN1ObjectIdentifier)seq.getObjectAt(0); if (seq.size() > 1) { ASN1TaggedObject tagged = (ASN1TaggedObject)seq.getObjectAt(1); if (!tagged.isExplicit() || tagged.getTagNo() != 0) { throw new IllegalArgumentException("Bad tag for 'content'"); } content = tagged.getObject(); } } public ContentInfo( ASN1ObjectIdentifier contentType, ASN1Encodable content) { this.contentType = contentType; this.content = content; } public ASN1ObjectIdentifier getContentType() { return contentType; } public ASN1Encodable getContent() { return content; } /** * Produce an object suitable for an ASN1OutputStream. */ public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(contentType); if (content != null) { v.add(new BERTaggedObject(0, content)); } return new BERSequence(v); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy