PrivateKeyInfo.java
资源名称:security.rar [点击查看]
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:
CA认证
开发平台:
Java
- package org.bouncycastle.asn1.pkcs;
- import java.io.*;
- import java.util.Enumeration;
- import java.math.BigInteger;
- import org.bouncycastle.asn1.*;
- import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
- public class PrivateKeyInfo
- implements PKCSObjectIdentifiers, DEREncodable
- {
- private DERObject privKey;
- private AlgorithmIdentifier algId;
- public PrivateKeyInfo(
- AlgorithmIdentifier algId,
- DERObject privateKey)
- {
- this.privKey = privateKey;
- this.algId = algId;
- }
- public PrivateKeyInfo(
- ASN1Sequence seq)
- {
- Enumeration e = seq.getObjects();
- BigInteger version = ((DERInteger)e.nextElement()).getValue();
- if (version.intValue() != 0)
- {
- throw new IllegalArgumentException("wrong version for private key info");
- }
- algId = new AlgorithmIdentifier((ASN1Sequence)e.nextElement());
- try
- {
- ByteArrayInputStream bIn = new ByteArrayInputStream(((ASN1OctetString)e.nextElement()).getOctets());
- DERInputStream dIn = new DERInputStream(bIn);
- privKey = dIn.readObject();
- }
- catch (IOException ex)
- {
- throw new IllegalArgumentException("Error recoverying private key from sequence");
- }
- }
- public AlgorithmIdentifier getAlgorithmId()
- {
- return algId;
- }
- public DERObject getPrivateKey()
- {
- return privKey;
- }
- /**
- * write out an RSA private key with it's asscociated information
- * as described in PKCS8.
- * <pre>
- * PrivateKeyInfo ::= SEQUENCE {
- * version Version,
- * privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
- * privateKey PrivateKey,
- * attributes [0] IMPLICIT Attributes OPTIONAL
- * }
- * Version ::= INTEGER {v1(0)} (v1,...)
- *
- * PrivateKey ::= OCTET STRING
- *
- * Attributes ::= SET OF Attribute
- * </pre>
- */
- public DERObject getDERObject()
- {
- ASN1EncodableVector v = new ASN1EncodableVector();
- v.add(new DERInteger(0));
- v.add(algId);
- v.add(new DEROctetString(privKey));
- return new DERSequence(v);
- }
- }