001package org.apache.commons.ssl.org.bouncycastle.asn1.ocsp; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString; 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.ASN1TaggedObject; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 011import org.apache.commons.ssl.org.bouncycastle.asn1.x509.AlgorithmIdentifier; 012 013public class CertID 014 extends ASN1Object 015{ 016 AlgorithmIdentifier hashAlgorithm; 017 ASN1OctetString issuerNameHash; 018 ASN1OctetString issuerKeyHash; 019 ASN1Integer serialNumber; 020 021 public CertID( 022 AlgorithmIdentifier hashAlgorithm, 023 ASN1OctetString issuerNameHash, 024 ASN1OctetString issuerKeyHash, 025 ASN1Integer serialNumber) 026 { 027 this.hashAlgorithm = hashAlgorithm; 028 this.issuerNameHash = issuerNameHash; 029 this.issuerKeyHash = issuerKeyHash; 030 this.serialNumber = serialNumber; 031 } 032 033 private CertID( 034 ASN1Sequence seq) 035 { 036 hashAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(0)); 037 issuerNameHash = (ASN1OctetString)seq.getObjectAt(1); 038 issuerKeyHash = (ASN1OctetString)seq.getObjectAt(2); 039 serialNumber = (ASN1Integer)seq.getObjectAt(3); 040 } 041 042 public static CertID getInstance( 043 ASN1TaggedObject obj, 044 boolean explicit) 045 { 046 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 047 } 048 049 public static CertID getInstance( 050 Object obj) 051 { 052 if (obj instanceof CertID) 053 { 054 return (CertID)obj; 055 } 056 else if (obj != null) 057 { 058 return new CertID(ASN1Sequence.getInstance(obj)); 059 } 060 061 return null; 062 } 063 064 public AlgorithmIdentifier getHashAlgorithm() 065 { 066 return hashAlgorithm; 067 } 068 069 public ASN1OctetString getIssuerNameHash() 070 { 071 return issuerNameHash; 072 } 073 074 public ASN1OctetString getIssuerKeyHash() 075 { 076 return issuerKeyHash; 077 } 078 079 public ASN1Integer getSerialNumber() 080 { 081 return serialNumber; 082 } 083 084 /** 085 * Produce an object suitable for an ASN1OutputStream. 086 * <pre> 087 * CertID ::= SEQUENCE { 088 * hashAlgorithm AlgorithmIdentifier, 089 * issuerNameHash OCTET STRING, -- Hash of Issuer's DN 090 * issuerKeyHash OCTET STRING, -- Hash of Issuers public key 091 * serialNumber CertificateSerialNumber } 092 * </pre> 093 */ 094 public ASN1Primitive toASN1Primitive() 095 { 096 ASN1EncodableVector v = new ASN1EncodableVector(); 097 098 v.add(hashAlgorithm); 099 v.add(issuerNameHash); 100 v.add(issuerKeyHash); 101 v.add(serialNumber); 102 103 return new DERSequence(v); 104 } 105}