Artifact
3f4b3346c0ba36112414c6eba9bc09595495a520167712cd4a7da9eb768a0696:
0000: 0a 23 20 43 6f 6d 6d 6f 6e 20 43 6f 6e 73 74 72 .# Common Constr
0010: 61 69 6e 74 73 0a 70 61 63 6b 61 67 65 20 72 65 aints.package re
0020: 71 75 69 72 65 20 74 6c 73 0a 0a 23 20 53 75 70 quire tls..# Sup
0030: 70 6f 72 74 65 64 20 70 72 6f 74 6f 63 6f 6c 73 ported protocols
0040: 0a 73 65 74 20 70 72 6f 74 6f 63 6f 6c 73 20 5b .set protocols [
0050: 6c 69 73 74 20 73 73 6c 32 20 73 73 6c 33 20 74 list ssl2 ssl3 t
0060: 6c 73 31 20 74 6c 73 31 2e 31 20 74 6c 73 31 2e ls1 tls1.1 tls1.
0070: 32 20 74 6c 73 31 2e 33 5d 0a 66 6f 72 65 61 63 2 tls1.3].foreac
0080: 68 20 70 72 6f 74 6f 63 6f 6c 20 24 70 72 6f 74 h protocol $prot
0090: 6f 63 6f 6c 73 20 7b 0a 20 20 20 20 3a 3a 74 63 ocols {. ::tc
00a0: 6c 74 65 73 74 3a 3a 74 65 73 74 43 6f 6e 73 74 ltest::testConst
00b0: 72 61 69 6e 74 20 24 70 72 6f 74 6f 63 6f 6c 20 raint $protocol
00c0: 30 0a 20 20 20 20 3a 3a 74 63 6c 74 65 73 74 3a 0. ::tcltest:
00d0: 3a 74 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 20 :testConstraint
00e0: 21 24 70 72 6f 74 6f 63 6f 6c 20 31 0a 7d 0a 0a !$protocol 1.}..
00f0: 66 6f 72 65 61 63 68 20 70 72 6f 74 6f 63 6f 6c foreach protocol
0100: 20 5b 3a 3a 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f [::tls::protoco
0110: 6c 73 5d 20 7b 0a 20 20 20 20 3a 3a 74 63 6c 74 ls] {. ::tclt
0120: 65 73 74 3a 3a 74 65 73 74 43 6f 6e 73 74 72 61 est::testConstra
0130: 69 6e 74 20 24 70 72 6f 74 6f 63 6f 6c 20 31 0a int $protocol 1.
0140: 20 20 20 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 ::tcltest::t
0150: 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 20 21 24 estConstraint !$
0160: 70 72 6f 74 6f 63 6f 6c 20 30 0a 7d 0a 0a 23 20 protocol 0.}..#
0170: 4f 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 0a OpenSSL version.
0180: 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 43 ::tcltest::testC
0190: 6f 6e 73 74 72 61 69 6e 74 20 4f 70 65 6e 53 53 onstraint OpenSS
01a0: 4c 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 L [string match
01b0: 22 4f 70 65 6e 53 53 4c 2a 22 20 5b 3a 3a 74 6c "OpenSSL*" [::tl
01c0: 73 3a 3a 76 65 72 73 69 6f 6e 5d 5d 0a 0a 23 20 s::version]]..#
01d0: 4c 65 67 61 63 79 20 4f 70 65 6e 53 53 4c 20 76 Legacy OpenSSL v
01e0: 31 2e 31 2e 31 20 76 73 20 6e 65 77 20 76 33 2e 1.1.1 vs new v3.
01f0: 78 0a 73 63 61 6e 20 5b 6c 69 6e 64 65 78 20 5b x.scan [lindex [
0200: 73 70 6c 69 74 20 5b 3a 3a 74 6c 73 3a 3a 76 65 split [::tls::ve
0210: 72 73 69 6f 6e 5d 5d 20 31 5d 20 25 66 20 76 65 rsion]] 1] %f ve
0220: 72 73 69 6f 6e 0a 3a 3a 74 63 6c 74 65 73 74 3a rsion.::tcltest:
0230: 3a 74 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 20 :testConstraint
0240: 6e 65 77 5f 61 70 69 20 5b 65 78 70 72 20 7b 24 new_api [expr {$
0250: 76 65 72 73 69 6f 6e 20 3e 3d 20 33 2e 30 7d 5d version >= 3.0}]
0260: 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 .::tcltest::test
0270: 43 6f 6e 73 74 72 61 69 6e 74 20 6f 6c 64 5f 61 Constraint old_a
0280: 70 69 20 5b 65 78 70 72 20 7b 24 76 65 72 73 69 pi [expr {$versi
0290: 6f 6e 20 3c 20 33 2e 30 7d 5d 0a 0a 23 20 4c 6f on < 3.0}]..# Lo
02a0: 61 64 20 6c 65 67 61 63 79 20 70 72 6f 76 69 64 ad legacy provid
02b0: 65 72 0a 69 66 20 7b 24 76 65 72 73 69 6f 6e 20 er.if {$version
02c0: 3e 3d 20 33 2e 30 7d 20 7b 0a 20 20 20 20 74 6c >= 3.0} {. tl
02d0: 73 3a 3a 70 72 6f 76 69 64 65 72 20 6c 65 67 61 s::provider lega
02e0: 63 79 0a 7d 0a cy.}.