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-fips Show documentation
Show all versions of bcpkix-fips Show documentation
The Bouncy Castle Java APIs for CMS, PKCS, EAC, TSP, CMP, CRMF, OCSP, and certificate generation. The APIs are designed primarily to be used in conjunction with the BC FIPS provider. The APIs may also be used with other providers although if being used in a FIPS context it is the responsibility of the user to ensure that any other providers used are FIPS certified.
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.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