001package org.apache.commons.ssl.org.bouncycastle.asn1.ess; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERUTF8String; 011 012public class ContentHints 013 extends ASN1Object 014{ 015 private DERUTF8String contentDescription; 016 private ASN1ObjectIdentifier contentType; 017 018 public static ContentHints getInstance(Object o) 019 { 020 if (o instanceof ContentHints) 021 { 022 return (ContentHints)o; 023 } 024 else if (o != null) 025 { 026 return new ContentHints(ASN1Sequence.getInstance(o)); 027 } 028 029 return null; 030 } 031 032 /** 033 * constructor 034 */ 035 private ContentHints(ASN1Sequence seq) 036 { 037 ASN1Encodable field = seq.getObjectAt(0); 038 if (field.toASN1Primitive() instanceof DERUTF8String) 039 { 040 contentDescription = DERUTF8String.getInstance(field); 041 contentType = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(1)); 042 } 043 else 044 { 045 contentType = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); 046 } 047 } 048 049 public ContentHints( 050 ASN1ObjectIdentifier contentType) 051 { 052 this.contentType = contentType; 053 this.contentDescription = null; 054 } 055 056 public ContentHints( 057 ASN1ObjectIdentifier contentType, 058 DERUTF8String contentDescription) 059 { 060 this.contentType = contentType; 061 this.contentDescription = contentDescription; 062 } 063 064 public ASN1ObjectIdentifier getContentType() 065 { 066 return contentType; 067 } 068 069 public DERUTF8String getContentDescription() 070 { 071 return contentDescription; 072 } 073 074 /** 075 * <pre> 076 * ContentHints ::= SEQUENCE { 077 * contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL, 078 * contentType ContentType } 079 * </pre> 080 */ 081 public ASN1Primitive toASN1Primitive() 082 { 083 ASN1EncodableVector v = new ASN1EncodableVector(); 084 085 if (contentDescription != null) 086 { 087 v.add(contentDescription); 088 } 089 090 v.add(contentType); 091 092 return new DERSequence(v); 093 } 094}