Artifact
18cdc057dad8a5e0a382088cb635d8767cf3a6556ccfbf42d3a040208c68cea3:
0000: 23 20 41 75 74 6f 20 67 65 6e 65 72 61 74 65 64 # Auto generated
0010: 20 74 65 73 74 20 63 61 73 65 73 20 66 6f 72 20 test cases for
0020: 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 73 76 browserleaks.csv
0030: 0a 0a 23 20 4c 6f 61 64 20 54 63 6c 20 54 65 73 ..# Load Tcl Tes
0040: 74 20 70 61 63 6b 61 67 65 0a 69 66 20 7b 5b 6c t package.if {[l
0050: 73 65 61 72 63 68 20 5b 6e 61 6d 65 73 70 61 63 search [namespac
0060: 65 20 63 68 69 6c 64 72 65 6e 5d 20 3a 3a 74 63 e children] ::tc
0070: 6c 74 65 73 74 5d 20 3c 20 30 7d 20 7b 0a 09 70 ltest] < 0} {..p
0080: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 ackage require t
0090: 63 6c 74 65 73 74 0a 09 6e 61 6d 65 73 70 61 63 cltest..namespac
00a0: 65 20 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65 e import ::tclte
00b0: 73 74 3a 3a 2a 0a 7d 0a 0a 73 65 74 20 3a 3a 61 st::*.}..set ::a
00c0: 75 74 6f 5f 70 61 74 68 20 5b 63 6f 6e 63 61 74 uto_path [concat
00d0: 20 5b 6c 69 73 74 20 5b 66 69 6c 65 20 64 69 72 [list [file dir
00e0: 6e 61 6d 65 20 5b 66 69 6c 65 20 64 69 72 6e 61 name [file dirna
00f0: 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d me [info script]
0100: 5d 5d 5d 20 24 3a 3a 61 75 74 6f 5f 70 61 74 68 ]]] $::auto_path
0110: 5d 0a 0a 70 61 63 6b 61 67 65 20 70 72 65 66 65 ]..package prefe
0120: 72 20 6c 61 74 65 73 74 0a 70 61 63 6b 61 67 65 r latest.package
0130: 20 72 65 71 75 69 72 65 20 74 6c 73 0a 70 61 63 require tls.pac
0140: 6b 61 67 65 20 72 65 71 75 69 72 65 20 68 74 74 kage require htt
0150: 70 0a 0a 23 20 43 6f 6e 73 74 72 61 69 6e 74 73 p..# Constraints
0160: 0a 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f .source [file jo
0170: 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 in [file dirname
0180: 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 [info script]]
0190: 63 6f 6d 6d 6f 6e 2e 74 63 6c 5d 0a 0a 23 20 48 common.tcl]..# H
01a0: 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a elper functions.
01b0: 73 65 74 20 3a 3a 63 61 66 69 6c 65 20 5b 66 69 set ::cafile [fi
01c0: 6c 65 20 6a 6f 69 6e 20 5b 70 77 64 5d 20 63 65 le join [pwd] ce
01d0: 72 74 73 20 63 61 63 65 72 74 2e 70 65 6d 5d 0a rts cacert.pem].
01e0: 73 65 74 20 3a 3a 65 6e 76 28 53 53 4c 5f 43 45 set ::env(SSL_CE
01f0: 52 54 5f 46 49 4c 45 29 20 24 3a 3a 63 61 66 69 RT_FILE) $::cafi
0200: 6c 65 0a 3a 3a 68 74 74 70 3a 3a 72 65 67 69 73 le.::http::regis
0210: 74 65 72 20 68 74 74 70 73 20 34 34 33 20 5b 6c ter https 443 [l
0220: 69 73 74 20 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65 ist ::tls::socke
0230: 74 20 2d 63 61 66 69 6c 65 20 24 3a 3a 63 61 66 t -cafile $::caf
0240: 69 6c 65 5d 0a 70 72 6f 63 20 67 65 74 5f 75 72 ile].proc get_ur
0250: 6c 20 7b 75 72 6c 7d 20 7b 0a 20 20 20 20 73 65 l {url} {. se
0260: 74 20 74 6f 6b 65 6e 20 5b 3a 3a 68 74 74 70 3a t token [::http:
0270: 3a 67 65 74 75 72 6c 20 24 75 72 6c 5d 0a 20 20 :geturl $url].
0280: 20 20 73 65 74 20 62 6f 64 79 20 5b 3a 3a 68 74 set body [::ht
0290: 74 70 3a 3a 64 61 74 61 20 24 74 6f 6b 65 6e 5d tp::data $token]
02a0: 0a 20 20 20 20 3a 3a 68 74 74 70 3a 3a 63 6c 65 . ::http::cle
02b0: 61 6e 75 70 20 24 74 6f 6b 65 6e 0a 20 20 20 20 anup $token.
02c0: 72 65 74 75 72 6e 20 24 62 6f 64 79 0a 7d 0a 0a return $body.}..
02d0: 70 72 6f 63 20 67 65 74 5f 64 61 74 61 20 7b 75 proc get_data {u
02e0: 72 6c 7d 20 7b 0a 20 20 20 20 73 65 74 20 74 6f rl} {. set to
02f0: 6b 65 6e 20 5b 3a 3a 68 74 74 70 3a 3a 67 65 74 ken [::http::get
0300: 75 72 6c 20 24 75 72 6c 5d 0a 20 20 20 20 73 65 url $url]. se
0310: 74 20 62 6f 64 79 20 5b 3a 3a 68 74 74 70 3a 3a t body [::http::
0320: 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 20 20 20 data $token].
0330: 20 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e 75 70 ::http::cleanup
0340: 20 24 74 6f 6b 65 6e 0a 20 20 20 20 73 65 74 20 $token. set
0350: 70 61 74 74 65 72 6e 20 7b 3c 62 6f 64 79 2e 2a pattern {<body.*
0360: 3f 3e 28 2e 2a 3f 29 3c 2f 62 6f 64 79 3e 7d 0a ?>(.*?)</body>}.
0370: 20 20 20 20 73 65 74 20 64 61 74 61 20 22 22 0a set data "".
0380: 20 20 20 20 72 65 67 65 78 70 20 2d 6e 6f 63 61 regexp -noca
0390: 73 65 20 24 70 61 74 74 65 72 6e 20 24 62 6f 64 se $pattern $bod
03a0: 79 20 6d 61 74 63 68 20 64 61 74 61 0a 20 20 20 y match data.
03b0: 20 72 65 74 75 72 6e 20 24 64 61 74 61 0a 7d 0a return $data.}.
03c0: 0a 0a 23 20 62 72 6f 77 73 65 72 6c 65 61 6b 73 ..# browserleaks
03d0: 2e 63 6f 6d 20 54 65 73 74 73 0a 0a 0a 74 65 73 .com Tests...tes
03e0: 74 20 42 72 6f 77 73 65 72 4c 65 61 6b 73 2d 31 t BrowserLeaks-1
03f0: 2e 31 20 7b 54 4c 53 20 31 2e 33 7d 20 2d 63 6f .1 {TLS 1.3} -co
0400: 6e 73 74 72 61 69 6e 74 73 20 7b 4f 70 65 6e 53 nstraints {OpenS
0410: 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 SL3.2} -body {..
0420: 67 65 74 5f 75 72 6c 20 68 74 74 70 73 3a 2f 2f get_url https://
0430: 74 6c 73 31 33 2e 62 72 6f 77 73 65 72 6c 65 61 tls13.browserlea
0440: 6b 73 2e 63 6f 6d 0a 20 20 20 20 7d 20 2d 72 65 ks.com. } -re
0450: 73 75 6c 74 20 7b 54 4c 53 20 31 2e 33 7d 0a 0a sult {TLS 1.3}..
0460: 74 65 73 74 20 42 72 6f 77 73 65 72 4c 65 61 6b test BrowserLeak
0470: 73 2d 31 2e 32 20 7b 54 4c 53 20 31 2e 32 7d 20 s-1.2 {TLS 1.2}
0480: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 4f 70 -constraints {Op
0490: 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 20 enSSL3.2} -body
04a0: 7b 0a 09 67 65 74 5f 75 72 6c 20 68 74 74 70 73 {..get_url https
04b0: 3a 2f 2f 74 6c 73 31 32 2e 62 72 6f 77 73 65 72 ://tls12.browser
04c0: 6c 65 61 6b 73 2e 63 6f 6d 0a 20 20 20 20 7d 20 leaks.com. }
04d0: 2d 72 65 73 75 6c 74 20 7b 54 4c 53 20 31 2e 32 -result {TLS 1.2
04e0: 7d 0a 0a 74 65 73 74 20 42 72 6f 77 73 65 72 4c }..test BrowserL
04f0: 65 61 6b 73 2d 31 2e 33 20 7b 54 4c 53 20 31 2e eaks-1.3 {TLS 1.
0500: 31 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 1} -constraints
0510: 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f {OpenSSL3.2} -bo
0520: 64 79 20 7b 0a 09 67 65 74 5f 75 72 6c 20 68 74 dy {..get_url ht
0530: 74 70 73 3a 2f 2f 74 6c 73 31 31 2e 62 72 6f 77 tps://tls11.brow
0540: 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 0a 20 20 20 serleaks.com.
0550: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 69 6c } -result {fail
0560: 65 64 20 74 6f 20 75 73 65 20 73 6f 63 6b 65 74 ed to use socket
0570: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b } -returnCodes {
0580: 31 7d 0a 0a 74 65 73 74 20 42 72 6f 77 73 65 72 1}..test Browser
0590: 4c 65 61 6b 73 2d 31 2e 34 20 7b 54 4c 53 20 31 Leaks-1.4 {TLS 1
05a0: 2e 30 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 .0} -constraints
05b0: 20 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 {OpenSSL3.2} -b
05c0: 6f 64 79 20 7b 0a 09 67 65 74 5f 75 72 6c 20 68 ody {..get_url h
05d0: 74 74 70 73 3a 2f 2f 74 6c 73 31 30 2e 62 72 6f ttps://tls10.bro
05e0: 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 0a 20 20 wserleaks.com.
05f0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 69 } -result {fai
0600: 6c 65 64 20 74 6f 20 75 73 65 20 73 6f 63 6b 65 led to use socke
0610: 74 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 t} -returnCodes
0620: 7b 31 7d 0a 0a 74 65 73 74 20 42 72 6f 77 73 65 {1}..test Browse
0630: 72 4c 65 61 6b 73 2d 31 2e 35 20 7b 4a 41 34 20 rLeaks-1.5 {JA4
0640: 52 61 77 20 46 69 6e 67 65 72 70 72 69 6e 74 7d Raw Fingerprint}
0650: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 4f -constraints {O
0660: 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 penSSL3.2} -body
0670: 20 7b 0a 09 67 65 74 5f 64 61 74 61 20 68 74 74 {..get_data htt
0680: 70 73 3a 2f 2f 74 6c 73 2e 62 72 6f 77 73 65 72 ps://tls.browser
0690: 6c 65 61 6b 73 2e 63 6f 6d 2f 69 66 72 61 6d 65 leaks.com/iframe
06a0: 2f 6a 61 34 0a 20 20 20 20 7d 20 2d 6d 61 74 63 /ja4. } -matc
06b0: 68 20 7b 67 6c 6f 62 7d 20 2d 72 65 73 75 6c 74 h {glob} -result
06c0: 20 7b 74 2a 7d 0a 0a 74 65 73 74 20 42 72 6f 77 {t*}..test Brow
06d0: 73 65 72 4c 65 61 6b 73 2d 31 2e 36 20 7b 4a 41 serLeaks-1.6 {JA
06e0: 34 20 52 61 77 20 46 69 6e 67 65 72 70 72 69 6e 4 Raw Fingerprin
06f0: 74 2c 20 4f 72 69 67 69 6e 61 6c 20 4f 72 64 65 t, Original Orde
0700: 72 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 r} -constraints
0710: 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f {OpenSSL3.2} -bo
0720: 64 79 20 7b 0a 09 67 65 74 5f 64 61 74 61 20 68 dy {..get_data h
0730: 74 74 70 73 3a 2f 2f 74 6c 73 2e 62 72 6f 77 73 ttps://tls.brows
0740: 65 72 6c 65 61 6b 73 2e 63 6f 6d 2f 69 66 72 61 erleaks.com/ifra
0750: 6d 65 2f 6a 61 34 5f 6f 0a 20 20 20 20 7d 20 2d me/ja4_o. } -
0760: 6d 61 74 63 68 20 7b 67 6c 6f 62 7d 20 2d 72 65 match {glob} -re
0770: 73 75 6c 74 20 7b 74 2a 7d 0a 0a 74 65 73 74 20 sult {t*}..test
0780: 42 72 6f 77 73 65 72 4c 65 61 6b 73 2d 31 2e 37 BrowserLeaks-1.7
0790: 20 7b 4a 41 33 20 52 61 77 20 46 69 6e 67 65 72 {JA3 Raw Finger
07a0: 70 72 69 6e 74 7d 20 2d 63 6f 6e 73 74 72 61 69 print} -constrai
07b0: 6e 74 73 20 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d nts {OpenSSL3.2}
07c0: 20 2d 62 6f 64 79 20 7b 0a 09 67 65 74 5f 64 61 -body {..get_da
07d0: 74 61 20 68 74 74 70 73 3a 2f 2f 74 6c 73 2e 62 ta https://tls.b
07e0: 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 2f rowserleaks.com/
07f0: 69 66 72 61 6d 65 2f 6a 61 33 0a 20 20 20 20 7d iframe/ja3. }
0800: 20 2d 6d 61 74 63 68 20 7b 67 6c 6f 62 7d 20 2d -match {glob} -
0810: 72 65 73 75 6c 74 20 7b 2a 7d 0a 0a 74 65 73 74 result {*}..test
0820: 20 42 72 6f 77 73 65 72 4c 65 61 6b 73 2d 31 2e BrowserLeaks-1.
0830: 38 20 7b 4a 41 33 20 52 61 77 20 46 69 6e 67 65 8 {JA3 Raw Finge
0840: 72 70 72 69 6e 74 2c 20 4f 72 69 67 69 6e 61 6c rprint, Original
0850: 20 4f 72 64 65 72 7d 20 2d 63 6f 6e 73 74 72 61 Order} -constra
0860: 69 6e 74 73 20 7b 4f 70 65 6e 53 53 4c 33 2e 32 ints {OpenSSL3.2
0870: 7d 20 2d 62 6f 64 79 20 7b 0a 09 67 65 74 5f 64 } -body {..get_d
0880: 61 74 61 20 68 74 74 70 73 3a 2f 2f 74 6c 73 2e ata https://tls.
0890: 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d browserleaks.com
08a0: 2f 69 66 72 61 6d 65 2f 6a 61 33 5f 6e 0a 20 20 /iframe/ja3_n.
08b0: 20 20 7d 20 2d 6d 61 74 63 68 20 7b 67 6c 6f 62 } -match {glob
08c0: 7d 20 2d 72 65 73 75 6c 74 20 7b 2a 7d 0a 0a 74 } -result {*}..t
08d0: 65 73 74 20 42 72 6f 77 73 65 72 4c 65 61 6b 73 est BrowserLeaks
08e0: 2d 31 2e 39 20 7b 45 6e 63 72 79 70 74 65 64 20 -1.9 {Encrypted
08f0: 43 6c 69 65 6e 74 20 48 65 6c 6c 6f 7d 20 2d 63 Client Hello} -c
0900: 6f 6e 73 74 72 61 69 6e 74 73 20 7b 4f 70 65 6e onstraints {Open
0910: 53 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 20 7b 0a SSL3.2} -body {.
0920: 09 67 65 74 5f 64 61 74 61 20 68 74 74 70 73 3a .get_data https:
0930: 2f 2f 74 6c 73 2e 62 72 6f 77 73 65 72 6c 65 61 //tls.browserlea
0940: 6b 73 2e 63 6f 6d 2f 69 66 72 61 6d 65 2f 65 63 ks.com/iframe/ec
0950: 68 0a 20 20 20 20 7d 20 2d 6d 61 74 63 68 20 7b h. } -match {
0960: 67 6c 6f 62 7d 20 2d 72 65 73 75 6c 74 20 7b 2a glob} -result {*
0970: 46 61 6c 73 65 2a 7d 0a 0a 23 20 43 6c 65 61 6e False*}..# Clean
0980: 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c up.::tcltest::cl
0990: 65 61 6e 75 70 54 65 73 74 73 0a 72 65 74 75 72 eanupTests.retur
09a0: 6e 0a n.