org.bouncycastle.est.CSRAttributesResponse Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcpkix-jdk15on Show documentation
Show all versions of bcpkix-jdk15on Show documentation
The Bouncy Castle Java APIs for CMS, PKCS, EAC, TSP, CMP, CRMF, OCSP, and certificate generation. This jar contains APIs for JDK 1.5 to JDK 1.8. The APIs can be used in conjunction with a JCE/JCA provider such as the one provided with the Bouncy Castle Cryptography APIs.
package org.bouncycastle.est;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.est.AttrOrOID;
import org.bouncycastle.asn1.est.CsrAttrs;
import org.bouncycastle.util.Encodable;
/**
* Wrapper class around a CsrAttrs structure.
*/
public class CSRAttributesResponse
implements Encodable
{
private final CsrAttrs csrAttrs;
private final HashMap index;
/**
* Create a CSRAttributesResponse from the passed in bytes.
*
* @param responseEncoding BER/DER encoding of the certificate.
* @throws ESTException in the event of corrupted data, or an incorrect structure.
*/
public CSRAttributesResponse(byte[] responseEncoding)
throws ESTException
{
this(parseBytes(responseEncoding));
}
/**
* Create a CSRAttributesResponse from the passed in ASN.1 structure.
*
* @param csrAttrs an RFC 7030 CsrAttrs structure.
*/
public CSRAttributesResponse(CsrAttrs csrAttrs)
throws ESTException
{
this.csrAttrs = csrAttrs;
this.index = new HashMap(csrAttrs.size());
AttrOrOID[] attrOrOIDs = csrAttrs.getAttrOrOIDs();
for (int i = 0; i != attrOrOIDs.length; i++)
{
AttrOrOID attrOrOID = attrOrOIDs[i];
if (attrOrOID.isOid())
{
index.put(attrOrOID.getOid(), attrOrOID);
}
else
{
index.put(attrOrOID.getAttribute().getAttrType(), attrOrOID);
}
}
}
private static CsrAttrs parseBytes(byte[] responseEncoding)
throws ESTException
{
try
{
return CsrAttrs.getInstance(ASN1Primitive.fromByteArray(responseEncoding));
}
catch (Exception e)
{
throw new ESTException("malformed data: " + e.getMessage(), e);
}
}
public boolean hasRequirement(ASN1ObjectIdentifier requirementOid)
{
return index.containsKey(requirementOid);
}
public boolean isAttribute(ASN1ObjectIdentifier requirementOid)
{
if (index.containsKey(requirementOid))
{
return !(((AttrOrOID)index.get(requirementOid)).isOid());
}
return false;
}
public boolean isEmpty()
{
return csrAttrs.size() == 0;
}
public Collection getRequirements()
{
return index.keySet();
}
public byte[] getEncoded()
throws IOException
{
return csrAttrs.getEncoded();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy