Hex Artifact Content

Artifact f3734629c9d8ee4872f2dd3abdf371306b712782d0b240e2fdd90950fd4c275a:


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 63  alized">..<h2>Tc
0150: 6c 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 73 6f 63 6b  ibrary..for sock
01e0: 65 74 20 61 6e 64 20 49 2f 4f 20 63 68 61 6e 6e  et and I/O chann
01f0: 65 6c 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e  el communication
0200: 73 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c  s.</dd>.    </dl
0210: 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 20 20 20 20  >.    </dd>.    
0220: 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 53 59  <dd><a href="#SY
0230: 4e 4f 50 53 49 53 22 3e 53 59 4e 4f 50 53 49 53  NOPSIS">SYNOPSIS
0240: 3c 2f 61 3e 20 3c 2f 64 64 3e 0a 20 20 20 20 3c  </a> </dd>.    <
0250: 64 64 3e 3c 64 6c 3e 0a 09 20 20 20 20 3c 64 64  dd><dl>..    <dd
0260: 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72 65 71 75  ><b>package requ
0270: 69 72 65 20 54 63 6c 3c 2f 62 3e 20 3c 65 6d 3e  ire Tcl</b> <em>
0280: 3f 3c 62 3e 38 2e 35 3c 2f 62 3e 3f 3c 2f 65 6d  ?<b>8.5</b>?</em
0290: 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e  ></dd>..    <dd>
02a0: 3c 62 3e 70 61 63 6b 61 67 65 20 72 65 71 75 69  <b>package requi
02b0: 72 65 20 74 6c 73 3c 2f 62 3e 3c 2f 64 64 3e 0a  re tls</b></dd>.
02c0: 09 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c  .    <dt>&nbsp;<
02d0: 2f 64 74 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  /dt>..    <dd><b
02e0: 3e 74 6c 73 3a 3a 69 6e 69 74 3c 2f 62 3e 20 3c  >tls::init</b> <
02f0: 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 65 6d  em>?options?</em
0300: 3e 20 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64  > </dd>..    <dd
0310: 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c  ><b>tls::socket<
0320: 2f 62 3e 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73  /b> <em>?options
0330: 3f 20 68 6f 73 74 20 70 6f 72 74 3c 2f 65 6d 3e  ? host port</em>
0340: 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c  </dd>..    <dd><
0350: 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62  b>tls::socket</b
0360: 3e 20 3c 65 6d 3e 3f 2d 73 65 72 76 65 72 20 63  > <em>?-server c
0370: 6f 6d 6d 61 6e 64 3f 20 3f 6f 70 74 69 6f 6e 73  ommand? ?options
0380: 3f 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f 64 64 3e  ? port</em></dd>
0390: 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73  ..    <dd><b>tls
03a0: 3a 3a 68 61 6e 64 73 68 61 6b 65 3c 2f 62 3e 20  ::handshake</b> 
03b0: 3c 65 6d 3e 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d  <em> channel</em
03c0: 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e  ></dd>..    <dd>
03d0: 3c 62 3e 74 6c 73 3a 3a 73 74 61 74 75 73 3c 2f  <b>tls::status</
03e0: 62 3e 20 3c 65 6d 3e 3f 2d 6c 6f 63 61 6c 3f 20  b> <em>?-local? 
03f0: 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64  channel</em></dd
0400: 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c  >..    <dd><b>tl
0410: 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 62  s::connection</b
0420: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65  > <em>channel</e
0430: 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64  m></dd>..    <dd
0440: 3e 3c 62 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c  ><b>tls::import<
0450: 2f 62 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20  /b> <em>channel 
0460: 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 65 6d 3e 3c 2f  ?options?</em></
0470: 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e  dd>..    <dd><b>
0480: 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 3c 2f 62  tls::unimport</b
0490: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65  > <em>channel</e
04a0: 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 74  m></dd>..    <dt
04b0: 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 20 20  >&nbsp;</dt>..  
04c0: 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 70 72    <dd><b>tls::pr
04d0: 6f 74 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f 64 64 3e  otocols</b></dd>
04e0: 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73  ..    <dd><b>tls
04f0: 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c 2f 64  ::version</b></d
0500: 64 3e 0a 09 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f  d>..</dl>.    </
0510: 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68  dd>.    <dd><a h
0520: 72 65 66 3d 22 23 43 4f 4d 4d 41 4e 44 53 22 3e  ref="#COMMANDS">
0530: 43 4f 4d 4d 41 4e 44 53 3c 2f 61 3e 3c 2f 64 64  COMMANDS</a></dd
0540: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65  >.    <dd><a hre
0550: 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50 54  f="#CALLBACK OPT
0560: 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f  IONS">CALLBACK O
0570: 50 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 64 64 3e 0a  PTIONS</a></dd>.
0580: 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d      <dd><a href=
0590: 22 23 48 54 54 50 53 20 45 58 41 4d 50 4c 45 22  "#HTTPS EXAMPLE"
05a0: 3e 48 54 54 50 53 20 45 58 41 4d 50 4c 45 3c 2f  >HTTPS EXAMPLE</
05b0: 61 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e  a></dd>.    <dd>
05c0: 3c 61 20 68 72 65 66 3d 22 23 53 45 45 20 41 4c  <a href="#SEE AL
05d0: 53 4f 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53  SO">SPECIAL CONS
05e0: 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f  IDERATIONS</a></
05f0: 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68  dd>.    <dd><a h
0600: 72 65 66 3d 22 23 53 45 45 20 41 4c 53 4f 22 3e  ref="#SEE ALSO">
0610: 53 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 64 64  SEE ALSO</a></dd
0620: 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 68 72 3e 0a 0a 3c  >.</dl>..<hr>..<
0630: 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 4e 41 4d 45  h3><a name="NAME
0640: 22 3e 4e 41 4d 45 3c 2f 61 3e 3c 2f 68 33 3e 0a  ">NAME</a></h3>.
0650: 0a 3c 70 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3c  .<p><strong>tls<
0660: 2f 73 74 72 6f 6e 67 3e 20 2d 20 62 69 6e 64 69  /strong> - bindi
0670: 6e 67 20 74 6f 20 3c 73 74 72 6f 6e 67 3e 4f 70  ng to <strong>Op
0680: 65 6e 53 53 4c 3c 2f 73 74 72 6f 6e 67 3e 20 6c  enSSL</strong> l
0690: 69 62 72 61 72 79 0a 66 6f 72 20 73 6f 63 6b 65  ibrary.for socke
06a0: 74 20 61 6e 64 20 49 2f 4f 20 63 68 61 6e 6e 65  t and I/O channe
06b0: 6c 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73  l communications
06c0: 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61  .</p>..<h3><a na
06d0: 6d 65 3d 22 53 59 4e 4f 50 53 49 53 22 3e 53 59  me="SYNOPSIS">SY
06e0: 4e 4f 50 53 49 53 3c 2f 61 3e 3c 2f 68 33 3e 0a  NOPSIS</a></h3>.
06f0: 0a 3c 70 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72  .<p><b>package r
0700: 65 71 75 69 72 65 20 54 63 6c 3c 2f 62 3e 20 3c  equire Tcl</b> <
0710: 65 6d 3e 3f 3c 62 3e 38 2e 35 3c 2f 62 3e 3f 3c  em>?<b>8.5</b>?<
0720: 2f 65 6d 3e 3c 62 72 3e 0a 3c 62 3e 70 61 63 6b  /em><br>.<b>pack
0730: 61 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 3c  age require tls<
0740: 2f 62 3e 3c 62 72 3e 0a 3c 62 72 3e 0a 3c 61 20  /b><br>.<br>.<a 
0750: 68 72 65 66 3d 22 23 74 6c 73 3a 3a 69 6e 69 74  href="#tls::init
0760: 22 3e 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74 3c 2f  "><b>tls::init</
0770: 62 3e 20 3c 69 3e 3f 6f 70 74 69 6f 6e 73 3f 3c  b> <i>?options?<
0780: 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68  /i></a><br>.<a h
0790: 72 65 66 3d 22 23 74 6c 73 3a 3a 73 6f 63 6b 65  ref="#tls::socke
07a0: 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65  t"><b>tls::socke
07b0: 74 3c 2f 62 3e 20 3c 69 3e 3f 6f 70 74 69 6f 6e  t</b> <i>?option
07c0: 73 3f 20 68 6f 73 74 20 70 6f 72 74 3c 2f 69 3e  s? host port</i>
07d0: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
07e0: 6c 73 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62 3e 74  ls::socket"><b>t
07f0: 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c  ls::socket</b> <
0800: 69 3e 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d 61  i>?-server comma
0810: 6e 64 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f  nd? ?options? po
0820: 72 74 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c  rt</i></a><br>.<
0830: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 74  a href="#tls::st
0840: 61 74 75 73 22 3e 3c 62 3e 74 6c 73 3a 3a 73 74  atus"><b>tls::st
0850: 61 74 75 73 3c 2f 62 3e 20 3c 69 3e 3f 2d 6c 6f  atus</b> <i>?-lo
0860: 63 61 6c 3f 20 63 68 61 6e 6e 65 6c 3c 2f 69 3e  cal? channel</i>
0870: 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66  </a><br>.<a href
0880: 3d 22 23 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69  ="#tls::connecti
0890: 6f 6e 22 3e 3c 62 3e 74 6c 73 3a 3a 63 6f 6e 6e  on"><b>tls::conn
08a0: 65 63 74 69 6f 6e 3c 2f 62 3e 20 3c 69 3e 63 68  ection</b> <i>ch
08b0: 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72  annel</i></a><br
08c0: 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a  >.<a href="#tls:
08d0: 3a 68 61 6e 64 73 68 61 6b 65 22 3e 3c 62 3e 74  :handshake"><b>t
08e0: 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 3c 2f 62  ls::handshake</b
08f0: 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e  > <i>channel</i>
0900: 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66  </a><br>.<a href
0910: 3d 22 23 74 6c 73 3a 3a 69 6d 70 6f 72 74 22 3e  ="#tls::import">
0920: 3c 62 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f  <b>tls::import</
0930: 62 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 20 3f 6f  b> <i>channel ?o
0940: 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c  ptions?</i></a><
0950: 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c  br>.<a href="#tl
0960: 73 3a 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e  s::unimport"><b>
0970: 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 3c 2f 62  tls::unimport</b
0980: 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e  > <i>channel</i>
0990: 3c 2f 61 3e 3c 62 72 3e 0a 3c 62 72 3e 0a 3c 61  </a><br>.<br>.<a
09a0: 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 70 72 6f   href="#tls::pro
09b0: 74 6f 63 6f 6c 73 22 3e 3c 62 3e 74 6c 73 3a 3a  tocols"><b>tls::
09c0: 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f 61  protocols</b></a
09d0: 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23  ><br>.<a href="#
09e0: 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 22 3e 3c 62  tls::version"><b
09f0: 3e 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62  >tls::version</b
0a00: 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 2f 70 3e 0a 0a  ></a><br>.</p>..
0a10: 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 44 45 53  <h3><a name="DES
0a20: 43 52 49 50 54 49 4f 4e 22 3e 44 45 53 43 52 49  CRIPTION">DESCRI
0a30: 50 54 49 4f 4e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a  PTION</a></h3>..
0a40: 3c 70 3e 54 68 69 73 20 65 78 74 65 6e 73 69 6f  <p>This extensio
0a50: 6e 20 70 72 6f 76 69 64 65 73 20 54 43 4c 20 73  n provides TCL s
0a60: 63 72 69 70 74 20 61 63 63 65 73 73 20 74 6f 20  cript access to 
0a70: 73 65 63 75 72 65 20 73 6f 63 6b 65 74 20 63 6f  secure socket co
0a80: 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 0a 75 73 69  mmunications.usi
0a90: 6e 67 20 74 68 65 20 54 72 61 6e 73 70 6f 72 74  ng the Transport
0aa0: 20 4c 61 79 65 72 20 53 65 63 75 72 69 74 79 20   Layer Security 
0ab0: 28 54 4c 53 29 20 70 72 6f 74 6f 63 6f 6c 2e 20  (TLS) protocol. 
0ac0: 49 74 20 70 72 6f 76 69 64 65 73 20 61 20 67 65  It provides a ge
0ad0: 6e 65 72 69 63 0a 62 69 6e 64 69 6e 67 20 74 6f  neric.binding to
0ae0: 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f   <a href="http:/
0af0: 2f 77 77 77 2e 6f 70 65 6e 73 73 6c 2e 6f 72 67  /www.openssl.org
0b00: 2f 22 3e 4f 70 65 6e 53 53 4c 3c 2f 61 3e 2c 20  /">OpenSSL</a>, 
0b10: 75 74 69 6c 69 7a 69 6e 67 20 74 68 65 0a 3c 73  utilizing the.<s
0b20: 74 72 6f 6e 67 3e 54 63 6c 5f 53 74 61 63 6b 43  trong>Tcl_StackC
0b30: 68 61 6e 6e 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20  hannel</strong> 
0b40: 41 50 49 20 69 6e 20 54 63 6c 20 38 2e 34 20 61  API in Tcl 8.4 a
0b50: 6e 64 20 68 69 67 68 65 72 2e 0a 54 68 65 73 65  nd higher..These
0b60: 20 73 6f 63 6b 65 74 73 20 62 65 68 61 76 65 20   sockets behave 
0b70: 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
0b80: 20 61 73 20 63 68 61 6e 6e 65 6c 73 20 63 72 65   as channels cre
0b90: 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 62  ated using the b
0ba0: 75 69 6c 74 2d 69 6e 0a 3c 73 74 72 6f 6e 67 3e  uilt-in.<strong>
0bb0: 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20  socket</strong> 
0bc0: 63 6f 6d 6d 61 6e 64 2c 20 61 6c 6f 6e 67 20 77  command, along w
0bd0: 69 74 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f  ith additional o
0be0: 70 74 69 6f 6e 73 20 66 6f 72 20 63 6f 6e 74 72  ptions for contr
0bf0: 6f 6c 6c 69 6e 67 0a 74 68 65 20 53 53 4c 20 73  olling.the SSL s
0c00: 65 73 73 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 68  ession..</p>..<h
0c10: 33 3e 3c 61 20 6e 61 6d 65 3d 22 43 4f 4d 4d 41  3><a name="COMMA
0c20: 4e 44 53 22 3e 43 4f 4d 4d 41 4e 44 53 3c 2f 61  NDS">COMMANDS</a
0c30: 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 79 70 69 63  ></h3>..<p>Typic
0c40: 61 6c 6c 79 20 6f 6e 65 20 77 6f 75 6c 64 20 75  ally one would u
0c50: 73 65 20 74 68 65 20 3c 73 74 72 6f 6e 67 3e 74  se the <strong>t
0c60: 6c 73 3a 3a 73 6f 63 6b 65 74 20 3c 2f 73 74 72  ls::socket </str
0c70: 6f 6e 67 3e 63 6f 6d 6d 61 6e 64 0a 77 68 69 63  ong>command.whic
0c80: 68 20 70 72 6f 76 69 64 65 73 20 63 6f 6d 70 61  h provides compa
0c90: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 74 68  tibility with th
0ca0: 65 20 6e 61 74 69 76 65 20 54 63 6c 20 3c 73 74  e native Tcl <st
0cb0: 72 6f 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73 74 72  rong>socket</str
0cc0: 6f 6e 67 3e 0a 63 6f 6d 6d 61 6e 64 2e 20 49 6e  ong>.command. In
0cd0: 20 73 75 63 68 20 63 61 73 65 73 20 3c 73 74 72   such cases <str
0ce0: 6f 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c  ong>tls::import<
0cf0: 2f 73 74 72 6f 6e 67 3e 20 73 68 6f 75 6c 64 20  /strong> should 
0d00: 6e 6f 74 20 62 65 0a 75 73 65 64 20 64 69 72 65  not be.used dire
0d10: 63 74 6c 79 2e 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a  ctly.</p>..<dl>.
0d20: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
0d30: 22 74 6c 73 3a 3a 69 6e 69 74 22 3e 3c 62 3e 74  "tls::init"><b>t
0d40: 6c 73 3a 3a 69 6e 69 74 20 3c 2f 62 3e 3c 69 3e  ls::init </b><i>
0d50: 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61  ?options?</i></a
0d60: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 4f  ></dt>.    <dd>O
0d70: 70 74 69 6f 6e 61 6c 20 66 75 6e 63 74 69 6f 6e  ptional function
0d80: 20 74 6f 20 73 65 74 20 74 68 65 20 64 65 66 61   to set the defa
0d90: 75 6c 74 20 6f 70 74 69 6f 6e 73 20 75 73 65 64  ult options used
0da0: 20 62 79 0a 09 3c 73 74 72 6f 6e 67 3e 74 6c 73   by..<strong>tls
0db0: 3a 3a 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67  ::socket</strong
0dc0: 3e 2e 20 49 66 20 79 6f 75 20 63 61 6c 6c 20 3c  >. If you call <
0dd0: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f  strong>tls::impo
0de0: 72 74 3c 2f 73 74 72 6f 6e 67 3e 0a 09 64 69 72  rt</strong>..dir
0df0: 65 63 74 6c 79 20 74 68 69 73 20 72 6f 75 74 69  ectly this routi
0e00: 6e 65 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  ne has no effect
0e10: 2e 20 41 6e 79 20 6f 66 20 74 68 65 20 6f 70 74  . Any of the opt
0e20: 69 6f 6e 73 0a 09 74 68 61 74 20 3c 73 74 72 6f  ions..that <stro
0e30: 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f  ng>tls::socket</
0e40: 73 74 72 6f 6e 67 3e 20 61 63 63 65 70 74 73 20  strong> accepts 
0e50: 63 61 6e 20 62 65 20 73 65 74 0a 09 75 73 69 6e  can be set..usin
0e60: 67 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 2c 20  g this command, 
0e70: 74 68 6f 75 67 68 20 79 6f 75 20 73 68 6f 75 6c  though you shoul
0e80: 64 20 6c 69 6d 69 74 20 79 6f 75 72 20 6f 70 74  d limit your opt
0e90: 69 6f 6e 73 0a 09 74 6f 20 6f 6e 6c 79 20 54 4c  ions..to only TL
0ea0: 53 20 72 65 6c 61 74 65 64 20 6f 6e 65 73 2e 3c  S related ones.<
0eb0: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62  /dd>.    <dt>&nb
0ec0: 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74  sp;</dt>.    <dt
0ed0: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73  ><a name="tls::s
0ee0: 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73  ocket"><b>tls::s
0ef0: 6f 63 6b 65 74 20 3c 2f 62 3e 3c 65 6d 3e 3f 6f  ocket </b><em>?o
0f00: 70 74 69 6f 6e 73 3f 0a 09 68 6f 73 74 20 70 6f  ptions?..host po
0f10: 72 74 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  rt</em></a></dt>
0f20: 0a 20 20 20 20 3c 64 74 3e 3c 62 3e 74 6c 73 3a  .    <dt><b>tls:
0f30: 3a 73 6f 63 6b 65 74 3c 2f 62 3e 3c 65 6d 3e 20  :socket</b><em> 
0f40: 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64  ?-server command
0f50: 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74  ? ?options? port
0f60: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  </em></dt>.    <
0f70: 64 64 3e 54 68 69 73 20 69 73 20 61 20 68 65 6c  dd>This is a hel
0f80: 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61  per function tha
0f90: 74 20 75 74 69 6c 69 7a 65 73 20 74 68 65 20 75  t utilizes the u
0fa0: 6e 64 65 72 6c 79 69 6e 67 0a 09 63 6f 6d 6d 61  nderlying..comma
0fb0: 6e 64 73 20 28 3c 73 74 72 6f 6e 67 3e 74 6c 73  nds (<strong>tls
0fc0: 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67  ::import</strong
0fd0: 3e 29 2e 20 49 74 20 62 65 68 61 76 65 73 0a 09  >). It behaves..
0fe0: 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
0ff0: 20 61 73 20 74 68 65 20 6e 61 74 69 76 65 20 54   as the native T
1000: 63 6c 20 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65  cl <strong>socke
1010: 74 3c 2f 73 74 72 6f 6e 67 3e 0a 09 63 6f 6d 6d  t</strong>..comm
1020: 61 6e 64 20 65 78 63 65 70 74 20 74 68 65 20 6f  and except the o
1030: 70 74 69 6f 6e 73 20 63 61 6e 20 61 6c 73 6f 20  ptions can also 
1040: 69 6e 63 6c 75 64 65 20 61 6e 79 20 6f 66 20 74  include any of t
1050: 68 65 0a 09 61 70 70 6c 69 63 61 62 6c 65 20 3c  he..applicable <
1060: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 69 6d  a href="#tls::im
1070: 70 6f 72 74 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  port"><strong>tl
1080: 73 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67  s:import</strong
1090: 3e 3c 2f 61 3e 0a 09 6f 70 74 69 6f 6e 73 20 77  ></a>..options w
10a0: 69 74 68 20 6f 6e 65 20 61 64 64 69 74 69 6f 6e  ith one addition
10b0: 61 6c 20 6f 70 74 69 6f 6e 3a 3c 2f 64 64 3e 0a  al option:</dd>.
10c0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20  <blockquote>.   
10d0: 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f   <dl>..<dt><stro
10e0: 6e 67 3e 2d 61 75 74 6f 73 65 72 76 65 72 6e 61  ng>-autoserverna
10f0: 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  me</strong> <em>
1100: 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  bool</em></dt>..
1110: 3c 64 64 3e 41 75 74 6f 6d 61 74 69 63 61 6c 6c  <dd>Automaticall
1120: 79 20 73 65 74 20 74 68 65 20 2d 73 65 72 76 65  y set the -serve
1130: 72 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 20 74  rname argument t
1140: 6f 20 74 68 65 20 3c 65 6d 3e 68 6f 73 74 3c 2f  o the <em>host</
1150: 65 6d 3e 0a 09 20 20 20 20 61 72 67 75 6d 65 6e  em>..    argumen
1160: 74 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65  t (default is <e
1170: 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 2e 3c 2f  m>false</em>).</
1180: 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f  dd>.    </dl>.</
1190: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20  blockquote>..   
11a0: 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c   <dt><a name="tl
11b0: 73 3a 3a 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c  s::import"><b>tl
11c0: 73 3a 3a 69 6d 70 6f 72 74 20 3c 2f 62 3e 3c 69  s::import </b><i
11d0: 3e 63 68 61 6e 6e 65 6c 0a 09 3f 6f 70 74 69 6f  >channel..?optio
11e0: 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64 74 3e  ns?</i></a></dt>
11f0: 0a 20 20 20 20 3c 64 64 3e 41 64 64 20 53 53 4c  .    <dd>Add SSL
1200: 2f 54 4c 53 20 65 6e 63 72 79 70 74 69 6f 6e 20  /TLS encryption 
1210: 74 6f 20 61 20 72 65 67 75 6c 61 72 20 54 63 6c  to a regular Tcl
1220: 20 63 68 61 6e 6e 65 6c 2e 20 49 74 20 6e 65 65   channel. It nee
1230: 64 0a 09 6e 6f 74 20 62 65 20 61 20 73 6f 63 6b  d..not be a sock
1240: 65 74 2c 20 62 75 74 20 6d 75 73 74 20 70 72 6f  et, but must pro
1250: 76 69 64 65 20 62 69 2d 64 69 72 65 63 74 69 6f  vide bi-directio
1260: 6e 61 6c 20 66 6c 6f 77 2e 20 41 6c 73 6f 0a 09  nal flow. Also..
1270: 73 65 74 20 73 65 73 73 69 6f 6e 20 70 61 72 61  set session para
1280: 6d 65 74 65 72 73 20 66 6f 72 20 53 53 4c 20 68  meters for SSL h
1290: 61 6e 64 73 68 61 6b 65 2e 3c 2f 64 64 3e 0a 0a  andshake.</dd>..
12a0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20  <blockquote>.   
12b0: 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f   <dl>..<dt><stro
12c0: 6e 67 3e 2d 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67  ng>-alpn</strong
12d0: 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c  > <em>list</em><
12e0: 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f  /dt>..<dd>List o
12f0: 66 20 70 72 6f 74 6f 63 6f 6c 73 20 74 6f 20 6f  f protocols to o
1300: 66 66 65 72 20 64 75 72 69 6e 67 20 41 70 70 6c  ffer during Appl
1310: 69 63 61 74 69 6f 6e 2d 4c 61 79 65 72 0a 09 20  ication-Layer.. 
1320: 20 20 20 50 72 6f 74 6f 63 6f 6c 20 4e 65 67 6f     Protocol Nego
1330: 74 69 61 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 20  tiation (ALPN). 
1340: 46 6f 72 20 65 78 61 6d 70 6c 65 3a 20 3c 65 6d  For example: <em
1350: 3e 68 32 3c 2f 65 6d 3e 20 61 6e 64 0a 09 20 20  >h2</em> and..  
1360: 20 20 3c 65 6d 3e 68 74 74 70 2f 31 2e 31 3c 2f    <em>http/1.1</
1370: 65 6d 3e 2c 20 62 75 74 20 6e 6f 74 20 3c 65 6d  em>, but not <em
1380: 3e 68 33 3c 2f 65 6d 3e 20 6f 72 20 3c 65 6d 3e  >h3</em> or <em>
1390: 71 75 69 63 3c 2f 65 6d 3e 2e 3c 2f 64 64 3e 0a  quic</em>.</dd>.
13a0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 61  .<dt><strong>-ca
13b0: 64 69 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  dir</strong> <em
13c0: 3e 64 69 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  >dir</em></dt>..
13d0: 3c 64 64 3e 53 65 74 20 74 68 65 20 43 41 20 63  <dd>Set the CA c
13e0: 65 72 74 69 66 69 63 61 74 65 73 20 70 61 74 68  ertificates path
13f0: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 64 69  . The default di
1400: 72 65 63 74 6f 72 79 20 69 73 20 70 6c 61 74 66  rectory is platf
1410: 6f 72 6d 0a 09 20 20 20 20 73 70 65 63 69 66 69  orm..    specifi
1420: 63 20 61 6e 64 20 63 61 6e 20 62 65 20 73 65 74  c and can be set
1430: 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65   at compile time
1440: 2e 20 54 68 69 73 20 63 61 6e 20 62 65 20 6f 76  . This can be ov
1450: 65 72 72 69 64 64 65 6e 0a 09 20 20 20 20 76 69  erridden..    vi
1460: 61 20 74 68 65 20 3c 62 3e 53 53 4c 5f 43 45 52  a the <b>SSL_CER
1470: 54 5f 44 49 52 3c 2f 62 3e 20 65 6e 76 69 72 6f  T_DIR</b> enviro
1480: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 3c  nment variable.<
1490: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
14a0: 67 3e 2d 63 61 66 69 6c 65 20 3c 2f 73 74 72 6f  g>-cafile </stro
14b0: 6e 67 3e 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c  ng><em>filename<
14c0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53  /em></dt>..<dd>S
14d0: 65 74 20 74 68 65 20 63 65 72 74 69 66 69 63 61  et the certifica
14e0: 74 65 20 61 75 74 68 6f 72 69 74 79 20 28 43 41  te authority (CA
14f0: 29 20 63 65 72 74 69 66 69 63 61 74 65 73 20 66  ) certificates f
1500: 69 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74  ile. The default
1510: 0a 09 20 20 20 20 69 73 20 74 68 65 20 63 65 72  ..    is the cer
1520: 74 2e 70 65 6d 20 66 69 6c 65 20 69 6e 20 74 68  t.pem file in th
1530: 65 20 4f 70 73 6e 53 53 4c 20 64 69 72 65 63 74  e OpsnSSL direct
1540: 6f 72 79 2e 20 54 68 69 73 20 63 61 6e 20 61 6c  ory. This can al
1550: 73 6f 20 62 65 0a 09 20 20 20 20 6f 76 65 72 72  so be..    overr
1560: 69 64 64 65 6e 20 76 69 61 20 74 68 65 20 3c 62  idden via the <b
1570: 3e 53 53 4c 5f 43 45 52 54 5f 46 49 4c 45 3c 2f  >SSL_CERT_FILE</
1580: 62 3e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  b> environment v
1590: 61 72 69 61 62 6c 65 2e 3c 2f 64 64 3e 0a 09 3c  ariable.</dd>..<
15a0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 65 72 74  dt><strong>-cert
15b0: 66 69 6c 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  file</strong> <e
15c0: 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c  m>filename</em><
15d0: 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66  /dt>..<dd>Specif
15e0: 79 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 77  y the filename w
15f0: 69 74 68 20 74 68 65 20 63 65 72 74 69 66 69 63  ith the certific
1600: 61 74 65 20 74 6f 20 75 73 65 2e 3c 2f 64 64 3e  ate to use.</dd>
1610: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63  ..<dt><strong>-c
1620: 65 72 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ert</strong> <em
1630: 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f  >filename</em></
1640: 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79  dt>..<dd>Specify
1650: 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66   the contents of
1660: 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 74   a certificate t
1670: 6f 20 75 73 65 2c 20 61 73 20 61 20 44 45 52 0a  o use, as a DER.
1680: 09 20 20 20 20 65 6e 63 6f 64 65 64 20 62 69 6e  .    encoded bin
1690: 61 72 79 20 76 61 6c 75 65 20 28 58 2e 35 30 39  ary value (X.509
16a0: 20 44 45 52 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74   DER).</dd>..<dt
16b0: 3e 3c 73 74 72 6f 6e 67 3e 2d 63 69 70 68 65 72  ><strong>-cipher
16c0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74  </strong> <em>st
16d0: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
16e0: 3c 64 64 3e 4c 69 73 74 20 6f 66 20 63 69 70 68  <dd>List of ciph
16f0: 65 72 73 20 74 6f 20 75 73 65 2e 20 53 74 72 69  ers to use. Stri
1700: 6e 67 20 69 73 20 61 20 63 6f 6c 6f 6e 20 28 22  ng is a colon ("
1710: 3a 22 29 20 73 65 70 61 72 61 74 65 64 20 6c 69  :") separated li
1720: 73 74 0a 09 20 20 20 20 6f 66 20 63 69 70 68 65  st..    of ciphe
1730: 72 73 2e 20 43 69 70 68 65 72 73 20 63 61 6e 20  rs. Ciphers can 
1740: 62 65 20 63 6f 6d 62 69 6e 65 64 0a 09 20 20 20  be combined..   
1750: 20 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 2b 3c   using the <b>+<
1760: 2f 62 3e 20 63 68 61 72 61 63 74 65 72 2e 20 50  /b> character. P
1770: 72 65 66 69 78 65 73 20 63 61 6e 20 62 65 20 75  refixes can be u
1780: 73 65 64 20 74 6f 20 70 65 72 6d 61 6e 65 6e 74  sed to permanent
1790: 6c 79 0a 09 20 20 20 20 72 65 6d 6f 76 65 20 28  ly..    remove (
17a0: 22 21 22 29 2c 20 64 65 6c 65 74 65 20 28 22 2d  "!"), delete ("-
17b0: 22 29 2c 20 6f 72 20 6d 6f 76 65 20 61 20 63 79  "), or move a cy
17c0: 70 68 65 72 20 74 6f 20 74 68 65 20 65 6e 64 20  pher to the end 
17d0: 6f 66 0a 09 20 20 20 20 74 68 65 20 6c 69 73 74  of..    the list
17e0: 20 28 22 2b 22 29 2e 20 4b 65 79 77 6f 72 64 73   ("+"). Keywords
17f0: 20 3c 62 3e 40 53 54 52 45 4e 47 54 48 3c 2f 62   <b>@STRENGTH</b
1800: 3e 20 28 73 6f 72 74 20 62 79 20 61 6c 67 6f 72  > (sort by algor
1810: 69 74 68 6d 0a 09 20 20 20 20 6b 65 79 20 6c 65  ithm..    key le
1820: 6e 67 74 68 29 2c 20 3c 62 3e 40 53 45 43 4c 45  ngth), <b>@SECLE
1830: 56 45 4c 3d 3c 2f 62 3e 3c 69 3e 6e 3c 2f 69 3e  VEL=</b><i>n</i>
1840: 20 28 73 65 74 20 73 65 63 75 72 69 74 79 20 6c   (set security l
1850: 65 76 65 6c 20 74 6f 0a 09 20 20 20 20 6e 29 2c  evel to..    n),
1860: 20 61 6e 64 20 3c 62 3e 44 45 46 41 55 4c 54 3c   and <b>DEFAULT<
1870: 2f 62 3e 20 28 75 73 65 20 64 65 66 61 75 6c 74  /b> (use default
1880: 20 63 69 70 68 65 72 20 6c 69 73 74 2c 20 61 74   cipher list, at
1890: 20 73 74 61 72 74 20 6f 6e 6c 79 29 0a 09 20 20   start only)..  
18a0: 20 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 73 70    can also be sp
18b0: 65 63 69 66 69 65 64 2e 20 53 65 65 20 4f 70 65  ecified. See Ope
18c0: 6e 53 53 4c 20 64 6f 63 75 6d 65 6e 74 61 74 69  nSSL documentati
18d0: 6f 6e 20 66 6f 72 20 74 68 65 20 66 75 6c 6c 0a  on for the full.
18e0: 09 20 20 20 20 6c 69 73 74 20 6f 66 20 76 61 6c  .    list of val
18f0: 69 64 20 76 61 6c 75 65 73 2e 20 28 54 4c 53 20  id values. (TLS 
1900: 31 2e 32 20 61 6e 64 20 65 61 72 6c 69 65 72 20  1.2 and earlier 
1910: 6f 6e 6c 79 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e  only)</dd>..<dt>
1920: 3c 73 74 72 6f 6e 67 3e 2d 63 69 70 68 65 72 73  <strong>-ciphers
1930: 75 69 74 65 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  uites</strong> <
1940: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
1950: 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66  dt>..<dd>List of
1960: 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20 74   cipher suites t
1970: 6f 20 75 73 65 2e 20 53 74 72 69 6e 67 20 69 73  o use. String is
1980: 20 61 20 63 6f 6c 6f 6e 20 28 22 3a 22 29 0a 09   a colon (":")..
1990: 20 20 20 20 73 65 70 61 72 61 74 65 64 20 6c 69      separated li
19a0: 73 74 20 6f 66 20 63 69 70 68 65 72 20 73 75 69  st of cipher sui
19b0: 74 65 20 6e 61 6d 65 73 2e 20 28 54 4c 53 20 31  te names. (TLS 1
19c0: 2e 33 20 6f 6e 6c 79 29 3c 2f 64 64 3e 0a 09 3c  .3 only)</dd>..<
19d0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d  dt><strong>-comm
19e0: 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  and</strong> <em
19f0: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f  >callback</em></
1a00: 64 74 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62 61 63  dt>..<dd>Callbac
1a10: 6b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 69 6e 76  k command to inv
1a20: 6f 6b 65 20 61 74 20 73 65 76 65 72 61 6c 20 70  oke at several p
1a30: 6f 69 6e 74 73 20 64 75 72 69 6e 67 20 74 68 65  oints during the
1a40: 20 68 61 6e 64 73 68 61 6b 65 2e 0a 09 20 20 20   handshake...   
1a50: 20 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f   This is used to
1a60: 20 70 61 73 73 20 65 72 72 6f 72 73 20 61 6e 64   pass errors and
1a70: 20 74 72 61 63 69 6e 67 20 69 6e 66 6f 72 6d 61   tracing informa
1a80: 74 69 6f 6e 2c 20 61 6e 64 0a 09 20 20 20 20 69  tion, and..    i
1a90: 74 20 63 61 6e 20 61 6c 6c 6f 77 20 54 63 6c 20  t can allow Tcl 
1aa0: 73 63 72 69 70 74 73 20 74 6f 20 70 65 72 66 6f  scripts to perfo
1ab0: 72 6d 20 74 68 65 69 72 20 6f 77 6e 20 63 65 72  rm their own cer
1ac0: 74 69 66 69 63 61 74 65 0a 09 20 20 20 20 76 61  tificate..    va
1ad0: 6c 69 64 61 74 69 6f 6e 20 69 6e 20 70 6c 61 63  lidation in plac
1ae0: 65 20 6f 66 20 74 68 65 20 64 65 66 61 75 6c 74  e of the default
1af0: 20 76 61 6c 69 64 61 74 69 6f 6e 20 70 72 6f 76   validation prov
1b00: 69 64 65 64 20 62 79 0a 09 20 20 20 20 4f 70 65  ided by..    Ope
1b10: 6e 53 53 4c 2e 20 53 65 65 20 3c 61 20 68 72 65  nSSL. See <a hre
1b20: 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50 54  f="#CALLBACK OPT
1b30: 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f  IONS">CALLBACK O
1b40: 50 54 49 4f 4e 53 3c 2f 61 3e 0a 09 20 20 20 20  PTIONS</a>..    
1b50: 66 6f 72 20 66 75 72 74 68 65 72 20 64 69 73 63  for further disc
1b60: 75 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64  ussion.</dd>..<d
1b70: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 64 68 70 61 72  t><strong>-dhpar
1b80: 61 6d 73 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d  ams </strong><em
1b90: 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f  >filename</em></
1ba0: 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79  dt>..<dd>Specify
1bb0: 20 74 68 65 20 44 69 66 66 69 65 2d 48 65 6c 6c   the Diffie-Hell
1bc0: 6d 61 6e 20 70 61 72 61 6d 65 74 65 72 73 20 66  man parameters f
1bd0: 69 6c 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  ile.</dd>..<dt><
1be0: 73 74 72 6f 6e 67 3e 2d 6b 65 79 66 69 6c 65 3c  strong>-keyfile<
1bf0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66 69 6c  /strong> <em>fil
1c00: 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  ename</em></dt>.
1c10: 09 3c 64 64 3e 53 70 65 63 69 66 79 20 74 68 65  .<dd>Specify the
1c20: 20 70 72 69 76 61 74 65 20 6b 65 79 20 66 69 6c   private key fil
1c30: 65 2e 20 28 64 65 66 61 75 6c 74 20 69 73 0a 09  e. (default is..
1c40: 20 20 20 20 76 61 6c 75 65 20 6f 66 20 2d 63 65      value of -ce
1c50: 72 74 66 69 6c 65 29 3c 2f 64 64 3e 0a 09 3c 64  rtfile)</dd>..<d
1c60: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b 65 79 3c 2f  t><strong>-key</
1c70: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66 69 6c 65  strong> <em>file
1c80: 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  name</em></dt>..
1c90: 3c 64 64 3e 53 70 65 63 69 66 79 20 74 68 65 20  <dd>Specify the 
1ca0: 70 72 69 76 61 74 65 20 6b 65 79 20 74 6f 20 75  private key to u
1cb0: 73 65 20 61 73 20 61 20 44 45 52 20 65 6e 63 6f  se as a DER enco
1cc0: 64 65 64 20 76 61 6c 75 65 20 28 50 4b 43 53 23  ded value (PKCS#
1cd0: 31 20 44 45 52 29 3c 2f 64 64 3e 0a 09 3c 64 74  1 DER)</dd>..<dt
1ce0: 3e 3c 73 74 72 6f 6e 67 3e 2d 6d 6f 64 65 6c 3c  ><strong>-model<
1cf0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61  /strong> <em>cha
1d00: 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  nnel</em></dt>..
1d10: 3c 64 64 3e 46 6f 72 63 65 20 74 68 69 73 20 63  <dd>Force this c
1d20: 68 61 6e 6e 65 6c 20 74 6f 20 73 68 61 72 65 20  hannel to share 
1d30: 74 68 65 20 73 61 6d 65 20 3c 65 6d 3e 3c 73 74  the same <em><st
1d40: 72 6f 6e 67 3e 53 53 4c 5f 43 54 58 3c 2f 73 74  rong>SSL_CTX</st
1d50: 72 6f 6e 67 3e 3c 2f 65 6d 3e 0a 09 20 20 20 20  rong></em>..    
1d60: 73 74 72 75 63 74 75 72 65 20 61 73 20 74 68 65  structure as the
1d70: 20 73 70 65 63 69 66 69 65 64 20 3c 65 6d 3e 63   specified <em>c
1d80: 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 2c 20 61 6e 64  hannel</em>, and
1d90: 0a 09 20 20 20 20 74 68 65 72 65 66 6f 72 65 20  ..    therefore 
1da0: 73 68 61 72 65 20 63 61 6c 6c 62 61 63 6b 73 20  share callbacks 
1db0: 65 74 63 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  etc.</dd>..<dt><
1dc0: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
1dd0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61  </strong> <em>ca
1de0: 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e  llback</em></dt>
1df0: 0a 09 3c 64 64 3e 43 61 6c 6c 62 61 63 6b 20 63  ..<dd>Callback c
1e00: 6f 6d 6d 61 6e 64 20 74 6f 20 69 6e 76 6f 6b 65  ommand to invoke
1e10: 20 77 68 65 6e 20 4f 70 65 6e 53 53 4c 20 6e 65   when OpenSSL ne
1e20: 65 64 73 20 74 6f 20 6f 62 74 61 69 6e 20 61 20  eds to obtain a 
1e30: 70 61 73 73 77 6f 72 64 2e 0a 09 20 20 20 20 54  password...    T
1e40: 79 70 69 63 61 6c 6c 79 20 75 73 65 64 20 74 6f  ypically used to
1e50: 20 75 6e 6c 6f 63 6b 20 74 68 65 20 70 72 69 76   unlock the priv
1e60: 61 74 65 20 6b 65 79 20 6f 66 20 61 20 63 65 72  ate key of a cer
1e70: 74 69 66 69 63 61 74 65 2e 20 54 68 65 0a 09 20  tificate. The.. 
1e80: 20 20 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75     callback shou
1e90: 6c 64 20 72 65 74 75 72 6e 20 61 20 73 74 72 69  ld return a stri
1ea0: 6e 67 20 77 68 69 63 68 20 72 65 70 72 65 73 65  ng which represe
1eb0: 6e 74 73 20 74 68 65 20 70 61 73 73 77 6f 72 64  nts the password
1ec0: 0a 09 20 20 20 20 74 6f 20 62 65 20 75 73 65 64  ..    to be used
1ed0: 2e 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22 23  . See <a href="#
1ee0: 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53  CALLBACK OPTIONS
1ef0: 22 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f  ">CALLBACK OPTIO
1f00: 4e 53 3c 2f 61 3e 0a 09 20 20 20 20 66 6f 72 20  NS</a>..    for 
1f10: 66 75 72 74 68 65 72 20 64 69 73 63 75 73 73 69  further discussi
1f20: 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  on.</dd>..<dt><s
1f30: 74 72 6f 6e 67 3e 2d 70 6f 73 74 5f 68 61 6e 64  trong>-post_hand
1f40: 73 68 61 6b 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  shake</strong> <
1f50: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
1f60: 3e 0a 09 3c 64 64 3e 41 6c 6c 6f 77 20 70 6f 73  >..<dd>Allow pos
1f70: 74 2d 68 61 6e 64 73 68 61 6b 65 20 74 69 63 6b  t-handshake tick
1f80: 65 74 20 75 70 64 61 74 65 73 2e 3c 2f 64 64 3e  et updates.</dd>
1f90: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 72  ..<dt><strong>-r
1fa0: 65 71 75 65 73 74 20 3c 2f 73 74 72 6f 6e 67 3e  equest </strong>
1fb0: 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64  <em>bool</em></d
1fc0: 74 3e 0a 09 3c 64 64 3e 52 65 71 75 65 73 74 20  t>..<dd>Request 
1fd0: 61 20 63 65 72 74 69 66 69 63 61 74 65 20 66 72  a certificate fr
1fe0: 6f 6d 20 70 65 65 72 20 64 75 72 69 6e 67 20 53  om peer during S
1ff0: 53 4c 20 68 61 6e 64 73 68 61 6b 65 2e 0a 09 20  SL handshake... 
2000: 20 20 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c     (default is <
2010: 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64  em>true</em>)</d
2020: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
2030: 2d 72 65 71 75 69 72 65 3c 2f 73 74 72 6f 6e 67  -require</strong
2040: 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c  > <em>bool</em><
2050: 2f 64 74 3e 0a 09 3c 64 64 3e 52 65 71 75 69 72  /dt>..<dd>Requir
2060: 65 20 61 20 76 61 6c 69 64 20 63 65 72 74 69 66  e a valid certif
2070: 69 63 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20  icate from peer 
2080: 64 75 72 69 6e 67 20 53 53 4c 20 68 61 6e 64 73  during SSL hands
2090: 68 61 6b 65 2e 0a 09 20 20 20 20 49 66 20 74 68  hake...    If th
20a0: 69 73 20 69 73 20 73 65 74 20 74 6f 20 74 72 75  is is set to tru
20b0: 65 2c 20 74 68 65 6e 20 3c 73 74 72 6f 6e 67 3e  e, then <strong>
20c0: 2d 72 65 71 75 65 73 74 3c 2f 73 74 72 6f 6e 67  -request</strong
20d0: 3e 20 6d 75 73 74 0a 09 20 20 20 20 61 6c 73 6f  > must..    also
20e0: 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65 20   be set to true 
20f0: 61 6e 64 20 61 20 65 69 74 68 65 72 20 61 20 2d  and a either a -
2100: 63 61 64 69 72 2c 20 2d 63 61 66 69 6c 65 2c 20  cadir, -cafile, 
2110: 6f 72 20 70 6c 61 74 66 6f 72 6d 0a 09 20 20 20  or platform..   
2120: 20 64 65 66 61 75 6c 74 20 6d 75 73 74 20 62 65   default must be
2130: 20 70 72 6f 76 69 64 65 64 20 69 6e 20 6f 72 64   provided in ord
2140: 65 72 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61  er to validate a
2150: 67 61 69 6e 73 74 2e 0a 09 20 20 20 20 28 64 65  gainst...    (de
2160: 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c  fault is <em>fal
2170: 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c  se</em>)</dd>..<
2180: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 63 75  dt><strong>-secu
2190: 72 69 74 79 5f 6c 65 76 65 6c 3c 2f 73 74 72 6f  rity_level</stro
21a0: 6e 67 3e 20 3c 65 6d 3e 69 6e 74 65 67 65 72 3c  ng> <em>integer<
21b0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53  /em></dt>..<dd>S
21c0: 65 74 20 73 65 63 75 72 69 74 79 20 6c 65 76 65  et security leve
21d0: 6c 2e 20 4d 75 73 74 20 62 65 20 30 20 74 6f 20  l. Must be 0 to 
21e0: 35 2e 20 54 68 65 20 73 65 63 75 72 69 74 79 20  5. The security 
21f0: 6c 65 76 65 6c 20 61 66 66 65 63 74 73 0a 09 20  level affects.. 
2200: 20 20 20 74 68 65 20 63 69 70 68 65 72 20 73 75     the cipher su
2210: 69 74 65 20 65 6e 63 72 79 70 74 69 6f 6e 20 61  ite encryption a
2220: 6c 67 6f 72 69 74 68 6d 73 2c 20 73 75 70 70 6f  lgorithms, suppo
2230: 72 74 65 64 20 45 43 43 20 63 75 72 76 65 73 2c  rted ECC curves,
2240: 0a 09 20 20 20 20 73 75 70 70 6f 72 74 65 64 20  ..    supported 
2250: 73 69 67 6e 61 74 75 72 65 20 61 6c 67 6f 72 69  signature algori
2260: 74 68 6d 73 2c 20 44 48 20 70 61 72 61 6d 65 74  thms, DH paramet
2270: 65 72 20 73 69 7a 65 73 2c 20 63 65 72 74 69 66  er sizes, certif
2280: 69 63 61 74 65 0a 09 20 20 20 20 6b 65 79 20 73  icate..    key s
2290: 69 7a 65 73 20 61 6e 64 20 73 69 67 6e 61 74 75  izes and signatu
22a0: 72 65 20 61 6c 67 6f 72 69 74 68 6d 73 2e 20 54  re algorithms. T
22b0: 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 31 2e  he default is 1.
22c0: 0a 09 20 20 20 20 4c 65 76 65 6c 20 33 20 61 6e  ..    Level 3 an
22d0: 64 20 68 69 67 68 65 72 20 64 69 73 61 62 6c 65  d higher disable
22e0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 65 73   support for ses
22f0: 73 69 6f 6e 20 74 69 63 6b 65 74 73 20 61 6e 64  sion tickets and
2300: 20 6f 6e 6c 79 0a 09 20 20 20 20 61 63 63 65 70   only..    accep
2310: 74 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20  t cipher suites 
2320: 74 68 61 74 20 70 72 6f 76 69 64 65 20 66 6f 72  that provide for
2330: 77 61 72 64 20 73 65 63 72 65 63 79 2e 3c 2f 64  ward secrecy.</d
2340: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
2350: 2d 73 65 72 76 65 72 3c 2f 73 74 72 6f 6e 67 3e  -server</strong>
2360: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f   <em>bool</em></
2370: 64 74 3e 0a 09 3c 64 64 3e 53 65 74 20 74 6f 20  dt>..<dd>Set to 
2380: 61 63 74 20 61 73 20 61 20 73 65 72 76 65 72 20  act as a server 
2390: 61 6e 64 20 72 65 73 70 6f 6e 64 20 77 69 74 68  and respond with
23a0: 20 61 20 73 65 72 76 65 72 20 68 61 6e 64 73 68   a server handsh
23b0: 61 6b 65 20 77 68 65 6e 0a 09 20 20 20 20 61 20  ake when..    a 
23c0: 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 73 20  client connects 
23d0: 61 6e 64 20 70 72 6f 76 69 64 65 73 20 61 20 63  and provides a c
23e0: 6c 69 65 6e 74 20 68 61 6e 64 73 68 61 6b 65 2e  lient handshake.
23f0: 0a 09 20 20 20 20 28 64 65 66 61 75 6c 74 20 69  ..    (default i
2400: 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e  s <em>false</em>
2410: 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  )</dd>..<dt><str
2420: 6f 6e 67 3e 2d 73 65 72 76 65 72 6e 61 6d 65 3c  ong>-servername<
2430: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 68 6f 73  /strong> <em>hos
2440: 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  t</em></dt>..<dd
2450: 3e 53 70 65 63 69 66 79 20 73 65 72 76 65 72 27  >Specify server'
2460: 73 20 68 6f 73 74 6e 61 6d 65 2e 20 55 73 65 64  s hostname. Used
2470: 20 74 6f 20 73 65 74 20 74 68 65 20 54 4c 53 20   to set the TLS 
2480: 27 53 65 72 76 65 72 20 4e 61 6d 65 0a 09 20 20  'Server Name..  
2490: 20 20 49 6e 64 69 63 61 74 69 6f 6e 27 20 28 53    Indication' (S
24a0: 4e 49 29 20 65 78 74 65 6e 73 69 6f 6e 2e 20 53  NI) extension. S
24b0: 65 74 20 74 6f 20 74 68 65 20 65 78 70 65 63 74  et to the expect
24c0: 65 64 20 73 65 72 76 65 72 6e 61 6d 65 0a 09 20  ed servername.. 
24d0: 20 20 20 69 6e 20 74 68 65 20 73 65 72 76 65 72     in the server
24e0: 27 73 20 63 65 72 74 69 66 69 63 61 74 65 20 6f  's certificate o
24f0: 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 75 62  r one of the sub
2500: 6a 65 63 74 41 6c 74 4e 61 6d 65 0a 09 20 20 20  jectAltName..   
2510: 20 61 6c 74 65 72 6e 61 74 65 73 2e 3c 2f 64 64   alternates.</dd
2520: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
2530: 73 65 73 73 69 6f 6e 5f 69 64 3c 2f 73 74 72 6f  session_id</stro
2540: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
2550: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65  em></dt>..<dd>Se
2560: 73 73 69 6f 6e 20 69 64 20 74 6f 20 72 65 73 75  ssion id to resu
2570: 6d 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e  me session.</dd>
2580: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73  ..<dt><strong>-s
2590: 73 6c 32 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  sl2</strong> <em
25a0: 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >bool</em></dt>.
25b0: 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20  .<dd>Enable use 
25c0: 6f 66 20 53 53 4c 20 76 32 2e 20 28 64 65 66 61  of SSL v2. (defa
25d0: 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65  ult is <em>false
25e0: 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74  </em>)</dd>..<dt
25f0: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 73 6c 33 20 3c  ><strong>-ssl3 <
2600: 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 62 6f 6f 6c  /strong><em>bool
2610: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2620: 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 53 53  Enable use of SS
2630: 4c 20 76 33 2e 20 28 64 65 66 61 75 6c 74 20 69  L v3. (default i
2640: 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e  s <em>false</em>
2650: 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74  )</dd>..<dt>-<st
2660: 72 6f 6e 67 3e 74 6c 73 31 3c 2f 73 74 72 6f 6e  rong>tls1</stron
2670: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e  g> <em>bool</em>
2680: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c  </dt>..<dd>Enabl
2690: 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31 2e  e use of TLS v1.
26a0: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d   (default is <em
26b0: 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e  >true</em>)</dd>
26c0: 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74  ..<dt>-<strong>t
26d0: 6c 73 31 2e 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ls1.1</strong> <
26e0: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
26f0: 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73  >..<dd>Enable us
2700: 65 20 6f 66 20 54 4c 53 20 76 31 2e 31 20 28 64  e of TLS v1.1 (d
2710: 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72  efault is <em>tr
2720: 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c  ue</em>)</dd>..<
2730: 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31  dt>-<strong>tls1
2740: 2e 32 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  .2</strong> <em>
2750: 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  bool</em></dt>..
2760: 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f  <dd>Enable use o
2770: 66 20 54 4c 53 20 76 31 2e 32 20 28 64 65 66 61  f TLS v1.2 (defa
2780: 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c  ult is <em>true<
2790: 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e  /em>)</dd>..<dt>
27a0: 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31 2e 33 3c  -<strong>tls1.3<
27b0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
27c0: 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  l</em></dt>..<dd
27d0: 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 54  >Enable use of T
27e0: 4c 53 20 76 31 2e 33 20 28 64 65 66 61 75 6c 74  LS v1.3 (default
27f0: 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d   is <em>true</em
2800: 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  >)</dd>..<dt><st
2810: 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65 63 6f  rong>-validateco
2820: 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  mmand</strong> <
2830: 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e  em>callback</em>
2840: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62  </dt>..<dd>Callb
2850: 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 69  ack command to i
2860: 6e 76 6f 6b 65 20 74 6f 20 76 65 72 69 66 79 20  nvoke to verify 
2870: 6f 72 20 76 61 6c 69 64 61 74 65 20 70 72 6f 74  or validate prot
2880: 6f 63 6f 6c 20 63 6f 6e 66 69 67 0a 09 20 20 20  ocol config..   
2890: 20 70 61 72 61 6d 65 74 65 72 73 20 64 75 72 69   parameters duri
28a0: 6e 67 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 20  ng the protocol 
28b0: 6e 65 67 6f 74 69 61 74 69 6f 6e 20 70 68 61 73  negotiation phas
28c0: 65 2e 20 53 65 65 0a 09 20 20 20 20 3c 61 20 68  e. See..    <a h
28d0: 72 65 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f  ref="#CALLBACK O
28e0: 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b  PTIONS">CALLBACK
28f0: 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 0a 09 20 20   OPTIONS</a>..  
2900: 20 20 66 6f 72 20 66 75 72 74 68 65 72 20 64 69    for further di
2910: 73 63 75 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 20  scussion.</dd>. 
2920: 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b     </dl>.</block
2930: 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c 64 74 3e  quote>..    <dt>
2940: 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 75 6e  <a name="tls::un
2950: 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a  import"><b>tls::
2960: 75 6e 69 6d 70 6f 72 74 20 3c 2f 62 3e 3c 69 3e  unimport </b><i>
2970: 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c  channel</i></a><
2980: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 50 72 6f  /dt>.    <dd>Pro
2990: 76 69 64 65 64 20 66 6f 72 20 73 79 6d 6d 65 74  vided for symmet
29a0: 72 79 20 74 6f 20 3c 73 74 72 6f 6e 67 3e 74 6c  ry to <strong>tl
29b0: 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e  s::import</stron
29c0: 67 3e 2c 20 74 68 69 73 0a 20 20 20 20 20 20 75  g>, this.      u
29d0: 6e 73 74 61 63 6b 73 20 74 68 65 20 65 6e 63 72  nstacks the encr
29e0: 79 70 74 69 6f 6e 20 6f 66 20 61 20 72 65 67 75  yption of a regu
29f0: 6c 61 72 20 54 63 6c 20 63 68 61 6e 6e 65 6c 2e  lar Tcl channel.
2a00: 20 41 6e 20 65 72 72 6f 72 0a 20 20 20 20 20 20   An error.      
2a10: 69 73 20 74 68 72 6f 77 6e 20 69 66 20 54 4c 53  is thrown if TLS
2a20: 20 69 73 20 6e 6f 74 20 74 68 65 20 74 6f 70 20   is not the top 
2a30: 73 74 61 63 6b 65 64 20 63 68 61 6e 6e 65 6c 20  stacked channel 
2a40: 74 79 70 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c  type.</dd>.    <
2a50: 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 20  dt>&nbsp;</dt>. 
2a60: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
2a70: 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 22 3e  tls::handshake">
2a80: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 68 61 6e  <strong>tls::han
2a90: 64 73 68 61 6b 65 3c 2f 73 74 72 6f 6e 67 3e 0a  dshake</strong>.
2aa0: 09 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d  .<em>channel</em
2ab0: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
2ac0: 64 64 3e 46 6f 72 63 65 73 20 68 61 6e 64 73 68  dd>Forces handsh
2ad0: 61 6b 65 20 74 6f 20 74 61 6b 65 20 70 6c 61 63  ake to take plac
2ae0: 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 73 20 30  e, and returns 0
2af0: 20 69 66 0a 09 68 61 6e 64 73 68 61 6b 65 20 69   if..handshake i
2b00: 73 20 73 74 69 6c 6c 20 69 6e 20 70 72 6f 67 72  s still in progr
2b10: 65 73 73 20 28 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e  ess (non-blockin
2b20: 67 29 2c 20 6f 72 20 31 20 69 66 0a 09 74 68 65  g), or 1 if..the
2b30: 20 68 61 6e 64 73 68 61 6b 65 20 77 61 73 20 73   handshake was s
2b40: 75 63 63 65 73 73 66 75 6c 2e 20 49 66 20 74 68  uccessful. If th
2b50: 65 20 68 61 6e 64 73 68 61 6b 65 20 66 61 69 6c  e handshake fail
2b60: 65 64 0a 09 74 68 69 73 20 72 6f 75 74 69 6e 65  ed..this routine
2b70: 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 65   will throw an e
2b80: 72 72 6f 72 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c  rror.</dd>.    <
2b90: 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 20  dt>&nbsp;</dt>. 
2ba0: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
2bb0: 74 6c 73 3a 3a 73 74 61 74 75 73 22 3e 3c 73 74  tls::status"><st
2bc0: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 74 61 74 75 73  rong>tls::status
2bd0: 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20 3c 65  </strong>.    <e
2be0: 6d 3e 3f 3c 2f 65 6d 3e 3c 62 3e 2d 6c 6f 63 61  m>?</em><b>-loca
2bf0: 6c 3c 2f 62 3e 3c 65 6d 3e 3f 20 63 68 61 6e 6e  l</b><em>? chann
2c00: 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  el</em></a></dt>
2c10: 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73  .    <dd>Returns
2c20: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
2c30: 74 75 73 20 6f 66 20 61 6e 20 53 53 4c 20 63 68  tus of an SSL ch
2c40: 61 6e 6e 65 6c 2e 20 54 68 65 20 72 65 73 75 6c  annel. The resul
2c50: 74 20 69 73 20 61 20 6c 69 73 74 0a 09 6f 66 20  t is a list..of 
2c60: 6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 73 20  key-value pairs 
2c70: 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 53  describing the S
2c80: 53 4c 2c 20 63 65 72 74 69 66 69 63 61 74 65 2c  SL, certificate,
2c90: 20 61 6e 64 20 63 65 72 74 69 66 69 63 61 74 65   and certificate
2ca0: 0a 09 76 65 72 69 66 69 63 61 74 69 6f 6e 20 73  ..verification s
2cb0: 74 61 74 75 73 2e 20 49 66 20 74 68 65 20 53 53  tatus. If the SS
2cc0: 4c 20 68 61 6e 64 73 68 61 6b 65 20 68 61 73 20  L handshake has 
2cd0: 6e 6f 74 20 79 65 74 20 63 6f 6d 70 6c 65 74 65  not yet complete
2ce0: 64 2c 0a 09 61 6e 20 65 6d 70 74 79 20 6c 69 73  d,..an empty lis
2cf0: 74 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49  t is returned. I
2d00: 66 20 3c 62 3e 2d 6c 6f 63 61 6c 3c 2f 62 3e 20  f <b>-local</b> 
2d10: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
2d20: 65 6e 20 74 68 65 0a 09 6c 6f 63 61 6c 20 63 65  en the..local ce
2d30: 72 74 69 66 69 63 61 74 65 20 69 73 20 75 73 65  rtificate is use
2d40: 64 2e 3c 2f 64 64 3e 0a 3c 62 6c 6f 63 6b 71 75  d.</dd>.<blockqu
2d50: 6f 74 65 3e 0a 09 3c 62 3e 53 53 4c 20 53 74 61  ote>..<b>SSL Sta
2d60: 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e  tus</b>.    <dl>
2d70: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c  ..<dt><strong>al
2d80: 70 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  pn</strong> <em>
2d90: 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 3c 2f 64  protocol</em></d
2da0: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 72 6f 74  t>..<dd>The prot
2db0: 6f 63 6f 6c 20 73 65 6c 65 63 74 65 64 20 61 66  ocol selected af
2dc0: 74 65 72 20 41 70 70 6c 69 63 61 74 69 6f 6e 2d  ter Application-
2dd0: 4c 61 79 65 72 20 50 72 6f 74 6f 63 6f 6c 0a 09  Layer Protocol..
2de0: 20 20 20 20 4e 65 67 6f 74 69 61 74 69 6f 6e 20      Negotiation 
2df0: 28 41 4c 50 4e 29 2e 3c 2f 64 64 3e 0a 09 3c 64  (ALPN).</dd>..<d
2e00: 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65 72  t><strong>cipher
2e10: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 69  </strong> <em>ci
2e20: 70 68 65 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  pher</em></dt>..
2e30: 3c 64 64 3e 54 68 65 20 63 75 72 72 65 6e 74 20  <dd>The current 
2e40: 63 69 70 68 65 72 20 69 6e 20 75 73 65 20 62 65  cipher in use be
2e50: 74 77 65 65 6e 20 66 6f 72 20 74 68 65 20 63 68  tween for the ch
2e60: 61 6e 6e 65 6c 2e 3c 2f 64 64 3e 0a 09 3c 64 74  annel.</dd>..<dt
2e70: 3e 3c 73 74 72 6f 6e 67 3e 70 65 65 72 6e 61 6d  ><strong>peernam
2e80: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e  e</strong> <em>n
2e90: 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ame</em></dt>..<
2ea0: 64 64 3e 54 68 65 20 70 65 65 72 6e 61 6d 65 20  dd>The peername 
2eb0: 66 72 6f 6d 20 74 68 65 20 63 65 72 74 69 66 69  from the certifi
2ec0: 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  cate.</dd>..<dt>
2ed0: 3c 73 74 72 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c  <strong>protocol
2ee0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65  </strong> <em>ve
2ef0: 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  rsion</em></dt>.
2f00: 09 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f  .<dd>The protoco
2f10: 6c 20 76 65 72 73 69 6f 6e 20 75 73 65 64 20 66  l version used f
2f20: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
2f30: 6e 3a 0a 09 20 20 20 20 53 53 4c 32 2c 20 53 53  n:..    SSL2, SS
2f40: 4c 33 2c 20 54 4c 53 31 2c 20 54 4c 53 31 2e 31  L3, TLS1, TLS1.1
2f50: 2c 20 54 4c 53 31 2e 32 2c 20 54 4c 53 31 2e 33  , TLS1.2, TLS1.3
2f60: 2c 20 6f 72 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64  , or unknown.</d
2f70: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
2f80: 73 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  sbits</strong> <
2f90: 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  em>n</em></dt>..
2fa0: 3c 64 64 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  <dd>The number o
2fb0: 66 20 62 69 74 73 20 75 73 65 64 20 66 6f 72 20  f bits used for 
2fc0: 74 68 65 20 73 65 73 73 69 6f 6e 20 6b 65 79 2e  the session key.
2fd0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
2fe0: 6e 67 3e 73 69 67 6e 61 74 75 72 65 48 61 73 68  ng>signatureHash
2ff0: 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e  Algorithm</stron
3000: 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d  g> <em>algorithm
3010: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3020: 54 68 65 20 73 69 67 6e 61 74 75 72 65 20 68 61  The signature ha
3030: 73 68 20 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64  sh algorithm.</d
3040: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
3050: 73 69 67 6e 61 74 75 72 65 54 79 70 65 3c 2f 73  signatureType</s
3060: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 74 79 70 65 3c  trong> <em>type<
3070: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
3080: 68 65 20 73 69 67 6e 61 74 75 72 65 20 74 79 70  he signature typ
3090: 65 20 76 61 6c 75 65 2e 3c 2f 64 64 3e 0a 09 3c  e value.</dd>..<
30a0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66  dt><strong>verif
30b0: 79 44 65 70 74 68 3c 2f 73 74 72 6f 6e 67 3e 20  yDepth</strong> 
30c0: 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  <em>n</em></dt>.
30d0: 09 3c 64 64 3e 4d 61 78 69 6d 75 6d 20 64 65 70  .<dd>Maximum dep
30e0: 74 68 20 66 6f 72 20 74 68 65 20 63 65 72 74 69  th for the certi
30f0: 66 69 63 61 74 65 20 63 68 61 69 6e 20 76 65 72  ficate chain ver
3100: 69 66 69 63 61 74 69 6f 6e 2e 0a 09 20 20 20 20  ification...    
3110: 44 65 66 61 75 6c 74 20 69 73 20 2d 31 2c 20 74  Default is -1, t
3120: 6f 20 63 68 65 63 6b 20 61 6c 6c 2e 3c 2f 64 64  o check all.</dd
3130: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 76  >..<dt><strong>v
3140: 65 72 69 66 79 4d 6f 64 65 3c 2f 73 74 72 6f 6e  erifyMode</stron
3150: 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e  g> <em>list</em>
3160: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20  </dt>..<dd>List 
3170: 6f 66 20 63 65 72 74 69 66 69 63 61 74 65 20 76  of certificate v
3180: 65 72 69 66 69 63 61 74 69 6f 6e 20 6d 6f 64 65  erification mode
3190: 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  s.</dd>..<dt><st
31a0: 72 6f 6e 67 3e 76 65 72 69 66 79 52 65 73 75 6c  rong>verifyResul
31b0: 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 72  t</strong> <em>r
31c0: 65 73 75 6c 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  esult</em></dt>.
31d0: 09 3c 64 64 3e 43 65 72 74 69 66 69 63 61 74 65  .<dd>Certificate
31e0: 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 72 65   verification re
31f0: 73 75 6c 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  sult.</dd>..<dt>
3200: 3c 73 74 72 6f 6e 67 3e 63 61 5f 6e 61 6d 65 73  <strong>ca_names
3210: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69  </strong> <em>li
3220: 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  st</em></dt>..<d
3230: 64 3e 4c 69 73 74 20 6f 66 20 74 68 65 20 43 65  d>List of the Ce
3240: 72 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72  rtificate Author
3250: 69 74 69 65 73 20 75 73 65 64 20 74 6f 20 63 72  ities used to cr
3260: 65 61 74 65 20 74 68 65 20 63 65 72 74 69 66 69  eate the certifi
3270: 63 61 74 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c  cate.</dd>.    <
3280: 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /dl>.</blockquot
3290: 65 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e>.<blockquote>.
32a0: 09 3c 62 3e 43 65 72 74 69 66 69 63 61 74 65 20  .<b>Certificate 
32b0: 53 74 61 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c  Status</b>.    <
32c0: 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dl>..<dt><strong
32d0: 3e 61 6c 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  >all</strong> <e
32e0: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64  m>string</em></d
32f0: 74 3e 0a 09 3c 64 64 3e 44 75 6d 70 20 6f 66 20  t>..<dd>Dump of 
3300: 61 6c 6c 20 63 65 72 74 69 66 69 63 61 74 65 20  all certificate 
3310: 69 6e 66 6f 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74  info.</dd>...<dt
3320: 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 73 69 6f 6e  ><strong>version
3330: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 61  </strong> <em>va
3340: 6c 75 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  lue</em></dt>..<
3350: 64 64 3e 54 68 65 20 63 65 72 74 69 66 69 63 61  dd>The certifica
3360: 74 65 20 76 65 72 73 69 6f 6e 2e 3c 2f 64 64 3e  te version.</dd>
3370: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65  ..<dt><strong>se
3380: 72 69 61 6c 4e 75 6d 62 65 72 3c 2f 73 74 72 6f  rialNumber</stro
3390: 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f  ng> <em>n</em></
33a0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 65 72  dt>..<dd>The ser
33b0: 69 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 74 68  ial number of th
33c0: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 61 73  e certificate as
33d0: 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f   a hex string.</
33e0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
33f0: 3e 73 69 67 6e 61 74 75 72 65 3c 2f 73 74 72 6f  >signature</stro
3400: 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68  ng> <em>algorith
3410: 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  m</em></dt>..<dd
3420: 3e 43 69 70 68 65 72 20 61 6c 67 6f 72 69 74 68  >Cipher algorith
3430: 6d 20 75 73 65 64 20 66 6f 72 20 63 65 72 74 69  m used for certi
3440: 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65  ficate signature
3450: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3460: 6f 6e 67 3e 69 73 73 75 65 72 3c 2f 73 74 72 6f  ong>issuer</stro
3470: 6e 67 3e 20 3c 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c  ng> <em>dn</em><
3480: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 64 69  /dt>..<dd>The di
3490: 73 74 69 6e 67 75 69 73 68 65 64 20 6e 61 6d 65  stinguished name
34a0: 20 28 44 4e 29 20 6f 66 20 74 68 65 20 63 65 72   (DN) of the cer
34b0: 74 69 66 69 63 61 74 65 20 69 73 73 75 65 72 2e  tificate issuer.
34c0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
34d0: 6e 67 3e 6e 6f 74 42 65 66 6f 72 65 3c 2f 73 74  ng>notBefore</st
34e0: 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f  rong> <em>date</
34f0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3500: 65 20 62 65 67 69 6e 20 64 61 74 65 20 66 6f 72  e begin date for
3510: 20 74 68 65 20 76 61 6c 69 64 69 74 79 20 6f 66   the validity of
3520: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
3530: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3540: 6f 6e 67 3e 6e 6f 74 41 66 74 65 72 3c 2f 73 74  ong>notAfter</st
3550: 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f  rong> <em>date</
3560: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3570: 65 20 65 78 70 69 72 61 74 69 6f 6e 20 64 61 74  e expiration dat
3580: 65 20 66 6f 72 20 74 68 65 20 63 65 72 74 69 66  e for the certif
3590: 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74  icate.</dd>..<dt
35a0: 3e 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63 74  ><strong>subject
35b0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 6e  </strong> <em>dn
35c0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
35d0: 54 68 65 20 64 69 73 74 69 6e 67 75 69 73 68 65  The distinguishe
35e0: 64 20 6e 61 6d 65 20 28 44 4e 29 20 6f 66 20 74  d name (DN) of t
35f0: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73  he certificate s
3600: 75 62 6a 65 63 74 2e 0a 09 20 20 20 20 46 69 65  ubject...    Fie
3610: 6c 64 73 20 69 6e 63 6c 75 64 65 3a 20 43 6f 6d  lds include: Com
3620: 6d 6f 6e 20 4e 61 6d 65 20 28 43 4e 29 2c 20 4f  mon Name (CN), O
3630: 72 67 61 6e 69 7a 61 74 69 6f 6e 20 28 4f 29 2c  rganization (O),
3640: 20 4c 6f 63 61 6c 69 74 79 0a 09 20 20 20 20 6f   Locality..    o
3650: 72 20 43 69 74 79 20 28 4c 29 2c 20 53 74 61 74  r City (L), Stat
3660: 65 20 6f 72 20 50 72 6f 76 69 6e 63 65 20 28 53  e or Province (S
3670: 29 2c 20 61 6e 64 20 43 6f 75 6e 74 72 79 20 4e  ), and Country N
3680: 61 6d 65 20 28 43 29 2e 3c 2f 64 64 3e 0a 09 3c  ame (C).</dd>..<
3690: 64 74 3e 3c 73 74 72 6f 6e 67 3e 69 73 73 75 65  dt><strong>issue
36a0: 72 55 6e 69 71 75 65 49 44 3c 2f 73 74 72 6f 6e  rUniqueID</stron
36b0: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
36c0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
36d0: 20 69 73 73 75 65 72 20 75 6e 69 71 75 65 20 69   issuer unique i
36e0: 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  d.</dd>..<dt><st
36f0: 72 6f 6e 67 3e 73 75 62 6a 65 63 74 55 6e 69 71  rong>subjectUniq
3700: 75 65 49 44 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  ueID</strong> <e
3710: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64  m>string</em></d
3720: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 75 62 6a  t>..<dd>The subj
3730: 65 63 74 20 75 6e 69 71 75 65 20 69 64 2e 3c 2f  ect unique id.</
3740: 64 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  dd>...<dt><stron
3750: 67 3e 6e 75 6d 5f 65 78 74 65 6e 73 69 6f 6e 73  g>num_extensions
3760: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c  </strong> <em>n<
3770: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4e  /em></dt>..<dd>N
3780: 75 6d 62 65 72 20 6f 66 20 63 65 72 74 69 66 69  umber of certifi
3790: 63 61 74 65 20 65 78 74 65 6e 73 69 6f 6e 73 2e  cate extensions.
37a0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
37b0: 6e 67 3e 65 78 74 65 6e 73 69 6f 6e 73 3c 2f 73  ng>extensions</s
37c0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c  trong> <em>list<
37d0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c  /em></dt>..<dd>L
37e0: 69 73 74 20 6f 66 20 63 65 72 74 69 66 69 63 61  ist of certifica
37f0: 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6e 61 6d  te extension nam
3800: 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  es.</dd>..<dt><s
3810: 74 72 6f 6e 67 3e 61 75 74 68 6f 72 69 74 79 4b  trong>authorityK
3820: 65 79 49 64 65 6e 74 69 66 69 65 72 3c 2f 73 74  eyIdentifier</st
3830: 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67  rong> <em>string
3840: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3850: 28 41 4b 49 29 20 4b 65 79 20 69 64 65 6e 74 69  (AKI) Key identi
3860: 66 69 65 72 20 6f 66 20 74 68 65 20 49 73 73 75  fier of the Issu
3870: 69 6e 67 20 43 41 20 63 65 72 74 69 66 69 63 61  ing CA certifica
3880: 74 65 20 74 68 61 74 20 73 69 67 6e 65 64 0a 09  te that signed..
3890: 20 20 20 20 74 68 65 20 53 53 4c 20 63 65 72 74      the SSL cert
38a0: 69 66 69 63 61 74 65 20 61 73 20 61 20 68 65 78  ificate as a hex
38b0: 20 73 74 72 69 6e 67 2e 20 54 68 69 73 20 76 61   string. This va
38c0: 6c 75 65 20 6d 61 74 63 68 65 73 20 74 68 65 20  lue matches the 
38d0: 53 4b 49 0a 09 20 20 20 20 76 61 6c 75 65 20 6f  SKI..    value o
38e0: 66 20 74 68 65 20 49 6e 74 65 72 6d 65 64 69 61  f the Intermedia
38f0: 74 65 20 43 41 20 63 65 72 74 69 66 69 63 61 74  te CA certificat
3900: 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  e.</dd>..<dt><st
3910: 72 6f 6e 67 3e 73 75 62 6a 65 63 74 4b 65 79 49  rong>subjectKeyI
3920: 64 65 6e 74 69 66 69 65 72 3c 2f 73 74 72 6f 6e  dentifier</stron
3930: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
3940: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 28 53 4b  m></dt>..<dd>(SK
3950: 49 29 20 48 61 73 68 20 6f 66 20 74 68 65 20 70  I) Hash of the p
3960: 75 62 6c 69 63 20 6b 65 79 20 69 6e 73 69 64 65  ublic key inside
3970: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
3980: 20 61 73 20 61 20 68 65 78 0a 09 20 20 20 73 74   as a hex..   st
3990: 72 69 6e 67 2e 20 55 73 65 64 20 74 6f 20 69 64  ring. Used to id
39a0: 65 6e 74 69 66 79 20 63 65 72 74 69 66 69 63 61  entify certifica
39b0: 74 65 73 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  tes that contain
39c0: 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 09 20   a particular.. 
39d0: 20 20 70 75 62 6c 69 63 20 6b 65 79 2e 3c 2f 64    public key.</d
39e0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
39f0: 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3c 2f  subjectAltName</
3a00: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74  strong> <em>list
3a10: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3a20: 4c 69 73 74 20 6f 66 20 61 6c 6c 20 6f 66 20 74  List of all of t
3a30: 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20 64  he alternative d
3a40: 6f 6d 61 69 6e 20 6e 61 6d 65 73 2c 20 73 75 62  omain names, sub
3a50: 20 64 6f 6d 61 69 6e 73 2c 0a 09 20 20 20 20 61   domains,..    a
3a60: 6e 64 20 49 50 20 61 64 64 72 65 73 73 65 73 20  nd IP addresses 
3a70: 74 68 61 74 20 61 72 65 20 73 65 63 75 72 65 64  that are secured
3a80: 20 62 79 20 74 68 65 20 63 65 72 74 69 66 69 63   by the certific
3a90: 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  ate.</dd>..<dt><
3aa0: 73 74 72 6f 6e 67 3e 6f 63 73 70 3c 2f 73 74 72  strong>ocsp</str
3ab0: 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65  ong> <em>list</e
3ac0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73  m></dt>..<dd>Lis
3ad0: 74 20 6f 66 20 61 6c 6c 20 4f 6e 6c 69 6e 65 20  t of all Online 
3ae0: 43 65 72 74 69 66 69 63 61 74 65 20 53 74 61 74  Certificate Stat
3af0: 75 73 20 50 72 6f 74 6f 63 6f 6c 20 28 4f 43 53  us Protocol (OCS
3b00: 50 29 20 55 52 4c 73 2e 3c 2f 64 64 3e 0a 0a 09  P) URLs.</dd>...
3b10: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 65 72 74  <dt><strong>cert
3b20: 69 66 69 63 61 74 65 3c 2f 73 74 72 6f 6e 67 3e  ificate</strong>
3b30: 20 3c 65 6d 3e 63 65 72 74 3c 2f 65 6d 3e 3c 2f   <em>cert</em></
3b40: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 50 45 4d  dt>..<dd>The PEM
3b50: 20 65 6e 63 6f 64 65 64 20 63 65 72 74 69 66 69   encoded certifi
3b60: 63 61 74 65 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74  cate.</dd>...<dt
3b70: 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75  ><strong>signatu
3b80: 72 65 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72  reAlgorithm</str
3b90: 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74  ong> <em>algorit
3ba0: 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  hm</em></dt>..<d
3bb0: 64 3e 43 69 70 68 65 72 20 61 6c 67 6f 72 69 74  d>Cipher algorit
3bc0: 68 6d 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  hm used for the 
3bd0: 63 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e  certificate sign
3be0: 61 74 75 72 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ature.</dd>..<dt
3bf0: 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75  ><strong>signatu
3c00: 72 65 56 61 6c 75 65 3c 2f 73 74 72 6f 6e 67 3e  reValue</strong>
3c10: 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e   <em>string</em>
3c20: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69  </dt>..<dd>Certi
3c30: 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65  ficate signature
3c40: 20 61 73 20 61 20 68 65 78 20 73 74 72 69 6e 67   as a hex string
3c50: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3c60: 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 44 69 67  ong>signatureDig
3c70: 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  est</strong> <em
3c80: 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64  >version</em></d
3c90: 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66 69 63  t>..<dd>Certific
3ca0: 61 74 65 20 73 69 67 6e 69 6e 67 20 64 69 67 65  ate signing dige
3cb0: 73 74 20 61 73 20 61 20 68 65 78 20 73 74 72 69  st as a hex stri
3cc0: 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ng.</dd>..<dt><s
3cd0: 74 72 6f 6e 67 3e 70 75 62 6c 69 63 4b 65 79 41  trong>publicKeyA
3ce0: 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67  lgorithm</strong
3cf0: 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c  > <em>algorithm<
3d00: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43  /em></dt>..<dd>C
3d10: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61  ertificate signa
3d20: 74 75 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20  ture public key 
3d30: 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64 3e 0a  algorithm.</dd>.
3d40: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 75 62  .<dt><strong>pub
3d50: 6c 69 63 4b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20  licKey</strong> 
3d60: 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c  <em>string</em><
3d70: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66  /dt>..<dd>Certif
3d80: 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20  icate signature 
3d90: 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20 61 20  public key as a 
3da0: 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e  hex string.</dd>
3db0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 62 69  ..<dt><strong>bi
3dc0: 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ts</strong> <em>
3dd0: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  n</em></dt>..<dd
3de0: 3e 4e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20  >Number of bits 
3df0: 75 73 65 64 20 66 6f 72 20 63 65 72 74 69 66 69  used for certifi
3e00: 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 6b  cate signature k
3e10: 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ey.</dd>..<dt><s
3e20: 74 72 6f 6e 67 3e 73 65 6c 66 5f 73 69 67 6e 65  trong>self_signe
3e30: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  d</strong> <em>b
3e40: 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e  oolean</em></dt>
3e50: 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68  ..<dd>Whether th
3e60: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73 69  e certificate si
3e70: 67 6e 61 74 75 72 65 20 69 73 20 73 65 6c 66 20  gnature is self 
3e80: 73 69 67 6e 65 64 2e 3c 2f 64 64 3e 0a 0a 09 3c  signed.</dd>...<
3e90: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 31 5f  dt><strong>sha1_
3ea0: 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  hash</strong> <e
3eb0: 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>hash</em></dt>
3ec0: 0a 09 3c 64 64 3e 54 68 65 20 53 48 41 31 20 68  ..<dd>The SHA1 h
3ed0: 61 73 68 20 6f 66 20 74 68 65 20 63 65 72 74 69  ash of the certi
3ee0: 66 69 63 61 74 65 20 61 73 20 61 20 68 65 78 20  ficate as a hex 
3ef0: 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64  string.</dd>..<d
3f00: 74 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 32 35 36  t><strong>sha256
3f10: 5f 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _hash</strong> <
3f20: 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74  em>hash</em></dt
3f30: 3e 0a 09 3c 64 64 3e 54 68 65 20 53 48 41 32 35  >..<dd>The SHA25
3f40: 36 20 68 61 73 68 20 6f 66 20 74 68 65 20 63 65  6 hash of the ce
3f50: 72 74 69 66 69 63 61 74 65 20 61 73 20 61 20 68  rtificate as a h
3f60: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
3f70: 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63      </dl>.</bloc
3f80: 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c 64 74  kquote>..    <dt
3f90: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 63  ><a name="tls::c
3fa0: 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 73 74 72 6f  onnection"><stro
3fb0: 6e 67 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69  ng>tls::connecti
3fc0: 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20  on</strong>.    
3fd0: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e  <em>channel</em>
3fe0: 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64  </a></dt>.    <d
3ff0: 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20 63 75  d>Returns the cu
4000: 72 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  rrent connection
4010: 20 73 74 61 74 75 73 20 6f 66 20 61 6e 20 53 53   status of an SS
4020: 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 65 0a 09  L channel. The..
4030: 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69 73 74  result is a list
4040: 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70 61   of key-value pa
4050: 69 72 73 20 64 65 73 63 72 69 62 69 6e 67 20 74  irs describing t
4060: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f  he connection.</
4070: 64 64 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  dd>.<blockquote>
4080: 0a 09 3c 62 3e 53 53 4c 20 53 74 61 74 75 73 3c  ..<b>SSL Status<
4090: 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64  /b>.    <dl>..<d
40a0: 74 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 74 65 3c  t><strong>state<
40b0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 61  /strong> <em>sta
40c0: 74 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  te</em></dt>..<d
40d0: 64 3e 53 74 61 74 65 20 6f 66 20 74 68 65 20 63  d>State of the c
40e0: 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f 64 64 3e 0a  onnection.</dd>.
40f0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 72  .<dt><strong>ser
4100: 76 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e  vername</strong>
4110: 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f   <em>name</em></
4120: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 61 6d  dt>..<dd>The nam
4130: 65 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74  e of the connect
4140: 65 64 20 74 6f 20 73 65 72 76 65 72 2e 3c 2f 64  ed to server.</d
4150: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
4160: 70 72 6f 74 6f 63 6f 6c 3c 2f 73 74 72 6f 6e 67  protocol</strong
4170: 3e 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65  > <em>version</e
4180: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
4190: 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f   protocol versio
41a0: 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 63  n used for the c
41b0: 6f 6e 6e 65 63 74 69 6f 6e 3a 0a 09 20 20 20 20  onnection:..    
41c0: 53 53 4c 32 2c 20 53 53 4c 33 2c 20 54 4c 53 31  SSL2, SSL3, TLS1
41d0: 2c 20 54 4c 53 31 2e 31 2c 20 54 4c 53 31 2e 32  , TLS1.1, TLS1.2
41e0: 2c 20 54 4c 53 31 2e 33 2c 20 6f 72 20 75 6e 6b  , TLS1.3, or unk
41f0: 6e 6f 77 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  nown.</dd>..<dt>
4200: 3c 73 74 72 6f 6e 67 3e 72 65 6e 65 67 6f 74 69  <strong>renegoti
4210: 61 74 69 6f 6e 5f 61 6c 6c 6f 77 65 64 3c 2f 73  ation_allowed</s
4220: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65  trong> <em>boole
4230: 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  an</em></dt>..<d
4240: 64 3e 57 68 65 74 68 65 72 20 70 72 6f 74 6f 63  d>Whether protoc
4250: 6f 6c 20 72 65 6e 65 67 6f 74 69 61 74 69 6f 6e  ol renegotiation
4260: 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 6f 72   is supported or
4270: 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e   not.</dd>..<dt>
4280: 3c 73 74 72 6f 6e 67 3e 73 65 63 75 72 69 74 79  <strong>security
4290: 5f 6c 65 76 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20  _level</strong> 
42a0: 3c 65 6d 3e 6c 65 76 65 6c 3c 2f 65 6d 3e 3c 2f  <em>level</em></
42b0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 65 63  dt>..<dd>The sec
42c0: 75 72 69 74 79 20 6c 65 76 65 6c 20 75 73 65 64  urity level used
42d0: 20 66 6f 72 20 73 65 6c 65 63 74 69 6f 6e 20 6f   for selection o
42e0: 66 20 63 69 70 68 65 72 73 2c 20 6b 65 79 20 73  f ciphers, key s
42f0: 69 7a 65 2c 20 65 74 63 2e 3c 2f 64 64 3e 0a 09  ize, etc.</dd>..
4300: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73  <dt><strong>sess
4310: 69 6f 6e 5f 72 65 75 73 65 64 3c 2f 73 74 72 6f  ion_reused</stro
4320: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c  ng> <em>boolean<
4330: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57  /em></dt>..<dd>W
4340: 68 65 74 68 65 72 20 74 68 65 20 73 65 73 73 69  hether the sessi
4350: 6f 6e 20 68 61 73 20 62 65 65 6e 20 72 65 75 73  on has been reus
4360: 65 64 20 6f 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a  ed or not.</dd>.
4370: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 69 73 5f  .<dt><strong>is_
4380: 73 65 72 76 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  server</strong> 
4390: 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e  <em>boolean</em>
43a0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68  </dt>..<dd>Wheth
43b0: 65 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  er the connectio
43c0: 6e 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20  n is configured 
43d0: 61 73 20 61 20 73 65 72 76 65 72 20 28 31 29 20  as a server (1) 
43e0: 6f 72 20 63 6c 69 65 6e 74 20 28 30 29 2e 3c 2f  or client (0).</
43f0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4400: 3e 63 6f 6d 70 72 65 73 73 69 6f 6e 3c 2f 73 74  >compression</st
4410: 72 6f 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c 2f  rong> <em>mode</
4420: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 6f  em></dt>..<dd>Co
4430: 6d 70 72 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64  mpression method
4440: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
4450: 6f 6e 67 3e 65 78 70 61 6e 73 69 6f 6e 3c 2f 73  ong>expansion</s
4460: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c  trong> <em>mode<
4470: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45  /em></dt>..<dd>E
4480: 78 70 61 6e 73 69 6f 6e 20 6d 65 74 68 6f 64 2e  xpansion method.
4490: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
44a0: 6e 67 3e 63 61 4c 69 73 74 3c 2f 73 74 72 6f 6e  ng>caList</stron
44b0: 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e  g> <em>list</em>
44c0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20  </dt>..<dd>List 
44d0: 6f 66 20 43 65 72 74 69 66 69 63 61 74 65 20 41  of Certificate A
44e0: 75 74 68 6f 72 69 74 69 65 73 20 28 43 41 29 20  uthorities (CA) 
44f0: 66 6f 72 20 58 2e 35 30 39 20 63 65 72 74 69 66  for X.509 certif
4500: 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 20 20 20 20  icate.</dd>.    
4510: 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  </dl>.</blockquo
4520: 74 65 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  te>.<blockquote>
4530: 0a 09 3c 62 3e 43 69 70 68 65 72 20 49 6e 66 6f  ..<b>Cipher Info
4540: 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c  </b>.    <dl>..<
4550: 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65  dt><strong>ciphe
4560: 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  r</strong> <em>c
4570: 69 70 68 65 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  ipher</em></dt>.
4580: 09 3c 64 64 3e 54 68 65 20 63 75 72 72 65 6e 74  .<dd>The current
4590: 20 63 69 70 68 65 72 20 69 6e 20 75 73 65 20 66   cipher in use f
45a0: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
45b0: 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  n.</dd>..<dt><st
45c0: 72 6f 6e 67 3e 73 74 61 6e 64 61 72 64 5f 6e 61  rong>standard_na
45d0: 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  me</strong> <em>
45e0: 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  name</em></dt>..
45f0: 3c 64 64 3e 54 68 65 20 73 74 61 6e 64 61 72 64  <dd>The standard
4600: 20 52 46 43 20 6e 61 6d 65 20 6f 66 20 63 69 70   RFC name of cip
4610: 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  her.</dd>..<dt><
4620: 73 74 72 6f 6e 67 3e 61 6c 67 6f 72 69 74 68 6d  strong>algorithm
4630: 5f 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _bits</strong> <
4640: 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  em>n</em></dt>..
4650: 3c 64 64 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  <dd>The number o
4660: 66 20 70 72 6f 63 65 73 73 65 64 20 62 69 74 73  f processed bits
4670: 20 75 73 65 64 20 66 6f 72 20 63 69 70 68 65 72   used for cipher
4680: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
4690: 6f 6e 67 3e 73 65 63 72 65 74 5f 62 69 74 73 3c  ong>secret_bits<
46a0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f  /strong> <em>n</
46b0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
46c0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 72  e number of secr
46d0: 65 74 20 62 69 74 73 20 75 73 65 64 20 66 6f 72  et bits used for
46e0: 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c   cipher.</dd>..<
46f0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 6d 69 6e 5f 76  dt><strong>min_v
4700: 65 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20  ersion</strong> 
4710: 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e  <em>version</em>
4720: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6d  </dt>..<dd>The m
4730: 69 6e 69 6d 75 6d 20 70 72 6f 74 6f 63 6f 6c 20  inimum protocol 
4740: 76 65 72 73 69 6f 6e 20 66 6f 72 20 63 69 70 68  version for ciph
4750: 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  er.</dd>..<dt><s
4760: 74 72 6f 6e 67 3e 63 69 70 68 65 72 5f 69 73 5f  trong>cipher_is_
4770: 61 65 61 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  aead</strong> <e
4780: 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f  m>boolean</em></
4790: 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65 72  dt>..<dd>Whether
47a0: 20 74 68 65 20 63 69 70 68 65 72 20 69 73 20 41   the cipher is A
47b0: 75 74 68 65 6e 74 69 63 61 74 65 64 20 45 6e 63  uthenticated Enc
47c0: 72 79 70 74 69 6f 6e 20 77 69 74 68 0a 09 41 73  ryption with..As
47d0: 73 6f 63 69 61 74 65 64 20 44 61 74 61 20 28 41  sociated Data (A
47e0: 45 41 44 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  EAD).</dd>..<dt>
47f0: 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65 72 5f 69  <strong>cipher_i
4800: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 69  d</strong> <em>i
4810: 64 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  d</em></dt>..<dd
4820: 3e 54 68 65 20 4f 70 65 6e 53 53 4c 20 63 69 70  >The OpenSSL cip
4830: 68 65 72 20 69 64 2e 3c 2f 64 64 3e 0a 09 3c 64  her id.</dd>..<d
4840: 74 3e 3c 73 74 72 6f 6e 67 3e 64 65 73 63 72 69  t><strong>descri
4850: 70 74 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ption</strong> <
4860: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
4870: 64 74 3e 0a 09 3c 64 64 3e 41 20 74 65 78 74 20  dt>..<dd>A text 
4880: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
4890: 68 65 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a  he cipher.</dd>.
48a0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 68 61 6e  .<dt><strong>han
48b0: 64 73 68 61 6b 65 5f 64 69 67 65 73 74 3c 2f 73  dshake_digest</s
48c0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65  trong> <em>boole
48d0: 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  an</em></dt>..<d
48e0: 64 3e 44 69 67 65 73 74 20 75 73 65 64 20 64 75  d>Digest used du
48f0: 72 69 6e 67 20 68 61 6e 64 73 68 61 6b 65 2e 3c  ring handshake.<
4900: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c  /dd>.    </dl>.<
4910: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 62 6c  /blockquote>.<bl
4920: 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c 62 3e 53 65  ockquote>..<b>Se
4930: 73 73 69 6f 6e 20 49 6e 66 6f 3c 2f 62 3e 0a 20  ssion Info</b>. 
4940: 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74     <dl>..<dt><st
4950: 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f 6e  rong>alpn</stron
4960: 67 3e 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c  g> <em>protocol<
4970: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
4980: 68 65 20 70 72 6f 74 6f 63 6f 6c 20 73 65 6c 65  he protocol sele
4990: 63 74 65 64 20 61 66 74 65 72 20 41 70 70 6c 69  cted after Appli
49a0: 63 61 74 69 6f 6e 2d 4c 61 79 65 72 20 50 72 6f  cation-Layer Pro
49b0: 74 6f 63 6f 6c 0a 09 20 20 20 20 4e 65 67 6f 74  tocol..    Negot
49c0: 69 61 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 3c 2f  iation (ALPN).</
49d0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
49e0: 3e 72 65 73 75 6d 61 62 6c 65 3c 2f 73 74 72 6f  >resumable</stro
49f0: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c  ng> <em>boolean<
4a00: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57  /em></dt>..<dd>W
4a10: 68 65 74 68 65 72 20 74 68 65 20 73 65 73 73 69  hether the sessi
4a20: 6f 6e 20 63 61 6e 20 62 65 20 72 65 73 75 6d 65  on can be resume
4a30: 64 20 6f 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09  d or not.</dd>..
4a40: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 72  <dt><strong>star
4a50: 74 5f 74 69 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20  t_time</strong> 
4a60: 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e  <em>seconds</em>
4a70: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 69 6d 65 20  </dt>..<dd>Time 
4a80: 73 69 6e 63 65 20 73 65 73 73 69 6f 6e 20 73 74  since session st
4a90: 61 72 74 65 64 20 69 6e 20 73 65 63 6f 6e 64 73  arted in seconds
4aa0: 20 73 69 6e 63 65 20 65 70 6f 63 68 2e 3c 2f 64   since epoch.</d
4ab0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
4ac0: 74 69 6d 65 6f 75 74 3c 2f 73 74 72 6f 6e 67 3e  timeout</strong>
4ad0: 20 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d   <em>seconds</em
4ae0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4d 61 78 20  ></dt>..<dd>Max 
4af0: 64 75 72 61 74 69 6f 6e 20 6f 66 20 73 65 73 73  duration of sess
4b00: 69 6f 6e 20 69 6e 20 73 65 63 6f 6e 64 73 20 62  ion in seconds b
4b10: 65 66 6f 72 65 20 74 69 6d 65 2d 6f 75 74 2e 3c  efore time-out.<
4b20: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
4b30: 67 3e 6c 69 66 65 74 69 6d 65 3c 2f 73 74 72 6f  g>lifetime</stro
4b40: 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c  ng> <em>seconds<
4b50: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53  /em></dt>..<dd>S
4b60: 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20 6c 69  ession ticket li
4b70: 66 65 74 69 6d 65 20 68 69 6e 74 20 69 6e 20 73  fetime hint in s
4b80: 65 63 6f 6e 64 73 2e 3c 2f 64 64 3e 0a 09 3c 64  econds.</dd>..<d
4b90: 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f  t><strong>sessio
4ba0: 6e 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  n_id</strong> <e
4bb0: 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c  m>binary_string<
4bc0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55  /em></dt>..<dd>U
4bd0: 6e 69 71 75 65 20 73 65 73 73 69 6f 6e 20 69 64  nique session id
4be0: 20 66 6f 72 20 75 73 65 20 69 6e 20 72 65 73 75   for use in resu
4bf0: 6d 69 6e 67 20 74 68 65 20 73 65 73 73 69 6f 6e  ming the session
4c00: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
4c10: 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 74 69 63 6b  ong>session_tick
4c20: 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  et</strong> <em>
4c30: 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65  binary_string</e
4c40: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69  m></dt>..<dd>Uni
4c50: 71 75 65 20 73 65 73 73 69 6f 6e 20 74 69 63 6b  que session tick
4c60: 65 74 20 66 6f 72 20 75 73 65 20 69 6e 20 72 65  et for use in re
4c70: 73 75 6d 69 6e 67 20 74 68 65 20 73 65 73 73 69  suming the sessi
4c80: 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  on.</dd>..<dt><s
4c90: 74 72 6f 6e 67 3e 74 69 63 6b 65 74 5f 61 70 70  trong>ticket_app
4ca0: 5f 64 61 74 61 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _data</strong> <
4cb0: 65 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69 6e 67  em>binary_string
4cc0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4cd0: 55 6e 69 71 75 65 20 73 65 73 73 69 6f 6e 20 74  Unique session t
4ce0: 69 63 6b 65 74 20 61 70 70 6c 69 63 61 74 69 6f  icket applicatio
4cf0: 6e 20 64 61 74 61 2e 3c 2f 64 64 3e 0a 09 3c 64  n data.</dd>..<d
4d00: 74 3e 3c 73 74 72 6f 6e 67 3e 6d 61 73 74 65 72  t><strong>master
4d10: 5f 6b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  _key</strong> <e
4d20: 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c  m>binary_string<
4d30: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55  /em></dt>..<dd>U
4d40: 6e 69 71 75 65 20 73 65 73 73 69 6f 6e 20 6d 61  nique session ma
4d50: 73 74 65 72 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09  ster key.</dd>..
4d60: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73  <dt><strong>sess
4d70: 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 3c 2f  ion_cache_mode</
4d80: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65  strong> <em>mode
4d90: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4da0: 53 65 72 76 65 72 20 63 61 63 68 65 20 6d 6f 64  Server cache mod
4db0: 65 20 28 63 6c 69 65 6e 74 2c 20 73 65 72 76 65  e (client, serve
4dc0: 72 2c 20 6f 72 20 62 6f 74 68 29 2e 3c 2f 64 64  r, or both).</dd
4dd0: 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c  >.    </dl>.</bl
4de0: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c  ockquote>..    <
4df0: 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a  dt><a name="tls:
4e00: 3a 70 72 6f 74 6f 63 6f 6c 73 22 3e 3c 73 74 72  :protocols"><str
4e10: 6f 6e 67 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f  ong>tls::protoco
4e20: 6c 73 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c  ls</strong></a><
4e30: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74  /dt>.    <dd>Ret
4e40: 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74  urns a list of t
4e50: 68 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f  he supported pro
4e60: 74 6f 63 6f 6c 73 2e 20 56 61 6c 69 64 20 76 61  tocols. Valid va
4e70: 6c 75 65 73 20 61 72 65 3a 0a 09 3c 62 3e 73 73  lues are:..<b>ss
4e80: 6c 32 3c 2f 62 3e 2c 20 3c 62 3e 73 73 6c 33 3c  l2</b>, <b>ssl3<
4e90: 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 3c 2f 62 3e  /b>, <b>tls1</b>
4ea0: 2c 20 3c 62 3e 74 6c 73 31 2e 31 3c 2f 62 3e 2c  , <b>tls1.1</b>,
4eb0: 20 3c 62 3e 74 6c 73 31 2e 32 3c 2f 62 3e 2c 0a   <b>tls1.2</b>,.
4ec0: 09 61 6e 64 20 3c 62 3e 74 6c 73 31 2e 33 3c 2f  .and <b>tls1.3</
4ed0: 62 3e 2e 20 45 78 61 63 74 20 6c 69 73 74 20 64  b>. Exact list d
4ee0: 65 70 65 6e 64 73 20 6f 6e 20 4f 70 65 6e 53 53  epends on OpenSS
4ef0: 4c 20 76 65 72 73 69 6f 6e 20 61 6e 64 0a 09 63  L version and..c
4f00: 6f 6d 70 69 6c 65 20 74 69 6d 65 20 66 6c 61 67  ompile time flag
4f10: 73 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64 74  s.</dd>..    <dt
4f20: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 76  ><a name="tls::v
4f30: 65 72 73 69 6f 6e 22 3e 3c 73 74 72 6f 6e 67 3e  ersion"><strong>
4f40: 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f 73 74  tls::version</st
4f50: 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  rong></a></dt>. 
4f60: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 74     <dd>Returns t
4f70: 68 65 20 4f 70 65 6e 53 53 4c 20 76 65 72 73 69  he OpenSSL versi
4f80: 6f 6e 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  on string.</dd>.
4f90: 3c 2f 64 6c 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61  </dl>..<h3><a na
4fa0: 6d 65 3d 22 43 41 4c 4c 42 41 43 4b 20 4f 50 54  me="CALLBACK OPT
4fb0: 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f  IONS">CALLBACK O
4fc0: 50 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 68 33 3e 0a  PTIONS</a></h3>.
4fd0: 0a 3c 70 3e 0a 41 73 20 69 6e 64 69 63 61 74 65  .<p>.As indicate
4fe0: 64 20 61 62 6f 76 65 2c 20 69 6e 64 69 76 69 64  d above, individ
4ff0: 75 61 6c 20 63 68 61 6e 6e 65 6c 73 20 63 61 6e  ual channels can
5000: 20 62 65 20 67 69 76 65 6e 20 74 68 65 69 72 20   be given their 
5010: 6f 77 6e 20 63 61 6c 6c 62 61 63 6b 73 0a 74 6f  own callbacks.to
5020: 20 68 61 6e 64 6c 65 20 69 6e 74 65 72 6d 65 64   handle intermed
5030: 69 61 74 65 20 70 72 6f 63 65 73 73 69 6e 67 20  iate processing 
5040: 62 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 6c  by the OpenSSL l
5050: 69 62 72 61 72 79 2c 20 75 73 69 6e 67 20 74 68  ibrary, using th
5060: 65 0a 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61  e.<strong>-comma
5070: 6e 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73 74  nd</strong>, <st
5080: 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64 3c 2f  rong>-password</
5090: 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 0a 3c 73 74  strong>, and.<st
50a0: 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65 5f 63  rong>-validate_c
50b0: 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20  ommand</strong> 
50c0: 6f 70 74 69 6f 6e 73 20 70 61 73 73 65 64 20 74  options passed t
50d0: 6f 20 65 69 74 68 65 72 20 6f 66 0a 3c 73 74 72  o either of.<str
50e0: 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c  ong>tls::socket<
50f0: 2f 73 74 72 6f 6e 67 3e 20 6f 72 20 3c 73 74 72  /strong> or <str
5100: 6f 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c  ong>tls::import<
5110: 2f 73 74 72 6f 6e 67 3e 2e 0a 49 66 20 74 68 65  /strong>..If the
5120: 20 63 61 6c 6c 62 61 63 6b 20 67 65 6e 65 72 61   callback genera
5130: 74 65 73 20 61 6e 20 65 72 72 6f 72 2c 20 74 68  tes an error, th
5140: 65 20 3c 62 3e 62 67 65 72 72 6f 72 3c 2f 62 3e  e <b>bgerror</b>
5150: 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 62 65   command will be
5160: 0a 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68  .invoked with th
5170: 65 20 65 72 72 6f 72 20 69 6e 66 6f 72 6d 61 74  e error informat
5180: 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ion..</p>..<bloc
5190: 6b 71 75 6f 74 65 3e 0a 3c 64 6c 3e 0a 0a 20 20  kquote>.<dl>..  
51a0: 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63    <dt><strong>-c
51b0: 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20  ommand</strong> 
51c0: 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d  <em>callback</em
51d0: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a  ></dt>.    <dd>.
51e0: 09 49 6e 76 6f 6b 65 73 20 74 68 65 20 73 70 65  .Invokes the spe
51f0: 63 69 66 69 65 64 20 3c 65 6d 3e 63 61 6c 6c 62  cified <em>callb
5200: 61 63 6b 3c 2f 65 6d 3e 20 73 63 72 69 70 74 20  ack</em> script 
5210: 61 74 20 73 65 76 65 72 61 6c 20 70 6f 69 6e 74  at several point
5220: 73 0a 09 64 75 72 69 6e 67 20 74 68 65 20 4f 70  s..during the Op
5230: 65 6e 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 20  enSSL handshake 
5240: 61 6e 64 20 75 73 65 2e 20 53 65 65 20 62 65 6c  and use. See bel
5250: 6f 77 20 66 6f 72 20 74 68 65 20 70 6f 73 73 69  ow for the possi
5260: 62 6c 65 0a 09 61 72 67 75 6d 65 6e 74 73 20 70  ble..arguments p
5270: 61 73 73 65 64 20 74 6f 20 74 68 65 20 63 61 6c  assed to the cal
5280: 6c 62 61 63 6b 20 73 63 72 69 70 74 2e 20 56 61  lback script. Va
5290: 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 66 72  lues returned fr
52a0: 6f 6d 20 74 68 65 0a 09 63 61 6c 6c 62 61 63 6b  om the..callback
52b0: 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 0a 09   are ignored....
52c0: 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09 3c 64 6c  <br>..<br>...<dl
52d0: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
52e0: 6f 6e 67 3e 65 72 72 6f 72 3c 2f 73 74 72 6f 6e  ong>error</stron
52f0: 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64  g> <em>channelId
5300: 20 6d 65 73 73 61 67 65 3c 2f 65 6d 3e 0a 09 3c   message</em>..<
5310: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68  /dt>..<dd>..  Th
5320: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
5330: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
5340: 68 65 6e 65 76 65 72 20 61 6e 20 65 72 72 6f 72  henever an error
5350: 20 6f 63 63 75 72 73 20 64 75 72 69 6e 67 20 74   occurs during t
5360: 68 65 0a 09 20 20 69 6e 69 74 69 61 6c 20 63 6f  he..  initial co
5370: 6e 6e 65 63 74 69 6f 6e 2c 20 68 61 6e 64 73 68  nnection, handsh
5380: 61 6b 65 2c 20 6f 72 20 49 2f 4f 20 6f 70 65 72  ake, or I/O oper
5390: 61 74 69 6f 6e 73 2e 20 54 68 65 20 3c 65 6d 3e  ations. The <em>
53a0: 6d 65 73 73 61 67 65 3c 2f 65 6d 3e 0a 09 20 20  message</em>..  
53b0: 61 72 67 75 6d 65 6e 74 20 63 61 6e 20 62 65 20  argument can be 
53c0: 66 72 6f 6d 20 74 68 65 20 54 63 6c 5f 45 72 72  from the Tcl_Err
53d0: 6e 6f 4d 73 67 2c 20 4f 70 65 6e 53 53 4c 20 66  noMsg, OpenSSL f
53e0: 75 6e 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65  unction..  <code
53f0: 3e 45 52 52 5f 72 65 61 73 6f 6e 5f 65 72 72 6f  >ERR_reason_erro
5400: 72 5f 73 74 72 69 6e 67 28 29 3c 2f 63 6f 64 65  r_string()</code
5410: 3e 2c 20 6f 72 20 61 20 63 75 73 74 6f 6d 20 6d  >, or a custom m
5420: 65 73 73 61 67 65 2e 0a 09 3c 2f 64 64 3e 0a 0a  essage...</dd>..
5430: 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20  .<br>...<dt>..  
5440: 3c 73 74 72 6f 6e 67 3e 69 6e 66 6f 3c 2f 73 74  <strong>info</st
5450: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65  rong> <em>channe
5460: 6c 49 64 20 6d 61 6a 6f 72 20 6d 69 6e 6f 72 20  lId major minor 
5470: 6d 65 73 73 61 67 65 20 74 79 70 65 3c 2f 65 6d  message type</em
5480: 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09  >..</dt>..<dd>..
5490: 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 63    This form of c
54a0: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
54b0: 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e 53 53  ed by the OpenSS
54c0: 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20 3c 63  L function..  <c
54d0: 6f 64 65 3e 53 53 4c 5f 73 65 74 5f 69 6e 66 6f  ode>SSL_set_info
54e0: 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f 64  _callback()</cod
54f0: 65 3e 20 64 75 72 69 6e 67 20 74 68 65 20 69 6e  e> during the in
5500: 69 74 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e  itial connection
5510: 0a 09 20 20 61 6e 64 20 68 61 6e 64 73 68 61 6b  ..  and handshak
5520: 65 20 6f 70 65 72 61 74 69 6f 6e 73 2e 20 54 68  e operations. Th
5530: 65 20 3c 65 6d 3e 74 79 70 65 3c 2f 65 6d 3e 20  e <em>type</em> 
5540: 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 65 77 20  argument is new 
5550: 66 6f 72 0a 09 20 20 54 4c 53 20 31 2e 38 2e 20  for..  TLS 1.8. 
5560: 54 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72  The arguments ar
5570: 65 3a 0a 09 20 20 3c 62 72 3e 0a 09 20 20 3c 75  e:..  <br>..  <u
5580: 6c 3e 0a 09 20 20 3c 6c 69 3e 50 6f 73 73 69 62  l>..  <li>Possib
5590: 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 3c 65  le values for <e
55a0: 6d 3e 6d 61 6a 6f 72 3c 2f 65 6d 3e 20 61 72 65  m>major</em> are
55b0: 3a 0a 09 20 20 3c 63 6f 64 65 3e 68 61 6e 64 73  :..  <code>hands
55c0: 68 61 6b 65 2c 20 61 6c 65 72 74 2c 20 63 6f 6e  hake, alert, con
55d0: 6e 65 63 74 2c 20 61 63 63 65 70 74 3c 2f 63 6f  nect, accept</co
55e0: 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69  de>.</li>..  <li
55f0: 3e 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73  >Possible values
5600: 20 66 6f 72 20 3c 65 6d 3e 6d 69 6e 6f 72 3c 2f   for <em>minor</
5610: 65 6d 3e 20 61 72 65 3a 0a 09 20 20 3c 63 6f 64  em> are:..  <cod
5620: 65 3e 73 74 61 72 74 2c 20 64 6f 6e 65 2c 20 72  e>start, done, r
5630: 65 61 64 2c 20 77 72 69 74 65 2c 20 6c 6f 6f 70  ead, write, loop
5640: 2c 20 65 78 69 74 3c 2f 63 6f 64 65 3e 2e 3c 2f  , exit</code>.</
5650: 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68 65 20 3c  li>..  <li>The <
5660: 65 6d 3e 6d 65 73 73 61 67 65 3c 2f 65 6d 3e 20  em>message</em> 
5670: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 64 65  argument is a de
5680: 73 63 72 69 70 74 69 76 65 20 73 74 72 69 6e 67  scriptive string
5690: 20 77 68 69 63 68 20 6d 61 79 0a 09 20 20 62 65   which may..  be
56a0: 20 67 65 6e 65 72 61 74 65 64 20 65 69 74 68 65   generated eithe
56b0: 72 20 62 79 20 3c 63 6f 64 65 3e 53 53 4c 5f 73  r by <code>SSL_s
56c0: 74 61 74 65 5f 73 74 72 69 6e 67 5f 6c 6f 6e 67  tate_string_long
56d0: 28 29 3c 2f 63 6f 64 65 3e 20 6f 72 20 62 79 0a  ()</code> or by.
56e0: 09 20 20 3c 63 6f 64 65 3e 53 53 4c 5f 61 6c 65  .  <code>SSL_ale
56f0: 72 74 5f 64 65 73 63 5f 73 74 72 69 6e 67 5f 6c  rt_desc_string_l
5700: 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e 2c 20 64 65  ong()</code>, de
5710: 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 63  pending on the c
5720: 6f 6e 74 65 78 74 2e 3c 2f 6c 69 3e 0a 09 20 20  ontext.</li>..  
5730: 3c 6c 69 3e 46 6f 72 20 61 6c 65 72 74 73 2c 20  <li>For alerts, 
5740: 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61 6c  the possible val
5750: 75 65 73 20 66 6f 72 20 3c 65 6d 3e 74 79 70 65  ues for <em>type
5760: 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09 20 20 3c 63  </em> are:..  <c
5770: 6f 64 65 3e 77 61 72 6e 69 6e 67 2c 20 66 61 74  ode>warning, fat
5780: 61 6c 2c 20 61 6e 64 20 75 6e 6b 6e 6f 77 6e 3c  al, and unknown<
5790: 2f 63 6f 64 65 3e 2e 20 46 6f 72 20 6f 74 68 65  /code>. For othe
57a0: 72 73 2c 0a 09 20 20 3c 63 6f 64 65 3e 69 6e 66  rs,..  <code>inf
57b0: 6f 3c 2f 63 6f 64 65 3e 20 69 73 20 75 73 65 64  o</code> is used
57c0: 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 2f 75 6c 3e 0a  .</li>..  </ul>.
57d0: 09 3c 2f 64 64 3e 0a 0a 09 3c 64 74 3e 0a 09 20  .</dd>...<dt>.. 
57e0: 20 3c 73 74 72 6f 6e 67 3e 6d 65 73 73 61 67 65   <strong>message
57f0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68  </strong> <em>ch
5800: 61 6e 6e 65 6c 49 64 20 64 69 72 65 63 74 69 6f  annelId directio
5810: 6e 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74 65 6e  n version conten
5820: 74 5f 74 79 70 65 20 6d 65 73 73 61 67 65 3c 2f  t_type message</
5830: 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e  em>..</dt>..<dd>
5840: 0a 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66  ..  This form of
5850: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
5860: 6f 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e  oked by the Open
5870: 53 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20  SSL function..  
5880: 3c 63 6f 64 65 3e 53 53 4c 5f 73 65 74 5f 6d 73  <code>SSL_set_ms
5890: 67 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f  g_callback()</co
58a0: 64 65 3e 20 77 68 65 6e 65 76 65 72 20 61 20 6d  de> whenever a m
58b0: 65 73 73 61 67 65 20 69 73 20 73 65 6e 74 20 6f  essage is sent o
58c0: 72 0a 09 20 20 72 65 63 65 69 76 65 64 20 64 75  r..  received du
58d0: 72 69 6e 67 20 74 68 65 20 69 6e 69 74 69 61 6c  ring the initial
58e0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 68 61 6e   connection, han
58f0: 64 73 68 61 6b 65 2c 20 6f 72 20 49 2f 4f 20 6f  dshake, or I/O o
5900: 70 65 72 61 74 69 6f 6e 73 2e 0a 09 20 20 49 74  perations...  It
5910: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
5920: 6c 65 20 77 68 65 6e 20 4f 70 65 6e 53 53 4c 20  le when OpenSSL 
5930: 69 73 20 63 6f 6d 70 6c 69 65 64 20 77 69 74 68  is complied with
5940: 20 74 68 65 0a 09 20 20 3c 65 6d 3e 65 6e 61 62   the..  <em>enab
5950: 6c 65 2d 73 73 6c 2d 74 72 61 63 65 3c 2f 65 6d  le-ssl-trace</em
5960: 3e 20 6f 70 74 69 6f 6e 2e 20 41 72 67 75 6d 65  > option. Argume
5970: 6e 74 73 20 61 72 65 3a 20 3c 65 6d 3e 64 69 72  nts are: <em>dir
5980: 65 63 74 69 6f 6e 3c 2f 65 6d 3e 20 0a 09 20 20  ection</em> ..  
5990: 69 73 20 3c 62 3e 53 65 6e 74 3c 2f 62 3e 20 6f  is <b>Sent</b> o
59a0: 72 20 3c 62 3e 52 65 63 65 69 76 65 64 3c 2f 62  r <b>Received</b
59b0: 3e 2c 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f  >, <em>version</
59c0: 65 6d 3e 20 69 73 20 74 68 65 20 70 72 6f 74 6f  em> is the proto
59d0: 63 6f 6c 0a 09 20 20 76 65 72 73 69 6f 6e 2c 20  col..  version, 
59e0: 3c 65 6d 3e 63 6f 6e 74 65 6e 74 5f 74 79 70 65  <em>content_type
59f0: 3c 2f 65 6d 3e 20 69 73 20 74 68 65 20 6d 65 73  </em> is the mes
5a00: 73 61 67 65 20 63 6f 6e 74 65 6e 74 20 74 79 70  sage content typ
5a10: 65 2c 20 61 6e 64 0a 09 20 20 3c 65 6d 3e 6d 65  e, and..  <em>me
5a20: 73 73 61 67 65 3c 2f 65 6d 3e 20 69 73 20 6d 6f  ssage</em> is mo
5a30: 72 65 20 69 6e 66 6f 20 66 72 6f 6d 20 74 68 65  re info from the
5a40: 20 3c 63 6f 64 65 3e 53 53 4c 5f 74 72 61 63 65   <code>SSL_trace
5a50: 3c 2f 63 6f 64 65 3e 20 41 50 49 2e 0a 09 20 20  </code> API...  
5a60: 54 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 69 73  This callback is
5a70: 20 6e 65 77 20 66 6f 72 20 54 4c 53 20 31 2e 38   new for TLS 1.8
5a80: 2e 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 0a  ...</dd>..<br>..
5a90: 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67  .<dt>..  <strong
5aa0: 3e 73 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67  >session</strong
5ab0: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20  > <em>channelId 
5ac0: 73 65 73 73 69 6f 6e 5f 69 64 20 74 69 63 6b 65  session_id ticke
5ad0: 74 20 6c 69 66 65 74 69 6d 65 3c 2f 65 6d 3e 0a  t lifetime</em>.
5ae0: 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20  .</dt>..<dd>..  
5af0: 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c  This form of cal
5b00: 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
5b10: 20 62 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20   by the OpenSSL 
5b20: 66 75 6e 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64  function..  <cod
5b30: 65 3e 53 53 4c 5f 43 54 58 5f 73 65 73 73 5f 73  e>SSL_CTX_sess_s
5b40: 65 74 5f 6e 65 77 5f 63 62 28 29 3c 2f 63 6f 64  et_new_cb()</cod
5b50: 65 3e 20 77 68 65 6e 65 76 65 72 20 61 20 6e 65  e> whenever a ne
5b60: 77 20 73 65 73 73 69 6f 6e 20 69 64 20 69 73 0a  w session id is.
5b70: 09 20 20 73 65 6e 74 20 62 79 20 74 68 65 20 73  .  sent by the s
5b80: 65 72 76 65 72 20 64 75 72 69 6e 67 20 74 68 65  erver during the
5b90: 20 69 6e 69 74 69 61 6c 20 63 6f 6e 6e 65 63 74   initial connect
5ba0: 69 6f 6e 20 61 6e 64 20 68 61 6e 64 73 68 61 6b  ion and handshak
5bb0: 65 2c 20 62 75 74 0a 09 20 20 63 61 6e 20 61 6c  e, but..  can al
5bc0: 73 6f 20 62 65 20 72 65 63 65 69 76 65 64 20 6c  so be received l
5bd0: 61 74 65 72 20 69 66 20 74 68 65 20 3c 62 3e 2d  ater if the <b>-
5be0: 70 6f 73 74 5f 68 61 6e 64 73 68 61 6b 65 3c 2f  post_handshake</
5bf0: 62 3e 20 6f 70 74 69 6f 6e 20 69 73 0a 09 20 20  b> option is..  
5c00: 75 73 65 64 2e 20 41 72 67 75 6d 65 6e 74 73 20  used. Arguments 
5c10: 61 72 65 3a 20 3c 65 6d 3e 73 65 73 73 69 6f 6e  are: <em>session
5c20: 5f 69 64 3c 2f 65 6d 3e 20 69 73 20 74 68 65 20  _id</em> is the 
5c30: 63 75 72 72 65 6e 74 0a 09 20 20 73 65 73 73 69  current..  sessi
5c40: 6f 6e 20 69 64 65 6e 74 69 66 69 65 72 2c 20 3c  on identifier, <
5c50: 65 6d 3e 74 69 63 6b 65 74 3c 2f 65 6d 3e 20 69  em>ticket</em> i
5c60: 73 20 74 68 65 20 73 65 73 73 69 6f 6e 20 74 69  s the session ti
5c70: 63 6b 65 74 20 69 6e 66 6f 2c 20 61 6e 64 0a 09  cket info, and..
5c80: 20 20 3c 65 6d 3e 6c 69 66 65 74 69 6d 65 3c 2f    <em>lifetime</
5c90: 65 6d 3e 20 69 73 20 74 68 65 20 74 68 65 20 74  em> is the the t
5ca0: 69 63 6b 65 74 20 6c 69 66 65 74 69 6d 65 20 69  icket lifetime i
5cb0: 6e 20 73 65 63 6f 6e 64 73 2e 0a 09 20 20 54 68  n seconds...  Th
5cc0: 69 73 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e  is callback is n
5cd0: 65 77 20 66 6f 72 20 54 4c 53 20 31 2e 38 2e 0a  ew for TLS 1.8..
5ce0: 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f  .</dd>..<br>..</
5cf0: 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 0a 20  dl>.    </dd>.. 
5d00: 20 20 20 3c 62 72 3e 0a 0a 20 20 20 20 3c 64 74     <br>..    <dt
5d10: 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f  ><strong>-passwo
5d20: 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  rd</strong> <em>
5d30: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64  callback</em></d
5d40: 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76  t>.    <dd>..Inv
5d50: 6f 6b 65 73 20 74 68 65 20 73 70 65 63 69 66 69  okes the specifi
5d60: 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c  ed <em>callback<
5d70: 2f 65 6d 3e 20 73 63 72 69 70 74 20 77 68 65 6e  /em> script when
5d80: 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20 74   OpenSSL needs t
5d90: 6f 0a 09 6f 62 74 61 69 6e 20 61 20 70 61 73 73  o..obtain a pass
5da0: 77 6f 72 64 2e 20 53 65 65 20 62 65 6c 6f 77 20  word. See below 
5db0: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
5dc0: 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
5dd0: 64 20 74 6f 0a 09 74 68 65 20 63 61 6c 6c 62 61  d to..the callba
5de0: 63 6b 20 73 63 72 69 70 74 2e 20 53 65 65 20 62  ck script. See b
5df0: 65 6c 6f 77 20 66 6f 72 20 76 61 6c 69 64 20 72  elow for valid r
5e00: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 0a 0a 09  eturn values....
5e10: 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09 3c 64 6c  <br>..<br>...<dl
5e20: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
5e30: 6f 6e 67 3e 70 61 73 73 77 6f 72 64 3c 2f 73 74  ong>password</st
5e40: 72 6f 6e 67 3e 20 3c 65 6d 3e 72 77 66 6c 61 67  rong> <em>rwflag
5e50: 20 73 69 7a 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 74   size</em>..</dt
5e60: 3e 0a 09 3c 64 64 3e 0a 09 20 20 49 6e 76 6f 6b  >..<dd>..  Invok
5e70: 65 64 20 77 68 65 6e 20 6c 6f 61 64 69 6e 67 20  ed when loading 
5e80: 6f 72 20 73 74 6f 72 69 6e 67 20 61 20 50 45 4d  or storing a PEM
5e90: 20 63 65 72 74 69 66 69 63 61 74 65 20 77 69 74   certificate wit
5ea0: 68 20 65 6e 63 72 79 70 74 69 6f 6e 2e 0a 09 20  h encryption... 
5eb0: 20 57 68 65 72 65 20 3c 65 6d 3e 72 77 66 6c 61   Where <em>rwfla
5ec0: 67 3c 2f 65 6d 3e 20 69 73 20 30 20 66 6f 72 20  g</em> is 0 for 
5ed0: 72 65 61 64 69 6e 67 2f 64 65 63 72 79 70 74 69  reading/decrypti
5ee0: 6f 6e 20 6f 72 20 31 20 66 6f 72 0a 09 20 20 77  on or 1 for..  w
5ef0: 72 69 74 69 6e 67 2f 65 6e 63 72 79 70 74 69 6f  riting/encryptio
5f00: 6e 20 28 63 61 6e 20 70 72 6f 6d 70 74 20 75 73  n (can prompt us
5f10: 65 72 20 74 6f 20 63 6f 6e 66 69 72 6d 29 20 61  er to confirm) a
5f20: 6e 64 0a 09 20 20 3c 65 6d 3e 73 69 7a 65 3c 2f  nd..  <em>size</
5f30: 65 6d 3e 20 69 73 20 74 68 65 20 6d 61 78 20 70  em> is the max p
5f40: 61 73 73 77 6f 72 64 20 6c 65 6e 67 74 68 20 69  assword length i
5f50: 6e 20 62 79 74 65 73 2e 0a 09 20 20 54 68 65 20  n bytes...  The 
5f60: 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20  callback should 
5f70: 72 65 74 75 72 6e 20 74 68 65 20 70 61 73 73 77  return the passw
5f80: 6f 72 64 20 61 73 20 61 20 73 74 72 69 6e 67 2e  ord as a string.
5f90: 0a 09 20 20 42 6f 74 68 20 61 72 67 75 6d 65 6e  ..  Both argumen
5fa0: 74 73 20 61 72 65 20 6e 65 77 20 66 6f 72 20 54  ts are new for T
5fb0: 4c 53 20 31 2e 38 2e 0a 09 3c 2f 64 64 3e 0a 20  LS 1.8...</dd>. 
5fc0: 20 20 20 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 62     </dd>..    <b
5fd0: 72 3e 0a 0a 0a 20 20 20 20 3c 64 74 3e 3c 73 74  r>...    <dt><st
5fe0: 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65 63 6f  rong>-validateco
5ff0: 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  mmand</strong> <
6000: 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e  em>callback</em>
6010: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09  </dt>.    <dd>..
6020: 49 6e 76 6f 6b 65 73 20 74 68 65 20 73 70 65 63  Invokes the spec
6030: 69 66 69 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61  ified <em>callba
6040: 63 6b 3c 2f 65 6d 3e 20 73 63 72 69 70 74 20 64  ck</em> script d
6050: 75 72 69 6e 67 20 68 61 6e 64 73 68 61 6b 65 20  uring handshake 
6060: 69 6e 0a 09 6f 72 64 65 72 20 74 6f 20 76 61 6c  in..order to val
6070: 69 64 61 74 65 20 74 68 65 20 70 72 6f 76 69 64  idate the provid
6080: 65 64 20 76 61 6c 75 65 28 73 29 2e 20 53 65 65  ed value(s). See
6090: 20 62 65 6c 6f 77 20 66 6f 72 20 74 68 65 20 70   below for the p
60a0: 6f 73 73 69 62 6c 65 0a 09 61 72 67 75 6d 65 6e  ossible..argumen
60b0: 74 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  ts passed to the
60c0: 20 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70 74   callback script
60d0: 2e 20 49 66 20 6e 6f 74 20 73 70 65 63 69 66 69  . If not specifi
60e0: 65 64 2c 20 4f 70 65 6e 53 53 4c 0a 09 77 69 6c  ed, OpenSSL..wil
60f0: 6c 20 61 63 63 65 70 74 20 76 61 6c 69 64 20 63  l accept valid c
6100: 65 72 74 69 66 69 63 61 74 65 73 20 61 6e 64 20  ertificates and 
6110: 65 78 74 65 6e 73 69 6f 6e 73 2e 0a 09 54 6f 20  extensions...To 
6120: 72 65 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65  reject the value
6130: 20 61 6e 64 20 61 62 6f 72 74 20 74 68 65 20 63   and abort the c
6140: 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 20 63  onnection, the c
6150: 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 72  allback should r
6160: 65 74 75 72 6e 20 30 2e 0a 09 54 6f 20 61 63 63  eturn 0...To acc
6170: 65 70 74 20 74 68 65 20 76 61 6c 75 65 20 61 6e  ept the value an
6180: 64 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63  d continue the c
6190: 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74 20 73 68  onnection, it sh
61a0: 6f 75 6c 64 20 72 65 74 75 72 6e 20 31 2e 0a 09  ould return 1...
61b0: 54 6f 20 72 65 6a 65 63 74 20 74 68 65 20 76 61  To reject the va
61c0: 6c 75 65 2c 20 62 75 74 20 63 6f 6e 74 69 6e 75  lue, but continu
61d0: 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  e the connection
61e0: 2c 20 69 74 20 73 68 6f 75 6c 64 20 72 65 74 75  , it should retu
61f0: 72 6e 20 32 2e 0a 0a 09 3c 62 72 3e 0a 09 3c 62  rn 2....<br>..<b
6200: 72 3e 0a 0a 09 3c 64 6c 3e 0a 0a 09 3c 64 74 3e  r>...<dl>...<dt>
6210: 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e  ..  <strong>alpn
6220: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68  </strong> <em>ch
6230: 61 6e 6e 65 6c 49 64 20 70 72 6f 74 6f 63 6f 6c  annelId protocol
6240: 20 6d 61 74 63 68 3c 2f 65 6d 3e 0a 09 3c 2f 64   match</em>..</d
6250: 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 46 6f 72 20  t>..<dd>..  For 
6260: 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 66 6f  servers, this fo
6270: 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69  rm of callback i
6280: 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 74  s invoked when t
6290: 68 65 20 63 6c 69 65 6e 74 20 41 4c 50 4e 0a 09  he client ALPN..
62a0: 20 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 72    extension is r
62b0: 65 63 65 69 76 65 64 2e 20 49 66 20 3c 65 6d 3e  eceived. If <em>
62c0: 6d 61 74 63 68 3c 2f 65 6d 3e 20 69 73 20 74 72  match</em> is tr
62d0: 75 65 2c 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c  ue, <em>protocol
62e0: 3c 2f 65 6d 3e 0a 09 20 20 69 73 20 74 68 65 20  </em>..  is the 
62f0: 66 69 72 73 74 20 3c 62 3e 2d 61 6c 70 6e 3c 2f  first <b>-alpn</
6300: 62 3e 20 6f 70 74 69 6f 6e 20 73 70 65 63 69 66  b> option specif
6310: 69 65 64 20 70 72 6f 74 6f 63 6f 6c 20 63 6f 6d  ied protocol com
6320: 6d 6f 6e 20 74 6f 20 62 6f 74 68 0a 09 20 20 74  mon to both..  t
6330: 68 65 20 63 6c 69 65 6e 74 20 61 6e 64 20 73 65  he client and se
6340: 72 76 65 72 2e 20 49 66 20 6e 6f 74 2c 20 74 68  rver. If not, th
6350: 65 20 66 69 72 73 74 20 63 6c 69 65 6e 74 20 73  e first client s
6360: 70 65 63 69 66 69 65 64 20 70 72 6f 74 6f 63 6f  pecified protoco
6370: 6c 20 69 73 0a 09 20 20 75 73 65 64 2e 20 49 74  l is..  used. It
6380: 20 69 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72   is called after
6390: 20 74 68 65 20 68 65 6c 6c 6f 20 61 6e 64 20 41   the hello and A
63a0: 4c 50 4e 20 63 61 6c 6c 62 61 63 6b 73 2e 0a 09  LPN callbacks...
63b0: 20 20 54 68 69 73 20 63 61 6c 6c 62 61 63 6b 20    This callback 
63c0: 69 73 20 6e 65 77 20 66 6f 72 20 54 4c 53 20 31  is new for TLS 1
63d0: 2e 38 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 62 72  .8...</dd>...<br
63e0: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
63f0: 6f 6e 67 3e 68 65 6c 6c 6f 3c 2f 73 74 72 6f 6e  ong>hello</stron
6400: 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64  g> <em>channelId
6410: 20 73 65 72 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e   servername</em>
6420: 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20  ..</dt>..<dd>.. 
6430: 20 46 6f 72 20 73 65 72 76 65 72 73 2c 20 74 68   For servers, th
6440: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
6450: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 64  ack is invoked d
6460: 75 72 69 6e 67 20 63 6c 69 65 6e 74 20 68 65 6c  uring client hel
6470: 6c 6f 0a 09 20 20 6d 65 73 73 61 67 65 20 70 72  lo..  message pr
6480: 6f 63 65 73 73 69 6e 67 2e 20 54 68 65 20 70 75  ocessing. The pu
6490: 72 70 6f 73 65 20 69 73 20 73 6f 20 74 68 65 20  rpose is so the 
64a0: 73 65 72 76 65 72 20 63 61 6e 20 73 65 6c 65 63  server can selec
64b0: 74 20 74 68 65 0a 09 20 20 61 70 70 72 6f 70 72  t the..  appropr
64c0: 69 61 74 65 20 63 65 72 74 69 66 69 63 61 74 65  iate certificate
64d0: 20 74 6f 20 70 72 65 73 65 6e 74 20 74 6f 20 74   to present to t
64e0: 68 65 20 63 6c 69 65 6e 74 2c 20 61 6e 64 20 74  he client, and t
64f0: 6f 20 6d 61 6b 65 20 6f 74 68 65 72 0a 09 20 20  o make other..  
6500: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 64  configuration ad
6510: 6a 75 73 74 6d 65 6e 74 73 20 72 65 6c 65 76 61  justments releva
6520: 6e 74 20 74 6f 20 74 68 61 74 20 73 65 72 76 65  nt to that serve
6530: 72 20 6e 61 6d 65 20 61 6e 64 20 69 74 73 0a 09  r name and its..
6540: 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
6550: 20 49 74 20 69 73 20 63 61 6c 6c 65 64 20 62 65   It is called be
6560: 66 6f 72 65 20 74 68 65 20 53 4e 49 20 61 6e 64  fore the SNI and
6570: 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63 6b 73 2e   ALPN callbacks.
6580: 0a 09 20 20 54 68 69 73 20 63 61 6c 6c 62 61 63  ..  This callbac
6590: 6b 20 69 73 20 6e 65 77 20 66 6f 72 20 54 4c 53  k is new for TLS
65a0: 20 31 2e 38 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c   1.8...</dd>...<
65b0: 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73  br>...<dt>..  <s
65c0: 74 72 6f 6e 67 3e 73 6e 69 3c 2f 73 74 72 6f 6e  trong>sni</stron
65d0: 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64  g> <em>channelId
65e0: 20 73 65 72 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e   servername</em>
65f0: 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20  ..</dt>..<dd>.. 
6600: 20 46 6f 72 20 73 65 72 76 65 72 73 2c 20 74 68   For servers, th
6610: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
6620: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
6630: 68 65 6e 20 74 68 65 20 53 65 72 76 65 72 20 4e  hen the Server N
6640: 61 6d 65 0a 09 20 20 49 6e 64 69 63 61 74 69 6f  ame..  Indicatio
6650: 6e 20 28 53 4e 49 29 20 65 78 74 65 6e 73 69 6f  n (SNI) extensio
6660: 6e 20 69 73 20 72 65 63 65 69 76 65 64 2e 20 54  n is received. T
6670: 68 65 20 3c 65 6d 3e 73 65 72 76 65 72 6e 61 6d  he <em>servernam
6680: 65 3c 2f 65 6d 3e 0a 09 20 20 61 72 67 75 6d 65  e</em>..  argume
6690: 6e 74 20 69 73 20 74 68 65 20 63 6c 69 65 6e 74  nt is the client
66a0: 20 70 72 6f 76 69 64 65 64 20 73 65 72 76 65 72   provided server
66b0: 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 3c 62 3e   name in the <b>
66c0: 2d 73 65 72 76 65 72 6e 61 6d 65 3c 2f 62 3e 0a  -servername</b>.
66d0: 09 20 20 6f 70 74 69 6f 6e 2e 20 54 68 65 20 70  .  option. The p
66e0: 75 72 70 6f 73 65 20 69 73 20 73 6f 20 77 68 65  urpose is so whe
66f0: 6e 20 61 20 73 65 72 76 65 72 20 73 75 70 70 6f  n a server suppo
6700: 72 74 73 20 6d 75 6c 74 69 70 6c 65 20 6e 61 6d  rts multiple nam
6710: 65 73 2c 20 74 68 65 0a 09 20 20 72 69 67 68 74  es, the..  right
6720: 20 63 65 72 74 69 66 69 63 61 74 65 20 63 61 6e   certificate can
6730: 20 62 65 20 75 73 65 64 2e 20 49 74 20 69 73 20   be used. It is 
6740: 63 61 6c 6c 65 64 20 61 66 74 65 72 20 74 68 65  called after the
6750: 20 68 65 6c 6c 6f 20 63 61 6c 6c 62 61 63 6b 0a   hello callback.
6760: 09 20 20 62 75 74 20 62 65 66 6f 72 65 20 74 68  .  but before th
6770: 65 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63 6b 2e  e ALPN callback.
6780: 0a 09 20 20 54 68 69 73 20 63 61 6c 6c 62 61 63  ..  This callbac
6790: 6b 20 69 73 20 6e 65 77 20 66 6f 72 20 54 4c 53  k is new for TLS
67a0: 20 31 2e 38 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c   1.8...</dd>...<
67b0: 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73  br>...<dt>..  <s
67c0: 74 72 6f 6e 67 3e 76 65 72 69 66 79 3c 2f 73 74  trong>verify</st
67d0: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65  rong> <em>channe
67e0: 6c 49 64 20 64 65 70 74 68 20 63 65 72 74 20 73  lId depth cert s
67f0: 74 61 74 75 73 20 65 72 72 6f 72 3c 2f 65 6d 3e  tatus error</em>
6800: 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20  ..</dt>..<dd>.. 
6810: 20 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61   This form of ca
6820: 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65  llback is invoke
6830: 64 20 62 79 20 4f 70 65 6e 53 53 4c 20 77 68 65  d by OpenSSL whe
6840: 6e 20 61 20 6e 65 77 20 63 65 72 74 69 66 69 63  n a new certific
6850: 61 74 65 0a 09 20 20 69 73 20 72 65 63 65 69 76  ate..  is receiv
6860: 65 64 20 66 72 6f 6d 20 74 68 65 20 70 65 65 72  ed from the peer
6870: 2e 20 49 74 20 61 6c 6c 6f 77 73 20 74 68 65 20  . It allows the 
6880: 63 6c 69 65 6e 74 20 74 6f 20 63 68 65 63 6b 20  client to check 
6890: 74 68 65 0a 09 20 20 63 65 72 74 69 66 69 63 61  the..  certifica
68a0: 74 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20  te verification 
68b0: 72 65 73 75 6c 74 73 20 61 6e 64 20 63 68 6f 6f  results and choo
68c0: 73 65 20 77 68 65 74 68 65 72 20 74 6f 20 63 6f  se whether to co
68d0: 6e 74 69 6e 75 65 0a 09 20 20 6f 72 20 6e 6f 74  ntinue..  or not
68e0: 2e 20 49 74 20 69 73 20 63 61 6c 6c 65 64 20 66  . It is called f
68f0: 6f 72 20 65 61 63 68 20 63 65 72 74 69 66 69 63  or each certific
6900: 61 74 65 20 69 6e 20 74 68 65 20 63 65 72 74 69  ate in the certi
6910: 66 69 63 61 74 65 20 63 68 61 69 6e 2e 0a 09 20  ficate chain... 
6920: 20 3c 75 6c 3e 0a 09 20 20 3c 6c 69 3e 54 68 65   <ul>..  <li>The
6930: 20 3c 65 6d 3e 64 65 70 74 68 3c 2f 65 6d 3e 20   <em>depth</em> 
6940: 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20  argument is the 
6950: 69 6e 74 65 67 65 72 20 64 65 70 74 68 20 6f 66  integer depth of
6960: 20 74 68 65 0a 09 20 20 63 65 72 74 69 66 69 63   the..  certific
6970: 61 74 65 20 69 6e 20 74 68 65 20 63 65 72 74 69  ate in the certi
6980: 66 69 63 61 74 65 20 63 68 61 69 6e 2c 20 77 68  ficate chain, wh
6990: 65 72 65 20 30 20 69 73 20 74 68 65 20 70 65 65  ere 0 is the pee
69a0: 72 20 63 65 72 74 69 66 69 63 61 74 65 0a 09 20  r certificate.. 
69b0: 20 61 6e 64 20 68 69 67 68 65 72 20 76 61 6c 75   and higher valu
69c0: 65 73 20 67 6f 69 6e 67 20 75 70 20 74 6f 20 74  es going up to t
69d0: 68 65 20 43 65 72 74 69 66 69 63 61 74 65 20 41  he Certificate A
69e0: 75 74 68 6f 72 69 74 79 20 28 43 41 29 2e 3c 2f  uthority (CA).</
69f0: 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68 65 20 3c  li>..  <li>The <
6a00: 65 6d 3e 63 65 72 74 3c 2f 65 6d 3e 20 61 72 67  em>cert</em> arg
6a10: 75 6d 65 6e 74 20 69 73 20 61 20 6c 69 73 74 20  ument is a list 
6a20: 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69  of key-value pai
6a30: 72 73 20 73 69 6d 69 6c 61 72 0a 09 20 20 74 6f  rs similar..  to
6a40: 20 74 68 6f 73 65 20 72 65 74 75 72 6e 65 64 20   those returned 
6a50: 62 79 0a 09 20 20 3c 61 20 68 72 65 66 3d 22 23  by..  <a href="#
6a60: 74 6c 73 3a 3a 73 74 61 74 75 73 22 3e 3c 73 74  tls::status"><st
6a70: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 74 61 74 75 73  rong>tls::status
6a80: 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 2e 3c 2f  </strong></a>.</
6a90: 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68 65 20 3c  li>..  <li>The <
6aa0: 65 6d 3e 73 74 61 74 75 73 3c 2f 65 6d 3e 20 61  em>status</em> a
6ab0: 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 62  rgument is the b
6ac0: 6f 6f 6c 65 61 6e 20 76 61 6c 69 64 69 74 79 20  oolean validity 
6ad0: 6f 66 20 74 68 65 0a 09 20 20 63 75 72 72 65 6e  of the..  curren
6ae0: 74 20 63 65 72 74 69 66 69 63 61 74 65 20 77 68  t certificate wh
6af0: 65 72 65 20 30 20 69 73 20 69 6e 76 61 6c 69 64  ere 0 is invalid
6b00: 20 61 6e 64 20 31 20 69 73 20 76 61 6c 69 64 2e   and 1 is valid.
6b10: 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68 65  </li>..  <li>The
6b20: 20 3c 65 6d 3e 65 72 72 6f 72 3c 2f 65 6d 3e 20   <em>error</em> 
6b30: 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20  argument is the 
6b40: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69  error message, i
6b50: 66 20 61 6e 79 2c 20 67 65 6e 65 72 61 74 65 64  f any, generated
6b60: 0a 09 20 20 62 79 20 3c 63 6f 64 65 3e 58 35 30  ..  by <code>X50
6b70: 39 5f 53 54 4f 52 45 5f 43 54 58 5f 67 65 74 5f  9_STORE_CTX_get_
6b80: 65 72 72 6f 72 28 29 3c 2f 63 6f 64 65 3e 2e 3c  error()</code>.<
6b90: 2f 6c 69 3e 0a 09 20 20 3c 2f 75 6c 3e 0a 09 3c  /li>..  </ul>..<
6ba0: 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f 64 6c  /dd>..<br>..</dl
6bb0: 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 3c 2f 64 6c  >.    </dd>.</dl
6bc0: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
6bd0: 0a 3c 70 3e 0a 52 65 66 65 72 65 6e 63 65 20 69  .<p>.Reference i
6be0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f  mplementations o
6bf0: 66 20 74 68 65 73 65 20 63 61 6c 6c 62 61 63 6b  f these callback
6c00: 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 69  s are provided i
6c10: 6e 20 74 68 65 0a 64 69 73 74 72 69 62 75 74 69  n the.distributi
6c20: 6f 6e 20 61 73 20 3c 73 74 72 6f 6e 67 3e 74 6c  on as <strong>tl
6c30: 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72  s::callback</str
6c40: 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 74 6c  ong>, <strong>tl
6c50: 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74 72  s::password</str
6c60: 6f 6e 67 3e 2c 0a 61 6e 64 20 3c 73 74 72 6f 6e  ong>,.and <stron
6c70: 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f  g>tls::validate_
6c80: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
6c90: 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 20   respectively.  
6ca0: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20  Note that these 
6cb0: 61 72 65 0a 3c 65 6d 3e 73 61 6d 70 6c 65 3c 2f  are.<em>sample</
6cc0: 65 6d 3e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  em> implementati
6cd0: 6f 6e 73 20 6f 6e 6c 79 2e 20 20 49 6e 20 61 20  ons only.  In a 
6ce0: 6d 6f 72 65 20 72 65 61 6c 69 73 74 69 63 20 64  more realistic d
6cf0: 65 70 6c 6f 79 6d 65 6e 74 0a 79 6f 75 20 77 6f  eployment.you wo
6d00: 75 6c 64 20 73 70 65 63 69 66 79 20 79 6f 75 72  uld specify your
6d10: 20 6f 77 6e 20 63 61 6c 6c 62 61 63 6b 20 73 63   own callback sc
6d20: 72 69 70 74 73 20 6f 6e 20 65 61 63 68 20 54 4c  ripts on each TL
6d30: 53 20 63 68 61 6e 6e 65 6c 20 75 73 69 6e 67 20  S channel using 
6d40: 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d  the.<strong>-com
6d50: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c  mand</strong>, <
6d60: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
6d70: 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c  </strong>, and <
6d80: 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65  strong>-validate
6d90: 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67  _command</strong
6da0: 3e 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a  > options..</p>.
6db0: 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61 75 6c 74  .<p>.The default
6dc0: 20 62 65 68 61 76 69 6f 72 20 77 68 65 6e 20 74   behavior when t
6dd0: 68 65 20 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d  he <strong>-comm
6de0: 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 61 6e 64  and</strong> and
6df0: 20 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61   <strong>-valida
6e00: 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  te_command</stro
6e10: 6e 67 3e 0a 6f 70 74 69 6f 6e 73 20 61 72 65 20  ng>.options are 
6e20: 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 69 73  not specified is
6e30: 20 66 6f 72 20 54 4c 53 20 74 6f 20 70 72 6f 63   for TLS to proc
6e40: 65 73 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ess the associat
6e50: 65 64 20 6c 69 62 72 61 72 79 20 63 61 6c 6c 62  ed library callb
6e60: 61 63 6b 73 0a 69 6e 74 65 72 6e 61 6c 6c 79 2e  acks.internally.
6e70: 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   The default beh
6e80: 61 76 69 6f 72 20 77 68 65 6e 20 74 68 65 20 3c  avior when the <
6e90: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
6ea0: 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e  </strong> option
6eb0: 20 69 73 20 6e 6f 74 0a 73 70 65 63 69 66 69 65   is not.specifie
6ec0: 64 20 69 73 20 66 6f 72 20 54 4c 53 20 74 6f 20  d is for TLS to 
6ed0: 70 72 6f 63 65 73 73 20 74 68 65 20 61 73 73 6f  process the asso
6ee0: 63 69 61 74 65 64 20 6c 69 62 72 61 72 79 20 63  ciated library c
6ef0: 61 6c 6c 62 61 63 6b 73 20 62 79 20 61 74 74 65  allbacks by atte
6f00: 6d 70 74 69 6e 67 0a 74 6f 20 63 61 6c 6c 20 3c  mpting.to call <
6f10: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 61 73 73  strong>tls::pass
6f20: 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2e 0a 54  word</strong>..T
6f30: 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  he difference be
6f40: 74 77 65 65 6e 20 74 68 65 73 65 20 74 77 6f 20  tween these two 
6f50: 62 65 68 61 76 69 6f 72 73 20 69 73 20 61 20 63  behaviors is a c
6f60: 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 6d 61  onsequence of ma
6f70: 69 6e 74 61 69 6e 69 6e 67 0a 63 6f 6d 70 61 74  intaining.compat
6f80: 69 62 69 6c 69 74 79 20 77 69 74 68 20 65 61 72  ibility with ear
6f90: 6c 69 65 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74  lier implementat
6fa0: 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ions..</p>..<p>.
6fb0: 3c 65 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66 20  <em>.The use of 
6fc0: 74 68 65 20 72 65 66 65 72 65 6e 63 65 20 63 61  the reference ca
6fd0: 6c 6c 62 61 63 6b 73 20 3c 73 74 72 6f 6e 67 3e  llbacks <strong>
6fe0: 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73  tls::callback</s
6ff0: 74 72 6f 6e 67 3e 2c 0a 3c 73 74 72 6f 6e 67 3e  trong>,.<strong>
7000: 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73  tls::password</s
7010: 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c 73 74 72  trong>, and <str
7020: 6f 6e 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74  ong>tls::validat
7030: 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e  e_command</stron
7040: 67 3e 0a 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  g>.is not recomm
7050: 65 6e 64 65 64 2e 20 20 54 68 65 79 20 6d 61 79  ended.  They may
7060: 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   be removed from
7070: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
7080: 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a 0a 3c 68  ..</em>.</p>..<h
7090: 33 3e 3c 61 20 6e 61 6d 65 3d 22 44 45 42 55 47  3><a name="DEBUG
70a0: 22 3e 44 45 42 55 47 3c 2f 61 3e 3c 2f 68 33 3e  ">DEBUG</a></h3>
70b0: 0a 0a 54 4c 53 20 6b 65 79 20 6c 6f 67 67 69 6e  ..TLS key loggin
70c0: 67 20 63 61 6e 20 62 65 20 65 6e 61 62 6c 65 64  g can be enabled
70d0: 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 65 20   by setting the 
70e0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
70f0: 61 62 6c 65 0a 3c 62 3e 53 53 4c 4b 45 59 4c 4f  able.<b>SSLKEYLO
7100: 47 46 49 4c 45 3c 2f 62 3e 20 74 6f 20 74 68 65  GFILE</b> to the
7110: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c   name of the fil
7120: 65 20 74 6f 20 6c 6f 67 20 74 6f 2e 20 54 68 65  e to log to. The
7130: 6e 20 77 68 65 6e 65 76 65 72 20 54 4c 53 0a 6b  n whenever TLS.k
7140: 65 79 20 6d 61 74 65 72 69 61 6c 20 69 73 20 67  ey material is g
7150: 65 6e 65 72 61 74 65 64 20 6f 72 20 72 65 63 65  enerated or rece
7160: 69 76 65 64 20 69 74 20 77 69 6c 6c 20 62 65 20  ived it will be 
7170: 6c 6f 67 67 65 64 20 74 6f 20 74 68 65 20 66 69  logged to the fi
7180: 6c 65 2e 20 54 68 69 73 0a 69 73 20 75 73 65 66  le. This.is usef
7190: 75 6c 20 66 6f 72 20 6c 6f 67 67 69 6e 67 20 6b  ul for logging k
71a0: 65 79 20 64 61 74 61 20 66 6f 72 20 6e 65 74 77  ey data for netw
71b0: 6f 72 6b 20 6c 6f 67 67 69 6e 67 20 74 6f 6f 6c  ork logging tool
71c0: 73 20 74 6f 20 75 73 65 20 74 6f 0a 64 65 63 72  s to use to.decr
71d0: 79 70 74 20 74 68 65 20 64 61 74 61 2e 0a 0a 3c  ypt the data...<
71e0: 70 3e 0a 54 68 65 20 3c 73 74 72 6f 6e 67 3e 74  p>.The <strong>t
71f0: 6c 73 3a 3a 64 65 62 75 67 3c 2f 73 74 72 6f 6e  ls::debug</stron
7200: 67 3e 20 76 61 72 69 61 62 6c 65 20 70 72 6f 76  g> variable prov
7210: 69 64 65 73 20 73 6f 6d 65 20 61 64 64 69 74 69  ides some additi
7220: 6f 6e 61 6c 0a 63 6f 6e 74 72 6f 6c 20 6f 76 65  onal.control ove
7230: 72 20 74 68 65 73 65 20 72 65 66 65 72 65 6e 63  r these referenc
7240: 65 20 63 61 6c 6c 62 61 63 6b 73 2e 20 20 49 74  e callbacks.  It
7250: 73 20 76 61 6c 75 65 20 69 73 20 7a 65 72 6f 20  s value is zero 
7260: 62 79 20 64 65 66 61 75 6c 74 2e 0a 48 69 67 68  by default..High
7270: 65 72 20 76 61 6c 75 65 73 20 70 72 6f 64 75 63  er values produc
7280: 65 20 6d 6f 72 65 20 64 69 61 67 6e 6f 73 74 69  e more diagnosti
7290: 63 20 6f 75 74 70 75 74 2c 20 61 6e 64 20 77 69  c output, and wi
72a0: 6c 6c 20 61 6c 73 6f 20 66 6f 72 63 65 20 74 68  ll also force th
72b0: 65 0a 76 65 72 69 66 79 20 6d 65 74 68 6f 64 20  e.verify method 
72c0: 69 6e 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  in <strong>tls::
72d0: 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72 6f 6e 67  callback</strong
72e0: 3e 20 74 6f 20 61 63 63 65 70 74 20 74 68 65 0a  > to accept the.
72f0: 63 65 72 74 69 66 69 63 61 74 65 2c 20 65 76 65  certificate, eve
7300: 6e 20 77 68 65 6e 20 69 74 20 69 73 20 69 6e 76  n when it is inv
7310: 61 6c 69 64 20 69 66 20 74 68 65 20 3c 62 3e 74  alid if the <b>t
7320: 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f 63 6f 6d  ls::validate_com
7330: 6d 61 6e 64 3c 2f 62 3e 0a 63 61 6c 6c 62 61 63  mand</b>.callbac
7340: 6b 20 69 73 20 75 73 65 64 20 66 6f 72 20 74 68  k is used for th
7350: 65 20 3c 62 3e 2d 76 61 6c 69 64 61 74 65 63 6f  e <b>-validateco
7360: 6d 6d 61 6e 64 3c 2f 62 3e 20 6f 70 74 69 6f 6e  mmand</b> option
7370: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 65 6d 3e  ..</p>..<p>.<em>
7380: 0a 54 68 65 20 75 73 65 20 6f 66 20 74 68 65 20  .The use of the 
7390: 76 61 72 69 61 62 6c 65 20 3c 73 74 72 6f 6e 67  variable <strong
73a0: 3e 74 6c 73 3a 3a 64 65 62 75 67 3c 2f 73 74 72  >tls::debug</str
73b0: 6f 6e 67 3e 20 69 73 20 6e 6f 74 20 72 65 63 6f  ong> is not reco
73c0: 6d 6d 65 6e 64 65 64 2e 0a 49 74 20 6d 61 79 20  mmended..It may 
73d0: 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  be removed from 
73e0: 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e  future releases.
73f0: 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a 0a 3c 68 34  .</em>.</p>..<h4
7400: 3e 3c 61 20 6e 61 6d 65 3d 22 44 45 42 55 47 5f  ><a name="DEBUG_
7410: 45 58 41 4d 50 4c 45 53 22 3e 44 65 62 75 67 20  EXAMPLES">Debug 
7420: 45 78 61 6d 70 6c 65 73 3c 2f 61 3e 3c 2f 68 34  Examples</a></h4
7430: 3e 0a 0a 3c 70 3e 54 68 65 73 65 20 65 78 61 6d  >..<p>These exam
7440: 70 6c 65 73 20 75 73 65 20 74 68 65 20 64 65 66  ples use the def
7450: 61 75 6c 74 20 55 6e 69 78 20 70 6c 61 74 66 6f  ault Unix platfo
7460: 72 6d 20 53 53 4c 20 63 65 72 74 69 66 69 63 61  rm SSL certifica
7470: 74 65 73 2e 20 46 6f 72 20 73 74 61 6e 64 61 72  tes. For standar
7480: 64 0a 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 73 2c  d.installations,
7490: 20 2d 63 61 64 69 72 20 61 6e 64 20 2d 63 61 66   -cadir and -caf
74a0: 69 6c 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  ile should not b
74b0: 65 20 6e 65 65 64 65 64 2e 20 49 66 20 79 6f 75  e needed. If you
74c0: 72 20 63 65 72 74 69 66 69 63 61 74 65 73 0a 61  r certificates.a
74d0: 72 65 20 69 6e 20 6e 6f 6e 2d 73 74 61 6e 64 61  re in non-standa
74e0: 72 64 20 6c 6f 63 61 74 69 6f 6e 73 2c 20 75 70  rd locations, up
74f0: 64 61 74 65 20 2d 63 61 64 69 72 20 6f 72 20 75  date -cadir or u
7500: 73 65 20 2d 63 61 66 69 6c 65 20 61 73 20 6e 65  se -cafile as ne
7510: 65 64 65 64 2e 3c 2f 70 3e 0a 3c 62 72 3e 0a 45  eded.</p>.<br>.E
7520: 78 61 6d 70 6c 65 20 23 31 3a 20 55 73 65 20 48  xample #1: Use H
7530: 54 54 50 20 70 61 63 6b 61 67 65 0a 0a 0a 3c 70  TTP package...<p
7540: 72 65 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 67  re><code>.packag
7550: 65 20 72 65 71 75 69 72 65 20 68 74 74 70 0a 70  e require http.p
7560: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74  ackage require t
7570: 6c 73 0a 73 65 74 20 75 72 6c 20 22 68 74 74 70  ls.set url "http
7580: 73 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 22  s://www.tcl.tk/"
7590: 0a 0a 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72  ..http::register
75a0: 20 68 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74   https 443 [list
75b0: 20 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d   ::tls::socket -
75c0: 61 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 74  autoservername t
75d0: 72 75 65 20 2d 72 65 71 75 69 72 65 20 74 72 75  rue -require tru
75e0: 65 20 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73  e -cadir /etc/ss
75f0: 6c 2f 63 65 72 74 73 20 5c 0a 20 20 20 20 2d 63  l/certs \.    -c
7600: 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a 63 61  ommand ::tls::ca
7610: 6c 6c 62 61 63 6b 20 2d 70 61 73 73 77 6f 72 64  llback -password
7620: 20 3a 3a 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64   ::tls::password
7630: 20 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e   -validatecomman
7640: 64 20 3a 3a 74 6c 73 3a 3a 76 61 6c 69 64 61 74  d ::tls::validat
7650: 65 5f 63 6f 6d 6d 61 6e 64 5d 0a 0a 23 20 43 68  e_command]..# Ch
7660: 65 63 6b 20 66 6f 72 20 65 72 72 6f 72 0a 73 65  eck for error.se
7670: 74 20 74 6f 6b 65 6e 20 5b 68 74 74 70 3a 3a 67  t token [http::g
7680: 65 74 75 72 6c 20 24 75 72 6c 5d 0a 69 66 20 7b  eturl $url].if {
7690: 5b 68 74 74 70 3a 3a 73 74 61 74 75 73 20 24 74  [http::status $t
76a0: 6f 6b 65 6e 5d 20 6e 65 20 22 6f 6b 22 7d 20 7b  oken] ne "ok"} {
76b0: 0a 20 20 20 20 70 75 74 73 20 5b 66 6f 72 6d 61  .    puts [forma
76c0: 74 20 22 45 72 72 6f 72 20 25 73 22 20 5b 68 74  t "Error %s" [ht
76d0: 74 70 3a 3a 73 74 61 74 75 73 20 24 74 6f 6b 65  tp::status $toke
76e0: 6e 5d 5d 0a 7d 0a 0a 23 20 47 65 74 20 77 65 62  n]].}..# Get web
76f0: 20 70 61 67 65 0a 73 65 74 20 64 61 74 61 20 5b   page.set data [
7700: 68 74 74 70 3a 3a 64 61 74 61 20 24 74 6f 6b 65  http::data $toke
7710: 6e 5d 0a 70 75 74 73 20 5b 73 74 72 69 6e 67 20  n].puts [string 
7720: 6c 65 6e 67 74 68 20 24 64 61 74 61 5d 0a 0a 23  length $data]..#
7730: 20 43 6c 65 61 6e 75 70 0a 3a 3a 68 74 74 70 3a   Cleanup.::http:
7740: 3a 63 6c 65 61 6e 75 70 20 24 74 6f 6b 65 6e 0a  :cleanup $token.
7750: 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 45  </code></pre>..E
7760: 78 61 6d 70 6c 65 20 23 32 3a 20 55 73 65 20 72  xample #2: Use r
7770: 61 77 20 73 6f 63 6b 65 74 0a 3c 70 72 65 3e 3c  aw socket.<pre><
7780: 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20 72 65  code>.package re
7790: 71 75 69 72 65 20 74 6c 73 0a 0a 73 65 74 20 75  quire tls..set u
77a0: 72 6c 20 22 77 77 77 2e 74 63 6c 2d 6c 61 6e 67  rl "www.tcl-lang
77b0: 2e 6f 72 67 22 0a 73 65 74 20 70 6f 72 74 20 34  .org".set port 4
77c0: 34 33 0a 0a 73 65 74 20 63 68 20 5b 74 6c 73 3a  43..set ch [tls:
77d0: 3a 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73 65 72  :socket -autoser
77e0: 76 65 72 6e 61 6d 65 20 31 20 2d 73 65 72 76 65  vername 1 -serve
77f0: 72 6e 61 6d 65 20 24 75 72 6c 20 2d 72 65 71 75  rname $url -requ
7800: 65 73 74 20 31 20 2d 72 65 71 75 69 72 65 20 31  est 1 -require 1
7810: 20 5c 0a 20 20 20 20 2d 61 6c 70 6e 20 7b 68 74   \.    -alpn {ht
7820: 74 70 2f 31 2e 31 7d 20 2d 63 61 64 69 72 20 2f  tp/1.1} -cadir /
7830: 65 74 63 2f 73 73 6c 2f 63 65 72 74 73 20 2d 63  etc/ssl/certs -c
7840: 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a 63 61  ommand ::tls::ca
7850: 6c 6c 62 61 63 6b 20 5c 0a 20 20 20 20 2d 70 61  llback \.    -pa
7860: 73 73 77 6f 72 64 20 3a 3a 74 6c 73 3a 3a 70 61  ssword ::tls::pa
7870: 73 73 77 6f 72 64 20 2d 76 61 6c 69 64 61 74 65  ssword -validate
7880: 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a 76  command ::tls::v
7890: 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 20  alidate_command 
78a0: 24 75 72 6c 20 24 70 6f 72 74 5d 0a 63 68 61 6e  $url $port].chan
78b0: 20 63 6f 6e 66 69 67 75 72 65 20 24 63 68 20 2d   configure $ch -
78c0: 62 75 66 66 65 72 73 69 7a 65 20 36 35 35 33 36  buffersize 65536
78d0: 0a 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 20  .tls::handshake 
78e0: 24 63 68 0a 0a 70 75 74 73 20 24 63 68 20 22 47  $ch..puts $ch "G
78f0: 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 22 0a 66  ET / HTTP/1.1".f
7900: 6c 75 73 68 20 24 63 68 0a 61 66 74 65 72 20 35  lush $ch.after 5
7910: 30 30 0a 73 65 74 20 64 61 74 61 20 5b 72 65 61  00.set data [rea
7920: 64 20 24 63 68 5d 0a 0a 61 72 72 61 79 20 73 65  d $ch]..array se
7930: 74 20 73 74 61 74 75 73 20 5b 74 6c 73 3a 3a 73  t status [tls::s
7940: 74 61 74 75 73 20 24 63 68 5d 0a 61 72 72 61 79  tatus $ch].array
7950: 20 73 65 74 20 63 6f 6e 6e 20 5b 74 6c 73 3a 3a   set conn [tls::
7960: 63 6f 6e 6e 65 63 74 69 6f 6e 20 24 63 68 5d 0a  connection $ch].
7970: 61 72 72 61 79 20 73 65 74 20 63 68 61 6e 20 5b  array set chan [
7980: 63 68 61 6e 20 63 6f 6e 66 69 67 75 72 65 20 24  chan configure $
7990: 63 68 5d 0a 63 6c 6f 73 65 20 24 63 68 0a 70 61  ch].close $ch.pa
79a0: 72 72 61 79 20 73 74 61 74 75 73 0a 70 61 72 72  rray status.parr
79b0: 61 79 20 63 6f 6e 6e 0a 70 61 72 72 61 79 20 63  ay conn.parray c
79c0: 68 61 6e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65  han.</code></pre
79d0: 3e 0a 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d  >...<h3><a name=
79e0: 22 48 54 54 50 53 20 45 58 41 4d 50 4c 45 22 3e  "HTTPS EXAMPLE">
79f0: 48 54 54 50 53 20 45 58 41 4d 50 4c 45 3c 2f 61  HTTPS EXAMPLE</a
7a00: 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 73 65  ></h3>..<p>These
7a10: 20 65 78 61 6d 70 6c 65 73 20 75 73 65 20 74 68   examples use th
7a20: 65 20 64 65 66 61 75 6c 74 20 55 6e 69 78 20 70  e default Unix p
7a30: 6c 61 74 66 6f 72 6d 20 53 53 4c 20 63 65 72 74  latform SSL cert
7a40: 69 66 69 63 61 74 65 73 2e 20 46 6f 72 20 73 74  ificates. For st
7a50: 61 6e 64 61 72 64 0a 69 6e 73 74 61 6c 6c 61 74  andard.installat
7a60: 69 6f 6e 73 2c 20 2d 63 61 64 69 72 20 61 6e 64  ions, -cadir and
7a70: 20 2d 63 61 66 69 6c 65 20 73 68 6f 75 6c 64 20   -cafile should 
7a80: 6e 6f 74 20 62 65 20 6e 65 65 64 65 64 2e 20 49  not be needed. I
7a90: 66 20 79 6f 75 72 20 63 65 72 74 69 66 69 63 61  f your certifica
7aa0: 74 65 73 0a 61 72 65 20 69 6e 20 6e 6f 6e 2d 73  tes.are in non-s
7ab0: 74 61 6e 64 61 72 64 20 6c 6f 63 61 74 69 6f 6e  tandard location
7ac0: 73 2c 20 75 70 64 61 74 65 20 2d 63 61 64 69 72  s, update -cadir
7ad0: 20 6f 72 20 75 73 65 20 2d 63 61 66 69 6c 65 20   or use -cafile 
7ae0: 61 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a  as needed.</p>..
7af0: 45 78 61 6d 70 6c 65 20 23 31 3a 20 47 65 74 20  Example #1: Get 
7b00: 77 65 62 20 70 61 67 65 0a 0a 3c 70 72 65 3e 3c  web page..<pre><
7b10: 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20 72 65  code>.package re
7b20: 71 75 69 72 65 20 68 74 74 70 0a 70 61 63 6b 61  quire http.packa
7b30: 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 73  ge require tls.s
7b40: 65 74 20 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f  et url "https://
7b50: 77 77 77 2e 74 63 6c 2e 74 6b 2f 22 0a 0a 68 74  www.tcl.tk/"..ht
7b60: 74 70 3a 3a 72 65 67 69 73 74 65 72 20 68 74 74  tp::register htt
7b70: 70 73 20 34 34 33 20 5b 6c 69 73 74 20 3a 3a 74  ps 443 [list ::t
7b80: 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 75 74 6f  ls::socket -auto
7b90: 73 65 72 76 65 72 6e 61 6d 65 20 74 72 75 65 20  servername true 
7ba0: 2d 72 65 71 75 69 72 65 20 74 72 75 65 20 2d 63  -require true -c
7bb0: 61 64 69 72 20 2f 65 74 63 2f 73 73 6c 2f 63 65  adir /etc/ssl/ce
7bc0: 72 74 73 5d 0a 0a 23 20 43 68 65 63 6b 20 66 6f  rts]..# Check fo
7bd0: 72 20 65 72 72 6f 72 0a 73 65 74 20 74 6f 6b 65  r error.set toke
7be0: 6e 20 5b 68 74 74 70 3a 3a 67 65 74 75 72 6c 20  n [http::geturl 
7bf0: 24 75 72 6c 5d 0a 69 66 20 7b 5b 68 74 74 70 3a  $url].if {[http:
7c00: 3a 73 74 61 74 75 73 20 24 74 6f 6b 65 6e 5d 20  :status $token] 
7c10: 6e 65 20 22 6f 6b 22 7d 20 7b 0a 20 20 20 20 70  ne "ok"} {.    p
7c20: 75 74 73 20 5b 66 6f 72 6d 61 74 20 22 45 72 72  uts [format "Err
7c30: 6f 72 20 25 73 22 20 5b 68 74 74 70 3a 3a 73 74  or %s" [http::st
7c40: 61 74 75 73 20 24 74 6f 6b 65 6e 5d 5d 0a 7d 0a  atus $token]].}.
7c50: 0a 23 20 47 65 74 20 77 65 62 20 70 61 67 65 0a  .# Get web page.
7c60: 73 65 74 20 64 61 74 61 20 5b 68 74 74 70 3a 3a  set data [http::
7c70: 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 70 75 74  data $token].put
7c80: 73 20 24 64 61 74 61 0a 0a 23 20 43 6c 65 61 6e  s $data..# Clean
7c90: 75 70 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e  up.::http::clean
7ca0: 75 70 20 24 74 6f 6b 65 6e 0a 3c 2f 63 6f 64 65  up $token.</code
7cb0: 3e 3c 2f 70 72 65 3e 0a 0a 45 78 61 6d 70 6c 65  ></pre>..Example
7cc0: 20 23 32 3a 20 44 6f 77 6e 6c 6f 61 64 20 66 69   #2: Download fi
7cd0: 6c 65 0a 0a 3c 70 72 65 3e 3c 63 6f 64 65 3e 0a  le..<pre><code>.
7ce0: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
7cf0: 68 74 74 70 0a 70 61 63 6b 61 67 65 20 72 65 71  http.package req
7d00: 75 69 72 65 20 74 6c 73 0a 0a 73 65 74 20 75 72  uire tls..set ur
7d10: 6c 20 22 68 74 74 70 73 3a 2f 2f 77 69 6b 69 2e  l "https://wiki.
7d20: 74 63 6c 2d 6c 61 6e 67 2e 6f 72 67 2f 73 69 74  tcl-lang.org/sit
7d30: 65 6d 61 70 2e 78 6d 6c 22 0a 73 65 74 20 66 69  emap.xml".set fi
7d40: 6c 65 6e 61 6d 65 20 5b 66 69 6c 65 20 74 61 69  lename [file tai
7d50: 6c 20 24 75 72 6c 5d 0a 0a 68 74 74 70 3a 3a 72  l $url]..http::r
7d60: 65 67 69 73 74 65 72 20 68 74 74 70 73 20 34 34  egister https 44
7d70: 33 20 5b 6c 69 73 74 20 3a 3a 74 6c 73 3a 3a 73  3 [list ::tls::s
7d80: 6f 63 6b 65 74 20 2d 61 75 74 6f 73 65 72 76 65  ocket -autoserve
7d90: 72 6e 61 6d 65 20 74 72 75 65 20 2d 72 65 71 75  rname true -requ
7da0: 69 72 65 20 74 72 75 65 20 2d 63 61 64 69 72 20  ire true -cadir 
7db0: 2f 65 74 63 2f 73 73 6c 2f 63 65 72 74 73 5d 0a  /etc/ssl/certs].
7dc0: 0a 23 20 47 65 74 20 66 69 6c 65 0a 73 65 74 20  .# Get file.set 
7dd0: 63 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e 61  ch [open $filena
7de0: 6d 65 20 77 62 5d 0a 73 65 74 20 74 6f 6b 65 6e  me wb].set token
7df0: 20 5b 3a 3a 68 74 74 70 3a 3a 67 65 74 75 72 6c   [::http::geturl
7e00: 20 24 75 72 6c 20 2d 62 6c 6f 63 6b 73 69 7a 65   $url -blocksize
7e10: 20 36 35 35 33 36 20 2d 63 68 61 6e 6e 65 6c 20   65536 -channel 
7e20: 24 63 68 5d 0a 0a 23 20 43 6c 65 61 6e 75 70 0a  $ch]..# Cleanup.
7e30: 63 6c 6f 73 65 20 24 63 68 0a 3a 3a 68 74 74 70  close $ch.::http
7e40: 3a 3a 63 6c 65 61 6e 75 70 20 24 74 6f 6b 65 6e  ::cleanup $token
7e50: 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a  .</code></pre>..
7e60: 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 53 50 45  <h3><a name="SPE
7e70: 43 49 41 4c 20 43 4f 4e 53 49 44 45 52 41 54 49  CIAL CONSIDERATI
7e80: 4f 4e 53 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e  ONS">SPECIAL CON
7e90: 53 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c  SIDERATIONS</a><
7ea0: 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 61 70  /h3>..<p>The cap
7eb0: 61 62 69 6c 69 74 69 65 73 20 6f 66 20 74 68 69  abilities of thi
7ec0: 73 20 70 61 63 6b 61 67 65 20 63 61 6e 20 76 61  s package can va
7ed0: 72 79 20 65 6e 6f 72 6d 6f 75 73 6c 79 20 62 61  ry enormously ba
7ee0: 73 65 64 20 75 70 6f 6e 20 68 6f 77 20 74 68 65  sed upon how the
7ef0: 0a 6c 69 6e 6b 65 64 20 74 6f 20 4f 70 65 6e 53  .linked to OpenS
7f00: 53 4c 20 6c 69 62 72 61 72 79 20 77 61 73 20 63  SL library was c
7f10: 6f 6e 66 69 67 75 72 65 64 20 61 6e 64 20 62 75  onfigured and bu
7f20: 69 6c 74 2e 20 4e 65 77 20 76 65 72 73 69 6f 6e  ilt. New version
7f30: 73 20 6d 61 79 20 6f 62 73 6f 6c 65 74 65 0a 6f  s may obsolete.o
7f40: 6c 64 65 72 20 70 72 6f 74 6f 63 6f 6c 20 76 65  lder protocol ve
7f50: 72 73 69 6f 6e 73 2c 20 61 64 64 20 6f 72 20 72  rsions, add or r
7f60: 65 6d 6f 76 65 20 63 69 70 68 65 72 73 2c 20 63  emove ciphers, c
7f70: 68 61 6e 67 65 20 64 65 66 61 75 6c 74 20 76 61  hange default va
7f80: 6c 75 65 73 2c 20 65 74 63 2e 0a 55 73 65 20 74  lues, etc..Use t
7f90: 68 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  he <strong>tls::
7fa0: 70 72 6f 74 6f 63 6f 6c 73 3c 2f 73 74 72 6f 6e  protocols</stron
7fb0: 67 3e 20 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 6f  g> commands to o
7fc0: 62 74 61 69 6e 20 74 68 65 20 73 75 70 70 6f 72  btain the suppor
7fd0: 74 65 64 0a 70 72 6f 74 6f 63 6f 6c 20 76 65 72  ted.protocol ver
7fe0: 73 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  sions.</p>..<h3>
7ff0: 3c 61 20 6e 61 6d 65 3d 22 53 45 45 20 41 4c 53  <a name="SEE ALS
8000: 4f 22 3e 53 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c  O">SEE ALSO</a><
8010: 2f 68 33 3e 0a 0a 3c 70 3e 3c 73 74 72 6f 6e 67  /h3>..<p><strong
8020: 3e 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e  >socket</strong>
8030: 2c 20 3c 73 74 72 6f 6e 67 3e 66 69 6c 65 65 76  , <strong>fileev
8040: 65 6e 74 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73  ent</strong>, <s
8050: 74 72 6f 6e 67 3e 68 74 74 70 3c 2f 73 74 72 6f  trong>http</stro
8060: 6e 67 3e 2c 0a 3c 61 20 68 72 65 66 3d 22 68 74  ng>,.<a href="ht
8070: 74 70 3a 2f 2f 77 77 77 2e 6f 70 65 6e 73 73 6c  tp://www.openssl
8080: 2e 6f 72 67 2f 22 3e 3c 73 74 72 6f 6e 67 3e 4f  .org/"><strong>O
8090: 70 65 6e 53 53 4c 3c 2f 73 74 72 6f 6e 67 3e 3c  penSSL</strong><
80a0: 2f 61 3e 3c 2f 70 3e 0a 0a 3c 68 72 3e 0a 0a 3c  /a></p>..<hr>..<
80b0: 70 72 65 3e 0a 43 6f 70 79 72 69 67 68 74 20 26  pre>.Copyright &
80c0: 63 6f 70 79 3b 20 31 39 39 39 20 4d 61 74 74 20  copy; 1999 Matt 
80d0: 4e 65 77 6d 61 6e 2e 0a 43 6f 70 79 72 69 67 68  Newman..Copyrigh
80e0: 74 20 26 63 6f 70 79 3b 20 32 30 30 34 20 53 74  t &copy; 2004 St
80f0: 61 72 66 69 73 68 20 53 79 73 74 65 6d 73 2e 0a  arfish Systems..
8100: 43 6f 70 79 72 69 67 68 74 20 26 63 6f 70 79 3b  Copyright &copy;
8110: 20 32 30 32 33 20 42 72 69 61 6e 20 4f 27 48 61   2023 Brian O'Ha
8120: 67 61 6e 2e 0a 3c 2f 70 72 65 3e 0a 3c 2f 62 6f  gan..</pre>.</bo
8130: 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a              dy>.</html>.