1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1.pkcs; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.util.Enumeration; 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1EncodableVector; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1OctetString; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Sequence; 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DEROctetString; 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERSequence; 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.x509.AlgorithmIdentifier; 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class EncryptedPrivateKeyInfo 154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam private AlgorithmIdentifier algId; 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam private ASN1OctetString data; 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private EncryptedPrivateKeyInfo( 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Sequence seq) 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e = seq.getObjects(); 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam algId = AlgorithmIdentifier.getInstance(e.nextElement()); 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom data = ASN1OctetString.getInstance(e.nextElement()); 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public EncryptedPrivateKeyInfo( 30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam AlgorithmIdentifier algId, 31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam byte[] encoding) 32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this.algId = algId; 34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this.data = new DEROctetString(encoding); 35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static EncryptedPrivateKeyInfo getInstance( 38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Object obj) 39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 401db2c7981937d5dbd739d1b6dd0199b6f0dd1ed6Jesse Wilson if (obj instanceof EncryptedPrivateKeyInfo) 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return (EncryptedPrivateKeyInfo)obj; 43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom else if (obj != null) 45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return new EncryptedPrivateKeyInfo(ASN1Sequence.getInstance(obj)); 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return null; 50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public AlgorithmIdentifier getEncryptionAlgorithm() 53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return algId; 55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public byte[] getEncryptedData() 58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return data.getOctets(); 60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 61b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Produce an object suitable for an ASN1OutputStream. 64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <pre> 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * EncryptedPrivateKeyInfo ::= SEQUENCE { 66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}}, 67b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * encryptedData EncryptedData 68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * } 69b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 70b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * EncryptedData ::= OCTET STRING 71b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 72b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= { 73b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * ... -- For local profiles 74b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * } 75b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * </pre> 76b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 78b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 79b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1EncodableVector v = new ASN1EncodableVector(); 80b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 81b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(algId); 82b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(data); 83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 84b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new DERSequence(v); 85b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 86b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 87