Hex Artifact Content

Artifact 8b6783e55cfcf12c4b649adba049bba5381fc32af6c7871daa5931b9432b63b9:


0000: 3c 21 64 6f 63 74 79 70 65 20 68 74 6d 6c 20 70  <!doctype html p
0010: 75 62 6c 69 63 20 22 2d 2f 2f 57 33 43 2f 2f 44  ublic "-//W3C//D
0020: 54 44 20 48 54 4d 4c 20 34 2e 30 20 54 72 61 6e  TD HTML 4.0 Tran
0030: 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e 22 3e 0a 0a  sitional//EN">..
0040: 3c 68 74 6d 6c 3e 0a 0a 3c 68 65 61 64 3e 0a 3c  <html>..<head>.<
0050: 6d 65 74 61 20 68 74 74 70 2d 65 71 75 69 76 3d  meta http-equiv=
0060: 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 0a 63  "Content-Type".c
0070: 6f 6e 74 65 6e 74 3d 22 74 65 78 74 2f 68 74 6d  ontent="text/htm
0080: 6c 3b 20 63 68 61 72 73 65 74 3d 69 73 6f 2d 38  l; charset=iso-8
0090: 38 35 39 2d 31 22 3e 0a 3c 6d 65 74 61 20 6e 61  859-1">.<meta na
00a0: 6d 65 3d 22 43 6f 70 79 72 69 67 68 74 22 20 63  me="Copyright" c
00b0: 6f 6e 74 65 6e 74 3d 22 31 39 39 39 20 4d 61 74  ontent="1999 Mat
00c0: 74 20 4e 65 77 6d 61 6e 20 2f 20 32 30 30 34 20  t Newman / 2004 
00d0: 53 74 61 72 66 69 73 68 20 53 79 73 74 65 6d 73  Starfish Systems
00e0: 22 3e 0a 3c 74 69 74 6c 65 3e 54 4c 53 20 28 53  ">.<title>TLS (S
00f0: 53 4c 29 20 54 63 6c 20 43 6f 6d 6d 61 6e 64 73  SL) Tcl Commands
0100: 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e  </title>.</head>
0110: 0a 0a 3c 62 6f 64 79 20 62 67 63 6f 6c 6f 72 3d  ..<body bgcolor=
0120: 22 23 46 46 46 46 46 46 22 3e 0a 0a 3c 64 6c 3e  "#FFFFFF">..<dl>
0130: 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65 66  .    <dd><a href
0140: 3d 22 23 4e 41 4d 45 22 3e 4e 41 4d 45 3c 2f 61  ="#NAME">NAME</a
0150: 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 64 3e  >.    <dl>..<dd>
0160: 3c 62 3e 74 6c 73 3c 2f 62 3e 20 2d 20 62 69 6e  <b>tls</b> - bin
0170: 64 69 6e 67 20 74 6f 20 3c 62 3e 4f 70 65 6e 53  ding to <b>OpenS
0180: 53 4c 3c 2f 62 3e 20 74 6f 6f 6c 6b 69 74 2e 3c  SL</b> toolkit.<
0190: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 20  /dd>.    </dl>. 
01a0: 20 20 20 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64     </dd>.    <dd
01b0: 3e 3c 61 20 68 72 65 66 3d 22 23 53 59 4e 4f 50  ><a href="#SYNOP
01c0: 53 49 53 22 3e 53 59 4e 4f 50 53 49 53 3c 2f 61  SIS">SYNOPSIS</a
01d0: 3e 20 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e  > </dd>.    <dd>
01e0: 3c 64 6c 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  <dl>..    <dd><b
01f0: 3e 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  >package require
0200: 20 54 63 6c 3c 2f 62 3e 20 3c 65 6d 3e 3f 38 2e   Tcl</b> <em>?8.
0210: 34 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20 20  4?</em></dd>..  
0220: 20 20 3c 64 64 3e 3c 62 3e 70 61 63 6b 61 67 65    <dd><b>package
0230: 20 72 65 71 75 69 72 65 20 74 6c 73 3c 2f 62 3e   require tls</b>
0240: 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 74 3e 26  </dd>..    <dt>&
0250: 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 20 20 20 20  nbsp;</dt>..    
0260: 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74  <dd><b>tls::init
0270: 3c 2f 62 3e 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e  </b> <em>?option
0280: 73 3f 3c 2f 65 6d 3e 20 3c 2f 64 64 3e 0a 09 20  s?</em> </dd>.. 
0290: 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 73     <dd><b>tls::s
02a0: 6f 63 6b 65 74 3c 2f 62 3e 20 3c 65 6d 3e 3f 6f  ocket</b> <em>?o
02b0: 70 74 69 6f 6e 73 3f 20 68 6f 73 74 20 70 6f 72  ptions? host por
02c0: 74 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20  t</em></dd>..   
02d0: 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63   <dd><b>tls::soc
02e0: 6b 65 74 3c 2f 62 3e 20 3c 65 6d 3e 20 3f 2d 73  ket</b> <em> ?-s
02f0: 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64 3f 20 3f  erver command? ?
0300: 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74 3c 2f 65  options? port</e
0310: 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64  m></dd>..    <dd
0320: 3e 3c 62 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61  ><b>tls::handsha
0330: 6b 65 3c 2f 62 3e 20 3c 65 6d 3e 20 63 68 61 6e  ke</b> <em> chan
0340: 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20  nel</em></dd>.. 
0350: 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 73     <dd><b>tls::s
0360: 74 61 74 75 73 20 3c 2f 62 3e 20 3c 65 6d 3e 3f  tatus </b> <em>?
0370: 2d 6c 6f 63 61 6c 3f 20 63 68 61 6e 6e 65 6c 3c  -local? channel<
0380: 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c  /em></dd>..    <
0390: 64 64 3e 3c 62 3e 74 6c 73 3a 3a 63 6f 6e 6e 65  dd><b>tls::conne
03a0: 63 74 69 6f 6e 20 3c 2f 62 3e 20 3c 65 6d 3e 63  ction </b> <em>c
03b0: 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e  hannel</em></dd>
03c0: 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73  ..    <dd><b>tls
03d0: 3a 3a 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c 65 6d  ::import</b> <em
03e0: 3e 63 68 61 6e 6e 65 6c 20 3f 6f 70 74 69 6f 6e  >channel ?option
03f0: 73 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20 20  s?</em></dd>..  
0400: 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 75 6e    <dd><b>tls::un
0410: 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c 65 6d 3e 63  import</b> <em>c
0420: 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e  hannel</em></dd>
0430: 0a 09 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b  ..    <dt>&nbsp;
0440: 3c 2f 64 74 3e 0a 09 20 20 20 20 3c 64 64 3e 3c  </dt>..    <dd><
0450: 62 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73 3c 2f  b>tls::ciphers</
0460: 62 3e 20 3c 65 6d 3e 3f 70 72 6f 74 6f 63 6f 6c  b> <em>?protocol
0470: 3f 20 3f 76 65 72 62 6f 73 65 3f 20 3f 73 75 70  ? ?verbose? ?sup
0480: 70 6f 72 74 65 64 3f 3c 2f 65 6d 3e 3c 2f 64 64  ported?</em></dd
0490: 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c  >..    <dd><b>tl
04a0: 73 3a 3a 64 69 67 65 73 74 73 3c 2f 62 3e 3c 2f  s::digests</b></
04b0: 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e  dd>..    <dd><b>
04c0: 74 6c 73 3a 3a 6d 61 63 73 3c 2f 62 3e 3c 2f 64  tls::macs</b></d
04d0: 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74  d>..    <dd><b>t
04e0: 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62  ls::protocols</b
04f0: 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e  ></dd>..    <dd>
0500: 3c 62 3e 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c  <b>tls::version<
0510: 2f 62 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64  /b></dd>..    <d
0520: 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 20  t>&nbsp;</dt>.. 
0530: 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 64     <dd><b>tls::d
0540: 69 67 65 73 74 3c 2f 62 3e 20 3c 65 6d 3e 74 79  igest</b> <em>ty
0550: 70 65 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f  pe ?-bin|-hex? ?
0560: 2d 6b 65 79 20 68 6d 61 63 5f 6b 65 79 3f 20 5b  -key hmac_key? [
0570: 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c  -file filename |
0580: 20 2d 63 68 61 6e 20 63 68 61 6e 6e 65 6c 20 7c   -chan channel |
0590: 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 3c 2f   ?-data? data]</
05a0: 65 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64  em></dd>..    <d
05b0: 64 3e 3c 62 3e 74 6c 73 3a 3a 6d 64 34 3c 2f 62  d><b>tls::md4</b
05c0: 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c  > <em>data</em><
05d0: 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  /dd>..    <dd><b
05e0: 3e 74 6c 73 3a 3a 6d 64 35 3c 2f 62 3e 20 3c 65  >tls::md5</b> <e
05f0: 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c 2f 64 64 3e  m>data</em></dd>
0600: 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73  ..    <dd><b>tls
0610: 3a 3a 73 68 61 31 3c 2f 62 3e 20 3c 65 6d 3e 64  ::sha1</b> <em>d
0620: 61 74 61 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20  ata</em></dd>.. 
0630: 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 73     <dd><b>tls::s
0640: 68 61 32 35 36 3c 2f 62 3e 20 3c 65 6d 3e 64 61  ha256</b> <em>da
0650: 74 61 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 2f  ta</em></dd>..</
0660: 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 20 20  dl>.    </dd>.  
0670: 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23    <dd><a href="#
0680: 43 4f 4d 4d 41 4e 44 53 22 3e 43 4f 4d 4d 41 4e  COMMANDS">COMMAN
0690: 44 53 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20 20 20  DS</a></dd>.    
06a0: 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 43 41  <dd><a href="#CA
06b0: 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e  LLBACK OPTIONS">
06c0: 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53  CALLBACK OPTIONS
06d0: 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64  </a></dd>.    <d
06e0: 64 3e 3c 61 20 68 72 65 66 3d 22 23 48 54 54 50  d><a href="#HTTP
06f0: 53 20 45 58 41 4d 50 4c 45 22 3e 48 54 54 50 53  S EXAMPLE">HTTPS
0700: 20 45 58 41 4d 50 4c 45 3c 2f 61 3e 3c 2f 64 64   EXAMPLE</a></dd
0710: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65  >.    <dd><a hre
0720: 66 3d 22 23 53 45 45 20 41 4c 53 4f 22 3e 53 50  f="#SEE ALSO">SP
0730: 45 43 49 41 4c 20 43 4f 4e 53 49 44 45 52 41 54  ECIAL CONSIDERAT
0740: 49 4f 4e 53 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20  IONS</a></dd>.  
0750: 20 20 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23    <dd><a href="#
0760: 53 45 45 20 41 4c 53 4f 22 3e 53 45 45 20 41 4c  SEE ALSO">SEE AL
0770: 53 4f 3c 2f 61 3e 3c 2f 64 64 3e 0a 3c 2f 64 6c  SO</a></dd>.</dl
0780: 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20  >..<hr>..<h3><a 
0790: 6e 61 6d 65 3d 22 4e 41 4d 45 22 3e 4e 41 4d 45  name="NAME">NAME
07a0: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 3c 73  </a></h3>..<p><s
07b0: 74 72 6f 6e 67 3e 74 6c 73 3c 2f 73 74 72 6f 6e  trong>tls</stron
07c0: 67 3e 20 2d 20 62 69 6e 64 69 6e 67 20 74 6f 20  g> - binding to 
07d0: 3c 73 74 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c  <strong>OpenSSL<
07e0: 2f 73 74 72 6f 6e 67 3e 0a 74 6f 6f 6c 6b 69 74  /strong>.toolkit
07f0: 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61  .</p>..<h3><a na
0800: 6d 65 3d 22 53 59 4e 4f 50 53 49 53 22 3e 53 59  me="SYNOPSIS">SY
0810: 4e 4f 50 53 49 53 3c 2f 61 3e 3c 2f 68 33 3e 0a  NOPSIS</a></h3>.
0820: 0a 3c 70 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72  .<p><b>package r
0830: 65 71 75 69 72 65 20 54 63 6c 20 38 2e 35 3c 2f  equire Tcl 8.5</
0840: 62 3e 3c 62 72 3e 0a 3c 62 3e 70 61 63 6b 61 67  b><br>.<b>packag
0850: 65 20 72 65 71 75 69 72 65 20 74 6c 73 3c 2f 62  e require tls</b
0860: 3e 3c 62 72 3e 0a 3c 62 72 3e 0a 3c 61 20 68 72  ><br>.<br>.<a hr
0870: 65 66 3d 22 23 74 6c 73 3a 3a 69 6e 69 74 22 3e  ef="#tls::init">
0880: 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74 3c 2f 62 3e  <b>tls::init</b>
0890: 20 3c 69 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69   <i>?options?</i
08a0: 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65  ></a><br>.<a hre
08b0: 66 3d 22 23 74 6c 73 3a 3a 73 6f 63 6b 65 74 22  f="#tls::socket"
08c0: 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c  ><b>tls::socket<
08d0: 2f 62 3e 20 3c 69 3e 3f 6f 70 74 69 6f 6e 73 3f  /b> <i>?options?
08e0: 20 68 6f 73 74 20 70 6f 72 74 3c 2f 69 3e 3c 62   host port</i><b
08f0: 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73  r>.<a href="#tls
0900: 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c 73  ::socket"><b>tls
0910: 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c 69 3e  ::socket</b> <i>
0920: 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64  ?-server command
0930: 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74  ? ?options? port
0940: 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20  </i></a><br>.<a 
0950: 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 74 61 74  href="#tls::stat
0960: 75 73 22 3e 3c 62 3e 74 6c 73 3a 3a 73 74 61 74  us"><b>tls::stat
0970: 75 73 3c 2f 62 3e 20 3c 69 3e 3f 2d 6c 6f 63 61  us</b> <i>?-loca
0980: 6c 3f 20 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f  l? channel</i></
0990: 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22  a><br>.<a href="
09a0: 23 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e  #tls::connection
09b0: 22 3e 3c 62 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 63  "><b>tls::connec
09c0: 74 69 6f 6e 3c 2f 62 3e 20 3c 69 3e 63 68 61 6e  tion</b> <i>chan
09d0: 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a  nel</i></a><br>.
09e0: 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 68  <a href="#tls::h
09f0: 61 6e 64 73 68 61 6b 65 22 3e 3c 62 3e 74 6c 73  andshake"><b>tls
0a00: 3a 3a 68 61 6e 64 73 68 61 6b 65 3c 2f 62 3e 20  ::handshake</b> 
0a10: 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f  <i>channel</i></
0a20: 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22  a><br>.<a href="
0a30: 23 74 6c 73 3a 3a 69 6d 70 6f 72 74 22 3e 3c 62  #tls::import"><b
0a40: 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 62 3e  >tls::import</b>
0a50: 20 3c 69 3e 63 68 61 6e 6e 65 6c 20 3f 6f 70 74   <i>channel ?opt
0a60: 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72  ions?</i></a><br
0a70: 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a  >.<a href="#tls:
0a80: 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c  :unimport"><b>tl
0a90: 73 3a 3a 75 6e 69 6d 70 6f 72 74 3c 2f 62 3e 20  s::unimport</b> 
0aa0: 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f  <i>channel</i></
0ab0: 61 3e 3c 62 72 3e 0a 3c 62 72 3e 0a 3c 61 20 68  a><br>.<br>.<a h
0ac0: 72 65 66 3d 22 23 74 6c 73 3a 3a 63 69 70 68 65  ref="#tls::ciphe
0ad0: 72 73 22 3e 3c 62 3e 74 6c 73 3a 3a 63 69 70 68  rs"><b>tls::ciph
0ae0: 65 72 73 3c 2f 62 3e 20 3c 69 3e 3f 70 72 6f 74  ers</b> <i>?prot
0af0: 6f 63 6f 6c 3f 20 3f 76 65 72 62 6f 73 65 3f 20  ocol? ?verbose? 
0b00: 3f 73 75 70 70 6f 72 74 65 64 3f 3c 2f 69 3e 3c  ?supported?</i><
0b10: 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d  /a><br>.<a href=
0b20: 22 23 74 6c 73 3a 3a 64 69 67 65 73 74 73 22 3e  "#tls::digests">
0b30: 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74 73 3c  <b>tls::digests<
0b40: 2f 62 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68  /b></a><br>.<a h
0b50: 72 65 66 3d 22 23 74 6c 73 3a 3a 6d 61 63 73 22  ref="#tls::macs"
0b60: 3e 3c 62 3e 74 6c 73 3a 3a 6d 61 63 73 3c 2f 62  ><b>tls::macs</b
0b70: 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65  ></a><br>.<a hre
0b80: 66 3d 22 23 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f  f="#tls::protoco
0b90: 6c 73 22 3e 3c 62 3e 74 6c 73 3a 3a 70 72 6f 74  ls"><b>tls::prot
0ba0: 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f 61 3e 3c 62 72  ocols</b></a><br
0bb0: 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a  >.<a href="#tls:
0bc0: 3a 76 65 72 73 69 6f 6e 22 3e 3c 62 3e 74 6c 73  :version"><b>tls
0bd0: 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c 2f 61  ::version</b></a
0be0: 3e 3c 62 72 3e 0a 3c 62 72 3e 0a 3c 61 20 68 72  ><br>.<br>.<a hr
0bf0: 65 66 3d 22 23 74 6c 73 3a 3a 64 69 67 65 73 74  ef="#tls::digest
0c00: 22 3e 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74  "><b>tls::digest
0c10: 3c 2f 62 3e 20 3c 69 3e 74 79 70 65 20 3f 2d 62  </b> <i>type ?-b
0c20: 69 6e 7c 2d 68 65 78 3f 20 3f 2d 6b 65 79 20 68  in|-hex? ?-key h
0c30: 6d 61 63 5f 6b 65 79 3f 20 5b 2d 66 69 6c 65 20  mac_key? [-file 
0c40: 66 69 6c 65 6e 61 6d 65 20 7c 20 2d 63 68 61 6e  filename | -chan
0c50: 20 63 68 61 6e 6e 65 6c 20 7c 20 3f 2d 64 61 74   channel | ?-dat
0c60: 61 3f 20 64 61 74 61 5d 3c 2f 69 3e 3c 2f 61 3e  a? data]</i></a>
0c70: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
0c80: 6c 73 3a 3a 6d 64 34 22 3e 3c 62 3e 74 6c 73 3a  ls::md4"><b>tls:
0c90: 3a 6d 64 34 3c 2f 62 3e 20 3c 69 3e 64 61 74 61  :md4</b> <i>data
0ca0: 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20  </i></a><br>.<a 
0cb0: 68 72 65 66 3d 22 23 74 6c 73 3a 3a 6d 64 35 22  href="#tls::md5"
0cc0: 3e 3c 62 3e 74 6c 73 3a 3a 6d 64 35 3c 2f 62 3e  ><b>tls::md5</b>
0cd0: 20 3c 69 3e 64 61 74 61 3c 2f 69 3e 3c 2f 61 3e   <i>data</i></a>
0ce0: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
0cf0: 6c 73 3a 3a 73 68 61 31 22 3e 3c 62 3e 74 6c 73  ls::sha1"><b>tls
0d00: 3a 3a 73 68 61 31 3c 2f 62 3e 20 3c 69 3e 64 61  ::sha1</b> <i>da
0d10: 74 61 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c  ta</i></a><br>.<
0d20: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 68  a href="#tls::sh
0d30: 61 32 35 36 22 3e 3c 62 3e 74 6c 73 3a 3a 73 68  a256"><b>tls::sh
0d40: 61 32 35 36 3c 2f 62 3e 20 3c 69 3e 64 61 74 61  a256</b> <i>data
0d50: 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 2f 70  </i></a><br>.</p
0d60: 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22  >..<h3><a name="
0d70: 44 45 53 43 52 49 50 54 49 4f 4e 22 3e 44 45 53  DESCRIPTION">DES
0d80: 43 52 49 50 54 49 4f 4e 3c 2f 61 3e 3c 2f 68 33  CRIPTION</a></h3
0d90: 3e 0a 0a 3c 70 3e 54 68 69 73 20 65 78 74 65 6e  >..<p>This exten
0da0: 73 69 6f 6e 20 70 72 6f 76 69 64 65 73 20 61 20  sion provides a 
0db0: 67 65 6e 65 72 69 63 20 62 69 6e 64 69 6e 67 20  generic binding 
0dc0: 74 6f 20 3c 61 0a 68 72 65 66 3d 22 68 74 74 70  to <a.href="http
0dd0: 3a 2f 2f 77 77 77 2e 6f 70 65 6e 73 73 6c 2e 6f  ://www.openssl.o
0de0: 72 67 2f 22 3e 4f 70 65 6e 53 53 4c 3c 2f 61 3e  rg/">OpenSSL</a>
0df0: 2c 20 75 74 69 6c 69 7a 69 6e 67 20 74 68 65 0a  , utilizing the.
0e00: 3c 73 74 72 6f 6e 67 3e 54 63 6c 5f 53 74 61 63  <strong>Tcl_Stac
0e10: 6b 43 68 61 6e 6e 65 6c 3c 2f 73 74 72 6f 6e 67  kChannel</strong
0e20: 3e 0a 41 50 49 20 66 6f 72 20 54 63 6c 20 38 2e  >.API for Tcl 8.
0e30: 34 20 61 6e 64 20 68 69 67 68 65 72 2e 20 54 68  4 and higher. Th
0e40: 65 20 73 6f 63 6b 65 74 73 20 62 65 68 61 76 65  e sockets behave
0e50: 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d   exactly the sam
0e60: 65 0a 61 73 20 63 68 61 6e 6e 65 6c 73 20 63 72  e.as channels cr
0e70: 65 61 74 65 64 20 75 73 69 6e 67 20 54 63 6c 27  eated using Tcl'
0e80: 73 20 62 75 69 6c 74 2d 69 6e 20 3c 73 74 72 6f  s built-in <stro
0e90: 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e  ng>socket</stron
0ea0: 67 3e 0a 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20  g>.command with 
0eb0: 61 64 64 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f  additional optio
0ec0: 6e 73 20 66 6f 72 20 63 6f 6e 74 72 6f 6c 6c 69  ns for controlli
0ed0: 6e 67 20 74 68 65 20 53 53 4c 20 73 65 73 73 69  ng the SSL sessi
0ee0: 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61  on..</p>..<h3><a
0ef0: 20 6e 61 6d 65 3d 22 43 4f 4d 4d 41 4e 44 53 22   name="COMMANDS"
0f00: 3e 43 4f 4d 4d 41 4e 44 53 3c 2f 61 3e 3c 2f 68  >COMMANDS</a></h
0f10: 33 3e 0a 0a 3c 70 3e 54 79 70 69 63 61 6c 6c 79  3>..<p>Typically
0f20: 20 6f 6e 65 20 77 6f 75 6c 64 20 75 73 65 20 74   one would use t
0f30: 68 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  he <strong>tls::
0f40: 73 6f 63 6b 65 74 20 3c 2f 73 74 72 6f 6e 67 3e  socket </strong>
0f50: 63 6f 6d 6d 61 6e 64 0a 77 68 69 63 68 20 70 72  command.which pr
0f60: 6f 76 69 64 65 73 20 63 6f 6d 70 61 74 69 62 69  ovides compatibi
0f70: 6c 69 74 79 20 77 69 74 68 20 74 68 65 20 6e 61  lity with the na
0f80: 74 69 76 65 20 54 63 6c 20 3c 73 74 72 6f 6e 67  tive Tcl <strong
0f90: 3e 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e  >socket</strong>
0fa0: 0a 63 6f 6d 6d 61 6e 64 2e 20 49 6e 20 73 75 63  .command. In suc
0fb0: 68 20 63 61 73 65 73 20 3c 73 74 72 6f 6e 67 3e  h cases <strong>
0fc0: 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72  tls::import</str
0fd0: 6f 6e 67 3e 20 73 68 6f 75 6c 64 20 6e 6f 74 20  ong> should not 
0fe0: 62 65 0a 75 73 65 64 20 64 69 72 65 63 74 6c 79  be.used directly
0ff0: 2e 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 20 20 20 20  .</p>..<dl>.    
1000: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73  <dt><a name="tls
1010: 3a 3a 69 6e 69 74 22 3e 3c 62 3e 74 6c 73 3a 3a  ::init"><b>tls::
1020: 69 6e 69 74 20 3c 2f 62 3e 3c 69 3e 3f 6f 70 74  init </b><i>?opt
1030: 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64  ions?</i></a></d
1040: 74 3e 0a 20 20 20 20 3c 64 64 3e 4f 70 74 69 6f  t>.    <dd>Optio
1050: 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  nal function to 
1060: 73 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 20  set the default 
1070: 6f 70 74 69 6f 6e 73 20 75 73 65 64 20 62 79 0a  options used by.
1080: 09 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f  .<strong>tls::so
1090: 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 2e 20 49  cket</strong>. I
10a0: 66 20 79 6f 75 20 63 61 6c 6c 20 3c 73 74 72 6f  f you call <stro
10b0: 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f  ng>tls::import</
10c0: 73 74 72 6f 6e 67 3e 0a 09 64 69 72 65 63 74 6c  strong>..directl
10d0: 79 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 68  y this routine h
10e0: 61 73 20 6e 6f 20 65 66 66 65 63 74 2e 20 41 6e  as no effect. An
10f0: 79 20 6f 66 20 74 68 65 20 6f 70 74 69 6f 6e 73  y of the options
1100: 0a 09 74 68 61 74 20 3c 73 74 72 6f 6e 67 3e 74  ..that <strong>t
1110: 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 73 74 72 6f  ls::socket</stro
1120: 6e 67 3e 20 61 63 63 65 70 74 73 20 63 61 6e 20  ng> accepts can 
1130: 62 65 20 73 65 74 0a 09 75 73 69 6e 67 20 74 68  be set..using th
1140: 69 73 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 6f 75  is command, thou
1150: 67 68 20 79 6f 75 20 73 68 6f 75 6c 64 20 6c 69  gh you should li
1160: 6d 69 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 73  mit your options
1170: 0a 09 74 6f 20 6f 6e 6c 79 20 54 4c 53 20 72 65  ..to only TLS re
1180: 6c 61 74 65 64 20 6f 6e 65 73 2e 3c 2f 64 64 3e  lated ones.</dd>
1190: 0a 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c  .    <dt>&nbsp;<
11a0: 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20  /dt>.    <dt><a 
11b0: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73 6f 63 6b 65  name="tls::socke
11c0: 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65  t"><b>tls::socke
11d0: 74 20 3c 2f 62 3e 3c 65 6d 3e 3f 6f 70 74 69 6f  t </b><em>?optio
11e0: 6e 73 3f 0a 09 68 6f 73 74 20 70 6f 72 74 3c 2f  ns?..host port</
11f0: 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20  em></a></dt>.   
1200: 20 3c 64 74 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63   <dt><b>tls::soc
1210: 6b 65 74 3c 2f 62 3e 3c 65 6d 3e 20 3f 2d 73 65  ket</b><em> ?-se
1220: 72 76 65 72 20 63 6f 6d 6d 61 6e 64 3f 20 3f 6f  rver command? ?o
1230: 70 74 69 6f 6e 73 3f 20 70 6f 72 74 3c 2f 65 6d  ptions? port</em
1240: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 54  ></dt>.    <dd>T
1250: 68 69 73 20 69 73 20 61 20 68 65 6c 70 65 72 20  his is a helper 
1260: 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 75 74  function that ut
1270: 69 6c 69 7a 65 73 20 74 68 65 20 75 6e 64 65 72  ilizes the under
1280: 6c 79 69 6e 67 0a 09 63 6f 6d 6d 61 6e 64 73 20  lying..commands 
1290: 28 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d  (<strong>tls::im
12a0: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 29 2e 20  port</strong>). 
12b0: 49 74 20 62 65 68 61 76 65 73 0a 09 65 78 61 63  It behaves..exac
12c0: 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 73 20  tly the same as 
12d0: 74 68 65 20 6e 61 74 69 76 65 20 54 63 6c 20 3c  the native Tcl <
12e0: 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73  strong>socket</s
12f0: 74 72 6f 6e 67 3e 0a 09 63 6f 6d 6d 61 6e 64 20  trong>..command 
1300: 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20  except that the 
1310: 6f 70 74 69 6f 6e 73 20 63 61 6e 20 69 6e 63 6c  options can incl
1320: 75 64 65 20 61 6e 79 20 6f 66 20 74 68 65 0a 09  ude any of the..
1330: 61 70 70 6c 69 63 61 62 6c 65 20 3c 61 20 68 72  applicable <a hr
1340: 65 66 3d 22 23 74 6c 73 3a 3a 69 6d 70 6f 72 74  ef="#tls::import
1350: 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 69 6d  "><strong>tls:im
1360: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61  port</strong></a
1370: 3e 0a 09 6f 70 74 69 6f 6e 73 20 77 69 74 68 20  >..options with 
1380: 6f 6e 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f  one additional o
1390: 70 74 69 6f 6e 3a 0a 3c 62 6c 6f 63 6b 71 75 6f  ption:.<blockquo
13a0: 74 65 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64  te>.    <dl>..<d
13b0: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 61 75 74 6f 73  t><strong>-autos
13c0: 65 72 76 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e  ervername</stron
13d0: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e  g> <em>bool</em>
13e0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 75 74 6f 6d  </dt>..<dd>Autom
13f0: 61 74 69 63 61 6c 6c 79 20 73 65 6e 64 20 74 68  atically send th
1400: 65 20 2d 73 65 72 76 65 72 6e 61 6d 65 20 61 73  e -servername as
1410: 20 74 68 65 20 3c 65 6d 3e 68 6f 73 74 3c 2f 65   the <em>host</e
1420: 6d 3e 20 61 72 67 75 6d 65 6e 74 0a 09 20 20 20  m> argument..   
1430: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d   (default is <em
1440: 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64  >false</em>)</dd
1450: 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c  >.    </dl>.</bl
1460: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c  ockquote>..    <
1470: 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a  dt><a name="tls:
1480: 3a 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a  :import"><b>tls:
1490: 3a 69 6d 70 6f 72 74 20 3c 2f 62 3e 3c 69 3e 63  :import </b><i>c
14a0: 68 61 6e 6e 65 6c 0a 09 3f 6f 70 74 69 6f 6e 73  hannel..?options
14b0: 3f 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  ?</i></a></dt>. 
14c0: 20 20 20 3c 64 64 3e 53 53 4c 2d 65 6e 61 62 6c     <dd>SSL-enabl
14d0: 65 20 61 20 72 65 67 75 6c 61 72 20 54 63 6c 20  e a regular Tcl 
14e0: 63 68 61 6e 6e 65 6c 20 2d 20 69 74 20 6e 65 65  channel - it nee
14f0: 64 20 6e 6f 74 20 62 65 20 61 0a 09 73 6f 63 6b  d not be a..sock
1500: 65 74 2c 20 62 75 74 20 6d 75 73 74 20 70 72 6f  et, but must pro
1510: 76 69 64 65 20 62 69 2d 64 69 72 65 63 74 69 6f  vide bi-directio
1520: 6e 61 6c 20 66 6c 6f 77 2e 20 41 6c 73 6f 0a 09  nal flow. Also..
1530: 73 65 74 74 69 6e 67 20 73 65 73 73 69 6f 6e 20  setting session 
1540: 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 53  parameters for S
1550: 53 4c 20 68 61 6e 64 73 68 61 6b 65 2e 3c 2f 64  SL handshake.</d
1560: 64 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  d>..<blockquote>
1570: 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c  .    <dl>..<dt><
1580: 73 74 72 6f 6e 67 3e 2d 61 6c 70 6e 3c 2f 73 74  strong>-alpn</st
1590: 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f  rong> <em>list</
15a0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69  em></dt>..<dd>Li
15b0: 73 74 20 6f 66 20 70 72 6f 74 6f 63 6f 6c 73 20  st of protocols 
15c0: 74 6f 20 6f 66 66 65 72 20 64 75 72 69 6e 67 20  to offer during 
15d0: 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79 65  Application-Laye
15e0: 72 0a 09 20 20 20 20 50 72 6f 74 6f 63 6f 6c 20  r..    Protocol 
15f0: 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50  Negotiation (ALP
1600: 4e 29 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a  N). For example:
1610: 20 3c 65 6d 3e 68 32 3c 2f 65 6d 3e 20 61 6e 64   <em>h2</em> and
1620: 0a 09 20 20 20 20 3c 65 6d 3e 68 74 74 70 2f 31  ..    <em>http/1
1630: 2e 31 3c 2f 65 6d 3e 2c 20 62 75 74 20 6e 6f 74  .1</em>, but not
1640: 20 3c 65 6d 3e 68 33 3c 2f 65 6d 3e 20 6f 72 20   <em>h3</em> or 
1650: 3c 65 6d 3e 71 75 69 63 3c 2f 65 6d 3e 2e 3c 2f  <em>quic</em>.</
1660: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
1670: 3e 2d 63 61 64 69 72 3c 2f 73 74 72 6f 6e 67 3e  >-cadir</strong>
1680: 20 3c 65 6d 3e 64 69 72 3c 2f 65 6d 3e 3c 2f 64   <em>dir</em></d
1690: 74 3e 0a 09 3c 64 64 3e 53 65 74 20 74 68 65 20  t>..<dd>Set the 
16a0: 43 41 20 63 65 72 74 69 66 69 63 61 74 65 73 20  CA certificates 
16b0: 70 61 74 68 2e 20 54 68 65 20 64 65 66 61 75 6c  path. The defaul
16c0: 74 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 70  t directory is p
16d0: 6c 61 74 66 6f 72 6d 0a 09 20 20 20 20 73 70 65  latform..    spe
16e0: 63 69 66 69 63 20 61 6e 64 20 63 61 6e 20 62 65  cific and can be
16f0: 20 73 65 74 20 61 74 20 63 6f 6d 70 69 6c 65 20   set at compile 
1700: 74 69 6d 65 2e 20 54 68 69 73 20 63 61 6e 20 62  time. This can b
1710: 65 20 6f 76 65 72 72 69 64 64 65 6e 0a 09 20 20  e overridden..  
1720: 20 20 76 69 61 20 74 68 65 20 3c 62 3e 53 53 4c    via the <b>SSL
1730: 5f 43 45 52 54 5f 44 49 52 3c 2f 62 3e 20 65 6e  _CERT_DIR</b> en
1740: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
1750: 6c 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  le.</dd>..<dt><s
1760: 74 72 6f 6e 67 3e 2d 63 61 66 69 6c 65 20 3c 2f  trong>-cafile </
1770: 73 74 72 6f 6e 67 3e 3c 65 6d 3e 66 69 6c 65 6e  strong><em>filen
1780: 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ame</em></dt>..<
1790: 64 64 3e 53 65 74 20 74 68 65 20 63 65 72 74 69  dd>Set the certi
17a0: 66 69 63 61 74 65 20 61 75 74 68 6f 72 69 74 79  ficate authority
17b0: 20 28 43 41 29 20 63 65 72 74 69 66 69 63 61 74   (CA) certificat
17c0: 65 73 20 66 69 6c 65 2e 20 54 68 65 20 64 65 66  es file. The def
17d0: 61 75 6c 74 0a 09 20 20 20 20 69 73 20 74 68 65  ault..    is the
17e0: 20 63 65 72 74 2e 70 65 6d 20 66 69 6c 65 20 69   cert.pem file i
17f0: 6e 20 74 68 65 20 4f 70 73 6e 53 53 4c 20 64 69  n the OpsnSSL di
1800: 72 65 63 74 6f 72 79 2e 20 54 68 69 73 20 63 61  rectory. This ca
1810: 6e 20 61 6c 73 6f 20 62 65 0a 09 20 20 20 20 6f  n also be..    o
1820: 76 65 72 72 69 64 64 65 6e 20 76 69 61 20 74 68  verridden via th
1830: 65 20 3c 62 3e 53 53 4c 5f 43 45 52 54 5f 46 49  e <b>SSL_CERT_FI
1840: 4c 45 3c 2f 62 3e 20 65 6e 76 69 72 6f 6e 6d 65  LE</b> environme
1850: 6e 74 20 76 61 72 69 61 62 6c 65 2e 3c 2f 64 64  nt variable.</dd
1860: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
1870: 63 65 72 74 66 69 6c 65 3c 2f 73 74 72 6f 6e 67  certfile</strong
1880: 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f  > <em>filename</
1890: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70  em></dt>..<dd>Sp
18a0: 65 63 69 66 79 20 74 68 65 20 66 69 6c 65 6e 61  ecify the filena
18b0: 6d 65 20 77 69 74 68 20 74 68 65 20 63 65 72 74  me with the cert
18c0: 69 66 69 63 61 74 65 20 74 6f 20 75 73 65 2e 3c  ificate to use.<
18d0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
18e0: 67 3e 2d 63 65 72 74 3c 2f 73 74 72 6f 6e 67 3e  g>-cert</strong>
18f0: 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65   <em>filename</e
1900: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65  m></dt>..<dd>Spe
1910: 63 69 66 79 20 74 68 65 20 63 6f 6e 74 65 6e 74  cify the content
1920: 73 20 6f 66 20 61 20 63 65 72 74 69 66 69 63 61  s of a certifica
1930: 74 65 20 74 6f 20 75 73 65 2c 20 61 73 20 61 20  te to use, as a 
1940: 44 45 52 0a 09 20 20 20 20 65 6e 63 6f 64 65 64  DER..    encoded
1950: 20 62 69 6e 61 72 79 20 76 61 6c 75 65 20 28 58   binary value (X
1960: 2e 35 30 39 20 44 45 52 29 2e 3c 2f 64 64 3e 0a  .509 DER).</dd>.
1970: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 69  .<dt><strong>-ci
1980: 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  pher</strong> <e
1990: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64  m>string</em></d
19a0: 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20  t>..<dd>List of 
19b0: 63 69 70 68 65 72 73 20 74 6f 20 75 73 65 2e 20  ciphers to use. 
19c0: 53 74 72 69 6e 67 20 69 73 20 61 20 63 6f 6c 6f  String is a colo
19d0: 6e 20 28 22 3a 22 29 20 73 65 70 61 72 61 74 65  n (":") separate
19e0: 64 20 6c 69 73 74 0a 09 20 20 20 20 6f 66 20 63  d list..    of c
19f0: 69 70 68 65 72 73 20 6f 72 20 63 69 70 68 65 72  iphers or cipher
1a00: 20 73 75 69 74 65 73 2e 20 43 69 70 68 65 72 20   suites. Cipher 
1a10: 73 75 69 74 65 73 20 63 61 6e 20 62 65 20 63 6f  suites can be co
1a20: 6d 62 69 6e 65 64 0a 09 20 20 20 20 75 73 69 6e  mbined..    usin
1a30: 67 20 74 68 65 20 3c 62 3e 2b 3c 2f 62 3e 20 63  g the <b>+</b> c
1a40: 68 61 72 61 63 74 65 72 2e 20 50 72 65 66 69 78  haracter. Prefix
1a50: 65 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  es can be used t
1a60: 6f 20 70 65 72 6d 61 6e 65 6e 74 6c 79 0a 09 20  o permanently.. 
1a70: 20 20 20 72 65 6d 6f 76 65 20 28 22 21 22 29 2c     remove ("!"),
1a80: 20 64 65 6c 65 74 65 20 28 22 2d 22 29 2c 20 6f   delete ("-"), o
1a90: 72 20 6d 6f 76 65 20 61 20 63 79 70 68 65 72 20  r move a cypher 
1aa0: 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 0a 09 20  to the end of.. 
1ab0: 20 20 20 74 68 65 20 6c 69 73 74 20 28 22 2b 22     the list ("+"
1ac0: 29 2e 20 4b 65 79 77 6f 72 64 73 20 3c 62 3e 40  ). Keywords <b>@
1ad0: 53 54 52 45 4e 47 54 48 3c 2f 62 3e 20 28 73 6f  STRENGTH</b> (so
1ae0: 72 74 20 62 79 20 61 6c 67 6f 72 69 74 68 6d 0a  rt by algorithm.
1af0: 09 20 20 20 20 6b 65 79 20 6c 65 6e 67 74 68 29  .    key length)
1b00: 2c 20 3c 62 3e 40 53 45 43 4c 45 56 45 4c 3d 3c  , <b>@SECLEVEL=<
1b10: 2f 62 3e 3c 69 3e 6e 3c 2f 69 3e 20 28 73 65 74  /b><i>n</i> (set
1b20: 20 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c 20   security level 
1b30: 74 6f 0a 09 20 20 20 20 6e 29 2c 20 61 6e 64 20  to..    n), and 
1b40: 3c 62 3e 44 45 46 41 55 4c 54 3c 2f 62 3e 20 28  <b>DEFAULT</b> (
1b50: 75 73 65 20 64 65 66 61 75 6c 74 20 63 69 70 68  use default ciph
1b60: 65 72 20 6c 69 73 74 2c 20 61 74 20 73 74 61 72  er list, at star
1b70: 74 20 6f 6e 6c 79 29 0a 09 20 20 20 20 63 61 6e  t only)..    can
1b80: 20 61 6c 73 6f 20 62 65 20 73 70 65 63 69 66 69   also be specifi
1b90: 65 64 2e 20 53 65 65 20 4f 70 65 6e 53 53 4c 20  ed. See OpenSSL 
1ba0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
1bb0: 72 20 74 68 65 20 66 75 6c 6c 0a 09 20 20 20 20  r the full..    
1bc0: 6c 69 73 74 20 6f 66 20 76 61 6c 69 64 20 76 61  list of valid va
1bd0: 6c 75 65 73 2e 20 28 54 4c 53 20 31 2e 32 20 61  lues. (TLS 1.2 a
1be0: 6e 64 20 65 61 72 6c 69 65 72 20 6f 6e 6c 79 29  nd earlier only)
1bf0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
1c00: 6e 67 3e 2d 63 69 70 68 65 72 73 75 69 74 65 73  ng>-ciphersuites
1c10: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74  </strong> <em>st
1c20: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
1c30: 3c 64 64 3e 4c 69 73 74 20 6f 66 20 63 69 70 68  <dd>List of ciph
1c40: 65 72 20 73 75 69 74 65 73 20 74 6f 20 75 73 65  er suites to use
1c50: 2e 20 53 74 72 69 6e 67 20 69 73 20 61 20 63 6f  . String is a co
1c60: 6c 6f 6e 20 28 22 3a 22 29 0a 09 20 20 20 20 73  lon (":")..    s
1c70: 65 70 61 72 61 74 65 64 20 6c 69 73 74 20 6f 66  eparated list of
1c80: 20 63 69 70 68 65 72 20 73 75 69 74 65 20 6e 61   cipher suite na
1c90: 6d 65 73 2e 20 28 54 4c 53 20 31 2e 33 20 6f 6e  mes. (TLS 1.3 on
1ca0: 6c 79 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ly)</dd>..<dt><s
1cb0: 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f  trong>-command</
1cc0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c  strong> <em>call
1cd0: 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  back</em></dt>..
1ce0: 3c 64 64 3e 43 61 6c 6c 62 61 63 6b 20 74 6f 20  <dd>Callback to 
1cf0: 69 6e 76 6f 6b 65 20 61 74 20 73 65 76 65 72 61  invoke at severa
1d00: 6c 20 70 6f 69 6e 74 73 20 64 75 72 69 6e 67 20  l points during 
1d10: 74 68 65 20 68 61 6e 64 73 68 61 6b 65 2e 0a 09  the handshake...
1d20: 20 20 20 20 54 68 69 73 20 69 73 20 75 73 65 64      This is used
1d30: 20 74 6f 20 70 61 73 73 20 65 72 72 6f 72 73 20   to pass errors 
1d40: 61 6e 64 20 74 72 61 63 69 6e 67 20 69 6e 66 6f  and tracing info
1d50: 72 6d 61 74 69 6f 6e 2c 20 61 6e 64 0a 09 20 20  rmation, and..  
1d60: 20 20 69 74 20 63 61 6e 20 61 6c 6c 6f 77 20 54    it can allow T
1d70: 63 6c 20 73 63 72 69 70 74 73 20 74 6f 20 70 65  cl scripts to pe
1d80: 72 66 6f 72 6d 20 74 68 65 69 72 20 6f 77 6e 20  rform their own 
1d90: 63 65 72 74 69 66 69 63 61 74 65 0a 09 20 20 20  certificate..   
1da0: 20 76 61 6c 69 64 61 74 69 6f 6e 20 69 6e 20 70   validation in p
1db0: 6c 61 63 65 20 6f 66 20 74 68 65 20 64 65 66 61  lace of the defa
1dc0: 75 6c 74 20 76 61 6c 69 64 61 74 69 6f 6e 20 70  ult validation p
1dd0: 72 6f 76 69 64 65 64 20 62 79 0a 09 20 20 20 20  rovided by..    
1de0: 4f 70 65 6e 53 53 4c 2e 20 53 65 65 20 3c 61 20  OpenSSL. See <a 
1df0: 68 72 65 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20  href="#CALLBACK 
1e00: 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43  OPTIONS">CALLBAC
1e10: 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 0a 09 20  K OPTIONS</a>.. 
1e20: 20 20 20 66 6f 72 20 66 75 72 74 68 65 72 20 64     for further d
1e30: 69 73 63 75 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a  iscussion.</dd>.
1e40: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 64 68  .<dt><strong>-dh
1e50: 70 61 72 61 6d 73 20 3c 2f 73 74 72 6f 6e 67 3e  params </strong>
1e60: 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d  <em>filename</em
1e70: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63  ></dt>..<dd>Spec
1e80: 69 66 79 20 74 68 65 20 44 69 66 66 69 65 2d 48  ify the Diffie-H
1e90: 65 6c 6c 6d 61 6e 20 70 61 72 61 6d 65 74 65 72  ellman parameter
1ea0: 73 20 66 69 6c 65 2e 3c 2f 64 64 3e 0a 09 3c 64  s file.</dd>..<d
1eb0: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b 65 79 66 69  t><strong>-keyfi
1ec0: 6c 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  le</strong> <em>
1ed0: 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64  filename</em></d
1ee0: 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79 20  t>..<dd>Specify 
1ef0: 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 20  the private key 
1f00: 66 69 6c 65 2e 20 28 64 65 66 61 75 6c 74 20 69  file. (default i
1f10: 73 0a 09 20 20 20 20 76 61 6c 75 65 20 6f 66 20  s..    value of 
1f20: 2d 63 65 72 74 66 69 6c 65 29 3c 2f 64 64 3e 0a  -certfile)</dd>.
1f30: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b 65  .<dt><strong>-ke
1f40: 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66  y</strong> <em>f
1f50: 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74  ilename</em></dt
1f60: 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79 20 74  >..<dd>Specify t
1f70: 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 20 74  he private key t
1f80: 6f 20 75 73 65 20 61 73 20 61 20 44 45 52 20 65  o use as a DER e
1f90: 6e 63 6f 64 65 64 20 76 61 6c 75 65 20 28 50 4b  ncoded value (PK
1fa0: 43 53 23 31 20 44 45 52 29 3c 2f 64 64 3e 0a 09  CS#1 DER)</dd>..
1fb0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6d 6f 64  <dt><strong>-mod
1fc0: 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  el</strong> <em>
1fd0: 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 74  channel</em></dt
1fe0: 3e 0a 09 3c 64 64 3e 46 6f 72 63 65 20 74 68 69  >..<dd>Force thi
1ff0: 73 20 63 68 61 6e 6e 65 6c 20 74 6f 20 73 68 61  s channel to sha
2000: 72 65 20 74 68 65 20 73 61 6d 65 20 3c 65 6d 3e  re the same <em>
2010: 3c 73 74 72 6f 6e 67 3e 53 53 4c 5f 43 54 58 3c  <strong>SSL_CTX<
2020: 2f 73 74 72 6f 6e 67 3e 3c 2f 65 6d 3e 0a 09 20  /strong></em>.. 
2030: 20 20 20 73 74 72 75 63 74 75 72 65 20 61 73 20     structure as 
2040: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 65  the specified <e
2050: 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 2c 20  m>channel</em>, 
2060: 61 6e 64 0a 09 20 20 20 20 74 68 65 72 65 66 6f  and..    therefo
2070: 72 65 20 73 68 61 72 65 20 63 61 6c 6c 62 61 63  re share callbac
2080: 6b 73 20 65 74 63 2e 3c 2f 64 64 3e 0a 09 3c 64  ks etc.</dd>..<d
2090: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77  t><strong>-passw
20a0: 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ord</strong> <em
20b0: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f  >callback</em></
20c0: 64 74 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62 61 63  dt>..<dd>Callbac
20d0: 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 68 65 6e  k to invoke when
20e0: 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20 74   OpenSSL needs t
20f0: 6f 20 6f 62 74 61 69 6e 20 61 20 70 61 73 73 77  o obtain a passw
2100: 6f 72 64 2c 0a 09 20 20 20 20 74 79 70 69 63 61  ord,..    typica
2110: 6c 6c 79 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68  lly to unlock th
2120: 65 20 70 72 69 76 61 74 65 20 6b 65 79 20 6f 66  e private key of
2130: 20 61 20 63 65 72 74 69 66 69 63 61 74 65 2e 20   a certificate. 
2140: 54 68 65 0a 09 20 20 20 20 63 61 6c 6c 62 61 63  The..    callbac
2150: 6b 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20  k should return 
2160: 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 72  a string which r
2170: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 70 61  epresents the pa
2180: 73 73 77 6f 72 64 0a 09 20 20 20 20 74 6f 20 62  ssword..    to b
2190: 65 20 75 73 65 64 2e 20 53 65 65 20 3c 61 20 68  e used. See <a h
21a0: 72 65 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f  ref="#CALLBACK O
21b0: 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b  PTIONS">CALLBACK
21c0: 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 0a 09 20 20   OPTIONS</a>..  
21d0: 20 20 66 6f 72 20 66 75 72 74 68 65 72 20 64 69    for further di
21e0: 73 63 75 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09  scussion.</dd>..
21f0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 6f 73  <dt><strong>-pos
2200: 74 5f 68 61 6e 64 73 68 61 6b 65 3c 2f 73 74 72  t_handshake</str
2210: 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65  ong> <em>bool</e
2220: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 6c 6c  m></dt>..<dd>All
2230: 6f 77 20 70 6f 73 74 2d 68 61 6e 64 73 68 61 6b  ow post-handshak
2240: 65 20 74 69 63 6b 65 74 20 75 70 64 61 74 65 73  e ticket updates
2250: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
2260: 6f 6e 67 3e 2d 72 65 71 75 65 73 74 20 3c 2f 73  ong>-request </s
2270: 74 72 6f 6e 67 3e 3c 65 6d 3e 62 6f 6f 6c 3c 2f  trong><em>bool</
2280: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 52 65  em></dt>..<dd>Re
2290: 71 75 65 73 74 20 61 20 63 65 72 74 69 66 69 63  quest a certific
22a0: 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64 75  ate from peer du
22b0: 72 69 6e 67 20 53 53 4c 20 68 61 6e 64 73 68 61  ring SSL handsha
22c0: 6b 65 2e 0a 09 20 20 20 20 28 64 65 66 61 75 6c  ke...    (defaul
22d0: 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65  t is <em>true</e
22e0: 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  m>)</dd>..<dt><s
22f0: 74 72 6f 6e 67 3e 2d 72 65 71 75 69 72 65 3c 2f  trong>-require</
2300: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c  strong> <em>bool
2310: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2320: 52 65 71 75 69 72 65 20 61 20 76 61 6c 69 64 20  Require a valid 
2330: 63 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d  certificate from
2340: 20 70 65 65 72 20 64 75 72 69 6e 67 20 53 53 4c   peer during SSL
2350: 20 68 61 6e 64 73 68 61 6b 65 2e 0a 09 20 20 20   handshake...   
2360: 20 49 66 20 74 68 69 73 20 69 73 20 73 65 74 20   If this is set 
2370: 74 6f 20 74 72 75 65 2c 20 74 68 65 6e 20 3c 73  to true, then <s
2380: 74 72 6f 6e 67 3e 2d 72 65 71 75 65 73 74 3c 2f  trong>-request</
2390: 73 74 72 6f 6e 67 3e 20 6d 75 73 74 0a 09 20 20  strong> must..  
23a0: 20 20 61 6c 73 6f 20 62 65 20 73 65 74 20 74 6f    also be set to
23b0: 20 74 72 75 65 2e 20 28 64 65 66 61 75 6c 74 20   true. (default 
23c0: 69 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d  is <em>false</em
23d0: 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  >)</dd>..<dt><st
23e0: 72 6f 6e 67 3e 2d 73 65 63 75 72 69 74 79 6c 65  rong>-securityle
23f0: 76 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  vel</strong> <em
2400: 3e 69 6e 74 65 67 65 72 3c 2f 65 6d 3e 3c 2f 64  >integer</em></d
2410: 74 3e 0a 09 3c 64 64 3e 53 65 74 20 73 65 63 75  t>..<dd>Set secu
2420: 72 69 74 79 20 6c 65 76 65 6c 2e 20 4d 75 73 74  rity level. Must
2430: 20 62 65 20 30 20 74 6f 20 35 2e 20 54 68 65 20   be 0 to 5. The 
2440: 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c 20 61  security level a
2450: 66 66 65 63 74 73 0a 09 20 20 20 20 63 69 70 68  ffects..    ciph
2460: 65 72 20 73 75 69 74 65 20 65 6e 63 72 79 70 74  er suite encrypt
2470: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73 2c 20  ion algorithms, 
2480: 73 75 70 70 6f 72 74 65 64 20 45 43 43 20 63 75  supported ECC cu
2490: 72 76 65 73 2c 0a 09 20 20 20 20 73 75 70 70 6f  rves,..    suppo
24a0: 72 74 65 64 20 73 69 67 6e 61 74 75 72 65 20 61  rted signature a
24b0: 6c 67 6f 72 69 74 68 6d 73 2c 20 44 48 20 70 61  lgorithms, DH pa
24c0: 72 61 6d 65 74 65 72 20 73 69 7a 65 73 2c 20 63  rameter sizes, c
24d0: 65 72 74 69 66 69 63 61 74 65 0a 09 20 20 20 20  ertificate..    
24e0: 6b 65 79 20 73 69 7a 65 73 20 61 6e 64 20 73 69  key sizes and si
24f0: 67 6e 61 74 75 72 65 20 61 6c 67 6f 72 69 74 68  gnature algorith
2500: 6d 73 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  ms. The default 
2510: 69 73 20 31 2e 0a 09 20 20 20 20 4c 65 76 65 6c  is 1...    Level
2520: 20 33 20 61 6e 64 20 68 69 67 68 65 72 20 64 69   3 and higher di
2530: 73 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f  sable support fo
2540: 72 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74  r session ticket
2550: 73 20 61 6e 64 20 6f 6e 6c 79 0a 09 20 20 20 20  s and only..    
2560: 61 63 63 65 70 74 20 63 69 70 68 65 72 20 73 75  accept cipher su
2570: 69 74 65 73 20 74 68 61 74 20 70 72 6f 76 69 64  ites that provid
2580: 65 20 66 6f 72 77 61 72 64 20 73 65 63 72 65 63  e forward secrec
2590: 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  y.</dd>..<dt><st
25a0: 72 6f 6e 67 3e 2d 73 65 72 76 65 72 3c 2f 73 74  rong>-server</st
25b0: 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f  rong> <em>bool</
25c0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 48 61  em></dt>..<dd>Ha
25d0: 6e 64 73 68 61 6b 65 20 61 73 20 73 65 72 76 65  ndshake as serve
25e0: 72 20 69 66 20 74 72 75 65 2c 20 65 6c 73 65 20  r if true, else 
25f0: 68 61 6e 64 73 68 61 6b 65 20 61 73 0a 09 20 20  handshake as..  
2600: 20 20 63 6c 69 65 6e 74 2e 20 28 64 65 66 61 75    client. (defau
2610: 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65 3c  lt is <em>false<
2620: 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e  /em>)</dd>..<dt>
2630: 3c 73 74 72 6f 6e 67 3e 2d 73 65 72 76 65 72 6e  <strong>-servern
2640: 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ame</strong> <em
2650: 3e 68 6f 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >host</em></dt>.
2660: 09 3c 64 64 3e 53 70 65 63 69 66 79 20 73 65 72  .<dd>Specify ser
2670: 76 65 72 20 68 6f 73 74 6e 61 6d 65 2e 20 4f 6e  ver hostname. On
2680: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20  ly available if 
2690: 74 68 65 20 4f 70 65 6e 53 53 4c 20 6c 69 62 72  the OpenSSL libr
26a0: 61 72 79 0a 09 20 20 20 20 74 68 65 20 70 61 63  ary..    the pac
26b0: 6b 61 67 65 20 69 73 20 6c 69 6e 6b 65 64 20 61  kage is linked a
26c0: 67 61 69 6e 73 74 20 73 75 70 70 6f 72 74 73 20  gainst supports 
26d0: 74 68 65 20 54 4c 53 20 68 6f 73 74 6e 61 6d 65  the TLS hostname
26e0: 20 65 78 74 65 6e 73 69 6f 6e 0a 09 20 20 20 20   extension..    
26f0: 66 6f 72 20 27 53 65 72 76 65 72 20 4e 61 6d 65  for 'Server Name
2700: 20 49 6e 64 69 63 61 74 69 6f 6e 27 20 28 53 4e   Indication' (SN
2710: 49 29 2e 20 55 73 65 20 74 6f 20 6e 61 6d 65 20  I). Use to name 
2720: 74 68 65 20 6c 6f 67 69 63 61 6c 20 68 6f 73 74  the logical host
2730: 0a 09 20 20 20 20 77 65 20 61 72 65 20 74 61 6c  ..    we are tal
2740: 6b 69 6e 67 20 74 6f 20 61 6e 64 20 65 78 70 65  king to and expe
2750: 63 74 69 6e 67 20 61 20 63 65 72 74 69 66 69 63  cting a certific
2760: 61 74 65 20 66 6f 72 2e 3c 2f 64 64 3e 0a 09 3c  ate for.</dd>..<
2770: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 73 73  dt><strong>-sess
2780: 69 6f 6e 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e 20  ion_id</strong> 
2790: 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c  <em>string</em><
27a0: 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 73 73 69 6f  /dt>..<dd>Sessio
27b0: 6e 20 69 64 20 74 6f 20 72 65 73 75 6d 65 20 73  n id to resume s
27c0: 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64  ession.</dd>..<d
27d0: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73 73 6c 32 3c  t><strong>-ssl2<
27e0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
27f0: 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  l</em></dt>..<dd
2800: 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 53  >Enable use of S
2810: 53 4c 20 76 32 2e 20 28 64 65 66 61 75 6c 74 20  SL v2. (default 
2820: 69 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d  is <em>false</em
2830: 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  >)</dd>..<dt><st
2840: 72 6f 6e 67 3e 2d 73 73 6c 33 20 3c 2f 73 74 72  rong>-ssl3 </str
2850: 6f 6e 67 3e 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d  ong><em>bool</em
2860: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62  ></dt>..<dd>Enab
2870: 6c 65 20 75 73 65 20 6f 66 20 53 53 4c 20 76 33  le use of SSL v3
2880: 2e 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65  . (default is <e
2890: 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64  m>false</em>)</d
28a0: 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67  d>..<dt>-<strong
28b0: 3e 74 6c 73 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c  >tls1</strong> <
28c0: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
28d0: 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73  >..<dd>Enable us
28e0: 65 20 6f 66 20 54 4c 53 20 76 31 2e 20 28 64 65  e of TLS v1. (de
28f0: 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75  fault is <em>tru
2900: 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64  e</em>)</dd>..<d
2910: 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31 2e  t>-<strong>tls1.
2920: 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  1</strong> <em>b
2930: 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ool</em></dt>..<
2940: 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f 66  dd>Enable use of
2950: 20 54 4c 53 20 76 31 2e 31 20 28 64 65 66 61 75   TLS v1.1 (defau
2960: 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f  lt is <em>true</
2970: 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d  em>)</dd>..<dt>-
2980: 3c 73 74 72 6f 6e 67 3e 74 6c 73 31 2e 32 3c 2f  <strong>tls1.2</
2990: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c  strong> <em>bool
29a0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
29b0: 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 54 4c  Enable use of TL
29c0: 53 20 76 31 2e 32 20 28 64 65 66 61 75 6c 74 20  S v1.2 (default 
29d0: 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e  is <em>true</em>
29e0: 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74  )</dd>..<dt>-<st
29f0: 72 6f 6e 67 3e 74 6c 73 31 2e 33 3c 2f 73 74 72  rong>tls1.3</str
2a00: 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65  ong> <em>bool</e
2a10: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61  m></dt>..<dd>Ena
2a20: 62 6c 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76  ble use of TLS v
2a30: 31 2e 33 20 28 64 65 66 61 75 6c 74 20 69 73 20  1.3 (default is 
2a40: 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f  <em>true</em>)</
2a50: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
2a60: 3e 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e  >-validatecomman
2a70: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  d</strong> <em>c
2a80: 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74  allback</em></dt
2a90: 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62 61 63 6b 20  >..<dd>Callback 
2aa0: 74 6f 20 69 6e 76 6f 6b 65 20 74 6f 20 76 65 72  to invoke to ver
2ab0: 69 66 79 20 6f 72 20 76 61 6c 69 64 61 74 65 20  ify or validate 
2ac0: 70 72 6f 74 6f 63 6f 6c 20 63 6f 6e 66 69 67 0a  protocol config.
2ad0: 09 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20  .    parameters 
2ae0: 64 75 72 69 6e 67 20 74 68 65 20 70 72 6f 74 6f  during the proto
2af0: 63 6f 6c 20 6e 65 67 6f 74 69 61 74 69 6f 6e 20  col negotiation 
2b00: 70 68 61 73 65 2e 20 53 65 65 0a 09 20 20 20 20  phase. See..    
2b10: 3c 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42 41  <a href="#CALLBA
2b20: 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c  CK OPTIONS">CALL
2b30: 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e  BACK OPTIONS</a>
2b40: 0a 09 20 20 20 20 66 6f 72 20 66 75 72 74 68 65  ..    for furthe
2b50: 72 20 64 69 73 63 75 73 73 69 6f 6e 2e 3c 2f 64  r discussion.</d
2b60: 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62  d>.    </dl>.</b
2b70: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20  lockquote>..    
2b80: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73  <dt><a name="tls
2b90: 3a 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e 74  ::unimport"><b>t
2ba0: 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 20 3c 2f 62  ls::unimport </b
2bb0: 3e 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c  ><i>channel</i><
2bc0: 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64  /a></dt>.    <dd
2bd0: 3e 50 72 6f 76 69 64 65 64 20 66 6f 72 20 73 79  >Provided for sy
2be0: 6d 6d 65 74 72 79 20 74 6f 20 3c 73 74 72 6f 6e  mmetry to <stron
2bf0: 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73  g>tls::import</s
2c00: 74 72 6f 6e 67 3e 2c 20 74 68 69 73 0a 20 20 20  trong>, this.   
2c10: 20 20 20 75 6e 73 74 61 63 6b 73 20 74 68 65 20     unstacks the 
2c20: 53 53 4c 2d 65 6e 61 62 6c 69 6e 67 20 6f 66 20  SSL-enabling of 
2c30: 61 20 72 65 67 75 6c 61 72 20 54 63 6c 20 63 68  a regular Tcl ch
2c40: 61 6e 6e 65 6c 2e 20 20 41 6e 20 65 72 72 6f 72  annel.  An error
2c50: 0a 20 20 20 20 20 20 69 73 20 74 68 72 6f 77 6e  .      is thrown
2c60: 20 69 66 20 54 4c 53 20 69 73 20 6e 6f 74 20 74   if TLS is not t
2c70: 68 65 20 74 6f 70 20 73 74 61 63 6b 65 64 20 63  he top stacked c
2c80: 68 61 6e 6e 65 6c 20 74 79 70 65 2e 3c 2f 64 64  hannel type.</dd
2c90: 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b  >.    <dt>&nbsp;
2ca0: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 61  </dt>.    <dt><a
2cb0: 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 68 61 6e 64   name="tls::hand
2cc0: 73 68 61 6b 65 22 3e 3c 73 74 72 6f 6e 67 3e 74  shake"><strong>t
2cd0: 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 3c 2f 73  ls::handshake</s
2ce0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e  trong> <em>chann
2cf0: 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  el</em></a></dt>
2d00: 0a 20 20 20 20 3c 64 64 3e 46 6f 72 63 65 73 20  .    <dd>Forces 
2d10: 68 61 6e 64 73 68 61 6b 65 20 74 6f 20 74 61 6b  handshake to tak
2d20: 65 20 70 6c 61 63 65 2c 20 61 6e 64 20 72 65 74  e place, and ret
2d30: 75 72 6e 73 20 30 20 69 66 0a 09 68 61 6e 64 73  urns 0 if..hands
2d40: 68 61 6b 65 20 69 73 20 73 74 69 6c 6c 20 69 6e  hake is still in
2d50: 20 70 72 6f 67 72 65 73 73 20 28 6e 6f 6e 2d 62   progress (non-b
2d60: 6c 6f 63 6b 69 6e 67 29 2c 20 6f 72 20 31 20 69  locking), or 1 i
2d70: 66 0a 09 74 68 65 20 68 61 6e 64 73 68 61 6b 65  f..the handshake
2d80: 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 2e   was successful.
2d90: 20 49 66 20 74 68 65 20 68 61 6e 64 73 68 61 6b   If the handshak
2da0: 65 20 66 61 69 6c 65 64 0a 09 74 68 69 73 20 72  e failed..this r
2db0: 6f 75 74 69 6e 65 20 77 69 6c 6c 20 74 68 72 6f  outine will thro
2dc0: 77 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 64 64 3e  w an error.</dd>
2dd0: 0a 20 20 20 20 3c 64 74 3e 26 6e 62 73 70 3b 3c  .    <dt>&nbsp;<
2de0: 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20  /dt>.    <dt><a 
2df0: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73 74 61 74 75  name="tls::statu
2e00: 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  s"><strong>tls::
2e10: 73 74 61 74 75 73 3c 2f 73 74 72 6f 6e 67 3e 0a  status</strong>.
2e20: 20 20 20 20 3c 65 6d 3e 3f 2d 6c 6f 63 61 6c 3f      <em>?-local?
2e30: 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61   channel</em></a
2e40: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52  ></dt>.    <dd>R
2e50: 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65  eturns the curre
2e60: 6e 74 20 73 74 61 74 75 73 20 6f 66 20 74 68 65  nt status of the
2e70: 20 63 65 72 74 69 66 69 63 61 74 65 20 66 6f 72   certificate for
2e80: 20 61 6e 20 53 53 4c 0a 09 63 68 61 6e 6e 65 6c   an SSL..channel
2e90: 2e 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20  . The result is 
2ea0: 61 20 6c 69 73 74 20 6f 66 20 6b 65 79 2d 76 61  a list of key-va
2eb0: 6c 75 65 20 70 61 69 72 73 20 64 65 73 63 72 69  lue pairs descri
2ec0: 62 69 6e 67 0a 09 74 68 65 20 63 65 72 74 69 66  bing..the certif
2ed0: 69 63 61 74 65 2e 20 49 66 20 74 68 65 20 72 65  icate. If the re
2ee0: 73 75 6c 74 20 69 73 20 61 6e 20 65 6d 70 74 79  sult is an empty
2ef0: 20 6c 69 73 74 20 74 68 65 6e 20 74 68 65 0a 09   list then the..
2f00: 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 20 68 61  SSL handshake ha
2f10: 73 20 6e 6f 74 20 79 65 74 20 63 6f 6d 70 6c 65  s not yet comple
2f20: 74 65 64 2e 20 49 66 20 3c 65 6d 3e 2d 6c 6f 63  ted. If <em>-loc
2f30: 61 6c 3c 2f 65 6d 3e 20 69 73 0a 09 73 70 65 63  al</em> is..spec
2f40: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
2f50: 6c 6f 63 61 6c 20 63 65 72 74 69 66 69 63 61 74  local certificat
2f60: 65 20 69 73 20 75 73 65 64 2e 3c 2f 64 64 3e 0a  e is used.</dd>.
2f70: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c 62  <blockquote>..<b
2f80: 3e 53 53 4c 20 53 74 61 74 75 73 3c 2f 62 3e 0a  >SSL Status</b>.
2f90: 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73      <dl>..<dt><s
2fa0: 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f  trong>alpn</stro
2fb0: 6e 67 3e 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c  ng> <em>protocol
2fc0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2fd0: 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20 73 65 6c  The protocol sel
2fe0: 65 63 74 65 64 20 61 66 74 65 72 20 41 70 70 6c  ected after Appl
2ff0: 69 63 61 74 69 6f 6e 2d 4c 61 79 65 72 20 50 72  ication-Layer Pr
3000: 6f 74 6f 63 6f 6c 0a 09 20 20 20 20 4e 65 67 6f  otocol..    Nego
3010: 74 69 61 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 3c  tiation (ALPN).<
3020: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
3030: 67 3e 63 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67  g>cipher</strong
3040: 3e 20 3c 65 6d 3e 63 69 70 68 65 72 3c 2f 65 6d  > <em>cipher</em
3050: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
3060: 63 75 72 72 65 6e 74 20 63 69 70 68 65 72 20 69  current cipher i
3070: 6e 20 75 73 65 20 62 65 74 77 65 65 6e 20 74 68  n use between th
3080: 65 20 63 6c 69 65 6e 74 20 61 6e 64 0a 09 20 20  e client and..  
3090: 20 20 73 65 72 76 65 72 20 63 68 61 6e 6e 65 6c    server channel
30a0: 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  s.</dd>..<dt><st
30b0: 72 6f 6e 67 3e 70 65 65 72 6e 61 6d 65 3c 2f 73  rong>peername</s
30c0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 61 6d 65 3c  trong> <em>name<
30d0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
30e0: 68 65 20 70 65 65 72 6e 61 6d 65 20 66 72 6f 6d  he peername from
30f0: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
3100: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3110: 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 73 74  ong>protocol</st
3120: 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72 73 69 6f  rong> <em>versio
3130: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  n</em></dt>..<dd
3140: 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20 76 65  >The protocol ve
3150: 72 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74  rsion used for t
3160: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a 0a 09  he connection:..
3170: 20 20 20 20 53 53 4c 32 2c 20 53 53 4c 33 2c 20      SSL2, SSL3, 
3180: 54 4c 53 31 2c 20 54 4c 53 31 2e 31 2c 20 54 4c  TLS1, TLS1.1, TL
3190: 53 31 2e 32 2c 20 54 4c 53 31 2e 33 2c 20 6f 72  S1.2, TLS1.3, or
31a0: 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64 64 3e 0a 09   unknown.</dd>..
31b0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 62 69 74  <dt><strong>sbit
31c0: 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e  s</strong> <em>n
31d0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
31e0: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 69  The number of bi
31f0: 74 73 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  ts used for the 
3200: 73 65 73 73 69 6f 6e 20 6b 65 79 2e 3c 2f 64 64  session key.</dd
3210: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
3220: 69 67 6e 61 74 75 72 65 48 61 73 68 41 6c 67 6f  ignatureHashAlgo
3230: 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67 3e 20 3c  rithm</strong> <
3240: 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f 65 6d  em>algorithm</em
3250: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
3260: 73 69 67 6e 61 74 75 72 65 20 68 61 73 68 20 61  signature hash a
3270: 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64 3e 0a 09  lgorithm.</dd>..
3280: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e  <dt><strong>sign
3290: 61 74 75 72 65 54 79 70 65 3c 2f 73 74 72 6f 6e  atureType</stron
32a0: 67 3e 20 3c 65 6d 3e 74 79 70 65 3c 2f 65 6d 3e  g> <em>type</em>
32b0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73  </dt>..<dd>The s
32c0: 69 67 6e 61 74 75 72 65 20 74 79 70 65 20 76 61  ignature type va
32d0: 6c 75 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  lue.</dd>..<dt><
32e0: 73 74 72 6f 6e 67 3e 76 65 72 69 66 79 44 65 70  strong>verifyDep
32f0: 74 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  th</strong> <em>
3300: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  n</em></dt>..<dd
3310: 3e 4d 61 78 69 6d 75 6d 20 64 65 70 74 68 20 66  >Maximum depth f
3320: 6f 72 20 74 68 65 20 63 65 72 74 69 66 69 63 61  or the certifica
3330: 74 65 20 63 68 61 69 6e 20 76 65 72 69 66 69 63  te chain verific
3340: 61 74 69 6f 6e 2e 0a 09 20 20 20 20 44 65 66 61  ation...    Defa
3350: 75 6c 74 20 69 73 20 2d 31 2c 20 74 6f 20 63 68  ult is -1, to ch
3360: 65 63 6b 20 61 6c 6c 2e 3c 2f 64 64 3e 0a 09 3c  eck all.</dd>..<
3370: 64 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66  dt><strong>verif
3380: 79 4d 6f 64 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  yMode</strong> <
3390: 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74  em>list</em></dt
33a0: 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 63  >..<dd>List of c
33b0: 65 72 74 69 66 69 63 61 74 65 20 76 65 72 69 66  ertificate verif
33c0: 69 63 61 74 69 6f 6e 20 6d 6f 64 65 73 2e 3c 2f  ication modes.</
33d0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
33e0: 3e 76 65 72 69 66 79 52 65 73 75 6c 74 3c 2f 73  >verifyResult</s
33f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 72 65 73 75 6c  trong> <em>resul
3400: 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  t</em></dt>..<dd
3410: 3e 43 65 72 74 69 66 69 63 61 74 65 20 76 65 72  >Certificate ver
3420: 69 66 69 63 61 74 69 6f 6e 20 72 65 73 75 6c 74  ification result
3430: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3440: 6f 6e 67 3e 63 61 5f 6e 61 6d 65 73 3c 2f 73 74  ong>ca_names</st
3450: 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f  rong> <em>list</
3460: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69  em></dt>..<dd>Li
3470: 73 74 20 6f 66 20 74 68 65 20 43 65 72 74 69 66  st of the Certif
3480: 69 63 61 74 65 20 41 75 74 68 6f 72 69 74 69 65  icate Authoritie
3490: 73 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65  s used to create
34a0: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
34b0: 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e  .</dd>.    </dl>
34c0: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  .</blockquote>.<
34d0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c 62 3e  blockquote>..<b>
34e0: 43 65 72 74 69 66 69 63 61 74 65 20 53 74 61 74  Certificate Stat
34f0: 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a  us</b>.    <dl>.
3500: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 6c  .<dt><strong>all
3510: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74  </strong> <em>st
3520: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
3530: 3c 64 64 3e 44 75 6d 70 20 6f 66 20 61 6c 6c 20  <dd>Dump of all 
3540: 63 65 72 74 69 66 69 63 61 74 65 20 69 6e 66 6f  certificate info
3550: 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74  .</dd>...<dt><st
3560: 72 6f 6e 67 3e 76 65 72 73 69 6f 6e 3c 2f 73 74  rong>version</st
3570: 72 6f 6e 67 3e 20 3c 65 6d 3e 76 61 6c 75 65 3c  rong> <em>value<
3580: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
3590: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 76  he certificate v
35a0: 65 72 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64  ersion.</dd>..<d
35b0: 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 72 69 61 6c  t><strong>serial
35c0: 4e 75 6d 62 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  Number</strong> 
35d0: 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  <em>n</em></dt>.
35e0: 09 3c 64 64 3e 54 68 65 20 73 65 72 69 61 6c 20  .<dd>The serial 
35f0: 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 63 65  number of the ce
3600: 72 74 69 66 69 63 61 74 65 20 61 73 20 68 65 78  rtificate as hex
3610: 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c   string.</dd>..<
3620: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61  dt><strong>signa
3630: 74 75 72 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  ture</strong> <e
3640: 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f 65 6d 3e  m>algorithm</em>
3650: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 69 70 68 65  </dt>..<dd>Ciphe
3660: 72 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64  r algorithm used
3670: 20 66 6f 72 20 63 65 72 74 69 66 69 63 61 74 65   for certificate
3680: 20 73 69 67 6e 61 74 75 72 65 2e 3c 2f 64 64 3e   signature.</dd>
3690: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 69 73  ..<dt><strong>is
36a0: 73 75 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  suer</strong> <e
36b0: 6d 3e 64 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  m>dn</em></dt>..
36c0: 3c 64 64 3e 54 68 65 20 64 69 73 74 69 6e 67 75  <dd>The distingu
36d0: 69 73 68 65 64 20 6e 61 6d 65 20 28 44 4e 29 20  ished name (DN) 
36e0: 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61  of the certifica
36f0: 74 65 20 69 73 73 75 65 72 2e 3c 2f 64 64 3e 0a  te issuer.</dd>.
3700: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e 6f 74  .<dt><strong>not
3710: 42 65 66 6f 72 65 3c 2f 73 74 72 6f 6e 67 3e 20  Before</strong> 
3720: 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c 2f 64  <em>date</em></d
3730: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 62 65 67 69  t>..<dd>The begi
3740: 6e 20 64 61 74 65 20 66 6f 72 20 74 68 65 20 76  n date for the v
3750: 61 6c 69 64 69 74 79 20 6f 66 20 74 68 65 20 63  alidity of the c
3760: 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e  ertificate.</dd>
3770: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e 6f  ..<dt><strong>no
3780: 74 41 66 74 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  tAfter</strong> 
3790: 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c 2f 64  <em>date</em></d
37a0: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 65 78 70 69  t>..<dd>The expi
37b0: 72 61 74 69 6f 6e 20 64 61 74 65 20 66 6f 72 20  ration date for 
37c0: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2e  the certificate.
37d0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
37e0: 6e 67 3e 73 75 62 6a 65 63 74 3c 2f 73 74 72 6f  ng>subject</stro
37f0: 6e 67 3e 20 3c 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c  ng> <em>dn</em><
3800: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 64 69  /dt>..<dd>The di
3810: 73 74 69 6e 67 75 69 73 68 65 64 20 6e 61 6d 65  stinguished name
3820: 20 28 44 4e 29 20 6f 66 20 74 68 65 20 63 65 72   (DN) of the cer
3830: 74 69 66 69 63 61 74 65 20 73 75 62 6a 65 63 74  tificate subject
3840: 2e 0a 09 20 20 20 20 46 69 65 6c 64 73 20 69 6e  ...    Fields in
3850: 63 6c 75 64 65 3a 20 43 6f 6d 6d 6f 6e 20 4e 61  clude: Common Na
3860: 6d 65 20 28 43 4e 29 2c 20 4f 72 67 61 6e 69 7a  me (CN), Organiz
3870: 61 74 69 6f 6e 20 28 4f 29 2c 20 4c 6f 63 61 6c  ation (O), Local
3880: 69 74 79 0a 09 20 20 20 20 6f 72 20 43 69 74 79  ity..    or City
3890: 20 28 4c 29 2c 20 53 74 61 74 65 20 6f 72 20 50   (L), State or P
38a0: 72 6f 76 69 6e 63 65 20 28 53 29 2c 20 61 6e 64  rovince (S), and
38b0: 20 43 6f 75 6e 74 72 79 20 4e 61 6d 65 20 28 43   Country Name (C
38c0: 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  ).</dd>..<dt><st
38d0: 72 6f 6e 67 3e 69 73 73 75 65 72 55 6e 69 71 75  rong>issuerUniqu
38e0: 65 49 44 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  eID</strong> <em
38f0: 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74  >string</em></dt
3900: 3e 0a 09 3c 64 64 3e 54 68 65 20 69 73 73 75 65  >..<dd>The issue
3910: 72 20 75 6e 69 71 75 65 20 69 64 2e 3c 2f 64 64  r unique id.</dd
3920: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
3930: 75 62 6a 65 63 74 55 6e 69 71 75 65 49 44 3c 2f  ubjectUniqueID</
3940: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69  strong> <em>stri
3950: 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ng</em></dt>..<d
3960: 64 3e 54 68 65 20 73 75 62 6a 65 63 74 20 75 6e  d>The subject un
3970: 69 71 75 65 20 69 64 2e 3c 2f 64 64 3e 0a 0a 09  ique id.</dd>...
3980: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e 75 6d 5f  <dt><strong>num_
3990: 65 78 74 65 6e 73 69 6f 6e 73 3c 2f 73 74 72 6f  extensions</stro
39a0: 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f  ng> <em>n</em></
39b0: 64 74 3e 0a 09 3c 64 64 3e 4e 75 6d 62 65 72 20  dt>..<dd>Number 
39c0: 6f 66 20 63 65 72 74 69 66 69 63 61 74 65 20 65  of certificate e
39d0: 78 74 65 6e 73 69 6f 6e 73 2e 3c 2f 64 64 3e 0a  xtensions.</dd>.
39e0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 65 78 74  .<dt><strong>ext
39f0: 65 6e 73 69 6f 6e 73 3c 2f 73 74 72 6f 6e 67 3e  ensions</strong>
3a00: 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f   <em>list</em></
3a10: 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66  dt>..<dd>List of
3a20: 20 63 65 72 74 69 66 69 63 61 74 65 20 65 78 74   certificate ext
3a30: 65 6e 73 69 6f 6e 20 6e 61 6d 65 73 2e 3c 2f 64  ension names.</d
3a40: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
3a50: 61 75 74 68 6f 72 69 74 79 4b 65 79 49 64 65 6e  authorityKeyIden
3a60: 74 69 66 69 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  tifier</strong> 
3a70: 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c  <em>string</em><
3a80: 2f 64 74 3e 0a 09 3c 64 64 3e 28 41 4b 49 29 20  /dt>..<dd>(AKI) 
3a90: 4b 65 79 20 69 64 65 6e 74 69 66 69 65 72 20 6f  Key identifier o
3aa0: 66 20 74 68 65 20 49 73 73 75 69 6e 67 20 43 41  f the Issuing CA
3ab0: 20 63 65 72 74 69 66 69 63 61 74 65 20 74 68 61   certificate tha
3ac0: 74 20 73 69 67 6e 65 64 0a 09 20 20 20 20 74 68  t signed..    th
3ad0: 65 20 53 53 4c 20 63 65 72 74 69 66 69 63 61 74  e SSL certificat
3ae0: 65 20 61 73 20 68 65 78 20 73 74 72 69 6e 67 2e  e as hex string.
3af0: 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61 74 63   This value matc
3b00: 68 65 73 20 74 68 65 20 53 4b 49 0a 09 20 20 20  hes the SKI..   
3b10: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 49 6e   value of the In
3b20: 74 65 72 6d 65 64 69 61 74 65 20 43 41 20 63 65  termediate CA ce
3b30: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
3b40: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 75 62  .<dt><strong>sub
3b50: 6a 65 63 74 4b 65 79 49 64 65 6e 74 69 66 69 65  jectKeyIdentifie
3b60: 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73  r</strong> <em>s
3b70: 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  tring</em></dt>.
3b80: 09 3c 64 64 3e 28 53 4b 49 29 20 48 61 73 68 20  .<dd>(SKI) Hash 
3b90: 6f 66 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65  of the public ke
3ba0: 79 20 69 6e 73 69 64 65 20 74 68 65 20 63 65 72  y inside the cer
3bb0: 74 69 66 69 63 61 74 65 20 61 73 20 68 65 78 0a  tificate as hex.
3bc0: 09 20 20 20 73 74 72 69 6e 67 2e 20 55 73 65 64  .   string. Used
3bd0: 20 74 6f 20 69 64 65 6e 74 69 66 79 20 63 65 72   to identify cer
3be0: 74 69 66 69 63 61 74 65 73 20 74 68 61 74 20 63  tificates that c
3bf0: 6f 6e 74 61 69 6e 20 61 20 70 61 72 74 69 63 75  ontain a particu
3c00: 6c 61 72 0a 09 20 20 20 70 75 62 6c 69 63 20 6b  lar..   public k
3c10: 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ey.</dd>..<dt><s
3c20: 74 72 6f 6e 67 3e 73 75 62 6a 65 63 74 41 6c 74  trong>subjectAlt
3c30: 4e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  Name</strong> <e
3c40: 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>list</em></dt>
3c50: 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 61 6c  ..<dd>List of al
3c60: 6c 20 6f 66 20 74 68 65 20 61 6c 74 65 72 6e 61  l of the alterna
3c70: 74 69 76 65 20 64 6f 6d 61 69 6e 20 6e 61 6d 65  tive domain name
3c80: 73 2c 20 73 75 62 20 64 6f 6d 61 69 6e 73 2c 0a  s, sub domains,.
3c90: 09 20 20 20 20 61 6e 64 20 49 50 20 61 64 64 72  .    and IP addr
3ca0: 65 73 73 65 73 20 74 68 61 74 20 61 72 65 20 73  esses that are s
3cb0: 65 63 75 72 65 64 20 62 79 20 74 68 65 20 63 65  ecured by the ce
3cc0: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
3cd0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6f 63 73  .<dt><strong>ocs
3ce0: 70 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c  p</strong> <em>l
3cf0: 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ist</em></dt>..<
3d00: 64 64 3e 4c 69 73 74 20 6f 66 20 61 6c 6c 20 4f  dd>List of all O
3d10: 6e 6c 69 6e 65 20 43 65 72 74 69 66 69 63 61 74  nline Certificat
3d20: 65 20 53 74 61 74 75 73 20 50 72 6f 74 6f 63 6f  e Status Protoco
3d30: 6c 20 28 4f 43 53 50 29 20 55 52 4c 73 2e 3c 2f  l (OCSP) URLs.</
3d40: 64 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  dd>...<dt><stron
3d50: 67 3e 63 65 72 74 69 66 69 63 61 74 65 3c 2f 73  g>certificate</s
3d60: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 65 72 74 3c  trong> <em>cert<
3d70: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
3d80: 68 65 20 50 45 4d 20 65 6e 63 6f 64 65 64 20 63  he PEM encoded c
3d90: 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e  ertificate.</dd>
3da0: 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  ...<dt><strong>s
3db0: 69 67 6e 61 74 75 72 65 41 6c 67 6f 72 69 74 68  ignatureAlgorith
3dc0: 6d 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61  m</strong> <em>a
3dd0: 6c 67 6f 72 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64  lgorithm</em></d
3de0: 74 3e 0a 09 3c 64 64 3e 43 69 70 68 65 72 20 61  t>..<dd>Cipher a
3df0: 6c 67 6f 72 69 74 68 6d 20 75 73 65 64 20 66 6f  lgorithm used fo
3e00: 72 20 63 65 72 74 69 66 69 63 61 74 65 20 73 69  r certificate si
3e10: 67 6e 61 74 75 72 65 2e 3c 2f 64 64 3e 0a 09 3c  gnature.</dd>..<
3e20: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61  dt><strong>signa
3e30: 74 75 72 65 56 61 6c 75 65 3c 2f 73 74 72 6f 6e  tureValue</stron
3e40: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
3e50: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72  m></dt>..<dd>Cer
3e60: 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 74 75  tificate signatu
3e70: 72 65 20 61 73 20 68 65 78 20 73 74 72 69 6e 67  re as hex string
3e80: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3e90: 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 44 69 67  ong>signatureDig
3ea0: 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  est</strong> <em
3eb0: 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64  >version</em></d
3ec0: 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66 69 63  t>..<dd>Certific
3ed0: 61 74 65 20 73 69 67 6e 69 6e 67 20 64 69 67 65  ate signing dige
3ee0: 73 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  st.</dd>..<dt><s
3ef0: 74 72 6f 6e 67 3e 70 75 62 6c 69 63 4b 65 79 41  trong>publicKeyA
3f00: 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67  lgorithm</strong
3f10: 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c  > <em>algorithm<
3f20: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43  /em></dt>..<dd>C
3f30: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61  ertificate signa
3f40: 74 75 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20  ture public key 
3f50: 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64 3e 0a  algorithm.</dd>.
3f60: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 75 62  .<dt><strong>pub
3f70: 6c 69 63 4b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20  licKey</strong> 
3f80: 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c  <em>string</em><
3f90: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66  /dt>..<dd>Certif
3fa0: 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20  icate signature 
3fb0: 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20 68 65  public key as he
3fc0: 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09  x string.</dd>..
3fd0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 62 69 74 73  <dt><strong>bits
3fe0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c  </strong> <em>n<
3ff0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4e  /em></dt>..<dd>N
4000: 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20 75 73  umber of bits us
4010: 65 64 20 66 6f 72 20 63 65 72 74 69 66 69 63 61  ed for certifica
4020: 74 65 20 73 69 67 6e 61 74 75 72 65 20 6b 65 79  te signature key
4030: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
4040: 6e 67 3e 73 65 6c 66 5f 73 69 67 6e 65 64 3c 2f  ng>self_signed</
4050: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c  strong> <em>bool
4060: 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ean</em></dt>..<
4070: 64 64 3e 49 73 20 63 65 72 74 69 66 69 63 61 74  dd>Is certificat
4080: 65 20 73 69 67 6e 61 74 75 72 65 20 73 65 6c 66  e signature self
4090: 20 73 69 67 6e 65 64 2e 3c 2f 64 64 3e 0a 0a 09   signed.</dd>...
40a0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 31  <dt><strong>sha1
40b0: 5f 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _hash</strong> <
40c0: 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74  em>hash</em></dt
40d0: 3e 0a 09 3c 64 64 3e 54 68 65 20 53 48 41 31 20  >..<dd>The SHA1 
40e0: 68 61 73 68 20 6f 66 20 74 68 65 20 63 65 72 74  hash of the cert
40f0: 69 66 69 63 61 74 65 20 61 73 20 68 65 78 20 73  ificate as hex s
4100: 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74  tring.</dd>..<dt
4110: 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 32 35 36 5f  ><strong>sha256_
4120: 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  hash</strong> <e
4130: 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>hash</em></dt>
4140: 0a 09 3c 64 64 3e 54 68 65 20 53 48 41 32 35 36  ..<dd>The SHA256
4150: 20 68 61 73 68 20 6f 66 20 74 68 65 20 63 65 72   hash of the cer
4160: 74 69 66 69 63 61 74 65 20 61 73 20 68 65 78 20  tificate as hex 
4170: 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 20 20 20  string.</dd>.   
4180: 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75   </dl>.</blockqu
4190: 6f 74 65 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61  ote>..    <dt><a
41a0: 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 63 6f 6e 6e   name="tls::conn
41b0: 65 63 74 69 6f 6e 22 3e 3c 73 74 72 6f 6e 67 3e  ection"><strong>
41c0: 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c  tls::connection<
41d0: 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20 3c 65 6d  /strong>.    <em
41e0: 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61  >channel</em></a
41f0: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52  ></dt>.    <dd>R
4200: 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65  eturns the curre
4210: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  nt connection st
4220: 61 74 75 73 20 6f 66 20 61 6e 20 53 53 4c 20 63  atus of an SSL c
4230: 68 61 6e 6e 65 6c 2e 20 54 68 65 0a 09 72 65 73  hannel. The..res
4240: 75 6c 74 20 69 73 20 61 20 6c 69 73 74 20 6f 66  ult is a list of
4250: 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 73   key-value pairs
4260: 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 0a   describing the.
4270: 09 63 6f 6e 6e 65 63 74 65 64 20 70 65 65 72 2e  .connected peer.
4280: 3c 2f 64 64 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </dd>.<blockquot
4290: 65 3e 0a 09 3c 62 3e 53 53 4c 20 53 74 61 74 75  e>..<b>SSL Statu
42a0: 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09  s</b>.    <dl>..
42b0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 74  <dt><strong>stat
42c0: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73  e</strong> <em>s
42d0: 74 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  tate</em></dt>..
42e0: 3c 64 64 3e 53 74 61 74 65 20 6f 66 20 74 68 65  <dd>State of the
42f0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f 64 64   connection.</dd
4300: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
4310: 65 72 76 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e  ervername</stron
4320: 67 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e  g> <em>name</em>
4330: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e  </dt>..<dd>The n
4340: 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65  ame of the conne
4350: 63 74 65 64 20 74 6f 20 73 65 72 76 65 72 2e 3c  cted to server.<
4360: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
4370: 67 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 73 74 72 6f  g>protocol</stro
4380: 6e 67 3e 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c  ng> <em>version<
4390: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
43a0: 68 65 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73  he protocol vers
43b0: 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65  ion used for the
43c0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a 0a 09 20 20   connection:..  
43d0: 20 20 53 53 4c 32 2c 20 53 53 4c 33 2c 20 54 4c    SSL2, SSL3, TL
43e0: 53 31 2c 20 54 4c 53 31 2e 31 2c 20 54 4c 53 31  S1, TLS1.1, TLS1
43f0: 2e 32 2c 20 54 4c 53 31 2e 33 2c 20 6f 72 20 75  .2, TLS1.3, or u
4400: 6e 6b 6e 6f 77 6e 2e 3c 2f 64 64 3e 0a 09 3c 64  nknown.</dd>..<d
4410: 74 3e 3c 73 74 72 6f 6e 67 3e 72 65 6e 65 67 6f  t><strong>renego
4420: 74 69 61 74 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e  tiation</strong>
4430: 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d   <em>boolean</em
4440: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74  ></dt>..<dd>Whet
4450: 68 65 72 20 70 72 6f 74 6f 63 6f 6c 20 72 65 6e  her protocol ren
4460: 65 67 6f 74 69 61 74 69 6f 6e 20 69 73 20 73 75  egotiation is su
4470: 70 70 6f 72 74 65 64 20 6f 72 20 6e 6f 74 2e 3c  pported or not.<
4480: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
4490: 67 3e 73 65 63 75 72 69 74 79 6c 65 76 65 6c 3c  g>securitylevel<
44a0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 65 76  /strong> <em>lev
44b0: 65 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  el</em></dt>..<d
44c0: 64 3e 54 68 65 20 73 65 63 75 72 69 74 79 20 6c  d>The security l
44d0: 65 76 65 6c 20 75 73 65 64 20 66 6f 72 20 73 65  evel used for se
44e0: 6c 65 63 74 69 6f 6e 20 6f 66 20 63 69 70 68 65  lection of ciphe
44f0: 72 73 2c 20 6b 65 79 20 73 69 7a 65 2c 20 65 74  rs, key size, et
4500: 63 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  c.</dd>..<dt><st
4510: 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 72 65 75  rong>session_reu
4520: 73 65 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  sed</strong> <em
4530: 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64  >boolean</em></d
4540: 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20  t>..<dd>Whether 
4550: 74 68 65 20 73 65 73 73 69 6f 6e 20 68 61 73 20  the session has 
4560: 62 65 65 6e 20 72 65 75 73 65 64 20 6f 72 20 6e  been reused or n
4570: 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ot.</dd>..<dt><s
4580: 74 72 6f 6e 67 3e 69 73 5f 73 65 72 76 65 72 3c  trong>is_server<
4590: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
45a0: 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  lean</em></dt>..
45b0: 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 65 20  <dd>Whether the 
45c0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6f  connection is co
45d0: 6e 66 69 67 75 72 65 64 20 61 73 20 61 20 73 65  nfigured as a se
45e0: 72 76 65 72 20 28 31 29 20 6f 72 20 63 6c 69 65  rver (1) or clie
45f0: 6e 74 20 28 30 29 2e 3c 2f 64 64 3e 0a 09 3c 64  nt (0).</dd>..<d
4600: 74 3e 3c 73 74 72 6f 6e 67 3e 63 6f 6d 70 72 65  t><strong>compre
4610: 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ssion</strong> <
4620: 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74  em>mode</em></dt
4630: 3e 0a 09 3c 64 64 3e 43 6f 6d 70 72 65 73 73 69  >..<dd>Compressi
4640: 6f 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64 64 3e 0a  on method.</dd>.
4650: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 65 78 70  .<dt><strong>exp
4660: 61 6e 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20  ansion</strong> 
4670: 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64  <em>mode</em></d
4680: 74 3e 0a 09 3c 64 64 3e 45 78 70 61 6e 73 69 6f  t>..<dd>Expansio
4690: 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64 64 3e 0a 20  n method.</dd>. 
46a0: 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b     </dl>.</block
46b0: 71 75 6f 74 65 3e 0a 3c 62 6c 6f 63 6b 71 75 6f  quote>.<blockquo
46c0: 74 65 3e 0a 09 3c 62 3e 43 69 70 68 65 72 20 49  te>..<b>Cipher I
46d0: 6e 66 6f 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e  nfo</b>.    <dl>
46e0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69  ..<dt><strong>ci
46f0: 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  pher</strong> <e
4700: 6d 3e 63 69 70 68 65 72 3c 2f 65 6d 3e 3c 2f 64  m>cipher</em></d
4710: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 63 75 72 72  t>..<dd>The curr
4720: 65 6e 74 20 63 69 70 68 65 72 20 69 6e 20 75 73  ent cipher in us
4730: 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  e for the connec
4740: 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  tion.</dd>..<dt>
4750: 3c 73 74 72 6f 6e 67 3e 73 74 61 6e 64 61 72 64  <strong>standard
4760: 5f 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _name</strong> <
4770: 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74  em>name</em></dt
4780: 3e 0a 09 3c 64 64 3e 54 68 65 20 73 74 61 6e 64  >..<dd>The stand
4790: 61 72 64 20 52 46 43 20 6e 61 6d 65 20 6f 66 20  ard RFC name of 
47a0: 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64  cipher.</dd>..<d
47b0: 74 3e 3c 73 74 72 6f 6e 67 3e 62 69 74 73 3c 2f  t><strong>bits</
47c0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65  strong> <em>n</e
47d0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
47e0: 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 63 65   number of proce
47f0: 73 73 65 64 20 62 69 74 73 20 75 73 65 64 20 66  ssed bits used f
4800: 6f 72 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a  or cipher.</dd>.
4810: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 63  .<dt><strong>sec
4820: 72 65 74 5f 62 69 74 73 3c 2f 73 74 72 6f 6e 67  ret_bits</strong
4830: 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74  > <em>n</em></dt
4840: 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 75 6d 62 65  >..<dd>The numbe
4850: 72 20 6f 66 20 73 65 63 72 65 74 20 62 69 74 73  r of secret bits
4860: 20 75 73 65 64 20 66 6f 72 20 63 69 70 68 65 72   used for cipher
4870: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
4880: 6f 6e 67 3e 6d 69 6e 5f 76 65 72 73 69 6f 6e 3c  ong>min_version<
4890: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72  /strong> <em>ver
48a0: 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  sion</em></dt>..
48b0: 3c 64 64 3e 54 68 65 20 6d 69 6e 69 6d 75 6d 20  <dd>The minimum 
48c0: 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e  protocol version
48d0: 20 66 6f 72 20 63 69 70 68 65 72 2e 3c 2f 64 64   for cipher.</dd
48e0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 69  >..<dt><strong>i
48f0: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 69  d</strong> <em>i
4900: 64 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  d</em></dt>..<dd
4910: 3e 54 68 65 20 4f 70 65 6e 53 53 4c 20 63 69 70  >The OpenSSL cip
4920: 68 65 72 20 69 64 2e 3c 2f 64 64 3e 0a 09 3c 64  her id.</dd>..<d
4930: 74 3e 3c 73 74 72 6f 6e 67 3e 64 65 73 63 72 69  t><strong>descri
4940: 70 74 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ption</strong> <
4950: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
4960: 64 74 3e 0a 09 3c 64 64 3e 41 20 74 65 78 74 20  dt>..<dd>A text 
4970: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
4980: 68 65 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a  he cipher.</dd>.
4990: 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63      </dl>.</bloc
49a0: 6b 71 75 6f 74 65 3e 0a 3c 62 6c 6f 63 6b 71 75  kquote>.<blockqu
49b0: 6f 74 65 3e 0a 09 3c 62 3e 53 65 73 73 69 6f 6e  ote>..<b>Session
49c0: 20 49 6e 66 6f 3c 2f 62 3e 0a 20 20 20 20 3c 64   Info</b>.    <d
49d0: 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  l>..<dt><strong>
49e0: 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  alpn</strong> <e
49f0: 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 3c  m>protocol</em><
4a00: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 72  /dt>..<dd>The pr
4a10: 6f 74 6f 63 6f 6c 20 73 65 6c 65 63 74 65 64 20  otocol selected 
4a20: 61 66 74 65 72 20 41 70 70 6c 69 63 61 74 69 6f  after Applicatio
4a30: 6e 2d 4c 61 79 65 72 20 50 72 6f 74 6f 63 6f 6c  n-Layer Protocol
4a40: 0a 09 20 20 20 20 4e 65 67 6f 74 69 61 74 69 6f  ..    Negotiatio
4a50: 6e 20 28 41 4c 50 4e 29 2e 3c 2f 64 64 3e 0a 09  n (ALPN).</dd>..
4a60: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 72 65 73 75  <dt><strong>resu
4a70: 6d 61 62 6c 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  mable</strong> <
4a80: 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c  em>boolean</em><
4a90: 2f 64 74 3e 0a 09 3c 64 64 3e 43 61 6e 20 74 68  /dt>..<dd>Can th
4aa0: 65 20 73 65 73 73 69 6f 6e 20 62 65 20 72 65 73  e session be res
4ab0: 75 6d 65 64 20 6f 72 20 6e 6f 74 2e 3c 2f 64 64  umed or not.</dd
4ac0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
4ad0: 74 61 72 74 5f 74 69 6d 65 3c 2f 73 74 72 6f 6e  tart_time</stron
4ae0: 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f  g> <em>seconds</
4af0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 69  em></dt>..<dd>Ti
4b00: 6d 65 20 73 69 6e 63 65 20 73 65 73 73 69 6f 6e  me since session
4b10: 20 73 74 61 72 74 65 64 20 69 6e 20 73 65 63 6f   started in seco
4b20: 6e 64 73 20 73 69 6e 63 65 20 65 70 6f 63 68 2e  nds since epoch.
4b30: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
4b40: 6e 67 3e 74 69 6d 65 6f 75 74 3c 2f 73 74 72 6f  ng>timeout</stro
4b50: 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c  ng> <em>seconds<
4b60: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4d  /em></dt>..<dd>M
4b70: 61 78 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 73  ax duration of s
4b80: 65 73 73 69 6f 6e 20 69 6e 20 73 65 63 6f 6e 64  ession in second
4b90: 73 20 62 65 66 6f 72 65 20 74 69 6d 65 2d 6f 75  s before time-ou
4ba0: 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  t.</dd>..<dt><st
4bb0: 72 6f 6e 67 3e 6c 69 66 65 74 69 6d 65 3c 2f 73  rong>lifetime</s
4bc0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e  trong> <em>secon
4bd0: 64 73 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ds</em></dt>..<d
4be0: 64 3e 53 65 73 73 69 6f 6e 20 74 69 63 6b 65 74  d>Session ticket
4bf0: 20 6c 69 66 65 74 69 6d 65 20 68 69 6e 74 20 69   lifetime hint i
4c00: 6e 20 73 65 63 6f 6e 64 73 2e 3c 2f 64 64 3e 0a  n seconds.</dd>.
4c10: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 73  .<dt><strong>ses
4c20: 73 69 6f 6e 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e  sion_id</strong>
4c30: 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69   <em>binary_stri
4c40: 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ng</em></dt>..<d
4c50: 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69 6f 6e  d>Unique session
4c60: 20 69 64 20 66 6f 72 20 75 73 65 20 69 6e 20 72   id for use in r
4c70: 65 73 75 6d 69 6e 67 20 74 68 65 20 73 65 73 73  esuming the sess
4c80: 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  ion.</dd>..<dt><
4c90: 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 74  strong>session_t
4ca0: 69 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c  icket</strong> <
4cb0: 65 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69 6e 67  em>binary_string
4cc0: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4cd0: 55 6e 69 71 75 65 20 73 65 73 73 69 6f 6e 20 74  Unique session t
4ce0: 69 63 6b 65 74 20 66 6f 72 20 75 73 65 20 69 6e  icket for use in
4cf0: 20 72 65 73 75 6d 69 6e 67 20 74 68 65 20 73 65   resuming the se
4d00: 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ssion.</dd>..<dt
4d10: 3e 3c 73 74 72 6f 6e 67 3e 74 69 63 6b 65 74 5f  ><strong>ticket_
4d20: 61 70 70 5f 64 61 74 61 3c 2f 73 74 72 6f 6e 67  app_data</strong
4d30: 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74 72  > <em>binary_str
4d40: 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ing</em></dt>..<
4d50: 64 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69 6f  dd>Unique sessio
4d60: 6e 20 74 69 63 6b 65 74 20 61 70 70 6c 69 63 61  n ticket applica
4d70: 74 69 6f 6e 20 64 61 74 61 2e 3c 2f 64 64 3e 0a  tion data.</dd>.
4d80: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6d 61 73  .<dt><strong>mas
4d90: 74 65 72 5f 6b 65 79 3c 2f 73 74 72 6f 6e 67 3e  ter_key</strong>
4da0: 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74 72 69   <em>binary_stri
4db0: 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ng</em></dt>..<d
4dc0: 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69 6f 6e  d>Unique session
4dd0: 20 6d 61 73 74 65 72 20 6b 65 79 2e 3c 2f 64 64   master key.</dd
4de0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
4df0: 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64  ession_cache_mod
4e00: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6d  e</strong> <em>m
4e10: 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ode</em></dt>..<
4e20: 64 64 3e 53 65 72 76 65 72 20 63 61 63 68 65 20  dd>Server cache 
4e30: 6d 6f 64 65 20 28 63 6c 69 65 6e 74 2c 20 73 65  mode (client, se
4e40: 72 76 65 72 2c 20 6f 72 20 62 6f 74 68 29 2e 3c  rver, or both).<
4e50: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c  /dd>.    </dl>.<
4e60: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20  /blockquote>..  
4e70: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
4e80: 6c 73 3a 3a 63 69 70 68 65 72 73 22 3e 3c 73 74  ls::ciphers"><st
4e90: 72 6f 6e 67 3e 74 6c 73 3a 3a 63 69 70 68 65 72  rong>tls::cipher
4ea0: 73 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20 3c  s</strong>.    <
4eb0: 65 6d 3e 3f 70 72 6f 74 6f 63 6f 6c 3f 20 3f 76  em>?protocol? ?v
4ec0: 65 72 62 6f 73 65 3f 20 3f 73 75 70 70 6f 72 74  erbose? ?support
4ed0: 65 64 3f 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74  ed?</em></a></dt
4ee0: 3e 0a 20 20 20 20 3c 64 64 3e 57 69 74 68 6f 75  >.    <dd>Withou
4ef0: 74 20 61 6e 79 20 61 72 67 73 2c 20 72 65 74 75  t any args, retu
4f00: 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 61 6c  rns a list of al
4f10: 6c 20 63 69 70 68 65 72 73 2e 20 57 69 74 68 0a  l ciphers. With.
4f20: 09 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65  .<em>protocol</e
4f30: 6d 3e 2c 20 6f 6e 6c 79 20 74 68 65 20 63 69 70  m>, only the cip
4f40: 68 65 72 73 20 73 75 70 70 6f 72 74 65 64 20 66  hers supported f
4f50: 6f 72 20 74 68 61 74 20 70 72 6f 74 6f 63 6f 6c  or that protocol
4f60: 0a 09 61 72 65 20 72 65 74 75 72 6e 65 64 20 77  ..are returned w
4f70: 68 65 72 65 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f  here <em>protoco
4f80: 6c 3c 2f 65 6d 3e 20 6d 75 73 74 20 62 65 20 6f  l</em> must be o
4f90: 6e 65 20 6f 66 20 3c 62 3e 73 73 6c 32 2c 20 73  ne of <b>ssl2, s
4fa0: 73 6c 33 2c 0a 09 74 6c 73 31 2c 20 74 6c 73 31  sl3,..tls1, tls1
4fb0: 2e 31 2c 20 74 6c 73 31 2e 32 2c 3c 2f 62 3e 20  .1, tls1.2,</b> 
4fc0: 6f 72 20 3c 62 3e 74 6c 73 31 2e 33 3c 2f 62 3e  or <b>tls1.3</b>
4fd0: 2e 20 49 66 20 3c 65 6d 3e 76 65 72 62 6f 73 65  . If <em>verbose
4fe0: 3c 2f 65 6d 3e 20 69 73 0a 09 73 70 65 63 69 66  </em> is..specif
4ff0: 69 65 64 20 61 73 20 74 72 75 65 20 74 68 65 6e  ied as true then
5000: 20 61 20 76 65 72 62 6f 73 65 2c 20 68 75 6d 61   a verbose, huma
5010: 6e 20 72 65 61 64 61 62 6c 65 20 6c 69 73 74 20  n readable list 
5020: 69 73 20 72 65 74 75 72 6e 65 64 0a 09 77 69 74  is returned..wit
5030: 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  h additional inf
5040: 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20  ormation on the 
5050: 63 69 70 68 65 72 2e 20 49 66 20 3c 65 6d 3e 73  cipher. If <em>s
5060: 75 70 70 6f 72 74 65 64 3c 2f 65 6d 3e 0a 09 69  upported</em>..i
5070: 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74  s specified as t
5080: 72 75 65 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  rue, then only t
5090: 68 65 20 63 69 70 68 65 72 73 20 73 75 70 70 6f  he ciphers suppo
50a0: 72 74 65 64 20 66 6f 72 20 70 72 6f 74 6f 63 6f  rted for protoco
50b0: 6c 0a 09 77 69 6c 6c 20 62 65 20 6c 69 73 74 65  l..will be liste
50c0: 64 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64 74  d.</dd>..    <dt
50d0: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 64  ><a name="tls::d
50e0: 69 67 65 73 74 73 22 3e 3c 73 74 72 6f 6e 67 3e  igests"><strong>
50f0: 74 6c 73 3a 3a 64 69 67 65 73 74 73 3c 2f 73 74  tls::digests</st
5100: 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  rong></a></dt>. 
5110: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 61     <dd>Returns a
5120: 20 6c 69 73 74 20 6f 66 20 74 68 65 20 68 61 73   list of the has
5130: 68 20 61 6c 67 6f 72 69 74 68 6d 73 20 66 6f 72  h algorithms for
5140: 20 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74 3c   <b>tls::digest<
5150: 2f 62 3e 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 64 64  /b> command.</dd
5160: 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61  >..    <dt><a na
5170: 6d 65 3d 22 74 6c 73 3a 3a 6d 61 63 73 22 3e 3c  me="tls::macs"><
5180: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 6d 61 63 73  strong>tls::macs
5190: 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64  </strong></a></d
51a0: 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72  t>.    <dd>Retur
51b0: 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65  ns a list of the
51c0: 20 61 76 61 69 6c 61 62 6c 65 20 4d 65 73 73 61   available Messa
51d0: 67 65 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f  ge Authenticatio
51e0: 6e 20 43 6f 64 65 73 20 28 4d 41 43 29 20 66 6f  n Codes (MAC) fo
51f0: 72 0a 09 74 68 65 20 3c 62 3e 74 6c 73 3a 3a 64  r..the <b>tls::d
5200: 69 67 65 73 74 3c 2f 62 3e 20 63 6f 6d 6d 61 6e  igest</b> comman
5210: 64 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64 74  d.</dd>..    <dt
5220: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 70  ><a name="tls::p
5230: 72 6f 74 6f 63 6f 6c 73 22 3e 3c 73 74 72 6f 6e  rotocols"><stron
5240: 67 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73  g>tls::protocols
5250: 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64  </strong></a></d
5260: 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72  t>.    <dd>Retur
5270: 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 73 75 70  ns a list of sup
5280: 70 6f 72 74 65 64 20 70 72 6f 74 6f 63 6f 6c 73  ported protocols
5290: 2e 20 56 61 6c 69 64 20 76 61 6c 75 65 73 20 61  . Valid values a
52a0: 72 65 3a 0a 09 3c 62 3e 73 73 6c 32 3c 2f 62 3e  re:..<b>ssl2</b>
52b0: 2c 20 3c 62 3e 73 73 6c 33 3c 2f 62 3e 2c 20 3c  , <b>ssl3</b>, <
52c0: 62 3e 74 6c 73 31 3c 2f 62 3e 2c 20 3c 62 3e 74  b>tls1</b>, <b>t
52d0: 6c 73 31 2e 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c  ls1.1</b>, <b>tl
52e0: 73 31 2e 32 3c 2f 62 3e 2c 0a 09 61 6e 64 20 3c  s1.2</b>,..and <
52f0: 62 3e 74 6c 73 31 2e 33 3c 2f 62 3e 2e 20 45 78  b>tls1.3</b>. Ex
5300: 61 63 74 20 6c 69 73 74 20 64 65 70 65 6e 64 73  act list depends
5310: 20 6f 6e 20 4f 70 65 6e 53 53 4c 20 76 65 72 73   on OpenSSL vers
5320: 69 6f 6e 20 61 6e 64 0a 09 63 6f 6d 70 69 6c 65  ion and..compile
5330: 20 74 69 6d 65 20 66 6c 61 67 73 2e 3c 2f 64 64   time flags.</dd
5340: 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61  >..    <dt><a na
5350: 6d 65 3d 22 74 6c 73 3a 3a 76 65 72 73 69 6f 6e  me="tls::version
5360: 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76  "><strong>tls::v
5370: 65 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 3c  ersion</strong><
5380: 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64  /a></dt>.    <dd
5390: 3e 52 65 74 75 72 6e 73 20 74 68 65 20 4f 70 65  >Returns the Ope
53a0: 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 73 74 72  nSSL version str
53b0: 69 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c  ing.</dd>..    <
53c0: 62 72 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  br>.    <dt><a n
53d0: 61 6d 65 3d 22 74 6c 73 3a 3a 64 69 67 65 73 74  ame="tls::digest
53e0: 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 64  "><strong>tls::d
53f0: 69 67 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c  igest</strong> <
5400: 65 6d 3e 74 79 70 65 20 3f 2d 62 69 6e 7c 2d 68  em>type ?-bin|-h
5410: 65 78 3f 0a 09 3f 2d 6b 65 79 20 68 6d 61 63 5f  ex?..?-key hmac_
5420: 6b 65 79 3f 20 5b 2d 66 69 6c 65 20 66 69 6c 65  key? [-file file
5430: 6e 61 6d 65 20 7c 20 2d 63 68 61 6e 20 63 68 61  name | -chan cha
5440: 6e 6e 65 6c 20 7c 20 3f 2d 64 61 74 61 3f 20 64  nnel | ?-data? d
5450: 61 74 61 5d 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64  ata]</em></a></d
5460: 74 3e 0a 20 20 20 20 3c 64 64 3e 43 61 6c 63 75  t>.    <dd>Calcu
5470: 6c 61 74 65 20 74 68 65 20 6d 65 73 73 61 67 65  late the message
5480: 20 64 69 67 65 73 74 20 66 6f 72 20 3c 65 6d 3e   digest for <em>
5490: 64 61 74 61 3c 2f 65 6d 3e 20 6f 72 20 66 69 6c  data</em> or fil
54a0: 65 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f  e <em>filename</
54b0: 65 6d 3e 0a 09 75 73 69 6e 67 20 3c 65 6d 3e 74  em>..using <em>t
54c0: 79 70 65 3c 2f 65 6d 3e 20 68 61 73 68 20 61 6c  ype</em> hash al
54d0: 67 6f 72 69 74 68 6d 2e 20 52 65 74 75 72 6e 73  gorithm. Returns
54e0: 20 76 61 6c 75 65 20 61 73 20 61 20 68 65 78 20   value as a hex 
54f0: 73 74 72 69 6e 67 0a 09 28 64 65 66 61 75 6c 74  string..(default
5500: 29 20 6f 72 20 61 73 20 61 20 62 69 6e 61 72 79  ) or as a binary
5510: 20 76 61 6c 75 65 20 77 69 74 68 20 3c 65 6d 3e   value with <em>
5520: 2d 62 69 6e 3c 2f 65 6d 3e 20 6f 70 74 69 6f 6e  -bin</em> option
5530: 2e 20 55 73 69 6e 67 0a 09 3c 65 6d 3e 2d 63 68  . Using..<em>-ch
5540: 61 6e 3c 2f 65 6d 3e 20 6f 70 74 69 6f 6e 2c 20  an</em> option, 
5550: 61 20 73 74 61 63 6b 65 64 20 63 68 61 6e 6e 65  a stacked channe
5560: 6c 20 69 73 20 63 72 65 61 74 65 64 20 61 6e 64  l is created and
5570: 20 64 61 74 61 20 72 65 61 64 0a 09 66 72 6f 6d   data read..from
5580: 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 69 73 20   the channel is 
5590: 75 73 65 64 20 74 6f 20 63 61 6c 63 75 6c 61 74  used to calculat
55a0: 65 20 61 20 6d 65 73 73 61 67 65 20 64 69 67 65  e a message dige
55b0: 73 74 20 77 69 74 68 20 74 68 65 20 72 65 73 75  st with the resu
55c0: 6c 74 0a 09 72 65 74 75 72 6e 65 64 20 77 69 74  lt..returned wit
55d0: 68 20 74 68 65 20 6c 61 73 74 20 72 65 61 64 20  h the last read 
55e0: 6f 70 65 72 61 74 69 6f 6e 20 62 65 66 6f 72 65  operation before
55f0: 20 45 4f 46 2e 20 55 73 65 20 3c 65 6d 3e 2d 6b   EOF. Use <em>-k
5600: 65 79 3c 2f 65 6d 3e 20 74 6f 0a 09 73 70 65 63  ey</em> to..spec
5610: 69 66 79 20 74 68 65 20 6b 65 79 20 61 6e 64 20  ify the key and 
5620: 72 65 74 75 72 6e 20 61 20 48 61 73 68 65 64 20  return a Hashed 
5630: 4d 65 73 73 61 67 65 20 41 75 74 68 65 6e 74 69  Message Authenti
5640: 63 61 74 69 6f 6e 20 43 6f 64 65 20 28 48 4d 41  cation Code (HMA
5650: 43 29 2e 0a 09 54 6f 20 73 61 6c 74 20 61 20 70  C)...To salt a p
5660: 61 73 73 77 6f 72 64 2c 20 61 70 70 65 6e 64 20  assword, append 
5670: 6f 72 20 70 72 65 70 65 6e 64 20 74 68 65 20 73  or prepend the s
5680: 61 6c 74 20 74 65 78 74 20 74 6f 20 74 68 65 20  alt text to the 
5690: 70 61 73 73 77 6f 72 64 2e 0a 09 54 79 70 65 20  password...Type 
56a0: 63 61 6e 20 62 65 20 61 6e 79 20 4f 70 65 6e 53  can be any OpenS
56b0: 53 4c 20 73 75 70 70 6f 72 74 65 64 20 68 61 73  SL supported has
56c0: 68 20 61 6c 67 6f 72 69 74 68 6d 20 69 6e 63 6c  h algorithm incl
56d0: 75 64 69 6e 67 3a 20 3c 62 3e 6d 64 34 3c 2f 62  uding: <b>md4</b
56e0: 3e 2c 0a 09 3c 62 3e 6d 64 35 3c 2f 62 3e 2c 20  >,..<b>md5</b>, 
56f0: 3c 62 3e 73 68 61 31 3c 2f 62 3e 2c 20 3c 62 3e  <b>sha1</b>, <b>
5700: 73 68 61 32 35 36 3c 2f 62 3e 2c 20 3c 62 3e 73  sha256</b>, <b>s
5710: 68 61 35 31 32 3c 2f 62 3e 2c 20 3c 62 3e 73 68  ha512</b>, <b>sh
5720: 61 33 2d 32 35 36 3c 2f 62 3e 2c 0a 09 65 74 63  a3-256</b>,..etc
5730: 2e 20 53 65 65 20 3c 62 3e 74 6c 73 3a 3a 64 69  . See <b>tls::di
5740: 67 65 73 74 73 3c 2f 62 3e 20 63 6f 6d 6d 61 6e  gests</b> comman
5750: 64 20 66 6f 72 20 61 20 66 75 6c 6c 20 6c 69 73  d for a full lis
5760: 74 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64 74  t.</dd>..    <dt
5770: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 6d  ><a name="tls::m
5780: 64 34 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a  d4"><strong>tls:
5790: 3a 6d 64 34 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  :md4</strong> <e
57a0: 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c 2f 61 3e 3c  m>data</em></a><
57b0: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74  /dt>.    <dd>Ret
57c0: 75 72 6e 73 20 74 68 65 20 4d 44 34 20 6d 65 73  urns the MD4 mes
57d0: 73 61 67 65 2d 64 69 67 65 73 74 20 66 6f 72 20  sage-digest for 
57e0: 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20 61 73  <em>data</em> as
57f0: 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f   a hex string.</
5800: 64 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20  dd>..    <dt><a 
5810: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 6d 64 35 22 3e  name="tls::md5">
5820: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 6d 64 35  <strong>tls::md5
5830: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61  </strong> <em>da
5840: 74 61 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  ta</em></a></dt>
5850: 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73  .    <dd>Returns
5860: 20 74 68 65 20 4d 44 35 20 6d 65 73 73 61 67 65   the MD5 message
5870: 2d 64 69 67 65 73 74 20 66 6f 72 20 3c 65 6d 3e  -digest for <em>
5880: 64 61 74 61 3c 2f 65 6d 3e 20 61 73 20 61 20 68  data</em> as a h
5890: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
58a0: 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65  .    <dt><a name
58b0: 3d 22 74 6c 73 3a 3a 73 68 61 31 22 3e 3c 73 74  ="tls::sha1"><st
58c0: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 68 61 31 3c 2f  rong>tls::sha1</
58d0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74 61  strong> <em>data
58e0: 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  </em></a></dt>. 
58f0: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 74     <dd>Returns t
5900: 68 65 20 53 48 41 31 20 73 65 63 75 72 65 20 68  he SHA1 secure h
5910: 61 73 68 20 61 6c 67 6f 72 69 74 68 6d 20 64 69  ash algorithm di
5920: 67 65 73 74 20 66 6f 72 20 3c 65 6d 3e 64 61 74  gest for <em>dat
5930: 61 3c 2f 65 6d 3e 20 61 73 20 61 20 68 65 78 20  a</em> as a hex 
5940: 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20  string.</dd>..  
5950: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
5960: 6c 73 3a 3a 73 68 61 32 35 36 22 3e 3c 73 74 72  ls::sha256"><str
5970: 6f 6e 67 3e 74 6c 73 3a 3a 73 68 61 32 35 36 3c  ong>tls::sha256<
5980: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74  /strong> <em>dat
5990: 61 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a  a</em></a></dt>.
59a0: 20 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20      <dd>Returns 
59b0: 74 68 65 20 53 48 41 2d 32 20 53 48 41 32 35 36  the SHA-2 SHA256
59c0: 20 73 65 63 75 72 65 20 68 61 73 68 20 61 6c 67   secure hash alg
59d0: 6f 72 69 74 68 6d 20 64 69 67 65 73 74 20 66 6f  orithm digest fo
59e0: 72 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20  r <em>data</em> 
59f0: 61 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e  as a hex string.
5a00: 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 68 33  </dd>.</dl>..<h3
5a10: 3e 3c 61 20 6e 61 6d 65 3d 22 43 41 4c 4c 42 41  ><a name="CALLBA
5a20: 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c  CK OPTIONS">CALL
5a30: 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e  BACK OPTIONS</a>
5a40: 3c 2f 68 33 3e 0a 0a 3c 70 3e 0a 41 73 20 69 6e  </h3>..<p>.As in
5a50: 64 69 63 61 74 65 64 20 61 62 6f 76 65 2c 20 69  dicated above, i
5a60: 6e 64 69 76 69 64 75 61 6c 20 63 68 61 6e 6e 65  ndividual channe
5a70: 6c 73 20 63 61 6e 20 62 65 20 67 69 76 65 6e 20  ls can be given 
5a80: 74 68 65 69 72 20 6f 77 6e 20 63 61 6c 6c 62 61  their own callba
5a90: 63 6b 73 0a 74 6f 20 68 61 6e 64 6c 65 20 69 6e  cks.to handle in
5aa0: 74 65 72 6d 65 64 69 61 74 65 20 70 72 6f 63 65  termediate proce
5ab0: 73 73 69 6e 67 20 62 79 20 74 68 65 20 4f 70 65  ssing by the Ope
5ac0: 6e 53 53 4c 20 6c 69 62 72 61 72 79 2c 20 75 73  nSSL library, us
5ad0: 69 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e  ing the.<strong>
5ae0: 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67  -command</strong
5af0: 3e 2c 20 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73  >, <strong>-pass
5b00: 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61  word</strong>, a
5b10: 6e 64 0a 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69  nd.<strong>-vali
5b20: 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74  date_command</st
5b30: 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e 73 20 70 61  rong> options pa
5b40: 73 73 65 64 20 74 6f 20 65 69 74 68 65 72 20 6f  ssed to either o
5b50: 66 0a 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73  f.<strong>tls::s
5b60: 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 6f  ocket</strong> o
5b70: 72 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69  r <strong>tls::i
5b80: 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 2e 0a  mport</strong>..
5b90: 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  If the callback 
5ba0: 67 65 6e 65 72 61 74 65 73 20 61 6e 20 65 72 72  generates an err
5bb0: 6f 72 2c 20 74 68 65 20 3c 62 3e 62 67 65 72 72  or, the <b>bgerr
5bc0: 6f 72 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 20 77  or</b> command w
5bd0: 69 74 68 20 62 65 0a 69 6e 76 6f 6b 65 64 20 77  ith be.invoked w
5be0: 69 74 68 20 74 68 65 20 65 72 72 6f 72 20 69 6e  ith the error in
5bf0: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 3c 2f 70 3e 0a  formation..</p>.
5c00: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 64  .<blockquote>.<d
5c10: 6c 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 73 74 72  l>..    <dt><str
5c20: 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74  ong>-command</st
5c30: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61  rong> <em>callba
5c40: 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20  ck</em></dt>.   
5c50: 20 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65 73 20 74   <dd>..Invokes t
5c60: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 65 6d  he specified <em
5c70: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 20 73  >callback</em> s
5c80: 63 72 69 70 74 20 61 74 20 73 65 76 65 72 61 6c  cript at several
5c90: 20 70 6f 69 6e 74 73 0a 09 64 75 72 69 6e 67 20   points..during 
5ca0: 74 68 65 20 4f 70 65 6e 53 53 4c 20 68 61 6e 64  the OpenSSL hand
5cb0: 73 68 61 6b 65 20 61 6e 64 20 75 73 65 2e 20 53  shake and use. S
5cc0: 65 65 20 62 65 6c 6f 77 20 66 6f 72 20 74 68 65  ee below for the
5cd0: 20 70 6f 73 73 69 62 6c 65 0a 09 61 72 67 75 6d   possible..argum
5ce0: 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74  ents passed to t
5cf0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 63 72 69  he callback scri
5d00: 70 74 2e 20 56 61 6c 75 65 73 20 72 65 74 75 72  pt. Values retur
5d10: 6e 65 64 20 66 72 6f 6d 20 74 68 65 0a 09 63 61  ned from the..ca
5d20: 6c 6c 62 61 63 6b 20 61 72 65 20 69 67 6e 6f 72  llback are ignor
5d30: 65 64 2e 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e  ed....<br>..<br>
5d40: 0a 0a 09 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09  ...<dl>...<dt>..
5d50: 20 20 3c 73 74 72 6f 6e 67 3e 65 72 72 6f 72 3c    <strong>error<
5d60: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61  /strong> <em>cha
5d70: 6e 6e 65 6c 20 6d 65 73 73 61 67 65 3c 2f 65 6d  nnel message</em
5d80: 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09  >..</dt>..<dd>..
5d90: 20 20 54 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67    The <em>messag
5da0: 65 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20  e</em> argument 
5db0: 63 6f 6e 74 61 69 6e 73 20 61 6e 20 65 72 72 6f  contains an erro
5dc0: 72 20 6d 65 73 73 61 67 65 20 67 65 6e 65 72 61  r message genera
5dd0: 74 65 64 0a 09 20 20 62 79 20 74 68 65 20 4f 70  ted..  by the Op
5de0: 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e 20 3c  enSSL function <
5df0: 63 6f 64 65 3e 45 52 52 5f 72 65 61 73 6f 6e 5f  code>ERR_reason_
5e00: 65 72 72 6f 72 5f 73 74 72 69 6e 67 28 29 3c 2f  error_string()</
5e10: 63 6f 64 65 3e 2e 0a 09 3c 2f 64 64 3e 0a 0a 09  code>...</dd>...
5e20: 3c 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c  <br>...<dt>..  <
5e30: 73 74 72 6f 6e 67 3e 69 6e 66 6f 3c 2f 73 74 72  strong>info</str
5e40: 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c  ong> <em>channel
5e50: 20 6d 61 6a 6f 72 20 6d 69 6e 6f 72 20 6d 65 73   major minor mes
5e60: 73 61 67 65 20 74 79 70 65 3c 2f 65 6d 3e 0a 09  sage type</em>..
5e70: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54  </dt>..<dd>..  T
5e80: 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c  his form of call
5e90: 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
5ea0: 62 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66  by the OpenSSL f
5eb0: 75 6e 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65  unction..  <code
5ec0: 3e 53 53 4c 5f 43 54 58 5f 73 65 74 5f 69 6e 66  >SSL_CTX_set_inf
5ed0: 6f 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f  o_callback()</co
5ee0: 64 65 3e 20 64 75 72 69 6e 67 20 63 6f 6e 6e 65  de> during conne
5ef0: 63 74 69 6f 6e 20 73 65 74 75 70 0a 09 20 20 61  ction setup..  a
5f00: 6e 64 20 75 73 65 2e 0a 09 20 20 3c 62 72 3e 0a  nd use...  <br>.
5f10: 09 20 20 3c 75 6c 3e 0a 09 20 20 3c 6c 69 3e 50  .  <ul>..  <li>P
5f20: 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66  ossible values f
5f30: 6f 72 20 3c 65 6d 3e 6d 61 6a 6f 72 3c 2f 65 6d  or <em>major</em
5f40: 3e 20 61 72 65 3a 0a 09 20 20 3c 63 6f 64 65 3e  > are:..  <code>
5f50: 68 61 6e 64 73 68 61 6b 65 2c 20 61 6c 65 72 74  handshake, alert
5f60: 2c 20 63 6f 6e 6e 65 63 74 2c 20 61 63 63 65 70  , connect, accep
5f70: 74 3c 2f 63 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09  t</code>.</li>..
5f80: 20 20 3c 6c 69 3e 50 6f 73 73 69 62 6c 65 20 76    <li>Possible v
5f90: 61 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e 6d 69  alues for <em>mi
5fa0: 6e 6f 72 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09 20  nor</em> are:.. 
5fb0: 20 3c 63 6f 64 65 3e 73 74 61 72 74 2c 20 64 6f   <code>start, do
5fc0: 6e 65 2c 20 72 65 61 64 2c 20 77 72 69 74 65 2c  ne, read, write,
5fd0: 20 6c 6f 6f 70 2c 20 65 78 69 74 3c 2f 63 6f 64   loop, exit</cod
5fe0: 65 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e  e>.</li>..  <li>
5ff0: 54 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 65 3c  The <em>message<
6000: 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  /em> argument is
6010: 20 61 20 64 65 73 63 72 69 70 74 69 76 65 20 73   a descriptive s
6020: 74 72 69 6e 67 20 77 68 69 63 68 20 6d 61 79 0a  tring which may.
6030: 09 20 20 62 65 20 67 65 6e 65 72 61 74 65 64 20  .  be generated 
6040: 65 69 74 68 65 72 20 62 79 20 3c 63 6f 64 65 3e  either by <code>
6050: 53 53 4c 5f 73 74 61 74 65 5f 73 74 72 69 6e 67  SSL_state_string
6060: 5f 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e 20 6f  _long()</code> o
6070: 72 20 62 79 0a 09 20 20 3c 63 6f 64 65 3e 53 53  r by..  <code>SS
6080: 4c 5f 61 6c 65 72 74 5f 64 65 73 63 5f 73 74 72  L_alert_desc_str
6090: 69 6e 67 5f 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65  ing_long()</code
60a0: 3e 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  >, depending on 
60b0: 74 68 65 20 63 6f 6e 74 65 78 74 2e 3c 2f 6c 69  the context.</li
60c0: 3e 0a 09 20 20 3c 6c 69 3e 46 6f 72 20 61 6c 65  >..  <li>For ale
60d0: 72 74 73 2c 20 74 68 65 20 70 6f 73 73 69 62 6c  rts, the possibl
60e0: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 3c 65 6d  e values for <em
60f0: 3e 74 79 70 65 3c 2f 65 6d 3e 20 61 72 65 3a 0a  >type</em> are:.
6100: 09 20 20 3c 63 6f 64 65 3e 77 61 72 6e 69 6e 67  .  <code>warning
6110: 2c 20 66 61 74 61 6c 2c 20 61 6e 64 20 75 6e 6b  , fatal, and unk
6120: 6e 6f 77 6e 3c 2f 63 6f 64 65 3e 2e 20 46 6f 72  nown</code>. For
6130: 20 6f 74 68 65 72 73 2c 0a 09 20 20 3c 63 6f 64   others,..  <cod
6140: 65 3e 69 6e 66 6f 3c 2f 63 6f 64 65 3e 20 69 73  e>info</code> is
6150: 20 75 73 65 64 2e 3c 2f 6c 69 3e 0a 09 20 20 3c   used.</li>..  <
6160: 2f 75 6c 3e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 64  /ul>..</dd>...<d
6170: 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 6d 65  t>..  <strong>me
6180: 73 73 61 67 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ssage</strong> <
6190: 65 6d 3e 63 68 61 6e 6e 65 6c 20 64 69 72 65 63  em>channel direc
61a0: 74 69 6f 6e 20 76 65 72 73 69 6f 6e 20 63 6f 6e  tion version con
61b0: 74 65 6e 74 5f 74 79 70 65 20 64 61 74 61 3c 2f  tent_type data</
61c0: 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e  em>..</dt>..<dd>
61d0: 0a 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66  ..  This form of
61e0: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
61f0: 6f 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e  oked by the Open
6200: 53 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20  SSL function..  
6210: 3c 63 6f 64 65 3e 53 53 4c 5f 73 65 74 5f 6d 73  <code>SSL_set_ms
6220: 67 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f  g_callback()</co
6230: 64 65 3e 20 77 68 65 6e 65 76 65 72 20 61 20 6d  de> whenever a m
6240: 65 73 73 61 67 65 20 69 73 20 73 65 6e 74 20 6f  essage is sent o
6250: 72 0a 09 20 20 72 65 63 65 69 76 65 64 2e 20 49  r..  received. I
6260: 74 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  t is only availa
6270: 62 6c 65 20 77 68 65 6e 0a 09 20 20 4f 70 65 6e  ble when..  Open
6280: 53 53 4c 20 69 73 20 63 6f 6d 70 6c 69 65 64 20  SSL is complied 
6290: 77 69 74 68 20 74 68 65 20 3c 65 6d 3e 65 6e 61  with the <em>ena
62a0: 62 6c 65 2d 73 73 6c 2d 74 72 61 63 65 3c 2f 65  ble-ssl-trace</e
62b0: 6d 3e 20 6f 70 74 69 6f 6e 2e 0a 09 20 20 57 68  m> option...  Wh
62c0: 65 72 65 20 3c 65 6d 3e 64 69 72 65 63 74 69 6f  ere <em>directio
62d0: 6e 3c 2f 65 6d 3e 20 69 73 20 53 65 6e 74 20 6f  n</em> is Sent o
62e0: 72 20 52 65 63 65 69 76 65 64 2c 20 3c 65 6d 3e  r Received, <em>
62f0: 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 20 69 73 20  version</em> is 
6300: 74 68 65 0a 09 20 20 70 72 6f 74 6f 63 6f 6c 20  the..  protocol 
6310: 76 65 72 73 69 6f 6e 2c 20 3c 65 6d 3e 63 6f 6e  version, <em>con
6320: 74 65 6e 74 5f 74 79 70 65 3c 2f 65 6d 3e 20 69  tent_type</em> i
6330: 73 20 74 68 65 20 6d 65 73 73 61 67 65 20 63 6f  s the message co
6340: 6e 74 65 6e 74 20 74 79 70 65 2c 0a 09 20 20 61  ntent type,..  a
6350: 6e 64 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e  nd <em>data</em>
6360: 20 69 73 20 6d 6f 72 65 20 69 6e 66 6f 20 6f 6e   is more info on
6370: 20 74 68 65 20 6d 65 73 73 61 67 65 20 66 72 6f   the message fro
6380: 6d 20 74 68 65 20 3c 63 6f 64 65 3e 53 53 4c 5f  m the <code>SSL_
6390: 74 72 61 63 65 3c 2f 63 6f 64 65 3e 20 41 50 49  trace</code> API
63a0: 2e 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 0a  ...</dd>..<br>..
63b0: 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67  .<dt>..  <strong
63c0: 3e 73 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67  >session</strong
63d0: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65  > <em>channel se
63e0: 73 73 69 6f 6e 5f 69 64 20 74 69 63 6b 65 74 20  ssion_id ticket 
63f0: 6c 69 66 65 74 69 6d 65 3c 2f 65 6d 3e 0a 09 3c  lifetime</em>..<
6400: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68  /dt>..<dd>..  Th
6410: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
6420: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62  ack is invoked b
6430: 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75  y the OpenSSL fu
6440: 6e 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65 3e  nction..  <code>
6450: 53 53 4c 5f 43 54 58 5f 73 65 73 73 5f 73 65 74  SSL_CTX_sess_set
6460: 5f 6e 65 77 5f 63 62 28 29 3c 2f 63 6f 64 65 3e  _new_cb()</code>
6470: 2e 0a 09 20 20 57 68 65 72 65 20 3c 65 6d 3e 73  ...  Where <em>s
6480: 65 73 73 69 6f 6e 5f 69 64 3c 2f 65 6d 3e 20 69  ession_id</em> i
6490: 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65  s the current se
64a0: 73 73 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 72  ssion identifier
64b0: 2c 0a 09 20 20 3c 65 6d 3e 74 69 63 6b 65 74 3c  ,..  <em>ticket<
64c0: 2f 65 6d 3e 20 69 73 20 74 68 65 20 73 65 73 73  /em> is the sess
64d0: 69 6f 6e 20 74 69 63 6b 65 74 20 69 6e 66 6f 2c  ion ticket info,
64e0: 20 61 6e 64 20 3c 65 6d 3e 6c 69 66 65 74 69 6d   and <em>lifetim
64f0: 65 3c 2f 65 6d 3e 0a 09 20 20 69 73 20 74 68 65  e</em>..  is the
6500: 20 74 68 65 20 74 69 63 6b 65 74 20 6c 69 66 65   the ticket life
6510: 74 69 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 2e  time in seconds.
6520: 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c  ..</dd>..<br>..<
6530: 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 0a  /dl>.    </dd>..
6540: 20 20 20 20 3c 62 72 3e 0a 0a 20 20 20 20 3c 64      <br>..    <d
6550: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77  t><strong>-passw
6560: 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ord</strong> <em
6570: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f  >callback</em></
6580: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e  dt>.    <dd>..In
6590: 76 6f 6b 65 73 20 74 68 65 20 73 70 65 63 69 66  vokes the specif
65a0: 69 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b  ied <em>callback
65b0: 3c 2f 65 6d 3e 20 73 63 72 69 70 74 20 77 68 65  </em> script whe
65c0: 6e 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20  n OpenSSL needs 
65d0: 74 6f 0a 09 6f 62 74 61 69 6e 20 61 20 70 61 73  to..obtain a pas
65e0: 73 77 6f 72 64 2e 20 53 65 65 20 62 65 6c 6f 77  sword. See below
65f0: 20 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c   for the possibl
6600: 65 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73  e arguments pass
6610: 65 64 20 74 6f 0a 09 74 68 65 20 63 61 6c 6c 62  ed to..the callb
6620: 61 63 6b 20 73 63 72 69 70 74 2e 20 53 65 65 20  ack script. See 
6630: 62 65 6c 6f 77 20 66 6f 72 20 76 61 6c 69 64 20  below for valid 
6640: 72 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 0a 0a  return values...
6650: 09 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09 3c 64  .<br>..<br>...<d
6660: 6c 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74  l>...<dt>..  <st
6670: 72 6f 6e 67 3e 70 61 73 73 77 6f 72 64 3c 2f 73  rong>password</s
6680: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 72 77 66 6c 61  trong> <em>rwfla
6690: 67 20 73 69 7a 65 3c 2f 65 6d 3e 0a 09 3c 2f 64  g size</em>..</d
66a0: 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 49 6e 76 6f  t>..<dd>..  Invo
66b0: 6b 65 64 20 77 68 65 6e 20 6c 6f 61 64 69 6e 67  ked when loading
66c0: 20 6f 72 20 73 74 6f 72 69 6e 67 20 61 20 50 45   or storing a PE
66d0: 4d 20 63 65 72 74 69 66 69 63 61 74 65 20 77 69  M certificate wi
66e0: 74 68 20 65 6e 63 72 79 70 74 69 6f 6e 2e 0a 09  th encryption...
66f0: 20 20 57 68 65 72 65 20 3c 65 6d 3e 72 77 66 6c    Where <em>rwfl
6700: 61 67 3c 2f 65 6d 3e 20 69 73 20 30 20 66 6f 72  ag</em> is 0 for
6710: 20 72 65 61 64 69 6e 67 2f 64 65 63 72 79 70 74   reading/decrypt
6720: 69 6f 6e 20 6f 72 20 31 20 66 6f 72 0a 09 20 20  ion or 1 for..  
6730: 77 72 69 74 69 6e 67 2f 65 6e 63 72 79 70 74 69  writing/encrypti
6740: 6f 6e 20 28 63 61 6e 20 70 72 6f 6d 70 74 20 75  on (can prompt u
6750: 73 65 72 20 74 6f 20 63 6f 6e 66 69 72 6d 29 20  ser to confirm) 
6760: 61 6e 64 0a 09 20 20 3c 65 6d 3e 73 69 7a 65 3c  and..  <em>size<
6770: 2f 65 6d 3e 20 69 73 20 74 68 65 20 6d 61 78 20  /em> is the max 
6780: 70 61 73 73 77 6f 72 64 20 6c 65 6e 67 74 68 20  password length 
6790: 69 6e 20 62 79 74 65 73 2e 0a 09 20 20 54 68 65  in bytes...  The
67a0: 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64   callback should
67b0: 20 72 65 74 75 72 6e 20 74 68 65 20 70 61 73 73   return the pass
67c0: 77 6f 72 64 20 61 73 20 61 20 73 74 72 69 6e 67  word as a string
67d0: 2e 0a 09 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64  ...</dd>.    </d
67e0: 64 3e 0a 0a 20 20 20 20 3c 62 72 3e 0a 0a 0a 20  d>..    <br>... 
67f0: 20 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d     <dt><strong>-
6800: 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 3c  validatecommand<
6810: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c  /strong> <em>cal
6820: 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  lback</em></dt>.
6830: 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65      <dd>..Invoke
6840: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
6850: 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d  <em>callback</em
6860: 3e 20 73 63 72 69 70 74 20 64 75 72 69 6e 67 20  > script during 
6870: 68 61 6e 64 73 68 61 6b 65 20 69 6e 0a 09 6f 72  handshake in..or
6880: 64 65 72 20 74 6f 20 76 61 6c 69 64 61 74 65 20  der to validate 
6890: 74 68 65 20 70 72 6f 76 69 64 65 64 20 76 61 6c  the provided val
68a0: 75 65 28 73 29 2e 20 53 65 65 20 62 65 6c 6f 77  ue(s). See below
68b0: 20 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c   for the possibl
68c0: 65 0a 09 61 72 67 75 6d 65 6e 74 73 20 70 61 73  e..arguments pas
68d0: 73 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  sed to the callb
68e0: 61 63 6b 20 73 63 72 69 70 74 2e 0a 09 54 6f 20  ack script...To 
68f0: 72 65 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65  reject the value
6900: 20 61 6e 64 20 61 62 6f 72 74 20 63 6f 6e 6e 65   and abort conne
6910: 63 74 69 6f 6e 2c 20 74 68 65 20 63 61 6c 6c 62  ction, the callb
6920: 61 63 6b 20 73 68 6f 75 6c 64 20 72 65 74 75 72  ack should retur
6930: 6e 20 30 2e 0a 09 54 6f 20 61 63 63 65 70 74 20  n 0...To accept 
6940: 74 68 65 20 76 61 6c 75 65 20 61 6e 64 20 63 6f  the value and co
6950: 6e 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 6e 65  ntinue the conne
6960: 63 74 69 6f 6e 2c 20 69 74 20 73 68 6f 75 6c 64  ction, it should
6970: 20 72 65 74 75 72 6e 20 31 2e 0a 09 54 6f 20 72   return 1...To r
6980: 65 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65 2c  eject the value,
6990: 20 62 75 74 20 63 6f 6e 74 69 6e 75 65 20 74 68   but continue th
69a0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74  e connection, it
69b0: 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 32   should return 2
69c0: 2e 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a  ....<br>..<br>..
69d0: 09 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20  .<dl>...<dt>..  
69e0: 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74  <strong>alpn</st
69f0: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65  rong> <em>channe
6a00: 6c 20 70 72 6f 74 6f 63 6f 6c 20 6d 61 74 63 68  l protocol match
6a10: 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64  </em>..</dt>..<d
6a20: 64 3e 0a 09 20 20 46 6f 72 20 73 65 72 76 65 72  d>..  For server
6a30: 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20  s, this form of 
6a40: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
6a50: 6b 65 64 20 77 68 65 6e 20 74 68 65 20 63 6c 69  ked when the cli
6a60: 65 6e 74 20 41 4c 50 4e 0a 09 20 20 65 78 74 65  ent ALPN..  exte
6a70: 6e 73 69 6f 6e 20 69 73 20 72 65 63 65 69 76 65  nsion is receive
6a80: 64 2e 20 49 66 20 3c 65 6d 3e 6d 61 74 63 68 3c  d. If <em>match<
6a90: 2f 65 6d 3e 20 69 73 20 74 72 75 65 2c 20 3c 65  /em> is true, <e
6aa0: 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 0a  m>protocol</em>.
6ab0: 09 20 20 69 73 20 74 68 65 20 66 69 72 73 74 20  .  is the first 
6ac0: 3c 62 3e 2d 61 6c 70 6e 3c 2f 62 3e 20 73 70 65  <b>-alpn</b> spe
6ad0: 63 69 66 69 65 64 20 70 72 6f 74 6f 63 6f 6c 20  cified protocol 
6ae0: 63 6f 6d 6d 6f 6e 20 74 6f 20 74 68 65 20 62 6f  common to the bo
6af0: 74 68 20 74 68 65 0a 09 20 20 63 6c 69 65 6e 74  th the..  client
6b00: 20 61 6e 64 20 73 65 72 76 65 72 2e 20 49 66 20   and server. If 
6b10: 6e 6f 74 2c 20 74 68 65 20 66 69 72 73 74 20 63  not, the first c
6b20: 6c 69 65 6e 74 20 73 70 65 63 69 66 69 65 64 20  lient specified 
6b30: 70 72 6f 74 6f 63 6f 6c 20 69 73 0a 09 20 20 75  protocol is..  u
6b40: 73 65 64 2e 20 43 61 6c 6c 65 64 20 61 66 74 65  sed. Called afte
6b50: 72 20 68 65 6c 6c 6f 20 61 6e 64 20 41 4c 50 4e  r hello and ALPN
6b60: 20 63 61 6c 6c 62 61 63 6b 73 2e 0a 09 3c 2f 64   callbacks...</d
6b70: 64 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e  d>...<br>...<dt>
6b80: 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 68 65 6c 6c  ..  <strong>hell
6b90: 6f 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  o</strong> <em>c
6ba0: 68 61 6e 6e 65 6c 20 73 65 72 76 65 72 6e 61 6d  hannel servernam
6bb0: 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c  e</em>..</dt>..<
6bc0: 64 64 3e 0a 09 20 20 46 6f 72 20 73 65 72 76 65  dd>..  For serve
6bd0: 72 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66  rs, this form of
6be0: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
6bf0: 6f 6b 65 64 20 64 75 72 69 6e 67 20 63 6c 69 65  oked during clie
6c00: 6e 74 20 68 65 6c 6c 6f 0a 09 20 20 6d 65 73 73  nt hello..  mess
6c10: 61 67 65 20 70 72 6f 63 65 73 73 69 6e 67 2e 20  age processing. 
6c20: 49 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 65  It is used to se
6c30: 6c 65 63 74 20 61 6e 20 61 70 70 72 6f 70 72 69  lect an appropri
6c40: 61 74 65 20 63 65 72 74 69 66 69 63 61 74 65 20  ate certificate 
6c50: 74 6f 0a 09 20 20 70 72 65 73 65 6e 74 2c 20 61  to..  present, a
6c60: 6e 64 20 6d 61 6b 65 20 6f 74 68 65 72 20 63 6f  nd make other co
6c70: 6e 66 69 67 75 72 61 74 69 6f 6e 20 61 64 6a 75  nfiguration adju
6c80: 73 74 6d 65 6e 74 73 20 72 65 6c 65 76 61 6e 74  stments relevant
6c90: 20 74 6f 20 74 68 61 74 0a 09 20 20 73 65 72 76   to that..  serv
6ca0: 65 72 20 6e 61 6d 65 20 61 6e 64 20 69 74 73 20  er name and its 
6cb0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 20 43  configuration. C
6cc0: 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 53 4e 49  alled before SNI
6cd0: 20 61 6e 64 20 41 4c 50 4e 20 63 61 6c 6c 62 61   and ALPN callba
6ce0: 63 6b 73 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 62  cks...</dd>...<b
6cf0: 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74  r>...<dt>..  <st
6d00: 72 6f 6e 67 3e 73 6e 69 3c 2f 73 74 72 6f 6e 67  rong>sni</strong
6d10: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65  > <em>channel se
6d20: 72 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e 0a 09 3c  rvername</em>..<
6d30: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 46 6f  /dt>..<dd>..  Fo
6d40: 72 20 73 65 72 76 65 72 73 2c 20 74 68 69 73 20  r servers, this 
6d50: 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b  form of callback
6d60: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   is invoked when
6d70: 20 74 68 65 20 53 4e 49 20 65 78 74 65 6e 73 69   the SNI extensi
6d80: 6f 6e 0a 09 20 20 66 72 6f 6d 20 74 68 65 20 63  on..  from the c
6d90: 6c 69 65 6e 74 20 69 73 20 72 65 63 65 69 76 65  lient is receive
6da0: 64 2e 20 57 68 65 72 65 20 3c 65 6d 3e 73 65 72  d. Where <em>ser
6db0: 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e 20 69 73 20  vername</em> is 
6dc0: 74 68 65 20 63 6c 69 65 6e 74 0a 09 20 20 70 72  the client..  pr
6dd0: 6f 76 69 64 65 64 20 73 65 72 76 65 72 20 6e 61  ovided server na
6de0: 6d 65 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 2d  me from the <b>-
6df0: 73 65 72 76 65 72 6e 61 6d 65 3c 2f 62 3e 20 6f  servername</b> o
6e00: 70 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 0a 09  ption. This is..
6e10: 20 20 75 73 65 64 20 77 68 65 6e 20 61 20 73 65    used when a se
6e20: 72 76 65 72 20 73 75 70 70 6f 72 74 73 20 6d 75  rver supports mu
6e30: 6c 74 69 70 6c 65 20 6e 61 6d 65 73 2c 20 73 6f  ltiple names, so
6e40: 20 74 68 65 20 72 69 67 68 74 20 63 65 72 74 69   the right certi
6e50: 66 69 63 61 74 65 0a 09 20 20 63 61 6e 20 62 65  ficate..  can be
6e60: 20 75 73 65 64 2e 20 43 61 6c 6c 65 64 20 61 66   used. Called af
6e70: 74 65 72 20 68 65 6c 6c 6f 20 63 61 6c 6c 62 61  ter hello callba
6e80: 63 6b 20 62 75 74 20 62 65 66 6f 72 65 20 41 4c  ck but before AL
6e90: 50 4e 20 63 61 6c 6c 62 61 63 6b 2e 0a 09 3c 2f  PN callback...</
6ea0: 64 64 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74  dd>...<br>...<dt
6eb0: 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 76 65 72  >..  <strong>ver
6ec0: 69 66 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ify</strong> <em
6ed0: 3e 63 68 61 6e 6e 65 6c 20 64 65 70 74 68 20 63  >channel depth c
6ee0: 65 72 74 20 73 74 61 74 75 73 20 65 72 72 6f 72  ert status error
6ef0: 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64  </em>..</dt>..<d
6f00: 64 3e 0a 09 20 20 54 68 69 73 20 66 6f 72 6d 20  d>..  This form 
6f10: 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  of callback is i
6f20: 6e 76 6f 6b 65 64 20 62 79 20 4f 70 65 6e 53 53  nvoked by OpenSS
6f30: 4c 20 77 68 65 6e 20 61 20 6e 65 77 20 63 65 72  L when a new cer
6f40: 74 69 66 69 63 61 74 65 0a 09 20 20 69 73 20 72  tificate..  is r
6f50: 65 63 65 69 76 65 64 20 66 72 6f 6d 20 74 68 65  eceived from the
6f60: 20 70 65 65 72 2e 20 49 74 20 61 6c 6c 6f 77 73   peer. It allows
6f70: 20 74 68 65 20 63 6c 69 65 6e 74 20 74 6f 20 63   the client to c
6f80: 68 65 63 6b 20 74 68 65 0a 09 20 20 63 65 72 74  heck the..  cert
6f90: 69 66 69 63 61 74 65 20 76 65 72 69 66 69 63 61  ificate verifica
6fa0: 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 6e 64  tion results and
6fb0: 20 63 68 6f 6f 73 65 20 77 68 65 74 68 65 72 20   choose whether 
6fc0: 74 6f 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 6f  to continue..  o
6fd0: 72 20 6e 6f 74 2e 20 49 74 20 69 73 20 63 61 6c  r not. It is cal
6fe0: 6c 65 64 20 66 6f 72 20 65 61 63 68 20 63 65 72  led for each cer
6ff0: 74 69 66 69 63 61 74 65 20 69 6e 20 74 68 65 20  tificate in the 
7000: 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69  certificate chai
7010: 6e 2e 0a 09 20 20 3c 75 6c 3e 0a 09 20 20 3c 6c  n...  <ul>..  <l
7020: 69 3e 54 68 65 20 3c 65 6d 3e 64 65 70 74 68 3c  i>The <em>depth<
7030: 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  /em> argument is
7040: 20 61 6e 20 69 6e 74 65 67 65 72 20 72 65 70 72   an integer repr
7050: 65 73 65 6e 74 69 6e 67 20 74 68 65 0a 09 20 20  esenting the..  
7060: 63 75 72 72 65 6e 74 20 64 65 70 74 68 20 6f 6e  current depth on
7070: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
7080: 20 63 68 61 69 6e 2c 20 77 69 74 68 0a 09 20 20   chain, with..  
7090: 3c 63 6f 64 65 3e 30 3c 2f 63 6f 64 65 3e 20 61  <code>0</code> a
70a0: 73 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69  s the peer certi
70b0: 66 69 63 61 74 65 20 61 6e 64 20 68 69 67 68 65  ficate and highe
70c0: 72 20 76 61 6c 75 65 73 20 67 6f 69 6e 67 0a 09  r values going..
70d0: 20 20 75 70 20 74 6f 20 74 68 65 20 43 65 72 74    up to the Cert
70e0: 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74  ificate Authorit
70f0: 79 20 28 43 41 29 2e 3c 2f 6c 69 3e 0a 09 20 20  y (CA).</li>..  
7100: 3c 6c 69 3e 54 68 65 20 3c 65 6d 3e 63 65 72 74  <li>The <em>cert
7110: 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69  </em> argument i
7120: 73 20 61 20 6c 69 73 74 20 6f 66 20 6b 65 79 2d  s a list of key-
7130: 76 61 6c 75 65 20 70 61 69 72 73 20 73 69 6d 69  value pairs simi
7140: 6c 61 72 0a 09 20 20 74 6f 20 74 68 6f 73 65 20  lar..  to those 
7150: 72 65 74 75 72 6e 65 64 20 62 79 0a 09 20 20 3c  returned by..  <
7160: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 74  a href="#tls::st
7170: 61 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  atus"><strong>tl
7180: 73 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f 6e  s::status</stron
7190: 67 3e 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 09 20 20  g></a>.</li>..  
71a0: 3c 6c 69 3e 54 68 65 20 3c 65 6d 3e 73 74 61 74  <li>The <em>stat
71b0: 75 73 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74  us</em> argument
71c0: 20 69 73 20 61 6e 20 62 6f 6f 6c 65 61 6e 20 72   is an boolean r
71d0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 0a  epresenting the.
71e0: 09 20 20 76 61 6c 69 64 69 74 79 20 6f 66 20 74  .  validity of t
71f0: 68 65 20 63 75 72 72 65 6e 74 20 63 65 72 74 69  he current certi
7200: 66 69 63 61 74 65 2e 0a 09 20 20 41 20 76 61 6c  ficate...  A val
7210: 75 65 20 6f 66 20 3c 63 6f 64 65 3e 30 3c 2f 63  ue of <code>0</c
7220: 6f 64 65 3e 20 6d 65 61 6e 73 20 74 68 65 20 63  ode> means the c
7230: 65 72 74 69 66 69 63 61 74 65 20 69 73 20 64 65  ertificate is de
7240: 65 6d 65 64 20 69 6e 76 61 6c 69 64 2e 0a 09 20  emed invalid... 
7250: 20 41 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64   A value of <cod
7260: 65 3e 31 3c 2f 63 6f 64 65 3e 20 6d 65 61 6e 73  e>1</code> means
7270: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
7280: 20 69 73 20 64 65 65 6d 65 64 20 76 61 6c 69 64   is deemed valid
7290: 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68  .</li>..  <li>Th
72a0: 65 20 3c 65 6d 3e 65 72 72 6f 72 3c 2f 65 6d 3e  e <em>error</em>
72b0: 20 61 72 67 75 6d 65 6e 74 20 73 75 70 70 6c 69   argument suppli
72c0: 65 73 20 74 68 65 20 6d 65 73 73 61 67 65 2c 20  es the message, 
72d0: 69 66 20 61 6e 79 2c 20 67 65 6e 65 72 61 74 65  if any, generate
72e0: 64 0a 09 20 20 62 79 20 3c 63 6f 64 65 3e 58 35  d..  by <code>X5
72f0: 30 39 5f 53 54 4f 52 45 5f 43 54 58 5f 67 65 74  09_STORE_CTX_get
7300: 5f 65 72 72 6f 72 28 29 3c 2f 63 6f 64 65 3e 2e  _error()</code>.
7310: 3c 2f 6c 69 3e 0a 09 20 20 3c 2f 75 6c 3e 0a 09  </li>..  </ul>..
7320: 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f 64  </dd>..<br>..</d
7330: 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 3c 2f 64  l>.    </dd>.</d
7340: 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  l>.</blockquote>
7350: 0a 0a 3c 70 3e 0a 52 65 66 65 72 65 6e 63 65 20  ..<p>.Reference 
7360: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
7370: 6f 66 20 74 68 65 73 65 20 63 61 6c 6c 62 61 63  of these callbac
7380: 6b 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  ks are provided 
7390: 69 6e 20 74 68 65 0a 64 69 73 74 72 69 62 75 74  in the.distribut
73a0: 69 6f 6e 20 61 73 20 3c 73 74 72 6f 6e 67 3e 74  ion as <strong>t
73b0: 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74  ls::callback</st
73c0: 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 74  rong>, <strong>t
73d0: 6c 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74  ls::password</st
73e0: 72 6f 6e 67 3e 2c 0a 61 6e 64 20 3c 73 74 72 6f  rong>,.and <stro
73f0: 6e 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65  ng>tls::validate
7400: 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67  _command</strong
7410: 3e 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20  > respectively. 
7420: 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65   Note that these
7430: 20 61 72 65 0a 3c 65 6d 3e 73 61 6d 70 6c 65 3c   are.<em>sample<
7440: 2f 65 6d 3e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  /em> implementat
7450: 69 6f 6e 73 20 6f 6e 6c 79 2e 20 20 49 6e 20 61  ions only.  In a
7460: 20 6d 6f 72 65 20 72 65 61 6c 69 73 74 69 63 20   more realistic 
7470: 64 65 70 6c 6f 79 6d 65 6e 74 0a 79 6f 75 20 77  deployment.you w
7480: 6f 75 6c 64 20 73 70 65 63 69 66 79 20 79 6f 75  ould specify you
7490: 72 20 6f 77 6e 20 63 61 6c 6c 62 61 63 6b 20 73  r own callback s
74a0: 63 72 69 70 74 73 20 6f 6e 20 65 61 63 68 20 54  cripts on each T
74b0: 4c 53 20 63 68 61 6e 6e 65 6c 20 75 73 69 6e 67  LS channel using
74c0: 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d 63 6f   the.<strong>-co
74d0: 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20  mmand</strong>, 
74e0: 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72  <strong>-passwor
74f0: 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20  d</strong>, and 
7500: 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74  <strong>-validat
7510: 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e  e_command</stron
7520: 67 3e 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e  g> options..</p>
7530: 0a 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61 75 6c  ..<p>.The defaul
7540: 74 20 62 65 68 61 76 69 6f 72 20 77 68 65 6e 20  t behavior when 
7550: 74 68 65 20 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d  the <strong>-com
7560: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 61 6e  mand</strong> an
7570: 64 20 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64  d <strong>-valid
7580: 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  ate_command</str
7590: 6f 6e 67 3e 0a 6f 70 74 69 6f 6e 73 20 61 72 65  ong>.options are
75a0: 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 69   not specified i
75b0: 73 20 66 6f 72 20 54 4c 53 20 74 6f 20 70 72 6f  s for TLS to pro
75c0: 63 65 73 73 20 74 68 65 20 61 73 73 6f 63 69 61  cess the associa
75d0: 74 65 64 20 6c 69 62 72 61 72 79 20 63 61 6c 6c  ted library call
75e0: 62 61 63 6b 73 0a 69 6e 74 65 72 6e 61 6c 6c 79  backs.internally
75f0: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65  . The default be
7600: 68 61 76 69 6f 72 20 77 68 65 6e 20 74 68 65 20  havior when the 
7610: 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72  <strong>-passwor
7620: 64 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f  d</strong> optio
7630: 6e 20 69 73 20 6e 6f 74 0a 73 70 65 63 69 66 69  n is not.specifi
7640: 65 64 20 69 73 20 66 6f 72 20 54 4c 53 20 74 6f  ed is for TLS to
7650: 20 70 72 6f 63 65 73 73 20 74 68 65 20 61 73 73   process the ass
7660: 6f 63 69 61 74 65 64 20 6c 69 62 72 61 72 79 20  ociated library 
7670: 63 61 6c 6c 62 61 63 6b 73 20 62 79 20 61 74 74  callbacks by att
7680: 65 6d 70 74 69 6e 67 0a 74 6f 20 63 61 6c 6c 20  empting.to call 
7690: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 61 73  <strong>tls::pas
76a0: 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2e 0a  sword</strong>..
76b0: 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62  The difference b
76c0: 65 74 77 65 65 6e 20 74 68 65 73 65 20 74 77 6f  etween these two
76d0: 20 62 65 68 61 76 69 6f 72 73 20 69 73 20 61 20   behaviors is a 
76e0: 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 6d  consequence of m
76f0: 61 69 6e 74 61 69 6e 69 6e 67 0a 63 6f 6d 70 61  aintaining.compa
7700: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 65 61  tibility with ea
7710: 72 6c 69 65 72 20 69 6d 70 6c 65 6d 65 6e 74 61  rlier implementa
7720: 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  tions..</p>..<p>
7730: 0a 54 68 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73  .The <strong>tls
7740: 3a 3a 64 65 62 75 67 3c 2f 73 74 72 6f 6e 67 3e  ::debug</strong>
7750: 20 76 61 72 69 61 62 6c 65 20 70 72 6f 76 69 64   variable provid
7760: 65 73 20 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e  es some addition
7770: 61 6c 0a 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20  al.control over 
7780: 74 68 65 73 65 20 72 65 66 65 72 65 6e 63 65 20  these reference 
7790: 63 61 6c 6c 62 61 63 6b 73 2e 20 20 49 74 73 20  callbacks.  Its 
77a0: 76 61 6c 75 65 20 69 73 20 7a 65 72 6f 20 62 79  value is zero by
77b0: 20 64 65 66 61 75 6c 74 2e 0a 48 69 67 68 65 72   default..Higher
77c0: 20 76 61 6c 75 65 73 20 70 72 6f 64 75 63 65 20   values produce 
77d0: 6d 6f 72 65 20 64 69 61 67 6e 6f 73 74 69 63 20  more diagnostic 
77e0: 6f 75 74 70 75 74 2c 20 61 6e 64 20 77 69 6c 6c  output, and will
77f0: 20 61 6c 73 6f 20 66 6f 72 63 65 20 74 68 65 0a   also force the.
7800: 76 65 72 69 66 79 20 6d 65 74 68 6f 64 20 69 6e  verify method in
7810: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 61   <strong>tls::ca
7820: 6c 6c 62 61 63 6b 3c 2f 73 74 72 6f 6e 67 3e 20  llback</strong> 
7830: 74 6f 20 61 63 63 65 70 74 20 74 68 65 0a 63 65  to accept the.ce
7840: 72 74 69 66 69 63 61 74 65 2c 20 65 76 65 6e 20  rtificate, even 
7850: 77 68 65 6e 20 69 74 20 69 73 20 69 6e 76 61 6c  when it is inval
7860: 69 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 65  id..</p>..<p>.<e
7870: 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66 20 74 68  m>.The use of th
7880: 65 20 72 65 66 65 72 65 6e 63 65 20 63 61 6c 6c  e reference call
7890: 62 61 63 6b 73 20 3c 73 74 72 6f 6e 67 3e 74 6c  backs <strong>tl
78a0: 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72  s::callback</str
78b0: 6f 6e 67 3e 2c 0a 3c 73 74 72 6f 6e 67 3e 74 6c  ong>,.<strong>tl
78c0: 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74 72  s::password</str
78d0: 6f 6e 67 3e 2c 20 61 6e 64 20 3c 73 74 72 6f 6e  ong>, and <stron
78e0: 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f  g>tls::validate_
78f0: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
7900: 0a 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e  .is not recommen
7910: 64 65 64 2e 20 20 54 68 65 79 20 6d 61 79 20 62  ded.  They may b
7920: 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 66  e removed from f
7930: 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e 0a  uture releases..
7940: 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  </em>.</p>..<p>.
7950: 3c 65 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66 20  <em>.The use of 
7960: 74 68 65 20 76 61 72 69 61 62 6c 65 20 3c 73 74  the variable <st
7970: 72 6f 6e 67 3e 74 6c 73 3a 3a 64 65 62 75 67 3c  rong>tls::debug<
7980: 2f 73 74 72 6f 6e 67 3e 20 69 73 20 6e 6f 74 20  /strong> is not 
7990: 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 49 74 20  recommended..It 
79a0: 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66  may be removed f
79b0: 72 6f 6d 20 66 75 74 75 72 65 20 72 65 6c 65 61  rom future relea
79c0: 73 65 73 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a  ses..</em>.</p>.
79d0: 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 44 45  .<h3><a name="DE
79e0: 42 55 47 22 3e 44 45 42 55 47 3c 2f 61 3e 3c 2f  BUG">DEBUG</a></
79f0: 68 33 3e 0a 0a 54 4c 53 20 6b 65 79 20 6c 6f 67  h3>..TLS key log
7a00: 67 69 6e 67 20 63 61 6e 20 62 65 20 65 6e 61 62  ging can be enab
7a10: 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 74  led by setting t
7a20: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
7a30: 61 72 69 61 62 6c 65 0a 3c 62 3e 53 53 4c 4b 45  ariable.<b>SSLKE
7a40: 59 4c 4f 47 46 49 4c 45 3c 2f 62 3e 20 74 6f 20  YLOGFILE</b> to 
7a50: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
7a60: 66 69 6c 65 20 74 6f 20 6c 6f 67 20 74 6f 2e 20  file to log to. 
7a70: 54 68 65 6e 20 77 68 65 6e 65 76 65 72 20 54 4c  Then whenever TL
7a80: 53 0a 6b 65 79 20 6d 61 74 65 72 69 61 6c 20 69  S.key material i
7a90: 73 20 67 65 6e 65 72 61 74 65 64 20 6f 72 20 72  s generated or r
7aa0: 65 63 65 69 76 65 64 20 69 74 20 77 69 6c 6c 20  eceived it will 
7ab0: 62 65 20 6c 6f 67 67 65 64 20 74 6f 20 74 68 65  be logged to the
7ac0: 20 66 69 6c 65 2e 20 54 68 69 73 0a 69 73 20 75   file. This.is u
7ad0: 73 65 66 75 6c 20 66 6f 72 20 6c 6f 67 67 69 6e  seful for loggin
7ae0: 67 20 6b 65 79 20 64 61 74 61 20 66 6f 72 20 6e  g key data for n
7af0: 65 74 77 6f 72 6b 20 6c 6f 67 67 69 6e 67 20 74  etwork logging t
7b00: 6f 6f 6c 73 20 74 6f 20 75 73 65 20 74 6f 0a 64  ools to use to.d
7b10: 65 63 72 79 70 74 20 74 68 65 20 64 61 74 61 2e  ecrypt the data.
7b20: 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 48  ..<h3><a name="H
7b30: 54 54 50 53 20 45 58 41 4d 50 4c 45 22 3e 48 54  TTPS EXAMPLE">HT
7b40: 54 50 53 20 45 58 41 4d 50 4c 45 3c 2f 61 3e 3c  TPS EXAMPLE</a><
7b50: 2f 68 33 3e 0a 0a 3c 70 3e 54 68 69 73 20 65 78  /h3>..<p>This ex
7b60: 61 6d 70 6c 65 20 75 73 65 73 20 61 20 73 61 6d  ample uses a sam
7b70: 70 6c 65 20 73 65 72 76 65 72 2e 70 65 6d 20 70  ple server.pem p
7b80: 72 6f 76 69 64 65 64 20 77 69 74 68 20 74 68 65  rovided with the
7b90: 20 54 4c 53 20 72 65 6c 65 61 73 65 2c 0a 63 6f   TLS release,.co
7ba0: 75 72 74 65 73 79 20 6f 66 20 74 68 65 20 3c 73  urtesy of the <s
7bb0: 74 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73  trong>OpenSSL</s
7bc0: 74 72 6f 6e 67 3e 20 70 72 6f 6a 65 63 74 2e 3c  trong> project.<
7bd0: 2f 70 3e 0a 0a 3c 70 72 65 3e 3c 63 6f 64 65 3e  /p>..<pre><code>
7be0: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  .package require
7bf0: 20 68 74 74 70 0a 70 61 63 6b 61 67 65 20 72 65   http.package re
7c00: 71 75 69 72 65 20 74 6c 73 0a 0a 68 74 74 70 3a  quire tls..http:
7c10: 3a 72 65 67 69 73 74 65 72 20 68 74 74 70 73 20  :register https 
7c20: 34 34 33 20 5b 6c 69 73 74 20 3a 3a 74 6c 73 3a  443 [list ::tls:
7c30: 3a 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73 65 72  :socket -autoser
7c40: 76 65 72 6e 61 6d 65 20 74 72 75 65 20 2d 72 65  vername true -re
7c50: 71 75 69 72 65 20 74 72 75 65 20 2d 63 61 64 69  quire true -cadi
7c60: 72 20 2f 65 74 63 2f 73 73 6c 2f 63 65 72 74 73  r /etc/ssl/certs
7c70: 5d 0a 0a 73 65 74 20 74 6f 6b 20 5b 68 74 74 70  ]..set tok [http
7c80: 3a 3a 67 65 74 75 72 6c 20 68 74 74 70 73 3a 2f  ::geturl https:/
7c90: 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 5d 0a 3c 2f  /www.tcl.tk/].</
7ca0: 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 68 33  code></pre>..<h3
7cb0: 3e 3c 61 20 6e 61 6d 65 3d 22 53 50 45 43 49 41  ><a name="SPECIA
7cc0: 4c 20 43 4f 4e 53 49 44 45 52 41 54 49 4f 4e 53  L CONSIDERATIONS
7cd0: 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53 49 44  ">SPECIAL CONSID
7ce0: 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 68 33  ERATIONS</a></h3
7cf0: 3e 0a 0a 3c 70 3e 54 68 65 20 63 61 70 61 62 69  >..<p>The capabi
7d00: 6c 69 74 69 65 73 20 6f 66 20 74 68 69 73 20 70  lities of this p
7d10: 61 63 6b 61 67 65 20 63 61 6e 20 76 61 72 79 20  ackage can vary 
7d20: 65 6e 6f 72 6d 6f 75 73 6c 79 20 62 61 73 65 64  enormously based
7d30: 20 75 70 6f 6e 20 68 6f 77 20 79 6f 75 72 0a 4f   upon how your.O
7d40: 70 65 6e 53 53 4c 20 6c 69 62 72 61 72 79 20 77  penSSL library w
7d50: 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 61 6e  as configured an
7d60: 64 20 62 75 69 6c 74 2e 20 4e 65 77 20 76 65 72  d built. New ver
7d70: 73 69 6f 6e 73 20 6d 61 79 20 6f 62 73 6f 6c 65  sions may obsole
7d80: 74 65 20 6f 6c 64 65 72 0a 70 72 6f 74 6f 63 6f  te older.protoco
7d90: 6c 20 76 65 72 73 69 6f 6e 73 2c 20 61 64 64 20  l versions, add 
7da0: 6f 72 20 72 65 6d 6f 76 65 20 63 69 70 68 65 72  or remove cipher
7db0: 73 2c 20 63 68 61 6e 67 65 20 64 65 66 61 75 6c  s, change defaul
7dc0: 74 20 76 61 6c 75 65 73 2c 20 65 74 63 2e 20 55  t values, etc. U
7dd0: 73 65 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 74  se the.<strong>t
7de0: 6c 73 3a 3a 63 69 70 68 65 72 73 3c 2f 73 74 72  ls::ciphers</str
7df0: 6f 6e 67 3e 20 61 6e 64 20 3c 73 74 72 6f 6e 67  ong> and <strong
7e00: 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c  >tls::protocols<
7e10: 2f 73 74 72 6f 6e 67 3e 20 63 6f 6d 6d 61 6e 64  /strong> command
7e20: 73 20 74 6f 0a 6f 62 74 61 69 6e 20 74 68 65 20  s to.obtain the 
7e30: 73 75 70 70 6f 72 74 65 64 20 76 65 72 73 69 6f  supported versio
7e40: 6e 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20  ns.</p>..<h3><a 
7e50: 6e 61 6d 65 3d 22 53 45 45 20 41 4c 53 4f 22 3e  name="SEE ALSO">
7e60: 53 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 68 33  SEE ALSO</a></h3
7e70: 3e 0a 0a 3c 70 3e 3c 73 74 72 6f 6e 67 3e 73 6f  >..<p><strong>so
7e80: 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c  cket</strong>, <
7e90: 73 74 72 6f 6e 67 3e 66 69 6c 65 65 76 65 6e 74  strong>fileevent
7ea0: 2c 20 3c 2f 73 74 72 6f 6e 67 3e 3c 61 0a 68 72  , </strong><a.hr
7eb0: 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6f  ef="http://www.o
7ec0: 70 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 3c 73 74  penssl.org/"><st
7ed0: 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74  rong>OpenSSL</st
7ee0: 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 70 3e 0a 0a 3c  rong></a></p>..<
7ef0: 68 72 3e 0a 0a 3c 70 72 65 3e 0a 43 6f 70 79 72  hr>..<pre>.Copyr
7f00: 69 67 68 74 20 26 63 6f 70 79 3b 20 31 39 39 39  ight &copy; 1999
7f10: 20 4d 61 74 74 20 4e 65 77 6d 61 6e 2e 0a 43 6f   Matt Newman..Co
7f20: 70 79 72 69 67 68 74 20 26 63 6f 70 79 3b 20 32  pyright &copy; 2
7f30: 30 30 34 20 53 74 61 72 66 69 73 68 20 53 79 73  004 Starfish Sys
7f40: 74 65 6d 73 2e 0a 3c 2f 70 72 65 3e 0a 3c 2f 62  tems..</pre>.</b
7f50: 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a           ody>.</html>.