97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
-
+
+
+
+
|
char issuer[BUFSIZ];
char serial[BUFSIZ];
char notBefore[BUFSIZ];
char notAfter[BUFSIZ];
char certStr[BUFSIZ];
#ifndef NO_SSL_SHA
int shai;
char sha_hash[SHA_DIGEST_LENGTH*2];
char sha_hash_ascii[SHA_DIGEST_LENGTH * 2 + 1];
unsigned char sha_hash_binary[SHA_DIGEST_LENGTH];
const char *shachars="0123456789ABCDEF";
sha_hash_ascii[SHA_DIGEST_LENGTH * 2] = '\0';
#endif
certStr[0] = 0;
if ((bio = BIO_new(BIO_s_mem())) == NULL) {
subject[0] = 0;
issuer[0] = 0;
serial[0] = 0;
|
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
+
-
+
-
-
-
+
+
-
+
-
-
+
-
|
BIO_free(bio);
}
strcpy( notBefore, ASN1_UTCTIME_tostr( X509_get_notBefore(cert) ));
strcpy( notAfter, ASN1_UTCTIME_tostr( X509_get_notAfter(cert) ));
#ifndef NO_SSL_SHA
X509_digest(cert, EVP_sha1(), sha_hash_binary, NULL);
for (shai=0;shai<SHA_DIGEST_LENGTH;shai++)
for (shai = 0; shai < SHA_DIGEST_LENGTH; shai++) {
{
sha_hash[shai * 2]=shachars[(cert->sha1_hash[shai] & 0xF0) >> 4];
sha_hash[shai * 2 + 1]=shachars[(cert->sha1_hash[shai] & 0x0F)];
sha_hash_ascii[shai * 2] = shachars[(sha_hash_binary[shai] & 0xF0) >> 4];
sha_hash_ascii[shai * 2 + 1] = shachars[(sha_hash_binary[shai] & 0x0F)];
}
Tcl_ListObjAppendElement( interp, certPtr,
Tcl_ListObjAppendElement( interp, certPtr, Tcl_NewStringObj("sha1_hash", -1) );
Tcl_NewStringObj( "sha1_hash", -1) );
Tcl_ListObjAppendElement( interp, certPtr,
Tcl_ListObjAppendElement( interp, certPtr, Tcl_NewStringObj(sha_hash_ascii, SHA_DIGEST_LENGTH * 2) );
Tcl_NewStringObj( sha_hash, SHA_DIGEST_LENGTH*2) );
#endif
Tcl_ListObjAppendElement( interp, certPtr,
Tcl_NewStringObj( "subject", -1) );
Tcl_ListObjAppendElement( interp, certPtr,
Tcl_NewStringObj( subject, -1) );
|