0000: 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a <!DOCTYPE html>.
0010: 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 65 6e 22 3e <html lang="en">
0020: 0a 3c 68 65 61 64 3e 0a 3c 6d 65 74 61 20 68 74 .<head>.<meta ht
0030: 74 70 2d 65 71 75 69 76 3d 22 43 6f 6e 74 65 6e tp-equiv="Conten
0040: 74 2d 54 79 70 65 22 20 63 6f 6e 74 65 6e 74 3d t-Type" content=
0050: 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 "text/html; char
0060: 73 65 74 3d 75 74 66 2d 38 22 3e 0a 3c 6d 65 74 set=utf-8">.<met
0070: 61 20 6e 61 6d 65 3d 22 43 6f 70 79 72 69 67 68 a name="Copyrigh
0080: 74 22 20 63 6f 6e 74 65 6e 74 3d 22 31 39 39 39 t" content="1999
0090: 20 4d 61 74 74 20 4e 65 77 6d 61 6e 20 2f 20 32 Matt Newman / 2
00a0: 30 30 34 20 53 74 61 72 66 69 73 68 20 53 79 73 004 Starfish Sys
00b0: 74 65 6d 73 22 3e 0a 3c 74 69 74 6c 65 3e 54 4c tems">.<title>TL
00c0: 53 20 28 53 53 4c 29 20 54 43 4c 20 43 6f 6d 6d S (SSL) TCL Comm
00d0: 61 6e 64 73 3c 2f 74 69 74 6c 65 3e 0a 3c 6c 69 ands</title>.<li
00e0: 6e 6b 20 72 65 6c 3d 22 73 74 79 6c 65 73 68 65 nk rel="styleshe
00f0: 65 74 22 20 68 72 65 66 3d 22 64 6f 63 73 2e 63 et" href="docs.c
0100: 73 73 22 20 74 79 70 65 3d 22 74 65 78 74 2f 63 ss" type="text/c
0110: 73 73 22 20 6d 65 64 69 61 3d 22 61 6c 6c 22 3e ss" media="all">
0120: 0a 3c 2f 68 65 61 64 3e 0a 0a 3c 62 6f 64 79 20 .</head>..<body
0130: 63 6c 61 73 73 3d 22 76 73 63 2d 69 6e 69 74 69 class="vsc-initi
0140: 61 6c 69 7a 65 64 22 3e 0a 0a 3c 68 32 3e 54 43 alized">..<h2>TC
0150: 4c 20 54 6c 73 20 45 78 74 65 6e 73 69 6f 6e 20 L Tls Extension
0160: 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 68 Documentation</h
0170: 32 3e 0a 0a 3c 64 6c 3e 0a 20 20 20 20 3c 64 64 2>..<dl>. <dd
0180: 3e 3c 61 20 68 72 65 66 3d 22 23 4e 41 4d 45 22 ><a href="#NAME"
0190: 3e 4e 41 4d 45 3c 2f 61 3e 0a 20 20 20 20 3c 64 >NAME</a>. <d
01a0: 6c 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c 73 3c 2f l>..<dd><b>tls</
01b0: 62 3e 20 2d 20 62 69 6e 64 69 6e 67 20 74 6f 20 b> - binding to
01c0: 3c 62 3e 4f 70 65 6e 53 53 4c 3c 2f 62 3e 20 6c <b>OpenSSL</b> l
01d0: 69 62 72 61 72 79 0a 09 66 6f 72 20 65 6e 63 72 ibrary..for encr
01e0: 79 70 74 65 64 20 73 6f 63 6b 65 74 20 61 6e 64 ypted socket and
01f0: 20 49 2f 4f 20 63 68 61 6e 6e 65 6c 20 63 6f 6d I/O channel com
0200: 6d 75 6e 69 63 61 74 69 6f 6e 73 2e 3c 2f 64 64 munications.</dd
0210: 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 >. </dl>.
0220: 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 </dd>. <dd><a
0230: 20 68 72 65 66 3d 22 23 53 59 4e 4f 50 53 49 53 href="#SYNOPSIS
0240: 22 3e 53 59 4e 4f 50 53 49 53 3c 2f 61 3e 20 3c ">SYNOPSIS</a> <
0250: 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 64 6c /dd>. <dd><dl
0260: 3e 0a 09 3c 64 64 3e 3c 62 3e 70 61 63 6b 61 67 >..<dd><b>packag
0270: 65 20 72 65 71 75 69 72 65 20 54 63 6c 3c 2f 62 e require Tcl</b
0280: 3e 20 3c 65 6d 3e 3f 3c 62 3e 38 2e 35 2d 3c 2f > <em>?<b>8.5-</
0290: 62 3e 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c b>?</em></dd>..<
02a0: 64 64 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72 65 dd><b>package re
02b0: 71 75 69 72 65 20 74 6c 73 3c 2f 62 3e 20 3c 65 quire tls</b> <e
02c0: 6d 3e 3f 3c 62 3e 31 2e 38 2d 3c 2f 62 3e 3f 3c m>?<b>1.8-</b>?<
02d0: 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 26 /em></dd>..<dt>&
02e0: 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 3c 64 64 3e nbsp;</dt>..<dd>
02f0: 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74 3c 2f 62 3e <b>tls::init</b>
0300: 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f <em>?options?</
0310: 65 6d 3e 20 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c em> </dd>..<dd><
0320: 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 b>tls::socket</b
0330: 3e 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 20 > <em>?options?
0340: 68 6f 73 74 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f host port</em></
0350: 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c 73 3a dd>..<dd><b>tls:
0360: 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c 65 6d 3e :socket</b> <em>
0370: 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64 ?-server command
0380: 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74 ? ?options? port
0390: 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 64 64 3e </em></dd>..<dd>
03a0: 3c 62 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b <b>tls::handshak
03b0: 65 3c 2f 62 3e 20 3c 65 6d 3e 20 63 68 61 6e 6e e</b> <em> chann
03c0: 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 64 el</em></dd>..<d
03d0: 64 3e 3c 62 3e 74 6c 73 3a 3a 73 74 61 74 75 73 d><b>tls::status
03e0: 3c 2f 62 3e 20 3c 65 6d 3e 3f 2d 6c 6f 63 61 6c </b> <em>?-local
03f0: 3f 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f ? channel</em></
0400: 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c 73 3a dd>..<dd><b>tls:
0410: 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 62 3e 20 :connection</b>
0420: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e <em>channel</em>
0430: 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c </dd>..<dd><b>tl
0440: 73 3a 3a 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c 65 s::import</b> <e
0450: 6d 3e 63 68 61 6e 6e 65 6c 20 3f 6f 70 74 69 6f m>channel ?optio
0460: 6e 73 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c ns?</em></dd>..<
0470: 64 64 3e 3c 62 3e 74 6c 73 3a 3a 75 6e 69 6d 70 dd><b>tls::unimp
0480: 6f 72 74 3c 2f 62 3e 20 3c 65 6d 3e 63 68 61 6e ort</b> <em>chan
0490: 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c nel</em></dd>..<
04a0: 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 dt> </dt>..
04b0: 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 63 69 70 68 <dd><b>tls::ciph
04c0: 65 72 73 3c 2f 62 3e 20 3c 65 6d 3e 3f 70 72 6f ers</b> <em>?pro
04d0: 74 6f 63 6f 6c 3f 20 3f 76 65 72 62 6f 73 65 3f tocol? ?verbose?
04e0: 20 3f 73 75 70 70 6f 72 74 65 64 3f 3c 2f 65 6d ?supported?</em
04f0: 3e 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 ></dd>..<dd><b>t
0500: 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62 ls::protocols</b
0510: 3e 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 ></dd>..<dd><b>t
0520: 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c ls::version</b><
0530: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 3c 2f /dd>. </dl></
0540: 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 dd>. <dd><a h
0550: 72 65 66 3d 22 23 43 4f 4d 4d 41 4e 44 53 22 3e ref="#COMMANDS">
0560: 43 4f 4d 4d 41 4e 44 53 3c 2f 61 3e 3c 2f 64 64 COMMANDS</a></dd
0570: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65 >. <dd><a hre
0580: 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50 54 f="#CALLBACK OPT
0590: 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f IONS">CALLBACK O
05a0: 50 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 64 64 3e 0a PTIONS</a></dd>.
05b0: 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d <dd><a href=
05c0: 22 23 48 54 54 50 53 20 45 58 41 4d 50 4c 45 22 "#HTTPS EXAMPLE"
05d0: 3e 48 54 54 50 53 20 45 58 41 4d 50 4c 45 3c 2f >HTTPS EXAMPLE</
05e0: 61 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e a></dd>. <dd>
05f0: 3c 61 20 68 72 65 66 3d 22 23 53 45 45 20 41 4c <a href="#SEE AL
0600: 53 4f 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53 SO">SPECIAL CONS
0610: 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f IDERATIONS</a></
0620: 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 dd>. <dd><a h
0630: 72 65 66 3d 22 23 53 45 45 20 41 4c 53 4f 22 3e ref="#SEE ALSO">
0640: 53 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 64 64 SEE ALSO</a></dd
0650: 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 68 72 3e 0a 0a 3c >.</dl>..<hr>..<
0660: 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 4e 41 4d 45 h3><a name="NAME
0670: 22 3e 4e 41 4d 45 3c 2f 61 3e 3c 2f 68 33 3e 0a ">NAME</a></h3>.
0680: 0a 3c 70 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3c .<p><strong>tls<
0690: 2f 73 74 72 6f 6e 67 3e 20 2d 20 62 69 6e 64 69 /strong> - bindi
06a0: 6e 67 20 74 6f 20 3c 73 74 72 6f 6e 67 3e 4f 70 ng to <strong>Op
06b0: 65 6e 53 53 4c 3c 2f 73 74 72 6f 6e 67 3e 20 6c enSSL</strong> l
06c0: 69 62 72 61 72 79 0a 66 6f 72 20 65 6e 63 72 79 ibrary.for encry
06d0: 70 74 65 64 20 73 6f 63 6b 65 74 20 61 6e 64 20 pted socket and
06e0: 49 2f 4f 20 63 68 61 6e 6e 65 6c 20 63 6f 6d 6d I/O channel comm
06f0: 75 6e 69 63 61 74 69 6f 6e 73 2e 3c 2f 70 3e 0a unications.</p>.
0700: 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 .<hr>..<h3><a na
0710: 6d 65 3d 22 53 59 4e 4f 50 53 49 53 22 3e 53 59 me="SYNOPSIS">SY
0720: 4e 4f 50 53 49 53 3c 2f 61 3e 3c 2f 68 33 3e 0a NOPSIS</a></h3>.
0730: 0a 3c 70 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72 .<p><b>package r
0740: 65 71 75 69 72 65 20 54 63 6c 3c 2f 62 3e 20 3c equire Tcl</b> <
0750: 65 6d 3e 3f 3c 62 3e 38 2e 35 2d 3c 2f 62 3e 3f em>?<b>8.5-</b>?
0760: 3c 2f 65 6d 3e 3c 62 72 3e 0a 3c 62 3e 70 61 63 </em><br>.<b>pac
0770: 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 kage require tls
0780: 3c 2f 62 3e 20 3c 65 6d 3e 3f 3c 62 3e 31 2e 38 </b> <em>?<b>1.8
0790: 2d 3c 2f 62 3e 3f 3c 2f 65 6d 3e 3c 62 72 3e 0a -</b>?</em><br>.
07a0: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 <br>.<a href="#t
07b0: 6c 73 3a 3a 69 6e 69 74 22 3e 3c 62 3e 74 6c 73 ls::init"><b>tls
07c0: 3a 3a 69 6e 69 74 3c 2f 62 3e 20 3c 69 3e 3f 6f ::init</b> <i>?o
07d0: 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c ptions?</i></a><
07e0: 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c br>.<a href="#tl
07f0: 73 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c s::socket"><b>tl
0800: 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c 69 s::socket</b> <i
0810: 3e 3f 6f 70 74 69 6f 6e 73 3f 20 68 6f 73 74 20 >?options? host
0820: 70 6f 72 74 3c 2f 69 3e 3c 62 72 3e 0a 3c 61 20 port</i><br>.<a
0830: 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 6f 63 6b href="#tls::sock
0840: 65 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b et"><b>tls::sock
0850: 65 74 3c 2f 62 3e 20 3c 69 3e 3f 2d 73 65 72 76 et</b> <i>?-serv
0860: 65 72 20 63 6f 6d 6d 61 6e 64 3f 20 3f 6f 70 74 er command? ?opt
0870: 69 6f 6e 73 3f 20 70 6f 72 74 3c 2f 69 3e 3c 2f ions? port</i></
0880: 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 a><br>.<a href="
0890: 23 74 6c 73 3a 3a 73 74 61 74 75 73 22 3e 3c 62 #tls::status"><b
08a0: 3e 74 6c 73 3a 3a 73 74 61 74 75 73 3c 2f 62 3e >tls::status</b>
08b0: 20 3c 69 3e 3f 2d 6c 6f 63 61 6c 3f 20 63 68 61 <i>?-local? cha
08c0: 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e nnel</i></a><br>
08d0: 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a .<a href="#tls::
08e0: 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 62 3e 74 connection"><b>t
08f0: 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f ls::connection</
0900: 62 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 b> <i>channel</i
0910: 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 ></a><br>.<a hre
0920: 66 3d 22 23 74 6c 73 3a 3a 68 61 6e 64 73 68 61 f="#tls::handsha
0930: 6b 65 22 3e 3c 62 3e 74 6c 73 3a 3a 68 61 6e 64 ke"><b>tls::hand
0940: 73 68 61 6b 65 3c 2f 62 3e 20 3c 69 3e 63 68 61 shake</b> <i>cha
0950: 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e nnel</i></a><br>
0960: 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a .<a href="#tls::
0970: 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a import"><b>tls::
0980: 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c 69 3e 63 68 import</b> <i>ch
0990: 61 6e 6e 65 6c 20 3f 6f 70 74 69 6f 6e 73 3f 3c annel ?options?<
09a0: 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 /i></a><br>.<a h
09b0: 72 65 66 3d 22 23 74 6c 73 3a 3a 75 6e 69 6d 70 ref="#tls::unimp
09c0: 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a 75 6e 69 ort"><b>tls::uni
09d0: 6d 70 6f 72 74 3c 2f 62 3e 20 3c 69 3e 63 68 61 mport</b> <i>cha
09e0: 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e nnel</i></a><br>
09f0: 0a 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 .<br>.<a href="#
0a00: 74 6c 73 3a 3a 63 69 70 68 65 72 73 22 3e 3c 62 tls::ciphers"><b
0a10: 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73 3c 2f 62 >tls::ciphers</b
0a20: 3e 20 3c 69 3e 3f 70 72 6f 74 6f 63 6f 6c 3f 20 > <i>?protocol?
0a30: 3f 76 65 72 62 6f 73 65 3f 20 3f 73 75 70 70 6f ?verbose? ?suppo
0a40: 72 74 65 64 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 rted?</i></a><br
0a50: 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a >.<a href="#tls:
0a60: 3a 70 72 6f 74 6f 63 6f 6c 73 22 3e 3c 62 3e 74 :protocols"><b>t
0a70: 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62 ls::protocols</b
0a80: 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 ></a><br>.<a hre
0a90: 66 3d 22 23 74 6c 73 3a 3a 76 65 72 73 69 6f 6e f="#tls::version
0aa0: 22 3e 3c 62 3e 74 6c 73 3a 3a 76 65 72 73 69 6f "><b>tls::versio
0ab0: 6e 3c 2f 62 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 2f n</b></a><br>.</
0ac0: 70 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 p>..<hr>..<h3><a
0ad0: 20 6e 61 6d 65 3d 22 44 45 53 43 52 49 50 54 49 name="DESCRIPTI
0ae0: 4f 4e 22 3e 44 45 53 43 52 49 50 54 49 4f 4e 3c ON">DESCRIPTION<
0af0: 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 69 /a></h3>..<p>Thi
0b00: 73 20 65 78 74 65 6e 73 69 6f 6e 20 70 72 6f 76 s extension prov
0b10: 69 64 65 73 20 54 43 4c 20 73 63 72 69 70 74 20 ides TCL script
0b20: 61 63 63 65 73 73 20 74 6f 20 73 65 63 75 72 65 access to secure
0b30: 20 73 6f 63 6b 65 74 20 63 6f 6d 6d 75 6e 69 63 socket communic
0b40: 61 74 69 6f 6e 73 0a 75 73 69 6e 67 20 74 68 65 ations.using the
0b50: 20 54 72 61 6e 73 70 6f 72 74 20 4c 61 79 65 72 Transport Layer
0b60: 20 53 65 63 75 72 69 74 79 20 28 54 4c 53 29 20 Security (TLS)
0b70: 70 72 6f 74 6f 63 6f 6c 2e 20 49 74 20 70 72 6f protocol. It pro
0b80: 76 69 64 65 73 20 61 20 67 65 6e 65 72 69 63 0a vides a generic.
0b90: 62 69 6e 64 69 6e 67 20 74 6f 20 3c 61 20 68 72 binding to <a hr
0ba0: 65 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e ef="https://www.
0bb0: 6f 70 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 4f 70 openssl.org/">Op
0bc0: 65 6e 53 53 4c 3c 2f 61 3e 2c 20 75 74 69 6c 69 enSSL</a>, utili
0bd0: 7a 69 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67 zing the.<strong
0be0: 3e 54 63 6c 5f 53 74 61 63 6b 43 68 61 6e 6e 65 >Tcl_StackChanne
0bf0: 6c 3c 2f 73 74 72 6f 6e 67 3e 20 41 50 49 20 69 l</strong> API i
0c00: 6e 20 54 43 4c 20 38 2e 34 20 61 6e 64 20 68 69 n TCL 8.4 and hi
0c10: 67 68 65 72 2e 0a 54 68 65 73 65 20 73 6f 63 6b gher..These sock
0c20: 65 74 73 20 62 65 68 61 76 65 20 65 78 61 63 74 ets behave exact
0c30: 6c 79 20 74 68 65 20 73 61 6d 65 20 61 73 20 63 ly the same as c
0c40: 68 61 6e 6e 65 6c 73 20 63 72 65 61 74 65 64 20 hannels created
0c50: 75 73 69 6e 67 20 74 68 65 20 62 75 69 6c 74 2d using the built-
0c60: 69 6e 0a 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 in.<strong>socke
0c70: 74 3c 2f 73 74 72 6f 6e 67 3e 20 63 6f 6d 6d 61 t</strong> comma
0c80: 6e 64 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 nd, along with a
0c90: 64 64 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e dditional option
0ca0: 73 20 66 6f 72 20 63 6f 6e 74 72 6f 6c 6c 69 6e s for controllin
0cb0: 67 0a 74 68 65 20 53 53 4c 2f 54 4c 53 20 73 65 g.the SSL/TLS se
0cc0: 73 73 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 68 72 ssion..</p>..<hr
0cd0: 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 >..<h3><a name="
0ce0: 43 4f 4d 4d 41 4e 44 53 22 3e 43 4f 4d 4d 41 4e COMMANDS">COMMAN
0cf0: 44 53 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e DS</a></h3>..<p>
0d00: 54 79 70 69 63 61 6c 6c 79 20 6f 6e 65 20 77 6f Typically one wo
0d10: 75 6c 64 20 75 73 65 20 74 68 65 20 3c 73 74 72 uld use the <str
0d20: 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 ong>tls::socket
0d30: 3c 2f 73 74 72 6f 6e 67 3e 63 6f 6d 6d 61 6e 64 </strong>command
0d40: 0a 77 68 69 63 68 20 70 72 6f 76 69 64 65 73 20 .which provides
0d50: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 compatibility wi
0d60: 74 68 20 74 68 65 20 6e 61 74 69 76 65 20 54 43 th the native TC
0d70: 4c 20 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 74 L <strong>socket
0d80: 3c 2f 73 74 72 6f 6e 67 3e 0a 63 6f 6d 6d 61 6e </strong>.comman
0d90: 64 2e 20 49 6e 20 73 75 63 68 20 63 61 73 65 73 d. In such cases
0da0: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d <strong>tls::im
0db0: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 20 73 68 port</strong> sh
0dc0: 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 75 73 65 64 ould not be.used
0dd0: 20 64 69 72 65 63 74 6c 79 2e 3c 2f 70 3e 0a 3c directly.</p>.<
0de0: 64 6c 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e dl>. <dt><a n
0df0: 61 6d 65 3d 22 74 6c 73 3a 3a 69 6e 69 74 22 3e ame="tls::init">
0e00: 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74 20 3c 2f 62 <b>tls::init </b
0e10: 3e 3c 69 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 ><i>?options?</i
0e20: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c ></a></dt>. <
0e30: 64 64 3e 4f 70 74 69 6f 6e 61 6c 20 66 75 6e 63 dd>Optional func
0e40: 74 69 6f 6e 20 74 6f 20 73 65 74 20 74 68 65 20 tion to set the
0e50: 64 65 66 61 75 6c 74 20 6f 70 74 69 6f 6e 73 20 default options
0e60: 75 73 65 64 20 62 79 0a 09 3c 73 74 72 6f 6e 67 used by..<strong
0e70: 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 73 74 >tls::socket</st
0e80: 72 6f 6e 67 3e 2e 20 49 66 20 79 6f 75 20 63 61 rong>. If you ca
0e90: 6c 6c 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a ll <strong>tls::
0ea0: 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 0a import</strong>.
0eb0: 09 64 69 72 65 63 74 6c 79 2c 20 74 68 69 73 20 .directly, this
0ec0: 63 6f 6d 6d 61 6e 64 20 68 61 73 20 6e 6f 20 65 command has no e
0ed0: 66 66 65 63 74 2e 20 54 68 69 73 20 63 6f 6d 6d ffect. This comm
0ee0: 61 6e 64 20 73 75 70 70 6f 72 74 73 20 61 6c 6c and supports all
0ef0: 20 6f 66 20 74 68 65 0a 09 73 61 6d 65 20 6f 70 of the..same op
0f00: 74 69 6f 6e 73 20 61 73 20 74 68 65 20 3c 73 74 tions as the <st
0f10: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 rong>tls::socket
0f20: 3c 2f 73 74 72 6f 6e 67 3e 20 63 6f 6d 6d 61 6e </strong> comman
0f30: 64 2c 20 74 68 6f 75 67 68 20 79 6f 75 0a 09 73 d, though you..s
0f40: 68 6f 75 6c 64 20 6c 69 6d 69 74 20 79 6f 75 72 hould limit your
0f50: 20 6f 70 74 69 6f 6e 73 20 74 6f 20 6f 6e 6c 79 options to only
0f60: 20 54 4c 53 20 72 65 6c 61 74 65 64 20 6f 6e 65 TLS related one
0f70: 73 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e s.</dd>. <dt>
0f80: 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 </dt>.
0f90: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 <dt><a name="tls
0fa0: 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c 73 ::socket"><b>tls
0fb0: 3a 3a 73 6f 63 6b 65 74 20 3c 2f 62 3e 3c 65 6d ::socket </b><em
0fc0: 3e 3f 6f 70 74 69 6f 6e 73 3f 0a 09 68 6f 73 74 >?options?..host
0fd0: 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f port</em></a></
0fe0: 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 62 3e 74 dt>. <dt><b>t
0ff0: 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e 3c 65 ls::socket</b><e
1000: 6d 3e 20 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d m> ?-server comm
1010: 61 6e 64 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 and? ?options? p
1020: 6f 72 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 ort</em></dt>.
1030: 20 20 3c 64 64 3e 54 68 69 73 20 69 73 20 61 20 <dd>This is a
1040: 68 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 helper function
1050: 74 68 61 74 20 75 74 69 6c 69 7a 65 73 20 74 68 that utilizes th
1060: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 63 6f 6d e underlying com
1070: 6d 61 6e 64 73 0a 09 28 3c 73 74 72 6f 6e 67 3e mands..(<strong>
1080: 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 socket</strong>
1090: 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a and <strong>tls:
10a0: 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e :import</strong>
10b0: 29 20 74 6f 20 63 72 65 61 74 65 0a 09 74 68 65 ) to create..the
10c0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 49 74 20 connection. It
10d0: 62 65 68 61 76 65 73 20 74 68 65 20 73 61 6d 65 behaves the same
10e0: 20 61 73 20 74 68 65 20 6e 61 74 69 76 65 20 54 as the native T
10f0: 43 4c 20 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 CL <strong>socke
1100: 74 3c 2f 73 74 72 6f 6e 67 3e 0a 09 63 6f 6d 6d t</strong>..comm
1110: 61 6e 64 2c 20 62 75 74 20 61 6c 73 6f 20 73 75 and, but also su
1120: 70 70 6f 72 74 73 20 74 68 65 20 3c 61 20 68 72 pports the <a hr
1130: 65 66 3d 22 23 74 6c 73 3a 3a 69 6d 70 6f 72 74 ef="#tls::import
1140: 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 69 6d "><strong>tls:im
1150: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 port</strong></a
1160: 3e 0a 09 63 6f 6d 6d 61 6e 64 20 6f 70 74 69 6f >..command optio
1170: 6e 73 20 61 6e 64 20 6f 6e 65 20 61 64 64 69 74 ns and one addit
1180: 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 3a 3c 2f 64 ional option:</d
1190: 64 3e 0a 20 20 20 20 3c 64 6c 3e 3c 62 6c 6f 63 d>. <dl><bloc
11a0: 6b 71 75 6f 74 65 3e 0a 09 3c 64 74 3e 3c 73 74 kquote>..<dt><st
11b0: 72 6f 6e 67 3e 2d 61 75 74 6f 73 65 72 76 65 72 rong>-autoserver
11c0: 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 name</strong> <e
11d0: 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e m>bool</em></dt>
11e0: 0a 09 3c 64 64 3e 41 75 74 6f 6d 61 74 69 63 61 ..<dd>Automatica
11f0: 6c 6c 79 20 73 65 74 20 74 68 65 20 2d 73 65 72 lly set the -ser
1200: 76 65 72 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 vername argument
1210: 20 74 6f 20 74 68 65 20 3c 65 6d 3e 68 6f 73 74 to the <em>host
1220: 3c 2f 65 6d 3e 0a 09 61 72 67 75 6d 65 6e 74 20 </em>..argument
1230: 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e (default is <em>
1240: 66 61 6c 73 65 3c 2f 65 6d 3e 29 2e 3c 2f 64 64 false</em>).</dd
1250: 3e 0a 20 20 20 20 3c 2f 62 6c 6f 63 6b 71 75 6f >. </blockquo
1260: 74 65 3e 3c 2f 64 6c 3e 0a 0a 20 20 20 20 3c 64 te></dl>.. <d
1270: 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a t><a name="tls::
1280: 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a import"><b>tls::
1290: 69 6d 70 6f 72 74 20 3c 2f 62 3e 3c 69 3e 63 68 import </b><i>ch
12a0: 61 6e 6e 65 6c 0a 09 3f 6f 70 74 69 6f 6e 73 3f annel..?options?
12b0: 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 </i></a></dt>.
12c0: 20 20 3c 64 64 3e 41 64 64 20 53 53 4c 2f 54 4c <dd>Add SSL/TL
12d0: 53 20 65 6e 63 72 79 70 74 69 6f 6e 20 74 6f 20 S encryption to
12e0: 61 20 72 65 67 75 6c 61 72 20 54 43 4c 20 63 68 a regular TCL ch
12f0: 61 6e 6e 65 6c 2e 20 49 74 20 6e 65 65 64 0a 09 annel. It need..
1300: 6e 6f 74 20 62 65 20 61 20 73 6f 63 6b 65 74 2c not be a socket,
1310: 20 62 75 74 20 6d 75 73 74 20 70 72 6f 76 69 64 but must provid
1320: 65 20 62 69 2d 64 69 72 65 63 74 69 6f 6e 61 6c e bi-directional
1330: 20 66 6c 6f 77 2e 20 41 6c 73 6f 0a 09 73 65 74 flow. Also..set
1340: 20 73 65 73 73 69 6f 6e 20 70 61 72 61 6d 65 74 session paramet
1350: 65 72 73 20 66 6f 72 20 53 53 4c 20 68 61 6e 64 ers for SSL hand
1360: 73 68 61 6b 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 shake.</dd>.
1370: 3c 64 6c 3e 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e <dl><blockquote>
1380: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 61 ..<dt><strong>-a
1390: 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d lpn</strong> <em
13a0: 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a >list</em></dt>.
13b0: 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 70 72 6f .<dd>List of pro
13c0: 74 6f 63 6f 6c 73 20 74 6f 20 6f 66 66 65 72 20 tocols to offer
13d0: 64 75 72 69 6e 67 20 41 70 70 6c 69 63 61 74 69 during Applicati
13e0: 6f 6e 2d 4c 61 79 65 72 0a 09 20 20 20 20 50 72 on-Layer.. Pr
13f0: 6f 74 6f 63 6f 6c 20 4e 65 67 6f 74 69 61 74 69 otocol Negotiati
1400: 6f 6e 20 28 41 4c 50 4e 29 2e 20 46 6f 72 20 65 on (ALPN). For e
1410: 78 61 6d 70 6c 65 3a 20 3c 65 6d 3e 68 32 3c 2f xample: <em>h2</
1420: 65 6d 3e 20 61 6e 64 0a 09 20 20 20 20 3c 65 6d em> and.. <em
1430: 3e 68 74 74 70 2f 31 2e 31 3c 2f 65 6d 3e 2c 20 >http/1.1</em>,
1440: 62 75 74 20 6e 6f 74 20 3c 65 6d 3e 68 33 3c 2f but not <em>h3</
1450: 65 6d 3e 20 6f 72 20 3c 65 6d 3e 71 75 69 63 3c em> or <em>quic<
1460: 2f 65 6d 3e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e /em>.</dd>..<dt>
1470: 3c 73 74 72 6f 6e 67 3e 2d 63 61 64 69 72 3c 2f <strong>-cadir</
1480: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 69 72 3c strong> <em>dir<
1490: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 /em></dt>..<dd>S
14a0: 70 65 63 69 66 69 65 73 20 74 68 65 20 64 69 72 pecifies the dir
14b0: 65 63 74 6f 72 79 20 77 68 65 72 65 20 74 68 65 ectory where the
14c0: 20 43 65 72 74 69 66 69 63 61 74 65 20 41 75 74 Certificate Aut
14d0: 68 6f 72 69 74 79 20 28 43 41 29 0a 09 20 20 20 hority (CA)..
14e0: 20 63 65 72 74 69 66 69 63 61 74 65 73 20 61 72 certificates ar
14f0: 65 20 73 74 6f 72 65 64 2e 20 54 68 65 20 64 65 e stored. The de
1500: 66 61 75 6c 74 20 69 73 20 70 6c 61 74 66 6f 72 fault is platfor
1510: 6d 20 73 70 65 63 69 66 69 63 20 61 6e 64 20 63 m specific and c
1520: 61 6e 20 62 65 0a 09 20 20 20 20 73 65 74 20 61 an be.. set a
1530: 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 t compile time.
1540: 54 68 69 73 20 63 61 6e 20 62 65 20 6f 76 65 72 This can be over
1550: 72 69 64 64 65 6e 20 76 69 61 20 74 68 65 20 3c ridden via the <
1560: 62 3e 53 53 4c 5f 43 45 52 54 5f 44 49 52 3c 2f b>SSL_CERT_DIR</
1570: 62 3e 0a 09 20 20 20 20 65 6e 76 69 72 6f 6e 6d b>.. environm
1580: 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 3c 2f 64 ent variable.</d
1590: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e d>..<dt><strong>
15a0: 2d 63 61 66 69 6c 65 20 3c 2f 73 74 72 6f 6e 67 -cafile </strong
15b0: 3e 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 ><em>filename</e
15c0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 m></dt>..<dd>Spe
15d0: 63 69 66 69 65 73 20 74 68 65 20 66 69 6c 65 20 cifies the file
15e0: 77 69 74 68 20 74 68 65 20 43 65 72 74 69 66 69 with the Certifi
15f0: 63 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28 cate Authority (
1600: 43 41 29 20 63 65 72 74 69 66 69 63 61 74 65 73 CA) certificates
1610: 0a 09 20 20 20 20 74 6f 20 75 73 65 2e 20 54 68 .. to use. Th
1620: 65 20 64 65 66 61 75 6c 74 20 69 73 20 3c 62 3e e default is <b>
1630: 63 65 72 74 2e 70 65 6d 3c 2f 62 3e 2c 20 69 6e cert.pem</b>, in
1640: 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 64 69 72 the OpenSSL dir
1650: 65 63 74 6f 72 79 2e 20 54 68 69 73 20 63 61 6e ectory. This can
1660: 0a 09 20 20 20 20 61 6c 73 6f 20 62 65 20 6f 76 .. also be ov
1670: 65 72 72 69 64 64 65 6e 20 76 69 61 20 74 68 65 erridden via the
1680: 20 3c 62 3e 53 53 4c 5f 43 45 52 54 5f 46 49 4c <b>SSL_CERT_FIL
1690: 45 3c 2f 62 3e 20 65 6e 76 69 72 6f 6e 6d 65 6e E</b> environmen
16a0: 74 20 76 61 72 69 61 62 6c 65 2e 3c 2f 64 64 3e t variable.</dd>
16b0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 ..<dt><strong>-c
16c0: 65 72 74 66 69 6c 65 3c 2f 73 74 72 6f 6e 67 3e ertfile</strong>
16d0: 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 <em>filename</e
16e0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 m></dt>..<dd>Spe
16f0: 63 69 66 69 65 73 20 74 68 65 20 66 69 6c 65 20 cifies the file
1700: 77 69 74 68 20 74 68 65 20 63 65 72 74 69 66 69 with the certifi
1710: 63 61 74 65 20 74 6f 20 75 73 65 20 69 6e 20 50 cate to use in P
1720: 45 4d 20 66 6f 72 6d 61 74 2e 0a 09 20 20 20 20 EM format...
1730: 54 68 69 73 20 61 6c 73 6f 20 63 6f 6e 74 61 69 This also contai
1740: 6e 73 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 ns the public ke
1750: 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 y.</dd>..<dt><st
1760: 72 6f 6e 67 3e 2d 63 65 72 74 3c 2f 73 74 72 6f rong>-cert</stro
1770: 6e 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 ng> <em>binary_s
1780: 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a tring</em></dt>.
1790: 09 3c 64 64 3e 53 70 65 63 69 66 69 65 73 20 74 .<dd>Specifies t
17a0: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 74 he certificate t
17b0: 6f 20 75 73 65 20 61 73 20 61 20 44 45 52 20 65 o use as a DER e
17c0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 20 28 58 ncoded string (X
17d0: 2e 35 30 39 20 44 45 52 29 2e 3c 2f 64 64 3e 0a .509 DER).</dd>.
17e0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 69 .<dt><strong>-ci
17f0: 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 pher</strong> <e
1800: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 m>string</em></d
1810: 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 t>..<dd>Specifie
1820: 73 20 74 68 65 20 6c 69 73 74 20 6f 66 20 63 69 s the list of ci
1830: 70 68 65 72 73 20 74 6f 20 75 73 65 20 66 6f 72 phers to use for
1840: 20 54 4c 53 20 31 2e 32 20 61 6e 64 20 65 61 72 TLS 1.2 and ear
1850: 6c 69 65 72 2e 20 53 74 72 69 6e 67 20 69 73 20 lier. String is
1860: 61 0a 09 20 20 20 20 63 6f 6c 6f 6e 20 28 22 3a a.. colon (":
1870: 22 29 20 73 65 70 61 72 61 74 65 64 20 6c 69 73 ") separated lis
1880: 74 20 6f 66 20 63 69 70 68 65 72 73 2e 20 43 69 t of ciphers. Ci
1890: 70 68 65 72 73 20 63 61 6e 20 62 65 20 63 6f 6d phers can be com
18a0: 62 69 6e 65 64 20 75 73 69 6e 67 20 74 68 65 0a bined using the.
18b0: 09 20 20 20 20 3c 62 3e 2b 3c 2f 62 3e 20 63 68 . <b>+</b> ch
18c0: 61 72 61 63 74 65 72 2e 20 50 72 65 66 69 78 65 aracter. Prefixe
18d0: 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f s can be used to
18e0: 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20 72 65 6d permanently rem
18f0: 6f 76 65 20 28 22 21 22 29 2c 0a 09 20 20 20 20 ove ("!"),..
1900: 64 65 6c 65 74 65 20 28 22 2d 22 29 2c 20 6f 72 delete ("-"), or
1910: 20 6d 6f 76 65 20 61 20 63 69 70 68 65 72 20 74 move a cipher t
1920: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 o the end of the
1930: 20 6c 69 73 74 20 28 22 2b 22 29 2e 20 4b 65 79 list ("+"). Key
1940: 77 6f 72 64 73 0a 09 20 20 20 20 3c 62 3e 40 53 words.. <b>@S
1950: 54 52 45 4e 47 54 48 3c 2f 62 3e 20 28 73 6f 72 TRENGTH</b> (sor
1960: 74 20 62 79 20 61 6c 67 6f 72 69 74 68 6d 20 6b t by algorithm k
1970: 65 79 20 6c 65 6e 67 74 68 29 2c 20 3c 62 3e 40 ey length), <b>@
1980: 53 45 43 4c 45 56 45 4c 3d 3c 2f 62 3e 3c 69 3e SECLEVEL=</b><i>
1990: 6e 3c 2f 69 3e 0a 09 20 20 20 20 28 73 65 74 20 n</i>.. (set
19a0: 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c 20 74 security level t
19b0: 6f 20 6e 29 2c 20 61 6e 64 20 3c 62 3e 44 45 46 o n), and <b>DEF
19c0: 41 55 4c 54 3c 2f 62 3e 20 28 75 73 65 20 64 65 AULT</b> (use de
19d0: 66 61 75 6c 74 20 63 69 70 68 65 72 20 6c 69 73 fault cipher lis
19e0: 74 2c 0a 09 20 20 20 20 61 74 20 73 74 61 72 74 t,.. at start
19f0: 20 6f 6e 6c 79 29 20 63 61 6e 20 61 6c 73 6f 20 only) can also
1a00: 62 65 20 73 70 65 63 69 66 69 65 64 2e 20 53 65 be specified. Se
1a10: 65 20 4f 70 65 6e 53 53 4c 20 64 6f 63 75 6d 65 e OpenSSL docume
1a20: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 0a ntation for the.
1a30: 09 20 20 20 20 66 75 6c 6c 20 6c 69 73 74 20 6f . full list o
1a40: 66 20 76 61 6c 69 64 20 76 61 6c 75 65 73 2e 3c f valid values.<
1a50: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
1a60: 67 3e 2d 63 69 70 68 65 72 73 75 69 74 65 73 3c g>-ciphersuites<
1a70: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 /strong> <em>str
1a80: 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c ing</em></dt>..<
1a90: 64 64 3e 53 70 65 63 69 66 69 65 73 20 74 68 65 dd>Specifies the
1aa0: 20 6c 69 73 74 20 6f 66 20 63 69 70 68 65 72 20 list of cipher
1ab0: 73 75 69 74 65 73 20 74 6f 20 75 73 65 20 66 6f suites to use fo
1ac0: 72 20 54 4c 53 20 31 2e 33 2e 20 53 74 72 69 6e r TLS 1.3. Strin
1ad0: 67 20 69 73 20 61 20 63 6f 6c 6f 6e 0a 09 20 20 g is a colon..
1ae0: 20 20 28 22 3a 22 29 20 73 65 70 61 72 61 74 65 (":") separate
1af0: 64 20 6c 69 73 74 20 6f 66 20 63 69 70 68 65 72 d list of cipher
1b00: 20 73 75 69 74 65 20 6e 61 6d 65 73 2e 3c 2f 64 suite names.</d
1b10: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e d>..<dt><strong>
1b20: 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 -command</strong
1b30: 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f > <em>callback</
1b40: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 em></dt>..<dd>Sp
1b50: 65 63 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c ecifies the call
1b60: 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 back command to
1b70: 62 65 20 69 6e 76 6f 6b 65 64 20 61 74 20 73 65 be invoked at se
1b80: 76 65 72 61 6c 20 70 6f 69 6e 74 73 20 64 75 72 veral points dur
1b90: 69 6e 67 20 74 68 65 0a 09 20 20 20 20 68 61 6e ing the.. han
1ba0: 64 73 68 61 6b 65 20 74 6f 20 70 61 73 73 20 65 dshake to pass e
1bb0: 72 72 6f 72 73 2c 20 74 72 61 63 69 6e 67 20 69 rrors, tracing i
1bc0: 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6e 64 20 nformation, and
1bd0: 70 72 6f 74 6f 63 6f 6c 20 6d 65 73 73 61 67 65 protocol message
1be0: 73 2e 0a 09 20 20 20 20 53 65 65 20 3c 61 20 68 s... See <a h
1bf0: 72 65 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f ref="#CALLBACK O
1c00: 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b PTIONS">CALLBACK
1c10: 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 20 66 6f 72 OPTIONS</a> for
1c20: 20 6d 6f 72 65 20 69 6e 66 6f 2e 3c 2f 64 64 3e more info.</dd>
1c30: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 64 ..<dt><strong>-d
1c40: 68 70 61 72 61 6d 73 20 3c 2f 73 74 72 6f 6e 67 hparams </strong
1c50: 3e 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 ><em>filename</e
1c60: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 m></dt>..<dd>Spe
1c70: 63 69 66 69 65 73 20 74 68 65 20 44 69 66 66 69 cifies the Diffi
1c80: 65 2d 48 65 6c 6c 6d 61 6e 20 28 44 48 29 20 70 e-Hellman (DH) p
1c90: 61 72 61 6d 65 74 65 72 73 20 66 69 6c 65 2e 3c arameters file.<
1ca0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
1cb0: 67 3e 2d 6b 65 79 66 69 6c 65 3c 2f 73 74 72 6f g>-keyfile</stro
1cc0: 6e 67 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 ng> <em>filename
1cd0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e </em></dt>..<dd>
1ce0: 53 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 Specifies the pr
1cf0: 69 76 61 74 65 20 6b 65 79 20 66 69 6c 65 2e 20 ivate key file.
1d00: 28 64 65 66 61 75 6c 74 20 69 73 20 76 61 6c 75 (default is valu
1d10: 65 20 6f 66 20 2d 63 65 72 74 66 69 6c 65 29 2e e of -certfile).
1d20: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f </dd>..<dt><stro
1d30: 6e 67 3e 2d 6b 65 79 3c 2f 73 74 72 6f 6e 67 3e ng>-key</strong>
1d40: 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 <em>filename</e
1d50: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 m></dt>..<dd>Spe
1d60: 63 69 66 69 65 73 20 74 68 65 20 70 72 69 76 61 cifies the priva
1d70: 74 65 20 6b 65 79 20 74 6f 20 75 73 65 20 61 73 te key to use as
1d80: 20 61 20 44 45 52 20 65 6e 63 6f 64 65 64 20 73 a DER encoded s
1d90: 74 72 69 6e 67 20 28 50 4b 43 53 23 31 20 44 45 tring (PKCS#1 DE
1da0: 52 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 R).</dd>..<dt><s
1db0: 74 72 6f 6e 67 3e 2d 6d 6f 64 65 6c 3c 2f 73 74 trong>-model</st
1dc0: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 rong> <em>channe
1dd0: 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 l</em></dt>..<dd
1de0: 3e 46 6f 72 63 65 20 74 68 69 73 20 63 68 61 6e >Force this chan
1df0: 6e 65 6c 20 74 6f 20 73 68 61 72 65 20 74 68 65 nel to share the
1e00: 20 73 61 6d 65 20 3c 65 6d 3e 3c 73 74 72 6f 6e same <em><stron
1e10: 67 3e 53 53 4c 5f 43 54 58 3c 2f 73 74 72 6f 6e g>SSL_CTX</stron
1e20: 67 3e 3c 2f 65 6d 3e 0a 09 20 20 20 20 73 74 72 g></em>.. str
1e30: 75 63 74 75 72 65 20 61 73 20 74 68 65 20 73 70 ucture as the sp
1e40: 65 63 69 66 69 65 64 20 3c 65 6d 3e 63 68 61 6e ecified <em>chan
1e50: 6e 65 6c 3c 2f 65 6d 3e 2c 20 61 6e 64 0a 09 20 nel</em>, and..
1e60: 20 20 20 74 68 65 72 65 66 6f 72 65 20 73 68 61 therefore sha
1e70: 72 65 20 63 61 6c 6c 62 61 63 6b 73 20 65 74 63 re callbacks etc
1e80: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 .</dd>..<dt><str
1e90: 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64 3c 2f 73 ong>-password</s
1ea0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 trong> <em>callb
1eb0: 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c ack</em></dt>..<
1ec0: 64 64 3e 53 70 65 63 69 66 69 65 73 20 74 68 65 dd>Specifies the
1ed0: 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e callback comman
1ee0: 64 20 74 6f 20 69 6e 76 6f 6b 65 20 77 68 65 6e d to invoke when
1ef0: 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20 74 OpenSSL needs t
1f00: 6f 0a 09 20 20 20 20 6f 62 74 61 69 6e 20 61 20 o.. obtain a
1f10: 70 61 73 73 77 6f 72 64 2e 20 54 68 69 73 20 69 password. This i
1f20: 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 64 s typically used
1f30: 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68 65 20 70 to unlock the p
1f40: 72 69 76 61 74 65 20 6b 65 79 20 6f 66 0a 09 20 rivate key of..
1f50: 20 20 20 61 20 63 65 72 74 69 66 69 63 61 74 65 a certificate
1f60: 2e 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 . The callback s
1f70: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 61 20 70 hould return a p
1f80: 61 73 73 77 6f 72 64 20 73 74 72 69 6e 67 2e 0a assword string..
1f90: 09 20 20 20 20 53 65 65 20 3c 61 20 68 72 65 66 . See <a href
1fa0: 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 ="#CALLBACK OPTI
1fb0: 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 ONS">CALLBACK OP
1fc0: 54 49 4f 4e 53 3c 2f 61 3e 20 66 6f 72 20 6d 6f TIONS</a> for mo
1fd0: 72 65 20 69 6e 66 6f 2e 3c 2f 64 64 3e 0a 09 3c re info.</dd>..<
1fe0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 6f 73 74 dt><strong>-post
1ff0: 5f 68 61 6e 64 73 68 61 6b 65 3c 2f 73 74 72 6f _handshake</stro
2000: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d ng> <em>bool</em
2010: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 6c 6c 6f ></dt>..<dd>Allo
2020: 77 20 70 6f 73 74 2d 68 61 6e 64 73 68 61 6b 65 w post-handshake
2030: 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20 session ticket
2040: 75 70 64 61 74 65 73 2e 3c 2f 64 64 3e 0a 09 3c updates.</dd>..<
2050: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 72 65 71 75 dt><strong>-requ
2060: 65 73 74 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d est </strong><em
2070: 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a >bool</em></dt>.
2080: 09 3c 64 64 3e 52 65 71 75 65 73 74 20 61 20 63 .<dd>Request a c
2090: 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 ertificate from
20a0: 70 65 65 72 20 64 75 72 69 6e 67 20 74 68 65 20 peer during the
20b0: 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 2e 20 54 SSL handshake. T
20c0: 68 69 73 20 69 73 0a 09 20 20 20 20 6e 65 65 64 his is.. need
20d0: 65 64 20 74 6f 20 64 6f 20 63 65 72 74 69 66 69 ed to do certifi
20e0: 63 61 74 65 20 76 61 6c 69 64 61 74 69 6f 6e 2e cate validation.
20f0: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d (default is <em
2100: 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e >true</em>)</dd>
2110: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 72 ..<dt><strong>-r
2120: 65 71 75 69 72 65 3c 2f 73 74 72 6f 6e 67 3e 20 equire</strong>
2130: 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 <em>bool</em></d
2140: 74 3e 0a 09 3c 64 64 3e 52 65 71 75 69 72 65 20 t>..<dd>Require
2150: 61 20 76 61 6c 69 64 20 63 65 72 74 69 66 69 63 a valid certific
2160: 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64 75 ate from peer du
2170: 72 69 6e 67 20 53 53 4c 20 68 61 6e 64 73 68 61 ring SSL handsha
2180: 6b 65 2e 20 49 66 20 74 68 69 73 0a 09 20 20 20 ke. If this..
2190: 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 65 2c is set to true,
21a0: 20 74 68 65 6e 20 3c 73 74 72 6f 6e 67 3e 2d 72 then <strong>-r
21b0: 65 71 75 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 equest</strong>
21c0: 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 73 65 74 must also be set
21d0: 20 74 6f 20 74 72 75 65 0a 09 20 20 20 20 61 6e to true.. an
21e0: 64 20 61 20 65 69 74 68 65 72 20 61 20 2d 63 61 d a either a -ca
21f0: 64 69 72 2c 20 2d 63 61 66 69 6c 65 2c 20 6f 72 dir, -cafile, or
2200: 20 70 6c 61 74 66 6f 72 6d 20 64 65 66 61 75 6c platform defaul
2210: 74 20 6d 75 73 74 20 62 65 20 70 72 6f 76 69 64 t must be provid
2220: 65 64 20 69 6e 0a 09 20 20 20 20 6f 72 64 65 72 ed in.. order
2230: 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 67 61 to validate aga
2240: 69 6e 73 74 2e 20 28 64 65 66 61 75 6c 74 20 69 inst. (default i
2250: 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e s <em>false</em>
2260: 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 )</dd>..<dt><str
2270: 6f 6e 67 3e 2d 73 65 63 75 72 69 74 79 5f 6c 65 ong>-security_le
2280: 76 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d vel</strong> <em
2290: 3e 69 6e 74 65 67 65 72 3c 2f 65 6d 3e 3c 2f 64 >integer</em></d
22a0: 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 t>..<dd>Specifie
22b0: 73 20 74 68 65 20 73 65 63 75 72 69 74 79 20 6c s the security l
22c0: 65 76 65 6c 20 28 76 61 6c 75 65 20 66 72 6f 6d evel (value from
22d0: 20 30 20 74 6f 20 35 29 2e 20 54 68 65 20 73 65 0 to 5). The se
22e0: 63 75 72 69 74 79 20 6c 65 76 65 6c 0a 09 20 20 curity level..
22f0: 20 20 61 66 66 65 63 74 73 20 74 68 65 20 63 69 affects the ci
2300: 70 68 65 72 20 73 75 69 74 65 20 65 6e 63 72 79 pher suite encry
2310: 70 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73 ption algorithms
2320: 2c 20 73 75 70 70 6f 72 74 65 64 20 45 43 43 20 , supported ECC
2330: 63 75 72 76 65 73 2c 0a 09 20 20 20 20 73 75 70 curves,.. sup
2340: 70 6f 72 74 65 64 20 73 69 67 6e 61 74 75 72 65 ported signature
2350: 20 61 6c 67 6f 72 69 74 68 6d 73 2c 20 44 48 20 algorithms, DH
2360: 70 61 72 61 6d 65 74 65 72 20 73 69 7a 65 73 2c parameter sizes,
2370: 20 63 65 72 74 69 66 69 63 61 74 65 20 6b 65 79 certificate key
2380: 0a 09 20 20 20 20 73 69 7a 65 73 20 61 6e 64 20 .. sizes and
2390: 73 69 67 6e 61 74 75 72 65 20 61 6c 67 6f 72 69 signature algori
23a0: 74 68 6d 73 2e 20 54 68 65 20 64 65 66 61 75 6c thms. The defaul
23b0: 74 20 69 73 20 31 2e 20 4c 65 76 65 6c 20 33 20 t is 1. Level 3
23c0: 61 6e 64 20 68 69 67 68 65 72 0a 09 20 20 20 20 and higher..
23d0: 64 69 73 61 62 6c 65 20 73 75 70 70 6f 72 74 20 disable support
23e0: 66 6f 72 20 73 65 73 73 69 6f 6e 20 74 69 63 6b for session tick
23f0: 65 74 73 20 61 6e 64 20 6f 6e 6c 79 20 61 63 63 ets and only acc
2400: 65 70 74 20 63 69 70 68 65 72 20 73 75 69 74 65 ept cipher suite
2410: 73 20 74 68 61 74 0a 09 20 20 20 20 70 72 6f 76 s that.. prov
2420: 69 64 65 20 66 6f 72 77 61 72 64 20 73 65 63 72 ide forward secr
2430: 65 63 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c ecy.</dd>..<dt><
2440: 73 74 72 6f 6e 67 3e 2d 73 65 72 76 65 72 3c 2f strong>-server</
2450: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c strong> <em>bool
2460: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e </em></dt>..<dd>
2470: 53 70 65 63 69 66 69 65 73 20 77 68 65 74 68 65 Specifies whethe
2480: 72 20 74 6f 20 61 63 74 20 61 73 20 61 20 73 65 r to act as a se
2490: 72 76 65 72 20 61 6e 64 20 72 65 73 70 6f 6e 64 rver and respond
24a0: 20 77 69 74 68 20 61 20 73 65 72 76 65 72 0a 09 with a server..
24b0: 20 20 20 20 68 61 6e 64 73 68 61 6b 65 20 77 68 handshake wh
24c0: 65 6e 20 61 20 63 6c 69 65 6e 74 20 63 6f 6e 6e en a client conn
24d0: 65 63 74 73 20 61 6e 64 20 70 72 6f 76 69 64 65 ects and provide
24e0: 73 20 61 20 63 6c 69 65 6e 74 20 68 61 6e 64 73 s a client hands
24f0: 68 61 6b 65 2e 0a 09 20 20 20 20 28 64 65 66 61 hake... (defa
2500: 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65 ult is <em>false
2510: 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 </em>)</dd>..<dt
2520: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 72 76 65 72 ><strong>-server
2530: 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 name</strong> <e
2540: 6d 3e 68 6f 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e m>host</em></dt>
2550: 0a 09 3c 64 64 3e 53 70 65 63 69 66 79 20 73 65 ..<dd>Specify se
2560: 72 76 65 72 27 73 20 68 6f 73 74 6e 61 6d 65 2e rver's hostname.
2570: 20 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f This is used to
2580: 20 73 65 74 20 74 68 65 20 54 4c 53 20 53 65 72 set the TLS Ser
2590: 76 65 72 20 4e 61 6d 65 0a 09 20 20 20 20 49 6e ver Name.. In
25a0: 64 69 63 61 74 69 6f 6e 20 28 53 4e 49 29 20 65 dication (SNI) e
25b0: 78 74 65 6e 73 69 6f 6e 2e 20 53 65 74 20 74 68 xtension. Set th
25c0: 69 73 20 74 6f 20 74 68 65 20 65 78 70 65 63 74 is to the expect
25d0: 65 64 20 73 65 72 76 65 72 6e 61 6d 65 20 69 6e ed servername in
25e0: 20 74 68 65 0a 09 20 20 20 73 65 72 76 65 72 27 the.. server'
25f0: 73 20 63 65 72 74 69 66 69 63 61 74 65 20 6f 72 s certificate or
2600: 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 75 62 6a one of the subj
2610: 65 63 74 41 6c 74 4e 61 6d 65 20 61 6c 74 65 72 ectAltName alter
2620: 6e 61 74 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 nates.</dd>..<dt
2630: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 73 73 69 6f ><strong>-sessio
2640: 6e 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 n_id</strong> <e
2650: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 m>string</em></d
2660: 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 t>..<dd>Specifie
2670: 73 20 74 68 65 20 73 65 73 73 69 6f 6e 20 69 64 s the session id
2680: 20 74 6f 20 72 65 73 75 6d 65 20 73 65 73 73 69 to resume sessi
2690: 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 on.</dd>..<dt><s
26a0: 74 72 6f 6e 67 3e 2d 73 73 6c 32 3c 2f 73 74 72 trong>-ssl2</str
26b0: 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 ong> <em>bool</e
26c0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 m></dt>..<dd>Ena
26d0: 62 6c 65 20 75 73 65 20 6f 66 20 53 53 4c 20 76 ble use of SSL v
26e0: 32 2e 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 2. (default is <
26f0: 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f em>false</em>)</
2700: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 dd>..<dt><strong
2710: 3e 2d 73 73 6c 33 20 3c 2f 73 74 72 6f 6e 67 3e >-ssl3 </strong>
2720: 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 <em>bool</em></d
2730: 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 t>..<dd>Enable u
2740: 73 65 20 6f 66 20 53 53 4c 20 76 33 2e 20 28 64 se of SSL v3. (d
2750: 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 efault is <em>fa
2760: 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 lse</em>)</dd>..
2770: 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 <dt>-<strong>tls
2780: 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 1</strong> <em>b
2790: 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c ool</em></dt>..<
27a0: 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 dd>Enable use of
27b0: 20 54 4c 53 20 76 31 2e 20 28 64 65 66 61 75 6c TLS v1. (defaul
27c0: 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 t is <em>true</e
27d0: 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c m>)</dd>..<dt>-<
27e0: 73 74 72 6f 6e 67 3e 74 6c 73 31 2e 31 3c 2f 73 strong>tls1.1</s
27f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c trong> <em>bool<
2800: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 /em></dt>..<dd>E
2810: 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 54 4c 53 nable use of TLS
2820: 20 76 31 2e 31 20 28 64 65 66 61 75 6c 74 20 69 v1.1 (default i
2830: 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 s <em>true</em>)
2840: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 </dd>..<dt>-<str
2850: 6f 6e 67 3e 74 6c 73 31 2e 32 3c 2f 73 74 72 6f ong>tls1.2</stro
2860: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d ng> <em>bool</em
2870: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 ></dt>..<dd>Enab
2880: 6c 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31 le use of TLS v1
2890: 2e 32 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c .2 (default is <
28a0: 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 em>true</em>)</d
28b0: 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 d>..<dt>-<strong
28c0: 3e 74 6c 73 31 2e 33 3c 2f 73 74 72 6f 6e 67 3e >tls1.3</strong>
28d0: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f <em>bool</em></
28e0: 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 dt>..<dd>Enable
28f0: 75 73 65 20 6f 66 20 54 4c 53 20 76 31 2e 33 20 use of TLS v1.3
2900: 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e (default is <em>
2910: 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a true</em>)</dd>.
2920: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 76 61 .<dt><strong>-va
2930: 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 3c 2f 73 lidatecommand</s
2940: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 trong> <em>callb
2950: 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c ack</em></dt>..<
2960: 64 64 3e 53 70 65 63 69 66 69 65 73 20 74 68 65 dd>Specifies the
2970: 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e callback comman
2980: 64 20 74 6f 20 69 6e 76 6f 6b 65 20 74 6f 20 76 d to invoke to v
2990: 61 6c 69 64 61 74 65 20 70 72 6f 74 6f 63 6f 6c alidate protocol
29a0: 0a 09 20 20 20 20 63 6f 6e 66 69 67 20 70 61 72 .. config par
29b0: 61 6d 65 74 65 72 73 20 64 75 72 69 6e 67 20 74 ameters during t
29c0: 68 65 20 70 72 6f 74 6f 63 6f 6c 20 6e 65 67 6f he protocol nego
29d0: 74 69 61 74 69 6f 6e 20 70 68 61 73 65 2e 20 54 tiation phase. T
29e0: 68 69 73 20 63 61 6e 20 62 65 0a 09 20 20 20 20 his can be..
29f0: 75 73 65 64 20 62 79 20 54 43 4c 20 73 63 72 69 used by TCL scri
2a00: 70 74 73 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 pts to perform t
2a10: 68 65 69 72 20 6f 77 6e 20 63 65 72 74 69 66 69 heir own certifi
2a20: 63 61 74 65 20 76 61 6c 69 64 61 74 69 6f 6e 20 cate validation
2a30: 74 6f 0a 09 20 20 20 20 73 75 70 70 6c 65 6d 65 to.. suppleme
2a40: 6e 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 nt the default v
2a50: 61 6c 69 64 61 74 69 6f 6e 20 70 72 6f 76 69 64 alidation provid
2a60: 65 64 20 62 79 20 4f 70 65 6e 53 53 4c 2e 20 54 ed by OpenSSL. T
2a70: 68 65 20 73 63 72 69 70 74 20 6d 75 73 74 0a 09 he script must..
2a80: 20 20 20 20 72 65 74 75 72 6e 20 61 20 62 6f 6f return a boo
2a90: 6c 65 61 6e 20 74 72 75 65 20 74 6f 20 63 6f 6e lean true to con
2aa0: 74 69 6e 75 65 20 74 68 65 20 6e 65 67 6f 74 69 tinue the negoti
2ab0: 61 74 69 6f 6e 2e 20 53 65 65 0a 09 20 20 20 20 ation. See..
2ac0: 3c 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42 41 <a href="#CALLBA
2ad0: 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c CK OPTIONS">CALL
2ae0: 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e BACK OPTIONS</a>
2af0: 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 2e 3c for more info.<
2b00: 2f 64 64 3e 0a 20 20 20 20 3c 2f 62 6c 6f 63 6b /dd>. </block
2b10: 71 75 6f 74 65 3e 3c 2f 64 6c 3e 0a 20 20 20 20 quote></dl>.
2b20: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 <dt><a name="tls
2b30: 3a 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 ::unimport"><b>t
2b40: 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 20 3c 2f 62 ls::unimport </b
2b50: 3e 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c ><i>channel</i><
2b60: 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 /a></dt>. <dd
2b70: 3e 50 72 6f 76 69 64 65 64 20 66 6f 72 20 73 79 >Provided for sy
2b80: 6d 6d 65 74 72 79 20 74 6f 20 3c 73 74 72 6f 6e mmetry to <stron
2b90: 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 g>tls::import</s
2ba0: 74 72 6f 6e 67 3e 2c 20 74 68 69 73 0a 09 75 6e trong>, this..un
2bb0: 73 74 61 63 6b 73 20 74 68 65 20 65 6e 63 72 79 stacks the encry
2bc0: 70 74 69 6f 6e 20 6f 66 20 61 20 72 65 67 75 6c ption of a regul
2bd0: 61 72 20 54 43 4c 20 63 68 61 6e 6e 65 6c 2e 20 ar TCL channel.
2be0: 41 6e 20 65 72 72 6f 72 0a 09 69 73 20 74 68 72 An error..is thr
2bf0: 6f 77 6e 20 69 66 20 54 4c 53 20 69 73 20 6e 6f own if TLS is no
2c00: 74 20 74 68 65 20 74 6f 70 20 73 74 61 63 6b 65 t the top stacke
2c10: 64 20 63 68 61 6e 6e 65 6c 20 74 79 70 65 2e 3c d channel type.<
2c20: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 /dd>. <dt>&nb
2c30: 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 sp;</dt>. <dt
2c40: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 68 ><a name="tls::h
2c50: 61 6e 64 73 68 61 6b 65 22 3e 3c 73 74 72 6f 6e andshake"><stron
2c60: 67 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 g>tls::handshake
2c70: 3c 2f 73 74 72 6f 6e 67 3e 0a 09 3c 65 6d 3e 63 </strong>..<em>c
2c80: 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c hannel</em></a><
2c90: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 46 6f 72 /dt>. <dd>For
2ca0: 63 65 73 20 68 61 6e 64 73 68 61 6b 65 20 74 6f ces handshake to
2cb0: 20 74 61 6b 65 20 70 6c 61 63 65 2c 20 61 6e 64 take place, and
2cc0: 20 72 65 74 75 72 6e 73 20 30 20 69 66 0a 09 68 returns 0 if..h
2cd0: 61 6e 64 73 68 61 6b 65 20 69 73 20 73 74 69 6c andshake is stil
2ce0: 6c 20 69 6e 20 70 72 6f 67 72 65 73 73 20 28 6e l in progress (n
2cf0: 6f 6e 2d 62 6c 6f 63 6b 69 6e 67 29 2c 20 6f 72 on-blocking), or
2d00: 20 31 20 69 66 0a 09 74 68 65 20 68 61 6e 64 73 1 if..the hands
2d10: 68 61 6b 65 20 77 61 73 20 73 75 63 63 65 73 73 hake was success
2d20: 66 75 6c 2e 20 49 66 20 74 68 65 20 68 61 6e 64 ful. If the hand
2d30: 73 68 61 6b 65 20 66 61 69 6c 65 64 0a 09 74 68 shake failed..th
2d40: 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 is routine will
2d50: 74 68 72 6f 77 20 61 6e 20 65 72 72 6f 72 2e 3c throw an error.<
2d60: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 /dd>. <dt>&nb
2d70: 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 sp;</dt>. <dt
2d80: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73 ><a name="tls::s
2d90: 74 61 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 tatus"><strong>t
2da0: 6c 73 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f ls::status</stro
2db0: 6e 67 3e 0a 09 3c 65 6d 3e 3f 3c 2f 65 6d 3e 3c ng>..<em>?</em><
2dc0: 62 3e 2d 6c 6f 63 61 6c 3c 2f 62 3e 3c 65 6d 3e b>-local</b><em>
2dd0: 3f 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f ? channel</em></
2de0: 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e a></dt>. <dd>
2df0: 52 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 Returns the curr
2e00: 65 6e 74 20 73 74 61 74 75 73 20 6f 66 20 61 6e ent status of an
2e10: 20 53 53 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 SSL channel. Th
2e20: 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69 e result is a li
2e30: 73 74 0a 09 6f 66 20 6b 65 79 2d 76 61 6c 75 65 st..of key-value
2e40: 20 70 61 69 72 73 20 64 65 73 63 72 69 62 69 6e pairs describin
2e50: 67 20 74 68 65 20 53 53 4c 2c 20 63 65 72 74 69 g the SSL, certi
2e60: 66 69 63 61 74 65 2c 20 61 6e 64 20 63 65 72 74 ficate, and cert
2e70: 69 66 69 63 61 74 65 0a 09 76 65 72 69 66 69 63 ificate..verific
2e80: 61 74 69 6f 6e 20 73 74 61 74 75 73 2e 20 49 66 ation status. If
2e90: 20 74 68 65 20 53 53 4c 20 68 61 6e 64 73 68 61 the SSL handsha
2ea0: 6b 65 20 68 61 73 20 6e 6f 74 20 79 65 74 20 63 ke has not yet c
2eb0: 6f 6d 70 6c 65 74 65 64 2c 0a 09 61 6e 20 65 6d ompleted,..an em
2ec0: 70 74 79 20 6c 69 73 74 20 69 73 20 72 65 74 75 pty list is retu
2ed0: 72 6e 65 64 2e 20 49 66 20 3c 62 3e 2d 6c 6f 63 rned. If <b>-loc
2ee0: 61 6c 3c 2f 62 3e 20 69 73 20 73 70 65 63 69 66 al</b> is specif
2ef0: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 0a 09 6c ied, then the..l
2f00: 6f 63 61 6c 20 63 65 72 74 69 66 69 63 61 74 65 ocal certificate
2f10: 20 69 73 20 75 73 65 64 2e 3c 2f 64 64 3e 0a 20 is used.</dd>.
2f20: 20 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a <blockquote>.
2f30: 20 20 20 20 3c 62 3e 53 53 4c 20 53 74 61 74 75 <b>SSL Statu
2f40: 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 s</b>. <dl>..
2f50: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e <dt><strong>alpn
2f60: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 70 72 </strong> <em>pr
2f70: 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e otocol</em></dt>
2f80: 0a 09 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 ..<dd>The protoc
2f90: 6f 6c 20 73 65 6c 65 63 74 65 64 20 61 66 74 65 ol selected afte
2fa0: 72 20 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 r Application-La
2fb0: 79 65 72 20 50 72 6f 74 6f 63 6f 6c 0a 09 20 20 yer Protocol..
2fc0: 20 20 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 Negotiation (A
2fd0: 4c 50 4e 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e LPN).</dd>..<dt>
2fe0: 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65 72 3c 2f <strong>cipher</
2ff0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 69 70 68 strong> <em>ciph
3000: 65 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 er</em></dt>..<d
3010: 64 3e 54 68 65 20 63 75 72 72 65 6e 74 20 63 69 d>The current ci
3020: 70 68 65 72 20 69 6e 20 75 73 65 20 66 6f 72 20 pher in use for
3030: 74 68 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 the session.</dd
3040: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 >..<dt><strong>p
3050: 65 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e eername</strong>
3060: 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f <em>name</em></
3070: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 65 65 dt>..<dd>The pee
3080: 72 6e 61 6d 65 20 66 72 6f 6d 20 74 68 65 20 63 rname from the c
3090: 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e ertificate.</dd>
30a0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 72 ..<dt><strong>pr
30b0: 6f 74 6f 63 6f 6c 3c 2f 73 74 72 6f 6e 67 3e 20 otocol</strong>
30c0: 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e <em>version</em>
30d0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 </dt>..<dd>The p
30e0: 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 20 rotocol version
30f0: 75 73 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e used for the con
3100: 6e 65 63 74 69 6f 6e 3a 0a 09 20 20 20 20 53 53 nection:.. SS
3110: 4c 32 2c 20 53 53 4c 33 2c 20 54 4c 53 31 2c 20 L2, SSL3, TLS1,
3120: 54 4c 53 31 2e 31 2c 20 54 4c 53 31 2e 32 2c 20 TLS1.1, TLS1.2,
3130: 54 4c 53 31 2e 33 2c 20 6f 72 20 75 6e 6b 6e 6f TLS1.3, or unkno
3140: 77 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 wn.</dd>..<dt><s
3150: 74 72 6f 6e 67 3e 73 62 69 74 73 3c 2f 73 74 72 trong>sbits</str
3160: 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c ong> <em>n</em><
3170: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 75 /dt>..<dd>The nu
3180: 6d 62 65 72 20 6f 66 20 62 69 74 73 20 75 73 65 mber of bits use
3190: 64 20 66 6f 72 20 74 68 65 20 73 65 73 73 69 6f d for the sessio
31a0: 6e 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 n key.</dd>..<dt
31b0: 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 ><strong>signatu
31c0: 72 65 48 61 73 68 41 6c 67 6f 72 69 74 68 6d 3c reHashAlgorithm<
31d0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 /strong> <em>alg
31e0: 6f 72 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e orithm</em></dt>
31f0: 0a 09 3c 64 64 3e 54 68 65 20 73 69 67 6e 61 74 ..<dd>The signat
3200: 75 72 65 20 68 61 73 68 20 61 6c 67 6f 72 69 74 ure hash algorit
3210: 68 6d 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 hm.</dd>..<dt><s
3220: 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 54 trong>signatureT
3230: 79 70 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d ype</strong> <em
3240: 3e 74 79 70 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a >type</em></dt>.
3250: 09 3c 64 64 3e 54 68 65 20 73 69 67 6e 61 74 75 .<dd>The signatu
3260: 72 65 20 74 79 70 65 20 76 61 6c 75 65 2e 3c 2f re type value.</
3270: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 dd>..<dt><strong
3280: 3e 76 65 72 69 66 79 44 65 70 74 68 3c 2f 73 74 >verifyDepth</st
3290: 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e rong> <em>n</em>
32a0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4d 61 78 69 6d </dt>..<dd>Maxim
32b0: 75 6d 20 64 65 70 74 68 20 66 6f 72 20 74 68 65 um depth for the
32c0: 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 certificate cha
32d0: 69 6e 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2e in verification.
32e0: 0a 09 20 20 20 20 44 65 66 61 75 6c 74 20 69 73 .. Default is
32f0: 20 2d 31 2c 20 74 6f 20 63 68 65 63 6b 20 61 6c -1, to check al
3300: 6c 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 l.</dd>..<dt><st
3310: 72 6f 6e 67 3e 76 65 72 69 66 79 4d 6f 64 65 3c rong>verifyMode<
3320: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 /strong> <em>lis
3330: 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 t</em></dt>..<dd
3340: 3e 4c 69 73 74 20 6f 66 20 63 65 72 74 69 66 69 >List of certifi
3350: 63 61 74 65 20 76 65 72 69 66 69 63 61 74 69 6f cate verificatio
3360: 6e 20 6d 6f 64 65 73 2e 3c 2f 64 64 3e 0a 09 3c n modes.</dd>..<
3370: 64 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66 dt><strong>verif
3380: 79 52 65 73 75 6c 74 3c 2f 73 74 72 6f 6e 67 3e yResult</strong>
3390: 20 3c 65 6d 3e 72 65 73 75 6c 74 3c 2f 65 6d 3e <em>result</em>
33a0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 </dt>..<dd>Certi
33b0: 66 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74 ficate verificat
33c0: 69 6f 6e 20 72 65 73 75 6c 74 2e 3c 2f 64 64 3e ion result.</dd>
33d0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 61 ..<dt><strong>ca
33e0: 5f 6e 61 6d 65 73 3c 2f 73 74 72 6f 6e 67 3e 20 _names</strong>
33f0: 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 <em>list</em></d
3400: 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 t>..<dd>List of
3410: 74 68 65 20 43 65 72 74 69 66 69 63 61 74 65 20 the Certificate
3420: 41 75 74 68 6f 72 69 74 69 65 73 20 75 73 65 64 Authorities used
3430: 20 74 6f 20 63 72 65 61 74 65 20 74 68 65 20 63 to create the c
3440: 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e ertificate.</dd>
3450: 0a 20 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c . </dl>. <
3460: 62 3e 43 65 72 74 69 66 69 63 61 74 65 20 53 74 b>Certificate St
3470: 61 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c atus</b>. <dl
3480: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 >..<dt><strong>a
3490: 6c 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e ll</strong> <em>
34a0: 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e string</em></dt>
34b0: 0a 09 3c 64 64 3e 44 75 6d 70 20 6f 66 20 61 6c ..<dd>Dump of al
34c0: 6c 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e l certificate in
34d0: 66 6f 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 fo.</dd>..<dt><s
34e0: 74 72 6f 6e 67 3e 76 65 72 73 69 6f 6e 3c 2f 73 trong>version</s
34f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 61 6c 75 65 trong> <em>value
3500: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e </em></dt>..<dd>
3510: 54 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 The certificate
3520: 76 65 72 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c version.</dd>..<
3530: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 72 69 61 dt><strong>seria
3540: 6c 4e 75 6d 62 65 72 3c 2f 73 74 72 6f 6e 67 3e lNumber</strong>
3550: 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e <em>n</em></dt>
3560: 0a 09 3c 64 64 3e 54 68 65 20 73 65 72 69 61 6c ..<dd>The serial
3570: 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 63 number of the c
3580: 65 72 74 69 66 69 63 61 74 65 20 61 73 20 61 20 ertificate as a
3590: 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e hex string.</dd>
35a0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 ..<dt><strong>si
35b0: 67 6e 61 74 75 72 65 3c 2f 73 74 72 6f 6e 67 3e gnature</strong>
35c0: 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f <em>algorithm</
35d0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 69 em></dt>..<dd>Ci
35e0: 70 68 65 72 20 61 6c 67 6f 72 69 74 68 6d 20 75 pher algorithm u
35f0: 73 65 64 20 66 6f 72 20 63 65 72 74 69 66 69 63 sed for certific
3600: 61 74 65 20 73 69 67 6e 61 74 75 72 65 2e 3c 2f ate signature.</
3610: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 dd>..<dt><strong
3620: 3e 69 73 73 75 65 72 3c 2f 73 74 72 6f 6e 67 3e >issuer</strong>
3630: 20 3c 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c 2f 64 74 <em>dn</em></dt
3640: 3e 0a 09 3c 64 64 3e 54 68 65 20 64 69 73 74 69 >..<dd>The disti
3650: 6e 67 75 69 73 68 65 64 20 6e 61 6d 65 20 28 44 nguished name (D
3660: 4e 29 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 N) of the certif
3670: 69 63 61 74 65 20 69 73 73 75 65 72 2e 3c 2f 64 icate issuer.</d
3680: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e d>..<dt><strong>
3690: 6e 6f 74 42 65 66 6f 72 65 3c 2f 73 74 72 6f 6e notBefore</stron
36a0: 67 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e g> <em>date</em>
36b0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 62 </dt>..<dd>The b
36c0: 65 67 69 6e 6e 69 6e 67 20 64 61 74 65 20 6f 66 eginning date of
36d0: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 the certificate
36e0: 20 76 61 6c 69 64 69 74 79 2e 3c 2f 64 64 3e 0a validity.</dd>.
36f0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e 6f 74 .<dt><strong>not
3700: 41 66 74 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c After</strong> <
3710: 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74 em>date</em></dt
3720: 3e 0a 09 3c 64 64 3e 54 68 65 20 65 78 70 69 72 >..<dd>The expir
3730: 61 74 69 6f 6e 20 64 61 74 65 20 6f 66 20 74 68 ation date of th
3740: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 76 61 e certificate va
3750: 6c 69 64 69 74 79 2e 3c 2f 64 64 3e 0a 09 3c 64 lidity.</dd>..<d
3760: 74 3e 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63 t><strong>subjec
3770: 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 t</strong> <em>d
3780: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 n</em></dt>..<dd
3790: 3e 54 68 65 20 64 69 73 74 69 6e 67 75 69 73 68 >The distinguish
37a0: 65 64 20 6e 61 6d 65 20 28 44 4e 29 20 6f 66 20 ed name (DN) of
37b0: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 the certificate
37c0: 73 75 62 6a 65 63 74 2e 0a 09 20 20 20 20 46 69 subject... Fi
37d0: 65 6c 64 73 20 69 6e 63 6c 75 64 65 3a 20 43 6f elds include: Co
37e0: 6d 6d 6f 6e 20 4e 61 6d 65 20 28 43 4e 29 2c 20 mmon Name (CN),
37f0: 4f 72 67 61 6e 69 7a 61 74 69 6f 6e 20 28 4f 29 Organization (O)
3800: 2c 20 4c 6f 63 61 6c 69 74 79 0a 09 20 20 20 20 , Locality..
3810: 6f 72 20 43 69 74 79 20 28 4c 29 2c 20 53 74 61 or City (L), Sta
3820: 74 65 20 6f 72 20 50 72 6f 76 69 6e 63 65 20 28 te or Province (
3830: 53 29 2c 20 61 6e 64 20 43 6f 75 6e 74 72 79 20 S), and Country
3840: 4e 61 6d 65 20 28 43 29 2e 3c 2f 64 64 3e 0a 09 Name (C).</dd>..
3850: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 69 73 73 75 <dt><strong>issu
3860: 65 72 55 6e 69 71 75 65 49 44 3c 2f 73 74 72 6f erUniqueID</stro
3870: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f ng> <em>string</
3880: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 em></dt>..<dd>Th
3890: 65 20 69 73 73 75 65 72 20 75 6e 69 71 75 65 20 e issuer unique
38a0: 69 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 id.</dd>..<dt><s
38b0: 74 72 6f 6e 67 3e 73 75 62 6a 65 63 74 55 6e 69 trong>subjectUni
38c0: 71 75 65 49 44 3c 2f 73 74 72 6f 6e 67 3e 20 3c queID</strong> <
38d0: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f em>string</em></
38e0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 75 62 dt>..<dd>The sub
38f0: 6a 65 63 74 20 75 6e 69 71 75 65 20 69 64 2e 3c ject unique id.<
3900: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
3910: 67 3e 6e 75 6d 5f 65 78 74 65 6e 73 69 6f 6e 73 g>num_extensions
3920: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c </strong> <em>n<
3930: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4e /em></dt>..<dd>N
3940: 75 6d 62 65 72 20 6f 66 20 63 65 72 74 69 66 69 umber of certifi
3950: 63 61 74 65 20 65 78 74 65 6e 73 69 6f 6e 73 2e cate extensions.
3960: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f </dd>..<dt><stro
3970: 6e 67 3e 65 78 74 65 6e 73 69 6f 6e 73 3c 2f 73 ng>extensions</s
3980: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c trong> <em>list<
3990: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c /em></dt>..<dd>L
39a0: 69 73 74 20 6f 66 20 63 65 72 74 69 66 69 63 61 ist of certifica
39b0: 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6e 61 6d te extension nam
39c0: 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 es.</dd>..<dt><s
39d0: 74 72 6f 6e 67 3e 61 75 74 68 6f 72 69 74 79 4b trong>authorityK
39e0: 65 79 49 64 65 6e 74 69 66 69 65 72 3c 2f 73 74 eyIdentifier</st
39f0: 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 rong> <em>string
3a00: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e </em></dt>..<dd>
3a10: 28 41 4b 49 29 20 4b 65 79 20 69 64 65 6e 74 69 (AKI) Key identi
3a20: 66 69 65 72 20 6f 66 20 74 68 65 20 49 73 73 75 fier of the Issu
3a30: 69 6e 67 20 43 41 20 63 65 72 74 69 66 69 63 61 ing CA certifica
3a40: 74 65 20 74 68 61 74 20 73 69 67 6e 65 64 0a 09 te that signed..
3a50: 20 20 20 20 74 68 65 20 53 53 4c 20 63 65 72 74 the SSL cert
3a60: 69 66 69 63 61 74 65 20 61 73 20 61 20 68 65 78 ificate as a hex
3a70: 20 73 74 72 69 6e 67 2e 20 54 68 69 73 20 76 61 string. This va
3a80: 6c 75 65 20 6d 61 74 63 68 65 73 20 74 68 65 20 lue matches the
3a90: 53 4b 49 0a 09 20 20 20 20 76 61 6c 75 65 20 6f SKI.. value o
3aa0: 66 20 74 68 65 20 49 6e 74 65 72 6d 65 64 69 61 f the Intermedia
3ab0: 74 65 20 43 41 20 63 65 72 74 69 66 69 63 61 74 te CA certificat
3ac0: 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 e.</dd>..<dt><st
3ad0: 72 6f 6e 67 3e 73 75 62 6a 65 63 74 4b 65 79 49 rong>subjectKeyI
3ae0: 64 65 6e 74 69 66 69 65 72 3c 2f 73 74 72 6f 6e dentifier</stron
3af0: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 g> <em>string</e
3b00: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 28 53 4b m></dt>..<dd>(SK
3b10: 49 29 20 48 61 73 68 20 6f 66 20 74 68 65 20 70 I) Hash of the p
3b20: 75 62 6c 69 63 20 6b 65 79 20 69 6e 73 69 64 65 ublic key inside
3b30: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 the certificate
3b40: 20 61 73 20 61 20 68 65 78 0a 09 20 20 20 20 73 as a hex.. s
3b50: 74 72 69 6e 67 2e 20 55 73 65 64 20 74 6f 20 69 tring. Used to i
3b60: 64 65 6e 74 69 66 79 20 63 65 72 74 69 66 69 63 dentify certific
3b70: 61 74 65 73 20 74 68 61 74 20 63 6f 6e 74 61 69 ates that contai
3b80: 6e 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 09 n a particular..
3b90: 20 20 20 20 70 75 62 6c 69 63 20 6b 65 79 2e 3c public key.<
3ba0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
3bb0: 67 3e 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 g>subjectAltName
3bc0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 </strong> <em>li
3bd0: 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 st</em></dt>..<d
3be0: 64 3e 4c 69 73 74 20 6f 66 20 61 6c 6c 20 6f 66 d>List of all of
3bf0: 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 the alternative
3c00: 20 64 6f 6d 61 69 6e 20 6e 61 6d 65 73 2c 20 73 domain names, s
3c10: 75 62 20 64 6f 6d 61 69 6e 73 2c 0a 09 20 20 20 ub domains,..
3c20: 20 61 6e 64 20 49 50 20 61 64 64 72 65 73 73 65 and IP addresse
3c30: 73 20 74 68 61 74 20 61 72 65 20 73 65 63 75 72 s that are secur
3c40: 65 64 20 62 79 20 74 68 65 20 63 65 72 74 69 66 ed by the certif
3c50: 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 icate.</dd>..<dt
3c60: 3e 3c 73 74 72 6f 6e 67 3e 6f 63 73 70 3c 2f 73 ><strong>ocsp</s
3c70: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c trong> <em>list<
3c80: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c /em></dt>..<dd>L
3c90: 69 73 74 20 6f 66 20 61 6c 6c 20 4f 6e 6c 69 6e ist of all Onlin
3ca0: 65 20 43 65 72 74 69 66 69 63 61 74 65 20 53 74 e Certificate St
3cb0: 61 74 75 73 20 50 72 6f 74 6f 63 6f 6c 20 28 4f atus Protocol (O
3cc0: 43 53 50 29 20 55 52 4c 73 2e 3c 2f 64 64 3e 0a CSP) URLs.</dd>.
3cd0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 65 72 .<dt><strong>cer
3ce0: 74 69 66 69 63 61 74 65 3c 2f 73 74 72 6f 6e 67 tificate</strong
3cf0: 3e 20 3c 65 6d 3e 63 65 72 74 3c 2f 65 6d 3e 3c > <em>cert</em><
3d00: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 50 45 /dt>..<dd>The PE
3d10: 4d 20 65 6e 63 6f 64 65 64 20 63 65 72 74 69 66 M encoded certif
3d20: 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 icate.</dd>..<dt
3d30: 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 ><strong>signatu
3d40: 72 65 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 reAlgorithm</str
3d50: 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 ong> <em>algorit
3d60: 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 hm</em></dt>..<d
3d70: 64 3e 43 69 70 68 65 72 20 61 6c 67 6f 72 69 74 d>Cipher algorit
3d80: 68 6d 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 hm used for the
3d90: 63 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e certificate sign
3da0: 61 74 75 72 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 ature.</dd>..<dt
3db0: 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 ><strong>signatu
3dc0: 72 65 56 61 6c 75 65 3c 2f 73 74 72 6f 6e 67 3e reValue</strong>
3dd0: 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e <em>string</em>
3de0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 </dt>..<dd>Certi
3df0: 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 ficate signature
3e00: 20 61 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 as a hex string
3e10: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 .</dd>..<dt><str
3e20: 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 44 69 67 ong>signatureDig
3e30: 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d est</strong> <em
3e40: 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 >version</em></d
3e50: 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66 69 63 t>..<dd>Certific
3e60: 61 74 65 20 73 69 67 6e 69 6e 67 20 64 69 67 65 ate signing dige
3e70: 73 74 20 61 73 20 61 20 68 65 78 20 73 74 72 69 st as a hex stri
3e80: 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 ng.</dd>..<dt><s
3e90: 74 72 6f 6e 67 3e 70 75 62 6c 69 63 4b 65 79 41 trong>publicKeyA
3ea0: 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67 lgorithm</strong
3eb0: 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c > <em>algorithm<
3ec0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 /em></dt>..<dd>C
3ed0: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 ertificate signa
3ee0: 74 75 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20 ture public key
3ef0: 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64 3e 0a algorithm.</dd>.
3f00: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 75 62 .<dt><strong>pub
3f10: 6c 69 63 4b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20 licKey</strong>
3f20: 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c <em>string</em><
3f30: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66 /dt>..<dd>Certif
3f40: 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 icate signature
3f50: 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20 61 20 public key as a
3f60: 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e hex string.</dd>
3f70: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 62 69 ..<dt><strong>bi
3f80: 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e ts</strong> <em>
3f90: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 n</em></dt>..<dd
3fa0: 3e 4e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20 >Number of bits
3fb0: 75 73 65 64 20 66 6f 72 20 63 65 72 74 69 66 69 used for certifi
3fc0: 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 6b cate signature k
3fd0: 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 ey.</dd>..<dt><s
3fe0: 74 72 6f 6e 67 3e 73 65 6c 66 5f 73 69 67 6e 65 trong>self_signe
3ff0: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 d</strong> <em>b
4000: 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e oolean</em></dt>
4010: 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 ..<dd>Whether th
4020: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73 69 e certificate si
4030: 67 6e 61 74 75 72 65 20 69 73 20 73 65 6c 66 20 gnature is self
4040: 73 69 67 6e 65 64 2e 3c 2f 64 64 3e 0a 09 3c 64 signed.</dd>..<d
4050: 74 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 31 5f 68 t><strong>sha1_h
4060: 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d ash</strong> <em
4070: 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a >hash</em></dt>.
4080: 09 3c 64 64 3e 54 68 65 20 53 48 41 31 20 68 61 .<dd>The SHA1 ha
4090: 73 68 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 sh of the certif
40a0: 69 63 61 74 65 20 61 73 20 61 20 68 65 78 20 73 icate as a hex s
40b0: 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 tring.</dd>..<dt
40c0: 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 32 35 36 5f ><strong>sha256_
40d0: 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 hash</strong> <e
40e0: 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74 3e m>hash</em></dt>
40f0: 0a 09 3c 64 64 3e 54 68 65 20 53 48 41 32 35 36 ..<dd>The SHA256
4100: 20 68 61 73 68 20 6f 66 20 74 68 65 20 63 65 72 hash of the cer
4110: 74 69 66 69 63 61 74 65 20 61 73 20 61 20 68 65 tificate as a he
4120: 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 20 x string.</dd>.
4130: 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 62 </dl>. </b
4140: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20 lockquote>..
4150: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 <dt><a name="tls
4160: 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 73 ::connection"><s
4170: 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 trong>tls::conne
4180: 63 74 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 0a 20 ction</strong>.
4190: 20 20 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f <em>channel</
41a0: 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 em></a></dt>.
41b0: 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 <dd>Returns the
41c0: 20 63 75 72 72 65 6e 74 20 63 6f 6e 6e 65 63 74 current connect
41d0: 69 6f 6e 20 73 74 61 74 75 73 20 6f 66 20 61 6e ion status of an
41e0: 20 53 53 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 SSL channel. Th
41f0: 65 0a 09 72 65 73 75 6c 74 20 69 73 20 61 20 6c e..result is a l
4200: 69 73 74 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 ist of key-value
4210: 20 70 61 69 72 73 20 64 65 73 63 72 69 62 69 6e pairs describin
4220: 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e g the connection
4230: 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 62 6c 6f 63 .</dd>. <bloc
4240: 6b 71 75 6f 74 65 3e 0a 20 20 20 20 3c 62 3e 53 kquote>. <b>S
4250: 53 4c 20 53 74 61 74 75 73 3c 2f 62 3e 0a 20 20 SL Status</b>.
4260: 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 <dl>..<dt><str
4270: 6f 6e 67 3e 73 74 61 74 65 3c 2f 73 74 72 6f 6e ong>state</stron
4280: 67 3e 20 3c 65 6d 3e 73 74 61 74 65 3c 2f 65 6d g> <em>state</em
4290: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 74 61 74 ></dt>..<dd>Stat
42a0: 65 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 e of the connect
42b0: 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c ion.</dd>..<dt><
42c0: 73 74 72 6f 6e 67 3e 73 65 72 76 65 72 6e 61 6d strong>servernam
42d0: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e e</strong> <em>n
42e0: 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c ame</em></dt>..<
42f0: 64 64 3e 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 dd>The name of t
4300: 68 65 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 he connected to
4310: 73 65 72 76 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 server.</dd>..<d
4320: 74 3e 3c 73 74 72 6f 6e 67 3e 70 72 6f 74 6f 63 t><strong>protoc
4330: 6f 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e ol</strong> <em>
4340: 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 version</em></dt
4350: 3e 0a 09 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f >..<dd>The proto
4360: 63 6f 6c 20 76 65 72 73 69 6f 6e 20 75 73 65 64 col version used
4370: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 for the connect
4380: 69 6f 6e 3a 0a 09 20 20 20 20 53 53 4c 32 2c 20 ion:.. SSL2,
4390: 53 53 4c 33 2c 20 54 4c 53 31 2c 20 54 4c 53 31 SSL3, TLS1, TLS1
43a0: 2e 31 2c 20 54 4c 53 31 2e 32 2c 20 54 4c 53 31 .1, TLS1.2, TLS1
43b0: 2e 33 2c 20 6f 72 20 75 6e 6b 6e 6f 77 6e 2e 3c .3, or unknown.<
43c0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
43d0: 67 3e 72 65 6e 65 67 6f 74 69 61 74 69 6f 6e 5f g>renegotiation_
43e0: 61 6c 6c 6f 77 65 64 3c 2f 73 74 72 6f 6e 67 3e allowed</strong>
43f0: 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d <em>boolean</em
4400: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 ></dt>..<dd>Whet
4410: 68 65 72 20 70 72 6f 74 6f 63 6f 6c 20 72 65 6e her protocol ren
4420: 65 67 6f 74 69 61 74 69 6f 6e 20 69 73 20 73 75 egotiation is su
4430: 70 70 6f 72 74 65 64 20 6f 72 20 6e 6f 74 2e 3c pported or not.<
4440: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
4450: 67 3e 73 65 63 75 72 69 74 79 5f 6c 65 76 65 6c g>security_level
4460: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 65 </strong> <em>le
4470: 76 65 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c vel</em></dt>..<
4480: 64 64 3e 54 68 65 20 73 65 63 75 72 69 74 79 20 dd>The security
4490: 6c 65 76 65 6c 20 75 73 65 64 20 66 6f 72 20 73 level used for s
44a0: 65 6c 65 63 74 69 6f 6e 20 6f 66 20 63 69 70 68 election of ciph
44b0: 65 72 73 2c 20 6b 65 79 20 73 69 7a 65 2c 20 65 ers, key size, e
44c0: 74 63 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 tc.</dd>..<dt><s
44d0: 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 72 65 trong>session_re
44e0: 75 73 65 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 used</strong> <e
44f0: 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f m>boolean</em></
4500: 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 dt>..<dd>Whether
4510: 20 74 68 65 20 73 65 73 73 69 6f 6e 20 68 61 73 the session has
4520: 20 62 65 65 6e 20 72 65 75 73 65 64 20 6f 72 20 been reused or
4530: 6e 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c not.</dd>..<dt><
4540: 73 74 72 6f 6e 67 3e 69 73 5f 73 65 72 76 65 72 strong>is_server
4550: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f </strong> <em>bo
4560: 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a olean</em></dt>.
4570: 09 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 65 .<dd>Whether the
4580: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 connection is c
4590: 6f 6e 66 69 67 75 72 65 64 20 61 73 20 61 20 73 onfigured as a s
45a0: 65 72 76 65 72 20 28 31 29 20 6f 72 20 63 6c 69 erver (1) or cli
45b0: 65 6e 74 20 28 30 29 2e 3c 2f 64 64 3e 0a 09 3c ent (0).</dd>..<
45c0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 6f 6d 70 72 dt><strong>compr
45d0: 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 ession</strong>
45e0: 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 <em>mode</em></d
45f0: 74 3e 0a 09 3c 64 64 3e 43 6f 6d 70 72 65 73 73 t>..<dd>Compress
4600: 69 6f 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64 64 3e ion method.</dd>
4610: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 65 78 ..<dt><strong>ex
4620: 70 61 6e 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e pansion</strong>
4630: 20 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f <em>mode</em></
4640: 64 74 3e 0a 09 3c 64 64 3e 45 78 70 61 6e 73 69 dt>..<dd>Expansi
4650: 6f 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64 64 3e 0a on method.</dd>.
4660: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 61 4c .<dt><strong>caL
4670: 69 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d ist</strong> <em
4680: 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a >list</em></dt>.
4690: 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 43 65 72 .<dd>List of Cer
46a0: 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 tificate Authori
46b0: 74 69 65 73 20 28 43 41 29 20 66 6f 72 20 58 2e ties (CA) for X.
46c0: 35 30 39 20 63 65 72 74 69 66 69 63 61 74 65 2e 509 certificate.
46d0: 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a </dd>. </dl>.
46e0: 20 20 20 20 3c 62 3e 43 69 70 68 65 72 20 49 6e <b>Cipher In
46f0: 66 6f 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a fo</b>. <dl>.
4700: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 .<dt><strong>cip
4710: 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d her</strong> <em
4720: 3e 63 69 70 68 65 72 3c 2f 65 6d 3e 3c 2f 64 74 >cipher</em></dt
4730: 3e 0a 09 3c 64 64 3e 54 68 65 20 63 75 72 72 65 >..<dd>The curre
4740: 6e 74 20 63 69 70 68 65 72 20 69 6e 20 75 73 65 nt cipher in use
4750: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 for the connect
4760: 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c ion.</dd>..<dt><
4770: 73 74 72 6f 6e 67 3e 73 74 61 6e 64 61 72 64 5f strong>standard_
4780: 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 name</strong> <e
4790: 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e m>name</em></dt>
47a0: 0a 09 3c 64 64 3e 54 68 65 20 73 74 61 6e 64 61 ..<dd>The standa
47b0: 72 64 20 52 46 43 20 6e 61 6d 65 20 6f 66 20 63 rd RFC name of c
47c0: 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 ipher.</dd>..<dt
47d0: 3e 3c 73 74 72 6f 6e 67 3e 61 6c 67 6f 72 69 74 ><strong>algorit
47e0: 68 6d 5f 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e hm_bits</strong>
47f0: 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e <em>n</em></dt>
4800: 0a 09 3c 64 64 3e 54 68 65 20 6e 75 6d 62 65 72 ..<dd>The number
4810: 20 6f 66 20 70 72 6f 63 65 73 73 65 64 20 62 69 of processed bi
4820: 74 73 20 75 73 65 64 20 66 6f 72 20 63 69 70 68 ts used for ciph
4830: 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 er.</dd>..<dt><s
4840: 74 72 6f 6e 67 3e 73 65 63 72 65 74 5f 62 69 74 trong>secret_bit
4850: 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e s</strong> <em>n
4860: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e </em></dt>..<dd>
4870: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 The number of se
4880: 63 72 65 74 20 62 69 74 73 20 75 73 65 64 20 66 cret bits used f
4890: 6f 72 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a or cipher.</dd>.
48a0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6d 69 6e .<dt><strong>min
48b0: 5f 76 65 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 _version</strong
48c0: 3e 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 > <em>version</e
48d0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 m></dt>..<dd>The
48e0: 20 6d 69 6e 69 6d 75 6d 20 70 72 6f 74 6f 63 6f minimum protoco
48f0: 6c 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 63 69 l version for ci
4900: 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e pher.</dd>..<dt>
4910: 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65 72 5f 69 <strong>cipher_i
4920: 73 5f 61 65 61 64 3c 2f 73 74 72 6f 6e 67 3e 20 s_aead</strong>
4930: 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e <em>boolean</em>
4940: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 </dt>..<dd>Wheth
4950: 65 72 20 74 68 65 20 63 69 70 68 65 72 20 69 73 er the cipher is
4960: 20 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 45 Authenticated E
4970: 6e 63 72 79 70 74 69 6f 6e 20 77 69 74 68 0a 09 ncryption with..
4980: 20 20 20 20 41 73 73 6f 63 69 61 74 65 64 20 44 Associated D
4990: 61 74 61 20 28 41 45 41 44 29 2e 3c 2f 64 64 3e ata (AEAD).</dd>
49a0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 ..<dt><strong>ci
49b0: 70 68 65 72 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e pher_id</strong>
49c0: 20 3c 65 6d 3e 69 64 3c 2f 65 6d 3e 3c 2f 64 74 <em>id</em></dt
49d0: 3e 0a 09 3c 64 64 3e 54 68 65 20 4f 70 65 6e 53 >..<dd>The OpenS
49e0: 53 4c 20 63 69 70 68 65 72 20 69 64 2e 3c 2f 64 SL cipher id.</d
49f0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e d>..<dt><strong>
4a00: 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 73 74 72 description</str
4a10: 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c ong> <em>string<
4a20: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 /em></dt>..<dd>A
4a30: 20 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f text descriptio
4a40: 6e 20 6f 66 20 74 68 65 20 63 69 70 68 65 72 2e n of the cipher.
4a50: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f </dd>..<dt><stro
4a60: 6e 67 3e 68 61 6e 64 73 68 61 6b 65 5f 64 69 67 ng>handshake_dig
4a70: 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d est</strong> <em
4a80: 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 >boolean</em></d
4a90: 74 3e 0a 09 3c 64 64 3e 44 69 67 65 73 74 20 75 t>..<dd>Digest u
4aa0: 73 65 64 20 64 75 72 69 6e 67 20 68 61 6e 64 73 sed during hands
4ab0: 68 61 6b 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c hake.</dd>. <
4ac0: 2f 64 6c 3e 0a 20 20 20 20 3c 62 3e 53 65 73 73 /dl>. <b>Sess
4ad0: 69 6f 6e 20 49 6e 66 6f 3c 2f 62 3e 0a 20 20 20 ion Info</b>.
4ae0: 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f <dl>..<dt><stro
4af0: 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e ng>alpn</strong>
4b00: 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 <em>protocol</e
4b10: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 m></dt>..<dd>The
4b20: 20 70 72 6f 74 6f 63 6f 6c 20 73 65 6c 65 63 74 protocol select
4b30: 65 64 20 61 66 74 65 72 20 41 70 70 6c 69 63 61 ed after Applica
4b40: 74 69 6f 6e 2d 4c 61 79 65 72 20 50 72 6f 74 6f tion-Layer Proto
4b50: 63 6f 6c 0a 09 20 20 20 20 4e 65 67 6f 74 69 61 col.. Negotia
4b60: 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 3c 2f 64 64 tion (ALPN).</dd
4b70: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 72 >..<dt><strong>r
4b80: 65 73 75 6d 61 62 6c 65 3c 2f 73 74 72 6f 6e 67 esumable</strong
4b90: 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 > <em>boolean</e
4ba0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 m></dt>..<dd>Whe
4bb0: 74 68 65 72 20 74 68 65 20 73 65 73 73 69 6f 6e ther the session
4bc0: 20 63 61 6e 20 62 65 20 72 65 73 75 6d 65 64 20 can be resumed
4bd0: 6f 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 or not.</dd>..<d
4be0: 74 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 72 74 5f t><strong>start_
4bf0: 74 69 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 time</strong> <e
4c00: 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f m>seconds</em></
4c10: 64 74 3e 0a 09 3c 64 64 3e 54 69 6d 65 20 73 69 dt>..<dd>Time si
4c20: 6e 63 65 20 73 65 73 73 69 6f 6e 20 73 74 61 72 nce session star
4c30: 74 65 64 20 69 6e 20 73 65 63 6f 6e 64 73 20 73 ted in seconds s
4c40: 69 6e 63 65 20 65 70 6f 63 68 2e 3c 2f 64 64 3e ince epoch.</dd>
4c50: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 74 69 ..<dt><strong>ti
4c60: 6d 65 6f 75 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c meout</strong> <
4c70: 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c em>seconds</em><
4c80: 2f 64 74 3e 0a 09 3c 64 64 3e 4d 61 78 20 64 75 /dt>..<dd>Max du
4c90: 72 61 74 69 6f 6e 20 6f 66 20 73 65 73 73 69 6f ration of sessio
4ca0: 6e 20 69 6e 20 73 65 63 6f 6e 64 73 20 62 65 66 n in seconds bef
4cb0: 6f 72 65 20 74 69 6d 65 2d 6f 75 74 2e 3c 2f 64 ore time-out.</d
4cc0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e d>..<dt><strong>
4cd0: 6c 69 66 65 74 69 6d 65 3c 2f 73 74 72 6f 6e 67 lifetime</strong
4ce0: 3e 20 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 > <em>seconds</e
4cf0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 73 m></dt>..<dd>Ses
4d00: 73 69 6f 6e 20 74 69 63 6b 65 74 20 6c 69 66 65 sion ticket life
4d10: 74 69 6d 65 20 68 69 6e 74 20 69 6e 20 73 65 63 time hint in sec
4d20: 6f 6e 64 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e onds.</dd>..<dt>
4d30: 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f <strong>session_
4d40: 69 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e id</strong> <em>
4d50: 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 binary_string</e
4d60: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 m></dt>..<dd>Uni
4d70: 71 75 65 20 73 65 73 73 69 6f 6e 20 69 64 20 66 que session id f
4d80: 6f 72 20 75 73 65 20 69 6e 20 72 65 73 75 6d 69 or use in resumi
4d90: 6e 67 20 74 68 65 20 73 65 73 73 69 6f 6e 2e 3c ng the session.<
4da0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e /dd>..<dt><stron
4db0: 67 3e 73 65 73 73 69 6f 6e 5f 74 69 63 6b 65 74 g>session_ticket
4dc0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 69 </strong> <em>bi
4dd0: 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d 3e nary_string</em>
4de0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71 75 </dt>..<dd>Uniqu
4df0: 65 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 e session ticket
4e00: 20 66 6f 72 20 75 73 65 20 69 6e 20 72 65 73 75 for use in resu
4e10: 6d 69 6e 67 20 74 68 65 20 73 65 73 73 69 6f 6e ming the session
4e20: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 .</dd>..<dt><str
4e30: 6f 6e 67 3e 74 69 63 6b 65 74 5f 61 70 70 5f 64 ong>ticket_app_d
4e40: 61 74 61 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d ata</strong> <em
4e50: 3e 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f >binary_string</
4e60: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e em></dt>..<dd>Un
4e70: 69 71 75 65 20 73 65 73 73 69 6f 6e 20 74 69 63 ique session tic
4e80: 6b 65 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 ket application
4e90: 64 61 74 61 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e data.</dd>..<dt>
4ea0: 3c 73 74 72 6f 6e 67 3e 6d 61 73 74 65 72 5f 6b <strong>master_k
4eb0: 65 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e ey</strong> <em>
4ec0: 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 binary_string</e
4ed0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 m></dt>..<dd>Uni
4ee0: 71 75 65 20 73 65 73 73 69 6f 6e 20 6d 61 73 74 que session mast
4ef0: 65 72 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 er key.</dd>..<d
4f00: 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f t><strong>sessio
4f10: 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 3c 2f 73 74 n_cache_mode</st
4f20: 72 6f 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c 2f rong> <em>mode</
4f30: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 em></dt>..<dd>Se
4f40: 72 76 65 72 20 63 61 63 68 65 20 6d 6f 64 65 20 rver cache mode
4f50: 28 63 6c 69 65 6e 74 2c 20 73 65 72 76 65 72 2c (client, server,
4f60: 20 6f 72 20 62 6f 74 68 29 2e 3c 2f 64 64 3e 0a or both).</dd>.
4f70: 20 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f </dl>. </
4f80: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 blockquote>..
4f90: 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c <dt><a name="tl
4fa0: 73 3a 3a 63 69 70 68 65 72 73 22 3e 3c 73 74 72 s::ciphers"><str
4fb0: 6f 6e 67 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73 ong>tls::ciphers
4fc0: 3c 2f 73 74 72 6f 6e 67 3e 0a 09 3c 65 6d 3e 3f </strong>..<em>?
4fd0: 70 72 6f 74 6f 63 6f 6c 3f 20 3f 76 65 72 62 6f protocol? ?verbo
4fe0: 73 65 3f 20 3f 73 75 70 70 6f 72 74 65 64 3f 3c se? ?supported?<
4ff0: 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 /em></a></dt>.
5000: 20 20 3c 64 64 3e 57 69 74 68 6f 75 74 20 61 6e <dd>Without an
5010: 79 20 61 72 67 73 2c 20 72 65 74 75 72 6e 73 20 y args, returns
5020: 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 73 79 a list of all sy
5030: 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 73 20 mmetric ciphers
5040: 66 6f 72 20 75 73 65 0a 09 77 69 74 68 20 74 68 for use..with th
5050: 65 20 3c 73 74 72 6f 6e 67 3e 2d 63 69 70 68 65 e <strong>-ciphe
5060: 72 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f r</strong> optio
5070: 6e 2e 20 57 69 74 68 20 3c 65 6d 3e 70 72 6f 74 n. With <em>prot
5080: 6f 63 6f 6c 3c 2f 65 6d 3e 2c 0a 09 6f 6e 6c 79 ocol</em>,..only
5090: 20 74 68 65 20 63 69 70 68 65 72 73 20 73 75 70 the ciphers sup
50a0: 70 6f 72 74 65 64 20 66 6f 72 20 74 68 61 74 20 ported for that
50b0: 70 72 6f 74 6f 63 6f 6c 20 61 72 65 20 72 65 74 protocol are ret
50c0: 75 72 6e 65 64 2e 20 53 65 65 0a 09 3c 61 20 68 urned. See..<a h
50d0: 72 65 66 3d 22 23 74 6c 73 3a 3a 70 72 6f 74 6f ref="#tls::proto
50e0: 63 6f 6c 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c cols"><strong>tl
50f0: 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 73 74 s::protocols</st
5100: 72 6f 6e 67 3e 3c 2f 61 3e 20 63 6f 6d 6d 61 6e rong></a> comman
5110: 64 0a 09 66 6f 72 20 74 68 65 20 73 75 70 70 6f d..for the suppo
5120: 72 74 65 64 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 rted protocols.
5130: 49 66 20 3c 65 6d 3e 76 65 72 62 6f 73 65 3c 2f If <em>verbose</
5140: 65 6d 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 em> is specified
5150: 20 61 73 20 74 72 75 65 0a 09 74 68 65 6e 20 61 as true..then a
5160: 20 76 65 72 62 6f 73 65 2c 20 68 75 6d 61 6e 20 verbose, human
5170: 72 65 61 64 61 62 6c 65 20 6c 69 73 74 20 69 73 readable list is
5180: 20 72 65 74 75 72 6e 65 64 20 77 69 74 68 20 61 returned with a
5190: 64 64 69 74 69 6f 6e 61 6c 0a 09 69 6e 66 6f 72 dditional..infor
51a0: 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 63 69 mation on the ci
51b0: 70 68 65 72 2e 20 49 66 20 3c 65 6d 3e 73 75 70 pher. If <em>sup
51c0: 70 6f 72 74 65 64 3c 2f 65 6d 3e 20 69 73 20 73 ported</em> is s
51d0: 70 65 63 69 66 69 65 64 20 61 73 20 74 72 75 65 pecified as true
51e0: 2c 0a 09 74 68 65 6e 20 6f 6e 6c 79 20 74 68 65 ,..then only the
51f0: 20 63 69 70 68 65 72 73 20 73 75 70 70 6f 72 74 ciphers support
5200: 65 64 20 66 6f 72 20 70 72 6f 74 6f 63 6f 6c 20 ed for protocol
5210: 77 69 6c 6c 20 62 65 20 6c 69 73 74 65 64 2e 3c will be listed.<
5220: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 /dd>. <dt>&nb
5230: 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 sp;</dt>. <dt
5240: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 70 ><a name="tls::p
5250: 72 6f 74 6f 63 6f 6c 73 22 3e 3c 73 74 72 6f 6e rotocols"><stron
5260: 67 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 g>tls::protocols
5270: 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64 </strong></a></d
5280: 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72 t>. <dd>Retur
5290: 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 ns a list of the
52a0: 20 73 75 70 70 6f 72 74 65 64 20 53 53 4c 2f 54 supported SSL/T
52b0: 4c 53 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 56 61 LS protocols. Va
52c0: 6c 69 64 20 76 61 6c 75 65 73 20 61 72 65 3a 0a lid values are:.
52d0: 09 3c 62 3e 73 73 6c 32 3c 2f 62 3e 2c 20 3c 62 .<b>ssl2</b>, <b
52e0: 3e 73 73 6c 33 3c 2f 62 3e 2c 20 3c 62 3e 74 6c >ssl3</b>, <b>tl
52f0: 73 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e s1</b>, <b>tls1.
5300: 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e 32 1</b>, <b>tls1.2
5310: 3c 2f 62 3e 2c 0a 09 61 6e 64 20 3c 62 3e 74 6c </b>,..and <b>tl
5320: 73 31 2e 33 3c 2f 62 3e 2e 20 45 78 61 63 74 20 s1.3</b>. Exact
5330: 6c 69 73 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 list depends on
5340: 4f 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 OpenSSL version
5350: 61 6e 64 0a 09 63 6f 6d 70 69 6c 65 20 74 69 6d and..compile tim
5360: 65 20 66 6c 61 67 73 2e 3c 2f 64 64 3e 0a 20 20 e flags.</dd>.
5370: 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 <dt> </dt
5380: 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d >. <dt><a nam
5390: 65 3d 22 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 22 e="tls::version"
53a0: 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76 65 ><strong>tls::ve
53b0: 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 3c 2f rsion</strong></
53c0: 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e a></dt>. <dd>
53d0: 52 65 74 75 72 6e 73 20 74 68 65 20 4f 70 65 6e Returns the Open
53e0: 53 53 4c 20 76 65 72 73 69 6f 6e 20 73 74 72 69 SSL version stri
53f0: 6e 67 2e 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a ng.</dd>.</dl>..
5400: 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d <hr>..<h3><a nam
5410: 65 3d 22 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 e="CALLBACK OPTI
5420: 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 ONS">CALLBACK OP
5430: 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a TIONS</a></h3>..
5440: 3c 70 3e 0a 41 73 20 69 6e 64 69 63 61 74 65 64 <p>.As indicated
5450: 20 61 62 6f 76 65 2c 20 69 6e 64 69 76 69 64 75 above, individu
5460: 61 6c 20 63 68 61 6e 6e 65 6c 73 20 63 61 6e 20 al channels can
5470: 62 65 20 67 69 76 65 6e 20 74 68 65 69 72 20 6f be given their o
5480: 77 6e 20 63 61 6c 6c 62 61 63 6b 73 0a 74 6f 20 wn callbacks.to
5490: 68 61 6e 64 6c 65 20 69 6e 74 65 72 6d 65 64 69 handle intermedi
54a0: 61 74 65 20 70 72 6f 63 65 73 73 69 6e 67 20 62 ate processing b
54b0: 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 6c 69 y the OpenSSL li
54c0: 62 72 61 72 79 2c 20 75 73 69 6e 67 20 74 68 65 brary, using the
54d0: 0a 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e .<strong>-comman
54e0: 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73 74 72 d</strong>, <str
54f0: 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64 3c 2f 73 ong>-password</s
5500: 74 72 6f 6e 67 3e 2c 20 61 6e 64 0a 3c 73 74 72 trong>, and.<str
5510: 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65 5f 63 6f ong>-validate_co
5520: 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 6f mmand</strong> o
5530: 70 74 69 6f 6e 73 20 70 61 73 73 65 64 20 74 6f ptions passed to
5540: 20 65 69 74 68 65 72 20 6f 66 0a 3c 73 74 72 6f either of.<stro
5550: 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f ng>tls::socket</
5560: 73 74 72 6f 6e 67 3e 20 6f 72 20 3c 73 74 72 6f strong> or <stro
5570: 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f ng>tls::import</
5580: 73 74 72 6f 6e 67 3e 2e 0a 49 66 20 74 68 65 20 strong>..If the
5590: 63 61 6c 6c 62 61 63 6b 20 67 65 6e 65 72 61 74 callback generat
55a0: 65 73 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 65 es an error, the
55b0: 20 3c 62 3e 62 67 65 72 72 6f 72 3c 2f 62 3e 20 <b>bgerror</b>
55c0: 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 62 65 0a command will be.
55d0: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65 invoked with the
55e0: 20 65 72 72 6f 72 20 69 6e 66 6f 72 6d 61 74 69 error informati
55f0: 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 20 on..</p>..<dl>.
5600: 20 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d <dt><strong>-
5610: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e command</strong>
5620: 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 <em>callback</e
5630: 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e m></dt>. <dd>
5640: 0a 09 49 6e 76 6f 6b 65 73 20 74 68 65 20 73 70 ..Invokes the sp
5650: 65 63 69 66 69 65 64 20 3c 65 6d 3e 63 61 6c 6c ecified <em>call
5660: 62 61 63 6b 3c 2f 65 6d 3e 20 73 63 72 69 70 74 back</em> script
5670: 20 61 74 20 73 65 76 65 72 61 6c 20 70 6f 69 6e at several poin
5680: 74 73 0a 09 64 75 72 69 6e 67 20 74 68 65 20 4f ts..during the O
5690: 70 65 6e 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 penSSL handshake
56a0: 20 61 6e 64 20 75 73 65 2e 20 53 65 65 20 62 65 and use. See be
56b0: 6c 6f 77 20 66 6f 72 20 74 68 65 20 70 6f 73 73 low for the poss
56c0: 69 62 6c 65 0a 09 61 72 67 75 6d 65 6e 74 73 20 ible..arguments
56d0: 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 63 61 passed to the ca
56e0: 6c 6c 62 61 63 6b 20 73 63 72 69 70 74 2e 20 56 llback script. V
56f0: 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 66 alues returned f
5700: 72 6f 6d 20 74 68 65 0a 09 63 61 6c 6c 62 61 63 rom the..callbac
5710: 6b 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 20 k are ignored..
5720: 20 20 20 3c 62 72 3e 0a 20 20 20 20 3c 64 6c 3e <br>. <dl>
5730: 0a 09 3c 64 74 3e 0a 09 3c 73 74 72 6f 6e 67 3e ..<dt>..<strong>
5740: 65 72 72 6f 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c error</strong> <
5750: 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 6d 65 73 em>channelId mes
5760: 73 61 67 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e sage</em>..</dt>
5770: 0a 09 3c 64 64 3e 0a 09 20 20 20 20 54 68 69 73 ..<dd>.. This
5780: 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 form of callbac
5790: 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 k is invoked whe
57a0: 6e 65 76 65 72 20 61 6e 20 65 72 72 6f 72 20 6f never an error o
57b0: 63 63 75 72 73 20 64 75 72 69 6e 67 20 74 68 65 ccurs during the
57c0: 0a 09 20 20 20 20 69 6e 69 74 69 61 6c 20 63 6f .. initial co
57d0: 6e 6e 65 63 74 69 6f 6e 2c 20 68 61 6e 64 73 68 nnection, handsh
57e0: 61 6b 65 2c 20 6f 72 20 49 2f 4f 20 6f 70 65 72 ake, or I/O oper
57f0: 61 74 69 6f 6e 73 2e 20 54 68 65 20 3c 65 6d 3e ations. The <em>
5800: 6d 65 73 73 61 67 65 3c 2f 65 6d 3e 0a 09 20 20 message</em>..
5810: 20 20 61 72 67 75 6d 65 6e 74 20 63 61 6e 20 62 argument can b
5820: 65 20 66 72 6f 6d 20 74 68 65 20 54 63 6c 5f 45 e from the Tcl_E
5830: 72 72 6e 6f 4d 73 67 2c 20 4f 70 65 6e 53 53 4c rrnoMsg, OpenSSL
5840: 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20 20 20 3c function.. <
5850: 63 6f 64 65 3e 45 52 52 5f 72 65 61 73 6f 6e 5f code>ERR_reason_
5860: 65 72 72 6f 72 5f 73 74 72 69 6e 67 28 29 3c 2f error_string()</
5870: 63 6f 64 65 3e 2c 20 6f 72 20 61 20 63 75 73 74 code>, or a cust
5880: 6f 6d 20 6d 65 73 73 61 67 65 2e 0a 09 3c 2f 64 om message...</d
5890: 64 3e 0a 09 3c 62 72 3e 0a 09 3c 64 74 3e 0a 09 d>..<br>..<dt>..
58a0: 20 20 20 20 3c 73 74 72 6f 6e 67 3e 69 6e 66 6f <strong>info
58b0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 </strong> <em>ch
58c0: 61 6e 6e 65 6c 49 64 20 6d 61 6a 6f 72 20 6d 69 annelId major mi
58d0: 6e 6f 72 20 6d 65 73 73 61 67 65 20 74 79 70 65 nor message type
58e0: 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 </em>..</dt>..<d
58f0: 64 3e 0a 09 20 20 20 20 20 54 68 69 73 20 66 6f d>.. This fo
5900: 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 rm of callback i
5910: 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 74 68 65 s invoked by the
5920: 20 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f OpenSSL functio
5930: 6e 0a 09 20 20 20 20 3c 63 6f 64 65 3e 53 53 4c n.. <code>SSL
5940: 5f 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 _set_info_callba
5950: 63 6b 28 29 3c 2f 63 6f 64 65 3e 20 64 75 72 69 ck()</code> duri
5960: 6e 67 20 74 68 65 20 69 6e 69 74 69 61 6c 20 63 ng the initial c
5970: 6f 6e 6e 65 63 74 69 6f 6e 0a 09 20 20 20 20 61 onnection.. a
5980: 6e 64 20 68 61 6e 64 73 68 61 6b 65 20 6f 70 65 nd handshake ope
5990: 72 61 74 69 6f 6e 73 2e 20 54 68 65 20 3c 65 6d rations. The <em
59a0: 3e 74 79 70 65 3c 2f 65 6d 3e 20 61 72 67 75 6d >type</em> argum
59b0: 65 6e 74 20 69 73 20 6e 65 77 20 66 6f 72 0a 09 ent is new for..
59c0: 20 20 20 20 54 4c 53 20 31 2e 38 2e 20 54 68 65 TLS 1.8. The
59d0: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 3a 0a arguments are:.
59e0: 09 3c 62 72 3e 0a 09 3c 75 6c 3e 0a 09 3c 6c 69 .<br>..<ul>..<li
59f0: 3e 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 >Possible values
5a00: 20 66 6f 72 20 3c 65 6d 3e 6d 61 6a 6f 72 3c 2f for <em>major</
5a10: 65 6d 3e 20 61 72 65 3a 0a 09 20 20 20 20 3c 63 em> are:.. <c
5a20: 6f 64 65 3e 68 61 6e 64 73 68 61 6b 65 2c 20 61 ode>handshake, a
5a30: 6c 65 72 74 2c 20 63 6f 6e 6e 65 63 74 2c 20 61 lert, connect, a
5a40: 63 63 65 70 74 3c 2f 63 6f 64 65 3e 2e 3c 2f 6c ccept</code>.</l
5a50: 69 3e 0a 09 3c 6c 69 3e 50 6f 73 73 69 62 6c 65 i>..<li>Possible
5a60: 20 76 61 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e values for <em>
5a70: 6d 69 6e 6f 72 3c 2f 65 6d 3e 20 61 72 65 3a 0a minor</em> are:.
5a80: 09 20 20 20 20 3c 63 6f 64 65 3e 73 74 61 72 74 . <code>start
5a90: 2c 20 64 6f 6e 65 2c 20 72 65 61 64 2c 20 77 72 , done, read, wr
5aa0: 69 74 65 2c 20 6c 6f 6f 70 2c 20 65 78 69 74 3c ite, loop, exit<
5ab0: 2f 63 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 3c 6c /code>.</li>..<l
5ac0: 69 3e 54 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 i>The <em>messag
5ad0: 65 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 e</em> argument
5ae0: 69 73 20 61 20 64 65 73 63 72 69 70 74 69 76 65 is a descriptive
5af0: 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 6d 61 string which ma
5b00: 79 0a 09 20 20 20 20 62 65 20 67 65 6e 65 72 61 y.. be genera
5b10: 74 65 64 20 65 69 74 68 65 72 20 62 79 20 3c 63 ted either by <c
5b20: 6f 64 65 3e 53 53 4c 5f 73 74 61 74 65 5f 73 74 ode>SSL_state_st
5b30: 72 69 6e 67 5f 6c 6f 6e 67 28 29 3c 2f 63 6f 64 ring_long()</cod
5b40: 65 3e 20 6f 72 20 62 79 0a 09 20 20 20 20 3c 63 e> or by.. <c
5b50: 6f 64 65 3e 53 53 4c 5f 61 6c 65 72 74 5f 64 65 ode>SSL_alert_de
5b60: 73 63 5f 73 74 72 69 6e 67 5f 6c 6f 6e 67 28 29 sc_string_long()
5b70: 3c 2f 63 6f 64 65 3e 2c 20 64 65 70 65 6e 64 69 </code>, dependi
5b80: 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6e 74 65 78 ng on the contex
5b90: 74 2e 3c 2f 6c 69 3e 0a 09 3c 6c 69 3e 46 6f 72 t.</li>..<li>For
5ba0: 20 61 6c 65 72 74 73 2c 20 74 68 65 20 70 6f 73 alerts, the pos
5bb0: 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 sible values for
5bc0: 20 3c 65 6d 3e 74 79 70 65 3c 2f 65 6d 3e 20 61 <em>type</em> a
5bd0: 72 65 3a 0a 09 20 20 20 20 3c 63 6f 64 65 3e 77 re:.. <code>w
5be0: 61 72 6e 69 6e 67 2c 20 66 61 74 61 6c 2c 20 61 arning, fatal, a
5bf0: 6e 64 20 75 6e 6b 6e 6f 77 6e 3c 2f 63 6f 64 65 nd unknown</code
5c00: 3e 2e 20 46 6f 72 20 6f 74 68 65 72 73 2c 0a 09 >. For others,..
5c10: 20 20 20 20 3c 63 6f 64 65 3e 69 6e 66 6f 3c 2f <code>info</
5c20: 63 6f 64 65 3e 20 69 73 20 75 73 65 64 2e 3c 2f code> is used.</
5c30: 6c 69 3e 0a 09 3c 2f 75 6c 3e 0a 09 3c 2f 64 64 li>..</ul>..</dd
5c40: 3e 0a 09 3c 64 74 3e 0a 09 3c 73 74 72 6f 6e 67 >..<dt>..<strong
5c50: 3e 6d 65 73 73 61 67 65 3c 2f 73 74 72 6f 6e 67 >message</strong
5c60: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 > <em>channelId
5c70: 64 69 72 65 63 74 69 6f 6e 20 76 65 72 73 69 6f direction versio
5c80: 6e 20 63 6f 6e 74 65 6e 74 5f 74 79 70 65 20 6d n content_type m
5c90: 65 73 73 61 67 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 essage</em>..</d
5ca0: 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 20 20 54 68 t>..<dd>.. Th
5cb0: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 is form of callb
5cc0: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 ack is invoked b
5cd0: 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75 y the OpenSSL fu
5ce0: 6e 63 74 69 6f 6e 0a 09 20 20 20 20 3c 63 6f 64 nction.. <cod
5cf0: 65 3e 53 53 4c 5f 73 65 74 5f 6d 73 67 5f 63 61 e>SSL_set_msg_ca
5d00: 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f 64 65 3e 20 llback()</code>
5d10: 77 68 65 6e 65 76 65 72 20 61 20 6d 65 73 73 61 whenever a messa
5d20: 67 65 20 69 73 20 73 65 6e 74 20 6f 72 0a 09 20 ge is sent or..
5d30: 20 20 20 72 65 63 65 69 76 65 64 20 64 75 72 69 received duri
5d40: 6e 67 20 74 68 65 20 69 6e 69 74 69 61 6c 20 63 ng the initial c
5d50: 6f 6e 6e 65 63 74 69 6f 6e 2c 20 68 61 6e 64 73 onnection, hands
5d60: 68 61 6b 65 2c 20 6f 72 20 49 2f 4f 20 6f 70 65 hake, or I/O ope
5d70: 72 61 74 69 6f 6e 73 2e 0a 09 20 20 20 20 49 74 rations... It
5d80: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 is only availab
5d90: 6c 65 20 77 68 65 6e 20 4f 70 65 6e 53 53 4c 20 le when OpenSSL
5da0: 69 73 20 63 6f 6d 70 6c 69 65 64 20 77 69 74 68 is complied with
5db0: 20 74 68 65 0a 09 20 20 20 20 3c 65 6d 3e 65 6e the.. <em>en
5dc0: 61 62 6c 65 2d 73 73 6c 2d 74 72 61 63 65 3c 2f able-ssl-trace</
5dd0: 65 6d 3e 20 6f 70 74 69 6f 6e 2e 20 41 72 67 75 em> option. Argu
5de0: 6d 65 6e 74 73 20 61 72 65 3a 20 3c 65 6d 3e 64 ments are: <em>d
5df0: 69 72 65 63 74 69 6f 6e 3c 2f 65 6d 3e 0a 09 20 irection</em>..
5e00: 20 20 20 69 73 20 3c 62 3e 53 65 6e 74 3c 2f 62 is <b>Sent</b
5e10: 3e 20 6f 72 20 3c 62 3e 52 65 63 65 69 76 65 64 > or <b>Received
5e20: 3c 2f 62 3e 2c 20 3c 65 6d 3e 76 65 72 73 69 6f </b>, <em>versio
5e30: 6e 3c 2f 65 6d 3e 20 69 73 20 74 68 65 20 70 72 n</em> is the pr
5e40: 6f 74 6f 63 6f 6c 0a 09 20 20 20 20 76 65 72 73 otocol.. vers
5e50: 69 6f 6e 2c 20 3c 65 6d 3e 63 6f 6e 74 65 6e 74 ion, <em>content
5e60: 5f 74 79 70 65 3c 2f 65 6d 3e 20 69 73 20 74 68 _type</em> is th
5e70: 65 20 6d 65 73 73 61 67 65 20 63 6f 6e 74 65 6e e message conten
5e80: 74 20 74 79 70 65 2c 20 61 6e 64 0a 09 20 20 20 t type, and..
5e90: 20 3c 65 6d 3e 6d 65 73 73 61 67 65 3c 2f 65 6d <em>message</em
5ea0: 3e 20 69 73 20 6d 6f 72 65 20 69 6e 66 6f 20 66 > is more info f
5eb0: 72 6f 6d 20 74 68 65 20 3c 63 6f 64 65 3e 53 53 rom the <code>SS
5ec0: 4c 5f 74 72 61 63 65 3c 2f 63 6f 64 65 3e 20 41 L_trace</code> A
5ed0: 50 49 2e 0a 09 20 20 20 20 54 68 69 73 20 63 61 PI... This ca
5ee0: 6c 6c 62 61 63 6b 20 69 73 20 6e 65 77 20 66 6f llback is new fo
5ef0: 72 20 54 4c 53 20 31 2e 38 2e 0a 09 3c 2f 64 64 r TLS 1.8...</dd
5f00: 3e 0a 09 3c 62 72 3e 0a 09 3c 64 74 3e 0a 09 3c >..<br>..<dt>..<
5f10: 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 3c 2f strong>session</
5f20: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e strong> <em>chan
5f30: 6e 65 6c 49 64 20 73 65 73 73 69 6f 6e 5f 69 64 nelId session_id
5f40: 20 74 69 63 6b 65 74 20 6c 69 66 65 74 69 6d 65 ticket lifetime
5f50: 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 </em>..</dt>..<d
5f60: 64 3e 0a 09 20 20 20 20 54 68 69 73 20 66 6f 72 d>.. This for
5f70: 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 m of callback is
5f80: 20 69 6e 76 6f 6b 65 64 20 62 79 20 74 68 65 20 invoked by the
5f90: 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e OpenSSL function
5fa0: 0a 09 20 20 20 20 3c 63 6f 64 65 3e 53 53 4c 5f .. <code>SSL_
5fb0: 43 54 58 5f 73 65 73 73 5f 73 65 74 5f 6e 65 77 CTX_sess_set_new
5fc0: 5f 63 62 28 29 3c 2f 63 6f 64 65 3e 20 77 68 65 _cb()</code> whe
5fd0: 6e 65 76 65 72 20 61 20 6e 65 77 20 73 65 73 73 never a new sess
5fe0: 69 6f 6e 20 69 64 20 69 73 0a 09 20 20 20 20 73 ion id is.. s
5ff0: 65 6e 74 20 62 79 20 74 68 65 20 73 65 72 76 65 ent by the serve
6000: 72 20 64 75 72 69 6e 67 20 74 68 65 20 69 6e 69 r during the ini
6010: 74 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 tial connection
6020: 61 6e 64 20 68 61 6e 64 73 68 61 6b 65 2c 20 62 and handshake, b
6030: 75 74 0a 09 20 20 20 20 63 61 6e 20 61 6c 73 6f ut.. can also
6040: 20 62 65 20 72 65 63 65 69 76 65 64 20 6c 61 74 be received lat
6050: 65 72 20 69 66 20 74 68 65 20 3c 62 3e 2d 70 6f er if the <b>-po
6060: 73 74 5f 68 61 6e 64 73 68 61 6b 65 3c 2f 62 3e st_handshake</b>
6070: 20 6f 70 74 69 6f 6e 20 69 73 0a 09 20 20 20 20 option is..
6080: 75 73 65 64 2e 20 41 72 67 75 6d 65 6e 74 73 20 used. Arguments
6090: 61 72 65 3a 20 3c 65 6d 3e 73 65 73 73 69 6f 6e are: <em>session
60a0: 5f 69 64 3c 2f 65 6d 3e 20 69 73 20 74 68 65 20 _id</em> is the
60b0: 63 75 72 72 65 6e 74 0a 09 20 20 20 20 73 65 73 current.. ses
60c0: 73 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 72 2c sion identifier,
60d0: 20 3c 65 6d 3e 74 69 63 6b 65 74 3c 2f 65 6d 3e <em>ticket</em>
60e0: 20 69 73 20 74 68 65 20 73 65 73 73 69 6f 6e 20 is the session
60f0: 74 69 63 6b 65 74 20 69 6e 66 6f 2c 20 61 6e 64 ticket info, and
6100: 0a 09 20 20 20 20 3c 65 6d 3e 6c 69 66 65 74 69 .. <em>lifeti
6110: 6d 65 3c 2f 65 6d 3e 20 69 73 20 74 68 65 20 74 me</em> is the t
6120: 68 65 20 74 69 63 6b 65 74 20 6c 69 66 65 74 69 he ticket lifeti
6130: 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 2e 0a 09 me in seconds...
6140: 20 20 20 20 54 68 69 73 20 63 61 6c 6c 62 61 63 This callbac
6150: 6b 20 69 73 20 6e 65 77 20 66 6f 72 20 54 4c 53 k is new for TLS
6160: 20 31 2e 38 2e 0a 09 3c 2f 64 64 3e 0a 20 20 20 1.8...</dd>.
6170: 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e </dl>. </dd>
6180: 0a 3c 2f 64 6c 3e 0a 3c 62 72 3e 0a 3c 64 6c 3e .</dl>.<br>.<dl>
6190: 0a 20 20 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 . <dt><strong
61a0: 3e 2d 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f >-password</stro
61b0: 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b ng> <em>callback
61c0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c </em></dt>. <
61d0: 64 64 3e 0a 09 49 6e 76 6f 6b 65 73 20 74 68 65 dd>..Invokes the
61e0: 20 73 70 65 63 69 66 69 65 64 20 3c 65 6d 3e 63 specified <em>c
61f0: 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 20 73 63 72 allback</em> scr
6200: 69 70 74 20 77 68 65 6e 20 4f 70 65 6e 53 53 4c ipt when OpenSSL
6210: 20 6e 65 65 64 73 20 74 6f 0a 09 6f 62 74 61 69 needs to..obtai
6220: 6e 20 61 20 70 61 73 73 77 6f 72 64 2e 20 53 65 n a password. Se
6230: 65 20 62 65 6c 6f 77 20 66 6f 72 20 74 68 65 20 e below for the
6240: 70 6f 73 73 69 62 6c 65 20 61 72 67 75 6d 65 6e possible argumen
6250: 74 73 20 70 61 73 73 65 64 20 74 6f 0a 09 74 68 ts passed to..th
6260: 65 20 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70 e callback scrip
6270: 74 2e 20 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 t. See below for
6280: 20 76 61 6c 69 64 20 72 65 74 75 72 6e 20 76 61 valid return va
6290: 6c 75 65 73 2e 0a 09 3c 62 72 3e 0a 09 3c 64 6c lues...<br>..<dl
62a0: 3e 0a 09 20 20 20 20 3c 64 74 3e 0a 09 20 20 20 >.. <dt>..
62b0: 20 3c 73 74 72 6f 6e 67 3e 70 61 73 73 77 6f 72 <strong>passwor
62c0: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 72 d</strong> <em>r
62d0: 77 66 6c 61 67 20 73 69 7a 65 3c 2f 65 6d 3e 0a wflag size</em>.
62e0: 09 20 20 20 20 3c 2f 64 74 3e 0a 09 20 20 20 20 . </dt>..
62f0: 3c 64 64 3e 0a 09 09 49 6e 76 6f 6b 65 64 20 77 <dd>...Invoked w
6300: 68 65 6e 20 6c 6f 61 64 69 6e 67 20 6f 72 20 73 hen loading or s
6310: 74 6f 72 69 6e 67 20 61 20 50 45 4d 20 63 65 72 toring a PEM cer
6320: 74 69 66 69 63 61 74 65 20 77 69 74 68 20 65 6e tificate with en
6330: 63 72 79 70 74 69 6f 6e 2e 0a 09 09 57 68 65 72 cryption....Wher
6340: 65 20 3c 65 6d 3e 72 77 66 6c 61 67 3c 2f 65 6d e <em>rwflag</em
6350: 3e 20 69 73 20 30 20 66 6f 72 20 72 65 61 64 69 > is 0 for readi
6360: 6e 67 2f 64 65 63 72 79 70 74 69 6f 6e 20 6f 72 ng/decryption or
6370: 20 31 20 66 6f 72 0a 09 09 77 72 69 74 69 6e 67 1 for...writing
6380: 2f 65 6e 63 72 79 70 74 69 6f 6e 20 28 63 61 6e /encryption (can
6390: 20 70 72 6f 6d 70 74 20 75 73 65 72 20 74 6f 20 prompt user to
63a0: 63 6f 6e 66 69 72 6d 29 20 61 6e 64 20 3c 65 6d confirm) and <em
63b0: 3e 73 69 7a 65 3c 2f 65 6d 3e 20 69 73 0a 09 09 >size</em> is...
63c0: 74 68 65 20 6d 61 78 20 70 61 73 73 77 6f 72 64 the max password
63d0: 20 6c 65 6e 67 74 68 20 69 6e 20 62 79 74 65 73 length in bytes
63e0: 2e 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 . The callback s
63f0: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 hould return the
6400: 0a 09 09 70 61 73 73 77 6f 72 64 20 61 73 20 61 ...password as a
6410: 20 73 74 72 69 6e 67 2e 20 42 6f 74 68 20 61 72 string. Both ar
6420: 67 75 6d 65 6e 74 73 20 61 72 65 20 6e 65 77 20 guments are new
6430: 66 6f 72 20 54 4c 53 20 31 2e 38 2e 0a 09 20 20 for TLS 1.8...
6440: 20 20 3c 2f 64 64 3e 0a 09 3c 2f 64 6c 3e 0a 20 </dd>..</dl>.
6450: 20 20 20 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 3c </dd>.</dl>.<
6460: 62 72 3e 0a 3c 64 6c 3e 0a 20 20 20 20 3c 64 74 br>.<dl>. <dt
6470: 3e 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 ><strong>-valida
6480: 74 65 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e tecommand</stron
6490: 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c g> <em>callback<
64a0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 /em></dt>. <d
64b0: 64 3e 0a 09 49 6e 76 6f 6b 65 73 20 74 68 65 20 d>..Invokes the
64c0: 73 70 65 63 69 66 69 65 64 20 3c 65 6d 3e 63 61 specified <em>ca
64d0: 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 20 73 63 72 69 llback</em> scri
64e0: 70 74 20 64 75 72 69 6e 67 20 68 61 6e 64 73 68 pt during handsh
64f0: 61 6b 65 20 69 6e 0a 09 6f 72 64 65 72 20 74 6f ake in..order to
6500: 20 76 61 6c 69 64 61 74 65 20 74 68 65 20 70 72 validate the pr
6510: 6f 76 69 64 65 64 20 76 61 6c 75 65 28 73 29 2e ovided value(s).
6520: 20 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 20 74 See below for t
6530: 68 65 20 70 6f 73 73 69 62 6c 65 0a 09 61 72 67 he possible..arg
6540: 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f uments passed to
6550: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 63 the callback sc
6560: 72 69 70 74 2e 20 49 66 20 6e 6f 74 20 73 70 65 ript. If not spe
6570: 63 69 66 69 65 64 2c 20 4f 70 65 6e 53 53 4c 0a cified, OpenSSL.
6580: 09 77 69 6c 6c 20 61 63 63 65 70 74 20 76 61 6c .will accept val
6590: 69 64 20 63 65 72 74 69 66 69 63 61 74 65 73 20 id certificates
65a0: 61 6e 64 20 65 78 74 65 6e 73 69 6f 6e 73 2e 0a and extensions..
65b0: 09 54 6f 20 72 65 6a 65 63 74 20 74 68 65 20 76 .To reject the v
65c0: 61 6c 75 65 20 61 6e 64 20 61 62 6f 72 74 20 74 alue and abort t
65d0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 he connection, t
65e0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 he callback shou
65f0: 6c 64 20 72 65 74 75 72 6e 20 30 2e 0a 09 54 6f ld return 0...To
6600: 20 61 63 63 65 70 74 20 74 68 65 20 76 61 6c 75 accept the valu
6610: 65 20 61 6e 64 20 63 6f 6e 74 69 6e 75 65 20 74 e and continue t
6620: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 he connection, i
6630: 74 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 t should return
6640: 31 2e 0a 09 54 6f 20 72 65 6a 65 63 74 20 74 68 1...To reject th
6650: 65 20 76 61 6c 75 65 2c 20 62 75 74 20 63 6f 6e e value, but con
6660: 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 6e 65 63 tinue the connec
6670: 74 69 6f 6e 2c 20 69 74 20 73 68 6f 75 6c 64 20 tion, it should
6680: 72 65 74 75 72 6e 20 32 2e 0a 09 3c 62 72 3e 0a return 2...<br>.
6690: 09 3c 64 6c 3e 0a 09 20 20 20 20 3c 64 74 3e 0a .<dl>.. <dt>.
66a0: 09 09 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f ..<strong>alpn</
66b0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e strong> <em>chan
66c0: 6e 65 6c 49 64 20 70 72 6f 74 6f 63 6f 6c 20 6d nelId protocol m
66d0: 61 74 63 68 3c 2f 65 6d 3e 0a 09 09 3c 2f 64 74 atch</em>...</dt
66e0: 3e 0a 09 20 20 20 20 3c 64 64 3e 0a 09 09 46 6f >.. <dd>...Fo
66f0: 72 20 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 r servers, this
6700: 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b form of callback
6710: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e is invoked when
6720: 20 74 68 65 20 63 6c 69 65 6e 74 20 41 4c 50 4e the client ALPN
6730: 0a 09 09 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 ...extension is
6740: 72 65 63 65 69 76 65 64 2e 20 49 66 20 3c 65 6d received. If <em
6750: 3e 6d 61 74 63 68 3c 2f 65 6d 3e 20 69 73 20 74 >match</em> is t
6760: 72 75 65 2c 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f rue, <em>protoco
6770: 6c 3c 2f 65 6d 3e 0a 09 09 69 73 20 74 68 65 20 l</em>...is the
6780: 66 69 72 73 74 20 3c 62 3e 2d 61 6c 70 6e 3c 2f first <b>-alpn</
6790: 62 3e 20 6f 70 74 69 6f 6e 20 73 70 65 63 69 66 b> option specif
67a0: 69 65 64 20 70 72 6f 74 6f 63 6f 6c 20 63 6f 6d ied protocol com
67b0: 6d 6f 6e 20 74 6f 20 62 6f 74 68 0a 09 09 74 68 mon to both...th
67c0: 65 20 63 6c 69 65 6e 74 20 61 6e 64 20 73 65 72 e client and ser
67d0: 76 65 72 2e 20 49 66 20 6e 6f 74 2c 20 74 68 65 ver. If not, the
67e0: 20 66 69 72 73 74 20 63 6c 69 65 6e 74 20 73 70 first client sp
67f0: 65 63 69 66 69 65 64 20 70 72 6f 74 6f 63 6f 6c ecified protocol
6800: 20 69 73 0a 09 09 75 73 65 64 2e 20 49 74 20 69 is...used. It i
6810: 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72 20 74 s called after t
6820: 68 65 20 68 65 6c 6c 6f 20 61 6e 64 20 41 4c 50 he hello and ALP
6830: 4e 20 63 61 6c 6c 62 61 63 6b 73 2e 0a 09 09 54 N callbacks....T
6840: 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 his callback is
6850: 6e 65 77 20 66 6f 72 20 54 4c 53 20 31 2e 38 2e new for TLS 1.8.
6860: 0a 09 20 20 20 20 3c 2f 64 64 3e 0a 09 20 20 20 .. </dd>..
6870: 20 3c 62 72 3e 0a 09 20 20 20 20 3c 64 74 3e 0a <br>.. <dt>.
6880: 09 09 3c 73 74 72 6f 6e 67 3e 68 65 6c 6c 6f 3c ..<strong>hello<
6890: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 /strong> <em>cha
68a0: 6e 6e 65 6c 49 64 20 73 65 72 76 65 72 6e 61 6d nnelId servernam
68b0: 65 3c 2f 65 6d 3e 0a 09 20 20 20 20 3c 2f 64 74 e</em>.. </dt
68c0: 3e 0a 09 20 20 20 20 3c 64 64 3e 0a 09 09 46 6f >.. <dd>...Fo
68d0: 72 20 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 r servers, this
68e0: 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b form of callback
68f0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 64 75 72 69 is invoked duri
6900: 6e 67 20 63 6c 69 65 6e 74 20 68 65 6c 6c 6f 0a ng client hello.
6910: 09 09 6d 65 73 73 61 67 65 20 70 72 6f 63 65 73 ..message proces
6920: 73 69 6e 67 2e 20 54 68 65 20 70 75 72 70 6f 73 sing. The purpos
6930: 65 20 69 73 20 73 6f 20 74 68 65 20 73 65 72 76 e is so the serv
6940: 65 72 20 63 61 6e 20 73 65 6c 65 63 74 20 74 68 er can select th
6950: 65 0a 09 09 61 70 70 72 6f 70 72 69 61 74 65 20 e...appropriate
6960: 63 65 72 74 69 66 69 63 61 74 65 20 74 6f 20 70 certificate to p
6970: 72 65 73 65 6e 74 20 74 6f 20 74 68 65 20 63 6c resent to the cl
6980: 69 65 6e 74 2c 20 61 6e 64 20 74 6f 20 6d 61 6b ient, and to mak
6990: 65 20 6f 74 68 65 72 0a 09 09 63 6f 6e 66 69 67 e other...config
69a0: 75 72 61 74 69 6f 6e 20 61 64 6a 75 73 74 6d 65 uration adjustme
69b0: 6e 74 73 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 nts relevant to
69c0: 74 68 61 74 20 73 65 72 76 65 72 20 6e 61 6d 65 that server name
69d0: 20 61 6e 64 20 69 74 73 0a 09 09 63 6f 6e 66 69 and its...confi
69e0: 67 75 72 61 74 69 6f 6e 2e 20 49 74 20 69 73 20 guration. It is
69f0: 63 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 74 68 called before th
6a00: 65 20 53 4e 49 20 61 6e 64 20 41 4c 50 4e 20 63 e SNI and ALPN c
6a10: 61 6c 6c 62 61 63 6b 73 2e 0a 09 09 54 68 69 73 allbacks....This
6a20: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 65 77 callback is new
6a30: 20 66 6f 72 20 54 4c 53 20 31 2e 38 2e 0a 09 20 for TLS 1.8...
6a40: 20 20 20 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 62 </dd>.. <b
6a50: 72 3e 0a 09 20 20 20 20 3c 64 74 3e 0a 09 09 3c r>.. <dt>...<
6a60: 73 74 72 6f 6e 67 3e 73 6e 69 3c 2f 73 74 72 6f strong>sni</stro
6a70: 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 ng> <em>channelI
6a80: 64 20 73 65 72 76 65 72 6e 61 6d 65 3c 2f 65 6d d servername</em
6a90: 3e 0a 09 20 20 20 20 3c 2f 64 74 3e 0a 09 20 20 >.. </dt>..
6aa0: 20 20 3c 64 64 3e 0a 09 09 46 6f 72 20 73 65 72 <dd>...For ser
6ab0: 76 65 72 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 vers, this form
6ac0: 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 of callback is i
6ad0: 6e 76 6f 6b 65 64 20 77 68 65 6e 20 74 68 65 20 nvoked when the
6ae0: 53 65 72 76 65 72 20 4e 61 6d 65 0a 09 09 49 6e Server Name...In
6af0: 64 69 63 61 74 69 6f 6e 20 28 53 4e 49 29 20 65 dication (SNI) e
6b00: 78 74 65 6e 73 69 6f 6e 20 69 73 20 72 65 63 65 xtension is rece
6b10: 69 76 65 64 2e 20 54 68 65 20 3c 65 6d 3e 73 65 ived. The <em>se
6b20: 72 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e 0a 09 09 rvername</em>...
6b30: 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 argument is the
6b40: 63 6c 69 65 6e 74 20 70 72 6f 76 69 64 65 64 20 client provided
6b50: 73 65 72 76 65 72 20 6e 61 6d 65 20 69 6e 20 74 server name in t
6b60: 68 65 20 3c 62 3e 2d 73 65 72 76 65 72 6e 61 6d he <b>-servernam
6b70: 65 3c 2f 62 3e 0a 09 09 6f 70 74 69 6f 6e 2e 20 e</b>...option.
6b80: 54 68 65 20 70 75 72 70 6f 73 65 20 69 73 20 73 The purpose is s
6b90: 6f 20 77 68 65 6e 20 61 20 73 65 72 76 65 72 20 o when a server
6ba0: 73 75 70 70 6f 72 74 73 20 6d 75 6c 74 69 70 6c supports multipl
6bb0: 65 20 6e 61 6d 65 73 2c 20 74 68 65 0a 09 09 72 e names, the...r
6bc0: 69 67 68 74 20 63 65 72 74 69 66 69 63 61 74 65 ight certificate
6bd0: 20 63 61 6e 20 62 65 20 75 73 65 64 2e 20 49 74 can be used. It
6be0: 20 69 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72 is called after
6bf0: 20 74 68 65 20 68 65 6c 6c 6f 20 63 61 6c 6c 62 the hello callb
6c00: 61 63 6b 0a 09 09 62 75 74 20 62 65 66 6f 72 65 ack...but before
6c10: 20 74 68 65 20 41 4c 50 4e 20 63 61 6c 6c 62 61 the ALPN callba
6c20: 63 6b 2e 0a 09 09 54 68 69 73 20 63 61 6c 6c 62 ck....This callb
6c30: 61 63 6b 20 69 73 20 6e 65 77 20 66 6f 72 20 54 ack is new for T
6c40: 4c 53 20 31 2e 38 2e 0a 09 20 20 20 20 3c 2f 64 LS 1.8... </d
6c50: 64 3e 0a 09 20 20 20 20 3c 62 72 3e 0a 09 20 20 d>.. <br>..
6c60: 20 20 3c 64 74 3e 0a 09 09 3c 73 74 72 6f 6e 67 <dt>...<strong
6c70: 3e 76 65 72 69 66 79 3c 2f 73 74 72 6f 6e 67 3e >verify</strong>
6c80: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 64 <em>channelId d
6c90: 65 70 74 68 20 63 65 72 74 20 73 74 61 74 75 73 epth cert status
6ca0: 20 65 72 72 6f 72 3c 2f 65 6d 3e 0a 09 20 20 20 error</em>..
6cb0: 20 3c 2f 64 74 3e 0a 09 20 20 20 20 3c 64 64 3e </dt>.. <dd>
6cc0: 0a 09 09 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 ...This form of
6cd0: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f callback is invo
6ce0: 6b 65 64 20 62 79 20 4f 70 65 6e 53 53 4c 20 77 ked by OpenSSL w
6cf0: 68 65 6e 20 61 20 6e 65 77 20 63 65 72 74 69 66 hen a new certif
6d00: 69 63 61 74 65 0a 09 09 69 73 20 72 65 63 65 69 icate...is recei
6d10: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 70 65 65 ved from the pee
6d20: 72 2e 20 49 74 20 61 6c 6c 6f 77 73 20 74 68 65 r. It allows the
6d30: 20 63 6c 69 65 6e 74 20 74 6f 20 63 68 65 63 6b client to check
6d40: 20 74 68 65 0a 09 09 63 65 72 74 69 66 69 63 61 the...certifica
6d50: 74 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 te verification
6d60: 72 65 73 75 6c 74 73 20 61 6e 64 20 63 68 6f 6f results and choo
6d70: 73 65 20 77 68 65 74 68 65 72 20 74 6f 20 63 6f se whether to co
6d80: 6e 74 69 6e 75 65 0a 09 09 6f 72 20 6e 6f 74 2e ntinue...or not.
6d90: 20 49 74 20 69 73 20 63 61 6c 6c 65 64 20 66 6f It is called fo
6da0: 72 20 65 61 63 68 20 63 65 72 74 69 66 69 63 61 r each certifica
6db0: 74 65 20 69 6e 20 74 68 65 20 63 65 72 74 69 66 te in the certif
6dc0: 69 63 61 74 65 20 63 68 61 69 6e 2e 0a 09 09 3c icate chain....<
6dd0: 75 6c 3e 0a 09 09 3c 6c 69 3e 54 68 65 20 3c 65 ul>...<li>The <e
6de0: 6d 3e 64 65 70 74 68 3c 2f 65 6d 3e 20 61 72 67 m>depth</em> arg
6df0: 75 6d 65 6e 74 20 69 73 20 74 68 65 20 69 6e 74 ument is the int
6e00: 65 67 65 72 20 64 65 70 74 68 20 6f 66 20 74 68 eger depth of th
6e10: 65 0a 09 09 63 65 72 74 69 66 69 63 61 74 65 20 e...certificate
6e20: 69 6e 20 74 68 65 20 63 65 72 74 69 66 69 63 61 in the certifica
6e30: 74 65 20 63 68 61 69 6e 2c 20 77 68 65 72 65 20 te chain, where
6e40: 30 20 69 73 20 74 68 65 20 70 65 65 72 20 63 65 0 is the peer ce
6e50: 72 74 69 66 69 63 61 74 65 0a 09 09 61 6e 64 20 rtificate...and
6e60: 68 69 67 68 65 72 20 76 61 6c 75 65 73 20 67 6f higher values go
6e70: 69 6e 67 20 75 70 20 74 6f 20 74 68 65 20 43 65 ing up to the Ce
6e80: 72 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 rtificate Author
6e90: 69 74 79 20 28 43 41 29 2e 3c 2f 6c 69 3e 0a 09 ity (CA).</li>..
6ea0: 09 3c 6c 69 3e 54 68 65 20 3c 65 6d 3e 63 65 72 .<li>The <em>cer
6eb0: 74 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 t</em> argument
6ec0: 69 73 20 61 20 6c 69 73 74 20 6f 66 20 6b 65 79 is a list of key
6ed0: 2d 76 61 6c 75 65 20 70 61 69 72 73 20 73 69 6d -value pairs sim
6ee0: 69 6c 61 72 0a 09 09 74 6f 20 74 68 6f 73 65 20 ilar...to those
6ef0: 72 65 74 75 72 6e 65 64 20 62 79 0a 09 09 3c 61 returned by...<a
6f00: 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 74 61 href="#tls::sta
6f10: 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 tus"><strong>tls
6f20: 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f 6e 67 ::status</strong
6f30: 3e 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 09 09 3c 6c ></a>.</li>...<l
6f40: 69 3e 54 68 65 20 3c 65 6d 3e 73 74 61 74 75 73 i>The <em>status
6f50: 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 </em> argument i
6f60: 73 20 74 68 65 20 62 6f 6f 6c 65 61 6e 20 76 61 s the boolean va
6f70: 6c 69 64 69 74 79 20 6f 66 20 74 68 65 0a 09 09 lidity of the...
6f80: 63 75 72 72 65 6e 74 20 63 65 72 74 69 66 69 63 current certific
6f90: 61 74 65 20 77 68 65 72 65 20 30 20 69 73 20 69 ate where 0 is i
6fa0: 6e 76 61 6c 69 64 20 61 6e 64 20 31 20 69 73 20 nvalid and 1 is
6fb0: 76 61 6c 69 64 2e 3c 2f 6c 69 3e 0a 09 09 3c 6c valid.</li>...<l
6fc0: 69 3e 54 68 65 20 3c 65 6d 3e 65 72 72 6f 72 3c i>The <em>error<
6fd0: 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 /em> argument is
6fe0: 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 the error messa
6ff0: 67 65 2c 20 69 66 20 61 6e 79 2c 20 67 65 6e 65 ge, if any, gene
7000: 72 61 74 65 64 0a 09 09 62 79 20 3c 63 6f 64 65 rated...by <code
7010: 3e 58 35 30 39 5f 53 54 4f 52 45 5f 43 54 58 5f >X509_STORE_CTX_
7020: 67 65 74 5f 65 72 72 6f 72 28 29 3c 2f 63 6f 64 get_error()</cod
7030: 65 3e 2e 3c 2f 6c 69 3e 0a 09 09 3c 2f 75 6c 3e e>.</li>...</ul>
7040: 0a 09 20 20 20 20 3c 2f 64 64 3e 0a 09 20 20 20 .. </dd>..
7050: 20 3c 62 72 3e 0a 09 3c 2f 64 6c 3e 0a 20 20 20 <br>..</dl>.
7060: 20 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 </dd>.</dl>..<p
7070: 3e 0a 52 65 66 65 72 65 6e 63 65 20 69 6d 70 6c >.Reference impl
7080: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 ementations of t
7090: 68 65 73 65 20 63 61 6c 6c 62 61 63 6b 73 20 61 hese callbacks a
70a0: 72 65 20 70 72 6f 76 69 64 65 64 20 69 6e 20 74 re provided in t
70b0: 68 65 0a 64 69 73 74 72 69 62 75 74 69 6f 6e 20 he.distribution
70c0: 61 73 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a as <strong>tls::
70d0: 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72 6f 6e 67 callback</strong
70e0: 3e 2c 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a >, <strong>tls::
70f0: 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 password</strong
7100: 3e 2c 0a 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 74 >,.and <strong>t
7110: 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f 63 6f 6d ls::validate_com
7120: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 72 65 mand</strong> re
7130: 73 70 65 63 74 69 76 65 6c 79 2e 20 4e 6f 74 65 spectively. Note
7140: 20 74 68 61 74 20 74 68 65 73 65 20 61 72 65 0a that these are.
7150: 3c 65 6d 3e 73 61 6d 70 6c 65 3c 2f 65 6d 3e 20 <em>sample</em>
7160: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 implementations
7170: 6f 6e 6c 79 2e 20 49 6e 20 61 20 6d 6f 72 65 20 only. In a more
7180: 72 65 61 6c 69 73 74 69 63 20 64 65 70 6c 6f 79 realistic deploy
7190: 6d 65 6e 74 0a 79 6f 75 20 77 6f 75 6c 64 20 73 ment.you would s
71a0: 70 65 63 69 66 79 20 79 6f 75 72 20 6f 77 6e 20 pecify your own
71b0: 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70 74 73 callback scripts
71c0: 20 6f 6e 20 65 61 63 68 20 54 4c 53 20 63 68 61 on each TLS cha
71d0: 6e 6e 65 6c 20 75 73 69 6e 67 20 74 68 65 0a 3c nnel using the.<
71e0: 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c strong>-command<
71f0: 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e /strong>, <stron
7200: 67 3e 2d 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 g>-password</str
7210: 6f 6e 67 3e 2c 20 61 6e 64 0a 3c 73 74 72 6f 6e ong>, and.<stron
7220: 67 3e 2d 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d g>-validate_comm
7230: 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 and</strong> opt
7240: 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 3c 70 3e 0a 54 ions..</p>.<p>.T
7250: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 he default behav
7260: 69 6f 72 20 77 68 65 6e 20 74 68 65 20 3c 73 74 ior when the <st
7270: 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 rong>-command</s
7280: 74 72 6f 6e 67 3e 20 61 6e 64 20 3c 73 74 72 6f trong> and <stro
7290: 6e 67 3e 2d 76 61 6c 69 64 61 74 65 5f 63 6f 6d ng>-validate_com
72a0: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 0a 6f 70 mand</strong>.op
72b0: 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 73 70 tions are not sp
72c0: 65 63 69 66 69 65 64 20 69 73 20 66 6f 72 20 54 ecified is for T
72d0: 4c 53 20 74 6f 20 70 72 6f 63 65 73 73 20 74 68 LS to process th
72e0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 6c 69 62 e associated lib
72f0: 72 61 72 79 20 63 61 6c 6c 62 61 63 6b 73 0a 69 rary callbacks.i
7300: 6e 74 65 72 6e 61 6c 6c 79 2e 20 54 68 65 20 64 nternally. The d
7310: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 efault behavior
7320: 77 68 65 6e 20 74 68 65 20 3c 73 74 72 6f 6e 67 when the <strong
7330: 3e 2d 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f >-password</stro
7340: 6e 67 3e 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f ng> option is no
7350: 74 0a 73 70 65 63 69 66 69 65 64 20 69 73 20 66 t.specified is f
7360: 6f 72 20 54 4c 53 20 74 6f 20 70 72 6f 63 65 73 or TLS to proces
7370: 73 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 s the associated
7380: 20 6c 69 62 72 61 72 79 20 63 61 6c 6c 62 61 63 library callbac
7390: 6b 73 20 62 79 20 61 74 74 65 6d 70 74 69 6e 67 ks by attempting
73a0: 0a 74 6f 20 63 61 6c 6c 20 3c 73 74 72 6f 6e 67 .to call <strong
73b0: 3e 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f >tls::password</
73c0: 73 74 72 6f 6e 67 3e 2e 0a 54 68 65 20 64 69 66 strong>..The dif
73d0: 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 ference between
73e0: 74 68 65 73 65 20 74 77 6f 20 62 65 68 61 76 69 these two behavi
73f0: 6f 72 73 20 69 73 20 61 20 63 6f 6e 73 65 71 75 ors is a consequ
7400: 65 6e 63 65 20 6f 66 20 6d 61 69 6e 74 61 69 6e ence of maintain
7410: 69 6e 67 0a 63 6f 6d 70 61 74 69 62 69 6c 69 74 ing.compatibilit
7420: 79 20 77 69 74 68 20 65 61 72 6c 69 65 72 20 69 y with earlier i
7430: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2e 0a mplementations..
7440: 3c 2f 70 3e 0a 3c 70 3e 0a 3c 65 6d 3e 0a 54 68 </p>.<p>.<em>.Th
7450: 65 20 75 73 65 20 6f 66 20 74 68 65 20 72 65 66 e use of the ref
7460: 65 72 65 6e 63 65 20 63 61 6c 6c 62 61 63 6b 73 erence callbacks
7470: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 61 <strong>tls::ca
7480: 6c 6c 62 61 63 6b 3c 2f 73 74 72 6f 6e 67 3e 2c llback</strong>,
7490: 0a 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 61 .<strong>tls::pa
74a0: 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c ssword</strong>,
74b0: 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 and <strong>tls
74c0: 3a 3a 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 ::validate_comma
74d0: 6e 64 3c 2f 73 74 72 6f 6e 67 3e 0a 69 73 20 6e nd</strong>.is n
74e0: 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 20 ot recommended.
74f0: 54 68 65 79 20 6d 61 79 20 62 65 20 72 65 6d 6f They may be remo
7500: 76 65 64 20 66 72 6f 6d 20 66 75 74 75 72 65 20 ved from future
7510: 72 65 6c 65 61 73 65 73 2e 0a 3c 2f 65 6d 3e 0a releases..</em>.
7520: 3c 2f 70 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33 3e </p>..<hr>..<h3>
7530: 3c 61 20 6e 61 6d 65 3d 22 44 45 42 55 47 22 3e <a name="DEBUG">
7540: 44 45 42 55 47 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a DEBUG</a></h3>..
7550: 54 4c 53 20 6b 65 79 20 6c 6f 67 67 69 6e 67 20 TLS key logging
7560: 63 61 6e 20 62 65 20 65 6e 61 62 6c 65 64 20 62 can be enabled b
7570: 79 20 73 65 74 74 69 6e 67 20 74 68 65 20 65 6e y setting the en
7580: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 vironment variab
7590: 6c 65 0a 3c 62 3e 53 53 4c 4b 45 59 4c 4f 47 46 le.<b>SSLKEYLOGF
75a0: 49 4c 45 3c 2f 62 3e 20 74 6f 20 74 68 65 20 6e ILE</b> to the n
75b0: 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 ame of the file
75c0: 74 6f 20 6c 6f 67 20 74 6f 2e 20 54 68 65 6e 20 to log to. Then
75d0: 77 68 65 6e 65 76 65 72 20 54 4c 53 0a 6b 65 79 whenever TLS.key
75e0: 20 6d 61 74 65 72 69 61 6c 20 69 73 20 67 65 6e material is gen
75f0: 65 72 61 74 65 64 20 6f 72 20 72 65 63 65 69 76 erated or receiv
7600: 65 64 20 69 74 20 77 69 6c 6c 20 62 65 20 6c 6f ed it will be lo
7610: 67 67 65 64 20 74 6f 20 74 68 65 20 66 69 6c 65 gged to the file
7620: 2e 20 54 68 69 73 0a 69 73 20 75 73 65 66 75 6c . This.is useful
7630: 20 66 6f 72 20 6c 6f 67 67 69 6e 67 20 6b 65 79 for logging key
7640: 20 64 61 74 61 20 66 6f 72 20 6e 65 74 77 6f 72 data for networ
7650: 6b 20 6c 6f 67 67 69 6e 67 20 74 6f 6f 6c 73 20 k logging tools
7660: 74 6f 20 75 73 65 20 74 6f 0a 64 65 63 72 79 70 to use to.decryp
7670: 74 20 74 68 65 20 64 61 74 61 2e 0a 3c 70 3e 0a t the data..<p>.
7680: 54 68 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a The <strong>tls:
7690: 3a 64 65 62 75 67 3c 2f 73 74 72 6f 6e 67 3e 20 :debug</strong>
76a0: 76 61 72 69 61 62 6c 65 20 70 72 6f 76 69 64 65 variable provide
76b0: 73 20 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 s some additiona
76c0: 6c 0a 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 74 l.control over t
76d0: 68 65 73 65 20 72 65 66 65 72 65 6e 63 65 20 63 hese reference c
76e0: 61 6c 6c 62 61 63 6b 73 2e 20 49 74 73 20 76 61 allbacks. Its va
76f0: 6c 75 65 20 69 73 20 7a 65 72 6f 20 62 79 20 64 lue is zero by d
7700: 65 66 61 75 6c 74 2e 0a 48 69 67 68 65 72 20 76 efault..Higher v
7710: 61 6c 75 65 73 20 70 72 6f 64 75 63 65 20 6d 6f alues produce mo
7720: 72 65 20 64 69 61 67 6e 6f 73 74 69 63 20 6f 75 re diagnostic ou
7730: 74 70 75 74 2c 20 61 6e 64 20 77 69 6c 6c 20 61 tput, and will a
7740: 6c 73 6f 20 66 6f 72 63 65 20 74 68 65 0a 76 65 lso force the.ve
7750: 72 69 66 79 20 6d 65 74 68 6f 64 20 69 6e 20 3c rify method in <
7760: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 61 6c 6c strong>tls::call
7770: 62 61 63 6b 3c 2f 73 74 72 6f 6e 67 3e 20 74 6f back</strong> to
7780: 20 61 63 63 65 70 74 20 74 68 65 0a 63 65 72 74 accept the.cert
7790: 69 66 69 63 61 74 65 2c 20 65 76 65 6e 20 77 68 ificate, even wh
77a0: 65 6e 20 69 74 20 69 73 20 69 6e 76 61 6c 69 64 en it is invalid
77b0: 20 69 66 20 74 68 65 20 3c 62 3e 74 6c 73 3a 3a if the <b>tls::
77c0: 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 validate_command
77d0: 3c 2f 62 3e 0a 63 61 6c 6c 62 61 63 6b 20 69 73 </b>.callback is
77e0: 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 3c 62 used for the <b
77f0: 3e 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e >-validatecomman
7800: 64 3c 2f 62 3e 20 6f 70 74 69 6f 6e 2e 0a 3c 2f d</b> option..</
7810: 70 3e 0a 3c 70 3e 0a 3c 65 6d 3e 0a 54 68 65 20 p>.<p>.<em>.The
7820: 75 73 65 20 6f 66 20 74 68 65 20 76 61 72 69 61 use of the varia
7830: 62 6c 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a ble <strong>tls:
7840: 3a 64 65 62 75 67 3c 2f 73 74 72 6f 6e 67 3e 20 :debug</strong>
7850: 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 is not recommend
7860: 65 64 2e 0a 49 74 20 6d 61 79 20 62 65 20 72 65 ed..It may be re
7870: 6d 6f 76 65 64 20 66 72 6f 6d 20 66 75 74 75 72 moved from futur
7880: 65 20 72 65 6c 65 61 73 65 73 2e 0a 3c 2f 65 6d e releases..</em
7890: 3e 0a 3c 2f 70 3e 0a 0a 3c 68 34 3e 3c 61 20 6e >.</p>..<h4><a n
78a0: 61 6d 65 3d 22 44 45 42 55 47 5f 45 58 41 4d 50 ame="DEBUG_EXAMP
78b0: 4c 45 53 22 3e 44 65 62 75 67 20 45 78 61 6d 70 LES">Debug Examp
78c0: 6c 65 73 3c 2f 61 3e 3c 2f 68 34 3e 0a 0a 3c 70 les</a></h4>..<p
78d0: 3e 54 68 65 73 65 20 65 78 61 6d 70 6c 65 73 20 >These examples
78e0: 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 use the default
78f0: 55 6e 69 78 20 70 6c 61 74 66 6f 72 6d 20 53 53 Unix platform SS
7900: 4c 20 63 65 72 74 69 66 69 63 61 74 65 73 2e 20 L certificates.
7910: 46 6f 72 20 73 74 61 6e 64 61 72 64 0a 69 6e 73 For standard.ins
7920: 74 61 6c 6c 61 74 69 6f 6e 73 2c 20 2d 63 61 64 tallations, -cad
7930: 69 72 20 61 6e 64 20 2d 63 61 66 69 6c 65 20 73 ir and -cafile s
7940: 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6e 65 65 hould not be nee
7950: 64 65 64 2e 20 49 66 20 79 6f 75 72 20 63 65 72 ded. If your cer
7960: 74 69 66 69 63 61 74 65 73 0a 61 72 65 20 69 6e tificates.are in
7970: 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 6c 6f non-standard lo
7980: 63 61 74 69 6f 6e 73 2c 20 75 70 64 61 74 65 20 cations, update
7990: 2d 63 61 64 69 72 20 6f 72 20 75 73 65 20 2d 63 -cadir or use -c
79a0: 61 66 69 6c 65 20 61 73 20 6e 65 65 64 65 64 2e afile as needed.
79b0: 3c 2f 70 3e 0a 3c 62 72 3e 0a 0a 3c 70 3e 45 78 </p>.<br>..<p>Ex
79c0: 61 6d 70 6c 65 20 23 31 3a 20 55 73 65 20 48 54 ample #1: Use HT
79d0: 54 50 20 70 61 63 6b 61 67 65 3c 2f 70 3e 0a 3c TP package</p>.<
79e0: 70 72 65 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 pre><code>.packa
79f0: 67 65 20 72 65 71 75 69 72 65 20 68 74 74 70 0a ge require http.
7a00: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
7a10: 74 6c 73 0a 73 65 74 20 75 72 6c 20 22 68 74 74 tls.set url "htt
7a20: 70 73 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f ps://www.tcl.tk/
7a30: 22 0a 0a 68 74 74 70 3a 3a 72 65 67 69 73 74 65 "..http::registe
7a40: 72 20 68 74 74 70 73 20 34 34 33 20 5b 6c 69 73 r https 443 [lis
7a50: 74 20 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 t ::tls::socket
7a60: 2d 61 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 -autoservername
7a70: 74 72 75 65 20 2d 72 65 71 75 69 72 65 20 74 72 true -require tr
7a80: 75 65 20 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 ue -cadir /etc/s
7a90: 73 6c 2f 63 65 72 74 73 20 5c 0a 20 20 20 20 2d sl/certs \. -
7aa0: 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a 63 command ::tls::c
7ab0: 61 6c 6c 62 61 63 6b 20 2d 70 61 73 73 77 6f 72 allback -passwor
7ac0: 64 20 3a 3a 74 6c 73 3a 3a 70 61 73 73 77 6f 72 d ::tls::passwor
7ad0: 64 20 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 d -validatecomma
7ae0: 6e 64 20 3a 3a 74 6c 73 3a 3a 76 61 6c 69 64 61 nd ::tls::valida
7af0: 74 65 5f 63 6f 6d 6d 61 6e 64 5d 0a 0a 23 20 43 te_command]..# C
7b00: 68 65 63 6b 20 66 6f 72 20 65 72 72 6f 72 0a 73 heck for error.s
7b10: 65 74 20 74 6f 6b 65 6e 20 5b 68 74 74 70 3a 3a et token [http::
7b20: 67 65 74 75 72 6c 20 24 75 72 6c 5d 0a 69 66 20 geturl $url].if
7b30: 7b 5b 68 74 74 70 3a 3a 73 74 61 74 75 73 20 24 {[http::status $
7b40: 74 6f 6b 65 6e 5d 20 6e 65 20 22 6f 6b 22 7d 20 token] ne "ok"}
7b50: 7b 0a 20 20 20 20 70 75 74 73 20 5b 66 6f 72 6d {. puts [form
7b60: 61 74 20 22 45 72 72 6f 72 20 25 73 22 20 5b 68 at "Error %s" [h
7b70: 74 74 70 3a 3a 73 74 61 74 75 73 20 24 74 6f 6b ttp::status $tok
7b80: 65 6e 5d 5d 0a 7d 0a 0a 23 20 47 65 74 20 77 65 en]].}..# Get we
7b90: 62 20 70 61 67 65 0a 73 65 74 20 64 61 74 61 20 b page.set data
7ba0: 5b 68 74 74 70 3a 3a 64 61 74 61 20 24 74 6f 6b [http::data $tok
7bb0: 65 6e 5d 0a 70 75 74 73 20 5b 73 74 72 69 6e 67 en].puts [string
7bc0: 20 6c 65 6e 67 74 68 20 24 64 61 74 61 5d 0a 0a length $data]..
7bd0: 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 68 74 74 70 # Cleanup.::http
7be0: 3a 3a 63 6c 65 61 6e 75 70 20 24 74 6f 6b 65 6e ::cleanup $token
7bf0: 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a .</code></pre>..
7c00: 3c 70 3e 45 78 61 6d 70 6c 65 20 23 32 3a 20 55 <p>Example #2: U
7c10: 73 65 20 72 61 77 20 73 6f 63 6b 65 74 3c 2f 70 se raw socket</p
7c20: 3e 0a 3c 70 72 65 3e 3c 63 6f 64 65 3e 0a 70 61 >.<pre><code>.pa
7c30: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6c ckage require tl
7c40: 73 0a 0a 73 65 74 20 75 72 6c 20 22 77 77 77 2e s..set url "www.
7c50: 74 63 6c 2d 6c 61 6e 67 2e 6f 72 67 22 0a 73 65 tcl-lang.org".se
7c60: 74 20 70 6f 72 74 20 34 34 33 0a 0a 73 65 74 20 t port 443..set
7c70: 63 68 20 5b 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 ch [tls::socket
7c80: 2d 61 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 -autoservername
7c90: 31 20 2d 73 65 72 76 65 72 6e 61 6d 65 20 24 75 1 -servername $u
7ca0: 72 6c 20 2d 72 65 71 75 65 73 74 20 31 20 2d 72 rl -request 1 -r
7cb0: 65 71 75 69 72 65 20 31 20 5c 0a 20 20 20 20 2d equire 1 \. -
7cc0: 61 6c 70 6e 20 7b 68 74 74 70 2f 31 2e 31 7d 20 alpn {http/1.1}
7cd0: 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73 6c 2f -cadir /etc/ssl/
7ce0: 63 65 72 74 73 20 2d 63 6f 6d 6d 61 6e 64 20 3a certs -command :
7cf0: 3a 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b 20 5c :tls::callback \
7d00: 0a 20 20 20 20 2d 70 61 73 73 77 6f 72 64 20 3a . -password :
7d10: 3a 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64 20 2d :tls::password -
7d20: 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 20 validatecommand
7d30: 3a 3a 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f ::tls::validate_
7d40: 63 6f 6d 6d 61 6e 64 20 24 75 72 6c 20 24 70 6f command $url $po
7d50: 72 74 5d 0a 63 68 61 6e 20 63 6f 6e 66 69 67 75 rt].chan configu
7d60: 72 65 20 24 63 68 20 2d 62 75 66 66 65 72 73 69 re $ch -buffersi
7d70: 7a 65 20 36 35 35 33 36 0a 74 6c 73 3a 3a 68 61 ze 65536.tls::ha
7d80: 6e 64 73 68 61 6b 65 20 24 63 68 0a 0a 70 75 74 ndshake $ch..put
7d90: 73 20 24 63 68 20 22 47 45 54 20 2f 20 48 54 54 s $ch "GET / HTT
7da0: 50 2f 31 2e 31 22 0a 66 6c 75 73 68 20 24 63 68 P/1.1".flush $ch
7db0: 0a 61 66 74 65 72 20 35 30 30 0a 73 65 74 20 64 .after 500.set d
7dc0: 61 74 61 20 5b 72 65 61 64 20 24 63 68 5d 0a 0a ata [read $ch]..
7dd0: 61 72 72 61 79 20 73 65 74 20 73 74 61 74 75 73 array set status
7de0: 20 5b 74 6c 73 3a 3a 73 74 61 74 75 73 20 24 63 [tls::status $c
7df0: 68 5d 0a 61 72 72 61 79 20 73 65 74 20 63 6f 6e h].array set con
7e00: 6e 20 5b 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 n [tls::connecti
7e10: 6f 6e 20 24 63 68 5d 0a 61 72 72 61 79 20 73 65 on $ch].array se
7e20: 74 20 63 68 61 6e 20 5b 63 68 61 6e 20 63 6f 6e t chan [chan con
7e30: 66 69 67 75 72 65 20 24 63 68 5d 0a 63 6c 6f 73 figure $ch].clos
7e40: 65 20 24 63 68 0a 70 61 72 72 61 79 20 73 74 61 e $ch.parray sta
7e50: 74 75 73 0a 70 61 72 72 61 79 20 63 6f 6e 6e 0a tus.parray conn.
7e60: 70 61 72 72 61 79 20 63 68 61 6e 0a 3c 2f 63 6f parray chan.</co
7e70: 64 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 68 72 3e 0a de></pre>..<hr>.
7e80: 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 48 54 .<h3><a name="HT
7e90: 54 50 53 20 45 58 41 4d 50 4c 45 22 3e 48 54 54 TPS EXAMPLE">HTT
7ea0: 50 53 20 45 58 41 4d 50 4c 45 3c 2f 61 3e 3c 2f PS EXAMPLE</a></
7eb0: 68 33 3e 0a 0a 3c 70 3e 54 68 65 73 65 20 65 78 h3>..<p>These ex
7ec0: 61 6d 70 6c 65 73 20 75 73 65 20 74 68 65 20 64 amples use the d
7ed0: 65 66 61 75 6c 74 20 55 6e 69 78 20 70 6c 61 74 efault Unix plat
7ee0: 66 6f 72 6d 20 53 53 4c 20 63 65 72 74 69 66 69 form SSL certifi
7ef0: 63 61 74 65 73 2e 20 46 6f 72 20 73 74 61 6e 64 cates. For stand
7f00: 61 72 64 0a 69 6e 73 74 61 6c 6c 61 74 69 6f 6e ard.installation
7f10: 73 2c 20 2d 63 61 64 69 72 20 61 6e 64 20 2d 63 s, -cadir and -c
7f20: 61 66 69 6c 65 20 73 68 6f 75 6c 64 20 6e 6f 74 afile should not
7f30: 20 62 65 20 6e 65 65 64 65 64 2e 20 49 66 20 79 be needed. If y
7f40: 6f 75 72 20 63 65 72 74 69 66 69 63 61 74 65 73 our certificates
7f50: 0a 61 72 65 20 69 6e 20 6e 6f 6e 2d 73 74 61 6e .are in non-stan
7f60: 64 61 72 64 20 6c 6f 63 61 74 69 6f 6e 73 2c 20 dard locations,
7f70: 75 70 64 61 74 65 20 2d 63 61 64 69 72 20 6f 72 update -cadir or
7f80: 20 75 73 65 20 2d 63 61 66 69 6c 65 20 61 73 20 use -cafile as
7f90: 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e needed.</p>..<p>
7fa0: 45 78 61 6d 70 6c 65 20 23 31 3a 20 47 65 74 20 Example #1: Get
7fb0: 77 65 62 20 70 61 67 65 3c 2f 70 3e 0a 3c 70 72 web page</p>.<pr
7fc0: 65 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 e><code>.package
7fd0: 20 72 65 71 75 69 72 65 20 68 74 74 70 0a 70 61 require http.pa
7fe0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6c ckage require tl
7ff0: 73 0a 73 65 74 20 75 72 6c 20 22 68 74 74 70 73 s.set url "https
8000: 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 22 0a ://www.tcl.tk/".
8010: 0a 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72 20 .http::register
8020: 68 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74 20 https 443 [list
8030: 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 ::tls::socket -a
8040: 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 74 72 utoservername tr
8050: 75 65 20 2d 72 65 71 75 69 72 65 20 74 72 75 65 ue -require true
8060: 20 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73 6c -cadir /etc/ssl
8070: 2f 63 65 72 74 73 5d 0a 0a 23 20 43 68 65 63 6b /certs]..# Check
8080: 20 66 6f 72 20 65 72 72 6f 72 0a 73 65 74 20 74 for error.set t
8090: 6f 6b 65 6e 20 5b 68 74 74 70 3a 3a 67 65 74 75 oken [http::getu
80a0: 72 6c 20 24 75 72 6c 5d 0a 69 66 20 7b 5b 68 74 rl $url].if {[ht
80b0: 74 70 3a 3a 73 74 61 74 75 73 20 24 74 6f 6b 65 tp::status $toke
80c0: 6e 5d 20 6e 65 20 22 6f 6b 22 7d 20 7b 0a 20 20 n] ne "ok"} {.
80d0: 20 20 70 75 74 73 20 5b 66 6f 72 6d 61 74 20 22 puts [format "
80e0: 45 72 72 6f 72 20 25 73 22 20 5b 68 74 74 70 3a Error %s" [http:
80f0: 3a 73 74 61 74 75 73 20 24 74 6f 6b 65 6e 5d 5d :status $token]]
8100: 0a 7d 0a 0a 23 20 47 65 74 20 77 65 62 20 70 61 .}..# Get web pa
8110: 67 65 0a 73 65 74 20 64 61 74 61 20 5b 68 74 74 ge.set data [htt
8120: 70 3a 3a 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a p::data $token].
8130: 70 75 74 73 20 24 64 61 74 61 0a 0a 23 20 43 6c puts $data..# Cl
8140: 65 61 6e 75 70 0a 3a 3a 68 74 74 70 3a 3a 63 6c eanup.::http::cl
8150: 65 61 6e 75 70 20 24 74 6f 6b 65 6e 0a 3c 2f 63 eanup $token.</c
8160: 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 70 3e 45 ode></pre>..<p>E
8170: 78 61 6d 70 6c 65 20 23 32 3a 20 44 6f 77 6e 6c xample #2: Downl
8180: 6f 61 64 20 66 69 6c 65 3c 2f 70 3e 0a 3c 70 72 oad file</p>.<pr
8190: 65 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 e><code>.package
81a0: 20 72 65 71 75 69 72 65 20 68 74 74 70 0a 70 61 require http.pa
81b0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6c ckage require tl
81c0: 73 0a 0a 73 65 74 20 75 72 6c 20 22 68 74 74 70 s..set url "http
81d0: 73 3a 2f 2f 77 69 6b 69 2e 74 63 6c 2d 6c 61 6e s://wiki.tcl-lan
81e0: 67 2e 6f 72 67 2f 73 69 74 65 6d 61 70 2e 78 6d g.org/sitemap.xm
81f0: 6c 22 0a 73 65 74 20 66 69 6c 65 6e 61 6d 65 20 l".set filename
8200: 5b 66 69 6c 65 20 74 61 69 6c 20 24 75 72 6c 5d [file tail $url]
8210: 0a 0a 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72 ..http::register
8220: 20 68 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74 https 443 [list
8230: 20 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d ::tls::socket -
8240: 61 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 74 autoservername t
8250: 72 75 65 20 2d 72 65 71 75 69 72 65 20 74 72 75 rue -require tru
8260: 65 20 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73 e -cadir /etc/ss
8270: 6c 2f 63 65 72 74 73 5d 0a 0a 23 20 47 65 74 20 l/certs]..# Get
8280: 66 69 6c 65 0a 73 65 74 20 63 68 20 5b 6f 70 65 file.set ch [ope
8290: 6e 20 24 66 69 6c 65 6e 61 6d 65 20 77 62 5d 0a n $filename wb].
82a0: 73 65 74 20 74 6f 6b 65 6e 20 5b 3a 3a 68 74 74 set token [::htt
82b0: 70 3a 3a 67 65 74 75 72 6c 20 24 75 72 6c 20 2d p::geturl $url -
82c0: 62 6c 6f 63 6b 73 69 7a 65 20 36 35 35 33 36 20 blocksize 65536
82d0: 2d 63 68 61 6e 6e 65 6c 20 24 63 68 5d 0a 0a 23 -channel $ch]..#
82e0: 20 43 6c 65 61 6e 75 70 0a 63 6c 6f 73 65 20 24 Cleanup.close $
82f0: 63 68 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e ch.::http::clean
8300: 75 70 20 24 74 6f 6b 65 6e 0a 3c 2f 63 6f 64 65 up $token.</code
8310: 3e 3c 2f 70 72 65 3e 0a 0a 3c 68 72 3e 0a 0a 3c ></pre>..<hr>..<
8320: 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 53 50 45 43 h3><a name="SPEC
8330: 49 41 4c 20 43 4f 4e 53 49 44 45 52 41 54 49 4f IAL CONSIDERATIO
8340: 4e 53 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53 NS">SPECIAL CONS
8350: 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f IDERATIONS</a></
8360: 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 61 70 61 h3>..<p>The capa
8370: 62 69 6c 69 74 69 65 73 20 6f 66 20 74 68 69 73 bilities of this
8380: 20 70 61 63 6b 61 67 65 20 63 61 6e 20 76 61 72 package can var
8390: 79 20 65 6e 6f 72 6d 6f 75 73 6c 79 20 62 61 73 y enormously bas
83a0: 65 64 20 75 70 6f 6e 20 68 6f 77 20 74 68 65 0a ed upon how the.
83b0: 6c 69 6e 6b 65 64 20 74 6f 20 4f 70 65 6e 53 53 linked to OpenSS
83c0: 4c 20 6c 69 62 72 61 72 79 20 77 61 73 20 63 6f L library was co
83d0: 6e 66 69 67 75 72 65 64 20 61 6e 64 20 62 75 69 nfigured and bui
83e0: 6c 74 2e 20 4e 65 77 20 76 65 72 73 69 6f 6e 73 lt. New versions
83f0: 20 6d 61 79 20 6f 62 73 6f 6c 65 74 65 0a 6f 6c may obsolete.ol
8400: 64 65 72 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72 der protocol ver
8410: 73 69 6f 6e 73 2c 20 61 64 64 20 6f 72 20 72 65 sions, add or re
8420: 6d 6f 76 65 20 63 69 70 68 65 72 73 2c 20 63 68 move ciphers, ch
8430: 61 6e 67 65 20 64 65 66 61 75 6c 74 20 76 61 6c ange default val
8440: 75 65 73 2c 20 65 74 63 2e 0a 55 73 65 20 74 68 ues, etc..Use th
8450: 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 e <strong>tls::p
8460: 72 6f 74 6f 63 6f 6c 73 3c 2f 73 74 72 6f 6e 67 rotocols</strong
8470: 3e 20 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 6f 62 > commands to ob
8480: 74 61 69 6e 20 74 68 65 20 73 75 70 70 6f 72 74 tain the support
8490: 65 64 0a 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 ed.protocol vers
84a0: 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 68 72 3e 0a ions.</p>..<hr>.
84b0: 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 53 45 .<h3><a name="SE
84c0: 45 20 41 4c 53 4f 22 3e 53 45 45 20 41 4c 53 4f E ALSO">SEE ALSO
84d0: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 3c 73 </a></h3>..<p><s
84e0: 74 72 6f 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73 74 trong>socket</st
84f0: 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 66 rong>, <strong>f
8500: 69 6c 65 65 76 65 6e 74 3c 2f 73 74 72 6f 6e 67 ileevent</strong
8510: 3e 2c 20 3c 73 74 72 6f 6e 67 3e 68 74 74 70 3c >, <strong>http<
8520: 2f 73 74 72 6f 6e 67 3e 2c 0a 3c 61 20 68 72 65 /strong>,.<a hre
8530: 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 6f f="https://www.o
8540: 70 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 3c 73 74 penssl.org/"><st
8550: 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74 rong>OpenSSL</st
8560: 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 70 3e 0a 0a 3c rong></a></p>..<
8570: 68 72 3e 0a 0a 3c 70 72 65 3e 0a 43 6f 70 79 72 hr>..<pre>.Copyr
8580: 69 67 68 74 20 26 63 6f 70 79 3b 20 31 39 39 39 ight © 1999
8590: 20 4d 61 74 74 20 4e 65 77 6d 61 6e 2e 0a 43 6f Matt Newman..Co
85a0: 70 79 72 69 67 68 74 20 26 63 6f 70 79 3b 20 32 pyright © 2
85b0: 30 30 34 20 53 74 61 72 66 69 73 68 20 53 79 73 004 Starfish Sys
85c0: 74 65 6d 73 2e 0a 43 6f 70 79 72 69 67 68 74 20 tems..Copyright
85d0: 26 63 6f 70 79 3b 20 32 30 32 33 20 42 72 69 61 © 2023 Bria
85e0: 6e 20 4f 27 48 61 67 61 6e 2e 0a 3c 2f 70 72 65 n O'Hagan..</pre
85f0: 3e 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c >.</body>.</html
8600: 3e 0a >.