org.bouncycastle.asn1.pkcs.Pfx Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk15to18 Show documentation
Show all versions of bcprov-jdk15to18 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
package org.bouncycastle.asn1.pkcs;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.BERSequence;
/**
* the infamous Pfx from PKCS12
*/
public class Pfx
extends ASN1Object
implements PKCSObjectIdentifiers
{
private ContentInfo contentInfo;
private MacData macData = null;
private Pfx(
ASN1Sequence seq)
{
ASN1Integer version = ASN1Integer.getInstance(seq.getObjectAt(0));
if (!version.hasValue(3))
{
throw new IllegalArgumentException("wrong version for PFX PDU");
}
contentInfo = ContentInfo.getInstance(seq.getObjectAt(1));
if (seq.size() == 3)
{
macData = MacData.getInstance(seq.getObjectAt(2));
}
}
public static Pfx getInstance(
Object obj)
{
if (obj instanceof Pfx)
{
return (Pfx)obj;
}
if (obj != null)
{
return new Pfx(ASN1Sequence.getInstance(obj));
}
return null;
}
public Pfx(
ContentInfo contentInfo,
MacData macData)
{
this.contentInfo = contentInfo;
this.macData = macData;
}
public ContentInfo getAuthSafe()
{
return contentInfo;
}
public MacData getMacData()
{
return macData;
}
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector(3);
v.add(new ASN1Integer(3));
v.add(contentInfo);
if (macData != null)
{
v.add(macData);
}
return new BERSequence(v);
}
}