![JAR search and dependency download from the Maven repository](/logo.png)
nl.open.jwtdependency.org.bouncycastle.asn1.pkcs.PrivateKeyInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-jwt-nodependencies Show documentation
Show all versions of java-jwt-nodependencies Show documentation
This is a drop in replacement for the auth0 java-jwt library (see https://github.com/auth0/java-jwt). This jar makes sure there are no external dependencies (e.g. fasterXml, Apacha Commons) needed. This is useful when deploying to an application server (e.g. tomcat with Alfreso or Pega).
The newest version!
package org.bouncycastle.asn1.pkcs;
import java.io.IOException;
import java.math.BigInteger;
import java.util.Enumeration;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
public class PrivateKeyInfo
extends ASN1Object
{
private ASN1OctetString privKey;
private AlgorithmIdentifier algId;
private ASN1Set attributes;
public static PrivateKeyInfo getInstance(
ASN1TaggedObject obj,
boolean explicit)
{
return getInstance(ASN1Sequence.getInstance(obj, explicit));
}
public static PrivateKeyInfo getInstance(
Object obj)
{
if (obj instanceof PrivateKeyInfo)
{
return (PrivateKeyInfo)obj;
}
else if (obj != null)
{
return new PrivateKeyInfo(ASN1Sequence.getInstance(obj));
}
return null;
}
public PrivateKeyInfo(
AlgorithmIdentifier algId,
ASN1Encodable privateKey)
throws IOException
{
this(algId, privateKey, null);
}
public PrivateKeyInfo(
AlgorithmIdentifier algId,
ASN1Encodable privateKey,
ASN1Set attributes)
throws IOException
{
this.privKey = new DEROctetString(privateKey.toASN1Primitive().getEncoded(ASN1Encoding.DER));
this.algId = algId;
this.attributes = attributes;
}
/**
* @deprecated use PrivateKeyInfo.getInstance()
* @param seq
*/
public PrivateKeyInfo(
ASN1Sequence seq)
{
Enumeration e = seq.getObjects();
BigInteger version = ((ASN1Integer)e.nextElement()).getValue();
if (version.intValue() != 0)
{
throw new IllegalArgumentException("wrong version for private key info");
}
algId = AlgorithmIdentifier.getInstance(e.nextElement());
privKey = ASN1OctetString.getInstance(e.nextElement());
if (e.hasMoreElements())
{
attributes = ASN1Set.getInstance((ASN1TaggedObject)e.nextElement(), false);
}
}
public AlgorithmIdentifier getPrivateKeyAlgorithm()
{
return algId;
}
/**
* @deprecated use getPrivateKeyAlgorithm()
*/
public AlgorithmIdentifier getAlgorithmId()
{
return algId;
}
public ASN1Encodable parsePrivateKey()
throws IOException
{
return ASN1Primitive.fromByteArray(privKey.getOctets());
}
/**
* @deprecated use parsePrivateKey()
*/
public ASN1Primitive getPrivateKey()
{
try
{
return parsePrivateKey().toASN1Primitive();
}
catch (IOException e)
{
throw new IllegalStateException("unable to parse private key");
}
}
public ASN1Set getAttributes()
{
return attributes;
}
/**
* write out an RSA private key with its associated information
* as described in PKCS8.
*
* 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
*
*/
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(new ASN1Integer(0));
v.add(algId);
v.add(privKey);
if (attributes != null)
{
v.add(new DERTaggedObject(false, 0, attributes));
}
return new DERSequence(v);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy