1 package org.bouncycastle.asn1.crmf; 2 3 import org.bouncycastle.asn1.ASN1Encodable; 4 import org.bouncycastle.asn1.ASN1EncodableVector; 5 import org.bouncycastle.asn1.ASN1Object; 6 import org.bouncycastle.asn1.ASN1Primitive; 7 import org.bouncycastle.asn1.ASN1Sequence; 8 import org.bouncycastle.asn1.DERSequence; 9 import org.bouncycastle.asn1.DERUTF8String; 10 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; 11 import org.bouncycastle.asn1.x509.GeneralName; 12 13 public class EncKeyWithID 14 extends ASN1Object 15 { 16 private final PrivateKeyInfo privKeyInfo; 17 private final ASN1Encodable identifier; 18 getInstance(Object o)19 public static EncKeyWithID getInstance(Object o) 20 { 21 if (o instanceof EncKeyWithID) 22 { 23 return (EncKeyWithID)o; 24 } 25 else if (o != null) 26 { 27 return new EncKeyWithID(ASN1Sequence.getInstance(o)); 28 } 29 30 return null; 31 } 32 EncKeyWithID(ASN1Sequence seq)33 private EncKeyWithID(ASN1Sequence seq) 34 { 35 this.privKeyInfo = PrivateKeyInfo.getInstance(seq.getObjectAt(0)); 36 37 if (seq.size() > 1) 38 { 39 if (!(seq.getObjectAt(1) instanceof DERUTF8String)) 40 { 41 this.identifier = GeneralName.getInstance(seq.getObjectAt(1)); 42 } 43 else 44 { 45 this.identifier = (ASN1Encodable)seq.getObjectAt(1); 46 } 47 } 48 else 49 { 50 this.identifier = null; 51 } 52 } 53 EncKeyWithID(PrivateKeyInfo privKeyInfo)54 public EncKeyWithID(PrivateKeyInfo privKeyInfo) 55 { 56 this.privKeyInfo = privKeyInfo; 57 this.identifier = null; 58 } 59 EncKeyWithID(PrivateKeyInfo privKeyInfo, DERUTF8String str)60 public EncKeyWithID(PrivateKeyInfo privKeyInfo, DERUTF8String str) 61 { 62 this.privKeyInfo = privKeyInfo; 63 this.identifier = str; 64 } 65 EncKeyWithID(PrivateKeyInfo privKeyInfo, GeneralName generalName)66 public EncKeyWithID(PrivateKeyInfo privKeyInfo, GeneralName generalName) 67 { 68 this.privKeyInfo = privKeyInfo; 69 this.identifier = generalName; 70 } 71 getPrivateKey()72 public PrivateKeyInfo getPrivateKey() 73 { 74 return privKeyInfo; 75 } 76 hasIdentifier()77 public boolean hasIdentifier() 78 { 79 return identifier != null; 80 } 81 isIdentifierUTF8String()82 public boolean isIdentifierUTF8String() 83 { 84 return identifier instanceof DERUTF8String; 85 } 86 getIdentifier()87 public ASN1Encodable getIdentifier() 88 { 89 return identifier; 90 } 91 92 /** 93 * <pre> 94 * EncKeyWithID ::= SEQUENCE { 95 * privateKey PrivateKeyInfo, 96 * identifier CHOICE { 97 * string UTF8String, 98 * generalName GeneralName 99 * } OPTIONAL 100 * } 101 * </pre> 102 * @return an ASN.1 primitive composition of this EncKeyWithID. 103 */ toASN1Primitive()104 public ASN1Primitive toASN1Primitive() 105 { 106 ASN1EncodableVector v = new ASN1EncodableVector(2); 107 108 v.add(privKeyInfo); 109 110 if (identifier != null) 111 { 112 v.add(identifier); 113 } 114 115 return new DERSequence(v); 116 } 117 } 118