1 package org.bouncycastle.asn1.bc;
2 
3 import org.bouncycastle.asn1.ASN1EncodableVector;
4 import org.bouncycastle.asn1.ASN1Object;
5 import org.bouncycastle.asn1.ASN1OctetString;
6 import org.bouncycastle.asn1.ASN1Primitive;
7 import org.bouncycastle.asn1.ASN1Sequence;
8 import org.bouncycastle.asn1.DEROctetString;
9 import org.bouncycastle.asn1.DERSequence;
10 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
11 import org.bouncycastle.util.Arrays;
12 
13 /**
14  * <pre>
15  *     EncryptedSecretKeyData ::= SEQUENCE {
16  *         keyEncryptionAlgorithm AlgorithmIdentifier,
17  *         encryptedKeyData OCTET STRING
18  *     }
19  * </pre>
20  */
21 public class EncryptedSecretKeyData
22     extends ASN1Object
23 {
24     private final AlgorithmIdentifier keyEncryptionAlgorithm;
25     private final ASN1OctetString encryptedKeyData;
26 
EncryptedSecretKeyData(AlgorithmIdentifier keyEncryptionAlgorithm, byte[] encryptedKeyData)27     public EncryptedSecretKeyData(AlgorithmIdentifier keyEncryptionAlgorithm, byte[] encryptedKeyData)
28     {
29         this.keyEncryptionAlgorithm = keyEncryptionAlgorithm;
30         this.encryptedKeyData = new DEROctetString(Arrays.clone(encryptedKeyData));
31     }
32 
EncryptedSecretKeyData(ASN1Sequence seq)33     private EncryptedSecretKeyData(ASN1Sequence seq)
34     {
35         this.keyEncryptionAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(0));
36         this.encryptedKeyData = ASN1OctetString.getInstance(seq.getObjectAt(1));
37     }
38 
getInstance(Object o)39     public static EncryptedSecretKeyData getInstance(Object o)
40     {
41         if (o instanceof EncryptedSecretKeyData)
42         {
43             return (EncryptedSecretKeyData)o;
44         }
45         else if (o != null)
46         {
47             return new EncryptedSecretKeyData(ASN1Sequence.getInstance(o));
48         }
49 
50         return null;
51     }
52 
53 
getKeyEncryptionAlgorithm()54     public AlgorithmIdentifier getKeyEncryptionAlgorithm()
55     {
56         return keyEncryptionAlgorithm;
57     }
58 
getEncryptedKeyData()59     public byte[] getEncryptedKeyData()
60     {
61         return Arrays.clone(encryptedKeyData.getOctets());
62     }
63 
toASN1Primitive()64     public ASN1Primitive toASN1Primitive()
65     {
66         ASN1EncodableVector v = new ASN1EncodableVector(2);
67 
68         v.add(keyEncryptionAlgorithm);
69         v.add(encryptedKeyData);
70 
71         return new DERSequence(v);
72     }
73 }
74