001package org.apache.commons.ssl.org.bouncycastle.asn1.ess; 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.ASN1OctetString; 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.DEROctetString; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.IssuerSerial; 011 012public class ESSCertID 013 extends ASN1Object 014{ 015 private ASN1OctetString certHash; 016 017 private IssuerSerial issuerSerial; 018 019 public static ESSCertID getInstance(Object o) 020 { 021 if (o instanceof ESSCertID) 022 { 023 return (ESSCertID)o; 024 } 025 else if (o != null) 026 { 027 return new ESSCertID(ASN1Sequence.getInstance(o)); 028 } 029 030 return null; 031 } 032 033 /** 034 * constructor 035 */ 036 private ESSCertID(ASN1Sequence seq) 037 { 038 if (seq.size() < 1 || seq.size() > 2) 039 { 040 throw new IllegalArgumentException("Bad sequence size: " + seq.size()); 041 } 042 043 certHash = ASN1OctetString.getInstance(seq.getObjectAt(0)); 044 045 if (seq.size() > 1) 046 { 047 issuerSerial = IssuerSerial.getInstance(seq.getObjectAt(1)); 048 } 049 } 050 051 public ESSCertID( 052 byte[] hash) 053 { 054 certHash = new DEROctetString(hash); 055 } 056 057 public ESSCertID( 058 byte[] hash, 059 IssuerSerial issuerSerial) 060 { 061 this.certHash = new DEROctetString(hash); 062 this.issuerSerial = issuerSerial; 063 } 064 065 public byte[] getCertHash() 066 { 067 return certHash.getOctets(); 068 } 069 070 public IssuerSerial getIssuerSerial() 071 { 072 return issuerSerial; 073 } 074 075 /** 076 * <pre> 077 * ESSCertID ::= SEQUENCE { 078 * certHash Hash, 079 * issuerSerial IssuerSerial OPTIONAL } 080 * </pre> 081 */ 082 public ASN1Primitive toASN1Primitive() 083 { 084 ASN1EncodableVector v = new ASN1EncodableVector(); 085 086 v.add(certHash); 087 088 if (issuerSerial != null) 089 { 090 v.add(issuerSerial); 091 } 092 093 return new DERSequence(v); 094 } 095}