Artifact
41450be500917e5ddceb76dedbe23680cbd3985ed3c6e015149e1cab1034077f:
0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 74 #!/usr/bin/env t
0010: 63 6c 73 68 0a 0a 23 20 43 6f 6d 6d 6f 6e 20 43 clsh..# Common C
0020: 6f 6e 73 74 72 61 69 6e 74 73 0a 70 61 63 6b 61 onstraints.packa
0030: 67 65 20 70 72 65 66 65 72 20 6c 61 74 65 73 74 ge prefer latest
0040: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0050: 20 74 6c 73 0a 0a 23 20 53 75 70 70 6f 72 74 65 tls..# Supporte
0060: 64 20 70 72 6f 74 6f 63 6f 6c 73 0a 73 65 74 20 d protocols.set
0070: 70 72 6f 74 6f 63 6f 6c 73 20 5b 6c 69 73 74 20 protocols [list
0080: 73 73 6c 32 20 73 73 6c 33 20 74 6c 73 31 20 74 ssl2 ssl3 tls1 t
0090: 6c 73 31 2e 31 20 74 6c 73 31 2e 32 20 74 6c 73 ls1.1 tls1.2 tls
00a0: 31 2e 33 5d 0a 66 6f 72 65 61 63 68 20 70 72 6f 1.3].foreach pro
00b0: 74 6f 63 6f 6c 20 24 70 72 6f 74 6f 63 6f 6c 73 tocol $protocols
00c0: 20 7b 0a 20 20 20 20 3a 3a 74 63 6c 74 65 73 74 {. ::tcltest
00d0: 3a 3a 74 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 ::testConstraint
00e0: 20 24 70 72 6f 74 6f 63 6f 6c 20 30 0a 20 20 20 $protocol 0.
00f0: 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 ::tcltest::test
0100: 43 6f 6e 73 74 72 61 69 6e 74 20 21 24 70 72 6f Constraint !$pro
0110: 74 6f 63 6f 6c 20 31 0a 7d 0a 0a 66 6f 72 65 61 tocol 1.}..forea
0120: 63 68 20 70 72 6f 74 6f 63 6f 6c 20 5b 3a 3a 74 ch protocol [::t
0130: 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 5d 20 7b ls::protocols] {
0140: 0a 20 20 20 20 3a 3a 74 63 6c 74 65 73 74 3a 3a . ::tcltest::
0150: 74 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 20 24 testConstraint $
0160: 70 72 6f 74 6f 63 6f 6c 20 31 0a 20 20 20 20 3a protocol 1. :
0170: 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 43 6f :tcltest::testCo
0180: 6e 73 74 72 61 69 6e 74 20 21 24 70 72 6f 74 6f nstraint !$proto
0190: 63 6f 6c 20 30 0a 7d 0a 0a 23 20 4f 70 65 6e 53 col 0.}..# OpenS
01a0: 53 4c 20 76 65 72 73 69 6f 6e 0a 3a 3a 74 63 6c SL version.::tcl
01b0: 74 65 73 74 3a 3a 74 65 73 74 43 6f 6e 73 74 72 test::testConstr
01c0: 61 69 6e 74 20 4f 70 65 6e 53 53 4c 20 5b 73 74 aint OpenSSL [st
01d0: 72 69 6e 67 20 6d 61 74 63 68 20 22 4f 70 65 6e ring match "Open
01e0: 53 53 4c 2a 22 20 5b 3a 3a 74 6c 73 3a 3a 76 65 SSL*" [::tls::ve
01f0: 72 73 69 6f 6e 5d 5d 0a 0a 23 20 4c 65 67 61 63 rsion]]..# Legac
0200: 79 20 4f 70 65 6e 53 53 4c 20 76 31 2e 31 2e 31 y OpenSSL v1.1.1
0210: 20 76 73 20 6e 65 77 20 76 33 2e 78 0a 73 63 61 vs new v3.x.sca
0220: 6e 20 5b 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 n [lindex [split
0230: 20 5b 3a 3a 74 6c 73 3a 3a 76 65 72 73 69 6f 6e [::tls::version
0240: 5d 5d 20 31 5d 20 25 66 20 76 65 72 73 69 6f 6e ]] 1] %f version
0250: 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 .::tcltest::test
0260: 43 6f 6e 73 74 72 61 69 6e 74 20 6e 65 77 5f 61 Constraint new_a
0270: 70 69 20 5b 65 78 70 72 20 7b 24 76 65 72 73 69 pi [expr {$versi
0280: 6f 6e 20 3e 3d 20 33 2e 30 7d 5d 0a 3a 3a 74 63 on >= 3.0}].::tc
0290: 6c 74 65 73 74 3a 3a 74 65 73 74 43 6f 6e 73 74 ltest::testConst
02a0: 72 61 69 6e 74 20 6f 6c 64 5f 61 70 69 20 5b 65 raint old_api [e
02b0: 78 70 72 20 7b 24 76 65 72 73 69 6f 6e 20 3c 20 xpr {$version <
02c0: 33 2e 30 7d 5d 0a 3.0}].