001package org.apache.commons.ssl.org.bouncycastle.asn1.cmp; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Choice; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 007import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject; 008import org.apache.commons.ssl.org.bouncycastle.asn1.crmf.EncryptedValue; 009 010public class CertOrEncCert 011 extends ASN1Object 012 implements ASN1Choice 013{ 014 private CMPCertificate certificate; 015 private EncryptedValue encryptedCert; 016 017 private CertOrEncCert(ASN1TaggedObject tagged) 018 { 019 if (tagged.getTagNo() == 0) 020 { 021 certificate = CMPCertificate.getInstance(tagged.getObject()); 022 } 023 else if (tagged.getTagNo() == 1) 024 { 025 encryptedCert = EncryptedValue.getInstance(tagged.getObject()); 026 } 027 else 028 { 029 throw new IllegalArgumentException("unknown tag: " + tagged.getTagNo()); 030 } 031 } 032 033 public static CertOrEncCert getInstance(Object o) 034 { 035 if (o instanceof CertOrEncCert) 036 { 037 return (CertOrEncCert)o; 038 } 039 040 if (o instanceof ASN1TaggedObject) 041 { 042 return new CertOrEncCert((ASN1TaggedObject)o); 043 } 044 045 return null; 046 } 047 048 public CertOrEncCert(CMPCertificate certificate) 049 { 050 if (certificate == null) 051 { 052 throw new IllegalArgumentException("'certificate' cannot be null"); 053 } 054 055 this.certificate = certificate; 056 } 057 058 public CertOrEncCert(EncryptedValue encryptedCert) 059 { 060 if (encryptedCert == null) 061 { 062 throw new IllegalArgumentException("'encryptedCert' cannot be null"); 063 } 064 065 this.encryptedCert = encryptedCert; 066 } 067 068 public CMPCertificate getCertificate() 069 { 070 return certificate; 071 } 072 073 public EncryptedValue getEncryptedCert() 074 { 075 return encryptedCert; 076 } 077 078 /** 079 * <pre> 080 * CertOrEncCert ::= CHOICE { 081 * certificate [0] CMPCertificate, 082 * encryptedCert [1] EncryptedValue 083 * } 084 * </pre> 085 * @return a basic ASN.1 object representation. 086 */ 087 public ASN1Primitive toASN1Primitive() 088 { 089 if (certificate != null) 090 { 091 return new DERTaggedObject(true, 0, certificate); 092 } 093 094 return new DERTaggedObject(true, 1, encryptedCert); 095 } 096}