@@ -1812,6 +1812,25 @@ static bool SafeX509ExtPrint(BIO* out, X509_EXTENSION* ext) {
1812
1812
}
1813
1813
1814
1814
1815
+ static void AddFingerprintDigest (const unsigned char * md,
1816
+ unsigned int md_size,
1817
+ char (*fingerprint)[3 * EVP_MAX_MD_SIZE + 1 ]) {
1818
+ unsigned int i;
1819
+ const char hex[] = " 0123456789ABCDEF" ;
1820
+
1821
+ for (i = 0 ; i < md_size; i++) {
1822
+ (*fingerprint)[3 *i] = hex[(md[i] & 0xf0 ) >> 4 ];
1823
+ (*fingerprint)[(3 *i)+1 ] = hex[(md[i] & 0x0f )];
1824
+ (*fingerprint)[(3 *i)+2 ] = ' :' ;
1825
+ }
1826
+
1827
+ if (md_size > 0 ) {
1828
+ (*fingerprint)[(3 *(md_size-1 ))+2 ] = ' \0 ' ;
1829
+ } else {
1830
+ (*fingerprint)[0 ] = ' \0 ' ;
1831
+ }
1832
+ }
1833
+
1815
1834
static Local<Object> X509ToObject (Environment* env, X509* cert) {
1816
1835
EscapableHandleScope scope (env->isolate ());
1817
1836
Local<Context> context = env->context ();
@@ -1928,26 +1947,18 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1928
1947
mem->length )).FromJust ();
1929
1948
BIO_free_all (bio);
1930
1949
1931
- unsigned int md_size, i;
1932
1950
unsigned char md[EVP_MAX_MD_SIZE];
1951
+ unsigned int md_size;
1952
+ char fingerprint[EVP_MAX_MD_SIZE * 3 + 1 ];
1933
1953
if (X509_digest (cert, EVP_sha1 (), md, &md_size)) {
1934
- const char hex[] = " 0123456789ABCDEF" ;
1935
- char fingerprint[EVP_MAX_MD_SIZE * 3 ];
1936
-
1937
- for (i = 0 ; i < md_size; i++) {
1938
- fingerprint[3 *i] = hex[(md[i] & 0xf0 ) >> 4 ];
1939
- fingerprint[(3 *i)+1 ] = hex[(md[i] & 0x0f )];
1940
- fingerprint[(3 *i)+2 ] = ' :' ;
1941
- }
1942
-
1943
- if (md_size > 0 ) {
1944
- fingerprint[(3 *(md_size-1 ))+2 ] = ' \0 ' ;
1945
- } else {
1946
- fingerprint[0 ] = ' \0 ' ;
1947
- }
1948
-
1949
- info->Set (context, env->fingerprint_string (),
1950
- OneByteString (env->isolate (), fingerprint)).FromJust ();
1954
+ AddFingerprintDigest (md, md_size, &fingerprint);
1955
+ info->Set (context, env->fingerprint_string (),
1956
+ OneByteString (env->isolate (), fingerprint)).FromJust ();
1957
+ }
1958
+ if (X509_digest (cert, EVP_sha256 (), md, &md_size)) {
1959
+ AddFingerprintDigest (md, md_size, &fingerprint);
1960
+ info->Set (context, env->fingerprint256_string (),
1961
+ OneByteString (env->isolate (), fingerprint)).FromJust ();
1951
1962
}
1952
1963
1953
1964
STACK_OF (ASN1_OBJECT)* eku = static_cast <STACK_OF (ASN1_OBJECT)*>(
0 commit comments