Artifact
0edacaae407f2576ce8c96d6f4aef186f9843b3542473b19d74b50f6e866f2b0:
Ticket change
[0edacaae40]
- New ticket
[c2f2f1be542937dc|c2f2f1be54] <i>Expose SHA-256 fingerprint of certificate</i>.
by
anonymous on
2020-02-12 13:30:14.
0000: 44 20 32 30 32 30 2d 30 32 2d 31 32 54 31 33 3a D 2020-02-12T13:
0010: 33 30 3a 31 34 2e 36 37 32 0a 4a 20 69 63 6f 6d 30:14.672.J icom
0020: 6d 65 6e 74 20 54 63 6c 54 4c 53 5c 73 61 6c 72 ment TclTLS\salr
0030: 65 61 64 79 5c 73 70 72 6f 76 69 64 65 73 5c 73 eady\sprovides\s
0040: 61 5c 73 77 61 79 5c 73 74 6f 5c 73 61 63 63 65 a\sway\sto\sacce
0050: 73 73 5c 73 61 5c 73 63 65 72 74 69 66 69 63 61 ss\sa\scertifica
0060: 74 65 27 73 5c 73 53 48 41 2d 31 5c 73 66 69 6e te's\sSHA-1\sfin
0070: 67 65 72 70 72 69 6e 74 2e 5c 73 49 74 5c 73 77 gerprint.\sIt\sw
0080: 6f 75 6c 64 5c 73 62 65 5c 73 68 65 6c 70 66 75 ould\sbe\shelpfu
0090: 6c 5c 73 69 66 5c 73 74 68 65 5c 73 73 61 6d 65 l\sif\sthe\ssame
00a0: 5c 73 63 6f 75 6c 64 5c 73 62 65 5c 73 64 6f 6e \scould\sbe\sdon
00b0: 65 5c 73 66 6f 72 5c 73 53 48 41 2d 32 35 36 2c e\sfor\sSHA-256,
00c0: 5c 73 66 6f 72 5c 73 65 78 61 6d 70 6c 65 5c 73 \sfor\sexample\s
00d0: 6c 69 6b 65 5c 73 74 68 69 73 3a 5c 72 5c 6e 5c like\sthis:\r\n\
00e0: 72 5c 6e 3c 70 72 65 3e 49 6e 64 65 78 3a 5c 73 r\n<pre>Index:\s
00f0: 74 6c 73 58 35 30 39 2e 63 5c 72 5c 6e 3d 3d 3d tlsX509.c\r\n===
0100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0130: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c ===============\
0140: 72 5c 6e 2d 2d 2d 5c 73 74 6c 73 58 35 30 39 2e r\n---\stlsX509.
0150: 63 5c 72 5c 6e 2b 2b 2b 5c 73 74 6c 73 58 35 30 c\r\n+++\stlsX50
0160: 39 2e 63 5c 72 5c 6e 40 40 5c 73 2d 31 30 33 2c 9.c\r\n@@\s-103,
0170: 31 34 5c 73 2b 31 30 33 2c 31 37 5c 73 40 40 5c 14\s+103,17\s@@\
0180: 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 63 68 61 r\n\s\s\s\s\scha
0190: 72 5c 73 63 65 72 74 53 74 72 5b 43 45 52 54 5f r\scertStr[CERT_
01a0: 53 54 52 5f 53 49 5a 45 5d 2c 5c 73 2a 63 65 72 STR_SIZE],\s*cer
01b0: 74 53 74 72 5f 70 3b 5c 72 5c 6e 5c 73 5c 73 5c tStr_p;\r\n\s\s\
01c0: 73 5c 73 5c 73 69 6e 74 5c 73 63 65 72 74 53 74 s\s\sint\scertSt
01d0: 72 5f 6c 65 6e 2c 5c 73 74 6f 52 65 61 64 3b 5c r_len,\stoRead;\
01e0: 72 5c 6e 5c 73 23 69 66 6e 64 65 66 5c 73 4e 4f r\n\s#ifndef\sNO
01f0: 5f 53 53 4c 5f 53 48 41 5c 72 5c 6e 5c 73 5c 73 _SSL_SHA\r\n\s\s
0200: 5c 73 5c 73 5c 73 69 6e 74 5c 73 73 68 61 69 3b \s\s\sint\sshai;
0210: 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 63 68 \r\n\s\s\s\s\sch
0220: 61 72 5c 73 73 68 61 5f 68 61 73 68 5f 61 73 63 ar\ssha_hash_asc
0230: 69 69 5b 53 48 41 5f 44 49 47 45 53 54 5f 4c 45 ii[SHA_DIGEST_LE
0240: 4e 47 54 48 5c 73 2a 5c 73 32 5c 73 2b 5c 73 31 NGTH\s*\s2\s+\s1
0250: 5d 3b 5c 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 63 ];\r\n+\s\s\s\sc
0260: 68 61 72 5c 73 73 68 61 32 35 36 5f 68 61 73 68 har\ssha256_hash
0270: 5f 61 73 63 69 69 5b 53 48 41 32 35 36 5f 44 49 _ascii[SHA256_DI
0280: 47 45 53 54 5f 4c 45 4e 47 54 48 5c 73 2a 5c 73 GEST_LENGTH\s*\s
0290: 32 5c 73 2b 5c 73 31 5d 3b 5c 72 5c 6e 5c 73 5c 2\s+\s1];\r\n\s\
02a0: 73 5c 73 5c 73 5c 73 75 6e 73 69 67 6e 65 64 5c s\s\s\sunsigned\
02b0: 73 63 68 61 72 5c 73 73 68 61 5f 68 61 73 68 5f schar\ssha_hash_
02c0: 62 69 6e 61 72 79 5b 53 48 41 5f 44 49 47 45 53 binary[SHA_DIGES
02d0: 54 5f 4c 45 4e 47 54 48 5d 3b 5c 72 5c 6e 2b 5c T_LENGTH];\r\n+\
02e0: 73 5c 73 5c 73 5c 73 75 6e 73 69 67 6e 65 64 5c s\s\s\sunsigned\
02f0: 73 63 68 61 72 5c 73 73 68 61 32 35 36 5f 68 61 schar\ssha256_ha
0300: 73 68 5f 62 69 6e 61 72 79 5b 53 48 41 32 35 36 sh_binary[SHA256
0310: 5f 44 49 47 45 53 54 5f 4c 45 4e 47 54 48 5d 3b _DIGEST_LENGTH];
0320: 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 63 6f \r\n\s\s\s\s\sco
0330: 6e 73 74 5c 73 63 68 61 72 5c 73 2a 73 68 61 63 nst\schar\s*shac
0340: 68 61 72 73 3d 22 30 31 32 33 34 35 36 37 38 39 hars="0123456789
0350: 41 42 43 44 45 46 22 3b 5c 72 5c 6e 5c 73 5c 72 ABCDEF";\r\n\s\r
0360: 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 73 68 61 5f \n\s\s\s\s\ssha_
0370: 68 61 73 68 5f 61 73 63 69 69 5b 53 48 41 5f 44 hash_ascii[SHA_D
0380: 49 47 45 53 54 5f 4c 45 4e 47 54 48 5c 73 2a 5c IGEST_LENGTH\s*\
0390: 73 32 5d 5c 73 3d 5c 73 27 5c 5c 30 27 3b 5c 72 s2]\s=\s'\\0';\r
03a0: 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 73 68 61 32 35 \n+\s\s\s\ssha25
03b0: 36 5f 68 61 73 68 5f 61 73 63 69 69 5b 53 48 41 6_hash_ascii[SHA
03c0: 32 35 36 5f 44 49 47 45 53 54 5f 4c 45 4e 47 54 256_DIGEST_LENGT
03d0: 48 5c 73 2a 5c 73 32 5d 5c 73 3d 5c 73 27 5c 5c H\s*\s2]\s=\s'\\
03e0: 30 27 3b 5c 72 5c 6e 5c 73 23 65 6e 64 69 66 5c 0';\r\n\s#endif\
03f0: 72 5c 6e 5c 73 5c 72 5c 6e 5c 73 5c 73 5c 73 5c r\n\s\r\n\s\s\s\
0400: 73 5c 73 63 65 72 74 53 74 72 5b 30 5d 5c 73 3d s\scertStr[0]\s=
0410: 5c 73 30 3b 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 \s0;\r\n\s\s\s\s
0420: 5c 73 69 66 5c 73 28 28 62 69 6f 5c 73 3d 5c 73 \sif\s((bio\s=\s
0430: 42 49 4f 5f 6e 65 77 28 42 49 4f 5f 73 5f 6d 65 BIO_new(BIO_s_me
0440: 6d 28 29 29 29 5c 73 3d 3d 5c 73 4e 55 4c 4c 29 m()))\s==\sNULL)
0450: 5c 73 7b 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c \s{\r\n\s\s\s\s\
0460: 73 5c 73 5c 73 5c 73 73 75 62 6a 65 63 74 5b 30 s\s\s\ssubject[0
0470: 5d 5c 73 3d 5c 73 30 3b 5c 72 5c 6e 40 40 5c 73 ]\s=\s0;\r\n@@\s
0480: 2d 31 37 32 2c 31 30 5c 73 2b 31 37 35 2c 31 38 -172,10\s+175,18
0490: 5c 73 40 40 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 \s@@\r\n\s\s\s\s
04a0: 5c 73 5c 73 5c 73 5c 73 5c 73 73 68 61 5f 68 61 \s\s\s\s\ssha_ha
04b0: 73 68 5f 61 73 63 69 69 5b 73 68 61 69 5c 73 2a sh_ascii[shai\s*
04c0: 5c 73 32 5c 73 2b 5c 73 31 5d 5c 73 3d 5c 73 73 \s2\s+\s1]\s=\ss
04d0: 68 61 63 68 61 72 73 5b 28 73 68 61 5f 68 61 73 hachars[(sha_has
04e0: 68 5f 62 69 6e 61 72 79 5b 73 68 61 69 5d 5c 73 h_binary[shai]\s
04f0: 26 5c 73 30 78 30 46 29 5d 3b 5c 72 5c 6e 5c 73 &\s0x0F)];\r\n\s
0500: 5c 73 5c 73 5c 73 5c 73 7d 5c 72 5c 6e 5c 73 5c \s\s\s\s}\r\n\s\
0510: 73 5c 73 5c 73 5c 73 54 63 6c 5f 4c 69 73 74 4f s\s\s\sTcl_ListO
0520: 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74 28 bjAppendElement(
0530: 5c 73 69 6e 74 65 72 70 2c 5c 73 63 65 72 74 50 \sinterp,\scertP
0540: 74 72 2c 5c 73 54 63 6c 5f 4e 65 77 53 74 72 69 tr,\sTcl_NewStri
0550: 6e 67 4f 62 6a 28 22 73 68 61 31 5f 68 61 73 68 ngObj("sha1_hash
0560: 22 2c 5c 73 2d 31 29 5c 73 29 3b 5c 72 5c 6e 5c ",\s-1)\s);\r\n\
0570: 73 5c 73 5c 73 5c 73 5c 73 54 63 6c 5f 4c 69 73 s\s\s\s\sTcl_Lis
0580: 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e tObjAppendElemen
0590: 74 28 5c 73 69 6e 74 65 72 70 2c 5c 73 63 65 72 t(\sinterp,\scer
05a0: 74 50 74 72 2c 5c 73 54 63 6c 5f 4e 65 77 53 74 tPtr,\sTcl_NewSt
05b0: 72 69 6e 67 4f 62 6a 28 73 68 61 5f 68 61 73 68 ringObj(sha_hash
05c0: 5f 61 73 63 69 69 2c 5c 73 53 48 41 5f 44 49 47 _ascii,\sSHA_DIG
05d0: 45 53 54 5f 4c 45 4e 47 54 48 5c 73 2a 5c 73 32 EST_LENGTH\s*\s2
05e0: 29 5c 73 29 3b 5c 72 5c 6e 5c 73 5c 72 5c 6e 2b )\s);\r\n\s\r\n+
05f0: 5c 73 5c 73 5c 73 5c 73 58 35 30 39 5f 64 69 67 \s\s\s\sX509_dig
0600: 65 73 74 28 63 65 72 74 2c 5c 73 45 56 50 5f 73 est(cert,\sEVP_s
0610: 68 61 32 35 36 28 29 2c 5c 73 73 68 61 32 35 36 ha256(),\ssha256
0620: 5f 68 61 73 68 5f 62 69 6e 61 72 79 2c 5c 73 4e _hash_binary,\sN
0630: 55 4c 4c 29 3b 5c 72 5c 6e 2b 5c 73 5c 73 5c 73 ULL);\r\n+\s\s\s
0640: 5c 73 66 6f 72 5c 73 28 73 68 61 69 5c 73 3d 5c \sfor\s(shai\s=\
0650: 73 30 3b 5c 73 73 68 61 69 5c 73 3c 5c 73 53 48 s0;\sshai\s<\sSH
0660: 41 32 35 36 5f 44 49 47 45 53 54 5f 4c 45 4e 47 A256_DIGEST_LENG
0670: 54 48 3b 5c 73 73 68 61 69 2b 2b 29 5c 73 7b 5c TH;\sshai++)\s{\
0680: 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 r\n+\s\s\s\s\s\s
0690: 5c 73 5c 73 73 68 61 32 35 36 5f 68 61 73 68 5f \s\ssha256_hash_
06a0: 61 73 63 69 69 5b 73 68 61 69 5c 73 2a 5c 73 32 ascii[shai\s*\s2
06b0: 5d 5c 73 5c 73 5c 73 5c 73 5c 73 3d 5c 73 73 68 ]\s\s\s\s\s=\ssh
06c0: 61 63 68 61 72 73 5b 28 73 68 61 32 35 36 5f 68 achars[(sha256_h
06d0: 61 73 68 5f 62 69 6e 61 72 79 5b 73 68 61 69 5d ash_binary[shai]
06e0: 5c 73 26 5c 73 30 78 46 30 29 5c 73 3e 3e 5c 73 \s&\s0xF0)\s>>\s
06f0: 34 5d 3b 5c 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 4];\r\n+\s\s\s\s
0700: 5c 73 5c 73 5c 73 5c 73 73 68 61 32 35 36 5f 68 \s\s\s\ssha256_h
0710: 61 73 68 5f 61 73 63 69 69 5b 73 68 61 69 5c 73 ash_ascii[shai\s
0720: 2a 5c 73 32 5c 73 2b 5c 73 31 5d 5c 73 3d 5c 73 *\s2\s+\s1]\s=\s
0730: 73 68 61 63 68 61 72 73 5b 28 73 68 61 32 35 36 shachars[(sha256
0740: 5f 68 61 73 68 5f 62 69 6e 61 72 79 5b 73 68 61 _hash_binary[sha
0750: 69 5d 5c 73 26 5c 73 30 78 30 46 29 5d 3b 5c 72 i]\s&\s0x0F)];\r
0760: 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 7d 5c 72 5c 6e \n+\s\s\s\s}\r\n
0770: 2b 5c 73 5c 73 5c 73 5c 73 54 63 6c 5f 4c 69 73 +\s\s\s\sTcl_Lis
0780: 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e tObjAppendElemen
0790: 74 28 5c 73 69 6e 74 65 72 70 2c 5c 73 63 65 72 t(\sinterp,\scer
07a0: 74 50 74 72 2c 5c 73 54 63 6c 5f 4e 65 77 53 74 tPtr,\sTcl_NewSt
07b0: 72 69 6e 67 4f 62 6a 28 22 73 68 61 32 35 36 5f ringObj("sha256_
07c0: 68 61 73 68 22 2c 5c 73 2d 31 29 5c 73 29 3b 5c hash",\s-1)\s);\
07d0: 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 54 63 6c 5f r\n+\s\s\s\sTcl_
07e0: 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 ListObjAppendEle
07f0: 6d 65 6e 74 28 5c 73 69 6e 74 65 72 70 2c 5c 73 ment(\sinterp,\s
0800: 63 65 72 74 50 74 72 2c 5c 73 54 63 6c 5f 4e 65 certPtr,\sTcl_Ne
0810: 77 53 74 72 69 6e 67 4f 62 6a 28 73 68 61 32 35 wStringObj(sha25
0820: 36 5f 68 61 73 68 5f 61 73 63 69 69 2c 5c 73 53 6_hash_ascii,\sS
0830: 48 41 32 35 36 5f 44 49 47 45 53 54 5f 4c 45 4e HA256_DIGEST_LEN
0840: 47 54 48 5c 73 2a 5c 73 32 29 5c 73 29 3b 5c 72 GTH\s*\s2)\s);\r
0850: 5c 6e 2b 5c 72 5c 6e 5c 73 23 65 6e 64 69 66 5c \n+\r\n\s#endif\
0860: 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 54 63 6c r\n\s\s\s\s\sTcl
0870: 5f 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c _ListObjAppendEl
0880: 65 6d 65 6e 74 28 5c 73 69 6e 74 65 72 70 2c 5c ement(\sinterp,\
0890: 73 63 65 72 74 50 74 72 2c 5c 72 5c 6e 5c 73 5c scertPtr,\r\n\s\
08a0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c s\s\s\s\s\s\s\s\
08b0: 73 5c 73 5c 73 54 63 6c 5f 4e 65 77 53 74 72 69 s\s\sTcl_NewStri
08c0: 6e 67 4f 62 6a 28 5c 73 22 73 75 62 6a 65 63 74 ngObj(\s"subject
08d0: 22 2c 5c 73 2d 31 29 5c 73 29 3b 5c 72 5c 6e 5c ",\s-1)\s);\r\n\
08e0: 73 5c 73 5c 73 5c 73 5c 73 54 63 6c 5f 4c 69 73 s\s\s\s\sTcl_Lis
08f0: 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e tObjAppendElemen
0900: 74 28 5c 73 69 6e 74 65 72 70 2c 5c 73 63 65 72 t(\sinterp,\scer
0910: 74 50 74 72 2c 5c 72 5c 6e 5c 73 5c 73 5c 73 5c tPtr,\r\n\s\s\s\
0920: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c s\s\s\s\s\s\s\s\
0930: 73 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 sTcl_NewStringOb
0940: 6a 28 5c 73 73 75 62 6a 65 63 74 2c 5c 73 2d 31 j(\ssubject,\s-1
0950: 29 5c 73 29 3b 3c 2f 70 72 65 3e 0a 4a 20 6c 6f )\s);</pre>.J lo
0960: 67 69 6e 20 61 6e 6f 6e 79 6d 6f 75 73 0a 4a 20 gin anonymous.J
0970: 6d 69 6d 65 74 79 70 65 20 74 65 78 74 2f 68 74 mimetype text/ht
0980: 6d 6c 0a 4a 20 70 72 69 76 61 74 65 5f 63 6f 6e ml.J private_con
0990: 74 61 63 74 20 35 35 61 66 35 62 31 37 37 33 39 tact 55af5b17739
09a0: 65 64 65 32 34 32 36 33 38 32 34 66 63 31 30 66 ede24263824fc10f
09b0: 63 62 65 31 33 37 64 38 61 35 62 30 37 0a 4a 20 cbe137d8a5b07.J
09c0: 73 65 76 65 72 69 74 79 20 49 6d 70 6f 72 74 61 severity Importa
09d0: 6e 74 0a 4a 20 73 74 61 74 75 73 20 4f 70 65 6e nt.J status Open
09e0: 0a 4a 20 74 69 74 6c 65 20 45 78 70 6f 73 65 5c .J title Expose\
09f0: 73 53 48 41 2d 32 35 36 5c 73 66 69 6e 67 65 72 sSHA-256\sfinger
0a00: 70 72 69 6e 74 5c 73 6f 66 5c 73 63 65 72 74 69 print\sof\scerti
0a10: 66 69 63 61 74 65 0a 4a 20 74 79 70 65 20 46 65 ficate.J type Fe
0a20: 61 74 75 72 65 5c 73 52 65 71 75 65 73 74 0a 4b ature\sRequest.K
0a30: 20 63 32 66 32 66 31 62 65 35 34 32 39 33 37 64 c2f2f1be542937d
0a40: 63 66 65 39 62 61 38 39 63 37 66 31 32 31 39 30 cfe9ba89c7f12190
0a50: 65 35 66 65 64 39 66 37 30 0a 55 20 61 6e 6f 6e e5fed9f70.U anon
0a60: 79 6d 6f 75 73 0a 5a 20 34 38 65 32 35 34 31 38 ymous.Z 48e25418
0a70: 34 66 64 64 39 37 30 66 35 36 39 36 31 38 33 31 4fdd970f56961831
0a80: 33 38 30 36 33 37 61 31 0a 380637a1.