package org.bouncycastle.cert.ocsp;

import java.io.OutputStream;

import org.bouncycastle.asn1.DERNull;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.ocsp.ResponderID;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.operator.DigestCalculator;

Carrier for a ResponderID.
/** * Carrier for a ResponderID. */
public class RespID { public static final AlgorithmIdentifier HASH_SHA1 = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE); ResponderID id; public RespID( ResponderID id) { this.id = id; } public RespID( X500Name name) { this.id = new ResponderID(name); }
Calculate a RespID based on the public key of the responder.
Params:
  • subjectPublicKeyInfo – the info structure for the responder public key.
  • digCalc – a SHA-1 digest calculator.
Throws:
/** * Calculate a RespID based on the public key of the responder. * * @param subjectPublicKeyInfo the info structure for the responder public key. * @param digCalc a SHA-1 digest calculator. * @throws OCSPException on exception creating ID. */
public RespID( SubjectPublicKeyInfo subjectPublicKeyInfo, DigestCalculator digCalc) throws OCSPException { try { if (!digCalc.getAlgorithmIdentifier().equals(HASH_SHA1)) { throw new IllegalArgumentException("only SHA-1 can be used with RespID - found: " + digCalc.getAlgorithmIdentifier().getAlgorithm()); } OutputStream digOut = digCalc.getOutputStream(); digOut.write(subjectPublicKeyInfo.getPublicKeyData().getBytes()); digOut.close(); this.id = new ResponderID(new DEROctetString(digCalc.getDigest())); } catch (Exception e) { throw new OCSPException("problem creating ID: " + e, e); } } public ResponderID toASN1Primitive() { return id; } public boolean equals( Object o) { if (!(o instanceof RespID)) { return false; } RespID obj = (RespID)o; return id.equals(obj.id); } public int hashCode() { return id.hashCode(); } }