001package org.apache.commons.ssl.org.bouncycastle.asn1.crmf; 002 003import java.math.BigInteger; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 012import org.apache.commons.ssl.org.bouncycastle.asn1.x509.GeneralName; 013 014public class CertId 015 extends ASN1Object 016{ 017 private GeneralName issuer; 018 private ASN1Integer serialNumber; 019 020 private CertId(ASN1Sequence seq) 021 { 022 issuer = GeneralName.getInstance(seq.getObjectAt(0)); 023 serialNumber = ASN1Integer.getInstance(seq.getObjectAt(1)); 024 } 025 026 public static CertId getInstance(Object o) 027 { 028 if (o instanceof CertId) 029 { 030 return (CertId)o; 031 } 032 033 if (o != null) 034 { 035 return new CertId(ASN1Sequence.getInstance(o)); 036 } 037 038 return null; 039 } 040 041 public static CertId getInstance(ASN1TaggedObject obj, boolean isExplicit) 042 { 043 return getInstance(ASN1Sequence.getInstance(obj, isExplicit)); 044 } 045 046 public CertId(GeneralName issuer, BigInteger serialNumber) 047 { 048 this(issuer, new ASN1Integer(serialNumber)); 049 } 050 051 public CertId(GeneralName issuer, ASN1Integer serialNumber) 052 { 053 this.issuer = issuer; 054 this.serialNumber = serialNumber; 055 } 056 057 public GeneralName getIssuer() 058 { 059 return issuer; 060 } 061 062 public ASN1Integer getSerialNumber() 063 { 064 return serialNumber; 065 } 066 067 /** 068 * <pre> 069 * CertId ::= SEQUENCE { 070 * issuer GeneralName, 071 * serialNumber INTEGER } 072 * </pre> 073 * @return a basic ASN.1 object representation. 074 */ 075 public ASN1Primitive toASN1Primitive() 076 { 077 ASN1EncodableVector v = new ASN1EncodableVector(); 078 079 v.add(issuer); 080 v.add(serialNumber); 081 082 return new DERSequence(v); 083 } 084}