001package org.apache.commons.ssl.org.bouncycastle.asn1.esf; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009 010public class SignaturePolicyId 011 extends ASN1Object 012{ 013 private ASN1ObjectIdentifier sigPolicyId; 014 private OtherHashAlgAndValue sigPolicyHash; 015 private SigPolicyQualifiers sigPolicyQualifiers; 016 017 018 public static SignaturePolicyId getInstance( 019 Object obj) 020 { 021 if (obj instanceof SignaturePolicyId) 022 { 023 return (SignaturePolicyId)obj; 024 } 025 else if (obj != null) 026 { 027 return new SignaturePolicyId(ASN1Sequence.getInstance(obj)); 028 } 029 030 return null; 031 } 032 033 private SignaturePolicyId( 034 ASN1Sequence seq) 035 { 036 if (seq.size() != 2 && seq.size() != 3) 037 { 038 throw new IllegalArgumentException("Bad sequence size: " + seq.size()); 039 } 040 041 sigPolicyId = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); 042 sigPolicyHash = OtherHashAlgAndValue.getInstance(seq.getObjectAt(1)); 043 044 if (seq.size() == 3) 045 { 046 sigPolicyQualifiers = SigPolicyQualifiers.getInstance(seq.getObjectAt(2)); 047 } 048 } 049 050 public SignaturePolicyId( 051 ASN1ObjectIdentifier sigPolicyIdentifier, 052 OtherHashAlgAndValue sigPolicyHash) 053 { 054 this(sigPolicyIdentifier, sigPolicyHash, null); 055 } 056 057 public SignaturePolicyId( 058 ASN1ObjectIdentifier sigPolicyId, 059 OtherHashAlgAndValue sigPolicyHash, 060 SigPolicyQualifiers sigPolicyQualifiers) 061 { 062 this.sigPolicyId = sigPolicyId; 063 this.sigPolicyHash = sigPolicyHash; 064 this.sigPolicyQualifiers = sigPolicyQualifiers; 065 } 066 067 public ASN1ObjectIdentifier getSigPolicyId() 068 { 069 return new ASN1ObjectIdentifier(sigPolicyId.getId()); 070 } 071 072 public OtherHashAlgAndValue getSigPolicyHash() 073 { 074 return sigPolicyHash; 075 } 076 077 public SigPolicyQualifiers getSigPolicyQualifiers() 078 { 079 return sigPolicyQualifiers; 080 } 081 082 /** 083 * <pre> 084 * SignaturePolicyId ::= SEQUENCE { 085 * sigPolicyId SigPolicyId, 086 * sigPolicyHash SigPolicyHash, 087 * sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL} 088 * </pre> 089 */ 090 public ASN1Primitive toASN1Primitive() 091 { 092 ASN1EncodableVector v = new ASN1EncodableVector(); 093 094 v.add(sigPolicyId); 095 v.add(sigPolicyHash); 096 if (sigPolicyQualifiers != null) 097 { 098 v.add(sigPolicyQualifiers); 099 } 100 101 return new DERSequence(v); 102 } 103}