EncryptedPrivateKeyInfo.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.pkcs; 2 3import java.util.Enumeration; 4 5import org.bouncycastle.asn1.ASN1EncodableVector; 6import org.bouncycastle.asn1.ASN1Object; 7import org.bouncycastle.asn1.ASN1OctetString; 8import org.bouncycastle.asn1.ASN1Primitive; 9import org.bouncycastle.asn1.ASN1Sequence; 10import org.bouncycastle.asn1.DEROctetString; 11import org.bouncycastle.asn1.DERSequence; 12import org.bouncycastle.asn1.x509.AlgorithmIdentifier; 13 14public class EncryptedPrivateKeyInfo 15 extends ASN1Object 16{ 17 private AlgorithmIdentifier algId; 18 private ASN1OctetString data; 19 20 private EncryptedPrivateKeyInfo( 21 ASN1Sequence seq) 22 { 23 Enumeration e = seq.getObjects(); 24 25 algId = AlgorithmIdentifier.getInstance(e.nextElement()); 26 data = ASN1OctetString.getInstance(e.nextElement()); 27 } 28 29 public EncryptedPrivateKeyInfo( 30 AlgorithmIdentifier algId, 31 byte[] encoding) 32 { 33 this.algId = algId; 34 this.data = new DEROctetString(encoding); 35 } 36 37 public static EncryptedPrivateKeyInfo getInstance( 38 Object obj) 39 { 40 // BEGIN android-changed 41 // fix copy and paste error in instanceof call 42 if (obj instanceof EncryptedPrivateKeyInfo) 43 { 44 return (EncryptedPrivateKeyInfo)obj; 45 } 46 // END android-changed 47 else if (obj != null) 48 { 49 return new EncryptedPrivateKeyInfo(ASN1Sequence.getInstance(obj)); 50 } 51 52 return null; 53 } 54 55 public AlgorithmIdentifier getEncryptionAlgorithm() 56 { 57 return algId; 58 } 59 60 public byte[] getEncryptedData() 61 { 62 return data.getOctets(); 63 } 64 65 /** 66 * Produce an object suitable for an ASN1OutputStream. 67 * <pre> 68 * EncryptedPrivateKeyInfo ::= SEQUENCE { 69 * encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}}, 70 * encryptedData EncryptedData 71 * } 72 * 73 * EncryptedData ::= OCTET STRING 74 * 75 * KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= { 76 * ... -- For local profiles 77 * } 78 * </pre> 79 */ 80 public ASN1Primitive toASN1Primitive() 81 { 82 ASN1EncodableVector v = new ASN1EncodableVector(); 83 84 v.add(algId); 85 v.add(data); 86 87 return new DERSequence(v); 88 } 89} 90