11
11
import de .rub .nds .tlsattacker .core .constants .HashAlgorithm ;
12
12
import de .rub .nds .tlsattacker .core .constants .SignatureAlgorithm ;
13
13
import de .rub .nds .tlsattacker .core .constants .SignatureAndHashAlgorithm ;
14
+ import java .io .IOException ;
15
+ import java .security .MessageDigest ;
16
+ import java .security .NoSuchAlgorithmException ;
14
17
import java .security .cert .CertificateParsingException ;
15
18
import java .security .cert .X509Certificate ;
16
19
import java .util .LinkedList ;
17
20
import java .util .List ;
21
+ import javax .xml .bind .DatatypeConverter ;
18
22
import org .apache .logging .log4j .LogManager ;
19
23
import org .apache .logging .log4j .Logger ;
20
24
import org .bouncycastle .asn1 .x500 .RDN ;
29
33
* @author Robert Merget - [email protected]
30
34
*/
31
35
public class CertificateReportGenerator {
32
-
36
+
33
37
private static final Logger LOGGER = LogManager .getLogger (CertificateReportGenerator .class .getName ());
34
-
38
+
35
39
public static List <CertificateReport > generateReports (Certificate certs ) {
36
40
List <CertificateReport > reportList = new LinkedList <>();
37
41
if (certs != null ) {
@@ -41,7 +45,7 @@ public static List<CertificateReport> generateReports(Certificate certs) {
41
45
}
42
46
return reportList ;
43
47
}
44
-
48
+
45
49
public static CertificateReport generateReport (org .bouncycastle .asn1 .x509 .Certificate cert ) {
46
50
CertificateReportImplementation report = new CertificateReportImplementation ();
47
51
setSubject (report , cert );
@@ -61,36 +65,37 @@ public static CertificateReport generateReport(org.bouncycastle.asn1.x509.Certif
61
65
setRevoked (report , cert );
62
66
setDnsCCA (report , cert );
63
67
setTrusted (report , cert );
68
+ setSha256Hash (report , cert );
64
69
report .setCertificate (cert );
65
70
return report ;
66
71
}
67
-
72
+
68
73
private static void setSubject (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
69
74
X500Name x500name = cert .getSubject ();
70
75
RDN cn = x500name .getRDNs (BCStyle .CN )[0 ];
71
76
report .setCommonNames (IETFUtils .valueToString (cn .getFirst ().getValue ()));
72
77
}
73
-
78
+
74
79
private static void setCommonNames (CertificateReportImplementation report ,
75
80
org .bouncycastle .asn1 .x509 .Certificate cert ) {
76
81
X500Name x500name = cert .getSubject ();
77
82
RDN cn = x500name .getRDNs (BCStyle .CN )[0 ];
78
83
report .setCommonNames (IETFUtils .valueToString (cn .getFirst ().getValue ()));
79
84
}
80
-
85
+
81
86
private static void setAlternativeNames (CertificateReportImplementation report ,
82
87
org .bouncycastle .asn1 .x509 .Certificate cert ) {
83
-
88
+
84
89
}
85
-
90
+
86
91
private static void setValidFrom (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
87
92
report .setValidFrom (cert .getStartDate ().getDate ());
88
93
}
89
-
94
+
90
95
private static void setValidTo (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
91
96
report .setValidTo (cert .getEndDate ().getDate ());
92
97
}
93
-
98
+
94
99
private static void setPubkey (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
95
100
try {
96
101
X509Certificate x509Cert = new X509CertificateObject (cert );
@@ -99,15 +104,15 @@ private static void setPubkey(CertificateReportImplementation report, org.bouncy
99
104
// TODO log could not set public key
100
105
}
101
106
}
102
-
107
+
103
108
private static void setWeakDebianKey (CertificateReportImplementation report ,
104
109
org .bouncycastle .asn1 .x509 .Certificate cert ) {
105
110
}
106
-
111
+
107
112
private static void setIssuer (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
108
113
report .setIssuer (cert .getIssuer ().toString ());
109
114
}
110
-
115
+
111
116
private static void setSignatureAndHashAlgorithm (CertificateReportImplementation report ,
112
117
org .bouncycastle .asn1 .x509 .Certificate cert ) {
113
118
String sigAndHashString = null ;
@@ -129,34 +134,43 @@ private static void setSignatureAndHashAlgorithm(CertificateReportImplementation
129
134
LOGGER .debug ("Could not extraxt SignatureAndHashAlgorithm from String:" + sigAndHashString , E );
130
135
}
131
136
}
132
-
137
+
133
138
private static void setExtendedValidation (CertificateReportImplementation report ,
134
139
org .bouncycastle .asn1 .x509 .Certificate cert ) {
135
-
140
+
136
141
}
137
-
142
+
138
143
private static void setCeritifcateTransparency (CertificateReportImplementation report ,
139
144
org .bouncycastle .asn1 .x509 .Certificate cert ) {
140
145
}
141
-
146
+
142
147
private static void setOcspMustStaple (CertificateReportImplementation report ,
143
148
org .bouncycastle .asn1 .x509 .Certificate cert ) {
144
149
}
145
-
150
+
146
151
private static void setCRLSupported (CertificateReportImplementation report ,
147
152
org .bouncycastle .asn1 .x509 .Certificate cert ) {
148
153
}
149
-
154
+
150
155
private static void setOcspSupported (CertificateReportImplementation report ,
151
156
org .bouncycastle .asn1 .x509 .Certificate cert ) {
152
157
}
153
-
158
+
154
159
private static void setRevoked (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
155
160
}
156
-
161
+
157
162
private static void setDnsCCA (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
158
163
}
159
-
164
+
160
165
private static void setTrusted (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
161
166
}
167
+
168
+ private static void setSha256Hash (CertificateReportImplementation report , org .bouncycastle .asn1 .x509 .Certificate cert ) {
169
+ try {
170
+ report .setSha256FingerprintHex (DatatypeConverter .printHexBinary (
171
+ MessageDigest .getInstance ("SHA-256" ).digest (cert .getEncoded ())).toLowerCase ());
172
+ } catch (IOException | NoSuchAlgorithmException e ) {
173
+ LOGGER .warn ("Could not create SHA-256 Hash" , e );
174
+ }
175
+ }
162
176
}
0 commit comments