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