aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/prov/src/main/java/org/spongycastle/ocsp/RespID.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/prov/src/main/java/org/spongycastle/ocsp/RespID.java')
-rw-r--r--libraries/spongycastle/prov/src/main/java/org/spongycastle/ocsp/RespID.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/libraries/spongycastle/prov/src/main/java/org/spongycastle/ocsp/RespID.java b/libraries/spongycastle/prov/src/main/java/org/spongycastle/ocsp/RespID.java
new file mode 100644
index 000000000..18c471886
--- /dev/null
+++ b/libraries/spongycastle/prov/src/main/java/org/spongycastle/ocsp/RespID.java
@@ -0,0 +1,80 @@
+package org.spongycastle.ocsp;
+
+import java.security.MessageDigest;
+import java.security.PublicKey;
+
+import javax.security.auth.x500.X500Principal;
+
+import org.spongycastle.asn1.ASN1InputStream;
+import org.spongycastle.asn1.ASN1OctetString;
+import org.spongycastle.asn1.DEROctetString;
+import org.spongycastle.asn1.ocsp.ResponderID;
+import org.spongycastle.asn1.x500.X500Name;
+import org.spongycastle.asn1.x509.SubjectPublicKeyInfo;
+
+/**
+ * Carrier for a ResponderID.
+ */
+public class RespID
+{
+ ResponderID id;
+
+ public RespID(
+ ResponderID id)
+ {
+ this.id = id;
+ }
+
+ public RespID(
+ X500Principal name)
+ {
+ this.id = new ResponderID(X500Name.getInstance(name.getEncoded()));
+ }
+
+ public RespID(
+ PublicKey key)
+ throws OCSPException
+ {
+ try
+ {
+ // TODO Allow specification of a particular provider
+ MessageDigest digest = OCSPUtil.createDigestInstance("SHA1", null);
+
+ ASN1InputStream aIn = new ASN1InputStream(key.getEncoded());
+ SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(aIn.readObject());
+
+ digest.update(info.getPublicKeyData().getBytes());
+
+ ASN1OctetString keyHash = new DEROctetString(digest.digest());
+
+ this.id = new ResponderID(keyHash);
+ }
+ catch (Exception e)
+ {
+ throw new OCSPException("problem creating ID: " + e, e);
+ }
+ }
+
+ public ResponderID toASN1Object()
+ {
+ 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();
+ }
+}