1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.wss4j.common.crypto;
21
22 import java.security.cert.X509Certificate;
23
24 import org.bouncycastle.asn1.ASN1OctetString;
25 import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
26 import org.bouncycastle.asn1.x509.SubjectKeyIdentifier;
27
28 public final class BouncyCastleUtils {
29
30 private BouncyCastleUtils() {
31
32 }
33
34 public static byte[] getAuthorityKeyIdentifierBytes(X509Certificate cert) {
35 byte[] extensionValue = cert.getExtensionValue("2.5.29.35");
36 if (extensionValue != null) {
37 byte[] octets = ASN1OctetString.getInstance(extensionValue).getOctets();
38 AuthorityKeyIdentifier authorityKeyIdentifier =
39 AuthorityKeyIdentifier.getInstance(octets);
40 return authorityKeyIdentifier.getKeyIdentifier();
41 }
42 return new byte[0];
43 }
44
45 public static byte[] getSubjectKeyIdentifierBytes(X509Certificate cert) {
46 byte[] extensionValue = cert.getExtensionValue("2.5.29.14");
47 if (extensionValue != null) {
48 byte[] subjectOctets =
49 ASN1OctetString.getInstance(extensionValue).getOctets();
50 SubjectKeyIdentifier subjectKeyIdentifier =
51 SubjectKeyIdentifier.getInstance(subjectOctets);
52 return subjectKeyIdentifier.getKeyIdentifier();
53 }
54 return new byte[0];
55 }
56
57 }
58
59