package org.spongycastle.asn1.cmp; import org.spongycastle.asn1.ASN1Encodable; import org.spongycastle.asn1.ASN1EncodableVector; import org.spongycastle.asn1.ASN1Object; import org.spongycastle.asn1.ASN1ObjectIdentifier; import org.spongycastle.asn1.ASN1Primitive; import org.spongycastle.asn1.ASN1Sequence; import org.spongycastle.asn1.DERSequence; /** * Example InfoTypeAndValue contents include, but are not limited * to, the following (un-comment in this ASN.1 module and use as * appropriate for a given environment): * <pre> * id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1} * CAProtEncCertValue ::= CMPCertificate * id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2} * SignKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier * id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3} * EncKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier * id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4} * PreferredSymmAlgValue ::= AlgorithmIdentifier * id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5} * CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent * id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6} * CurrentCRLValue ::= CertificateList * id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7} * UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER * id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} * KeyPairParamReqValue ::= OBJECT IDENTIFIER * id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} * KeyPairParamRepValue ::= AlgorithmIdentifer * id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} * RevPassphraseValue ::= EncryptedValue * id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} * ImplicitConfirmValue ::= NULL * id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} * ConfirmWaitTimeValue ::= GeneralizedTime * id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} * OrigPKIMessageValue ::= PKIMessages * id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} * SuppLangTagsValue ::= SEQUENCE OF UTF8String * * where * * id-pkix OBJECT IDENTIFIER ::= { * iso(1) identified-organization(3) * dod(6) internet(1) security(5) mechanisms(5) pkix(7)} * and * id-it OBJECT IDENTIFIER ::= {id-pkix 4} * </pre> */ public class InfoTypeAndValue extends ASN1Object { private ASN1ObjectIdentifier infoType; private ASN1Encodable infoValue; private InfoTypeAndValue(ASN1Sequence seq) { infoType = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); if (seq.size() > 1) { infoValue = (ASN1Encodable)seq.getObjectAt(1); } } public static InfoTypeAndValue getInstance(Object o) { if (o instanceof InfoTypeAndValue) { return (InfoTypeAndValue)o; } if (o != null) { return new InfoTypeAndValue(ASN1Sequence.getInstance(o)); } return null; } public InfoTypeAndValue( ASN1ObjectIdentifier infoType) { this.infoType = infoType; this.infoValue = null; } public InfoTypeAndValue( ASN1ObjectIdentifier infoType, ASN1Encodable optionalValue) { this.infoType = infoType; this.infoValue = optionalValue; } public ASN1ObjectIdentifier getInfoType() { return infoType; } public ASN1Encodable getInfoValue() { return infoValue; } /** * <pre> * InfoTypeAndValue ::= SEQUENCE { * infoType OBJECT IDENTIFIER, * infoValue ANY DEFINED BY infoType OPTIONAL * } * </pre> * @return a basic ASN.1 object representation. */ public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(); v.add(infoType); if (infoValue != null) { v.add(infoValue); } return new DERSequence(v); } }