diff options
Diffstat (limited to 'libraries/spongycastle/prov/src/main/java/org/spongycastle/x509/extension/SubjectKeyIdentifierStructure.java')
-rw-r--r-- | libraries/spongycastle/prov/src/main/java/org/spongycastle/x509/extension/SubjectKeyIdentifierStructure.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libraries/spongycastle/prov/src/main/java/org/spongycastle/x509/extension/SubjectKeyIdentifierStructure.java b/libraries/spongycastle/prov/src/main/java/org/spongycastle/x509/extension/SubjectKeyIdentifierStructure.java new file mode 100644 index 000000000..bf85ab02f --- /dev/null +++ b/libraries/spongycastle/prov/src/main/java/org/spongycastle/x509/extension/SubjectKeyIdentifierStructure.java @@ -0,0 +1,53 @@ +package org.spongycastle.x509.extension; + +import java.io.IOException; +import java.security.InvalidKeyException; +import java.security.PublicKey; + +import org.spongycastle.asn1.ASN1OctetString; +import org.spongycastle.asn1.x509.SubjectKeyIdentifier; +import org.spongycastle.asn1.x509.SubjectPublicKeyInfo; + +/** + * A high level subject key identifier. + * @deprecated use JcaX509ExtensionUtils andSubjectKeyIdentifier.getInstance() + */ +public class SubjectKeyIdentifierStructure + extends SubjectKeyIdentifier +{ + /** + * Constructor which will take the byte[] returned from getExtensionValue() + * + * @param encodedValue a DER octet encoded string with the extension structure in it. + * @throws IOException on parsing errors. + */ + public SubjectKeyIdentifierStructure( + byte[] encodedValue) + throws IOException + { + super((ASN1OctetString)X509ExtensionUtil.fromExtensionValue(encodedValue)); + } + + private static ASN1OctetString fromPublicKey( + PublicKey pubKey) + throws InvalidKeyException + { + try + { + SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(pubKey.getEncoded()); + + return (ASN1OctetString)(new SubjectKeyIdentifier(info).toASN1Object()); + } + catch (Exception e) + { + throw new InvalidKeyException("Exception extracting key details: " + e.toString()); + } + } + + public SubjectKeyIdentifierStructure( + PublicKey pubKey) + throws InvalidKeyException + { + super(fromPublicKey(pubKey)); + } +} |