Hex Artifact Content

Artifact 12b4e9e9d7f855d37d6b25945c30929bb163aecf808e4fd4dd6a98f410199309:


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 0a 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 69 73 6f 2d 38 38 35 39 2d 31 22 3e  set=iso-8859-1">
0070: 0a 3c 6d 65 74 61 20 6e 61 6d 65 3d 22 43 6f 70  .<meta name="Cop
0080: 79 72 69 67 68 74 22 20 63 6f 6e 74 65 6e 74 3d  yright" content=
0090: 22 31 39 39 39 20 4d 61 74 74 20 4e 65 77 6d 61  "1999 Matt Newma
00a0: 6e 20 2f 20 32 30 30 34 20 53 74 61 72 66 69 73  n / 2004 Starfis
00b0: 68 20 53 79 73 74 65 6d 73 22 3e 0a 3c 74 69 74  h Systems">.<tit
00c0: 6c 65 3e 54 4c 53 20 28 53 53 4c 29 20 54 43 4c  le>TLS (SSL) TCL
00d0: 20 43 6f 6d 6d 61 6e 64 73 3c 2f 74 69 74 6c 65   Commands</title
00e0: 3e 0a 3c 6c 69 6e 6b 20 72 65 6c 3d 22 73 74 79  >.<link rel="sty
00f0: 6c 65 73 68 65 65 74 22 20 68 72 65 66 3d 22 64  lesheet" href="d
0100: 6f 63 73 2e 63 73 73 22 20 74 79 70 65 3d 22 74  ocs.css" type="t
0110: 65 78 74 2f 63 73 73 22 20 6d 65 64 69 61 3d 22  ext/css" media="
0120: 61 6c 6c 22 3e 0a 3c 2f 68 65 61 64 3e 0a 0a 3c  all">.</head>..<
0130: 62 6f 64 79 20 63 6c 61 73 73 3d 22 76 73 63 2d  body class="vsc-
0140: 69 6e 69 74 69 61 6c 69 7a 65 64 22 3e 0a 0a 3c  initialized">..<
0150: 68 32 3e 54 63 6c 20 54 6c 73 20 45 78 74 65 6e  h2>Tcl Tls Exten
0160: 73 69 6f 6e 20 44 6f 63 75 6d 65 6e 74 61 74 69  sion Documentati
0170: 6f 6e 3c 2f 68 32 3e 0a 0a 3c 64 6c 3e 0a 20 20  on</h2>..<dl>.  
0180: 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23    <dd><a href="#
0190: 4e 41 4d 45 22 3e 4e 41 4d 45 3c 2f 61 3e 0a 20  NAME">NAME</a>. 
01a0: 20 20 20 3c 64 6c 3e 0a 09 3c 64 64 3e 3c 62 3e     <dl>..<dd><b>
01b0: 74 6c 73 3c 2f 62 3e 20 2d 20 62 69 6e 64 69 6e  tls</b> - bindin
01c0: 67 20 74 6f 20 3c 62 3e 4f 70 65 6e 53 53 4c 3c  g to <b>OpenSSL<
01d0: 2f 62 3e 20 6c 69 62 72 61 72 79 0a 09 66 6f 72  /b> library..for
01e0: 20 73 6f 63 6b 65 74 20 61 6e 64 20 49 2f 4f 20   socket and I/O 
01f0: 63 68 61 6e 6e 65 6c 20 63 6f 6d 6d 75 6e 69 63  channel communic
0200: 61 74 69 6f 6e 73 2e 3c 2f 64 64 3e 0a 20 20 20  ations.</dd>.   
0210: 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e   </dl>.    </dd>
0220: 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65 66  .    <dd><a href
0230: 3d 22 23 53 59 4e 4f 50 53 49 53 22 3e 53 59 4e  ="#SYNOPSIS">SYN
0240: 4f 50 53 49 53 3c 2f 61 3e 20 3c 2f 64 64 3e 0a  OPSIS</a> </dd>.
0250: 20 20 20 20 3c 64 64 3e 3c 64 6c 3e 0a 09 20 20      <dd><dl>..  
0260: 20 20 3c 64 64 3e 3c 62 3e 70 61 63 6b 61 67 65    <dd><b>package
0270: 20 72 65 71 75 69 72 65 20 54 63 6c 3c 2f 62 3e   require Tcl</b>
0280: 20 3c 65 6d 3e 3f 38 2e 35 3f 3c 2f 65 6d 3e 3c   <em>?8.5?</em><
0290: 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  /dd>..    <dd><b
02a0: 3e 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  >package require
02b0: 20 74 6c 73 3c 2f 62 3e 3c 2f 64 64 3e 0a 09 20   tls</b></dd>.. 
02c0: 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f 64     <dt>&nbsp;</d
02d0: 74 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74  t>..    <dd><b>t
02e0: 6c 73 3a 3a 69 6e 69 74 3c 2f 62 3e 20 3c 65 6d  ls::init</b> <em
02f0: 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 65 6d 3e 20  >?options?</em> 
0300: 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c  </dd>..    <dd><
0310: 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62  b>tls::socket</b
0320: 3e 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 20  > <em>?options? 
0330: 68 6f 73 74 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f  host port</em></
0340: 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e  dd>..    <dd><b>
0350: 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20  tls::socket</b> 
0360: 3c 65 6d 3e 3f 2d 73 65 72 76 65 72 20 63 6f 6d  <em>?-server com
0370: 6d 61 6e 64 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20  mand? ?options? 
0380: 70 6f 72 74 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09  port</em></dd>..
0390: 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a      <dd><b>tls::
03a0: 68 61 6e 64 73 68 61 6b 65 3c 2f 62 3e 20 3c 65  handshake</b> <e
03b0: 6d 3e 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c  m> channel</em><
03c0: 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  /dd>..    <dd><b
03d0: 3e 74 6c 73 3a 3a 73 74 61 74 75 73 3c 2f 62 3e  >tls::status</b>
03e0: 20 3c 65 6d 3e 3f 2d 6c 6f 63 61 6c 3f 20 63 68   <em>?-local? ch
03f0: 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a  annel</em></dd>.
0400: 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a  .    <dd><b>tls:
0410: 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 62 3e 20  :connection</b> 
0420: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e  <em>channel</em>
0430: 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c  </dd>..    <dd><
0440: 62 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 62  b>tls::import</b
0450: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 3f 6f  > <em>channel ?o
0460: 70 74 69 6f 6e 73 3f 3c 2f 65 6d 3e 3c 2f 64 64  ptions?</em></dd
0470: 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c  >..    <dd><b>tl
0480: 73 3a 3a 75 6e 69 6d 70 6f 72 74 3c 2f 62 3e 20  s::unimport</b> 
0490: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e  <em>channel</em>
04a0: 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 74 3e 26  </dd>..    <dt>&
04b0: 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 20 20 20 20  nbsp;</dt>..    
04c0: 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 70 72 6f 74  <dd><b>tls::prot
04d0: 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f 64 64 3e 0a 09  ocols</b></dd>..
04e0: 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a      <dd><b>tls::
04f0: 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c 2f 64 64 3e  version</b></dd>
0500: 0a 09 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64  ..</dl>.    </dd
0510: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65  >.    <dd><a hre
0520: 66 3d 22 23 43 4f 4d 4d 41 4e 44 53 22 3e 43 4f  f="#COMMANDS">CO
0530: 4d 4d 41 4e 44 53 3c 2f 61 3e 3c 2f 64 64 3e 0a  MMANDS</a></dd>.
0540: 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d      <dd><a href=
0550: 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f  "#CALLBACK OPTIO
0560: 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 54  NS">CALLBACK OPT
0570: 49 4f 4e 53 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20  IONS</a></dd>.  
0580: 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23    <dd><a href="#
0590: 48 54 54 50 53 20 45 58 41 4d 50 4c 45 22 3e 48  HTTPS EXAMPLE">H
05a0: 54 54 50 53 20 45 58 41 4d 50 4c 45 3c 2f 61 3e  TTPS EXAMPLE</a>
05b0: 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61  </dd>.    <dd><a
05c0: 20 68 72 65 66 3d 22 23 53 45 45 20 41 4c 53 4f   href="#SEE ALSO
05d0: 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53 49 44  ">SPECIAL CONSID
05e0: 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 64 64  ERATIONS</a></dd
05f0: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65  >.    <dd><a hre
0600: 66 3d 22 23 53 45 45 20 41 4c 53 4f 22 3e 53 45  f="#SEE ALSO">SE
0610: 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 64 64 3e 0a  E ALSO</a></dd>.
0620: 3c 2f 64 6c 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33  </dl>..<hr>..<h3
0630: 3e 3c 61 20 6e 61 6d 65 3d 22 4e 41 4d 45 22 3e  ><a name="NAME">
0640: 4e 41 4d 45 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c  NAME</a></h3>..<
0650: 70 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3c 2f 73  p><strong>tls</s
0660: 74 72 6f 6e 67 3e 20 2d 20 62 69 6e 64 69 6e 67  trong> - binding
0670: 20 74 6f 20 3c 73 74 72 6f 6e 67 3e 4f 70 65 6e   to <strong>Open
0680: 53 53 4c 3c 2f 73 74 72 6f 6e 67 3e 20 6c 69 62  SSL</strong> lib
0690: 72 61 72 79 0a 66 6f 72 20 73 6f 63 6b 65 74 20  rary.for socket 
06a0: 61 6e 64 20 49 2f 4f 20 63 68 61 6e 6e 65 6c 20  and I/O channel 
06b0: 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 2e 3c  communications.<
06c0: 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65  /p>..<h3><a name
06d0: 3d 22 53 59 4e 4f 50 53 49 53 22 3e 53 59 4e 4f  ="SYNOPSIS">SYNO
06e0: 50 53 49 53 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c  PSIS</a></h3>..<
06f0: 70 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72 65 71  p><b>package req
0700: 75 69 72 65 20 54 63 6c 20 38 2e 35 3c 2f 62 3e  uire Tcl 8.5</b>
0710: 3c 62 72 3e 0a 3c 62 3e 70 61 63 6b 61 67 65 20  <br>.<b>package 
0720: 72 65 71 75 69 72 65 20 74 6c 73 3c 2f 62 3e 3c  require tls</b><
0730: 62 72 3e 0a 3c 62 72 3e 0a 3c 61 20 68 72 65 66  br>.<br>.<a href
0740: 3d 22 23 74 6c 73 3a 3a 69 6e 69 74 22 3e 3c 62  ="#tls::init"><b
0750: 3e 74 6c 73 3a 3a 69 6e 69 74 3c 2f 62 3e 20 3c  >tls::init</b> <
0760: 69 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c  i>?options?</i><
0770: 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d  /a><br>.<a href=
0780: 22 23 74 6c 73 3a 3a 73 6f 63 6b 65 74 22 3e 3c  "#tls::socket"><
0790: 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62  b>tls::socket</b
07a0: 3e 20 3c 69 3e 3f 6f 70 74 69 6f 6e 73 3f 20 68  > <i>?options? h
07b0: 6f 73 74 20 70 6f 72 74 3c 2f 69 3e 3c 62 72 3e  ost port</i><br>
07c0: 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a  .<a href="#tls::
07d0: 73 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c 73 3a 3a  socket"><b>tls::
07e0: 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c 69 3e 3f 2d  socket</b> <i>?-
07f0: 73 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64 3f 20  server command? 
0800: 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74 3c 2f  ?options? port</
0810: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72  i></a><br>.<a hr
0820: 65 66 3d 22 23 74 6c 73 3a 3a 73 74 61 74 75 73  ef="#tls::status
0830: 22 3e 3c 62 3e 74 6c 73 3a 3a 73 74 61 74 75 73  "><b>tls::status
0840: 3c 2f 62 3e 20 3c 69 3e 3f 2d 6c 6f 63 61 6c 3f  </b> <i>?-local?
0850: 20 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e   channel</i></a>
0860: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
0870: 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  ls::connection">
0880: 3c 62 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69  <b>tls::connecti
0890: 6f 6e 3c 2f 62 3e 20 3c 69 3e 63 68 61 6e 6e 65  on</b> <i>channe
08a0: 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61  l</i></a><br>.<a
08b0: 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 68 61 6e   href="#tls::han
08c0: 64 73 68 61 6b 65 22 3e 3c 62 3e 74 6c 73 3a 3a  dshake"><b>tls::
08d0: 68 61 6e 64 73 68 61 6b 65 3c 2f 62 3e 20 3c 69  handshake</b> <i
08e0: 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e  >channel</i></a>
08f0: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
0900: 6c 73 3a 3a 69 6d 70 6f 72 74 22 3e 3c 62 3e 74  ls::import"><b>t
0910: 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c  ls::import</b> <
0920: 69 3e 63 68 61 6e 6e 65 6c 20 3f 6f 70 74 69 6f  i>channel ?optio
0930: 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a  ns?</i></a><br>.
0940: 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 75  <a href="#tls::u
0950: 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a  nimport"><b>tls:
0960: 3a 75 6e 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c 69  :unimport</b> <i
0970: 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e  >channel</i></a>
0980: 3c 62 72 3e 0a 3c 62 72 3e 0a 3c 61 20 68 72 65  <br>.<br>.<a hre
0990: 66 3d 22 23 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f  f="#tls::protoco
09a0: 6c 73 22 3e 3c 62 3e 74 6c 73 3a 3a 70 72 6f 74  ls"><b>tls::prot
09b0: 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f 61 3e 3c 62 72  ocols</b></a><br
09c0: 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a  >.<a href="#tls:
09d0: 3a 76 65 72 73 69 6f 6e 22 3e 3c 62 3e 74 6c 73  :version"><b>tls
09e0: 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c 2f 61  ::version</b></a
09f0: 3e 3c 62 72 3e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e  ><br>.</p>..<h3>
0a00: 3c 61 20 6e 61 6d 65 3d 22 44 45 53 43 52 49 50  <a name="DESCRIP
0a10: 54 49 4f 4e 22 3e 44 45 53 43 52 49 50 54 49 4f  TION">DESCRIPTIO
0a20: 4e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54  N</a></h3>..<p>T
0a30: 68 69 73 20 65 78 74 65 6e 73 69 6f 6e 20 70 72  his extension pr
0a40: 6f 76 69 64 65 73 20 61 20 67 65 6e 65 72 69 63  ovides a generic
0a50: 20 62 69 6e 64 69 6e 67 20 74 6f 20 3c 61 0a 68   binding to <a.h
0a60: 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e  ref="http://www.
0a70: 6f 70 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 4f 70  openssl.org/">Op
0a80: 65 6e 53 53 4c 3c 2f 61 3e 2c 20 75 74 69 6c 69  enSSL</a>, utili
0a90: 7a 69 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67  zing the.<strong
0aa0: 3e 54 63 6c 5f 53 74 61 63 6b 43 68 61 6e 6e 65  >Tcl_StackChanne
0ab0: 6c 3c 2f 73 74 72 6f 6e 67 3e 0a 41 50 49 20 66  l</strong>.API f
0ac0: 6f 72 20 54 63 6c 20 38 2e 34 20 61 6e 64 20 68  or Tcl 8.4 and h
0ad0: 69 67 68 65 72 2e 20 54 68 65 20 73 6f 63 6b 65  igher. The socke
0ae0: 74 73 20 62 65 68 61 76 65 20 65 78 61 63 74 6c  ts behave exactl
0af0: 79 20 74 68 65 20 73 61 6d 65 0a 61 73 20 63 68  y the same.as ch
0b00: 61 6e 6e 65 6c 73 20 63 72 65 61 74 65 64 20 75  annels created u
0b10: 73 69 6e 67 20 54 63 6c 27 73 20 62 75 69 6c 74  sing Tcl's built
0b20: 2d 69 6e 20 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b  -in <strong>sock
0b30: 65 74 3c 2f 73 74 72 6f 6e 67 3e 0a 63 6f 6d 6d  et</strong>.comm
0b40: 61 6e 64 20 77 69 74 68 20 61 64 64 69 74 69 6f  and with additio
0b50: 6e 61 6c 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20  nal options for 
0b60: 63 6f 6e 74 72 6f 6c 6c 69 6e 67 20 74 68 65 20  controlling the 
0b70: 53 53 4c 20 73 65 73 73 69 6f 6e 2e 0a 3c 2f 70  SSL session..</p
0b80: 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22  >..<h3><a name="
0b90: 43 4f 4d 4d 41 4e 44 53 22 3e 43 4f 4d 4d 41 4e  COMMANDS">COMMAN
0ba0: 44 53 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e  DS</a></h3>..<p>
0bb0: 54 79 70 69 63 61 6c 6c 79 20 6f 6e 65 20 77 6f  Typically one wo
0bc0: 75 6c 64 20 75 73 65 20 74 68 65 20 3c 73 74 72  uld use the <str
0bd0: 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 20  ong>tls::socket 
0be0: 3c 2f 73 74 72 6f 6e 67 3e 63 6f 6d 6d 61 6e 64  </strong>command
0bf0: 0a 77 68 69 63 68 20 70 72 6f 76 69 64 65 73 20  .which provides 
0c00: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
0c10: 74 68 20 74 68 65 20 6e 61 74 69 76 65 20 54 63  th the native Tc
0c20: 6c 20 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 74  l <strong>socket
0c30: 3c 2f 73 74 72 6f 6e 67 3e 0a 63 6f 6d 6d 61 6e  </strong>.comman
0c40: 64 2e 20 49 6e 20 73 75 63 68 20 63 61 73 65 73  d. In such cases
0c50: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d   <strong>tls::im
0c60: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 20 73 68  port</strong> sh
0c70: 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 75 73 65 64  ould not be.used
0c80: 20 64 69 72 65 63 74 6c 79 2e 3c 2f 70 3e 0a 0a   directly.</p>..
0c90: 3c 64 6c 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20  <dl>.    <dt><a 
0ca0: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 69 6e 69 74 22  name="tls::init"
0cb0: 3e 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74 20 3c 2f  ><b>tls::init </
0cc0: 62 3e 3c 69 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f  b><i>?options?</
0cd0: 69 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20  i></a></dt>.    
0ce0: 3c 64 64 3e 4f 70 74 69 6f 6e 61 6c 20 66 75 6e  <dd>Optional fun
0cf0: 63 74 69 6f 6e 20 74 6f 20 73 65 74 20 74 68 65  ction to set the
0d00: 20 64 65 66 61 75 6c 74 20 6f 70 74 69 6f 6e 73   default options
0d10: 20 75 73 65 64 20 62 79 0a 09 3c 73 74 72 6f 6e   used by..<stron
0d20: 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 73  g>tls::socket</s
0d30: 74 72 6f 6e 67 3e 2e 20 49 66 20 79 6f 75 20 63  trong>. If you c
0d40: 61 6c 6c 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a  all <strong>tls:
0d50: 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e  :import</strong>
0d60: 0a 09 64 69 72 65 63 74 6c 79 20 74 68 69 73 20  ..directly this 
0d70: 72 6f 75 74 69 6e 65 20 68 61 73 20 6e 6f 20 65  routine has no e
0d80: 66 66 65 63 74 2e 20 41 6e 79 20 6f 66 20 74 68  ffect. Any of th
0d90: 65 20 6f 70 74 69 6f 6e 73 0a 09 74 68 61 74 20  e options..that 
0da0: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63  <strong>tls::soc
0db0: 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 61 63 63  ket</strong> acc
0dc0: 65 70 74 73 20 63 61 6e 20 62 65 20 73 65 74 0a  epts can be set.
0dd0: 09 75 73 69 6e 67 20 74 68 69 73 20 63 6f 6d 6d  .using this comm
0de0: 61 6e 64 2c 20 74 68 6f 75 67 68 20 79 6f 75 20  and, though you 
0df0: 73 68 6f 75 6c 64 20 6c 69 6d 69 74 20 79 6f 75  should limit you
0e00: 72 20 6f 70 74 69 6f 6e 73 0a 09 74 6f 20 6f 6e  r options..to on
0e10: 6c 79 20 54 4c 53 20 72 65 6c 61 74 65 64 20 6f  ly TLS related o
0e20: 6e 65 73 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64  nes.</dd>.    <d
0e30: 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 20 20  t>&nbsp;</dt>.  
0e40: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
0e50: 6c 73 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62 3e 74  ls::socket"><b>t
0e60: 6c 73 3a 3a 73 6f 63 6b 65 74 20 3c 2f 62 3e 3c  ls::socket </b><
0e70: 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 0a 09 68 6f  em>?options?..ho
0e80: 73 74 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f 61 3e  st port</em></a>
0e90: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 62  </dt>.    <dt><b
0ea0: 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e  >tls::socket</b>
0eb0: 3c 65 6d 3e 20 3f 2d 73 65 72 76 65 72 20 63 6f  <em> ?-server co
0ec0: 6d 6d 61 6e 64 3f 20 3f 6f 70 74 69 6f 6e 73 3f  mmand? ?options?
0ed0: 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a   port</em></dt>.
0ee0: 20 20 20 20 3c 64 64 3e 54 68 69 73 20 69 73 20      <dd>This is 
0ef0: 61 20 68 65 6c 70 65 72 20 66 75 6e 63 74 69 6f  a helper functio
0f00: 6e 20 74 68 61 74 20 75 74 69 6c 69 7a 65 73 20  n that utilizes 
0f10: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 0a 09  the underlying..
0f20: 63 6f 6d 6d 61 6e 64 73 20 28 3c 73 74 72 6f 6e  commands (<stron
0f30: 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73  g>tls::import</s
0f40: 74 72 6f 6e 67 3e 29 2e 20 49 74 20 62 65 68 61  trong>). It beha
0f50: 76 65 73 0a 09 65 78 61 63 74 6c 79 20 74 68 65  ves..exactly the
0f60: 20 73 61 6d 65 20 61 73 20 74 68 65 20 6e 61 74   same as the nat
0f70: 69 76 65 20 54 63 6c 20 3c 73 74 72 6f 6e 67 3e  ive Tcl <strong>
0f80: 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 0a  socket</strong>.
0f90: 09 63 6f 6d 6d 61 6e 64 20 65 78 63 65 70 74 20  .command except 
0fa0: 74 68 65 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20  the options can 
0fb0: 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 61 6e 79  also include any
0fc0: 20 6f 66 20 74 68 65 0a 09 61 70 70 6c 69 63 61   of the..applica
0fd0: 62 6c 65 20 3c 61 20 68 72 65 66 3d 22 23 74 6c  ble <a href="#tl
0fe0: 73 3a 3a 69 6d 70 6f 72 74 22 3e 3c 73 74 72 6f  s::import"><stro
0ff0: 6e 67 3e 74 6c 73 3a 69 6d 70 6f 72 74 3c 2f 73  ng>tls:import</s
1000: 74 72 6f 6e 67 3e 3c 2f 61 3e 0a 09 6f 70 74 69  trong></a>..opti
1010: 6f 6e 73 20 77 69 74 68 20 6f 6e 65 20 61 64 64  ons with one add
1020: 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 3a 3c  itional option:<
1030: 2f 64 64 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /dd>.<blockquote
1040: 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e  >.    <dl>..<dt>
1050: 3c 73 74 72 6f 6e 67 3e 2d 61 75 74 6f 73 65 72  <strong>-autoser
1060: 76 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e  vername</strong>
1070: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f   <em>bool</em></
1080: 64 74 3e 0a 09 3c 64 64 3e 41 75 74 6f 6d 61 74  dt>..<dd>Automat
1090: 69 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20 2d  ically set the -
10a0: 73 65 72 76 65 72 6e 61 6d 65 20 61 72 67 75 6d  servername argum
10b0: 65 6e 74 20 74 6f 20 74 68 65 20 3c 65 6d 3e 68  ent to the <em>h
10c0: 6f 73 74 3c 2f 65 6d 3e 0a 09 20 20 20 20 61 72  ost</em>..    ar
10d0: 67 75 6d 65 6e 74 20 28 64 65 66 61 75 6c 74 20  gument (default 
10e0: 69 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d  is <em>false</em
10f0: 3e 29 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64  >).</dd>.    </d
1100: 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  l>.</blockquote>
1110: 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d  ..    <dt><a nam
1120: 65 3d 22 74 6c 73 3a 3a 69 6d 70 6f 72 74 22 3e  e="tls::import">
1130: 3c 62 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 20 3c  <b>tls::import <
1140: 2f 62 3e 3c 69 3e 63 68 61 6e 6e 65 6c 0a 09 3f  /b><i>channel..?
1150: 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e  options?</i></a>
1160: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 41 64  </dt>.    <dd>Ad
1170: 64 20 53 53 4c 2f 54 4c 53 20 65 6e 63 72 79 70  d SSL/TLS encryp
1180: 74 69 6f 6e 20 74 6f 20 61 20 72 65 67 75 6c 61  tion to a regula
1190: 72 20 54 63 6c 20 63 68 61 6e 6e 65 6c 2e 20 49  r Tcl channel. I
11a0: 74 20 6e 65 65 64 0a 09 6e 6f 74 20 62 65 20 61  t need..not be a
11b0: 20 73 6f 63 6b 65 74 2c 20 62 75 74 20 6d 75 73   socket, but mus
11c0: 74 20 70 72 6f 76 69 64 65 20 62 69 2d 64 69 72  t provide bi-dir
11d0: 65 63 74 69 6f 6e 61 6c 20 66 6c 6f 77 2e 20 41  ectional flow. A
11e0: 6c 73 6f 0a 09 73 65 74 20 73 65 73 73 69 6f 6e  lso..set session
11f0: 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20   parameters for 
1200: 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 2e 3c 2f  SSL handshake.</
1210: 64 64 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  dd>..<blockquote
1220: 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e  >.    <dl>..<dt>
1230: 3c 73 74 72 6f 6e 67 3e 2d 61 6c 70 6e 3c 2f 73  <strong>-alpn</s
1240: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c  trong> <em>list<
1250: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c  /em></dt>..<dd>L
1260: 69 73 74 20 6f 66 20 70 72 6f 74 6f 63 6f 6c 73  ist of protocols
1270: 20 74 6f 20 6f 66 66 65 72 20 64 75 72 69 6e 67   to offer during
1280: 20 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79   Application-Lay
1290: 65 72 0a 09 20 20 20 20 50 72 6f 74 6f 63 6f 6c  er..    Protocol
12a0: 20 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c   Negotiation (AL
12b0: 50 4e 29 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65  PN). For example
12c0: 3a 20 3c 65 6d 3e 68 32 3c 2f 65 6d 3e 20 61 6e  : <em>h2</em> an
12d0: 64 0a 09 20 20 20 20 3c 65 6d 3e 68 74 74 70 2f  d..    <em>http/
12e0: 31 2e 31 3c 2f 65 6d 3e 2c 20 62 75 74 20 6e 6f  1.1</em>, but no
12f0: 74 20 3c 65 6d 3e 68 33 3c 2f 65 6d 3e 20 6f 72  t <em>h3</em> or
1300: 20 3c 65 6d 3e 71 75 69 63 3c 2f 65 6d 3e 2e 3c   <em>quic</em>.<
1310: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
1320: 67 3e 2d 63 61 64 69 72 3c 2f 73 74 72 6f 6e 67  g>-cadir</strong
1330: 3e 20 3c 65 6d 3e 64 69 72 3c 2f 65 6d 3e 3c 2f  > <em>dir</em></
1340: 64 74 3e 0a 09 3c 64 64 3e 53 65 74 20 74 68 65  dt>..<dd>Set the
1350: 20 43 41 20 63 65 72 74 69 66 69 63 61 74 65 73   CA certificates
1360: 20 70 61 74 68 2e 20 54 68 65 20 64 65 66 61 75   path. The defau
1370: 6c 74 20 64 69 72 65 63 74 6f 72 79 20 69 73 20  lt directory is 
1380: 70 6c 61 74 66 6f 72 6d 0a 09 20 20 20 20 73 70  platform..    sp
1390: 65 63 69 66 69 63 20 61 6e 64 20 63 61 6e 20 62  ecific and can b
13a0: 65 20 73 65 74 20 61 74 20 63 6f 6d 70 69 6c 65  e set at compile
13b0: 20 74 69 6d 65 2e 20 54 68 69 73 20 63 61 6e 20   time. This can 
13c0: 62 65 20 6f 76 65 72 72 69 64 64 65 6e 0a 09 20  be overridden.. 
13d0: 20 20 20 76 69 61 20 74 68 65 20 3c 62 3e 53 53     via the <b>SS
13e0: 4c 5f 43 45 52 54 5f 44 49 52 3c 2f 62 3e 20 65  L_CERT_DIR</b> e
13f0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
1400: 62 6c 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  ble.</dd>..<dt><
1410: 73 74 72 6f 6e 67 3e 2d 63 61 66 69 6c 65 20 3c  strong>-cafile <
1420: 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 66 69 6c 65  /strong><em>file
1430: 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  name</em></dt>..
1440: 3c 64 64 3e 53 65 74 20 74 68 65 20 63 65 72 74  <dd>Set the cert
1450: 69 66 69 63 61 74 65 20 61 75 74 68 6f 72 69 74  ificate authorit
1460: 79 20 28 43 41 29 20 63 65 72 74 69 66 69 63 61  y (CA) certifica
1470: 74 65 73 20 66 69 6c 65 2e 20 54 68 65 20 64 65  tes file. The de
1480: 66 61 75 6c 74 0a 09 20 20 20 20 69 73 20 74 68  fault..    is th
1490: 65 20 63 65 72 74 2e 70 65 6d 20 66 69 6c 65 20  e cert.pem file 
14a0: 69 6e 20 74 68 65 20 4f 70 73 6e 53 53 4c 20 64  in the OpsnSSL d
14b0: 69 72 65 63 74 6f 72 79 2e 20 54 68 69 73 20 63  irectory. This c
14c0: 61 6e 20 61 6c 73 6f 20 62 65 0a 09 20 20 20 20  an also be..    
14d0: 6f 76 65 72 72 69 64 64 65 6e 20 76 69 61 20 74  overridden via t
14e0: 68 65 20 3c 62 3e 53 53 4c 5f 43 45 52 54 5f 46  he <b>SSL_CERT_F
14f0: 49 4c 45 3c 2f 62 3e 20 65 6e 76 69 72 6f 6e 6d  ILE</b> environm
1500: 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 3c 2f 64  ent variable.</d
1510: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
1520: 2d 63 65 72 74 66 69 6c 65 3c 2f 73 74 72 6f 6e  -certfile</stron
1530: 67 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c  g> <em>filename<
1540: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53  /em></dt>..<dd>S
1550: 70 65 63 69 66 79 20 74 68 65 20 66 69 6c 65 6e  pecify the filen
1560: 61 6d 65 20 77 69 74 68 20 74 68 65 20 63 65 72  ame with the cer
1570: 74 69 66 69 63 61 74 65 20 74 6f 20 75 73 65 2e  tificate to use.
1580: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
1590: 6e 67 3e 2d 63 65 72 74 3c 2f 73 74 72 6f 6e 67  ng>-cert</strong
15a0: 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f  > <em>filename</
15b0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70  em></dt>..<dd>Sp
15c0: 65 63 69 66 79 20 74 68 65 20 63 6f 6e 74 65 6e  ecify the conten
15d0: 74 73 20 6f 66 20 61 20 63 65 72 74 69 66 69 63  ts of a certific
15e0: 61 74 65 20 74 6f 20 75 73 65 2c 20 61 73 20 61  ate to use, as a
15f0: 20 44 45 52 0a 09 20 20 20 20 65 6e 63 6f 64 65   DER..    encode
1600: 64 20 62 69 6e 61 72 79 20 76 61 6c 75 65 20 28  d binary value (
1610: 58 2e 35 30 39 20 44 45 52 29 2e 3c 2f 64 64 3e  X.509 DER).</dd>
1620: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63  ..<dt><strong>-c
1630: 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ipher</strong> <
1640: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
1650: 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66  dt>..<dd>List of
1660: 20 63 69 70 68 65 72 73 20 74 6f 20 75 73 65 2e   ciphers to use.
1670: 20 53 74 72 69 6e 67 20 69 73 20 61 20 63 6f 6c   String is a col
1680: 6f 6e 20 28 22 3a 22 29 20 73 65 70 61 72 61 74  on (":") separat
1690: 65 64 20 6c 69 73 74 0a 09 20 20 20 20 6f 66 20  ed list..    of 
16a0: 63 69 70 68 65 72 73 2e 20 43 69 70 68 65 72 73  ciphers. Ciphers
16b0: 20 63 61 6e 20 62 65 20 63 6f 6d 62 69 6e 65 64   can be combined
16c0: 0a 09 20 20 20 20 75 73 69 6e 67 20 74 68 65 20  ..    using the 
16d0: 3c 62 3e 2b 3c 2f 62 3e 20 63 68 61 72 61 63 74  <b>+</b> charact
16e0: 65 72 2e 20 50 72 65 66 69 78 65 73 20 63 61 6e  er. Prefixes can
16f0: 20 62 65 20 75 73 65 64 20 74 6f 20 70 65 72 6d   be used to perm
1700: 61 6e 65 6e 74 6c 79 0a 09 20 20 20 20 72 65 6d  anently..    rem
1710: 6f 76 65 20 28 22 21 22 29 2c 20 64 65 6c 65 74  ove ("!"), delet
1720: 65 20 28 22 2d 22 29 2c 20 6f 72 20 6d 6f 76 65  e ("-"), or move
1730: 20 61 20 63 79 70 68 65 72 20 74 6f 20 74 68 65   a cypher to the
1740: 20 65 6e 64 20 6f 66 0a 09 20 20 20 20 74 68 65   end of..    the
1750: 20 6c 69 73 74 20 28 22 2b 22 29 2e 20 4b 65 79   list ("+"). Key
1760: 77 6f 72 64 73 20 3c 62 3e 40 53 54 52 45 4e 47  words <b>@STRENG
1770: 54 48 3c 2f 62 3e 20 28 73 6f 72 74 20 62 79 20  TH</b> (sort by 
1780: 61 6c 67 6f 72 69 74 68 6d 0a 09 20 20 20 20 6b  algorithm..    k
1790: 65 79 20 6c 65 6e 67 74 68 29 2c 20 3c 62 3e 40  ey length), <b>@
17a0: 53 45 43 4c 45 56 45 4c 3d 3c 2f 62 3e 3c 69 3e  SECLEVEL=</b><i>
17b0: 6e 3c 2f 69 3e 20 28 73 65 74 20 73 65 63 75 72  n</i> (set secur
17c0: 69 74 79 20 6c 65 76 65 6c 20 74 6f 0a 09 20 20  ity level to..  
17d0: 20 20 6e 29 2c 20 61 6e 64 20 3c 62 3e 44 45 46    n), and <b>DEF
17e0: 41 55 4c 54 3c 2f 62 3e 20 28 75 73 65 20 64 65  AULT</b> (use de
17f0: 66 61 75 6c 74 20 63 69 70 68 65 72 20 6c 69 73  fault cipher lis
1800: 74 2c 20 61 74 20 73 74 61 72 74 20 6f 6e 6c 79  t, at start only
1810: 29 0a 09 20 20 20 20 63 61 6e 20 61 6c 73 6f 20  )..    can also 
1820: 62 65 20 73 70 65 63 69 66 69 65 64 2e 20 53 65  be specified. Se
1830: 65 20 4f 70 65 6e 53 53 4c 20 64 6f 63 75 6d 65  e OpenSSL docume
1840: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  ntation for the 
1850: 66 75 6c 6c 0a 09 20 20 20 20 6c 69 73 74 20 6f  full..    list o
1860: 66 20 76 61 6c 69 64 20 76 61 6c 75 65 73 2e 20  f valid values. 
1870: 28 54 4c 53 20 31 2e 32 20 61 6e 64 20 65 61 72  (TLS 1.2 and ear
1880: 6c 69 65 72 20 6f 6e 6c 79 29 3c 2f 64 64 3e 0a  lier only)</dd>.
1890: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 69  .<dt><strong>-ci
18a0: 70 68 65 72 73 75 69 74 65 73 3c 2f 73 74 72 6f  phersuites</stro
18b0: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
18c0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69  em></dt>..<dd>Li
18d0: 73 74 20 6f 66 20 63 69 70 68 65 72 20 73 75 69  st of cipher sui
18e0: 74 65 73 20 74 6f 20 75 73 65 2e 20 53 74 72 69  tes to use. Stri
18f0: 6e 67 20 69 73 20 61 20 63 6f 6c 6f 6e 20 28 22  ng is a colon ("
1900: 3a 22 29 0a 09 20 20 20 20 73 65 70 61 72 61 74  :")..    separat
1910: 65 64 20 6c 69 73 74 20 6f 66 20 63 69 70 68 65  ed list of ciphe
1920: 72 20 73 75 69 74 65 20 6e 61 6d 65 73 2e 20 28  r suite names. (
1930: 54 4c 53 20 31 2e 33 20 6f 6e 6c 79 29 3c 2f 64  TLS 1.3 only)</d
1940: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
1950: 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67  -command</strong
1960: 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f  > <em>callback</
1970: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61  em></dt>..<dd>Ca
1980: 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 74  llback command t
1990: 6f 20 69 6e 76 6f 6b 65 20 61 74 20 73 65 76 65  o invoke at seve
19a0: 72 61 6c 20 70 6f 69 6e 74 73 20 64 75 72 69 6e  ral points durin
19b0: 67 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65 2e  g the handshake.
19c0: 0a 09 20 20 20 20 54 68 69 73 20 69 73 20 75 73  ..    This is us
19d0: 65 64 20 74 6f 20 70 61 73 73 20 65 72 72 6f 72  ed to pass error
19e0: 73 20 61 6e 64 20 74 72 61 63 69 6e 67 20 69 6e  s and tracing in
19f0: 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6e 64 0a 09  formation, and..
1a00: 20 20 20 20 69 74 20 63 61 6e 20 61 6c 6c 6f 77      it can allow
1a10: 20 54 63 6c 20 73 63 72 69 70 74 73 20 74 6f 20   Tcl scripts to 
1a20: 70 65 72 66 6f 72 6d 20 74 68 65 69 72 20 6f 77  perform their ow
1a30: 6e 20 63 65 72 74 69 66 69 63 61 74 65 0a 09 20  n certificate.. 
1a40: 20 20 20 76 61 6c 69 64 61 74 69 6f 6e 20 69 6e     validation in
1a50: 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 64 65   place of the de
1a60: 66 61 75 6c 74 20 76 61 6c 69 64 61 74 69 6f 6e  fault validation
1a70: 20 70 72 6f 76 69 64 65 64 20 62 79 0a 09 20 20   provided by..  
1a80: 20 20 4f 70 65 6e 53 53 4c 2e 20 53 65 65 20 3c    OpenSSL. See <
1a90: 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42 41 43  a href="#CALLBAC
1aa0: 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42  K OPTIONS">CALLB
1ab0: 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 0a  ACK OPTIONS</a>.
1ac0: 09 20 20 20 20 66 6f 72 20 66 75 72 74 68 65 72  .    for further
1ad0: 20 64 69 73 63 75 73 73 69 6f 6e 2e 3c 2f 64 64   discussion.</dd
1ae0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
1af0: 64 68 70 61 72 61 6d 73 20 3c 2f 73 74 72 6f 6e  dhparams </stron
1b00: 67 3e 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f  g><em>filename</
1b10: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70  em></dt>..<dd>Sp
1b20: 65 63 69 66 79 20 74 68 65 20 44 69 66 66 69 65  ecify the Diffie
1b30: 2d 48 65 6c 6c 6d 61 6e 20 70 61 72 61 6d 65 74  -Hellman paramet
1b40: 65 72 73 20 66 69 6c 65 2e 3c 2f 64 64 3e 0a 09  ers file.</dd>..
1b50: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b 65 79  <dt><strong>-key
1b60: 66 69 6c 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  file</strong> <e
1b70: 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c  m>filename</em><
1b80: 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66  /dt>..<dd>Specif
1b90: 79 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65  y the private ke
1ba0: 79 20 66 69 6c 65 2e 20 28 64 65 66 61 75 6c 74  y file. (default
1bb0: 20 69 73 0a 09 20 20 20 20 76 61 6c 75 65 20 6f   is..    value o
1bc0: 66 20 2d 63 65 72 74 66 69 6c 65 29 3c 2f 64 64  f -certfile)</dd
1bd0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
1be0: 6b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  key</strong> <em
1bf0: 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f  >filename</em></
1c00: 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79  dt>..<dd>Specify
1c10: 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79   the private key
1c20: 20 74 6f 20 75 73 65 20 61 73 20 61 20 44 45 52   to use as a DER
1c30: 20 65 6e 63 6f 64 65 64 20 76 61 6c 75 65 20 28   encoded value (
1c40: 50 4b 43 53 23 31 20 44 45 52 29 3c 2f 64 64 3e  PKCS#1 DER)</dd>
1c50: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6d  ..<dt><strong>-m
1c60: 6f 64 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  odel</strong> <e
1c70: 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f  m>channel</em></
1c80: 64 74 3e 0a 09 3c 64 64 3e 46 6f 72 63 65 20 74  dt>..<dd>Force t
1c90: 68 69 73 20 63 68 61 6e 6e 65 6c 20 74 6f 20 73  his channel to s
1ca0: 68 61 72 65 20 74 68 65 20 73 61 6d 65 20 3c 65  hare the same <e
1cb0: 6d 3e 3c 73 74 72 6f 6e 67 3e 53 53 4c 5f 43 54  m><strong>SSL_CT
1cc0: 58 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 65 6d 3e 0a  X</strong></em>.
1cd0: 09 20 20 20 20 73 74 72 75 63 74 75 72 65 20 61  .    structure a
1ce0: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1cf0: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e  <em>channel</em>
1d00: 2c 20 61 6e 64 0a 09 20 20 20 20 74 68 65 72 65  , and..    there
1d10: 66 6f 72 65 20 73 68 61 72 65 20 63 61 6c 6c 62  fore share callb
1d20: 61 63 6b 73 20 65 74 63 2e 3c 2f 64 64 3e 0a 09  acks etc.</dd>..
1d30: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73  <dt><strong>-pas
1d40: 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  sword</strong> <
1d50: 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e  em>callback</em>
1d60: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62  </dt>..<dd>Callb
1d70: 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 69  ack command to i
1d80: 6e 76 6f 6b 65 20 77 68 65 6e 20 4f 70 65 6e 53  nvoke when OpenS
1d90: 53 4c 20 6e 65 65 64 73 20 74 6f 20 6f 62 74 61  SL needs to obta
1da0: 69 6e 20 61 20 70 61 73 73 77 6f 72 64 2e 0a 09  in a password...
1db0: 20 20 20 20 54 79 70 69 63 61 6c 6c 79 20 75 73      Typically us
1dc0: 65 64 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68 65  ed to unlock the
1dd0: 20 70 72 69 76 61 74 65 20 6b 65 79 20 6f 66 20   private key of 
1de0: 61 20 63 65 72 74 69 66 69 63 61 74 65 2e 20 54  a certificate. T
1df0: 68 65 0a 09 20 20 20 20 63 61 6c 6c 62 61 63 6b  he..    callback
1e00: 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 61   should return a
1e10: 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 72 65   string which re
1e20: 70 72 65 73 65 6e 74 73 20 74 68 65 20 70 61 73  presents the pas
1e30: 73 77 6f 72 64 0a 09 20 20 20 20 74 6f 20 62 65  sword..    to be
1e40: 20 75 73 65 64 2e 20 53 65 65 20 3c 61 20 68 72   used. See <a hr
1e50: 65 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50  ef="#CALLBACK OP
1e60: 54 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20  TIONS">CALLBACK 
1e70: 4f 50 54 49 4f 4e 53 3c 2f 61 3e 0a 09 20 20 20  OPTIONS</a>..   
1e80: 20 66 6f 72 20 66 75 72 74 68 65 72 20 64 69 73   for further dis
1e90: 63 75 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c  cussion.</dd>..<
1ea0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 6f 73 74  dt><strong>-post
1eb0: 5f 68 61 6e 64 73 68 61 6b 65 3c 2f 73 74 72 6f  _handshake</stro
1ec0: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d  ng> <em>bool</em
1ed0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 6c 6c 6f  ></dt>..<dd>Allo
1ee0: 77 20 70 6f 73 74 2d 68 61 6e 64 73 68 61 6b 65  w post-handshake
1ef0: 20 74 69 63 6b 65 74 20 75 70 64 61 74 65 73 2e   ticket updates.
1f00: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
1f10: 6e 67 3e 2d 72 65 71 75 65 73 74 20 3c 2f 73 74  ng>-request </st
1f20: 72 6f 6e 67 3e 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65  rong><em>bool</e
1f30: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 52 65 71  m></dt>..<dd>Req
1f40: 75 65 73 74 20 61 20 63 65 72 74 69 66 69 63 61  uest a certifica
1f50: 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64 75 72  te from peer dur
1f60: 69 6e 67 20 53 53 4c 20 68 61 6e 64 73 68 61 6b  ing SSL handshak
1f70: 65 2e 0a 09 20 20 20 20 28 64 65 66 61 75 6c 74  e...    (default
1f80: 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d   is <em>true</em
1f90: 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  >)</dd>..<dt><st
1fa0: 72 6f 6e 67 3e 2d 72 65 71 75 69 72 65 3c 2f 73  rong>-require</s
1fb0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c  trong> <em>bool<
1fc0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 52  /em></dt>..<dd>R
1fd0: 65 71 75 69 72 65 20 61 20 76 61 6c 69 64 20 63  equire a valid c
1fe0: 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20  ertificate from 
1ff0: 70 65 65 72 20 64 75 72 69 6e 67 20 53 53 4c 20  peer during SSL 
2000: 68 61 6e 64 73 68 61 6b 65 2e 0a 09 20 20 20 20  handshake...    
2010: 49 66 20 74 68 69 73 20 69 73 20 73 65 74 20 74  If this is set t
2020: 6f 20 74 72 75 65 2c 20 74 68 65 6e 20 3c 73 74  o true, then <st
2030: 72 6f 6e 67 3e 2d 72 65 71 75 65 73 74 3c 2f 73  rong>-request</s
2040: 74 72 6f 6e 67 3e 20 6d 75 73 74 0a 09 20 20 20  trong> must..   
2050: 20 61 6c 73 6f 20 62 65 20 73 65 74 20 74 6f 20   also be set to 
2060: 74 72 75 65 20 61 6e 64 20 61 20 65 69 74 68 65  true and a eithe
2070: 72 20 61 20 2d 63 61 64 69 72 2c 20 2d 63 61 66  r a -cadir, -caf
2080: 69 6c 65 2c 20 6f 72 20 70 6c 61 74 66 6f 72 6d  ile, or platform
2090: 0a 09 20 20 20 20 64 65 66 61 75 6c 74 20 6d 75  ..    default mu
20a0: 73 74 20 62 65 20 70 72 6f 76 69 64 65 64 20 69  st be provided i
20b0: 6e 20 6f 72 64 65 72 20 74 6f 20 76 61 6c 69 64  n order to valid
20c0: 61 74 65 20 61 67 61 69 6e 73 74 2e 0a 09 20 20  ate against...  
20d0: 20 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65    (default is <e
20e0: 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64  m>false</em>)</d
20f0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
2100: 2d 73 65 63 75 72 69 74 79 5f 6c 65 76 65 6c 3c  -security_level<
2110: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 69 6e 74  /strong> <em>int
2120: 65 67 65 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  eger</em></dt>..
2130: 3c 64 64 3e 53 65 74 20 73 65 63 75 72 69 74 79  <dd>Set security
2140: 20 6c 65 76 65 6c 2e 20 4d 75 73 74 20 62 65 20   level. Must be 
2150: 30 20 74 6f 20 35 2e 20 54 68 65 20 73 65 63 75  0 to 5. The secu
2160: 72 69 74 79 20 6c 65 76 65 6c 20 61 66 66 65 63  rity level affec
2170: 74 73 0a 09 20 20 20 20 74 68 65 20 63 69 70 68  ts..    the ciph
2180: 65 72 20 73 75 69 74 65 20 65 6e 63 72 79 70 74  er suite encrypt
2190: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73 2c 20  ion algorithms, 
21a0: 73 75 70 70 6f 72 74 65 64 20 45 43 43 20 63 75  supported ECC cu
21b0: 72 76 65 73 2c 0a 09 20 20 20 20 73 75 70 70 6f  rves,..    suppo
21c0: 72 74 65 64 20 73 69 67 6e 61 74 75 72 65 20 61  rted signature a
21d0: 6c 67 6f 72 69 74 68 6d 73 2c 20 44 48 20 70 61  lgorithms, DH pa
21e0: 72 61 6d 65 74 65 72 20 73 69 7a 65 73 2c 20 63  rameter sizes, c
21f0: 65 72 74 69 66 69 63 61 74 65 0a 09 20 20 20 20  ertificate..    
2200: 6b 65 79 20 73 69 7a 65 73 20 61 6e 64 20 73 69  key sizes and si
2210: 67 6e 61 74 75 72 65 20 61 6c 67 6f 72 69 74 68  gnature algorith
2220: 6d 73 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  ms. The default 
2230: 69 73 20 31 2e 0a 09 20 20 20 20 4c 65 76 65 6c  is 1...    Level
2240: 20 33 20 61 6e 64 20 68 69 67 68 65 72 20 64 69   3 and higher di
2250: 73 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f  sable support fo
2260: 72 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74  r session ticket
2270: 73 20 61 6e 64 20 6f 6e 6c 79 0a 09 20 20 20 20  s and only..    
2280: 61 63 63 65 70 74 20 63 69 70 68 65 72 20 73 75  accept cipher su
2290: 69 74 65 73 20 74 68 61 74 20 70 72 6f 76 69 64  ites that provid
22a0: 65 20 66 6f 72 77 61 72 64 20 73 65 63 72 65 63  e forward secrec
22b0: 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  y.</dd>..<dt><st
22c0: 72 6f 6e 67 3e 2d 73 65 72 76 65 72 3c 2f 73 74  rong>-server</st
22d0: 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f  rong> <em>bool</
22e0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65  em></dt>..<dd>Se
22f0: 74 20 74 6f 20 61 63 74 20 61 73 20 61 20 73 65  t to act as a se
2300: 72 76 65 72 20 61 6e 64 20 72 65 73 70 6f 6e 64  rver and respond
2310: 20 77 69 74 68 20 61 20 73 65 72 76 65 72 20 68   with a server h
2320: 61 6e 64 73 68 61 6b 65 20 77 68 65 6e 0a 09 20  andshake when.. 
2330: 20 20 20 61 20 63 6c 69 65 6e 74 20 63 6f 6e 6e     a client conn
2340: 65 63 74 73 20 61 6e 64 20 70 72 6f 76 69 64 65  ects and provide
2350: 73 20 61 20 63 6c 69 65 6e 74 20 68 61 6e 64 73  s a client hands
2360: 68 61 6b 65 2e 0a 09 20 20 20 20 28 64 65 66 61  hake...    (defa
2370: 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65  ult is <em>false
2380: 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74  </em>)</dd>..<dt
2390: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 72 76 65 72  ><strong>-server
23a0: 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  name</strong> <e
23b0: 6d 3e 68 6f 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>host</em></dt>
23c0: 0a 09 3c 64 64 3e 53 70 65 63 69 66 79 20 73 65  ..<dd>Specify se
23d0: 72 76 65 72 27 73 20 68 6f 73 74 6e 61 6d 65 2e  rver's hostname.
23e0: 20 55 73 65 64 20 74 6f 20 73 65 74 20 74 68 65   Used to set the
23f0: 20 54 4c 53 20 27 53 65 72 76 65 72 20 4e 61 6d   TLS 'Server Nam
2400: 65 0a 09 20 20 20 20 49 6e 64 69 63 61 74 69 6f  e..    Indicatio
2410: 6e 27 20 28 53 4e 49 29 20 65 78 74 65 6e 73 69  n' (SNI) extensi
2420: 6f 6e 2e 20 53 65 74 20 74 6f 20 74 68 65 20 65  on. Set to the e
2430: 78 70 65 63 74 65 64 20 73 65 72 76 65 72 6e 61  xpected serverna
2440: 6d 65 0a 09 20 20 20 20 69 6e 20 74 68 65 20 73  me..    in the s
2450: 65 72 76 65 72 27 73 20 63 65 72 74 69 66 69 63  erver's certific
2460: 61 74 65 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  ate or one of th
2470: 65 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65  e subjectAltName
2480: 0a 09 20 20 20 20 61 6c 74 65 72 6e 61 74 65 73  ..    alternates
2490: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
24a0: 6f 6e 67 3e 2d 73 65 73 73 69 6f 6e 5f 69 64 3c  ong>-session_id<
24b0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72  /strong> <em>str
24c0: 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ing</em></dt>..<
24d0: 64 64 3e 53 65 73 73 69 6f 6e 20 69 64 20 74 6f  dd>Session id to
24e0: 20 72 65 73 75 6d 65 20 73 65 73 73 69 6f 6e 2e   resume session.
24f0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
2500: 6e 67 3e 2d 73 73 6c 32 3c 2f 73 74 72 6f 6e 67  ng>-ssl2</strong
2510: 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c  > <em>bool</em><
2520: 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65  /dt>..<dd>Enable
2530: 20 75 73 65 20 6f 66 20 53 53 4c 20 76 32 2e 20   use of SSL v2. 
2540: 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e  (default is <em>
2550: 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e  false</em>)</dd>
2560: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73  ..<dt><strong>-s
2570: 73 6c 33 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d  sl3 </strong><em
2580: 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >bool</em></dt>.
2590: 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20  .<dd>Enable use 
25a0: 6f 66 20 53 53 4c 20 76 33 2e 20 28 64 65 66 61  of SSL v3. (defa
25b0: 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65  ult is <em>false
25c0: 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74  </em>)</dd>..<dt
25d0: 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31 3c 2f  >-<strong>tls1</
25e0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c  strong> <em>bool
25f0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2600: 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 54 4c  Enable use of TL
2610: 53 20 76 31 2e 20 28 64 65 66 61 75 6c 74 20 69  S v1. (default i
2620: 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29  s <em>true</em>)
2630: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72  </dd>..<dt>-<str
2640: 6f 6e 67 3e 74 6c 73 31 2e 31 3c 2f 73 74 72 6f  ong>tls1.1</stro
2650: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d  ng> <em>bool</em
2660: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62  ></dt>..<dd>Enab
2670: 6c 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31  le use of TLS v1
2680: 2e 31 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c  .1 (default is <
2690: 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64  em>true</em>)</d
26a0: 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67  d>..<dt>-<strong
26b0: 3e 74 6c 73 31 2e 32 3c 2f 73 74 72 6f 6e 67 3e  >tls1.2</strong>
26c0: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f   <em>bool</em></
26d0: 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20  dt>..<dd>Enable 
26e0: 75 73 65 20 6f 66 20 54 4c 53 20 76 31 2e 32 20  use of TLS v1.2 
26f0: 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e  (default is <em>
2700: 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a  true</em>)</dd>.
2710: 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c  .<dt>-<strong>tl
2720: 73 31 2e 33 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  s1.3</strong> <e
2730: 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>bool</em></dt>
2740: 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65  ..<dd>Enable use
2750: 20 6f 66 20 54 4c 53 20 76 31 2e 33 20 28 64 65   of TLS v1.3 (de
2760: 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75  fault is <em>tru
2770: 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64  e</em>)</dd>..<d
2780: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64  t><strong>-valid
2790: 61 74 65 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  atecommand</stro
27a0: 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b  ng> <em>callback
27b0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
27c0: 43 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64  Callback command
27d0: 20 74 6f 20 69 6e 76 6f 6b 65 20 74 6f 20 76 65   to invoke to ve
27e0: 72 69 66 79 20 6f 72 20 76 61 6c 69 64 61 74 65  rify or validate
27f0: 20 70 72 6f 74 6f 63 6f 6c 20 63 6f 6e 66 69 67   protocol config
2800: 0a 09 20 20 20 20 70 61 72 61 6d 65 74 65 72 73  ..    parameters
2810: 20 64 75 72 69 6e 67 20 74 68 65 20 70 72 6f 74   during the prot
2820: 6f 63 6f 6c 20 6e 65 67 6f 74 69 61 74 69 6f 6e  ocol negotiation
2830: 20 70 68 61 73 65 2e 20 53 65 65 0a 09 20 20 20   phase. See..   
2840: 20 3c 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42   <a href="#CALLB
2850: 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c  ACK OPTIONS">CAL
2860: 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61  LBACK OPTIONS</a
2870: 3e 0a 09 20 20 20 20 66 6f 72 20 66 75 72 74 68  >..    for furth
2880: 65 72 20 64 69 73 63 75 73 73 69 6f 6e 2e 3c 2f  er discussion.</
2890: 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f  dd>.    </dl>.</
28a0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20  blockquote>..   
28b0: 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c   <dt><a name="tl
28c0: 73 3a 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e  s::unimport"><b>
28d0: 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 20 3c 2f  tls::unimport </
28e0: 62 3e 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e  b><i>channel</i>
28f0: 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64  </a></dt>.    <d
2900: 64 3e 50 72 6f 76 69 64 65 64 20 66 6f 72 20 73  d>Provided for s
2910: 79 6d 6d 65 74 72 79 20 74 6f 20 3c 73 74 72 6f  ymmetry to <stro
2920: 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f  ng>tls::import</
2930: 73 74 72 6f 6e 67 3e 2c 20 74 68 69 73 0a 20 20  strong>, this.  
2940: 20 20 20 20 75 6e 73 74 61 63 6b 73 20 74 68 65      unstacks the
2950: 20 65 6e 63 72 79 70 74 69 6f 6e 20 6f 66 20 61   encryption of a
2960: 20 72 65 67 75 6c 61 72 20 54 63 6c 20 63 68 61   regular Tcl cha
2970: 6e 6e 65 6c 2e 20 41 6e 20 65 72 72 6f 72 0a 20  nnel. An error. 
2980: 20 20 20 20 20 69 73 20 74 68 72 6f 77 6e 20 69       is thrown i
2990: 66 20 54 4c 53 20 69 73 20 6e 6f 74 20 74 68 65  f TLS is not the
29a0: 20 74 6f 70 20 73 74 61 63 6b 65 64 20 63 68 61   top stacked cha
29b0: 6e 6e 65 6c 20 74 79 70 65 2e 3c 2f 64 64 3e 0a  nnel type.</dd>.
29c0: 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f      <dt>&nbsp;</
29d0: 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  dt>.    <dt><a n
29e0: 61 6d 65 3d 22 74 6c 73 3a 3a 68 61 6e 64 73 68  ame="tls::handsh
29f0: 61 6b 65 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73  ake"><strong>tls
2a00: 3a 3a 68 61 6e 64 73 68 61 6b 65 3c 2f 73 74 72  ::handshake</str
2a10: 6f 6e 67 3e 0a 09 3c 65 6d 3e 63 68 61 6e 6e 65  ong>..<em>channe
2a20: 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a  l</em></a></dt>.
2a30: 20 20 20 20 3c 64 64 3e 46 6f 72 63 65 73 20 68      <dd>Forces h
2a40: 61 6e 64 73 68 61 6b 65 20 74 6f 20 74 61 6b 65  andshake to take
2a50: 20 70 6c 61 63 65 2c 20 61 6e 64 20 72 65 74 75   place, and retu
2a60: 72 6e 73 20 30 20 69 66 0a 09 68 61 6e 64 73 68  rns 0 if..handsh
2a70: 61 6b 65 20 69 73 20 73 74 69 6c 6c 20 69 6e 20  ake is still in 
2a80: 70 72 6f 67 72 65 73 73 20 28 6e 6f 6e 2d 62 6c  progress (non-bl
2a90: 6f 63 6b 69 6e 67 29 2c 20 6f 72 20 31 20 69 66  ocking), or 1 if
2aa0: 0a 09 74 68 65 20 68 61 6e 64 73 68 61 6b 65 20  ..the handshake 
2ab0: 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 2e 20  was successful. 
2ac0: 49 66 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65  If the handshake
2ad0: 20 66 61 69 6c 65 64 0a 09 74 68 69 73 20 72 6f   failed..this ro
2ae0: 75 74 69 6e 65 20 77 69 6c 6c 20 74 68 72 6f 77  utine will throw
2af0: 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 64 64 3e 0a   an error.</dd>.
2b00: 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f      <dt>&nbsp;</
2b10: 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  dt>.    <dt><a n
2b20: 61 6d 65 3d 22 74 6c 73 3a 3a 73 74 61 74 75 73  ame="tls::status
2b30: 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73  "><strong>tls::s
2b40: 74 61 74 75 73 3c 2f 73 74 72 6f 6e 67 3e 0a 20  tatus</strong>. 
2b50: 20 20 20 3c 65 6d 3e 3f 3c 2f 65 6d 3e 3c 62 3e     <em>?</em><b>
2b60: 2d 6c 6f 63 61 6c 3c 2f 62 3e 3c 65 6d 3e 3f 20  -local</b><em>? 
2b70: 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e  channel</em></a>
2b80: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65  </dt>.    <dd>Re
2b90: 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65 6e  turns the curren
2ba0: 74 20 73 74 61 74 75 73 20 6f 66 20 61 6e 20 53  t status of an S
2bb0: 53 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 65 20  SL channel. The 
2bc0: 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69 73 74  result is a list
2bd0: 0a 09 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70  ..of key-value p
2be0: 61 69 72 73 20 64 65 73 63 72 69 62 69 6e 67 20  airs describing 
2bf0: 74 68 65 20 53 53 4c 2c 20 63 65 72 74 69 66 69  the SSL, certifi
2c00: 63 61 74 65 2c 20 61 6e 64 20 63 65 72 74 69 66  cate, and certif
2c10: 69 63 61 74 65 0a 09 76 65 72 69 66 69 63 61 74  icate..verificat
2c20: 69 6f 6e 20 73 74 61 74 75 73 2e 20 49 66 20 74  ion status. If t
2c30: 68 65 20 53 53 4c 20 68 61 6e 64 73 68 61 6b 65  he SSL handshake
2c40: 20 68 61 73 20 6e 6f 74 20 79 65 74 20 63 6f 6d   has not yet com
2c50: 70 6c 65 74 65 64 2c 0a 09 61 6e 20 65 6d 70 74  pleted,..an empt
2c60: 79 20 6c 69 73 74 20 69 73 20 72 65 74 75 72 6e  y list is return
2c70: 65 64 2e 20 49 66 20 3c 62 3e 2d 6c 6f 63 61 6c  ed. If <b>-local
2c80: 3c 2f 62 3e 20 69 73 20 73 70 65 63 69 66 69 65  </b> is specifie
2c90: 64 2c 20 74 68 65 6e 20 74 68 65 0a 09 6c 6f 63  d, then the..loc
2ca0: 61 6c 20 63 65 72 74 69 66 69 63 61 74 65 20 69  al certificate i
2cb0: 73 20 75 73 65 64 2e 3c 2f 64 64 3e 0a 3c 62 6c  s used.</dd>.<bl
2cc0: 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c 62 3e 53 53  ockquote>..<b>SS
2cd0: 4c 20 53 74 61 74 75 73 3c 2f 62 3e 0a 20 20 20  L Status</b>.   
2ce0: 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f   <dl>..<dt><stro
2cf0: 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e  ng>alpn</strong>
2d00: 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65   <em>protocol</e
2d10: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
2d20: 20 70 72 6f 74 6f 63 6f 6c 20 73 65 6c 65 63 74   protocol select
2d30: 65 64 20 61 66 74 65 72 20 41 70 70 6c 69 63 61  ed after Applica
2d40: 74 69 6f 6e 2d 4c 61 79 65 72 20 50 72 6f 74 6f  tion-Layer Proto
2d50: 63 6f 6c 0a 09 20 20 20 20 4e 65 67 6f 74 69 61  col..    Negotia
2d60: 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 3c 2f 64 64  tion (ALPN).</dd
2d70: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63  >..<dt><strong>c
2d80: 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ipher</strong> <
2d90: 65 6d 3e 63 69 70 68 65 72 3c 2f 65 6d 3e 3c 2f  em>cipher</em></
2da0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 63 75 72  dt>..<dd>The cur
2db0: 72 65 6e 74 20 63 69 70 68 65 72 20 69 6e 20 75  rent cipher in u
2dc0: 73 65 20 62 65 74 77 65 65 6e 20 66 6f 72 20 74  se between for t
2dd0: 68 65 20 63 68 61 6e 6e 65 6c 2e 3c 2f 64 64 3e  he channel.</dd>
2de0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 65  ..<dt><strong>pe
2df0: 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20  ername</strong> 
2e00: 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64  <em>name</em></d
2e10: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 65 65 72  t>..<dd>The peer
2e20: 6e 61 6d 65 20 66 72 6f 6d 20 74 68 65 20 63 65  name from the ce
2e30: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
2e40: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 72 6f  .<dt><strong>pro
2e50: 74 6f 63 6f 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c  tocol</strong> <
2e60: 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c  em>version</em><
2e70: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 72  /dt>..<dd>The pr
2e80: 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 20 75  otocol version u
2e90: 73 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  sed for the conn
2ea0: 65 63 74 69 6f 6e 3a 0a 09 20 20 20 20 53 53 4c  ection:..    SSL
2eb0: 32 2c 20 53 53 4c 33 2c 20 54 4c 53 31 2c 20 54  2, SSL3, TLS1, T
2ec0: 4c 53 31 2e 31 2c 20 54 4c 53 31 2e 32 2c 20 54  LS1.1, TLS1.2, T
2ed0: 4c 53 31 2e 33 2c 20 6f 72 20 75 6e 6b 6e 6f 77  LS1.3, or unknow
2ee0: 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  n.</dd>..<dt><st
2ef0: 72 6f 6e 67 3e 73 62 69 74 73 3c 2f 73 74 72 6f  rong>sbits</stro
2f00: 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f  ng> <em>n</em></
2f10: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 75 6d  dt>..<dd>The num
2f20: 62 65 72 20 6f 66 20 62 69 74 73 20 75 73 65 64  ber of bits used
2f30: 20 66 6f 72 20 74 68 65 20 73 65 73 73 69 6f 6e   for the session
2f40: 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e   key.</dd>..<dt>
2f50: 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72  <strong>signatur
2f60: 65 48 61 73 68 41 6c 67 6f 72 69 74 68 6d 3c 2f  eHashAlgorithm</
2f70: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f  strong> <em>algo
2f80: 72 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  rithm</em></dt>.
2f90: 09 3c 64 64 3e 54 68 65 20 73 69 67 6e 61 74 75  .<dd>The signatu
2fa0: 72 65 20 68 61 73 68 20 61 6c 67 6f 72 69 74 68  re hash algorith
2fb0: 6d 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  m.</dd>..<dt><st
2fc0: 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 54 79  rong>signatureTy
2fd0: 70 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  pe</strong> <em>
2fe0: 74 79 70 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  type</em></dt>..
2ff0: 3c 64 64 3e 54 68 65 20 73 69 67 6e 61 74 75 72  <dd>The signatur
3000: 65 20 74 79 70 65 20 76 61 6c 75 65 2e 3c 2f 64  e type value.</d
3010: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
3020: 76 65 72 69 66 79 44 65 70 74 68 3c 2f 73 74 72  verifyDepth</str
3030: 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c  ong> <em>n</em><
3040: 2f 64 74 3e 0a 09 3c 64 64 3e 4d 61 78 69 6d 75  /dt>..<dd>Maximu
3050: 6d 20 64 65 70 74 68 20 66 6f 72 20 74 68 65 20  m depth for the 
3060: 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69  certificate chai
3070: 6e 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2e 0a  n verification..
3080: 09 20 20 20 20 44 65 66 61 75 6c 74 20 69 73 20  .    Default is 
3090: 2d 31 2c 20 74 6f 20 63 68 65 63 6b 20 61 6c 6c  -1, to check all
30a0: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
30b0: 6f 6e 67 3e 76 65 72 69 66 79 4d 6f 64 65 3c 2f  ong>verifyMode</
30c0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74  strong> <em>list
30d0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
30e0: 4c 69 73 74 20 6f 66 20 63 65 72 74 69 66 69 63  List of certific
30f0: 61 74 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e  ate verification
3100: 20 6d 6f 64 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64   modes.</dd>..<d
3110: 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66 79  t><strong>verify
3120: 52 65 73 75 6c 74 3c 2f 73 74 72 6f 6e 67 3e 20  Result</strong> 
3130: 3c 65 6d 3e 72 65 73 75 6c 74 3c 2f 65 6d 3e 3c  <em>result</em><
3140: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66  /dt>..<dd>Certif
3150: 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74 69  icate verificati
3160: 6f 6e 20 72 65 73 75 6c 74 2e 3c 2f 64 64 3e 0a  on result.</dd>.
3170: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 61 5f  .<dt><strong>ca_
3180: 6e 61 6d 65 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  names</strong> <
3190: 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74  em>list</em></dt
31a0: 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 74  >..<dd>List of t
31b0: 68 65 20 43 65 72 74 69 66 69 63 61 74 65 20 41  he Certificate A
31c0: 75 74 68 6f 72 69 74 69 65 73 20 75 73 65 64 20  uthorities used 
31d0: 74 6f 20 63 72 65 61 74 65 20 74 68 65 20 63 65  to create the ce
31e0: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
31f0: 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63      </dl>.</bloc
3200: 6b 71 75 6f 74 65 3e 0a 3c 62 6c 6f 63 6b 71 75  kquote>.<blockqu
3210: 6f 74 65 3e 0a 09 3c 62 3e 43 65 72 74 69 66 69  ote>..<b>Certifi
3220: 63 61 74 65 20 53 74 61 74 75 73 3c 2f 62 3e 0a  cate Status</b>.
3230: 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73      <dl>..<dt><s
3240: 74 72 6f 6e 67 3e 61 6c 6c 3c 2f 73 74 72 6f 6e  trong>all</stron
3250: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
3260: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 44 75 6d  m></dt>..<dd>Dum
3270: 70 20 6f 66 20 61 6c 6c 20 63 65 72 74 69 66 69  p of all certifi
3280: 63 61 74 65 20 69 6e 66 6f 2e 3c 2f 64 64 3e 0a  cate info.</dd>.
3290: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 76 65  ..<dt><strong>ve
32a0: 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c  rsion</strong> <
32b0: 65 6d 3e 76 61 6c 75 65 3c 2f 65 6d 3e 3c 2f 64  em>value</em></d
32c0: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 63 65 72 74  t>..<dd>The cert
32d0: 69 66 69 63 61 74 65 20 76 65 72 73 69 6f 6e 2e  ificate version.
32e0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
32f0: 6e 67 3e 73 65 72 69 61 6c 4e 75 6d 62 65 72 3c  ng>serialNumber<
3300: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f  /strong> <em>n</
3310: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3320: 65 20 73 65 72 69 61 6c 20 6e 75 6d 62 65 72 20  e serial number 
3330: 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61  of the certifica
3340: 74 65 20 61 73 20 61 20 68 65 78 20 73 74 72 69  te as a hex stri
3350: 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ng.</dd>..<dt><s
3360: 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 3c  trong>signature<
3370: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67  /strong> <em>alg
3380: 6f 72 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e  orithm</em></dt>
3390: 0a 09 3c 64 64 3e 43 69 70 68 65 72 20 61 6c 67  ..<dd>Cipher alg
33a0: 6f 72 69 74 68 6d 20 75 73 65 64 20 66 6f 72 20  orithm used for 
33b0: 63 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e  certificate sign
33c0: 61 74 75 72 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ature.</dd>..<dt
33d0: 3e 3c 73 74 72 6f 6e 67 3e 69 73 73 75 65 72 3c  ><strong>issuer<
33e0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 6e 3c  /strong> <em>dn<
33f0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
3400: 68 65 20 64 69 73 74 69 6e 67 75 69 73 68 65 64  he distinguished
3410: 20 6e 61 6d 65 20 28 44 4e 29 20 6f 66 20 74 68   name (DN) of th
3420: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73  e certificate is
3430: 73 75 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  suer.</dd>..<dt>
3440: 3c 73 74 72 6f 6e 67 3e 6e 6f 74 42 65 66 6f 72  <strong>notBefor
3450: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64  e</strong> <em>d
3460: 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ate</em></dt>..<
3470: 64 64 3e 54 68 65 20 62 65 67 69 6e 20 64 61 74  dd>The begin dat
3480: 65 20 66 6f 72 20 74 68 65 20 76 61 6c 69 64 69  e for the validi
3490: 74 79 20 6f 66 20 74 68 65 20 63 65 72 74 69 66  ty of the certif
34a0: 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74  icate.</dd>..<dt
34b0: 3e 3c 73 74 72 6f 6e 67 3e 6e 6f 74 41 66 74 65  ><strong>notAfte
34c0: 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64  r</strong> <em>d
34d0: 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ate</em></dt>..<
34e0: 64 64 3e 54 68 65 20 65 78 70 69 72 61 74 69 6f  dd>The expiratio
34f0: 6e 20 64 61 74 65 20 66 6f 72 20 74 68 65 20 63  n date for the c
3500: 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e  ertificate.</dd>
3510: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 75  ..<dt><strong>su
3520: 62 6a 65 63 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c  bject</strong> <
3530: 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  em>dn</em></dt>.
3540: 09 3c 64 64 3e 54 68 65 20 64 69 73 74 69 6e 67  .<dd>The disting
3550: 75 69 73 68 65 64 20 6e 61 6d 65 20 28 44 4e 29  uished name (DN)
3560: 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63   of the certific
3570: 61 74 65 20 73 75 62 6a 65 63 74 2e 0a 09 20 20  ate subject...  
3580: 20 20 46 69 65 6c 64 73 20 69 6e 63 6c 75 64 65    Fields include
3590: 3a 20 43 6f 6d 6d 6f 6e 20 4e 61 6d 65 20 28 43  : Common Name (C
35a0: 4e 29 2c 20 4f 72 67 61 6e 69 7a 61 74 69 6f 6e  N), Organization
35b0: 20 28 4f 29 2c 20 4c 6f 63 61 6c 69 74 79 0a 09   (O), Locality..
35c0: 20 20 20 20 6f 72 20 43 69 74 79 20 28 4c 29 2c      or City (L),
35d0: 20 53 74 61 74 65 20 6f 72 20 50 72 6f 76 69 6e   State or Provin
35e0: 63 65 20 28 53 29 2c 20 61 6e 64 20 43 6f 75 6e  ce (S), and Coun
35f0: 74 72 79 20 4e 61 6d 65 20 28 43 29 2e 3c 2f 64  try Name (C).</d
3600: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
3610: 69 73 73 75 65 72 55 6e 69 71 75 65 49 44 3c 2f  issuerUniqueID</
3620: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69  strong> <em>stri
3630: 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ng</em></dt>..<d
3640: 64 3e 54 68 65 20 69 73 73 75 65 72 20 75 6e 69  d>The issuer uni
3650: 71 75 65 20 69 64 2e 3c 2f 64 64 3e 0a 09 3c 64  que id.</dd>..<d
3660: 74 3e 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63  t><strong>subjec
3670: 74 55 6e 69 71 75 65 49 44 3c 2f 73 74 72 6f 6e  tUniqueID</stron
3680: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
3690: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
36a0: 20 73 75 62 6a 65 63 74 20 75 6e 69 71 75 65 20   subject unique 
36b0: 69 64 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74 3e 3c  id.</dd>...<dt><
36c0: 73 74 72 6f 6e 67 3e 6e 75 6d 5f 65 78 74 65 6e  strong>num_exten
36d0: 73 69 6f 6e 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  sions</strong> <
36e0: 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  em>n</em></dt>..
36f0: 3c 64 64 3e 4e 75 6d 62 65 72 20 6f 66 20 63 65  <dd>Number of ce
3700: 72 74 69 66 69 63 61 74 65 20 65 78 74 65 6e 73  rtificate extens
3710: 69 6f 6e 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  ions.</dd>..<dt>
3720: 3c 73 74 72 6f 6e 67 3e 65 78 74 65 6e 73 69 6f  <strong>extensio
3730: 6e 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ns</strong> <em>
3740: 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  list</em></dt>..
3750: 3c 64 64 3e 4c 69 73 74 20 6f 66 20 63 65 72 74  <dd>List of cert
3760: 69 66 69 63 61 74 65 20 65 78 74 65 6e 73 69 6f  ificate extensio
3770: 6e 20 6e 61 6d 65 73 2e 3c 2f 64 64 3e 0a 09 3c  n names.</dd>..<
3780: 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 75 74 68 6f  dt><strong>autho
3790: 72 69 74 79 4b 65 79 49 64 65 6e 74 69 66 69 65  rityKeyIdentifie
37a0: 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73  r</strong> <em>s
37b0: 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  tring</em></dt>.
37c0: 09 3c 64 64 3e 28 41 4b 49 29 20 4b 65 79 20 69  .<dd>(AKI) Key i
37d0: 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65  dentifier of the
37e0: 20 49 73 73 75 69 6e 67 20 43 41 20 63 65 72 74   Issuing CA cert
37f0: 69 66 69 63 61 74 65 20 74 68 61 74 20 73 69 67  ificate that sig
3800: 6e 65 64 0a 09 20 20 20 20 74 68 65 20 53 53 4c  ned..    the SSL
3810: 20 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20   certificate as 
3820: 61 20 68 65 78 20 73 74 72 69 6e 67 2e 20 54 68  a hex string. Th
3830: 69 73 20 76 61 6c 75 65 20 6d 61 74 63 68 65 73  is value matches
3840: 20 74 68 65 20 53 4b 49 0a 09 20 20 20 20 76 61   the SKI..    va
3850: 6c 75 65 20 6f 66 20 74 68 65 20 49 6e 74 65 72  lue of the Inter
3860: 6d 65 64 69 61 74 65 20 43 41 20 63 65 72 74 69  mediate CA certi
3870: 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64  ficate.</dd>..<d
3880: 74 3e 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63  t><strong>subjec
3890: 74 4b 65 79 49 64 65 6e 74 69 66 69 65 72 3c 2f  tKeyIdentifier</
38a0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69  strong> <em>stri
38b0: 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ng</em></dt>..<d
38c0: 64 3e 28 53 4b 49 29 20 48 61 73 68 20 6f 66 20  d>(SKI) Hash of 
38d0: 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 69  the public key i
38e0: 6e 73 69 64 65 20 74 68 65 20 63 65 72 74 69 66  nside the certif
38f0: 69 63 61 74 65 20 61 73 20 61 20 68 65 78 0a 09  icate as a hex..
3900: 20 20 20 73 74 72 69 6e 67 2e 20 55 73 65 64 20     string. Used 
3910: 74 6f 20 69 64 65 6e 74 69 66 79 20 63 65 72 74  to identify cert
3920: 69 66 69 63 61 74 65 73 20 74 68 61 74 20 63 6f  ificates that co
3930: 6e 74 61 69 6e 20 61 20 70 61 72 74 69 63 75 6c  ntain a particul
3940: 61 72 0a 09 20 20 20 70 75 62 6c 69 63 20 6b 65  ar..   public ke
3950: 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  y.</dd>..<dt><st
3960: 72 6f 6e 67 3e 73 75 62 6a 65 63 74 41 6c 74 4e  rong>subjectAltN
3970: 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ame</strong> <em
3980: 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >list</em></dt>.
3990: 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 61 6c 6c  .<dd>List of all
39a0: 20 6f 66 20 74 68 65 20 61 6c 74 65 72 6e 61 74   of the alternat
39b0: 69 76 65 20 64 6f 6d 61 69 6e 20 6e 61 6d 65 73  ive domain names
39c0: 2c 20 73 75 62 20 64 6f 6d 61 69 6e 73 2c 0a 09  , sub domains,..
39d0: 20 20 20 20 61 6e 64 20 49 50 20 61 64 64 72 65      and IP addre
39e0: 73 73 65 73 20 74 68 61 74 20 61 72 65 20 73 65  sses that are se
39f0: 63 75 72 65 64 20 62 79 20 74 68 65 20 63 65 72  cured by the cer
3a00: 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a 09  tificate.</dd>..
3a10: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6f 63 73 70  <dt><strong>ocsp
3a20: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69  </strong> <em>li
3a30: 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  st</em></dt>..<d
3a40: 64 3e 4c 69 73 74 20 6f 66 20 61 6c 6c 20 4f 6e  d>List of all On
3a50: 6c 69 6e 65 20 43 65 72 74 69 66 69 63 61 74 65  line Certificate
3a60: 20 53 74 61 74 75 73 20 50 72 6f 74 6f 63 6f 6c   Status Protocol
3a70: 20 28 4f 43 53 50 29 20 55 52 4c 73 2e 3c 2f 64   (OCSP) URLs.</d
3a80: 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  d>...<dt><strong
3a90: 3e 63 65 72 74 69 66 69 63 61 74 65 3c 2f 73 74  >certificate</st
3aa0: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 65 72 74 3c 2f  rong> <em>cert</
3ab0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3ac0: 65 20 50 45 4d 20 65 6e 63 6f 64 65 64 20 63 65  e PEM encoded ce
3ad0: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
3ae0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69  ..<dt><strong>si
3af0: 67 6e 61 74 75 72 65 41 6c 67 6f 72 69 74 68 6d  gnatureAlgorithm
3b00: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c  </strong> <em>al
3b10: 67 6f 72 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74  gorithm</em></dt
3b20: 3e 0a 09 3c 64 64 3e 43 69 70 68 65 72 20 61 6c  >..<dd>Cipher al
3b30: 67 6f 72 69 74 68 6d 20 75 73 65 64 20 66 6f 72  gorithm used for
3b40: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
3b50: 20 73 69 67 6e 61 74 75 72 65 2e 3c 2f 64 64 3e   signature.</dd>
3b60: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69  ..<dt><strong>si
3b70: 67 6e 61 74 75 72 65 56 61 6c 75 65 3c 2f 73 74  gnatureValue</st
3b80: 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67  rong> <em>string
3b90: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3ba0: 43 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e  Certificate sign
3bb0: 61 74 75 72 65 20 61 73 20 61 20 68 65 78 20 73  ature as a hex s
3bc0: 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74  tring.</dd>..<dt
3bd0: 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75  ><strong>signatu
3be0: 72 65 44 69 67 65 73 74 3c 2f 73 74 72 6f 6e 67  reDigest</strong
3bf0: 3e 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65  > <em>version</e
3c00: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72  m></dt>..<dd>Cer
3c10: 74 69 66 69 63 61 74 65 20 73 69 67 6e 69 6e 67  tificate signing
3c20: 20 64 69 67 65 73 74 20 61 73 20 61 20 68 65 78   digest as a hex
3c30: 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c   string.</dd>..<
3c40: 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 75 62 6c 69  dt><strong>publi
3c50: 63 4b 65 79 41 6c 67 6f 72 69 74 68 6d 3c 2f 73  cKeyAlgorithm</s
3c60: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72  trong> <em>algor
3c70: 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ithm</em></dt>..
3c80: 3c 64 64 3e 43 65 72 74 69 66 69 63 61 74 65 20  <dd>Certificate 
3c90: 73 69 67 6e 61 74 75 72 65 20 70 75 62 6c 69 63  signature public
3ca0: 20 6b 65 79 20 61 6c 67 6f 72 69 74 68 6d 2e 3c   key algorithm.<
3cb0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
3cc0: 67 3e 70 75 62 6c 69 63 4b 65 79 3c 2f 73 74 72  g>publicKey</str
3cd0: 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c  ong> <em>string<
3ce0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43  /em></dt>..<dd>C
3cf0: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61  ertificate signa
3d00: 74 75 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20  ture public key 
3d10: 61 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e  as a hex string.
3d20: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
3d30: 6e 67 3e 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e  ng>bits</strong>
3d40: 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e   <em>n</em></dt>
3d50: 0a 09 3c 64 64 3e 4e 75 6d 62 65 72 20 6f 66 20  ..<dd>Number of 
3d60: 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 63 65  bits used for ce
3d70: 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 74  rtificate signat
3d80: 75 72 65 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c  ure key.</dd>..<
3d90: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 6c 66 5f  dt><strong>self_
3da0: 73 69 67 6e 65 64 3c 2f 73 74 72 6f 6e 67 3e 20  signed</strong> 
3db0: 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e  <em>boolean</em>
3dc0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68  </dt>..<dd>Wheth
3dd0: 65 72 20 74 68 65 20 63 65 72 74 69 66 69 63 61  er the certifica
3de0: 74 65 20 73 69 67 6e 61 74 75 72 65 20 69 73 20  te signature is 
3df0: 73 65 6c 66 20 73 69 67 6e 65 64 2e 3c 2f 64 64  self signed.</dd
3e00: 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  >...<dt><strong>
3e10: 73 68 61 31 5f 68 61 73 68 3c 2f 73 74 72 6f 6e  sha1_hash</stron
3e20: 67 3e 20 3c 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e  g> <em>hash</em>
3e30: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 53  </dt>..<dd>The S
3e40: 48 41 31 20 68 61 73 68 20 6f 66 20 74 68 65 20  HA1 hash of the 
3e50: 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20 61  certificate as a
3e60: 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64   hex string.</dd
3e70: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
3e80: 68 61 32 35 36 5f 68 61 73 68 3c 2f 73 74 72 6f  ha256_hash</stro
3e90: 6e 67 3e 20 3c 65 6d 3e 68 61 73 68 3c 2f 65 6d  ng> <em>hash</em
3ea0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
3eb0: 53 48 41 32 35 36 20 68 61 73 68 20 6f 66 20 74  SHA256 hash of t
3ec0: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 61  he certificate a
3ed0: 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e 3c  s a hex string.<
3ee0: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c  /dd>.    </dl>.<
3ef0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20  /blockquote>..  
3f00: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
3f10: 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  ls::connection">
3f20: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 6f 6e  <strong>tls::con
3f30: 6e 65 63 74 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e  nection</strong>
3f40: 0a 20 20 20 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c  .    <em>channel
3f50: 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  </em></a></dt>. 
3f60: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 74     <dd>Returns t
3f70: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6e 6e 65  he current conne
3f80: 63 74 69 6f 6e 20 73 74 61 74 75 73 20 6f 66 20  ction status of 
3f90: 61 6e 20 53 53 4c 20 63 68 61 6e 6e 65 6c 2e 20  an SSL channel. 
3fa0: 54 68 65 0a 09 72 65 73 75 6c 74 20 69 73 20 61  The..result is a
3fb0: 20 6c 69 73 74 20 6f 66 20 6b 65 79 2d 76 61 6c   list of key-val
3fc0: 75 65 20 70 61 69 72 73 20 64 65 73 63 72 69 62  ue pairs describ
3fd0: 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ing the connecti
3fe0: 6f 6e 2e 3c 2f 64 64 3e 0a 3c 62 6c 6f 63 6b 71  on.</dd>.<blockq
3ff0: 75 6f 74 65 3e 0a 09 3c 62 3e 53 53 4c 20 53 74  uote>..<b>SSL St
4000: 61 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c  atus</b>.    <dl
4010: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
4020: 74 61 74 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  tate</strong> <e
4030: 6d 3e 73 74 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74  m>state</em></dt
4040: 3e 0a 09 3c 64 64 3e 53 74 61 74 65 20 6f 66 20  >..<dd>State of 
4050: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c  the connection.<
4060: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
4070: 67 3e 73 65 72 76 65 72 6e 61 6d 65 3c 2f 73 74  g>servername</st
4080: 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f  rong> <em>name</
4090: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
40a0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f  e name of the co
40b0: 6e 6e 65 63 74 65 64 20 74 6f 20 73 65 72 76 65  nnected to serve
40c0: 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  r.</dd>..<dt><st
40d0: 72 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 73  rong>protocol</s
40e0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72 73 69  trong> <em>versi
40f0: 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  on</em></dt>..<d
4100: 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20 76  d>The protocol v
4110: 65 72 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20  ersion used for 
4120: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a 0a  the connection:.
4130: 09 20 20 20 20 53 53 4c 32 2c 20 53 53 4c 33 2c  .    SSL2, SSL3,
4140: 20 54 4c 53 31 2c 20 54 4c 53 31 2e 31 2c 20 54   TLS1, TLS1.1, T
4150: 4c 53 31 2e 32 2c 20 54 4c 53 31 2e 33 2c 20 6f  LS1.2, TLS1.3, o
4160: 72 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64 64 3e 0a  r unknown.</dd>.
4170: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 72 65 6e  .<dt><strong>ren
4180: 65 67 6f 74 69 61 74 69 6f 6e 5f 61 6c 6c 6f 77  egotiation_allow
4190: 65 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ed</strong> <em>
41a0: 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74  boolean</em></dt
41b0: 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20 70  >..<dd>Whether p
41c0: 72 6f 74 6f 63 6f 6c 20 72 65 6e 65 67 6f 74 69  rotocol renegoti
41d0: 61 74 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74  ation is support
41e0: 65 64 20 6f 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a  ed or not.</dd>.
41f0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 63  .<dt><strong>sec
4200: 75 72 69 74 79 5f 6c 65 76 65 6c 3c 2f 73 74 72  urity_level</str
4210: 6f 6e 67 3e 20 3c 65 6d 3e 6c 65 76 65 6c 3c 2f  ong> <em>level</
4220: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
4230: 65 20 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c  e security level
4240: 20 75 73 65 64 20 66 6f 72 20 73 65 6c 65 63 74   used for select
4250: 69 6f 6e 20 6f 66 20 63 69 70 68 65 72 73 2c 20  ion of ciphers, 
4260: 6b 65 79 20 73 69 7a 65 2c 20 65 74 63 2e 3c 2f  key size, etc.</
4270: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4280: 3e 73 65 73 73 69 6f 6e 5f 72 65 75 73 65 64 3c  >session_reused<
4290: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
42a0: 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  lean</em></dt>..
42b0: 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 65 20  <dd>Whether the 
42c0: 73 65 73 73 69 6f 6e 20 68 61 73 20 62 65 65 6e  session has been
42d0: 20 72 65 75 73 65 64 20 6f 72 20 6e 6f 74 2e 3c   reused or not.<
42e0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
42f0: 67 3e 69 73 5f 73 65 72 76 65 72 3c 2f 73 74 72  g>is_server</str
4300: 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e  ong> <em>boolean
4310: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4320: 57 68 65 74 68 65 72 20 74 68 65 20 63 6f 6e 6e  Whether the conn
4330: 65 63 74 69 6f 6e 20 69 73 20 63 6f 6e 66 69 67  ection is config
4340: 75 72 65 64 20 61 73 20 61 20 73 65 72 76 65 72  ured as a server
4350: 20 28 31 29 20 6f 72 20 63 6c 69 65 6e 74 20 28   (1) or client (
4360: 30 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  0).</dd>..<dt><s
4370: 74 72 6f 6e 67 3e 63 6f 6d 70 72 65 73 73 69 6f  trong>compressio
4380: 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6d  n</strong> <em>m
4390: 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ode</em></dt>..<
43a0: 64 64 3e 43 6f 6d 70 72 65 73 73 69 6f 6e 20 6d  dd>Compression m
43b0: 65 74 68 6f 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ethod.</dd>..<dt
43c0: 3e 3c 73 74 72 6f 6e 67 3e 65 78 70 61 6e 73 69  ><strong>expansi
43d0: 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  on</strong> <em>
43e0: 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  mode</em></dt>..
43f0: 3c 64 64 3e 45 78 70 61 6e 73 69 6f 6e 20 6d 65  <dd>Expansion me
4400: 74 68 6f 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  thod.</dd>..<dt>
4410: 3c 73 74 72 6f 6e 67 3e 63 61 4c 69 73 74 3c 2f  <strong>caList</
4420: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74  strong> <em>list
4430: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4440: 4c 69 73 74 20 6f 66 20 43 65 72 74 69 66 69 63  List of Certific
4450: 61 74 65 20 41 75 74 68 6f 72 69 74 69 65 73 20  ate Authorities 
4460: 28 43 41 29 20 66 6f 72 20 58 2e 35 30 39 20 63  (CA) for X.509 c
4470: 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e  ertificate.</dd>
4480: 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f  .    </dl>.</blo
4490: 63 6b 71 75 6f 74 65 3e 0a 3c 62 6c 6f 63 6b 71  ckquote>.<blockq
44a0: 75 6f 74 65 3e 0a 09 3c 62 3e 43 69 70 68 65 72  uote>..<b>Cipher
44b0: 20 49 6e 66 6f 3c 2f 62 3e 0a 20 20 20 20 3c 64   Info</b>.    <d
44c0: 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  l>..<dt><strong>
44d0: 63 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  cipher</strong> 
44e0: 3c 65 6d 3e 63 69 70 68 65 72 3c 2f 65 6d 3e 3c  <em>cipher</em><
44f0: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 63 75  /dt>..<dd>The cu
4500: 72 72 65 6e 74 20 63 69 70 68 65 72 20 69 6e 20  rrent cipher in 
4510: 75 73 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  use for the conn
4520: 65 63 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64  ection.</dd>..<d
4530: 74 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 6e 64 61  t><strong>standa
4540: 72 64 5f 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e  rd_name</strong>
4550: 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f   <em>name</em></
4560: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 74 61  dt>..<dd>The sta
4570: 6e 64 61 72 64 20 52 46 43 20 6e 61 6d 65 20 6f  ndard RFC name o
4580: 66 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09  f cipher.</dd>..
4590: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 67 6f  <dt><strong>algo
45a0: 72 69 74 68 6d 5f 62 69 74 73 3c 2f 73 74 72 6f  rithm_bits</stro
45b0: 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f  ng> <em>n</em></
45c0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 75 6d  dt>..<dd>The num
45d0: 62 65 72 20 6f 66 20 70 72 6f 63 65 73 73 65 64  ber of processed
45e0: 20 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 63   bits used for c
45f0: 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ipher.</dd>..<dt
4600: 3e 3c 73 74 72 6f 6e 67 3e 73 65 63 72 65 74 5f  ><strong>secret_
4610: 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  bits</strong> <e
4620: 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  m>n</em></dt>..<
4630: 64 64 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  dd>The number of
4640: 20 73 65 63 72 65 74 20 62 69 74 73 20 75 73 65   secret bits use
4650: 64 20 66 6f 72 20 63 69 70 68 65 72 2e 3c 2f 64  d for cipher.</d
4660: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
4670: 6d 69 6e 5f 76 65 72 73 69 6f 6e 3c 2f 73 74 72  min_version</str
4680: 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72 73 69 6f 6e  ong> <em>version
4690: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
46a0: 54 68 65 20 6d 69 6e 69 6d 75 6d 20 70 72 6f 74  The minimum prot
46b0: 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 20 66 6f 72  ocol version for
46c0: 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c   cipher.</dd>..<
46d0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65  dt><strong>ciphe
46e0: 72 5f 69 73 5f 61 65 61 64 3c 2f 73 74 72 6f 6e  r_is_aead</stron
46f0: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f  g> <em>boolean</
4700: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68  em></dt>..<dd>Wh
4710: 65 74 68 65 72 20 74 68 65 20 63 69 70 68 65 72  ether the cipher
4720: 20 69 73 20 41 75 74 68 65 6e 74 69 63 61 74 65   is Authenticate
4730: 64 20 45 6e 63 72 79 70 74 69 6f 6e 20 77 69 74  d Encryption wit
4740: 68 0a 09 41 73 73 6f 63 69 61 74 65 64 20 44 61  h..Associated Da
4750: 74 61 20 28 41 45 41 44 29 2e 3c 2f 64 64 3e 0a  ta (AEAD).</dd>.
4760: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70  .<dt><strong>cip
4770: 68 65 72 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e 20  her_id</strong> 
4780: 3c 65 6d 3e 69 64 3c 2f 65 6d 3e 3c 2f 64 74 3e  <em>id</em></dt>
4790: 0a 09 3c 64 64 3e 54 68 65 20 4f 70 65 6e 53 53  ..<dd>The OpenSS
47a0: 4c 20 63 69 70 68 65 72 20 69 64 2e 3c 2f 64 64  L cipher id.</dd
47b0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 64  >..<dt><strong>d
47c0: 65 73 63 72 69 70 74 69 6f 6e 3c 2f 73 74 72 6f  escription</stro
47d0: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
47e0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 20  em></dt>..<dd>A 
47f0: 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f 6e  text description
4800: 20 6f 66 20 74 68 65 20 63 69 70 68 65 72 2e 3c   of the cipher.<
4810: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
4820: 67 3e 68 61 6e 64 73 68 61 6b 65 5f 64 69 67 65  g>handshake_dige
4830: 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  st</strong> <em>
4840: 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74  boolean</em></dt
4850: 3e 0a 09 3c 64 64 3e 44 69 67 65 73 74 20 75 73  >..<dd>Digest us
4860: 65 64 20 64 75 72 69 6e 67 20 68 61 6e 64 73 68  ed during handsh
4870: 61 6b 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f  ake.</dd>.    </
4880: 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  dl>.</blockquote
4890: 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09  >.<blockquote>..
48a0: 3c 62 3e 53 65 73 73 69 6f 6e 20 49 6e 66 6f 3c  <b>Session Info<
48b0: 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64  /b>.    <dl>..<d
48c0: 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f  t><strong>alpn</
48d0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 70 72 6f 74  strong> <em>prot
48e0: 6f 63 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ocol</em></dt>..
48f0: 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c  <dd>The protocol
4900: 20 73 65 6c 65 63 74 65 64 20 61 66 74 65 72 20   selected after 
4910: 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79 65  Application-Laye
4920: 72 20 50 72 6f 74 6f 63 6f 6c 0a 09 20 20 20 20  r Protocol..    
4930: 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50  Negotiation (ALP
4940: 4e 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  N).</dd>..<dt><s
4950: 74 72 6f 6e 67 3e 72 65 73 75 6d 61 62 6c 65 3c  trong>resumable<
4960: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
4970: 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  lean</em></dt>..
4980: 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 65 20  <dd>Whether the 
4990: 73 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 72  session can be r
49a0: 65 73 75 6d 65 64 20 6f 72 20 6e 6f 74 2e 3c 2f  esumed or not.</
49b0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
49c0: 3e 73 74 61 72 74 5f 74 69 6d 65 3c 2f 73 74 72  >start_time</str
49d0: 6f 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e 64 73  ong> <em>seconds
49e0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
49f0: 54 69 6d 65 20 73 69 6e 63 65 20 73 65 73 73 69  Time since sessi
4a00: 6f 6e 20 73 74 61 72 74 65 64 20 69 6e 20 73 65  on started in se
4a10: 63 6f 6e 64 73 20 73 69 6e 63 65 20 65 70 6f 63  conds since epoc
4a20: 68 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  h.</dd>..<dt><st
4a30: 72 6f 6e 67 3e 74 69 6d 65 6f 75 74 3c 2f 73 74  rong>timeout</st
4a40: 72 6f 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e 64  rong> <em>second
4a50: 73 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  s</em></dt>..<dd
4a60: 3e 4d 61 78 20 64 75 72 61 74 69 6f 6e 20 6f 66  >Max duration of
4a70: 20 73 65 73 73 69 6f 6e 20 69 6e 20 73 65 63 6f   session in seco
4a80: 6e 64 73 20 62 65 66 6f 72 65 20 74 69 6d 65 2d  nds before time-
4a90: 6f 75 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  out.</dd>..<dt><
4aa0: 73 74 72 6f 6e 67 3e 6c 69 66 65 74 69 6d 65 3c  strong>lifetime<
4ab0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 65 63  /strong> <em>sec
4ac0: 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  onds</em></dt>..
4ad0: 3c 64 64 3e 53 65 73 73 69 6f 6e 20 74 69 63 6b  <dd>Session tick
4ae0: 65 74 20 6c 69 66 65 74 69 6d 65 20 68 69 6e 74  et lifetime hint
4af0: 20 69 6e 20 73 65 63 6f 6e 64 73 2e 3c 2f 64 64   in seconds.</dd
4b00: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
4b10: 65 73 73 69 6f 6e 5f 69 64 3c 2f 73 74 72 6f 6e  ession_id</stron
4b20: 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74  g> <em>binary_st
4b30: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
4b40: 3c 64 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69  <dd>Unique sessi
4b50: 6f 6e 20 69 64 20 66 6f 72 20 75 73 65 20 69 6e  on id for use in
4b60: 20 72 65 73 75 6d 69 6e 67 20 74 68 65 20 73 65   resuming the se
4b70: 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ssion.</dd>..<dt
4b80: 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e  ><strong>session
4b90: 5f 74 69 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e  _ticket</strong>
4ba0: 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69   <em>binary_stri
4bb0: 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ng</em></dt>..<d
4bc0: 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69 6f 6e  d>Unique session
4bd0: 20 74 69 63 6b 65 74 20 66 6f 72 20 75 73 65 20   ticket for use 
4be0: 69 6e 20 72 65 73 75 6d 69 6e 67 20 74 68 65 20  in resuming the 
4bf0: 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c  session.</dd>..<
4c00: 64 74 3e 3c 73 74 72 6f 6e 67 3e 74 69 63 6b 65  dt><strong>ticke
4c10: 74 5f 61 70 70 5f 64 61 74 61 3c 2f 73 74 72 6f  t_app_data</stro
4c20: 6e 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73  ng> <em>binary_s
4c30: 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  tring</em></dt>.
4c40: 09 3c 64 64 3e 55 6e 69 71 75 65 20 73 65 73 73  .<dd>Unique sess
4c50: 69 6f 6e 20 74 69 63 6b 65 74 20 61 70 70 6c 69  ion ticket appli
4c60: 63 61 74 69 6f 6e 20 64 61 74 61 2e 3c 2f 64 64  cation data.</dd
4c70: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6d  >..<dt><strong>m
4c80: 61 73 74 65 72 5f 6b 65 79 3c 2f 73 74 72 6f 6e  aster_key</stron
4c90: 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74  g> <em>binary_st
4ca0: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
4cb0: 3c 64 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69  <dd>Unique sessi
4cc0: 6f 6e 20 6d 61 73 74 65 72 20 6b 65 79 2e 3c 2f  on master key.</
4cd0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4ce0: 3e 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d  >session_cache_m
4cf0: 6f 64 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ode</strong> <em
4d00: 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >mode</em></dt>.
4d10: 09 3c 64 64 3e 53 65 72 76 65 72 20 63 61 63 68  .<dd>Server cach
4d20: 65 20 6d 6f 64 65 20 28 63 6c 69 65 6e 74 2c 20  e mode (client, 
4d30: 73 65 72 76 65 72 2c 20 6f 72 20 62 6f 74 68 29  server, or both)
4d40: 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e  .</dd>.    </dl>
4d50: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
4d60: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
4d70: 22 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 22  "tls::protocols"
4d80: 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 72  ><strong>tls::pr
4d90: 6f 74 6f 63 6f 6c 73 3c 2f 73 74 72 6f 6e 67 3e  otocols</strong>
4da0: 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64  </a></dt>.    <d
4db0: 64 3e 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74  d>Returns a list
4dc0: 20 6f 66 20 74 68 65 20 73 75 70 70 6f 72 74 65   of the supporte
4dd0: 64 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 56 61 6c  d protocols. Val
4de0: 69 64 20 76 61 6c 75 65 73 20 61 72 65 3a 0a 09  id values are:..
4df0: 3c 62 3e 73 73 6c 32 3c 2f 62 3e 2c 20 3c 62 3e  <b>ssl2</b>, <b>
4e00: 73 73 6c 33 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73  ssl3</b>, <b>tls
4e10: 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e 31  1</b>, <b>tls1.1
4e20: 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e 32 3c  </b>, <b>tls1.2<
4e30: 2f 62 3e 2c 0a 09 61 6e 64 20 3c 62 3e 74 6c 73  /b>,..and <b>tls
4e40: 31 2e 33 3c 2f 62 3e 2e 20 45 78 61 63 74 20 6c  1.3</b>. Exact l
4e50: 69 73 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 4f  ist depends on O
4e60: 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 61  penSSL version a
4e70: 6e 64 0a 09 63 6f 6d 70 69 6c 65 20 74 69 6d 65  nd..compile time
4e80: 20 66 6c 61 67 73 2e 3c 2f 64 64 3e 0a 0a 20 20   flags.</dd>..  
4e90: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
4ea0: 6c 73 3a 3a 76 65 72 73 69 6f 6e 22 3e 3c 73 74  ls::version"><st
4eb0: 72 6f 6e 67 3e 74 6c 73 3a 3a 76 65 72 73 69 6f  rong>tls::versio
4ec0: 6e 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f  n</strong></a></
4ed0: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75  dt>.    <dd>Retu
4ee0: 72 6e 73 20 74 68 65 20 4f 70 65 6e 53 53 4c 20  rns the OpenSSL 
4ef0: 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 2e 3c  version string.<
4f00: 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 68 33 3e  /dd>.</dl>..<h3>
4f10: 3c 61 20 6e 61 6d 65 3d 22 43 41 4c 4c 42 41 43  <a name="CALLBAC
4f20: 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42  K OPTIONS">CALLB
4f30: 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 3c  ACK OPTIONS</a><
4f40: 2f 68 33 3e 0a 0a 3c 70 3e 0a 41 73 20 69 6e 64  /h3>..<p>.As ind
4f50: 69 63 61 74 65 64 20 61 62 6f 76 65 2c 20 69 6e  icated above, in
4f60: 64 69 76 69 64 75 61 6c 20 63 68 61 6e 6e 65 6c  dividual channel
4f70: 73 20 63 61 6e 20 62 65 20 67 69 76 65 6e 20 74  s can be given t
4f80: 68 65 69 72 20 6f 77 6e 20 63 61 6c 6c 62 61 63  heir own callbac
4f90: 6b 73 0a 74 6f 20 68 61 6e 64 6c 65 20 69 6e 74  ks.to handle int
4fa0: 65 72 6d 65 64 69 61 74 65 20 70 72 6f 63 65 73  ermediate proces
4fb0: 73 69 6e 67 20 62 79 20 74 68 65 20 4f 70 65 6e  sing by the Open
4fc0: 53 53 4c 20 6c 69 62 72 61 72 79 2c 20 75 73 69  SSL library, usi
4fd0: 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d  ng the.<strong>-
4fe0: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
4ff0: 2c 20 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77  , <strong>-passw
5000: 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e  ord</strong>, an
5010: 64 0a 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64  d.<strong>-valid
5020: 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  ate_command</str
5030: 6f 6e 67 3e 20 6f 70 74 69 6f 6e 73 20 70 61 73  ong> options pas
5040: 73 65 64 20 74 6f 20 65 69 74 68 65 72 20 6f 66  sed to either of
5050: 0a 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f  .<strong>tls::so
5060: 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 6f 72  cket</strong> or
5070: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d   <strong>tls::im
5080: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 2e 0a 49  port</strong>..I
5090: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 67  f the callback g
50a0: 65 6e 65 72 61 74 65 73 20 61 6e 20 65 72 72 6f  enerates an erro
50b0: 72 2c 20 74 68 65 20 3c 62 3e 62 67 65 72 72 6f  r, the <b>bgerro
50c0: 72 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 20 77 69  r</b> command wi
50d0: 6c 6c 20 62 65 0a 69 6e 76 6f 6b 65 64 20 77 69  ll be.invoked wi
50e0: 74 68 20 74 68 65 20 65 72 72 6f 72 20 69 6e 66  th the error inf
50f0: 6f 72 6d 61 74 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a  ormation..</p>..
5100: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 64 6c  <blockquote>.<dl
5110: 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 73 74 72 6f  >..    <dt><stro
5120: 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  ng>-command</str
5130: 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63  ong> <em>callbac
5140: 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20  k</em></dt>.    
5150: 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65 73 20 74 68  <dd>..Invokes th
5160: 65 20 73 70 65 63 69 66 69 65 64 20 3c 65 6d 3e  e specified <em>
5170: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 20 73 63  callback</em> sc
5180: 72 69 70 74 20 61 74 20 73 65 76 65 72 61 6c 20  ript at several 
5190: 70 6f 69 6e 74 73 0a 09 64 75 72 69 6e 67 20 74  points..during t
51a0: 68 65 20 4f 70 65 6e 53 53 4c 20 68 61 6e 64 73  he OpenSSL hands
51b0: 68 61 6b 65 20 61 6e 64 20 75 73 65 2e 20 53 65  hake and use. Se
51c0: 65 20 62 65 6c 6f 77 20 66 6f 72 20 74 68 65 20  e below for the 
51d0: 70 6f 73 73 69 62 6c 65 0a 09 61 72 67 75 6d 65  possible..argume
51e0: 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74 68  nts passed to th
51f0: 65 20 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70  e callback scrip
5200: 74 2e 20 56 61 6c 75 65 73 20 72 65 74 75 72 6e  t. Values return
5210: 65 64 20 66 72 6f 6d 20 74 68 65 0a 09 63 61 6c  ed from the..cal
5220: 6c 62 61 63 6b 20 61 72 65 20 69 67 6e 6f 72 65  lback are ignore
5230: 64 2e 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e 0a  d....<br>..<br>.
5240: 0a 09 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09 20  ..<dl>...<dt>.. 
5250: 20 3c 73 74 72 6f 6e 67 3e 65 72 72 6f 72 3c 2f   <strong>error</
5260: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e  strong> <em>chan
5270: 6e 65 6c 20 6d 65 73 73 61 67 65 3c 2f 65 6d 3e  nel message</em>
5280: 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20  ..</dt>..<dd>.. 
5290: 20 54 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 65   The <em>message
52a0: 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 63  </em> argument c
52b0: 6f 6e 74 61 69 6e 73 20 61 6e 20 65 72 72 6f 72  ontains an error
52c0: 20 6d 65 73 73 61 67 65 20 67 65 6e 65 72 61 74   message generat
52d0: 65 64 0a 09 20 20 62 79 20 74 68 65 20 4f 70 65  ed..  by the Ope
52e0: 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e 20 3c 63  nSSL function <c
52f0: 6f 64 65 3e 45 52 52 5f 72 65 61 73 6f 6e 5f 65  ode>ERR_reason_e
5300: 72 72 6f 72 5f 73 74 72 69 6e 67 28 29 3c 2f 63  rror_string()</c
5310: 6f 64 65 3e 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c  ode>...</dd>...<
5320: 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73  br>...<dt>..  <s
5330: 74 72 6f 6e 67 3e 69 6e 66 6f 3c 2f 73 74 72 6f  trong>info</stro
5340: 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20  ng> <em>channel 
5350: 6d 61 6a 6f 72 20 6d 69 6e 6f 72 20 6d 65 73 73  major minor mess
5360: 61 67 65 20 74 79 70 65 3c 2f 65 6d 3e 0a 09 3c  age type</em>..<
5370: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68  /dt>..<dd>..  Th
5380: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
5390: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62  ack is invoked b
53a0: 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75  y the OpenSSL fu
53b0: 6e 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65 3e  nction..  <code>
53c0: 53 53 4c 5f 43 54 58 5f 73 65 74 5f 69 6e 66 6f  SSL_CTX_set_info
53d0: 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f 64  _callback()</cod
53e0: 65 3e 20 64 75 72 69 6e 67 20 63 6f 6e 6e 65 63  e> during connec
53f0: 74 69 6f 6e 20 73 65 74 75 70 0a 09 20 20 61 6e  tion setup..  an
5400: 64 20 75 73 65 2e 0a 09 20 20 3c 62 72 3e 0a 09  d use...  <br>..
5410: 20 20 3c 75 6c 3e 0a 09 20 20 3c 6c 69 3e 50 6f    <ul>..  <li>Po
5420: 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f  ssible values fo
5430: 72 20 3c 65 6d 3e 6d 61 6a 6f 72 3c 2f 65 6d 3e  r <em>major</em>
5440: 20 61 72 65 3a 0a 09 20 20 3c 63 6f 64 65 3e 68   are:..  <code>h
5450: 61 6e 64 73 68 61 6b 65 2c 20 61 6c 65 72 74 2c  andshake, alert,
5460: 20 63 6f 6e 6e 65 63 74 2c 20 61 63 63 65 70 74   connect, accept
5470: 3c 2f 63 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 20  </code>.</li>.. 
5480: 20 3c 6c 69 3e 50 6f 73 73 69 62 6c 65 20 76 61   <li>Possible va
5490: 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e 6d 69 6e  lues for <em>min
54a0: 6f 72 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09 20 20  or</em> are:..  
54b0: 3c 63 6f 64 65 3e 73 74 61 72 74 2c 20 64 6f 6e  <code>start, don
54c0: 65 2c 20 72 65 61 64 2c 20 77 72 69 74 65 2c 20  e, read, write, 
54d0: 6c 6f 6f 70 2c 20 65 78 69 74 3c 2f 63 6f 64 65  loop, exit</code
54e0: 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54  >.</li>..  <li>T
54f0: 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 65 3c 2f  he <em>message</
5500: 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  em> argument is 
5510: 61 20 64 65 73 63 72 69 70 74 69 76 65 20 73 74  a descriptive st
5520: 72 69 6e 67 20 77 68 69 63 68 20 6d 61 79 0a 09  ring which may..
5530: 20 20 62 65 20 67 65 6e 65 72 61 74 65 64 20 65    be generated e
5540: 69 74 68 65 72 20 62 79 20 3c 63 6f 64 65 3e 53  ither by <code>S
5550: 53 4c 5f 73 74 61 74 65 5f 73 74 72 69 6e 67 5f  SL_state_string_
5560: 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e 20 6f 72  long()</code> or
5570: 20 62 79 0a 09 20 20 3c 63 6f 64 65 3e 53 53 4c   by..  <code>SSL
5580: 5f 61 6c 65 72 74 5f 64 65 73 63 5f 73 74 72 69  _alert_desc_stri
5590: 6e 67 5f 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e  ng_long()</code>
55a0: 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74  , depending on t
55b0: 68 65 20 63 6f 6e 74 65 78 74 2e 3c 2f 6c 69 3e  he context.</li>
55c0: 0a 09 20 20 3c 6c 69 3e 46 6f 72 20 61 6c 65 72  ..  <li>For aler
55d0: 74 73 2c 20 74 68 65 20 70 6f 73 73 69 62 6c 65  ts, the possible
55e0: 20 76 61 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e   values for <em>
55f0: 74 79 70 65 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09  type</em> are:..
5600: 20 20 3c 63 6f 64 65 3e 77 61 72 6e 69 6e 67 2c    <code>warning,
5610: 20 66 61 74 61 6c 2c 20 61 6e 64 20 75 6e 6b 6e   fatal, and unkn
5620: 6f 77 6e 3c 2f 63 6f 64 65 3e 2e 20 46 6f 72 20  own</code>. For 
5630: 6f 74 68 65 72 73 2c 0a 09 20 20 3c 63 6f 64 65  others,..  <code
5640: 3e 69 6e 66 6f 3c 2f 63 6f 64 65 3e 20 69 73 20  >info</code> is 
5650: 75 73 65 64 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 2f  used.</li>..  </
5660: 75 6c 3e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 64 74  ul>..</dd>...<dt
5670: 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 6d 65 73  >..  <strong>mes
5680: 73 61 67 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  sage</strong> <e
5690: 6d 3e 63 68 61 6e 6e 65 6c 20 64 69 72 65 63 74  m>channel direct
56a0: 69 6f 6e 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74  ion version cont
56b0: 65 6e 74 5f 74 79 70 65 20 64 61 74 61 3c 2f 65  ent_type data</e
56c0: 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a  m>..</dt>..<dd>.
56d0: 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66 20  .  This form of 
56e0: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
56f0: 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e 53  ked by the OpenS
5700: 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20 3c  SL function..  <
5710: 63 6f 64 65 3e 53 53 4c 5f 73 65 74 5f 6d 73 67  code>SSL_set_msg
5720: 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f 64  _callback()</cod
5730: 65 3e 20 77 68 65 6e 65 76 65 72 20 61 20 6d 65  e> whenever a me
5740: 73 73 61 67 65 20 69 73 20 73 65 6e 74 20 6f 72  ssage is sent or
5750: 0a 09 20 20 72 65 63 65 69 76 65 64 2e 20 49 74  ..  received. It
5760: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
5770: 6c 65 20 77 68 65 6e 0a 09 20 20 4f 70 65 6e 53  le when..  OpenS
5780: 53 4c 20 69 73 20 63 6f 6d 70 6c 69 65 64 20 77  SL is complied w
5790: 69 74 68 20 74 68 65 20 3c 65 6d 3e 65 6e 61 62  ith the <em>enab
57a0: 6c 65 2d 73 73 6c 2d 74 72 61 63 65 3c 2f 65 6d  le-ssl-trace</em
57b0: 3e 20 6f 70 74 69 6f 6e 2e 0a 09 20 20 57 68 65  > option...  Whe
57c0: 72 65 20 3c 65 6d 3e 64 69 72 65 63 74 69 6f 6e  re <em>direction
57d0: 3c 2f 65 6d 3e 20 69 73 20 53 65 6e 74 20 6f 72  </em> is Sent or
57e0: 20 52 65 63 65 69 76 65 64 2c 20 3c 65 6d 3e 76   Received, <em>v
57f0: 65 72 73 69 6f 6e 3c 2f 65 6d 3e 20 69 73 20 74  ersion</em> is t
5800: 68 65 0a 09 20 20 70 72 6f 74 6f 63 6f 6c 20 76  he..  protocol v
5810: 65 72 73 69 6f 6e 2c 20 3c 65 6d 3e 63 6f 6e 74  ersion, <em>cont
5820: 65 6e 74 5f 74 79 70 65 3c 2f 65 6d 3e 20 69 73  ent_type</em> is
5830: 20 74 68 65 20 6d 65 73 73 61 67 65 20 63 6f 6e   the message con
5840: 74 65 6e 74 20 74 79 70 65 2c 0a 09 20 20 61 6e  tent type,..  an
5850: 64 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20  d <em>data</em> 
5860: 69 73 20 6d 6f 72 65 20 69 6e 66 6f 20 6f 6e 20  is more info on 
5870: 74 68 65 20 6d 65 73 73 61 67 65 20 66 72 6f 6d  the message from
5880: 20 74 68 65 20 3c 63 6f 64 65 3e 53 53 4c 5f 74   the <code>SSL_t
5890: 72 61 63 65 3c 2f 63 6f 64 65 3e 20 41 50 49 2e  race</code> API.
58a0: 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 0a 09  ..</dd>..<br>...
58b0: 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e  <dt>..  <strong>
58c0: 73 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e  session</strong>
58d0: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65 73   <em>channel ses
58e0: 73 69 6f 6e 5f 69 64 20 74 69 63 6b 65 74 20 6c  sion_id ticket l
58f0: 69 66 65 74 69 6d 65 3c 2f 65 6d 3e 0a 09 3c 2f  ifetime</em>..</
5900: 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68 69  dt>..<dd>..  Thi
5910: 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61  s form of callba
5920: 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79  ck is invoked by
5930: 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75 6e   the OpenSSL fun
5940: 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65 3e 53  ction..  <code>S
5950: 53 4c 5f 43 54 58 5f 73 65 73 73 5f 73 65 74 5f  SL_CTX_sess_set_
5960: 6e 65 77 5f 63 62 28 29 3c 2f 63 6f 64 65 3e 2e  new_cb()</code>.
5970: 0a 09 20 20 57 68 65 72 65 20 3c 65 6d 3e 73 65  ..  Where <em>se
5980: 73 73 69 6f 6e 5f 69 64 3c 2f 65 6d 3e 20 69 73  ssion_id</em> is
5990: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73   the current ses
59a0: 73 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 72 2c  sion identifier,
59b0: 0a 09 20 20 3c 65 6d 3e 74 69 63 6b 65 74 3c 2f  ..  <em>ticket</
59c0: 65 6d 3e 20 69 73 20 74 68 65 20 73 65 73 73 69  em> is the sessi
59d0: 6f 6e 20 74 69 63 6b 65 74 20 69 6e 66 6f 2c 20  on ticket info, 
59e0: 61 6e 64 20 3c 65 6d 3e 6c 69 66 65 74 69 6d 65  and <em>lifetime
59f0: 3c 2f 65 6d 3e 0a 09 20 20 69 73 20 74 68 65 20  </em>..  is the 
5a00: 74 68 65 20 74 69 63 6b 65 74 20 6c 69 66 65 74  the ticket lifet
5a10: 69 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 2e 0a  ime in seconds..
5a20: 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f  .</dd>..<br>..</
5a30: 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 0a 20  dl>.    </dd>.. 
5a40: 20 20 20 3c 62 72 3e 0a 0a 20 20 20 20 3c 64 74     <br>..    <dt
5a50: 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f  ><strong>-passwo
5a60: 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  rd</strong> <em>
5a70: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64  callback</em></d
5a80: 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76  t>.    <dd>..Inv
5a90: 6f 6b 65 73 20 74 68 65 20 73 70 65 63 69 66 69  okes the specifi
5aa0: 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c  ed <em>callback<
5ab0: 2f 65 6d 3e 20 73 63 72 69 70 74 20 77 68 65 6e  /em> script when
5ac0: 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20 74   OpenSSL needs t
5ad0: 6f 0a 09 6f 62 74 61 69 6e 20 61 20 70 61 73 73  o..obtain a pass
5ae0: 77 6f 72 64 2e 20 53 65 65 20 62 65 6c 6f 77 20  word. See below 
5af0: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
5b00: 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
5b10: 64 20 74 6f 0a 09 74 68 65 20 63 61 6c 6c 62 61  d to..the callba
5b20: 63 6b 20 73 63 72 69 70 74 2e 20 53 65 65 20 62  ck script. See b
5b30: 65 6c 6f 77 20 66 6f 72 20 76 61 6c 69 64 20 72  elow for valid r
5b40: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 0a 0a 09  eturn values....
5b50: 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09 3c 64 6c  <br>..<br>...<dl
5b60: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
5b70: 6f 6e 67 3e 70 61 73 73 77 6f 72 64 3c 2f 73 74  ong>password</st
5b80: 72 6f 6e 67 3e 20 3c 65 6d 3e 72 77 66 6c 61 67  rong> <em>rwflag
5b90: 20 73 69 7a 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 74   size</em>..</dt
5ba0: 3e 0a 09 3c 64 64 3e 0a 09 20 20 49 6e 76 6f 6b  >..<dd>..  Invok
5bb0: 65 64 20 77 68 65 6e 20 6c 6f 61 64 69 6e 67 20  ed when loading 
5bc0: 6f 72 20 73 74 6f 72 69 6e 67 20 61 20 50 45 4d  or storing a PEM
5bd0: 20 63 65 72 74 69 66 69 63 61 74 65 20 77 69 74   certificate wit
5be0: 68 20 65 6e 63 72 79 70 74 69 6f 6e 2e 0a 09 20  h encryption... 
5bf0: 20 57 68 65 72 65 20 3c 65 6d 3e 72 77 66 6c 61   Where <em>rwfla
5c00: 67 3c 2f 65 6d 3e 20 69 73 20 30 20 66 6f 72 20  g</em> is 0 for 
5c10: 72 65 61 64 69 6e 67 2f 64 65 63 72 79 70 74 69  reading/decrypti
5c20: 6f 6e 20 6f 72 20 31 20 66 6f 72 0a 09 20 20 77  on or 1 for..  w
5c30: 72 69 74 69 6e 67 2f 65 6e 63 72 79 70 74 69 6f  riting/encryptio
5c40: 6e 20 28 63 61 6e 20 70 72 6f 6d 70 74 20 75 73  n (can prompt us
5c50: 65 72 20 74 6f 20 63 6f 6e 66 69 72 6d 29 20 61  er to confirm) a
5c60: 6e 64 0a 09 20 20 3c 65 6d 3e 73 69 7a 65 3c 2f  nd..  <em>size</
5c70: 65 6d 3e 20 69 73 20 74 68 65 20 6d 61 78 20 70  em> is the max p
5c80: 61 73 73 77 6f 72 64 20 6c 65 6e 67 74 68 20 69  assword length i
5c90: 6e 20 62 79 74 65 73 2e 0a 09 20 20 54 68 65 20  n bytes...  The 
5ca0: 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20  callback should 
5cb0: 72 65 74 75 72 6e 20 74 68 65 20 70 61 73 73 77  return the passw
5cc0: 6f 72 64 20 61 73 20 61 20 73 74 72 69 6e 67 2e  ord as a string.
5cd0: 0a 09 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 64  ..</dd>.    </dd
5ce0: 3e 0a 0a 20 20 20 20 3c 62 72 3e 0a 0a 0a 20 20  >..    <br>...  
5cf0: 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 76    <dt><strong>-v
5d00: 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 3c 2f  alidatecommand</
5d10: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c  strong> <em>call
5d20: 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20  back</em></dt>. 
5d30: 20 20 20 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65 73     <dd>..Invokes
5d40: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c   the specified <
5d50: 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e  em>callback</em>
5d60: 20 73 63 72 69 70 74 20 64 75 72 69 6e 67 20 68   script during h
5d70: 61 6e 64 73 68 61 6b 65 20 69 6e 0a 09 6f 72 64  andshake in..ord
5d80: 65 72 20 74 6f 20 76 61 6c 69 64 61 74 65 20 74  er to validate t
5d90: 68 65 20 70 72 6f 76 69 64 65 64 20 76 61 6c 75  he provided valu
5da0: 65 28 73 29 2e 20 53 65 65 20 62 65 6c 6f 77 20  e(s). See below 
5db0: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
5dc0: 0a 09 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73  ..arguments pass
5dd0: 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61  ed to the callba
5de0: 63 6b 20 73 63 72 69 70 74 2e 0a 09 54 6f 20 72  ck script...To r
5df0: 65 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65 20  eject the value 
5e00: 61 6e 64 20 61 62 6f 72 74 20 63 6f 6e 6e 65 63  and abort connec
5e10: 74 69 6f 6e 2c 20 74 68 65 20 63 61 6c 6c 62 61  tion, the callba
5e20: 63 6b 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  ck should return
5e30: 20 30 2e 0a 09 54 6f 20 61 63 63 65 70 74 20 74   0...To accept t
5e40: 68 65 20 76 61 6c 75 65 20 61 6e 64 20 63 6f 6e  he value and con
5e50: 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 6e 65 63  tinue the connec
5e60: 74 69 6f 6e 2c 20 69 74 20 73 68 6f 75 6c 64 20  tion, it should 
5e70: 72 65 74 75 72 6e 20 31 2e 0a 09 54 6f 20 72 65  return 1...To re
5e80: 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65 2c 20  ject the value, 
5e90: 62 75 74 20 63 6f 6e 74 69 6e 75 65 20 74 68 65  but continue the
5ea0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74 20   connection, it 
5eb0: 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 32 2e  should return 2.
5ec0: 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09  ...<br>..<br>...
5ed0: 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c  <dl>...<dt>..  <
5ee0: 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72  strong>alpn</str
5ef0: 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c  ong> <em>channel
5f00: 20 70 72 6f 74 6f 63 6f 6c 20 6d 61 74 63 68 3c   protocol match<
5f10: 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64  /em>..</dt>..<dd
5f20: 3e 0a 09 20 20 46 6f 72 20 73 65 72 76 65 72 73  >..  For servers
5f30: 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20 63  , this form of c
5f40: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
5f50: 65 64 20 77 68 65 6e 20 74 68 65 20 63 6c 69 65  ed when the clie
5f60: 6e 74 20 41 4c 50 4e 0a 09 20 20 65 78 74 65 6e  nt ALPN..  exten
5f70: 73 69 6f 6e 20 69 73 20 72 65 63 65 69 76 65 64  sion is received
5f80: 2e 20 49 66 20 3c 65 6d 3e 6d 61 74 63 68 3c 2f  . If <em>match</
5f90: 65 6d 3e 20 69 73 20 74 72 75 65 2c 20 3c 65 6d  em> is true, <em
5fa0: 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 0a 09  >protocol</em>..
5fb0: 20 20 69 73 20 74 68 65 20 66 69 72 73 74 20 3c    is the first <
5fc0: 62 3e 2d 61 6c 70 6e 3c 2f 62 3e 20 73 70 65 63  b>-alpn</b> spec
5fd0: 69 66 69 65 64 20 70 72 6f 74 6f 63 6f 6c 20 63  ified protocol c
5fe0: 6f 6d 6d 6f 6e 20 74 6f 20 74 68 65 20 62 6f 74  ommon to the bot
5ff0: 68 20 74 68 65 0a 09 20 20 63 6c 69 65 6e 74 20  h the..  client 
6000: 61 6e 64 20 73 65 72 76 65 72 2e 20 49 66 20 6e  and server. If n
6010: 6f 74 2c 20 74 68 65 20 66 69 72 73 74 20 63 6c  ot, the first cl
6020: 69 65 6e 74 20 73 70 65 63 69 66 69 65 64 20 70  ient specified p
6030: 72 6f 74 6f 63 6f 6c 20 69 73 0a 09 20 20 75 73  rotocol is..  us
6040: 65 64 2e 20 43 61 6c 6c 65 64 20 61 66 74 65 72  ed. Called after
6050: 20 68 65 6c 6c 6f 20 61 6e 64 20 41 4c 50 4e 20   hello and ALPN 
6060: 63 61 6c 6c 62 61 63 6b 73 2e 0a 09 3c 2f 64 64  callbacks...</dd
6070: 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e 0a  >...<br>...<dt>.
6080: 09 20 20 3c 73 74 72 6f 6e 67 3e 68 65 6c 6c 6f  .  <strong>hello
6090: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68  </strong> <em>ch
60a0: 61 6e 6e 65 6c 20 73 65 72 76 65 72 6e 61 6d 65  annel servername
60b0: 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64  </em>..</dt>..<d
60c0: 64 3e 0a 09 20 20 46 6f 72 20 73 65 72 76 65 72  d>..  For server
60d0: 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20  s, this form of 
60e0: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
60f0: 6b 65 64 20 64 75 72 69 6e 67 20 63 6c 69 65 6e  ked during clien
6100: 74 20 68 65 6c 6c 6f 0a 09 20 20 6d 65 73 73 61  t hello..  messa
6110: 67 65 20 70 72 6f 63 65 73 73 69 6e 67 2e 20 49  ge processing. I
6120: 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 6c  t is used to sel
6130: 65 63 74 20 61 6e 20 61 70 70 72 6f 70 72 69 61  ect an appropria
6140: 74 65 20 63 65 72 74 69 66 69 63 61 74 65 20 74  te certificate t
6150: 6f 0a 09 20 20 70 72 65 73 65 6e 74 2c 20 61 6e  o..  present, an
6160: 64 20 6d 61 6b 65 20 6f 74 68 65 72 20 63 6f 6e  d make other con
6170: 66 69 67 75 72 61 74 69 6f 6e 20 61 64 6a 75 73  figuration adjus
6180: 74 6d 65 6e 74 73 20 72 65 6c 65 76 61 6e 74 20  tments relevant 
6190: 74 6f 20 74 68 61 74 0a 09 20 20 73 65 72 76 65  to that..  serve
61a0: 72 20 6e 61 6d 65 20 61 6e 64 20 69 74 73 20 63  r name and its c
61b0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 20 43 61  onfiguration. Ca
61c0: 6c 6c 65 64 20 62 65 66 6f 72 65 20 53 4e 49 20  lled before SNI 
61d0: 61 6e 64 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63  and ALPN callbac
61e0: 6b 73 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 62 72  ks...</dd>...<br
61f0: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
6200: 6f 6e 67 3e 73 6e 69 3c 2f 73 74 72 6f 6e 67 3e  ong>sni</strong>
6210: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65 72   <em>channel ser
6220: 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e 0a 09 3c 2f  vername</em>..</
6230: 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 46 6f 72  dt>..<dd>..  For
6240: 20 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 66   servers, this f
6250: 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20  orm of callback 
6260: 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20  is invoked when 
6270: 74 68 65 20 53 4e 49 20 65 78 74 65 6e 73 69 6f  the SNI extensio
6280: 6e 0a 09 20 20 66 72 6f 6d 20 74 68 65 20 63 6c  n..  from the cl
6290: 69 65 6e 74 20 69 73 20 72 65 63 65 69 76 65 64  ient is received
62a0: 2e 20 57 68 65 72 65 20 3c 65 6d 3e 73 65 72 76  . Where <em>serv
62b0: 65 72 6e 61 6d 65 3c 2f 65 6d 3e 20 69 73 20 74  ername</em> is t
62c0: 68 65 20 63 6c 69 65 6e 74 0a 09 20 20 70 72 6f  he client..  pro
62d0: 76 69 64 65 64 20 73 65 72 76 65 72 20 6e 61 6d  vided server nam
62e0: 65 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 2d 73  e from the <b>-s
62f0: 65 72 76 65 72 6e 61 6d 65 3c 2f 62 3e 20 6f 70  ervername</b> op
6300: 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 0a 09 20  tion. This is.. 
6310: 20 75 73 65 64 20 77 68 65 6e 20 61 20 73 65 72   used when a ser
6320: 76 65 72 20 73 75 70 70 6f 72 74 73 20 6d 75 6c  ver supports mul
6330: 74 69 70 6c 65 20 6e 61 6d 65 73 2c 20 73 6f 20  tiple names, so 
6340: 74 68 65 20 72 69 67 68 74 20 63 65 72 74 69 66  the right certif
6350: 69 63 61 74 65 0a 09 20 20 63 61 6e 20 62 65 20  icate..  can be 
6360: 75 73 65 64 2e 20 43 61 6c 6c 65 64 20 61 66 74  used. Called aft
6370: 65 72 20 68 65 6c 6c 6f 20 63 61 6c 6c 62 61 63  er hello callbac
6380: 6b 20 62 75 74 20 62 65 66 6f 72 65 20 41 4c 50  k but before ALP
6390: 4e 20 63 61 6c 6c 62 61 63 6b 2e 0a 09 3c 2f 64  N callback...</d
63a0: 64 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e  d>...<br>...<dt>
63b0: 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 76 65 72 69  ..  <strong>veri
63c0: 66 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  fy</strong> <em>
63d0: 63 68 61 6e 6e 65 6c 20 64 65 70 74 68 20 63 65  channel depth ce
63e0: 72 74 20 73 74 61 74 75 73 20 65 72 72 6f 72 3c  rt status error<
63f0: 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64  /em>..</dt>..<dd
6400: 3e 0a 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f  >..  This form o
6410: 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  f callback is in
6420: 76 6f 6b 65 64 20 62 79 20 4f 70 65 6e 53 53 4c  voked by OpenSSL
6430: 20 77 68 65 6e 20 61 20 6e 65 77 20 63 65 72 74   when a new cert
6440: 69 66 69 63 61 74 65 0a 09 20 20 69 73 20 72 65  ificate..  is re
6450: 63 65 69 76 65 64 20 66 72 6f 6d 20 74 68 65 20  ceived from the 
6460: 70 65 65 72 2e 20 49 74 20 61 6c 6c 6f 77 73 20  peer. It allows 
6470: 74 68 65 20 63 6c 69 65 6e 74 20 74 6f 20 63 68  the client to ch
6480: 65 63 6b 20 74 68 65 0a 09 20 20 63 65 72 74 69  eck the..  certi
6490: 66 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74  ficate verificat
64a0: 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 6e 64 20  ion results and 
64b0: 63 68 6f 6f 73 65 20 77 68 65 74 68 65 72 20 74  choose whether t
64c0: 6f 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 6f 72  o continue..  or
64d0: 20 6e 6f 74 2e 20 49 74 20 69 73 20 63 61 6c 6c   not. It is call
64e0: 65 64 20 66 6f 72 20 65 61 63 68 20 63 65 72 74  ed for each cert
64f0: 69 66 69 63 61 74 65 20 69 6e 20 74 68 65 20 63  ificate in the c
6500: 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e  ertificate chain
6510: 2e 0a 09 20 20 3c 75 6c 3e 0a 09 20 20 3c 6c 69  ...  <ul>..  <li
6520: 3e 54 68 65 20 3c 65 6d 3e 64 65 70 74 68 3c 2f  >The <em>depth</
6530: 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  em> argument is 
6540: 61 6e 20 69 6e 74 65 67 65 72 20 72 65 70 72 65  an integer repre
6550: 73 65 6e 74 69 6e 67 20 74 68 65 0a 09 20 20 63  senting the..  c
6560: 75 72 72 65 6e 74 20 64 65 70 74 68 20 6f 6e 20  urrent depth on 
6570: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
6580: 63 68 61 69 6e 2c 20 77 69 74 68 0a 09 20 20 3c  chain, with..  <
6590: 63 6f 64 65 3e 30 3c 2f 63 6f 64 65 3e 20 61 73  code>0</code> as
65a0: 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69 66   the peer certif
65b0: 69 63 61 74 65 20 61 6e 64 20 68 69 67 68 65 72  icate and higher
65c0: 20 76 61 6c 75 65 73 20 67 6f 69 6e 67 0a 09 20   values going.. 
65d0: 20 75 70 20 74 6f 20 74 68 65 20 43 65 72 74 69   up to the Certi
65e0: 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74 79  ficate Authority
65f0: 20 28 43 41 29 2e 3c 2f 6c 69 3e 0a 09 20 20 3c   (CA).</li>..  <
6600: 6c 69 3e 54 68 65 20 3c 65 6d 3e 63 65 72 74 3c  li>The <em>cert<
6610: 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  /em> argument is
6620: 20 61 20 6c 69 73 74 20 6f 66 20 6b 65 79 2d 76   a list of key-v
6630: 61 6c 75 65 20 70 61 69 72 73 20 73 69 6d 69 6c  alue pairs simil
6640: 61 72 0a 09 20 20 74 6f 20 74 68 6f 73 65 20 72  ar..  to those r
6650: 65 74 75 72 6e 65 64 20 62 79 0a 09 20 20 3c 61  eturned by..  <a
6660: 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 74 61   href="#tls::sta
6670: 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73  tus"><strong>tls
6680: 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f 6e 67  ::status</strong
6690: 3e 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c  ></a>.</li>..  <
66a0: 6c 69 3e 54 68 65 20 3c 65 6d 3e 73 74 61 74 75  li>The <em>statu
66b0: 73 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20  s</em> argument 
66c0: 69 73 20 61 6e 20 62 6f 6f 6c 65 61 6e 20 72 65  is an boolean re
66d0: 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 0a 09  presenting the..
66e0: 20 20 76 61 6c 69 64 69 74 79 20 6f 66 20 74 68    validity of th
66f0: 65 20 63 75 72 72 65 6e 74 20 63 65 72 74 69 66  e current certif
6700: 69 63 61 74 65 2e 0a 09 20 20 41 20 76 61 6c 75  icate...  A valu
6710: 65 20 6f 66 20 3c 63 6f 64 65 3e 30 3c 2f 63 6f  e of <code>0</co
6720: 64 65 3e 20 6d 65 61 6e 73 20 74 68 65 20 63 65  de> means the ce
6730: 72 74 69 66 69 63 61 74 65 20 69 73 20 64 65 65  rtificate is dee
6740: 6d 65 64 20 69 6e 76 61 6c 69 64 2e 0a 09 20 20  med invalid...  
6750: 41 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 65  A value of <code
6760: 3e 31 3c 2f 63 6f 64 65 3e 20 6d 65 61 6e 73 20  >1</code> means 
6770: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
6780: 69 73 20 64 65 65 6d 65 64 20 76 61 6c 69 64 2e  is deemed valid.
6790: 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68 65  </li>..  <li>The
67a0: 20 3c 65 6d 3e 65 72 72 6f 72 3c 2f 65 6d 3e 20   <em>error</em> 
67b0: 61 72 67 75 6d 65 6e 74 20 73 75 70 70 6c 69 65  argument supplie
67c0: 73 20 74 68 65 20 6d 65 73 73 61 67 65 2c 20 69  s the message, i
67d0: 66 20 61 6e 79 2c 20 67 65 6e 65 72 61 74 65 64  f any, generated
67e0: 0a 09 20 20 62 79 20 3c 63 6f 64 65 3e 58 35 30  ..  by <code>X50
67f0: 39 5f 53 54 4f 52 45 5f 43 54 58 5f 67 65 74 5f  9_STORE_CTX_get_
6800: 65 72 72 6f 72 28 29 3c 2f 63 6f 64 65 3e 2e 3c  error()</code>.<
6810: 2f 6c 69 3e 0a 09 20 20 3c 2f 75 6c 3e 0a 09 3c  /li>..  </ul>..<
6820: 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f 64 6c  /dd>..<br>..</dl
6830: 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 3c 2f 64 6c  >.    </dd>.</dl
6840: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
6850: 0a 3c 70 3e 0a 52 65 66 65 72 65 6e 63 65 20 69  .<p>.Reference i
6860: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f  mplementations o
6870: 66 20 74 68 65 73 65 20 63 61 6c 6c 62 61 63 6b  f these callback
6880: 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 69  s are provided i
6890: 6e 20 74 68 65 0a 64 69 73 74 72 69 62 75 74 69  n the.distributi
68a0: 6f 6e 20 61 73 20 3c 73 74 72 6f 6e 67 3e 74 6c  on as <strong>tl
68b0: 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72  s::callback</str
68c0: 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 74 6c  ong>, <strong>tl
68d0: 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74 72  s::password</str
68e0: 6f 6e 67 3e 2c 0a 61 6e 64 20 3c 73 74 72 6f 6e  ong>,.and <stron
68f0: 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f  g>tls::validate_
6900: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
6910: 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 20   respectively.  
6920: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20  Note that these 
6930: 61 72 65 0a 3c 65 6d 3e 73 61 6d 70 6c 65 3c 2f  are.<em>sample</
6940: 65 6d 3e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  em> implementati
6950: 6f 6e 73 20 6f 6e 6c 79 2e 20 20 49 6e 20 61 20  ons only.  In a 
6960: 6d 6f 72 65 20 72 65 61 6c 69 73 74 69 63 20 64  more realistic d
6970: 65 70 6c 6f 79 6d 65 6e 74 0a 79 6f 75 20 77 6f  eployment.you wo
6980: 75 6c 64 20 73 70 65 63 69 66 79 20 79 6f 75 72  uld specify your
6990: 20 6f 77 6e 20 63 61 6c 6c 62 61 63 6b 20 73 63   own callback sc
69a0: 72 69 70 74 73 20 6f 6e 20 65 61 63 68 20 54 4c  ripts on each TL
69b0: 53 20 63 68 61 6e 6e 65 6c 20 75 73 69 6e 67 20  S channel using 
69c0: 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d  the.<strong>-com
69d0: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c  mand</strong>, <
69e0: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
69f0: 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c  </strong>, and <
6a00: 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65  strong>-validate
6a10: 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67  _command</strong
6a20: 3e 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a  > options..</p>.
6a30: 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61 75 6c 74  .<p>.The default
6a40: 20 62 65 68 61 76 69 6f 72 20 77 68 65 6e 20 74   behavior when t
6a50: 68 65 20 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d  he <strong>-comm
6a60: 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 61 6e 64  and</strong> and
6a70: 20 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61   <strong>-valida
6a80: 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  te_command</stro
6a90: 6e 67 3e 0a 6f 70 74 69 6f 6e 73 20 61 72 65 20  ng>.options are 
6aa0: 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 69 73  not specified is
6ab0: 20 66 6f 72 20 54 4c 53 20 74 6f 20 70 72 6f 63   for TLS to proc
6ac0: 65 73 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ess the associat
6ad0: 65 64 20 6c 69 62 72 61 72 79 20 63 61 6c 6c 62  ed library callb
6ae0: 61 63 6b 73 0a 69 6e 74 65 72 6e 61 6c 6c 79 2e  acks.internally.
6af0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   The default beh
6b00: 61 76 69 6f 72 20 77 68 65 6e 20 74 68 65 20 3c  avior when the <
6b10: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
6b20: 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e  </strong> option
6b30: 20 69 73 20 6e 6f 74 0a 73 70 65 63 69 66 69 65   is not.specifie
6b40: 64 20 69 73 20 66 6f 72 20 54 4c 53 20 74 6f 20  d is for TLS to 
6b50: 70 72 6f 63 65 73 73 20 74 68 65 20 61 73 73 6f  process the asso
6b60: 63 69 61 74 65 64 20 6c 69 62 72 61 72 79 20 63  ciated library c
6b70: 61 6c 6c 62 61 63 6b 73 20 62 79 20 61 74 74 65  allbacks by atte
6b80: 6d 70 74 69 6e 67 0a 74 6f 20 63 61 6c 6c 20 3c  mpting.to call <
6b90: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 61 73 73  strong>tls::pass
6ba0: 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2e 0a 54  word</strong>..T
6bb0: 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  he difference be
6bc0: 74 77 65 65 6e 20 74 68 65 73 65 20 74 77 6f 20  tween these two 
6bd0: 62 65 68 61 76 69 6f 72 73 20 69 73 20 61 20 63  behaviors is a c
6be0: 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 6d 61  onsequence of ma
6bf0: 69 6e 74 61 69 6e 69 6e 67 0a 63 6f 6d 70 61 74  intaining.compat
6c00: 69 62 69 6c 69 74 79 20 77 69 74 68 20 65 61 72  ibility with ear
6c10: 6c 69 65 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74  lier implementat
6c20: 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ions..</p>..<p>.
6c30: 3c 65 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66 20  <em>.The use of 
6c40: 74 68 65 20 72 65 66 65 72 65 6e 63 65 20 63 61  the reference ca
6c50: 6c 6c 62 61 63 6b 73 20 3c 73 74 72 6f 6e 67 3e  llbacks <strong>
6c60: 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73  tls::callback</s
6c70: 74 72 6f 6e 67 3e 2c 0a 3c 73 74 72 6f 6e 67 3e  trong>,.<strong>
6c80: 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73  tls::password</s
6c90: 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c 73 74 72  trong>, and <str
6ca0: 6f 6e 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74  ong>tls::validat
6cb0: 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e  e_command</stron
6cc0: 67 3e 0a 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  g>.is not recomm
6cd0: 65 6e 64 65 64 2e 20 20 54 68 65 79 20 6d 61 79  ended.  They may
6ce0: 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   be removed from
6cf0: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
6d00: 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a 0a 3c 68  ..</em>.</p>..<h
6d10: 33 3e 3c 61 20 6e 61 6d 65 3d 22 44 45 42 55 47  3><a name="DEBUG
6d20: 22 3e 44 45 42 55 47 3c 2f 61 3e 3c 2f 68 33 3e  ">DEBUG</a></h3>
6d30: 0a 0a 54 4c 53 20 6b 65 79 20 6c 6f 67 67 69 6e  ..TLS key loggin
6d40: 67 20 63 61 6e 20 62 65 20 65 6e 61 62 6c 65 64  g can be enabled
6d50: 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 65 20   by setting the 
6d60: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
6d70: 61 62 6c 65 0a 3c 62 3e 53 53 4c 4b 45 59 4c 4f  able.<b>SSLKEYLO
6d80: 47 46 49 4c 45 3c 2f 62 3e 20 74 6f 20 74 68 65  GFILE</b> to the
6d90: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c   name of the fil
6da0: 65 20 74 6f 20 6c 6f 67 20 74 6f 2e 20 54 68 65  e to log to. The
6db0: 6e 20 77 68 65 6e 65 76 65 72 20 54 4c 53 0a 6b  n whenever TLS.k
6dc0: 65 79 20 6d 61 74 65 72 69 61 6c 20 69 73 20 67  ey material is g
6dd0: 65 6e 65 72 61 74 65 64 20 6f 72 20 72 65 63 65  enerated or rece
6de0: 69 76 65 64 20 69 74 20 77 69 6c 6c 20 62 65 20  ived it will be 
6df0: 6c 6f 67 67 65 64 20 74 6f 20 74 68 65 20 66 69  logged to the fi
6e00: 6c 65 2e 20 54 68 69 73 0a 69 73 20 75 73 65 66  le. This.is usef
6e10: 75 6c 20 66 6f 72 20 6c 6f 67 67 69 6e 67 20 6b  ul for logging k
6e20: 65 79 20 64 61 74 61 20 66 6f 72 20 6e 65 74 77  ey data for netw
6e30: 6f 72 6b 20 6c 6f 67 67 69 6e 67 20 74 6f 6f 6c  ork logging tool
6e40: 73 20 74 6f 20 75 73 65 20 74 6f 0a 64 65 63 72  s to use to.decr
6e50: 79 70 74 20 74 68 65 20 64 61 74 61 2e 0a 0a 3c  ypt the data...<
6e60: 70 3e 0a 54 68 65 20 3c 73 74 72 6f 6e 67 3e 74  p>.The <strong>t
6e70: 6c 73 3a 3a 64 65 62 75 67 3c 2f 73 74 72 6f 6e  ls::debug</stron
6e80: 67 3e 20 76 61 72 69 61 62 6c 65 20 70 72 6f 76  g> variable prov
6e90: 69 64 65 73 20 73 6f 6d 65 20 61 64 64 69 74 69  ides some additi
6ea0: 6f 6e 61 6c 0a 63 6f 6e 74 72 6f 6c 20 6f 76 65  onal.control ove
6eb0: 72 20 74 68 65 73 65 20 72 65 66 65 72 65 6e 63  r these referenc
6ec0: 65 20 63 61 6c 6c 62 61 63 6b 73 2e 20 20 49 74  e callbacks.  It
6ed0: 73 20 76 61 6c 75 65 20 69 73 20 7a 65 72 6f 20  s value is zero 
6ee0: 62 79 20 64 65 66 61 75 6c 74 2e 0a 48 69 67 68  by default..High
6ef0: 65 72 20 76 61 6c 75 65 73 20 70 72 6f 64 75 63  er values produc
6f00: 65 20 6d 6f 72 65 20 64 69 61 67 6e 6f 73 74 69  e more diagnosti
6f10: 63 20 6f 75 74 70 75 74 2c 20 61 6e 64 20 77 69  c output, and wi
6f20: 6c 6c 20 61 6c 73 6f 20 66 6f 72 63 65 20 74 68  ll also force th
6f30: 65 0a 76 65 72 69 66 79 20 6d 65 74 68 6f 64 20  e.verify method 
6f40: 69 6e 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  in <strong>tls::
6f50: 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72 6f 6e 67  callback</strong
6f60: 3e 20 74 6f 20 61 63 63 65 70 74 20 74 68 65 0a  > to accept the.
6f70: 63 65 72 74 69 66 69 63 61 74 65 2c 20 65 76 65  certificate, eve
6f80: 6e 20 77 68 65 6e 20 69 74 20 69 73 20 69 6e 76  n when it is inv
6f90: 61 6c 69 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  alid..</p>..<p>.
6fa0: 3c 65 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66 20  <em>.The use of 
6fb0: 74 68 65 20 76 61 72 69 61 62 6c 65 20 3c 73 74  the variable <st
6fc0: 72 6f 6e 67 3e 74 6c 73 3a 3a 64 65 62 75 67 3c  rong>tls::debug<
6fd0: 2f 73 74 72 6f 6e 67 3e 20 69 73 20 6e 6f 74 20  /strong> is not 
6fe0: 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 49 74 20  recommended..It 
6ff0: 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66  may be removed f
7000: 72 6f 6d 20 66 75 74 75 72 65 20 72 65 6c 65 61  rom future relea
7010: 73 65 73 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a  ses..</em>.</p>.
7020: 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 48 54  .<h3><a name="HT
7030: 54 50 53 20 45 58 41 4d 50 4c 45 22 3e 48 54 54  TPS EXAMPLE">HTT
7040: 50 53 20 45 58 41 4d 50 4c 45 3c 2f 61 3e 3c 2f  PS EXAMPLE</a></
7050: 68 33 3e 0a 0a 3c 70 3e 54 68 69 73 20 65 78 61  h3>..<p>This exa
7060: 6d 70 6c 65 20 75 73 65 73 20 61 20 73 61 6d 70  mple uses a samp
7070: 6c 65 20 73 65 72 76 65 72 2e 70 65 6d 20 70 72  le server.pem pr
7080: 6f 76 69 64 65 64 20 77 69 74 68 20 74 68 65 20  ovided with the 
7090: 54 4c 53 20 72 65 6c 65 61 73 65 2c 0a 63 6f 75  TLS release,.cou
70a0: 72 74 65 73 79 20 6f 66 20 74 68 65 20 3c 73 74  rtesy of the <st
70b0: 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74  rong>OpenSSL</st
70c0: 72 6f 6e 67 3e 20 70 72 6f 6a 65 63 74 2e 3c 2f  rong> project.</
70d0: 70 3e 0a 0a 3c 70 72 65 3e 3c 63 6f 64 65 3e 0a  p>..<pre><code>.
70e0: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
70f0: 68 74 74 70 0a 70 61 63 6b 61 67 65 20 72 65 71  http.package req
7100: 75 69 72 65 20 74 6c 73 0a 0a 68 74 74 70 3a 3a  uire tls..http::
7110: 72 65 67 69 73 74 65 72 20 68 74 74 70 73 20 34  register https 4
7120: 34 33 20 5b 6c 69 73 74 20 3a 3a 74 6c 73 3a 3a  43 [list ::tls::
7130: 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73 65 72 76  socket -autoserv
7140: 65 72 6e 61 6d 65 20 74 72 75 65 20 2d 72 65 71  ername true -req
7150: 75 69 72 65 20 74 72 75 65 20 2d 63 61 64 69 72  uire true -cadir
7160: 20 2f 65 74 63 2f 73 73 6c 2f 63 65 72 74 73 5d   /etc/ssl/certs]
7170: 0a 0a 73 65 74 20 74 6f 6b 20 5b 68 74 74 70 3a  ..set tok [http:
7180: 3a 67 65 74 75 72 6c 20 68 74 74 70 73 3a 2f 2f  :geturl https://
7190: 77 77 77 2e 74 63 6c 2e 74 6b 2f 5d 0a 3c 2f 63  www.tcl.tk/].</c
71a0: 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 68 33 3e  ode></pre>..<h3>
71b0: 3c 61 20 6e 61 6d 65 3d 22 53 50 45 43 49 41 4c  <a name="SPECIAL
71c0: 20 43 4f 4e 53 49 44 45 52 41 54 49 4f 4e 53 22   CONSIDERATIONS"
71d0: 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53 49 44 45  >SPECIAL CONSIDE
71e0: 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 68 33 3e  RATIONS</a></h3>
71f0: 0a 0a 3c 70 3e 54 68 65 20 63 61 70 61 62 69 6c  ..<p>The capabil
7200: 69 74 69 65 73 20 6f 66 20 74 68 69 73 20 70 61  ities of this pa
7210: 63 6b 61 67 65 20 63 61 6e 20 76 61 72 79 20 65  ckage can vary e
7220: 6e 6f 72 6d 6f 75 73 6c 79 20 62 61 73 65 64 20  normously based 
7230: 75 70 6f 6e 20 68 6f 77 20 74 68 65 0a 6c 69 6e  upon how the.lin
7240: 6b 65 64 20 74 6f 20 4f 70 65 6e 53 53 4c 20 6c  ked to OpenSSL l
7250: 69 62 72 61 72 79 20 77 61 73 20 63 6f 6e 66 69  ibrary was confi
7260: 67 75 72 65 64 20 61 6e 64 20 62 75 69 6c 74 2e  gured and built.
7270: 20 4e 65 77 20 76 65 72 73 69 6f 6e 73 20 6d 61   New versions ma
7280: 79 20 6f 62 73 6f 6c 65 74 65 0a 6f 6c 64 65 72  y obsolete.older
7290: 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f   protocol versio
72a0: 6e 73 2c 20 61 64 64 20 6f 72 20 72 65 6d 6f 76  ns, add or remov
72b0: 65 20 63 69 70 68 65 72 73 2c 20 63 68 61 6e 67  e ciphers, chang
72c0: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73  e default values
72d0: 2c 20 65 74 63 2e 0a 55 73 65 20 74 68 65 20 3c  , etc..Use the <
72e0: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 72 6f 74  strong>tls::prot
72f0: 6f 63 6f 6c 73 3c 2f 73 74 72 6f 6e 67 3e 20 63  ocols</strong> c
7300: 6f 6d 6d 61 6e 64 73 20 74 6f 20 6f 62 74 61 69  ommands to obtai
7310: 6e 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0a  n the supported.
7320: 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e  protocol version
7330: 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e  s.</p>..<h3><a n
7340: 61 6d 65 3d 22 53 45 45 20 41 4c 53 4f 22 3e 53  ame="SEE ALSO">S
7350: 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 68 33 3e  EE ALSO</a></h3>
7360: 0a 0a 3c 70 3e 3c 73 74 72 6f 6e 67 3e 73 6f 63  ..<p><strong>soc
7370: 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73  ket</strong>, <s
7380: 74 72 6f 6e 67 3e 66 69 6c 65 65 76 65 6e 74 2c  trong>fileevent,
7390: 20 3c 2f 73 74 72 6f 6e 67 3e 3c 61 0a 68 72 65   </strong><a.hre
73a0: 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6f 70  f="http://www.op
73b0: 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 3c 73 74 72  enssl.org/"><str
73c0: 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74 72  ong>OpenSSL</str
73d0: 6f 6e 67 3e 3c 2f 61 3e 3c 2f 70 3e 0a 0a 3c 68  ong></a></p>..<h
73e0: 72 3e 0a 0a 3c 70 72 65 3e 0a 43 6f 70 79 72 69  r>..<pre>.Copyri
73f0: 67 68 74 20 26 63 6f 70 79 3b 20 31 39 39 39 20  ght &copy; 1999 
7400: 4d 61 74 74 20 4e 65 77 6d 61 6e 2e 0a 43 6f 70  Matt Newman..Cop
7410: 79 72 69 67 68 74 20 26 63 6f 70 79 3b 20 32 30  yright &copy; 20
7420: 30 34 20 53 74 61 72 66 69 73 68 20 53 79 73 74  04 Starfish Syst
7430: 65 6d 73 2e 0a 3c 2f 70 72 65 3e 0a 3c 2f 62 6f  ems..</pre>.</bo
7440: 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a              dy>.</html>.