Hex Artifact Content

Artifact a7248f01882748a6d370014a39b6918c8b08e417b827dee9230fd39eb649b11f:


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>&nbsp;</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  &nbsp;</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>&nbsp;</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 &copy; 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 &copy; 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  &copy; 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                                            >.