Hex Artifact Content

Artifact cb37aa64df1fd5749c6ff57839d56a41a02dff2646c5ae565784fbfe00a4d543:


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 3c 2f 62  b>tls::cipher</b
0460: 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c  > <em>name</em><
0470: 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  /dd>..    <dd><b
0480: 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73 3c 2f 62  >tls::ciphers</b
0490: 3e 20 3c 65 6d 3e 3f 70 72 6f 74 6f 63 6f 6c 3f  > <em>?protocol?
04a0: 20 3f 76 65 72 62 6f 73 65 3f 20 3f 73 75 70 70   ?verbose? ?supp
04b0: 6f 72 74 65 64 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e  orted?</em></dd>
04c0: 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73  ..    <dd><b>tls
04d0: 3a 3a 64 69 67 65 73 74 73 3c 2f 62 3e 20 3c 65  ::digests</b> <e
04e0: 6d 3e 3f 6e 61 6d 65 3f 3c 2f 65 6d 3e 3c 2f 64  m>?name?</em></d
04f0: 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74  d>..    <dd><b>t
0500: 6c 73 3a 3a 6d 61 63 73 3c 2f 62 3e 3c 2f 64 64  ls::macs</b></dd
0510: 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c  >..    <dd><b>tl
0520: 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62 3e  s::protocols</b>
0530: 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c  </dd>..    <dd><
0540: 62 3e 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f  b>tls::version</
0550: 62 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 74  b></dd>..    <dt
0560: 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 20 20  >&nbsp;</dt>..  
0570: 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 64 69    <dd><b>tls::di
0580: 67 65 73 74 3c 2f 62 3e 20 3c 62 3e 2d 64 69 67  gest</b> <b>-dig
0590: 65 73 74 3c 2f 62 3e 20 3c 65 6d 3e 6e 61 6d 65  est</b> <em>name
05a0: 20 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 65 6d 3e 3c   ?options?</em><
05b0: 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62  /dd>..    <dd><b
05c0: 3e 74 6c 73 3a 3a 63 6d 61 63 3c 2f 62 3e 20 3c  >tls::cmac</b> <
05d0: 62 3e 2d 63 69 70 68 65 72 3c 2f 62 3e 20 3c 65  b>-cipher</b> <e
05e0: 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 20 3c 62 3e 2d  m>name</em> <b>-
05f0: 6b 65 79 3c 2f 62 3e 20 3c 65 6d 3e 6b 65 79 20  key</b> <em>key 
0600: 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 65 6d 3e 3c 2f  ?options?</em></
0610: 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e  dd>..    <dd><b>
0620: 74 6c 73 3a 3a 68 6d 61 63 3c 2f 62 3e 20 3c 62  tls::hmac</b> <b
0630: 3e 2d 64 69 67 65 73 74 3c 2f 62 3e 20 3c 65 6d  >-digest</b> <em
0640: 3e 6e 61 6d 65 3c 2f 65 6d 3e 20 3c 62 3e 2d 6b  >name</em> <b>-k
0650: 65 79 3c 2f 62 3e 20 3c 65 6d 3e 6b 65 79 20 3f  ey</b> <em>key ?
0660: 6f 70 74 69 6f 6e 73 3f 3c 2f 65 6d 3e 3c 2f 64  options?</em></d
0670: 64 3e 0a 09 20 20 20 20 3c 64 64 3e 3c 62 3e 74  d>..    <dd><b>t
0680: 6c 73 3a 3a 6d 64 34 3c 2f 62 3e 20 3c 65 6d 3e  ls::md4</b> <em>
0690: 64 61 74 61 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09  data</em></dd>..
06a0: 20 20 20 20 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a      <dd><b>tls::
06b0: 6d 64 35 3c 2f 62 3e 20 3c 65 6d 3e 64 61 74 61  md5</b> <em>data
06c0: 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20  </em></dd>..    
06d0: 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 73 68 61 31  <dd><b>tls::sha1
06e0: 3c 2f 62 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65  </b> <em>data</e
06f0: 6d 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64  m></dd>..    <dd
0700: 3e 3c 62 3e 74 6c 73 3a 3a 73 68 61 32 35 36 3c  ><b>tls::sha256<
0710: 2f 62 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d  /b> <em>data</em
0720: 3e 3c 2f 64 64 3e 0a 09 20 20 20 20 3c 64 64 3e  ></dd>..    <dd>
0730: 3c 62 3e 74 6c 73 3a 3a 73 68 61 35 31 32 3c 2f  <b>tls::sha512</
0740: 62 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e  b> <em>data</em>
0750: 3c 2f 64 64 3e 0a 09 3c 2f 64 6c 3e 0a 20 20 20  </dd>..</dl>.   
0760: 20 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c   </dd>.    <dd><
0770: 61 20 68 72 65 66 3d 22 23 43 4f 4d 4d 41 4e 44  a href="#COMMAND
0780: 53 22 3e 43 4f 4d 4d 41 4e 44 53 3c 2f 61 3e 3c  S">COMMANDS</a><
0790: 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20  /dd>.    <dd><a 
07a0: 68 72 65 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20  href="#CALLBACK 
07b0: 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43  OPTIONS">CALLBAC
07c0: 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 64  K OPTIONS</a></d
07d0: 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72  d>.    <dd><a hr
07e0: 65 66 3d 22 23 48 54 54 50 53 20 45 58 41 4d 50  ef="#HTTPS EXAMP
07f0: 4c 45 22 3e 48 54 54 50 53 20 45 58 41 4d 50 4c  LE">HTTPS EXAMPL
0800: 45 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c  E</a></dd>.    <
0810: 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 45  dd><a href="#SEE
0820: 20 41 4c 53 4f 22 3e 53 50 45 43 49 41 4c 20 43   ALSO">SPECIAL C
0830: 4f 4e 53 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61  ONSIDERATIONS</a
0840: 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c  ></dd>.    <dd><
0850: 61 20 68 72 65 66 3d 22 23 53 45 45 20 41 4c 53  a href="#SEE ALS
0860: 4f 22 3e 53 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c  O">SEE ALSO</a><
0870: 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 68 72 3e  /dd>.</dl>..<hr>
0880: 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 4e  ..<h3><a name="N
0890: 41 4d 45 22 3e 4e 41 4d 45 3c 2f 61 3e 3c 2f 68  AME">NAME</a></h
08a0: 33 3e 0a 0a 3c 70 3e 3c 73 74 72 6f 6e 67 3e 74  3>..<p><strong>t
08b0: 6c 73 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 62 69  ls</strong> - bi
08c0: 6e 64 69 6e 67 20 74 6f 20 3c 73 74 72 6f 6e 67  nding to <strong
08d0: 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74 72 6f 6e 67  >OpenSSL</strong
08e0: 3e 0a 74 6f 6f 6c 6b 69 74 2e 3c 2f 70 3e 0a 0a  >.toolkit.</p>..
08f0: 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 53 59 4e  <h3><a name="SYN
0900: 4f 50 53 49 53 22 3e 53 59 4e 4f 50 53 49 53 3c  OPSIS">SYNOPSIS<
0910: 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 3c 62 3e  /a></h3>..<p><b>
0920: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
0930: 54 63 6c 20 38 2e 35 3c 2f 62 3e 3c 62 72 3e 0a  Tcl 8.5</b><br>.
0940: 3c 62 3e 70 61 63 6b 61 67 65 20 72 65 71 75 69  <b>package requi
0950: 72 65 20 74 6c 73 3c 2f 62 3e 3c 62 72 3e 0a 3c  re tls</b><br>.<
0960: 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c  br>.<a href="#tl
0970: 73 3a 3a 69 6e 69 74 22 3e 3c 62 3e 74 6c 73 3a  s::init"><b>tls:
0980: 3a 69 6e 69 74 3c 2f 62 3e 20 3c 69 3e 3f 6f 70  :init</b> <i>?op
0990: 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62  tions?</i></a><b
09a0: 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73  r>.<a href="#tls
09b0: 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c 73  ::socket"><b>tls
09c0: 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c 69 3e  ::socket</b> <i>
09d0: 3f 6f 70 74 69 6f 6e 73 3f 20 68 6f 73 74 20 70  ?options? host p
09e0: 6f 72 74 3c 2f 69 3e 3c 62 72 3e 0a 3c 61 20 68  ort</i><br>.<a h
09f0: 72 65 66 3d 22 23 74 6c 73 3a 3a 73 6f 63 6b 65  ref="#tls::socke
0a00: 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65  t"><b>tls::socke
0a10: 74 3c 2f 62 3e 20 3c 69 3e 3f 2d 73 65 72 76 65  t</b> <i>?-serve
0a20: 72 20 63 6f 6d 6d 61 6e 64 3f 20 3f 6f 70 74 69  r command? ?opti
0a30: 6f 6e 73 3f 20 70 6f 72 74 3c 2f 69 3e 3c 2f 61  ons? port</i></a
0a40: 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23  ><br>.<a href="#
0a50: 74 6c 73 3a 3a 73 74 61 74 75 73 22 3e 3c 62 3e  tls::status"><b>
0a60: 74 6c 73 3a 3a 73 74 61 74 75 73 3c 2f 62 3e 20  tls::status</b> 
0a70: 3c 69 3e 3f 2d 6c 6f 63 61 6c 3f 20 63 68 61 6e  <i>?-local? chan
0a80: 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a  nel</i></a><br>.
0a90: 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 63  <a href="#tls::c
0aa0: 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 62 3e 74 6c  onnection"><b>tl
0ab0: 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 62  s::connection</b
0ac0: 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e  > <i>channel</i>
0ad0: 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66  </a><br>.<a href
0ae0: 3d 22 23 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b  ="#tls::handshak
0af0: 65 22 3e 3c 62 3e 74 6c 73 3a 3a 68 61 6e 64 73  e"><b>tls::hands
0b00: 68 61 6b 65 3c 2f 62 3e 20 3c 69 3e 63 68 61 6e  hake</b> <i>chan
0b10: 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a  nel</i></a><br>.
0b20: 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 69  <a href="#tls::i
0b30: 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a 69  mport"><b>tls::i
0b40: 6d 70 6f 72 74 3c 2f 62 3e 20 3c 69 3e 63 68 61  mport</b> <i>cha
0b50: 6e 6e 65 6c 20 3f 6f 70 74 69 6f 6e 73 3f 3c 2f  nnel ?options?</
0b60: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72  i></a><br>.<a hr
0b70: 65 66 3d 22 23 74 6c 73 3a 3a 75 6e 69 6d 70 6f  ef="#tls::unimpo
0b80: 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a 75 6e 69 6d  rt"><b>tls::unim
0b90: 70 6f 72 74 3c 2f 62 3e 20 3c 69 3e 63 68 61 6e  port</b> <i>chan
0ba0: 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a  nel</i></a><br>.
0bb0: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
0bc0: 6c 73 3a 3a 63 69 70 68 65 72 22 3e 3c 62 3e 74  ls::cipher"><b>t
0bd0: 6c 73 3a 3a 63 69 70 68 65 72 3c 2f 62 3e 20 3c  ls::cipher</b> <
0be0: 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 61 3e 3c 62  i>name</i></a><b
0bf0: 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73  r>.<a href="#tls
0c00: 3a 3a 63 69 70 68 65 72 73 22 3e 3c 62 3e 74 6c  ::ciphers"><b>tl
0c10: 73 3a 3a 63 69 70 68 65 72 73 3c 2f 62 3e 20 3c  s::ciphers</b> <
0c20: 69 3e 3f 70 72 6f 74 6f 63 6f 6c 3f 20 3f 76 65  i>?protocol? ?ve
0c30: 72 62 6f 73 65 3f 20 3f 73 75 70 70 6f 72 74 65  rbose? ?supporte
0c40: 64 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c  d?</i></a><br>.<
0c50: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 64 69  a href="#tls::di
0c60: 67 65 73 74 73 22 3e 3c 62 3e 74 6c 73 3a 3a 64  gests"><b>tls::d
0c70: 69 67 65 73 74 73 3c 2f 62 3e 20 3c 69 3e 3f 6e  igests</b> <i>?n
0c80: 61 6d 65 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e  ame?</i></a><br>
0c90: 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a  .<a href="#tls::
0ca0: 6d 61 63 73 22 3e 3c 62 3e 74 6c 73 3a 3a 6d 61  macs"><b>tls::ma
0cb0: 63 73 3c 2f 62 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c  cs</b></a><br>.<
0cc0: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 70 72  a href="#tls::pr
0cd0: 6f 74 6f 63 6f 6c 73 22 3e 3c 62 3e 74 6c 73 3a  otocols"><b>tls:
0ce0: 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f  :protocols</b></
0cf0: 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22  a><br>.<a href="
0d00: 23 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 22 3e 3c  #tls::version"><
0d10: 62 3e 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f  b>tls::version</
0d20: 62 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 62 72 3e 0a  b></a><br>.<br>.
0d30: 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 64  <a href="#tls::d
0d40: 69 67 65 73 74 22 3e 3c 62 3e 74 6c 73 3a 3a 64  igest"><b>tls::d
0d50: 69 67 65 73 74 3c 2f 62 3e 20 3c 62 3e 2d 64 69  igest</b> <b>-di
0d60: 67 65 73 74 3c 2f 62 3e 20 3c 69 3e 6e 61 6d 65  gest</b> <i>name
0d70: 20 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f   ?options?</i></
0d80: 61 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22  a><br>.<a href="
0d90: 23 74 6c 73 3a 3a 63 6d 61 63 22 3e 3c 62 3e 74  #tls::cmac"><b>t
0da0: 6c 73 3a 3a 63 6d 61 63 3c 2f 62 3e 20 3c 62 3e  ls::cmac</b> <b>
0db0: 2d 63 69 70 68 65 72 3c 2f 62 3e 20 3c 69 3e 6e  -cipher</b> <i>n
0dc0: 61 6d 65 3c 2f 69 3e 20 3c 62 3e 2d 6b 65 79 3c  ame</i> <b>-key<
0dd0: 2f 62 3e 20 3c 69 3e 6b 65 79 20 3f 6f 70 74 69  /b> <i>key ?opti
0de0: 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e  ons?</i></a><br>
0df0: 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a  .<a href="#tls::
0e00: 68 6d 61 63 22 3e 3c 62 3e 74 6c 73 3a 3a 68 6d  hmac"><b>tls::hm
0e10: 61 63 3c 2f 62 3e 20 3c 62 3e 2d 64 69 67 65 73  ac</b> <b>-diges
0e20: 74 3c 2f 62 3e 20 3c 69 3e 6e 61 6d 65 3c 2f 69  t</b> <i>name</i
0e30: 3e 20 3c 62 3e 2d 6b 65 79 3c 2f 62 3e 20 3c 69  > <b>-key</b> <i
0e40: 3e 6b 65 79 20 3f 6f 70 74 69 6f 6e 73 3f 3c 2f  >key ?options?</
0e50: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72  i></a><br>.<a hr
0e60: 65 66 3d 22 23 74 6c 73 3a 3a 6d 64 34 22 3e 3c  ef="#tls::md4"><
0e70: 62 3e 74 6c 73 3a 3a 6d 64 34 3c 2f 62 3e 20 3c  b>tls::md4</b> <
0e80: 69 3e 64 61 74 61 3c 2f 69 3e 3c 2f 61 3e 3c 62  i>data</i></a><b
0e90: 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73  r>.<a href="#tls
0ea0: 3a 3a 6d 64 35 22 3e 3c 62 3e 74 6c 73 3a 3a 6d  ::md5"><b>tls::m
0eb0: 64 35 3c 2f 62 3e 20 3c 69 3e 64 61 74 61 3c 2f  d5</b> <i>data</
0ec0: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72  i></a><br>.<a hr
0ed0: 65 66 3d 22 23 74 6c 73 3a 3a 73 68 61 31 22 3e  ef="#tls::sha1">
0ee0: 3c 62 3e 74 6c 73 3a 3a 73 68 61 31 3c 2f 62 3e  <b>tls::sha1</b>
0ef0: 20 3c 69 3e 64 61 74 61 3c 2f 69 3e 3c 2f 61 3e   <i>data</i></a>
0f00: 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74  <br>.<a href="#t
0f10: 6c 73 3a 3a 73 68 61 32 35 36 22 3e 3c 62 3e 74  ls::sha256"><b>t
0f20: 6c 73 3a 3a 73 68 61 32 35 36 3c 2f 62 3e 20 3c  ls::sha256</b> <
0f30: 69 3e 64 61 74 61 3c 2f 69 3e 3c 2f 61 3e 3c 62  i>data</i></a><b
0f40: 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73  r>.<a href="#tls
0f50: 3a 3a 73 68 61 35 31 32 22 3e 3c 62 3e 74 6c 73  ::sha512"><b>tls
0f60: 3a 3a 73 68 61 35 31 32 3c 2f 62 3e 20 3c 69 3e  ::sha512</b> <i>
0f70: 64 61 74 61 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e  data</i></a><br>
0f80: 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61  .</p>..<h3><a na
0f90: 6d 65 3d 22 44 45 53 43 52 49 50 54 49 4f 4e 22  me="DESCRIPTION"
0fa0: 3e 44 45 53 43 52 49 50 54 49 4f 4e 3c 2f 61 3e  >DESCRIPTION</a>
0fb0: 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 69 73 20 65  </h3>..<p>This e
0fc0: 78 74 65 6e 73 69 6f 6e 20 70 72 6f 76 69 64 65  xtension provide
0fd0: 73 20 61 20 67 65 6e 65 72 69 63 20 62 69 6e 64  s a generic bind
0fe0: 69 6e 67 20 74 6f 20 3c 61 0a 68 72 65 66 3d 22  ing to <a.href="
0ff0: 68 74 74 70 3a 2f 2f 77 77 77 2e 6f 70 65 6e 73  http://www.opens
1000: 73 6c 2e 6f 72 67 2f 22 3e 4f 70 65 6e 53 53 4c  sl.org/">OpenSSL
1010: 3c 2f 61 3e 2c 20 75 74 69 6c 69 7a 69 6e 67 20  </a>, utilizing 
1020: 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 54 63 6c 5f  the.<strong>Tcl_
1030: 53 74 61 63 6b 43 68 61 6e 6e 65 6c 3c 2f 73 74  StackChannel</st
1040: 72 6f 6e 67 3e 0a 41 50 49 20 66 6f 72 20 54 63  rong>.API for Tc
1050: 6c 20 38 2e 34 20 61 6e 64 20 68 69 67 68 65 72  l 8.4 and higher
1060: 2e 20 54 68 65 20 73 6f 63 6b 65 74 73 20 62 65  . The sockets be
1070: 68 61 76 65 20 65 78 61 63 74 6c 79 20 74 68 65  have exactly the
1080: 20 73 61 6d 65 0a 61 73 20 63 68 61 6e 6e 65 6c   same.as channel
1090: 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
10a0: 54 63 6c 27 73 20 62 75 69 6c 74 2d 69 6e 20 3c  Tcl's built-in <
10b0: 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73  strong>socket</s
10c0: 74 72 6f 6e 67 3e 0a 63 6f 6d 6d 61 6e 64 20 77  trong>.command w
10d0: 69 74 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f  ith additional o
10e0: 70 74 69 6f 6e 73 20 66 6f 72 20 63 6f 6e 74 72  ptions for contr
10f0: 6f 6c 6c 69 6e 67 20 74 68 65 20 53 53 4c 20 73  olling the SSL s
1100: 65 73 73 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 68  ession..</p>..<h
1110: 33 3e 3c 61 20 6e 61 6d 65 3d 22 43 4f 4d 4d 41  3><a name="COMMA
1120: 4e 44 53 22 3e 43 4f 4d 4d 41 4e 44 53 3c 2f 61  NDS">COMMANDS</a
1130: 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 79 70 69 63  ></h3>..<p>Typic
1140: 61 6c 6c 79 20 6f 6e 65 20 77 6f 75 6c 64 20 75  ally one would u
1150: 73 65 20 74 68 65 20 3c 73 74 72 6f 6e 67 3e 74  se the <strong>t
1160: 6c 73 3a 3a 73 6f 63 6b 65 74 20 3c 2f 73 74 72  ls::socket </str
1170: 6f 6e 67 3e 63 6f 6d 6d 61 6e 64 0a 77 68 69 63  ong>command.whic
1180: 68 20 70 72 6f 76 69 64 65 73 20 63 6f 6d 70 61  h provides compa
1190: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 74 68  tibility with th
11a0: 65 20 6e 61 74 69 76 65 20 54 63 6c 20 3c 73 74  e native Tcl <st
11b0: 72 6f 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73 74 72  rong>socket</str
11c0: 6f 6e 67 3e 0a 63 6f 6d 6d 61 6e 64 2e 20 49 6e  ong>.command. In
11d0: 20 73 75 63 68 20 63 61 73 65 73 20 3c 73 74 72   such cases <str
11e0: 6f 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c  ong>tls::import<
11f0: 2f 73 74 72 6f 6e 67 3e 20 73 68 6f 75 6c 64 20  /strong> should 
1200: 6e 6f 74 20 62 65 0a 75 73 65 64 20 64 69 72 65  not be.used dire
1210: 63 74 6c 79 2e 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a  ctly.</p>..<dl>.
1220: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
1230: 22 74 6c 73 3a 3a 69 6e 69 74 22 3e 3c 62 3e 74  "tls::init"><b>t
1240: 6c 73 3a 3a 69 6e 69 74 20 3c 2f 62 3e 3c 69 3e  ls::init </b><i>
1250: 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61  ?options?</i></a
1260: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 4f  ></dt>.    <dd>O
1270: 70 74 69 6f 6e 61 6c 20 66 75 6e 63 74 69 6f 6e  ptional function
1280: 20 74 6f 20 73 65 74 20 74 68 65 20 64 65 66 61   to set the defa
1290: 75 6c 74 20 6f 70 74 69 6f 6e 73 20 75 73 65 64  ult options used
12a0: 20 62 79 0a 09 3c 73 74 72 6f 6e 67 3e 74 6c 73   by..<strong>tls
12b0: 3a 3a 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67  ::socket</strong
12c0: 3e 2e 20 49 66 20 79 6f 75 20 63 61 6c 6c 20 3c  >. If you call <
12d0: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f  strong>tls::impo
12e0: 72 74 3c 2f 73 74 72 6f 6e 67 3e 0a 09 64 69 72  rt</strong>..dir
12f0: 65 63 74 6c 79 20 74 68 69 73 20 72 6f 75 74 69  ectly this routi
1300: 6e 65 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  ne has no effect
1310: 2e 20 41 6e 79 20 6f 66 20 74 68 65 20 6f 70 74  . Any of the opt
1320: 69 6f 6e 73 0a 09 74 68 61 74 20 3c 73 74 72 6f  ions..that <stro
1330: 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f  ng>tls::socket</
1340: 73 74 72 6f 6e 67 3e 20 61 63 63 65 70 74 73 20  strong> accepts 
1350: 63 61 6e 20 62 65 20 73 65 74 0a 09 75 73 69 6e  can be set..usin
1360: 67 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 2c 20  g this command, 
1370: 74 68 6f 75 67 68 20 79 6f 75 20 73 68 6f 75 6c  though you shoul
1380: 64 20 6c 69 6d 69 74 20 79 6f 75 72 20 6f 70 74  d limit your opt
1390: 69 6f 6e 73 0a 09 74 6f 20 6f 6e 6c 79 20 54 4c  ions..to only TL
13a0: 53 20 72 65 6c 61 74 65 64 20 6f 6e 65 73 2e 3c  S related ones.<
13b0: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62  /dd>.    <dt>&nb
13c0: 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74  sp;</dt>.    <dt
13d0: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73  ><a name="tls::s
13e0: 6f 63 6b 65 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73  ocket"><b>tls::s
13f0: 6f 63 6b 65 74 20 3c 2f 62 3e 3c 65 6d 3e 3f 6f  ocket </b><em>?o
1400: 70 74 69 6f 6e 73 3f 0a 09 68 6f 73 74 20 70 6f  ptions?..host po
1410: 72 74 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  rt</em></a></dt>
1420: 0a 20 20 20 20 3c 64 74 3e 3c 62 3e 74 6c 73 3a  .    <dt><b>tls:
1430: 3a 73 6f 63 6b 65 74 3c 2f 62 3e 3c 65 6d 3e 20  :socket</b><em> 
1440: 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64  ?-server command
1450: 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74  ? ?options? port
1460: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  </em></dt>.    <
1470: 64 64 3e 54 68 69 73 20 69 73 20 61 20 68 65 6c  dd>This is a hel
1480: 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61  per function tha
1490: 74 20 75 74 69 6c 69 7a 65 73 20 74 68 65 20 75  t utilizes the u
14a0: 6e 64 65 72 6c 79 69 6e 67 0a 09 63 6f 6d 6d 61  nderlying..comma
14b0: 6e 64 73 20 28 3c 73 74 72 6f 6e 67 3e 74 6c 73  nds (<strong>tls
14c0: 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67  ::import</strong
14d0: 3e 29 2e 20 49 74 20 62 65 68 61 76 65 73 0a 09  >). It behaves..
14e0: 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
14f0: 20 61 73 20 74 68 65 20 6e 61 74 69 76 65 20 54   as the native T
1500: 63 6c 20 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65  cl <strong>socke
1510: 74 3c 2f 73 74 72 6f 6e 67 3e 0a 09 63 6f 6d 6d  t</strong>..comm
1520: 61 6e 64 20 65 78 63 65 70 74 20 74 68 61 74 20  and except that 
1530: 74 68 65 20 6f 70 74 69 6f 6e 73 20 63 61 6e 20  the options can 
1540: 69 6e 63 6c 75 64 65 20 61 6e 79 20 6f 66 20 74  include any of t
1550: 68 65 0a 09 61 70 70 6c 69 63 61 62 6c 65 20 3c  he..applicable <
1560: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 69 6d  a href="#tls::im
1570: 70 6f 72 74 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  port"><strong>tl
1580: 73 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67  s:import</strong
1590: 3e 3c 2f 61 3e 0a 09 6f 70 74 69 6f 6e 73 20 77  ></a>..options w
15a0: 69 74 68 20 6f 6e 65 20 61 64 64 69 74 69 6f 6e  ith one addition
15b0: 61 6c 20 6f 70 74 69 6f 6e 3a 0a 3c 62 6c 6f 63  al option:.<bloc
15c0: 6b 71 75 6f 74 65 3e 0a 20 20 20 20 3c 64 6c 3e  kquote>.    <dl>
15d0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 61  ..<dt><strong>-a
15e0: 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 3c 2f 73  utoservername</s
15f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c  trong> <em>bool<
1600: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41  /em></dt>..<dd>A
1610: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 6e  utomatically sen
1620: 64 20 74 68 65 20 2d 73 65 72 76 65 72 6e 61 6d  d the -servernam
1630: 65 20 61 73 20 74 68 65 20 3c 65 6d 3e 68 6f 73  e as the <em>hos
1640: 74 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 0a  t</em> argument.
1650: 09 20 20 20 20 28 64 65 66 61 75 6c 74 20 69 73  .    (default is
1660: 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29   <em>false</em>)
1670: 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a  </dd>.    </dl>.
1680: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20  </blockquote>.. 
1690: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
16a0: 74 6c 73 3a 3a 69 6d 70 6f 72 74 22 3e 3c 62 3e  tls::import"><b>
16b0: 74 6c 73 3a 3a 69 6d 70 6f 72 74 20 3c 2f 62 3e  tls::import </b>
16c0: 3c 69 3e 63 68 61 6e 6e 65 6c 0a 09 3f 6f 70 74  <i>channel..?opt
16d0: 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64  ions?</i></a></d
16e0: 74 3e 0a 20 20 20 20 3c 64 64 3e 53 53 4c 2d 65  t>.    <dd>SSL-e
16f0: 6e 61 62 6c 65 20 61 20 72 65 67 75 6c 61 72 20  nable a regular 
1700: 54 63 6c 20 63 68 61 6e 6e 65 6c 20 2d 20 69 74  Tcl channel - it
1710: 20 6e 65 65 64 20 6e 6f 74 20 62 65 20 61 0a 09   need not be a..
1720: 73 6f 63 6b 65 74 2c 20 62 75 74 20 6d 75 73 74  socket, but must
1730: 20 70 72 6f 76 69 64 65 20 62 69 2d 64 69 72 65   provide bi-dire
1740: 63 74 69 6f 6e 61 6c 20 66 6c 6f 77 2e 20 41 6c  ctional flow. Al
1750: 73 6f 0a 09 73 65 74 74 69 6e 67 20 73 65 73 73  so..setting sess
1760: 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 66  ion parameters f
1770: 6f 72 20 53 53 4c 20 68 61 6e 64 73 68 61 6b 65  or SSL handshake
1780: 2e 3c 2f 64 64 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  .</dd>..<blockqu
1790: 6f 74 65 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c  ote>.    <dl>..<
17a0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 61 6c 70 6e  dt><strong>-alpn
17b0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69  </strong> <em>li
17c0: 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  st</em></dt>..<d
17d0: 64 3e 4c 69 73 74 20 6f 66 20 70 72 6f 74 6f 63  d>List of protoc
17e0: 6f 6c 73 20 74 6f 20 6f 66 66 65 72 20 64 75 72  ols to offer dur
17f0: 69 6e 67 20 41 70 70 6c 69 63 61 74 69 6f 6e 2d  ing Application-
1800: 4c 61 79 65 72 0a 09 20 20 20 20 50 72 6f 74 6f  Layer..    Proto
1810: 63 6f 6c 20 4e 65 67 6f 74 69 61 74 69 6f 6e 20  col Negotiation 
1820: 28 41 4c 50 4e 29 2e 20 46 6f 72 20 65 78 61 6d  (ALPN). For exam
1830: 70 6c 65 3a 20 3c 65 6d 3e 68 32 3c 2f 65 6d 3e  ple: <em>h2</em>
1840: 20 61 6e 64 0a 09 20 20 20 20 3c 65 6d 3e 68 74   and..    <em>ht
1850: 74 70 2f 31 2e 31 3c 2f 65 6d 3e 2c 20 62 75 74  tp/1.1</em>, but
1860: 20 6e 6f 74 20 3c 65 6d 3e 68 33 3c 2f 65 6d 3e   not <em>h3</em>
1870: 20 6f 72 20 3c 65 6d 3e 71 75 69 63 3c 2f 65 6d   or <em>quic</em
1880: 3e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  >.</dd>..<dt><st
1890: 72 6f 6e 67 3e 2d 63 61 64 69 72 3c 2f 73 74 72  rong>-cadir</str
18a0: 6f 6e 67 3e 20 3c 65 6d 3e 64 69 72 3c 2f 65 6d  ong> <em>dir</em
18b0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 74 20  ></dt>..<dd>Set 
18c0: 74 68 65 20 43 41 20 63 65 72 74 69 66 69 63 61  the CA certifica
18d0: 74 65 73 20 70 61 74 68 2e 20 54 68 65 20 64 65  tes path. The de
18e0: 66 61 75 6c 74 20 64 69 72 65 63 74 6f 72 79 20  fault directory 
18f0: 69 73 20 70 6c 61 74 66 6f 72 6d 0a 09 20 20 20  is platform..   
1900: 20 73 70 65 63 69 66 69 63 20 61 6e 64 20 63 61   specific and ca
1910: 6e 20 62 65 20 73 65 74 20 61 74 20 63 6f 6d 70  n be set at comp
1920: 69 6c 65 20 74 69 6d 65 2e 20 54 68 69 73 20 63  ile time. This c
1930: 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e  an be overridden
1940: 0a 09 20 20 20 20 76 69 61 20 74 68 65 20 3c 62  ..    via the <b
1950: 3e 53 53 4c 5f 43 45 52 54 5f 44 49 52 3c 2f 62  >SSL_CERT_DIR</b
1960: 3e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  > environment va
1970: 72 69 61 62 6c 65 2e 3c 2f 64 64 3e 0a 09 3c 64  riable.</dd>..<d
1980: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 61 66 69 6c  t><strong>-cafil
1990: 65 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 66  e </strong><em>f
19a0: 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74  ilename</em></dt
19b0: 3e 0a 09 3c 64 64 3e 53 65 74 20 74 68 65 20 63  >..<dd>Set the c
19c0: 65 72 74 69 66 69 63 61 74 65 20 61 75 74 68 6f  ertificate autho
19d0: 72 69 74 79 20 28 43 41 29 20 63 65 72 74 69 66  rity (CA) certif
19e0: 69 63 61 74 65 73 20 66 69 6c 65 2e 20 54 68 65  icates file. The
19f0: 20 64 65 66 61 75 6c 74 0a 09 20 20 20 20 69 73   default..    is
1a00: 20 74 68 65 20 63 65 72 74 2e 70 65 6d 20 66 69   the cert.pem fi
1a10: 6c 65 20 69 6e 20 74 68 65 20 4f 70 73 6e 53 53  le in the OpsnSS
1a20: 4c 20 64 69 72 65 63 74 6f 72 79 2e 20 54 68 69  L directory. Thi
1a30: 73 20 63 61 6e 20 61 6c 73 6f 20 62 65 0a 09 20  s can also be.. 
1a40: 20 20 20 6f 76 65 72 72 69 64 64 65 6e 20 76 69     overridden vi
1a50: 61 20 74 68 65 20 3c 62 3e 53 53 4c 5f 43 45 52  a the <b>SSL_CER
1a60: 54 5f 46 49 4c 45 3c 2f 62 3e 20 65 6e 76 69 72  T_FILE</b> envir
1a70: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e  onment variable.
1a80: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
1a90: 6e 67 3e 2d 63 65 72 74 66 69 6c 65 3c 2f 73 74  ng>-certfile</st
1aa0: 72 6f 6e 67 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61  rong> <em>filena
1ab0: 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  me</em></dt>..<d
1ac0: 64 3e 53 70 65 63 69 66 79 20 74 68 65 20 66 69  d>Specify the fi
1ad0: 6c 65 6e 61 6d 65 20 77 69 74 68 20 74 68 65 20  lename with the 
1ae0: 63 65 72 74 69 66 69 63 61 74 65 20 74 6f 20 75  certificate to u
1af0: 73 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  se.</dd>..<dt><s
1b00: 74 72 6f 6e 67 3e 2d 63 65 72 74 3c 2f 73 74 72  trong>-cert</str
1b10: 6f 6e 67 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d  ong> <em>filenam
1b20: 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  e</em></dt>..<dd
1b30: 3e 53 70 65 63 69 66 79 20 74 68 65 20 63 6f 6e  >Specify the con
1b40: 74 65 6e 74 73 20 6f 66 20 61 20 63 65 72 74 69  tents of a certi
1b50: 66 69 63 61 74 65 20 74 6f 20 75 73 65 2c 20 61  ficate to use, a
1b60: 73 20 61 20 44 45 52 0a 09 20 20 20 20 65 6e 63  s a DER..    enc
1b70: 6f 64 65 64 20 62 69 6e 61 72 79 20 76 61 6c 75  oded binary valu
1b80: 65 20 28 58 2e 35 30 39 20 44 45 52 29 2e 3c 2f  e (X.509 DER).</
1b90: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
1ba0: 3e 2d 63 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67  >-cipher</strong
1bb0: 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d  > <em>string</em
1bc0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74  ></dt>..<dd>List
1bd0: 20 6f 66 20 63 69 70 68 65 72 73 20 74 6f 20 75   of ciphers to u
1be0: 73 65 2e 20 53 74 72 69 6e 67 20 69 73 20 61 20  se. String is a 
1bf0: 63 6f 6c 6f 6e 20 28 22 3a 22 29 20 73 65 70 61  colon (":") sepa
1c00: 72 61 74 65 64 20 6c 69 73 74 0a 09 20 20 20 20  rated list..    
1c10: 6f 66 20 63 69 70 68 65 72 73 20 6f 72 20 63 69  of ciphers or ci
1c20: 70 68 65 72 20 73 75 69 74 65 73 2e 20 43 69 70  pher suites. Cip
1c30: 68 65 72 20 73 75 69 74 65 73 20 63 61 6e 20 62  her suites can b
1c40: 65 20 63 6f 6d 62 69 6e 65 64 0a 09 20 20 20 20  e combined..    
1c50: 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 2b 3c 2f  using the <b>+</
1c60: 62 3e 20 63 68 61 72 61 63 74 65 72 2e 20 50 72  b> character. Pr
1c70: 65 66 69 78 65 73 20 63 61 6e 20 62 65 20 75 73  efixes can be us
1c80: 65 64 20 74 6f 20 70 65 72 6d 61 6e 65 6e 74 6c  ed to permanentl
1c90: 79 0a 09 20 20 20 20 72 65 6d 6f 76 65 20 28 22  y..    remove ("
1ca0: 21 22 29 2c 20 64 65 6c 65 74 65 20 28 22 2d 22  !"), delete ("-"
1cb0: 29 2c 20 6f 72 20 6d 6f 76 65 20 61 20 63 79 70  ), or move a cyp
1cc0: 68 65 72 20 74 6f 20 74 68 65 20 65 6e 64 20 6f  her to the end o
1cd0: 66 0a 09 20 20 20 20 74 68 65 20 6c 69 73 74 20  f..    the list 
1ce0: 28 22 2b 22 29 2e 20 4b 65 79 77 6f 72 64 73 20  ("+"). Keywords 
1cf0: 3c 62 3e 40 53 54 52 45 4e 47 54 48 3c 2f 62 3e  <b>@STRENGTH</b>
1d00: 20 28 73 6f 72 74 20 62 79 20 61 6c 67 6f 72 69   (sort by algori
1d10: 74 68 6d 0a 09 20 20 20 20 6b 65 79 20 6c 65 6e  thm..    key len
1d20: 67 74 68 29 2c 20 3c 62 3e 40 53 45 43 4c 45 56  gth), <b>@SECLEV
1d30: 45 4c 3d 3c 2f 62 3e 3c 69 3e 6e 3c 2f 69 3e 20  EL=</b><i>n</i> 
1d40: 28 73 65 74 20 73 65 63 75 72 69 74 79 20 6c 65  (set security le
1d50: 76 65 6c 20 74 6f 0a 09 20 20 20 20 6e 29 2c 20  vel to..    n), 
1d60: 61 6e 64 20 3c 62 3e 44 45 46 41 55 4c 54 3c 2f  and <b>DEFAULT</
1d70: 62 3e 20 28 75 73 65 20 64 65 66 61 75 6c 74 20  b> (use default 
1d80: 63 69 70 68 65 72 20 6c 69 73 74 2c 20 61 74 20  cipher list, at 
1d90: 73 74 61 72 74 20 6f 6e 6c 79 29 0a 09 20 20 20  start only)..   
1da0: 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 73 70 65   can also be spe
1db0: 63 69 66 69 65 64 2e 20 53 65 65 20 4f 70 65 6e  cified. See Open
1dc0: 53 53 4c 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SSL documentatio
1dd0: 6e 20 66 6f 72 20 74 68 65 20 66 75 6c 6c 0a 09  n for the full..
1de0: 20 20 20 20 6c 69 73 74 20 6f 66 20 76 61 6c 69      list of vali
1df0: 64 20 76 61 6c 75 65 73 2e 20 28 54 4c 53 20 31  d values. (TLS 1
1e00: 2e 32 20 61 6e 64 20 65 61 72 6c 69 65 72 20 6f  .2 and earlier o
1e10: 6e 6c 79 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  nly)</dd>..<dt><
1e20: 73 74 72 6f 6e 67 3e 2d 63 69 70 68 65 72 73 75  strong>-ciphersu
1e30: 69 74 65 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  ites</strong> <e
1e40: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64  m>string</em></d
1e50: 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20  t>..<dd>List of 
1e60: 63 69 70 68 65 72 20 73 75 69 74 65 73 20 74 6f  cipher suites to
1e70: 20 75 73 65 2e 20 53 74 72 69 6e 67 20 69 73 20   use. String is 
1e80: 61 20 63 6f 6c 6f 6e 20 28 22 3a 22 29 0a 09 20  a colon (":").. 
1e90: 20 20 20 73 65 70 61 72 61 74 65 64 20 6c 69 73     separated lis
1ea0: 74 20 6f 66 20 63 69 70 68 65 72 20 73 75 69 74  t of cipher suit
1eb0: 65 20 6e 61 6d 65 73 2e 20 28 54 4c 53 20 31 2e  e names. (TLS 1.
1ec0: 33 20 6f 6e 6c 79 29 3c 2f 64 64 3e 0a 09 3c 64  3 only)</dd>..<d
1ed0: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61  t><strong>-comma
1ee0: 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  nd</strong> <em>
1ef0: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64  callback</em></d
1f00: 74 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62 61 63 6b  t>..<dd>Callback
1f10: 20 74 6f 20 69 6e 76 6f 6b 65 20 61 74 20 73 65   to invoke at se
1f20: 76 65 72 61 6c 20 70 6f 69 6e 74 73 20 64 75 72  veral points dur
1f30: 69 6e 67 20 74 68 65 20 68 61 6e 64 73 68 61 6b  ing the handshak
1f40: 65 2e 0a 09 20 20 20 20 54 68 69 73 20 69 73 20  e...    This is 
1f50: 75 73 65 64 20 74 6f 20 70 61 73 73 20 65 72 72  used to pass err
1f60: 6f 72 73 20 61 6e 64 20 74 72 61 63 69 6e 67 20  ors and tracing 
1f70: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6e 64  information, and
1f80: 0a 09 20 20 20 20 69 74 20 63 61 6e 20 61 6c 6c  ..    it can all
1f90: 6f 77 20 54 63 6c 20 73 63 72 69 70 74 73 20 74  ow Tcl scripts t
1fa0: 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 69 72 20  o perform their 
1fb0: 6f 77 6e 20 63 65 72 74 69 66 69 63 61 74 65 0a  own certificate.
1fc0: 09 20 20 20 20 76 61 6c 69 64 61 74 69 6f 6e 20  .    validation 
1fd0: 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
1fe0: 64 65 66 61 75 6c 74 20 76 61 6c 69 64 61 74 69  default validati
1ff0: 6f 6e 20 70 72 6f 76 69 64 65 64 20 62 79 0a 09  on provided by..
2000: 20 20 20 20 4f 70 65 6e 53 53 4c 2e 20 53 65 65      OpenSSL. See
2010: 20 3c 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42   <a href="#CALLB
2020: 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c  ACK OPTIONS">CAL
2030: 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61  LBACK OPTIONS</a
2040: 3e 0a 09 20 20 20 20 66 6f 72 20 66 75 72 74 68  >..    for furth
2050: 65 72 20 64 69 73 63 75 73 73 69 6f 6e 2e 3c 2f  er discussion.</
2060: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
2070: 3e 2d 64 68 70 61 72 61 6d 73 20 3c 2f 73 74 72  >-dhparams </str
2080: 6f 6e 67 3e 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65  ong><em>filename
2090: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
20a0: 53 70 65 63 69 66 79 20 74 68 65 20 44 69 66 66  Specify the Diff
20b0: 69 65 2d 48 65 6c 6c 6d 61 6e 20 70 61 72 61 6d  ie-Hellman param
20c0: 65 74 65 72 73 20 66 69 6c 65 2e 3c 2f 64 64 3e  eters file.</dd>
20d0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b  ..<dt><strong>-k
20e0: 65 79 66 69 6c 65 3c 2f 73 74 72 6f 6e 67 3e 20  eyfile</strong> 
20f0: 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d  <em>filename</em
2100: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63  ></dt>..<dd>Spec
2110: 69 66 79 20 74 68 65 20 70 72 69 76 61 74 65 20  ify the private 
2120: 6b 65 79 20 66 69 6c 65 2e 20 28 64 65 66 61 75  key file. (defau
2130: 6c 74 20 69 73 0a 09 20 20 20 20 76 61 6c 75 65  lt is..    value
2140: 20 6f 66 20 2d 63 65 72 74 66 69 6c 65 29 3c 2f   of -certfile)</
2150: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
2160: 3e 2d 6b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c  >-key</strong> <
2170: 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e  em>filename</em>
2180: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69  </dt>..<dd>Speci
2190: 66 79 20 74 68 65 20 70 72 69 76 61 74 65 20 6b  fy the private k
21a0: 65 79 20 74 6f 20 75 73 65 20 61 73 20 61 20 44  ey to use as a D
21b0: 45 52 20 65 6e 63 6f 64 65 64 20 76 61 6c 75 65  ER encoded value
21c0: 20 28 50 4b 43 53 23 31 20 44 45 52 29 3c 2f 64   (PKCS#1 DER)</d
21d0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
21e0: 2d 6d 6f 64 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20  -model</strong> 
21f0: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e  <em>channel</em>
2200: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 46 6f 72 63 65  </dt>..<dd>Force
2210: 20 74 68 69 73 20 63 68 61 6e 6e 65 6c 20 74 6f   this channel to
2220: 20 73 68 61 72 65 20 74 68 65 20 73 61 6d 65 20   share the same 
2230: 3c 65 6d 3e 3c 73 74 72 6f 6e 67 3e 53 53 4c 5f  <em><strong>SSL_
2240: 43 54 58 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 65 6d  CTX</strong></em
2250: 3e 0a 09 20 20 20 20 73 74 72 75 63 74 75 72 65  >..    structure
2260: 20 61 73 20 74 68 65 20 73 70 65 63 69 66 69 65   as the specifie
2270: 64 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65  d <em>channel</e
2280: 6d 3e 2c 20 61 6e 64 0a 09 20 20 20 20 74 68 65  m>, and..    the
2290: 72 65 66 6f 72 65 20 73 68 61 72 65 20 63 61 6c  refore share cal
22a0: 6c 62 61 63 6b 73 20 65 74 63 2e 3c 2f 64 64 3e  lbacks etc.</dd>
22b0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70  ..<dt><strong>-p
22c0: 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e  assword</strong>
22d0: 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65   <em>callback</e
22e0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61 6c  m></dt>..<dd>Cal
22f0: 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20  lback to invoke 
2300: 77 68 65 6e 20 4f 70 65 6e 53 53 4c 20 6e 65 65  when OpenSSL nee
2310: 64 73 20 74 6f 20 6f 62 74 61 69 6e 20 61 20 70  ds to obtain a p
2320: 61 73 73 77 6f 72 64 2c 0a 09 20 20 20 20 74 79  assword,..    ty
2330: 70 69 63 61 6c 6c 79 20 74 6f 20 75 6e 6c 6f 63  pically to unloc
2340: 6b 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65  k the private ke
2350: 79 20 6f 66 20 61 20 63 65 72 74 69 66 69 63 61  y of a certifica
2360: 74 65 2e 20 54 68 65 0a 09 20 20 20 20 63 61 6c  te. The..    cal
2370: 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 72 65 74  lback should ret
2380: 75 72 6e 20 61 20 73 74 72 69 6e 67 20 77 68 69  urn a string whi
2390: 63 68 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ch represents th
23a0: 65 20 70 61 73 73 77 6f 72 64 0a 09 20 20 20 20  e password..    
23b0: 74 6f 20 62 65 20 75 73 65 64 2e 20 53 65 65 20  to be used. See 
23c0: 3c 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42 41  <a href="#CALLBA
23d0: 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c  CK OPTIONS">CALL
23e0: 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e  BACK OPTIONS</a>
23f0: 0a 09 20 20 20 20 66 6f 72 20 66 75 72 74 68 65  ..    for furthe
2400: 72 20 64 69 73 63 75 73 73 69 6f 6e 2e 3c 2f 64  r discussion.</d
2410: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
2420: 2d 70 6f 73 74 5f 68 61 6e 64 73 68 61 6b 65 3c  -post_handshake<
2430: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
2440: 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  l</em></dt>..<dd
2450: 3e 41 6c 6c 6f 77 20 70 6f 73 74 2d 68 61 6e 64  >Allow post-hand
2460: 73 68 61 6b 65 20 74 69 63 6b 65 74 20 75 70 64  shake ticket upd
2470: 61 74 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  ates.</dd>..<dt>
2480: 3c 73 74 72 6f 6e 67 3e 2d 72 65 71 75 65 73 74  <strong>-request
2490: 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 62 6f   </strong><em>bo
24a0: 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ol</em></dt>..<d
24b0: 64 3e 52 65 71 75 65 73 74 20 61 20 63 65 72 74  d>Request a cert
24c0: 69 66 69 63 61 74 65 20 66 72 6f 6d 20 70 65 65  ificate from pee
24d0: 72 20 64 75 72 69 6e 67 20 53 53 4c 20 68 61 6e  r during SSL han
24e0: 64 73 68 61 6b 65 2e 0a 09 20 20 20 20 28 64 65  dshake...    (de
24f0: 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75  fault is <em>tru
2500: 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64  e</em>)</dd>..<d
2510: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 72 65 71 75 69  t><strong>-requi
2520: 72 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  re</strong> <em>
2530: 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  bool</em></dt>..
2540: 3c 64 64 3e 52 65 71 75 69 72 65 20 61 20 76 61  <dd>Require a va
2550: 6c 69 64 20 63 65 72 74 69 66 69 63 61 74 65 20  lid certificate 
2560: 66 72 6f 6d 20 70 65 65 72 20 64 75 72 69 6e 67  from peer during
2570: 20 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 2e 0a   SSL handshake..
2580: 09 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20  .    If this is 
2590: 73 65 74 20 74 6f 20 74 72 75 65 2c 20 74 68 65  set to true, the
25a0: 6e 20 3c 73 74 72 6f 6e 67 3e 2d 72 65 71 75 65  n <strong>-reque
25b0: 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 6d 75 73 74  st</strong> must
25c0: 0a 09 20 20 20 20 61 6c 73 6f 20 62 65 20 73 65  ..    also be se
25d0: 74 20 74 6f 20 74 72 75 65 2e 20 28 64 65 66 61  t to true. (defa
25e0: 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65  ult is <em>false
25f0: 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74  </em>)</dd>..<dt
2600: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 63 75 72 69  ><strong>-securi
2610: 74 79 6c 65 76 65 6c 3c 2f 73 74 72 6f 6e 67 3e  tylevel</strong>
2620: 20 3c 65 6d 3e 69 6e 74 65 67 65 72 3c 2f 65 6d   <em>integer</em
2630: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 74 20  ></dt>..<dd>Set 
2640: 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c 2e 20  security level. 
2650: 4d 75 73 74 20 62 65 20 30 20 74 6f 20 35 2e 20  Must be 0 to 5. 
2660: 54 68 65 20 73 65 63 75 72 69 74 79 20 6c 65 76  The security lev
2670: 65 6c 20 61 66 66 65 63 74 73 0a 09 20 20 20 20  el affects..    
2680: 63 69 70 68 65 72 20 73 75 69 74 65 20 65 6e 63  cipher suite enc
2690: 72 79 70 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  ryption algorith
26a0: 6d 73 2c 20 73 75 70 70 6f 72 74 65 64 20 45 43  ms, supported EC
26b0: 43 20 63 75 72 76 65 73 2c 0a 09 20 20 20 20 73  C curves,..    s
26c0: 75 70 70 6f 72 74 65 64 20 73 69 67 6e 61 74 75  upported signatu
26d0: 72 65 20 61 6c 67 6f 72 69 74 68 6d 73 2c 20 44  re algorithms, D
26e0: 48 20 70 61 72 61 6d 65 74 65 72 20 73 69 7a 65  H parameter size
26f0: 73 2c 20 63 65 72 74 69 66 69 63 61 74 65 0a 09  s, certificate..
2700: 20 20 20 20 6b 65 79 20 73 69 7a 65 73 20 61 6e      key sizes an
2710: 64 20 73 69 67 6e 61 74 75 72 65 20 61 6c 67 6f  d signature algo
2720: 72 69 74 68 6d 73 2e 20 54 68 65 20 64 65 66 61  rithms. The defa
2730: 75 6c 74 20 69 73 20 31 2e 0a 09 20 20 20 20 4c  ult is 1...    L
2740: 65 76 65 6c 20 33 20 61 6e 64 20 68 69 67 68 65  evel 3 and highe
2750: 72 20 64 69 73 61 62 6c 65 20 73 75 70 70 6f 72  r disable suppor
2760: 74 20 66 6f 72 20 73 65 73 73 69 6f 6e 20 74 69  t for session ti
2770: 63 6b 65 74 73 20 61 6e 64 20 6f 6e 6c 79 0a 09  ckets and only..
2780: 20 20 20 20 61 63 63 65 70 74 20 63 69 70 68 65      accept ciphe
2790: 72 20 73 75 69 74 65 73 20 74 68 61 74 20 70 72  r suites that pr
27a0: 6f 76 69 64 65 20 66 6f 72 77 61 72 64 20 73 65  ovide forward se
27b0: 63 72 65 63 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74  crecy.</dd>..<dt
27c0: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 72 76 65 72  ><strong>-server
27d0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f  </strong> <em>bo
27e0: 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ol</em></dt>..<d
27f0: 64 3e 48 61 6e 64 73 68 61 6b 65 20 61 73 20 73  d>Handshake as s
2800: 65 72 76 65 72 20 69 66 20 74 72 75 65 2c 20 65  erver if true, e
2810: 6c 73 65 20 68 61 6e 64 73 68 61 6b 65 20 61 73  lse handshake as
2820: 0a 09 20 20 20 20 63 6c 69 65 6e 74 2e 20 28 64  ..    client. (d
2830: 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61  efault is <em>fa
2840: 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09  lse</em>)</dd>..
2850: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73 65 72  <dt><strong>-ser
2860: 76 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e  vername</strong>
2870: 20 3c 65 6d 3e 68 6f 73 74 3c 2f 65 6d 3e 3c 2f   <em>host</em></
2880: 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79  dt>..<dd>Specify
2890: 20 73 65 72 76 65 72 20 68 6f 73 74 6e 61 6d 65   server hostname
28a0: 2e 20 4f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  . Only available
28b0: 20 69 66 20 74 68 65 20 4f 70 65 6e 53 53 4c 20   if the OpenSSL 
28c0: 6c 69 62 72 61 72 79 0a 09 20 20 20 20 74 68 65  library..    the
28d0: 20 70 61 63 6b 61 67 65 20 69 73 20 6c 69 6e 6b   package is link
28e0: 65 64 20 61 67 61 69 6e 73 74 20 73 75 70 70 6f  ed against suppo
28f0: 72 74 73 20 74 68 65 20 54 4c 53 20 68 6f 73 74  rts the TLS host
2900: 6e 61 6d 65 20 65 78 74 65 6e 73 69 6f 6e 0a 09  name extension..
2910: 20 20 20 20 66 6f 72 20 27 53 65 72 76 65 72 20      for 'Server 
2920: 4e 61 6d 65 20 49 6e 64 69 63 61 74 69 6f 6e 27  Name Indication'
2930: 20 28 53 4e 49 29 2e 20 55 73 65 20 74 6f 20 6e   (SNI). Use to n
2940: 61 6d 65 20 74 68 65 20 6c 6f 67 69 63 61 6c 20  ame the logical 
2950: 68 6f 73 74 0a 09 20 20 20 20 77 65 20 61 72 65  host..    we are
2960: 20 74 61 6c 6b 69 6e 67 20 74 6f 20 61 6e 64 20   talking to and 
2970: 65 78 70 65 63 74 69 6e 67 20 61 20 63 65 72 74  expecting a cert
2980: 69 66 69 63 61 74 65 20 66 6f 72 2e 3c 2f 64 64  ificate for.</dd
2990: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
29a0: 73 65 73 73 69 6f 6e 5f 69 64 3c 2f 73 74 72 6f  session_id</stro
29b0: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
29c0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65  em></dt>..<dd>Se
29d0: 73 73 69 6f 6e 20 69 64 20 74 6f 20 72 65 73 75  ssion id to resu
29e0: 6d 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e  me session.</dd>
29f0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73  ..<dt><strong>-s
2a00: 73 6c 32 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  sl2</strong> <em
2a10: 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >bool</em></dt>.
2a20: 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20  .<dd>Enable use 
2a30: 6f 66 20 53 53 4c 20 76 32 2e 20 28 64 65 66 61  of SSL v2. (defa
2a40: 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65  ult is <em>false
2a50: 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74  </em>)</dd>..<dt
2a60: 3e 3c 73 74 72 6f 6e 67 3e 2d 73 73 6c 33 20 3c  ><strong>-ssl3 <
2a70: 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 62 6f 6f 6c  /strong><em>bool
2a80: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2a90: 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 53 53  Enable use of SS
2aa0: 4c 20 76 33 2e 20 28 64 65 66 61 75 6c 74 20 69  L v3. (default i
2ab0: 73 20 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e  s <em>false</em>
2ac0: 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74  )</dd>..<dt>-<st
2ad0: 72 6f 6e 67 3e 74 6c 73 31 3c 2f 73 74 72 6f 6e  rong>tls1</stron
2ae0: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e  g> <em>bool</em>
2af0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c  </dt>..<dd>Enabl
2b00: 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31 2e  e use of TLS v1.
2b10: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d   (default is <em
2b20: 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e  >true</em>)</dd>
2b30: 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74  ..<dt>-<strong>t
2b40: 6c 73 31 2e 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ls1.1</strong> <
2b50: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
2b60: 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73  >..<dd>Enable us
2b70: 65 20 6f 66 20 54 4c 53 20 76 31 2e 31 20 28 64  e of TLS v1.1 (d
2b80: 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72  efault is <em>tr
2b90: 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c  ue</em>)</dd>..<
2ba0: 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31  dt>-<strong>tls1
2bb0: 2e 32 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  .2</strong> <em>
2bc0: 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  bool</em></dt>..
2bd0: 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f  <dd>Enable use o
2be0: 66 20 54 4c 53 20 76 31 2e 32 20 28 64 65 66 61  f TLS v1.2 (defa
2bf0: 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c  ult is <em>true<
2c00: 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e  /em>)</dd>..<dt>
2c10: 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31 2e 33 3c  -<strong>tls1.3<
2c20: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
2c30: 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  l</em></dt>..<dd
2c40: 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 54  >Enable use of T
2c50: 4c 53 20 76 31 2e 33 20 28 64 65 66 61 75 6c 74  LS v1.3 (default
2c60: 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d   is <em>true</em
2c70: 3e 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  >)</dd>..<dt><st
2c80: 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65 63 6f  rong>-validateco
2c90: 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  mmand</strong> <
2ca0: 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e  em>callback</em>
2cb0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61 6c 6c 62  </dt>..<dd>Callb
2cc0: 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 74 6f  ack to invoke to
2cd0: 20 76 65 72 69 66 79 20 6f 72 20 76 61 6c 69 64   verify or valid
2ce0: 61 74 65 20 70 72 6f 74 6f 63 6f 6c 20 63 6f 6e  ate protocol con
2cf0: 66 69 67 0a 09 20 20 20 20 70 61 72 61 6d 65 74  fig..    paramet
2d00: 65 72 73 20 64 75 72 69 6e 67 20 74 68 65 20 70  ers during the p
2d10: 72 6f 74 6f 63 6f 6c 20 6e 65 67 6f 74 69 61 74  rotocol negotiat
2d20: 69 6f 6e 20 70 68 61 73 65 2e 20 53 65 65 0a 09  ion phase. See..
2d30: 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 43 41      <a href="#CA
2d40: 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e  LLBACK OPTIONS">
2d50: 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53  CALLBACK OPTIONS
2d60: 3c 2f 61 3e 0a 09 20 20 20 20 66 6f 72 20 66 75  </a>..    for fu
2d70: 72 74 68 65 72 20 64 69 73 63 75 73 73 69 6f 6e  rther discussion
2d80: 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e  .</dd>.    </dl>
2d90: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
2da0: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
2db0: 22 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 22 3e  "tls::unimport">
2dc0: 3c 62 3e 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74  <b>tls::unimport
2dd0: 20 3c 2f 62 3e 3c 69 3e 63 68 61 6e 6e 65 6c 3c   </b><i>channel<
2de0: 2f 69 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20  /i></a></dt>.   
2df0: 20 3c 64 64 3e 50 72 6f 76 69 64 65 64 20 66 6f   <dd>Provided fo
2e00: 72 20 73 79 6d 6d 65 74 72 79 20 74 6f 20 3c 73  r symmetry to <s
2e10: 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d 70 6f 72  trong>tls::impor
2e20: 74 3c 2f 73 74 72 6f 6e 67 3e 2c 20 74 68 69 73  t</strong>, this
2e30: 0a 20 20 20 20 20 20 75 6e 73 74 61 63 6b 73 20  .      unstacks 
2e40: 74 68 65 20 53 53 4c 2d 65 6e 61 62 6c 69 6e 67  the SSL-enabling
2e50: 20 6f 66 20 61 20 72 65 67 75 6c 61 72 20 54 63   of a regular Tc
2e60: 6c 20 63 68 61 6e 6e 65 6c 2e 20 20 41 6e 20 65  l channel.  An e
2e70: 72 72 6f 72 0a 20 20 20 20 20 20 69 73 20 74 68  rror.      is th
2e80: 72 6f 77 6e 20 69 66 20 54 4c 53 20 69 73 20 6e  rown if TLS is n
2e90: 6f 74 20 74 68 65 20 74 6f 70 20 73 74 61 63 6b  ot the top stack
2ea0: 65 64 20 63 68 61 6e 6e 65 6c 20 74 79 70 65 2e  ed channel type.
2eb0: 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e  </dd>.    <dt>&n
2ec0: 62 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64  bsp;</dt>.    <d
2ed0: 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a  t><a name="tls::
2ee0: 68 61 6e 64 73 68 61 6b 65 22 3e 3c 73 74 72 6f  handshake"><stro
2ef0: 6e 67 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b  ng>tls::handshak
2f00: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  e</strong> <em>c
2f10: 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c  hannel</em></a><
2f20: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 46 6f 72  /dt>.    <dd>For
2f30: 63 65 73 20 68 61 6e 64 73 68 61 6b 65 20 74 6f  ces handshake to
2f40: 20 74 61 6b 65 20 70 6c 61 63 65 2c 20 61 6e 64   take place, and
2f50: 20 72 65 74 75 72 6e 73 20 30 20 69 66 0a 09 68   returns 0 if..h
2f60: 61 6e 64 73 68 61 6b 65 20 69 73 20 73 74 69 6c  andshake is stil
2f70: 6c 20 69 6e 20 70 72 6f 67 72 65 73 73 20 28 6e  l in progress (n
2f80: 6f 6e 2d 62 6c 6f 63 6b 69 6e 67 29 2c 20 6f 72  on-blocking), or
2f90: 20 31 20 69 66 0a 09 74 68 65 20 68 61 6e 64 73   1 if..the hands
2fa0: 68 61 6b 65 20 77 61 73 20 73 75 63 63 65 73 73  hake was success
2fb0: 66 75 6c 2e 20 49 66 20 74 68 65 20 68 61 6e 64  ful. If the hand
2fc0: 73 68 61 6b 65 20 66 61 69 6c 65 64 0a 09 74 68  shake failed..th
2fd0: 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20  is routine will 
2fe0: 74 68 72 6f 77 20 61 6e 20 65 72 72 6f 72 2e 3c  throw an error.<
2ff0: 2f 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62  /dd>.    <dt>&nb
3000: 73 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74  sp;</dt>.    <dt
3010: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73  ><a name="tls::s
3020: 74 61 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74  tatus"><strong>t
3030: 6c 73 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f  ls::status</stro
3040: 6e 67 3e 0a 20 20 20 20 3c 65 6d 3e 3f 2d 6c 6f  ng>.    <em>?-lo
3050: 63 61 6c 3f 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d  cal? channel</em
3060: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
3070: 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20 63  dd>Returns the c
3080: 75 72 72 65 6e 74 20 73 74 61 74 75 73 20 6f 66  urrent status of
3090: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
30a0: 20 66 6f 72 20 61 6e 20 53 53 4c 0a 09 63 68 61   for an SSL..cha
30b0: 6e 6e 65 6c 2e 20 54 68 65 20 72 65 73 75 6c 74  nnel. The result
30c0: 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 6b 65   is a list of ke
30d0: 79 2d 76 61 6c 75 65 20 70 61 69 72 73 20 64 65  y-value pairs de
30e0: 73 63 72 69 62 69 6e 67 0a 09 74 68 65 20 63 65  scribing..the ce
30f0: 72 74 69 66 69 63 61 74 65 2e 20 49 66 20 74 68  rtificate. If th
3100: 65 20 72 65 73 75 6c 74 20 69 73 20 61 6e 20 65  e result is an e
3110: 6d 70 74 79 20 6c 69 73 74 20 74 68 65 6e 20 74  mpty list then t
3120: 68 65 0a 09 53 53 4c 20 68 61 6e 64 73 68 61 6b  he..SSL handshak
3130: 65 20 68 61 73 20 6e 6f 74 20 79 65 74 20 63 6f  e has not yet co
3140: 6d 70 6c 65 74 65 64 2e 20 49 66 20 3c 65 6d 3e  mpleted. If <em>
3150: 2d 6c 6f 63 61 6c 3c 2f 65 6d 3e 20 69 73 0a 09  -local</em> is..
3160: 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
3170: 74 68 65 20 6c 6f 63 61 6c 20 63 65 72 74 69 66  the local certif
3180: 69 63 61 74 65 20 69 73 20 75 73 65 64 2e 3c 2f  icate is used.</
3190: 64 64 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  dd>.<blockquote>
31a0: 0a 09 3c 62 3e 53 53 4c 20 53 74 61 74 75 73 3c  ..<b>SSL Status<
31b0: 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64  /b>.    <dl>..<d
31c0: 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f  t><strong>alpn</
31d0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 70 72 6f 74  strong> <em>prot
31e0: 6f 63 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ocol</em></dt>..
31f0: 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c  <dd>The protocol
3200: 20 73 65 6c 65 63 74 65 64 20 61 66 74 65 72 20   selected after 
3210: 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79 65  Application-Laye
3220: 72 20 50 72 6f 74 6f 63 6f 6c 0a 09 20 20 20 20  r Protocol..    
3230: 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50  Negotiation (ALP
3240: 4e 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  N).</dd>..<dt><s
3250: 74 72 6f 6e 67 3e 63 69 70 68 65 72 3c 2f 73 74  trong>cipher</st
3260: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 69 70 68 65 72  rong> <em>cipher
3270: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3280: 54 68 65 20 63 75 72 72 65 6e 74 20 63 69 70 68  The current ciph
3290: 65 72 20 69 6e 20 75 73 65 20 62 65 74 77 65 65  er in use betwee
32a0: 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 61 6e 64  n the client and
32b0: 0a 09 20 20 20 20 73 65 72 76 65 72 20 63 68 61  ..    server cha
32c0: 6e 6e 65 6c 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74  nnels.</dd>..<dt
32d0: 3e 3c 73 74 72 6f 6e 67 3e 70 65 65 72 6e 61 6d  ><strong>peernam
32e0: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e  e</strong> <em>n
32f0: 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ame</em></dt>..<
3300: 64 64 3e 54 68 65 20 70 65 65 72 6e 61 6d 65 20  dd>The peername 
3310: 66 72 6f 6d 20 74 68 65 20 63 65 72 74 69 66 69  from the certifi
3320: 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  cate.</dd>..<dt>
3330: 3c 73 74 72 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c  <strong>protocol
3340: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65  </strong> <em>ve
3350: 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  rsion</em></dt>.
3360: 09 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f  .<dd>The protoco
3370: 6c 20 76 65 72 73 69 6f 6e 20 75 73 65 64 20 66  l version used f
3380: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
3390: 6e 3a 0a 09 20 20 20 20 53 53 4c 32 2c 20 53 53  n:..    SSL2, SS
33a0: 4c 33 2c 20 54 4c 53 31 2c 20 54 4c 53 31 2e 31  L3, TLS1, TLS1.1
33b0: 2c 20 54 4c 53 31 2e 32 2c 20 54 4c 53 31 2e 33  , TLS1.2, TLS1.3
33c0: 2c 20 6f 72 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64  , or unknown.</d
33d0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
33e0: 73 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  sbits</strong> <
33f0: 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  em>n</em></dt>..
3400: 3c 64 64 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  <dd>The number o
3410: 66 20 62 69 74 73 20 75 73 65 64 20 66 6f 72 20  f bits used for 
3420: 74 68 65 20 73 65 73 73 69 6f 6e 20 6b 65 79 2e  the session key.
3430: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
3440: 6e 67 3e 73 69 67 6e 61 74 75 72 65 48 61 73 68  ng>signatureHash
3450: 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e  Algorithm</stron
3460: 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d  g> <em>algorithm
3470: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3480: 54 68 65 20 73 69 67 6e 61 74 75 72 65 20 68 61  The signature ha
3490: 73 68 20 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64  sh algorithm.</d
34a0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
34b0: 73 69 67 6e 61 74 75 72 65 54 79 70 65 3c 2f 73  signatureType</s
34c0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 74 79 70 65 3c  trong> <em>type<
34d0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
34e0: 68 65 20 73 69 67 6e 61 74 75 72 65 20 74 79 70  he signature typ
34f0: 65 20 76 61 6c 75 65 2e 3c 2f 64 64 3e 0a 09 3c  e value.</dd>..<
3500: 64 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66  dt><strong>verif
3510: 79 44 65 70 74 68 3c 2f 73 74 72 6f 6e 67 3e 20  yDepth</strong> 
3520: 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  <em>n</em></dt>.
3530: 09 3c 64 64 3e 4d 61 78 69 6d 75 6d 20 64 65 70  .<dd>Maximum dep
3540: 74 68 20 66 6f 72 20 74 68 65 20 63 65 72 74 69  th for the certi
3550: 66 69 63 61 74 65 20 63 68 61 69 6e 20 76 65 72  ficate chain ver
3560: 69 66 69 63 61 74 69 6f 6e 2e 0a 09 20 20 20 20  ification...    
3570: 44 65 66 61 75 6c 74 20 69 73 20 2d 31 2c 20 74  Default is -1, t
3580: 6f 20 63 68 65 63 6b 20 61 6c 6c 2e 3c 2f 64 64  o check all.</dd
3590: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 76  >..<dt><strong>v
35a0: 65 72 69 66 79 4d 6f 64 65 3c 2f 73 74 72 6f 6e  erifyMode</stron
35b0: 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e  g> <em>list</em>
35c0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20  </dt>..<dd>List 
35d0: 6f 66 20 63 65 72 74 69 66 69 63 61 74 65 20 76  of certificate v
35e0: 65 72 69 66 69 63 61 74 69 6f 6e 20 6d 6f 64 65  erification mode
35f0: 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  s.</dd>..<dt><st
3600: 72 6f 6e 67 3e 76 65 72 69 66 79 52 65 73 75 6c  rong>verifyResul
3610: 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 72  t</strong> <em>r
3620: 65 73 75 6c 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  esult</em></dt>.
3630: 09 3c 64 64 3e 43 65 72 74 69 66 69 63 61 74 65  .<dd>Certificate
3640: 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 72 65   verification re
3650: 73 75 6c 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  sult.</dd>..<dt>
3660: 3c 73 74 72 6f 6e 67 3e 63 61 5f 6e 61 6d 65 73  <strong>ca_names
3670: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69  </strong> <em>li
3680: 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  st</em></dt>..<d
3690: 64 3e 4c 69 73 74 20 6f 66 20 74 68 65 20 43 65  d>List of the Ce
36a0: 72 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72  rtificate Author
36b0: 69 74 69 65 73 20 75 73 65 64 20 74 6f 20 63 72  ities used to cr
36c0: 65 61 74 65 20 74 68 65 20 63 65 72 74 69 66 69  eate the certifi
36d0: 63 61 74 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c  cate.</dd>.    <
36e0: 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /dl>.</blockquot
36f0: 65 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e>.<blockquote>.
3700: 09 3c 62 3e 43 65 72 74 69 66 69 63 61 74 65 20  .<b>Certificate 
3710: 53 74 61 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c  Status</b>.    <
3720: 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dl>..<dt><strong
3730: 3e 61 6c 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  >all</strong> <e
3740: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64  m>string</em></d
3750: 74 3e 0a 09 3c 64 64 3e 44 75 6d 70 20 6f 66 20  t>..<dd>Dump of 
3760: 61 6c 6c 20 63 65 72 74 69 66 69 63 61 74 65 20  all certificate 
3770: 69 6e 66 6f 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74  info.</dd>...<dt
3780: 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 73 69 6f 6e  ><strong>version
3790: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 61  </strong> <em>va
37a0: 6c 75 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  lue</em></dt>..<
37b0: 64 64 3e 54 68 65 20 63 65 72 74 69 66 69 63 61  dd>The certifica
37c0: 74 65 20 76 65 72 73 69 6f 6e 2e 3c 2f 64 64 3e  te version.</dd>
37d0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65  ..<dt><strong>se
37e0: 72 69 61 6c 4e 75 6d 62 65 72 3c 2f 73 74 72 6f  rialNumber</stro
37f0: 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f  ng> <em>n</em></
3800: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 65 72  dt>..<dd>The ser
3810: 69 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 74 68  ial number of th
3820: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 61 73  e certificate as
3830: 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64   hex string.</dd
3840: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
3850: 69 67 6e 61 74 75 72 65 3c 2f 73 74 72 6f 6e 67  ignature</strong
3860: 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c  > <em>algorithm<
3870: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43  /em></dt>..<dd>C
3880: 69 70 68 65 72 20 61 6c 67 6f 72 69 74 68 6d 20  ipher algorithm 
3890: 75 73 65 64 20 66 6f 72 20 63 65 72 74 69 66 69  used for certifi
38a0: 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 2e 3c  cate signature.<
38b0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
38c0: 67 3e 69 73 73 75 65 72 3c 2f 73 74 72 6f 6e 67  g>issuer</strong
38d0: 3e 20 3c 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c 2f 64  > <em>dn</em></d
38e0: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 64 69 73 74  t>..<dd>The dist
38f0: 69 6e 67 75 69 73 68 65 64 20 6e 61 6d 65 20 28  inguished name (
3900: 44 4e 29 20 6f 66 20 74 68 65 20 63 65 72 74 69  DN) of the certi
3910: 66 69 63 61 74 65 20 69 73 73 75 65 72 2e 3c 2f  ficate issuer.</
3920: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3930: 3e 6e 6f 74 42 65 66 6f 72 65 3c 2f 73 74 72 6f  >notBefore</stro
3940: 6e 67 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d  ng> <em>date</em
3950: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
3960: 62 65 67 69 6e 20 64 61 74 65 20 66 6f 72 20 74  begin date for t
3970: 68 65 20 76 61 6c 69 64 69 74 79 20 6f 66 20 74  he validity of t
3980: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c  he certificate.<
3990: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
39a0: 67 3e 6e 6f 74 41 66 74 65 72 3c 2f 73 74 72 6f  g>notAfter</stro
39b0: 6e 67 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d  ng> <em>date</em
39c0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
39d0: 65 78 70 69 72 61 74 69 6f 6e 20 64 61 74 65 20  expiration date 
39e0: 66 6f 72 20 74 68 65 20 63 65 72 74 69 66 69 63  for the certific
39f0: 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  ate.</dd>..<dt><
3a00: 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63 74 3c 2f  strong>subject</
3a10: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 6e 3c 2f  strong> <em>dn</
3a20: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3a30: 65 20 64 69 73 74 69 6e 67 75 69 73 68 65 64 20  e distinguished 
3a40: 6e 61 6d 65 20 28 44 4e 29 20 6f 66 20 74 68 65  name (DN) of the
3a50: 20 63 65 72 74 69 66 69 63 61 74 65 20 73 75 62   certificate sub
3a60: 6a 65 63 74 2e 0a 09 20 20 20 20 46 69 65 6c 64  ject...    Field
3a70: 73 20 69 6e 63 6c 75 64 65 3a 20 43 6f 6d 6d 6f  s include: Commo
3a80: 6e 20 4e 61 6d 65 20 28 43 4e 29 2c 20 4f 72 67  n Name (CN), Org
3a90: 61 6e 69 7a 61 74 69 6f 6e 20 28 4f 29 2c 20 4c  anization (O), L
3aa0: 6f 63 61 6c 69 74 79 0a 09 20 20 20 20 6f 72 20  ocality..    or 
3ab0: 43 69 74 79 20 28 4c 29 2c 20 53 74 61 74 65 20  City (L), State 
3ac0: 6f 72 20 50 72 6f 76 69 6e 63 65 20 28 53 29 2c  or Province (S),
3ad0: 20 61 6e 64 20 43 6f 75 6e 74 72 79 20 4e 61 6d   and Country Nam
3ae0: 65 20 28 43 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74  e (C).</dd>..<dt
3af0: 3e 3c 73 74 72 6f 6e 67 3e 69 73 73 75 65 72 55  ><strong>issuerU
3b00: 6e 69 71 75 65 49 44 3c 2f 73 74 72 6f 6e 67 3e  niqueID</strong>
3b10: 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e   <em>string</em>
3b20: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 69  </dt>..<dd>The i
3b30: 73 73 75 65 72 20 75 6e 69 71 75 65 20 69 64 2e  ssuer unique id.
3b40: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
3b50: 6e 67 3e 73 75 62 6a 65 63 74 55 6e 69 71 75 65  ng>subjectUnique
3b60: 49 44 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ID</strong> <em>
3b70: 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e  string</em></dt>
3b80: 0a 09 3c 64 64 3e 54 68 65 20 73 75 62 6a 65 63  ..<dd>The subjec
3b90: 74 20 75 6e 69 71 75 65 20 69 64 2e 3c 2f 64 64  t unique id.</dd
3ba0: 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  >...<dt><strong>
3bb0: 6e 75 6d 5f 65 78 74 65 6e 73 69 6f 6e 73 3c 2f  num_extensions</
3bc0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65  strong> <em>n</e
3bd0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4e 75 6d  m></dt>..<dd>Num
3be0: 62 65 72 20 6f 66 20 63 65 72 74 69 66 69 63 61  ber of certifica
3bf0: 74 65 20 65 78 74 65 6e 73 69 6f 6e 73 2e 3c 2f  te extensions.</
3c00: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3c10: 3e 65 78 74 65 6e 73 69 6f 6e 73 3c 2f 73 74 72  >extensions</str
3c20: 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65  ong> <em>list</e
3c30: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73  m></dt>..<dd>Lis
3c40: 74 20 6f 66 20 63 65 72 74 69 66 69 63 61 74 65  t of certificate
3c50: 20 65 78 74 65 6e 73 69 6f 6e 20 6e 61 6d 65 73   extension names
3c60: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3c70: 6f 6e 67 3e 61 75 74 68 6f 72 69 74 79 4b 65 79  ong>authorityKey
3c80: 49 64 65 6e 74 69 66 69 65 72 3c 2f 73 74 72 6f  Identifier</stro
3c90: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
3ca0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 28 41  em></dt>..<dd>(A
3cb0: 4b 49 29 20 4b 65 79 20 69 64 65 6e 74 69 66 69  KI) Key identifi
3cc0: 65 72 20 6f 66 20 74 68 65 20 49 73 73 75 69 6e  er of the Issuin
3cd0: 67 20 43 41 20 63 65 72 74 69 66 69 63 61 74 65  g CA certificate
3ce0: 20 74 68 61 74 20 73 69 67 6e 65 64 0a 09 20 20   that signed..  
3cf0: 20 20 74 68 65 20 53 53 4c 20 63 65 72 74 69 66    the SSL certif
3d00: 69 63 61 74 65 20 61 73 20 68 65 78 20 73 74 72  icate as hex str
3d10: 69 6e 67 2e 20 54 68 69 73 20 76 61 6c 75 65 20  ing. This value 
3d20: 6d 61 74 63 68 65 73 20 74 68 65 20 53 4b 49 0a  matches the SKI.
3d30: 09 20 20 20 20 76 61 6c 75 65 20 6f 66 20 74 68  .    value of th
3d40: 65 20 49 6e 74 65 72 6d 65 64 69 61 74 65 20 43  e Intermediate C
3d50: 41 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c 2f  A certificate.</
3d60: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3d70: 3e 73 75 62 6a 65 63 74 4b 65 79 49 64 65 6e 74  >subjectKeyIdent
3d80: 69 66 69 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ifier</strong> <
3d90: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
3da0: 64 74 3e 0a 09 3c 64 64 3e 28 53 4b 49 29 20 48  dt>..<dd>(SKI) H
3db0: 61 73 68 20 6f 66 20 74 68 65 20 70 75 62 6c 69  ash of the publi
3dc0: 63 20 6b 65 79 20 69 6e 73 69 64 65 20 74 68 65  c key inside the
3dd0: 20 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20   certificate as 
3de0: 68 65 78 0a 09 20 20 20 73 74 72 69 6e 67 2e 20  hex..   string. 
3df0: 55 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  Used to identify
3e00: 20 63 65 72 74 69 66 69 63 61 74 65 73 20 74 68   certificates th
3e10: 61 74 20 63 6f 6e 74 61 69 6e 20 61 20 70 61 72  at contain a par
3e20: 74 69 63 75 6c 61 72 0a 09 20 20 20 70 75 62 6c  ticular..   publ
3e30: 69 63 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64  ic key.</dd>..<d
3e40: 74 3e 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63  t><strong>subjec
3e50: 74 41 6c 74 4e 61 6d 65 3c 2f 73 74 72 6f 6e 67  tAltName</strong
3e60: 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c  > <em>list</em><
3e70: 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f  /dt>..<dd>List o
3e80: 66 20 61 6c 6c 20 6f 66 20 74 68 65 20 61 6c 74  f all of the alt
3e90: 65 72 6e 61 74 69 76 65 20 64 6f 6d 61 69 6e 20  ernative domain 
3ea0: 6e 61 6d 65 73 2c 20 73 75 62 20 64 6f 6d 61 69  names, sub domai
3eb0: 6e 73 2c 0a 09 20 20 20 20 61 6e 64 20 49 50 20  ns,..    and IP 
3ec0: 61 64 64 72 65 73 73 65 73 20 74 68 61 74 20 61  addresses that a
3ed0: 72 65 20 73 65 63 75 72 65 64 20 62 79 20 74 68  re secured by th
3ee0: 65 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c 2f  e certificate.</
3ef0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3f00: 3e 6f 63 73 70 3c 2f 73 74 72 6f 6e 67 3e 20 3c  >ocsp</strong> <
3f10: 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74  em>list</em></dt
3f20: 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 61  >..<dd>List of a
3f30: 6c 6c 20 4f 6e 6c 69 6e 65 20 43 65 72 74 69 66  ll Online Certif
3f40: 69 63 61 74 65 20 53 74 61 74 75 73 20 50 72 6f  icate Status Pro
3f50: 74 6f 63 6f 6c 20 28 4f 43 53 50 29 20 55 52 4c  tocol (OCSP) URL
3f60: 73 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74 3e 3c 73  s.</dd>...<dt><s
3f70: 74 72 6f 6e 67 3e 63 65 72 74 69 66 69 63 61 74  trong>certificat
3f80: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  e</strong> <em>c
3f90: 65 72 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ert</em></dt>..<
3fa0: 64 64 3e 54 68 65 20 50 45 4d 20 65 6e 63 6f 64  dd>The PEM encod
3fb0: 65 64 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c  ed certificate.<
3fc0: 2f 64 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f  /dd>...<dt><stro
3fd0: 6e 67 3e 73 69 67 6e 61 74 75 72 65 41 6c 67 6f  ng>signatureAlgo
3fe0: 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67 3e 20 3c  rithm</strong> <
3ff0: 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f 65 6d  em>algorithm</em
4000: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 69 70 68  ></dt>..<dd>Ciph
4010: 65 72 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65  er algorithm use
4020: 64 20 66 6f 72 20 63 65 72 74 69 66 69 63 61 74  d for certificat
4030: 65 20 73 69 67 6e 61 74 75 72 65 2e 3c 2f 64 64  e signature.</dd
4040: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
4050: 69 67 6e 61 74 75 72 65 56 61 6c 75 65 3c 2f 73  ignatureValue</s
4060: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e  trong> <em>strin
4070: 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  g</em></dt>..<dd
4080: 3e 43 65 72 74 69 66 69 63 61 74 65 20 73 69 67  >Certificate sig
4090: 6e 61 74 75 72 65 20 61 73 20 68 65 78 20 73 74  nature as hex st
40a0: 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  ring.</dd>..<dt>
40b0: 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72  <strong>signatur
40c0: 65 44 69 67 65 73 74 3c 2f 73 74 72 6f 6e 67 3e  eDigest</strong>
40d0: 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d   <em>version</em
40e0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74  ></dt>..<dd>Cert
40f0: 69 66 69 63 61 74 65 20 73 69 67 6e 69 6e 67 20  ificate signing 
4100: 64 69 67 65 73 74 2e 3c 2f 64 64 3e 0a 09 3c 64  digest.</dd>..<d
4110: 74 3e 3c 73 74 72 6f 6e 67 3e 70 75 62 6c 69 63  t><strong>public
4120: 4b 65 79 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74  KeyAlgorithm</st
4130: 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69  rong> <em>algori
4140: 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  thm</em></dt>..<
4150: 64 64 3e 43 65 72 74 69 66 69 63 61 74 65 20 73  dd>Certificate s
4160: 69 67 6e 61 74 75 72 65 20 70 75 62 6c 69 63 20  ignature public 
4170: 6b 65 79 20 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f  key algorithm.</
4180: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4190: 3e 70 75 62 6c 69 63 4b 65 79 3c 2f 73 74 72 6f  >publicKey</stro
41a0: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
41b0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65  em></dt>..<dd>Ce
41c0: 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 74  rtificate signat
41d0: 75 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20 61  ure public key a
41e0: 73 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64  s hex string.</d
41f0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
4200: 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  bits</strong> <e
4210: 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  m>n</em></dt>..<
4220: 64 64 3e 4e 75 6d 62 65 72 20 6f 66 20 62 69 74  dd>Number of bit
4230: 73 20 75 73 65 64 20 66 6f 72 20 63 65 72 74 69  s used for certi
4240: 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65  ficate signature
4250: 20 6b 65 79 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c   key</dd>..<dt><
4260: 73 74 72 6f 6e 67 3e 73 65 6c 66 5f 73 69 67 6e  strong>self_sign
4270: 65 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ed</strong> <em>
4280: 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74  boolean</em></dt
4290: 3e 0a 09 3c 64 64 3e 49 73 20 63 65 72 74 69 66  >..<dd>Is certif
42a0: 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20  icate signature 
42b0: 73 65 6c 66 20 73 69 67 6e 65 64 2e 3c 2f 64 64  self signed.</dd
42c0: 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  >...<dt><strong>
42d0: 73 68 61 31 5f 68 61 73 68 3c 2f 73 74 72 6f 6e  sha1_hash</stron
42e0: 67 3e 20 3c 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e  g> <em>hash</em>
42f0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 53  </dt>..<dd>The S
4300: 48 41 31 20 68 61 73 68 20 6f 66 20 74 68 65 20  HA1 hash of the 
4310: 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20 68  certificate as h
4320: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
4330: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 68 61  .<dt><strong>sha
4340: 32 35 36 5f 68 61 73 68 3c 2f 73 74 72 6f 6e 67  256_hash</strong
4350: 3e 20 3c 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c  > <em>hash</em><
4360: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 53 48  /dt>..<dd>The SH
4370: 41 32 35 36 20 68 61 73 68 20 6f 66 20 74 68 65  A256 hash of the
4380: 20 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20   certificate as 
4390: 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e  hex string.</dd>
43a0: 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f  .    </dl>.</blo
43b0: 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c 64  ckquote>..    <d
43c0: 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a  t><a name="tls::
43d0: 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 73 74 72  connection"><str
43e0: 6f 6e 67 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74  ong>tls::connect
43f0: 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20 20  ion</strong>.   
4400: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d   <em>channel</em
4410: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
4420: 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20 63  dd>Returns the c
4430: 75 72 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  urrent connectio
4440: 6e 20 73 74 61 74 75 73 20 6f 66 20 61 6e 20 53  n status of an S
4450: 53 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 65 0a  SL channel. The.
4460: 09 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69 73  .result is a lis
4470: 74 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70  t of key-value p
4480: 61 69 72 73 20 64 65 73 63 72 69 62 69 6e 67 20  airs describing 
4490: 74 68 65 0a 09 63 6f 6e 6e 65 63 74 65 64 20 70  the..connected p
44a0: 65 65 72 2e 3c 2f 64 64 3e 0a 3c 62 6c 6f 63 6b  eer.</dd>.<block
44b0: 71 75 6f 74 65 3e 0a 09 3c 62 3e 53 53 4c 20 53  quote>..<b>SSL S
44c0: 74 61 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64  tatus</b>.    <d
44d0: 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  l>..<dt><strong>
44e0: 73 74 61 74 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  state</strong> <
44f0: 65 6d 3e 73 74 61 74 65 3c 2f 65 6d 3e 3c 2f 64  em>state</em></d
4500: 74 3e 0a 09 3c 64 64 3e 53 74 61 74 65 20 6f 66  t>..<dd>State of
4510: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
4520: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
4530: 6e 67 3e 73 65 72 76 65 72 6e 61 6d 65 3c 2f 73  ng>servername</s
4540: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 61 6d 65 3c  trong> <em>name<
4550: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
4560: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63  he name of the c
4570: 6f 6e 6e 65 63 74 65 64 20 74 6f 20 73 65 72 76  onnected to serv
4580: 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  er.</dd>..<dt><s
4590: 74 72 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c 3c 2f  trong>protocol</
45a0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72 73  strong> <em>vers
45b0: 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ion</em></dt>..<
45c0: 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20  dd>The protocol 
45d0: 76 65 72 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  version used for
45e0: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a   the connection:
45f0: 0a 09 20 20 20 20 53 53 4c 32 2c 20 53 53 4c 33  ..    SSL2, SSL3
4600: 2c 20 54 4c 53 31 2c 20 54 4c 53 31 2e 31 2c 20  , TLS1, TLS1.1, 
4610: 54 4c 53 31 2e 32 2c 20 54 4c 53 31 2e 33 2c 20  TLS1.2, TLS1.3, 
4620: 6f 72 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64 64 3e  or unknown.</dd>
4630: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 72 65  ..<dt><strong>re
4640: 6e 65 67 6f 74 69 61 74 69 6f 6e 3c 2f 73 74 72  negotiation</str
4650: 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e  ong> <em>boolean
4660: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4670: 57 68 65 74 68 65 72 20 70 72 6f 74 6f 63 6f 6c  Whether protocol
4680: 20 72 65 6e 65 67 6f 74 69 61 74 69 6f 6e 20 69   renegotiation i
4690: 73 20 73 75 70 70 6f 72 74 65 64 20 6f 72 20 6e  s supported or n
46a0: 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ot.</dd>..<dt><s
46b0: 74 72 6f 6e 67 3e 73 65 63 75 72 69 74 79 6c 65  trong>securityle
46c0: 76 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  vel</strong> <em
46d0: 3e 6c 65 76 65 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e  >level</em></dt>
46e0: 0a 09 3c 64 64 3e 54 68 65 20 73 65 63 75 72 69  ..<dd>The securi
46f0: 74 79 20 6c 65 76 65 6c 20 75 73 65 64 20 66 6f  ty level used fo
4700: 72 20 73 65 6c 65 63 74 69 6f 6e 20 6f 66 20 63  r selection of c
4710: 69 70 68 65 72 73 2c 20 6b 65 79 20 73 69 7a 65  iphers, key size
4720: 2c 20 65 74 63 2e 3c 2f 64 64 3e 0a 09 3c 64 74  , etc.</dd>..<dt
4730: 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e  ><strong>session
4740: 5f 72 65 75 73 65 64 3c 2f 73 74 72 6f 6e 67 3e  _reused</strong>
4750: 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d   <em>boolean</em
4760: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74  ></dt>..<dd>Whet
4770: 68 65 72 20 74 68 65 20 73 65 73 73 69 6f 6e 20  her the session 
4780: 68 61 73 20 62 65 65 6e 20 72 65 75 73 65 64 20  has been reused 
4790: 6f 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64  or not.</dd>..<d
47a0: 74 3e 3c 73 74 72 6f 6e 67 3e 69 73 5f 73 65 72  t><strong>is_ser
47b0: 76 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ver</strong> <em
47c0: 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64  >boolean</em></d
47d0: 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20  t>..<dd>Whether 
47e0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  the connection i
47f0: 73 20 63 6f 6e 66 69 67 75 72 65 64 20 61 73 20  s configured as 
4800: 61 20 73 65 72 76 65 72 20 28 31 29 20 6f 72 20  a server (1) or 
4810: 63 6c 69 65 6e 74 20 28 30 29 2e 3c 2f 64 64 3e  client (0).</dd>
4820: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 6f  ..<dt><strong>co
4830: 6d 70 72 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e  mpression</stron
4840: 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e  g> <em>mode</em>
4850: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 6f 6d 70 72  </dt>..<dd>Compr
4860: 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 2e 3c 2f  ession method.</
4870: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4880: 3e 65 78 70 61 6e 73 69 6f 6e 3c 2f 73 74 72 6f  >expansion</stro
4890: 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d  ng> <em>mode</em
48a0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 78 70 61  ></dt>..<dd>Expa
48b0: 6e 73 69 6f 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64  nsion method.</d
48c0: 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62  d>.    </dl>.</b
48d0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 62 6c 6f 63  lockquote>.<bloc
48e0: 6b 71 75 6f 74 65 3e 0a 09 3c 62 3e 43 69 70 68  kquote>..<b>Ciph
48f0: 65 72 20 49 6e 66 6f 3c 2f 62 3e 0a 20 20 20 20  er Info</b>.    
4900: 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  <dl>..<dt><stron
4910: 67 3e 63 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67  g>cipher</strong
4920: 3e 20 3c 65 6d 3e 63 69 70 68 65 72 3c 2f 65 6d  > <em>cipher</em
4930: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
4940: 63 75 72 72 65 6e 74 20 63 69 70 68 65 72 20 69  current cipher i
4950: 6e 20 75 73 65 20 66 6f 72 20 74 68 65 20 63 6f  n use for the co
4960: 6e 6e 65 63 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 09  nnection.</dd>..
4970: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 6e  <dt><strong>stan
4980: 64 61 72 64 5f 6e 61 6d 65 3c 2f 73 74 72 6f 6e  dard_name</stron
4990: 67 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e  g> <em>name</em>
49a0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73  </dt>..<dd>The s
49b0: 74 61 6e 64 61 72 64 20 52 46 43 20 6e 61 6d 65  tandard RFC name
49c0: 20 6f 66 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e   of cipher.</dd>
49d0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 62 69  ..<dt><strong>bi
49e0: 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ts</strong> <em>
49f0: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  n</em></dt>..<dd
4a00: 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70  >The number of p
4a10: 72 6f 63 65 73 73 65 64 20 62 69 74 73 20 75 73  rocessed bits us
4a20: 65 64 20 66 6f 72 20 63 69 70 68 65 72 2e 3c 2f  ed for cipher.</
4a30: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4a40: 3e 73 65 63 72 65 74 5f 62 69 74 73 3c 2f 73 74  >secret_bits</st
4a50: 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e  rong> <em>n</em>
4a60: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e  </dt>..<dd>The n
4a70: 75 6d 62 65 72 20 6f 66 20 73 65 63 72 65 74 20  umber of secret 
4a80: 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 63 69  bits used for ci
4a90: 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  pher.</dd>..<dt>
4aa0: 3c 73 74 72 6f 6e 67 3e 6d 69 6e 5f 76 65 72 73  <strong>min_vers
4ab0: 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ion</strong> <em
4ac0: 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64  >version</em></d
4ad0: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6d 69 6e 69  t>..<dd>The mini
4ae0: 6d 75 6d 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72  mum protocol ver
4af0: 73 69 6f 6e 20 66 6f 72 20 63 69 70 68 65 72 2e  sion for cipher.
4b00: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
4b10: 6e 67 3e 69 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ng>id</strong> <
4b20: 65 6d 3e 69 64 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  em>id</em></dt>.
4b30: 09 3c 64 64 3e 54 68 65 20 4f 70 65 6e 53 53 4c  .<dd>The OpenSSL
4b40: 20 63 69 70 68 65 72 20 69 64 2e 3c 2f 64 64 3e   cipher id.</dd>
4b50: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 64 65  ..<dt><strong>de
4b60: 73 63 72 69 70 74 69 6f 6e 3c 2f 73 74 72 6f 6e  scription</stron
4b70: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
4b80: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 20 74  m></dt>..<dd>A t
4b90: 65 78 74 20 64 65 73 63 72 69 70 74 69 6f 6e 20  ext description 
4ba0: 6f 66 20 74 68 65 20 63 69 70 68 65 72 2e 3c 2f  of the cipher.</
4bb0: 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f  dd>.    </dl>.</
4bc0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 62 6c 6f  blockquote>.<blo
4bd0: 63 6b 71 75 6f 74 65 3e 0a 09 3c 62 3e 53 65 73  ckquote>..<b>Ses
4be0: 73 69 6f 6e 20 49 6e 66 6f 3c 2f 62 3e 0a 20 20  sion Info</b>.  
4bf0: 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72    <dl>..<dt><str
4c00: 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67  ong>alpn</strong
4c10: 3e 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f  > <em>protocol</
4c20: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
4c30: 65 20 70 72 6f 74 6f 63 6f 6c 20 73 65 6c 65 63  e protocol selec
4c40: 74 65 64 20 61 66 74 65 72 20 41 70 70 6c 69 63  ted after Applic
4c50: 61 74 69 6f 6e 2d 4c 61 79 65 72 20 50 72 6f 74  ation-Layer Prot
4c60: 6f 63 6f 6c 0a 09 20 20 20 20 4e 65 67 6f 74 69  ocol..    Negoti
4c70: 61 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 3c 2f 64  ation (ALPN).</d
4c80: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
4c90: 72 65 73 75 6d 61 62 6c 65 3c 2f 73 74 72 6f 6e  resumable</stron
4ca0: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f  g> <em>boolean</
4cb0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61  em></dt>..<dd>Ca
4cc0: 6e 20 74 68 65 20 73 65 73 73 69 6f 6e 20 62 65  n the session be
4cd0: 20 72 65 73 75 6d 65 64 20 6f 72 20 6e 6f 74 2e   resumed or not.
4ce0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
4cf0: 6e 67 3e 73 74 61 72 74 5f 74 69 6d 65 3c 2f 73  ng>start_time</s
4d00: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f 6e  trong> <em>secon
4d10: 64 73 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ds</em></dt>..<d
4d20: 64 3e 54 69 6d 65 20 73 69 6e 63 65 20 73 65 73  d>Time since ses
4d30: 73 69 6f 6e 20 73 74 61 72 74 65 64 20 69 6e 20  sion started in 
4d40: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 65 70  seconds since ep
4d50: 6f 63 68 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  och.</dd>..<dt><
4d60: 73 74 72 6f 6e 67 3e 74 69 6d 65 6f 75 74 3c 2f  strong>timeout</
4d70: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 65 63 6f  strong> <em>seco
4d80: 6e 64 73 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  nds</em></dt>..<
4d90: 64 64 3e 4d 61 78 20 64 75 72 61 74 69 6f 6e 20  dd>Max duration 
4da0: 6f 66 20 73 65 73 73 69 6f 6e 20 69 6e 20 73 65  of session in se
4db0: 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 69 6d  conds before tim
4dc0: 65 2d 6f 75 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74  e-out.</dd>..<dt
4dd0: 3e 3c 73 74 72 6f 6e 67 3e 6c 69 66 65 74 69 6d  ><strong>lifetim
4de0: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73  e</strong> <em>s
4df0: 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f 64 74 3e  econds</em></dt>
4e00: 0a 09 3c 64 64 3e 53 65 73 73 69 6f 6e 20 74 69  ..<dd>Session ti
4e10: 63 6b 65 74 20 6c 69 66 65 74 69 6d 65 20 68 69  cket lifetime hi
4e20: 6e 74 20 69 6e 20 73 65 63 6f 6e 64 73 2e 3c 2f  nt in seconds.</
4e30: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4e40: 3e 73 65 73 73 69 6f 6e 5f 69 64 3c 2f 73 74 72  >session_id</str
4e50: 6f 6e 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f  ong> <em>binary_
4e60: 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e  string</em></dt>
4e70: 0a 09 3c 64 64 3e 55 6e 69 71 75 65 20 73 65 73  ..<dd>Unique ses
4e80: 73 69 6f 6e 20 69 64 20 66 6f 72 20 75 73 65 20  sion id for use 
4e90: 69 6e 20 72 65 73 75 6d 69 6e 67 20 74 68 65 20  in resuming the 
4ea0: 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c  session.</dd>..<
4eb0: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69  dt><strong>sessi
4ec0: 6f 6e 5f 74 69 63 6b 65 74 3c 2f 73 74 72 6f 6e  on_ticket</stron
4ed0: 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f 73 74  g> <em>binary_st
4ee0: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
4ef0: 3c 64 64 3e 55 6e 69 71 75 65 20 73 65 73 73 69  <dd>Unique sessi
4f00: 6f 6e 20 74 69 63 6b 65 74 20 66 6f 72 20 75 73  on ticket for us
4f10: 65 20 69 6e 20 72 65 73 75 6d 69 6e 67 20 74 68  e in resuming th
4f20: 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a  e session.</dd>.
4f30: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 74 69 63  .<dt><strong>tic
4f40: 6b 65 74 5f 61 70 70 5f 64 61 74 61 3c 2f 73 74  ket_app_data</st
4f50: 72 6f 6e 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79  rong> <em>binary
4f60: 5f 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74  _string</em></dt
4f70: 3e 0a 09 3c 64 64 3e 55 6e 69 71 75 65 20 73 65  >..<dd>Unique se
4f80: 73 73 69 6f 6e 20 74 69 63 6b 65 74 20 61 70 70  ssion ticket app
4f90: 6c 69 63 61 74 69 6f 6e 20 64 61 74 61 2e 3c 2f  lication data.</
4fa0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4fb0: 3e 6d 61 73 74 65 72 5f 6b 65 79 3c 2f 73 74 72  >master_key</str
4fc0: 6f 6e 67 3e 20 3c 65 6d 3e 62 69 6e 61 72 79 5f  ong> <em>binary_
4fd0: 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e  string</em></dt>
4fe0: 0a 09 3c 64 64 3e 55 6e 69 71 75 65 20 73 65 73  ..<dd>Unique ses
4ff0: 73 69 6f 6e 20 6d 61 73 74 65 72 20 6b 65 79 2e  sion master key.
5000: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
5010: 6e 67 3e 73 65 73 73 69 6f 6e 5f 63 61 63 68 65  ng>session_cache
5020: 5f 6d 6f 64 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _mode</strong> <
5030: 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74  em>mode</em></dt
5040: 3e 0a 09 3c 64 64 3e 53 65 72 76 65 72 20 63 61  >..<dd>Server ca
5050: 63 68 65 20 6d 6f 64 65 20 28 63 6c 69 65 6e 74  che mode (client
5060: 2c 20 73 65 72 76 65 72 2c 20 6f 72 20 62 6f 74  , server, or bot
5070: 68 29 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64  h).</dd>.    </d
5080: 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  l>.</blockquote>
5090: 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d  ..    <dt><a nam
50a0: 65 3d 22 74 6c 73 3a 3a 63 69 70 68 65 72 22 3e  e="tls::cipher">
50b0: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 69 70  <strong>tls::cip
50c0: 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  her</strong> <em
50d0: 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f  >name</em></a></
50e0: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75  dt>.    <dd>Retu
50f0: 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f  rn a list of pro
5100: 70 65 72 74 79 20 6e 61 6d 65 73 20 61 6e 64 20  perty names and 
5110: 76 61 6c 75 65 73 20 64 65 73 63 72 69 62 69 6e  values describin
5120: 67 20 63 69 70 68 65 72 0a 09 3c 69 3e 6e 61 6d  g cipher..<i>nam
5130: 65 3c 2f 69 3e 2e 20 50 72 6f 70 65 72 74 69 65  e</i>. Propertie
5140: 73 20 69 6e 63 6c 75 64 65 20 6e 61 6d 65 2c 20  s include name, 
5150: 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 62 6c 6f  description, blo
5160: 63 6b 5f 73 69 7a 65 2c 0a 09 6b 65 79 5f 6c 65  ck_size,..key_le
5170: 6e 67 74 68 2c 20 69 76 5f 6c 65 6e 67 74 68 2c  ngth, iv_length,
5180: 20 74 79 70 65 2c 20 61 6e 64 20 6d 6f 64 65 20   type, and mode 
5190: 6c 69 73 74 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20  list.</dd>..    
51a0: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73  <dt><a name="tls
51b0: 3a 3a 63 69 70 68 65 72 73 22 3e 3c 73 74 72 6f  ::ciphers"><stro
51c0: 6e 67 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73 3c  ng>tls::ciphers<
51d0: 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20 3c 65 6d  /strong>.    <em
51e0: 3e 3f 70 72 6f 74 6f 63 6f 6c 3f 20 3f 76 65 72  >?protocol? ?ver
51f0: 62 6f 73 65 3f 20 3f 73 75 70 70 6f 72 74 65 64  bose? ?supported
5200: 3f 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a  ?</em></a></dt>.
5210: 20 20 20 20 3c 64 64 3e 57 69 74 68 6f 75 74 20      <dd>Without 
5220: 61 6e 79 20 61 72 67 73 2c 20 72 65 74 75 72 6e  any args, return
5230: 73 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20  s a list of all 
5240: 63 69 70 68 65 72 73 2e 20 57 69 74 68 20 3c 65  ciphers. With <e
5250: 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 2c  m>protocol</em>,
5260: 0a 09 6f 6e 6c 79 20 74 68 65 20 63 69 70 68 65  ..only the ciphe
5270: 72 73 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72  rs supported for
5280: 20 74 68 61 74 20 70 72 6f 74 6f 63 6f 6c 20 61   that protocol a
5290: 72 65 20 72 65 74 75 72 6e 65 64 2e 20 53 65 65  re returned. See
52a0: 0a 09 3c 62 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63  ..<b>tls::protoc
52b0: 6f 6c 73 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 20  ols</b> command 
52c0: 66 6f 72 20 74 68 65 20 73 75 70 70 6f 72 74 65  for the supporte
52d0: 64 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 49 66 0a  d protocols. If.
52e0: 09 3c 65 6d 3e 76 65 72 62 6f 73 65 3c 2f 65 6d  .<em>verbose</em
52f0: 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61  > is specified a
5300: 73 20 74 72 75 65 20 74 68 65 6e 20 61 20 76 65  s true then a ve
5310: 72 62 6f 73 65 2c 20 68 75 6d 61 6e 20 72 65 61  rbose, human rea
5320: 64 61 62 6c 65 0a 09 6c 69 73 74 20 69 73 20 72  dable..list is r
5330: 65 74 75 72 6e 65 64 20 77 69 74 68 20 61 64 64  eturned with add
5340: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
5350: 69 6f 6e 20 6f 6e 20 74 68 65 20 63 69 70 68 65  ion on the ciphe
5360: 72 2e 20 49 66 0a 09 3c 65 6d 3e 73 75 70 70 6f  r. If..<em>suppo
5370: 72 74 65 64 3c 2f 65 6d 3e 20 69 73 20 73 70 65  rted</em> is spe
5380: 63 69 66 69 65 64 20 61 73 20 74 72 75 65 2c 20  cified as true, 
5390: 74 68 65 6e 20 6f 6e 6c 79 20 74 68 65 20 63 69  then only the ci
53a0: 70 68 65 72 73 0a 09 73 75 70 70 6f 72 74 65 64  phers..supported
53b0: 20 66 6f 72 20 70 72 6f 74 6f 63 6f 6c 20 77 69   for protocol wi
53c0: 6c 6c 20 62 65 20 6c 69 73 74 65 64 2e 3c 2f 64  ll be listed.</d
53d0: 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  d>..    <dt><a n
53e0: 61 6d 65 3d 22 74 6c 73 3a 3a 64 69 67 65 73 74  ame="tls::digest
53f0: 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  s"><strong>tls::
5400: 64 69 67 65 73 74 73 3c 2f 73 74 72 6f 6e 67 3e  digests</strong>
5410: 20 3c 65 6d 3e 3f 6e 61 6d 65 3f 3c 2f 65 6d 3e   <em>?name?</em>
5420: 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64  </a></dt>.    <d
5430: 64 3e 57 69 74 68 6f 75 74 20 3c 65 6d 3e 6e 61  d>Without <em>na
5440: 6d 65 3c 2f 65 6d 3e 2c 20 72 65 74 75 72 6e 73  me</em>, returns
5450: 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 73   a list of the s
5460: 75 70 70 6f 72 74 65 64 20 68 61 73 68 20 61 6c  upported hash al
5470: 67 6f 72 69 74 68 6d 73 0a 09 66 6f 72 20 3c 62  gorithms..for <b
5480: 3e 74 6c 73 3a 3a 64 69 67 65 73 74 3c 2f 62 3e  >tls::digest</b>
5490: 20 63 6f 6d 6d 61 6e 64 2e 20 57 69 74 68 20 3c   command. With <
54a0: 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 2c 20 72 65  em>name</em>, re
54b0: 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 0a  turns a list of.
54c0: 09 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 73 20  .property names 
54d0: 61 6e 64 20 76 61 6c 75 65 73 20 64 65 73 63 72  and values descr
54e0: 69 62 69 6e 67 20 64 69 67 65 73 74 20 3c 69 3e  ibing digest <i>
54f0: 6e 61 6d 65 3c 2f 69 3e 2e 20 50 72 6f 70 65 72  name</i>. Proper
5500: 74 69 65 73 0a 09 69 6e 63 6c 75 64 65 20 6e 61  ties..include na
5510: 6d 65 2c 20 64 65 73 63 72 69 70 74 69 6f 6e 2c  me, description,
5520: 20 73 69 7a 65 2c 20 62 6c 6f 63 6b 5f 73 69 7a   size, block_siz
5530: 65 2c 20 74 79 70 65 2c 20 61 6e 64 20 66 6c 61  e, type, and fla
5540: 67 73 20 6c 69 73 74 2e 3c 2f 64 64 3e 0a 0a 20  gs list.</dd>.. 
5550: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
5560: 74 6c 73 3a 3a 6d 61 63 73 22 3e 3c 73 74 72 6f  tls::macs"><stro
5570: 6e 67 3e 74 6c 73 3a 3a 6d 61 63 73 3c 2f 73 74  ng>tls::macs</st
5580: 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  rong></a></dt>. 
5590: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 61     <dd>Returns a
55a0: 20 6c 69 73 74 20 6f 66 20 74 68 65 20 61 76 61   list of the ava
55b0: 69 6c 61 62 6c 65 20 4d 65 73 73 61 67 65 20 41  ilable Message A
55c0: 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 43 6f  uthentication Co
55d0: 64 65 73 20 28 4d 41 43 29 20 66 6f 72 0a 09 74  des (MAC) for..t
55e0: 68 65 20 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73  he <b>tls::diges
55f0: 74 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 2e 3c 2f  t</b> command.</
5600: 64 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20  dd>..    <dt><a 
5610: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 70 72 6f 74 6f  name="tls::proto
5620: 63 6f 6c 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  cols"><strong>tl
5630: 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 73 74  s::protocols</st
5640: 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  rong></a></dt>. 
5650: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 61     <dd>Returns a
5660: 20 6c 69 73 74 20 6f 66 20 73 75 70 70 6f 72 74   list of support
5670: 65 64 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 56 61  ed protocols. Va
5680: 6c 69 64 20 76 61 6c 75 65 73 20 61 72 65 3a 0a  lid values are:.
5690: 09 3c 62 3e 73 73 6c 32 3c 2f 62 3e 2c 20 3c 62  .<b>ssl2</b>, <b
56a0: 3e 73 73 6c 33 3c 2f 62 3e 2c 20 3c 62 3e 74 6c  >ssl3</b>, <b>tl
56b0: 73 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e  s1</b>, <b>tls1.
56c0: 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e 32  1</b>, <b>tls1.2
56d0: 3c 2f 62 3e 2c 0a 09 61 6e 64 20 3c 62 3e 74 6c  </b>,..and <b>tl
56e0: 73 31 2e 33 3c 2f 62 3e 2e 20 45 78 61 63 74 20  s1.3</b>. Exact 
56f0: 6c 69 73 74 20 64 65 70 65 6e 64 73 20 6f 6e 20  list depends on 
5700: 4f 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20  OpenSSL version 
5710: 61 6e 64 0a 09 63 6f 6d 70 69 6c 65 20 74 69 6d  and..compile tim
5720: 65 20 66 6c 61 67 73 2e 3c 2f 64 64 3e 0a 0a 20  e flags.</dd>.. 
5730: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
5740: 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 22 3e 3c 73  tls::version"><s
5750: 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76 65 72 73 69  trong>tls::versi
5760: 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c  on</strong></a><
5770: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74  /dt>.    <dd>Ret
5780: 75 72 6e 73 20 74 68 65 20 4f 70 65 6e 53 53 4c  urns the OpenSSL
5790: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 2e   version string.
57a0: 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 62 72 3e 0a  </dd>..    <br>.
57b0: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
57c0: 22 74 6c 73 3a 3a 64 69 67 65 73 74 22 3e 3c 73  "tls::digest"><s
57d0: 74 72 6f 6e 67 3e 74 6c 73 3a 3a 64 69 67 65 73  trong>tls::diges
57e0: 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 62 3e 2d 64  t</strong> <b>-d
57f0: 69 67 65 73 74 3c 2f 62 3e 0a 09 3c 65 6d 3e 6e  igest</b>..<em>n
5800: 61 6d 65 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20  ame ?-bin|-hex? 
5810: 5b 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20  [-file filename 
5820: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61  | -command cmdNa
5830: 6d 65 20 7c 0a 09 2d 63 68 61 6e 20 63 68 61 6e  me |..-chan chan
5840: 6e 65 6c 49 64 20 7c 20 2d 64 61 74 61 20 64 61  nelId | -data da
5850: 74 61 5d 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74  ta]</em></a></dt
5860: 3e 0a 20 20 20 20 3c 64 64 3e 43 61 6c 63 75 6c  >.    <dd>Calcul
5870: 61 74 65 20 74 68 65 20 6d 65 73 73 61 67 65 20  ate the message 
5880: 64 69 67 65 73 74 20 66 6f 72 20 64 61 74 61 20  digest for data 
5890: 75 73 69 6e 67 20 3c 65 6d 3e 64 69 67 65 73 74  using <em>digest
58a0: 3c 2f 65 6d 3e 20 68 61 73 68 0a 09 66 75 6e 63  </em> hash..func
58b0: 74 69 6f 6e 2e 20 52 65 74 75 72 6e 73 20 76 61  tion. Returns va
58c0: 6c 75 65 20 61 73 20 61 20 68 65 78 20 73 74 72  lue as a hex str
58d0: 69 6e 67 20 28 64 65 66 61 75 6c 74 29 20 6f 72  ing (default) or
58e0: 20 61 73 20 61 20 62 69 6e 61 72 79 20 76 61 6c   as a binary val
58f0: 75 65 0a 09 77 69 74 68 20 3c 62 3e 2d 62 69 6e  ue..with <b>-bin
5900: 3c 2f 62 3e 20 6f 72 20 3c 62 3e 2d 62 69 6e 61  </b> or <b>-bina
5910: 72 79 3c 2f 62 3e 20 6f 70 74 69 6f 6e 2e 20 44  ry</b> option. D
5920: 69 67 65 73 74 20 63 61 6e 20 62 65 20 61 6e 79  igest can be any
5930: 20 4f 70 65 6e 53 53 4c 0a 09 73 75 70 70 6f 72   OpenSSL..suppor
5940: 74 65 64 20 68 61 73 68 20 66 75 6e 63 74 69 6f  ted hash functio
5950: 6e 20 69 6e 63 6c 75 64 69 6e 67 3a 20 3c 62 3e  n including: <b>
5960: 6d 64 34 3c 2f 62 3e 2c 20 3c 62 3e 6d 64 35 3c  md4</b>, <b>md5<
5970: 2f 62 3e 2c 20 3c 62 3e 73 68 61 31 3c 2f 62 3e  /b>, <b>sha1</b>
5980: 2c 0a 09 3c 62 3e 73 68 61 32 35 36 3c 2f 62 3e  ,..<b>sha256</b>
5990: 2c 20 3c 62 3e 73 68 61 35 31 32 3c 2f 62 3e 2c  , <b>sha512</b>,
59a0: 20 3c 62 3e 73 68 61 33 2d 32 35 36 3c 2f 62 3e   <b>sha3-256</b>
59b0: 2c 20 65 74 63 2e 20 53 65 65 0a 09 3c 62 3e 74  , etc. See..<b>t
59c0: 6c 73 3a 3a 64 69 67 65 73 74 73 3c 2f 62 3e 20  ls::digests</b> 
59d0: 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 61 20 66 75  command for a fu
59e0: 6c 6c 20 6c 69 73 74 2e 0a 09 3c 62 72 3e 0a 09  ll list...<br>..
59f0: 55 73 69 6e 67 20 74 68 65 20 3c 62 3e 2d 64 61  Using the <b>-da
5a00: 74 61 3c 2f 62 3e 20 6f 70 74 69 6f 6e 20 77 69  ta</b> option wi
5a10: 6c 6c 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 72  ll immediately r
5a20: 65 74 75 72 6e 20 74 68 65 20 6d 65 73 73 61 67  eturn the messag
5a30: 65 0a 09 64 69 67 65 73 74 20 66 6f 72 20 3c 65  e..digest for <e
5a40: 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20 69 6e 20 74  m>data</em> in t
5a50: 68 65 20 73 70 65 63 69 66 69 65 64 20 66 6f 72  he specified for
5a60: 6d 61 74 2e 0a 09 3c 62 72 3e 0a 09 55 73 69 6e  mat...<br>..Usin
5a70: 67 20 74 68 65 20 3c 62 3e 2d 66 69 6c 65 3c 2f  g the <b>-file</
5a80: 62 3e 20 6f 72 20 3c 62 3e 2d 66 69 6c 65 6e 61  b> or <b>-filena
5a90: 6d 65 3c 2f 62 3e 20 6f 70 74 69 6f 6e 20 77 69  me</b> option wi
5aa0: 6c 6c 20 6f 70 65 6e 20 66 69 6c 65 0a 09 3c 65  ll open file..<e
5ab0: 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 2c  m>filename</em>,
5ac0: 20 72 65 61 64 20 74 68 65 20 66 69 6c 65 20 64   read the file d
5ad0: 61 74 61 2c 20 63 6c 6f 73 65 20 74 68 65 20 66  ata, close the f
5ae0: 69 6c 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 20  ile, and return 
5af0: 74 68 65 0a 09 6d 65 73 73 61 67 65 20 64 69 67  the..message dig
5b00: 65 73 74 20 69 6e 20 74 68 65 20 73 70 65 63 69  est in the speci
5b10: 66 69 65 64 20 66 6f 72 6d 61 74 2e 20 54 68 69  fied format. Thi
5b20: 73 20 75 73 65 73 20 74 68 65 20 54 43 4c 20 41  s uses the TCL A
5b30: 50 49 73 2c 20 73 6f 20 56 46 53 0a 09 66 69 6c  PIs, so VFS..fil
5b40: 65 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64  es are supported
5b50: 2e 0a 09 3c 62 72 3e 0a 09 55 73 69 6e 67 20 74  ...<br>..Using t
5b60: 68 65 20 3c 62 3e 2d 63 68 61 6e 3c 2f 62 3e 20  he <b>-chan</b> 
5b70: 6f 72 20 3c 62 3e 2d 63 68 61 6e 6e 65 6c 3c 2f  or <b>-channel</
5b80: 62 3e 20 6f 70 74 69 6f 6e 2c 20 61 20 73 74 61  b> option, a sta
5b90: 63 6b 65 64 20 63 68 61 6e 6e 65 6c 20 69 73 0a  cked channel is.
5ba0: 09 63 72 65 61 74 65 64 20 66 6f 72 20 3c 65 6d  .created for <em
5bb0: 3e 63 68 61 6e 6e 65 6c 49 64 3c 2f 65 6d 3e 20  >channelId</em> 
5bc0: 61 6e 64 20 64 61 74 61 20 72 65 61 64 20 66 72  and data read fr
5bd0: 6f 6d 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 69  om the channel i
5be0: 73 20 75 73 65 64 0a 09 74 6f 20 63 61 6c 63 75  s used..to calcu
5bf0: 6c 61 74 65 20 61 20 6d 65 73 73 61 67 65 20 64  late a message d
5c00: 69 67 65 73 74 20 77 69 74 68 20 74 68 65 20 72  igest with the r
5c10: 65 73 75 6c 74 20 72 65 74 75 72 6e 65 64 20 77  esult returned w
5c20: 69 74 68 20 74 68 65 20 6c 61 73 74 0a 09 72 65  ith the last..re
5c30: 61 64 20 6f 70 65 72 61 74 69 6f 6e 20 62 65 66  ad operation bef
5c40: 6f 72 65 20 45 4f 46 2e 20 43 68 61 6e 6e 65 6c  ore EOF. Channel
5c50: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
5c60: 79 20 73 65 74 20 74 6f 20 62 69 6e 61 72 79 20  y set to binary 
5c70: 6d 6f 64 65 2e 0a 09 3c 62 72 3e 0a 09 55 73 69  mode...<br>..Usi
5c80: 6e 67 20 74 68 65 20 3c 62 3e 2d 63 6f 6d 6d 61  ng the <b>-comma
5c90: 6e 64 3c 2f 62 3e 20 6f 70 74 69 6f 6e 2c 20 61  nd</b> option, a
5ca0: 20 6e 65 77 20 63 6f 6d 6d 61 6e 64 20 3c 65 6d   new command <em
5cb0: 3e 63 6d 64 4e 61 6d 65 3c 2f 65 6d 3e 20 69 73  >cmdName</em> is
5cc0: 0a 09 63 72 65 61 74 65 64 20 61 6e 64 20 72 65  ..created and re
5cd0: 74 75 72 6e 65 64 2e 20 54 6f 20 61 64 64 20 64  turned. To add d
5ce0: 61 74 61 20 74 6f 20 74 68 65 20 68 61 73 68 20  ata to the hash 
5cf0: 66 75 6e 63 74 69 6f 6e 2c 20 63 61 6c 6c 0a 09  function, call..
5d00: 26 71 75 6f 74 3b 3c 65 6d 3e 63 6d 64 4e 61 6d  &quot;<em>cmdNam
5d10: 65 3c 2f 65 6d 3e 20 3c 62 3e 75 70 64 61 74 65  e</em> <b>update
5d20: 3c 2f 62 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65  </b> <em>data</e
5d30: 6d 3e 26 71 75 6f 74 3b 2c 20 77 68 65 72 65 20  m>&quot;, where 
5d40: 64 61 74 61 20 69 73 0a 09 74 68 65 20 64 61 74  data is..the dat
5d50: 61 20 74 6f 20 61 64 64 2e 20 57 68 65 6e 20 64  a to add. When d
5d60: 6f 6e 65 2c 20 63 61 6c 6c 20 26 71 75 6f 74 3b  one, call &quot;
5d70: 3c 65 6d 3e 63 6d 64 4e 61 6d 65 3c 2f 65 6d 3e  <em>cmdName</em>
5d80: 20 3c 62 3e 66 69 6e 61 6c 69 7a 65 3c 2f 62 3e   <b>finalize</b>
5d90: 26 71 75 6f 74 3b 0a 09 74 6f 20 72 65 74 75 72  &quot;..to retur
5da0: 6e 20 74 68 65 20 6d 65 73 73 61 67 65 20 64 69  n the message di
5db0: 67 65 73 74 2e 0a 09 3c 2f 64 64 3e 0a 0a 20 20  gest...</dd>..  
5dc0: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
5dd0: 6c 73 3a 3a 63 6d 61 63 22 3e 3c 73 74 72 6f 6e  ls::cmac"><stron
5de0: 67 3e 74 6c 73 3a 3a 63 6d 61 63 3c 2f 73 74 72  g>tls::cmac</str
5df0: 6f 6e 67 3e 20 3c 62 3e 2d 63 69 70 68 65 72 3c  ong> <b>-cipher<
5e00: 2f 62 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d  /b> <em>name</em
5e10: 3e 0a 09 3c 62 3e 2d 6b 65 79 3c 2f 62 3e 20 3c  >..<b>-key</b> <
5e20: 65 6d 3e 6b 65 79 20 3f 2d 62 69 6e 7c 2d 68 65  em>key ?-bin|-he
5e30: 78 3f 20 5b 2d 66 69 6c 65 20 66 69 6c 65 6e 61  x? [-file filena
5e40: 6d 65 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d  me | -command cm
5e50: 64 4e 61 6d 65 20 7c 0a 09 2d 63 68 61 6e 20 63  dName |..-chan c
5e60: 68 61 6e 6e 65 6c 49 64 20 7c 20 2d 64 61 74 61  hannelId | -data
5e70: 20 64 61 74 61 5d 3c 2f 65 6d 3e 3c 2f 61 3e 3c   data]</em></a><
5e80: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 43 61 6c  /dt>.    <dd>Cal
5e90: 63 75 6c 61 74 65 20 74 68 65 20 43 69 70 68 65  culate the Ciphe
5ea0: 72 2d 62 61 73 65 64 20 4d 65 73 73 61 67 65 20  r-based Message 
5eb0: 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 43  Authentication C
5ec0: 6f 64 65 20 28 43 4d 41 43 29 2e 20 53 61 6d 65  ode (CMAC). Same
5ed0: 20 61 72 67 75 6d 65 6e 74 73 0a 09 61 73 20 3c   arguments..as <
5ee0: 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74 3c 2f 62  b>tls::digest</b
5ef0: 3e 20 77 69 74 68 20 61 64 64 69 74 69 6f 6e 61  > with additiona
5f00: 6c 20 6f 70 74 69 6f 6e 20 3c 62 3e 2d 63 69 70  l option <b>-cip
5f10: 68 65 72 3c 2f 62 3e 20 74 6f 20 73 70 65 63 69  her</b> to speci
5f20: 66 79 20 74 68 65 0a 09 63 69 70 68 65 72 20 74  fy the..cipher t
5f30: 6f 20 75 73 65 20 61 6e 64 20 66 6f 72 20 63 65  o use and for ce
5f40: 72 74 61 69 6e 20 63 69 70 68 65 72 73 2c 20 3c  rtain ciphers, <
5f50: 62 3e 2d 6b 65 79 3c 2f 62 3e 20 74 6f 20 73 70  b>-key</b> to sp
5f60: 65 63 69 66 79 20 74 68 65 20 6b 65 79 2e 3c 2f  ecify the key.</
5f70: 64 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20  dd>..    <dt><a 
5f80: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 68 6d 61 63 22  name="tls::hmac"
5f90: 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 68 6d  ><strong>tls::hm
5fa0: 61 63 3c 2f 73 74 72 6f 6e 67 3e 20 3c 62 3e 2d  ac</strong> <b>-
5fb0: 64 69 67 65 73 74 3c 2f 62 3e 20 3c 65 6d 3e 6e  digest</b> <em>n
5fc0: 61 6d 65 3c 2f 65 6d 3e 0a 09 3c 62 3e 2d 6b 65  ame</em>..<b>-ke
5fd0: 79 3c 2f 62 3e 20 3c 65 6d 3e 6b 65 79 20 3f 2d  y</b> <em>key ?-
5fe0: 62 69 6e 7c 2d 68 65 78 3f 20 5b 2d 66 69 6c 65  bin|-hex? [-file
5ff0: 20 66 69 6c 65 6e 61 6d 65 20 7c 20 2d 63 6f 6d   filename | -com
6000: 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 0a 09  mand cmdName |..
6010: 2d 63 68 61 6e 20 63 68 61 6e 6e 65 6c 49 64 20  -chan channelId 
6020: 7c 20 2d 64 61 74 61 20 64 61 74 61 5d 3c 2f 65  | -data data]</e
6030: 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20  m></a></dt>.    
6040: 3c 64 64 3e 43 61 6c 63 75 6c 61 74 65 20 74 68  <dd>Calculate th
6050: 65 20 48 61 73 68 65 64 20 4d 65 73 73 61 67 65  e Hashed Message
6060: 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20   Authentication 
6070: 43 6f 64 65 20 28 48 4d 41 43 29 2e 20 53 61 6d  Code (HMAC). Sam
6080: 65 20 61 72 67 75 6d 65 6e 74 73 0a 09 61 73 20  e arguments..as 
6090: 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74 3c 2f  <b>tls::digest</
60a0: 62 3e 20 77 69 74 68 20 61 64 64 69 74 69 6f 6e  b> with addition
60b0: 61 6c 20 6f 70 74 69 6f 6e 20 3c 62 3e 2d 6b 65  al option <b>-ke
60c0: 79 3c 2f 62 3e 20 74 6f 20 73 70 65 63 69 66 79  y</b> to specify
60d0: 20 74 68 65 0a 09 6b 65 79 20 74 6f 20 75 73 65   the..key to use
60e0: 2e 20 54 6f 20 73 61 6c 74 20 61 20 70 61 73 73  . To salt a pass
60f0: 77 6f 72 64 2c 20 61 70 70 65 6e 64 20 6f 72 20  word, append or 
6100: 70 72 65 70 65 6e 64 20 74 68 65 20 73 61 6c 74  prepend the salt
6110: 0a 09 64 61 74 61 20 74 6f 20 74 68 65 20 70 61  ..data to the pa
6120: 73 73 77 6f 72 64 2e 20 3c 2f 64 64 3e 0a 0a 20  ssword. </dd>.. 
6130: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
6140: 74 6c 73 3a 3a 6d 64 34 22 3e 3c 73 74 72 6f 6e  tls::md4"><stron
6150: 67 3e 74 6c 73 3a 3a 6d 64 34 3c 2f 73 74 72 6f  g>tls::md4</stro
6160: 6e 67 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d  ng> <em>data</em
6170: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
6180: 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20 4d  dd>Returns the M
6190: 44 34 20 6d 65 73 73 61 67 65 2d 64 69 67 65 73  D4 message-diges
61a0: 74 20 66 6f 72 20 3c 65 6d 3e 64 61 74 61 3c 2f  t for <em>data</
61b0: 65 6d 3e 20 61 73 20 61 20 68 65 78 20 73 74 72  em> as a hex str
61c0: 69 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c  ing.</dd>..    <
61d0: 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a  dt><a name="tls:
61e0: 3a 6d 64 35 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  :md5"><strong>tl
61f0: 73 3a 3a 6d 64 35 3c 2f 73 74 72 6f 6e 67 3e 20  s::md5</strong> 
6200: 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c 2f 61  <em>data</em></a
6210: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52  ></dt>.    <dd>R
6220: 65 74 75 72 6e 73 20 74 68 65 20 4d 44 35 20 6d  eturns the MD5 m
6230: 65 73 73 61 67 65 2d 64 69 67 65 73 74 20 66 6f  essage-digest fo
6240: 72 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20  r <em>data</em> 
6250: 61 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e  as a hex string.
6260: 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c  </dd>..    <dt><
6270: 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73 68 61  a name="tls::sha
6280: 31 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  1"><strong>tls::
6290: 73 68 61 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  sha1</strong> <e
62a0: 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c 2f 61 3e 3c  m>data</em></a><
62b0: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74  /dt>.    <dd>Ret
62c0: 75 72 6e 73 20 74 68 65 20 53 48 41 31 20 73 65  urns the SHA1 se
62d0: 63 75 72 65 20 68 61 73 68 20 61 6c 67 6f 72 69  cure hash algori
62e0: 74 68 6d 20 64 69 67 65 73 74 20 66 6f 72 20 3c  thm digest for <
62f0: 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20 61 73 20  em>data</em> as 
6300: 61 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64  a hex string.</d
6310: 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  d>..    <dt><a n
6320: 61 6d 65 3d 22 74 6c 73 3a 3a 73 68 61 32 35 36  ame="tls::sha256
6330: 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73  "><strong>tls::s
6340: 68 61 32 35 36 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ha256</strong> <
6350: 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c 2f 61 3e  em>data</em></a>
6360: 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65  </dt>.    <dd>Re
6370: 74 75 72 6e 73 20 74 68 65 20 53 48 41 2d 32 20  turns the SHA-2 
6380: 53 48 41 32 35 36 20 73 65 63 75 72 65 20 68 61  SHA256 secure ha
6390: 73 68 20 61 6c 67 6f 72 69 74 68 6d 20 64 69 67  sh algorithm dig
63a0: 65 73 74 20 66 6f 72 20 3c 65 6d 3e 64 61 74 61  est for <em>data
63b0: 3c 2f 65 6d 3e 20 61 73 20 61 20 68 65 78 20 73  </em> as a hex s
63c0: 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20 20  tring.</dd>..   
63d0: 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c   <dt><a name="tl
63e0: 73 3a 3a 73 68 61 35 31 32 22 3e 3c 73 74 72 6f  s::sha512"><stro
63f0: 6e 67 3e 74 6c 73 3a 3a 73 68 61 35 31 32 3c 2f  ng>tls::sha512</
6400: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74 61  strong> <em>data
6410: 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  </em></a></dt>. 
6420: 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 74     <dd>Returns t
6430: 68 65 20 53 48 41 2d 32 20 53 48 41 35 31 32 20  he SHA-2 SHA512 
6440: 73 65 63 75 72 65 20 68 61 73 68 20 61 6c 67 6f  secure hash algo
6450: 72 69 74 68 6d 20 64 69 67 65 73 74 20 66 6f 72  rithm digest for
6460: 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20 61   <em>data</em> a
6470: 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e 3c  s a hex string.<
6480: 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 68 33 3e  /dd>.</dl>..<h3>
6490: 3c 61 20 6e 61 6d 65 3d 22 43 41 4c 4c 42 41 43  <a name="CALLBAC
64a0: 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42  K OPTIONS">CALLB
64b0: 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 3c  ACK OPTIONS</a><
64c0: 2f 68 33 3e 0a 0a 3c 70 3e 0a 41 73 20 69 6e 64  /h3>..<p>.As ind
64d0: 69 63 61 74 65 64 20 61 62 6f 76 65 2c 20 69 6e  icated above, in
64e0: 64 69 76 69 64 75 61 6c 20 63 68 61 6e 6e 65 6c  dividual channel
64f0: 73 20 63 61 6e 20 62 65 20 67 69 76 65 6e 20 74  s can be given t
6500: 68 65 69 72 20 6f 77 6e 20 63 61 6c 6c 62 61 63  heir own callbac
6510: 6b 73 0a 74 6f 20 68 61 6e 64 6c 65 20 69 6e 74  ks.to handle int
6520: 65 72 6d 65 64 69 61 74 65 20 70 72 6f 63 65 73  ermediate proces
6530: 73 69 6e 67 20 62 79 20 74 68 65 20 4f 70 65 6e  sing by the Open
6540: 53 53 4c 20 6c 69 62 72 61 72 79 2c 20 75 73 69  SSL library, usi
6550: 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d  ng the.<strong>-
6560: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
6570: 2c 20 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77  , <strong>-passw
6580: 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e  ord</strong>, an
6590: 64 0a 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64  d.<strong>-valid
65a0: 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  ate_command</str
65b0: 6f 6e 67 3e 20 6f 70 74 69 6f 6e 73 20 70 61 73  ong> options pas
65c0: 73 65 64 20 74 6f 20 65 69 74 68 65 72 20 6f 66  sed to either of
65d0: 0a 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f  .<strong>tls::so
65e0: 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 6f 72  cket</strong> or
65f0: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 69 6d   <strong>tls::im
6600: 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e 2e 0a 49  port</strong>..I
6610: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 67  f the callback g
6620: 65 6e 65 72 61 74 65 73 20 61 6e 20 65 72 72 6f  enerates an erro
6630: 72 2c 20 74 68 65 20 3c 62 3e 62 67 65 72 72 6f  r, the <b>bgerro
6640: 72 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 20 77 69  r</b> command wi
6650: 74 68 20 62 65 0a 69 6e 76 6f 6b 65 64 20 77 69  th be.invoked wi
6660: 74 68 20 74 68 65 20 65 72 72 6f 72 20 69 6e 66  th the error inf
6670: 6f 72 6d 61 74 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a  ormation..</p>..
6680: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 64 6c  <blockquote>.<dl
6690: 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 73 74 72 6f  >..    <dt><stro
66a0: 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  ng>-command</str
66b0: 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63  ong> <em>callbac
66c0: 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20  k</em></dt>.    
66d0: 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65 73 20 74 68  <dd>..Invokes th
66e0: 65 20 73 70 65 63 69 66 69 65 64 20 3c 65 6d 3e  e specified <em>
66f0: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 20 73 63  callback</em> sc
6700: 72 69 70 74 20 61 74 20 73 65 76 65 72 61 6c 20  ript at several 
6710: 70 6f 69 6e 74 73 0a 09 64 75 72 69 6e 67 20 74  points..during t
6720: 68 65 20 4f 70 65 6e 53 53 4c 20 68 61 6e 64 73  he OpenSSL hands
6730: 68 61 6b 65 20 61 6e 64 20 75 73 65 2e 20 53 65  hake and use. Se
6740: 65 20 62 65 6c 6f 77 20 66 6f 72 20 74 68 65 20  e below for the 
6750: 70 6f 73 73 69 62 6c 65 0a 09 61 72 67 75 6d 65  possible..argume
6760: 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74 68  nts passed to th
6770: 65 20 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70  e callback scrip
6780: 74 2e 20 56 61 6c 75 65 73 20 72 65 74 75 72 6e  t. Values return
6790: 65 64 20 66 72 6f 6d 20 74 68 65 0a 09 63 61 6c  ed from the..cal
67a0: 6c 62 61 63 6b 20 61 72 65 20 69 67 6e 6f 72 65  lback are ignore
67b0: 64 2e 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e 0a  d....<br>..<br>.
67c0: 0a 09 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09 20  ..<dl>...<dt>.. 
67d0: 20 3c 73 74 72 6f 6e 67 3e 65 72 72 6f 72 3c 2f   <strong>error</
67e0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e  strong> <em>chan
67f0: 6e 65 6c 20 6d 65 73 73 61 67 65 3c 2f 65 6d 3e  nel message</em>
6800: 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20  ..</dt>..<dd>.. 
6810: 20 54 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 65   The <em>message
6820: 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 63  </em> argument c
6830: 6f 6e 74 61 69 6e 73 20 61 6e 20 65 72 72 6f 72  ontains an error
6840: 20 6d 65 73 73 61 67 65 20 67 65 6e 65 72 61 74   message generat
6850: 65 64 0a 09 20 20 62 79 20 74 68 65 20 4f 70 65  ed..  by the Ope
6860: 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e 20 3c 63  nSSL function <c
6870: 6f 64 65 3e 45 52 52 5f 72 65 61 73 6f 6e 5f 65  ode>ERR_reason_e
6880: 72 72 6f 72 5f 73 74 72 69 6e 67 28 29 3c 2f 63  rror_string()</c
6890: 6f 64 65 3e 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c  ode>...</dd>...<
68a0: 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73  br>...<dt>..  <s
68b0: 74 72 6f 6e 67 3e 69 6e 66 6f 3c 2f 73 74 72 6f  trong>info</stro
68c0: 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20  ng> <em>channel 
68d0: 6d 61 6a 6f 72 20 6d 69 6e 6f 72 20 6d 65 73 73  major minor mess
68e0: 61 67 65 20 74 79 70 65 3c 2f 65 6d 3e 0a 09 3c  age type</em>..<
68f0: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68  /dt>..<dd>..  Th
6900: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
6910: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62  ack is invoked b
6920: 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75  y the OpenSSL fu
6930: 6e 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65 3e  nction..  <code>
6940: 53 53 4c 5f 43 54 58 5f 73 65 74 5f 69 6e 66 6f  SSL_CTX_set_info
6950: 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f 64  _callback()</cod
6960: 65 3e 20 64 75 72 69 6e 67 20 63 6f 6e 6e 65 63  e> during connec
6970: 74 69 6f 6e 20 73 65 74 75 70 0a 09 20 20 61 6e  tion setup..  an
6980: 64 20 75 73 65 2e 0a 09 20 20 3c 62 72 3e 0a 09  d use...  <br>..
6990: 20 20 3c 75 6c 3e 0a 09 20 20 3c 6c 69 3e 50 6f    <ul>..  <li>Po
69a0: 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f  ssible values fo
69b0: 72 20 3c 65 6d 3e 6d 61 6a 6f 72 3c 2f 65 6d 3e  r <em>major</em>
69c0: 20 61 72 65 3a 0a 09 20 20 3c 63 6f 64 65 3e 68   are:..  <code>h
69d0: 61 6e 64 73 68 61 6b 65 2c 20 61 6c 65 72 74 2c  andshake, alert,
69e0: 20 63 6f 6e 6e 65 63 74 2c 20 61 63 63 65 70 74   connect, accept
69f0: 3c 2f 63 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 20  </code>.</li>.. 
6a00: 20 3c 6c 69 3e 50 6f 73 73 69 62 6c 65 20 76 61   <li>Possible va
6a10: 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e 6d 69 6e  lues for <em>min
6a20: 6f 72 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09 20 20  or</em> are:..  
6a30: 3c 63 6f 64 65 3e 73 74 61 72 74 2c 20 64 6f 6e  <code>start, don
6a40: 65 2c 20 72 65 61 64 2c 20 77 72 69 74 65 2c 20  e, read, write, 
6a50: 6c 6f 6f 70 2c 20 65 78 69 74 3c 2f 63 6f 64 65  loop, exit</code
6a60: 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54  >.</li>..  <li>T
6a70: 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 65 3c 2f  he <em>message</
6a80: 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  em> argument is 
6a90: 61 20 64 65 73 63 72 69 70 74 69 76 65 20 73 74  a descriptive st
6aa0: 72 69 6e 67 20 77 68 69 63 68 20 6d 61 79 0a 09  ring which may..
6ab0: 20 20 62 65 20 67 65 6e 65 72 61 74 65 64 20 65    be generated e
6ac0: 69 74 68 65 72 20 62 79 20 3c 63 6f 64 65 3e 53  ither by <code>S
6ad0: 53 4c 5f 73 74 61 74 65 5f 73 74 72 69 6e 67 5f  SL_state_string_
6ae0: 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e 20 6f 72  long()</code> or
6af0: 20 62 79 0a 09 20 20 3c 63 6f 64 65 3e 53 53 4c   by..  <code>SSL
6b00: 5f 61 6c 65 72 74 5f 64 65 73 63 5f 73 74 72 69  _alert_desc_stri
6b10: 6e 67 5f 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e  ng_long()</code>
6b20: 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74  , depending on t
6b30: 68 65 20 63 6f 6e 74 65 78 74 2e 3c 2f 6c 69 3e  he context.</li>
6b40: 0a 09 20 20 3c 6c 69 3e 46 6f 72 20 61 6c 65 72  ..  <li>For aler
6b50: 74 73 2c 20 74 68 65 20 70 6f 73 73 69 62 6c 65  ts, the possible
6b60: 20 76 61 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e   values for <em>
6b70: 74 79 70 65 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09  type</em> are:..
6b80: 20 20 3c 63 6f 64 65 3e 77 61 72 6e 69 6e 67 2c    <code>warning,
6b90: 20 66 61 74 61 6c 2c 20 61 6e 64 20 75 6e 6b 6e   fatal, and unkn
6ba0: 6f 77 6e 3c 2f 63 6f 64 65 3e 2e 20 46 6f 72 20  own</code>. For 
6bb0: 6f 74 68 65 72 73 2c 0a 09 20 20 3c 63 6f 64 65  others,..  <code
6bc0: 3e 69 6e 66 6f 3c 2f 63 6f 64 65 3e 20 69 73 20  >info</code> is 
6bd0: 75 73 65 64 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 2f  used.</li>..  </
6be0: 75 6c 3e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 64 74  ul>..</dd>...<dt
6bf0: 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 6d 65 73  >..  <strong>mes
6c00: 73 61 67 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  sage</strong> <e
6c10: 6d 3e 63 68 61 6e 6e 65 6c 20 64 69 72 65 63 74  m>channel direct
6c20: 69 6f 6e 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74  ion version cont
6c30: 65 6e 74 5f 74 79 70 65 20 64 61 74 61 3c 2f 65  ent_type data</e
6c40: 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a  m>..</dt>..<dd>.
6c50: 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66 20  .  This form of 
6c60: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
6c70: 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e 53  ked by the OpenS
6c80: 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20 3c  SL function..  <
6c90: 63 6f 64 65 3e 53 53 4c 5f 73 65 74 5f 6d 73 67  code>SSL_set_msg
6ca0: 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f 64  _callback()</cod
6cb0: 65 3e 20 77 68 65 6e 65 76 65 72 20 61 20 6d 65  e> whenever a me
6cc0: 73 73 61 67 65 20 69 73 20 73 65 6e 74 20 6f 72  ssage is sent or
6cd0: 0a 09 20 20 72 65 63 65 69 76 65 64 2e 20 49 74  ..  received. It
6ce0: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
6cf0: 6c 65 20 77 68 65 6e 0a 09 20 20 4f 70 65 6e 53  le when..  OpenS
6d00: 53 4c 20 69 73 20 63 6f 6d 70 6c 69 65 64 20 77  SL is complied w
6d10: 69 74 68 20 74 68 65 20 3c 65 6d 3e 65 6e 61 62  ith the <em>enab
6d20: 6c 65 2d 73 73 6c 2d 74 72 61 63 65 3c 2f 65 6d  le-ssl-trace</em
6d30: 3e 20 6f 70 74 69 6f 6e 2e 0a 09 20 20 57 68 65  > option...  Whe
6d40: 72 65 20 3c 65 6d 3e 64 69 72 65 63 74 69 6f 6e  re <em>direction
6d50: 3c 2f 65 6d 3e 20 69 73 20 53 65 6e 74 20 6f 72  </em> is Sent or
6d60: 20 52 65 63 65 69 76 65 64 2c 20 3c 65 6d 3e 76   Received, <em>v
6d70: 65 72 73 69 6f 6e 3c 2f 65 6d 3e 20 69 73 20 74  ersion</em> is t
6d80: 68 65 0a 09 20 20 70 72 6f 74 6f 63 6f 6c 20 76  he..  protocol v
6d90: 65 72 73 69 6f 6e 2c 20 3c 65 6d 3e 63 6f 6e 74  ersion, <em>cont
6da0: 65 6e 74 5f 74 79 70 65 3c 2f 65 6d 3e 20 69 73  ent_type</em> is
6db0: 20 74 68 65 20 6d 65 73 73 61 67 65 20 63 6f 6e   the message con
6dc0: 74 65 6e 74 20 74 79 70 65 2c 0a 09 20 20 61 6e  tent type,..  an
6dd0: 64 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20  d <em>data</em> 
6de0: 69 73 20 6d 6f 72 65 20 69 6e 66 6f 20 6f 6e 20  is more info on 
6df0: 74 68 65 20 6d 65 73 73 61 67 65 20 66 72 6f 6d  the message from
6e00: 20 74 68 65 20 3c 63 6f 64 65 3e 53 53 4c 5f 74   the <code>SSL_t
6e10: 72 61 63 65 3c 2f 63 6f 64 65 3e 20 41 50 49 2e  race</code> API.
6e20: 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 0a 09  ..</dd>..<br>...
6e30: 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e  <dt>..  <strong>
6e40: 73 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e  session</strong>
6e50: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65 73   <em>channel ses
6e60: 73 69 6f 6e 5f 69 64 20 74 69 63 6b 65 74 20 6c  sion_id ticket l
6e70: 69 66 65 74 69 6d 65 3c 2f 65 6d 3e 0a 09 3c 2f  ifetime</em>..</
6e80: 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68 69  dt>..<dd>..  Thi
6e90: 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61  s form of callba
6ea0: 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79  ck is invoked by
6eb0: 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75 6e   the OpenSSL fun
6ec0: 63 74 69 6f 6e 0a 09 20 20 3c 63 6f 64 65 3e 53  ction..  <code>S
6ed0: 53 4c 5f 43 54 58 5f 73 65 73 73 5f 73 65 74 5f  SL_CTX_sess_set_
6ee0: 6e 65 77 5f 63 62 28 29 3c 2f 63 6f 64 65 3e 2e  new_cb()</code>.
6ef0: 0a 09 20 20 57 68 65 72 65 20 3c 65 6d 3e 73 65  ..  Where <em>se
6f00: 73 73 69 6f 6e 5f 69 64 3c 2f 65 6d 3e 20 69 73  ssion_id</em> is
6f10: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73   the current ses
6f20: 73 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 72 2c  sion identifier,
6f30: 0a 09 20 20 3c 65 6d 3e 74 69 63 6b 65 74 3c 2f  ..  <em>ticket</
6f40: 65 6d 3e 20 69 73 20 74 68 65 20 73 65 73 73 69  em> is the sessi
6f50: 6f 6e 20 74 69 63 6b 65 74 20 69 6e 66 6f 2c 20  on ticket info, 
6f60: 61 6e 64 20 3c 65 6d 3e 6c 69 66 65 74 69 6d 65  and <em>lifetime
6f70: 3c 2f 65 6d 3e 0a 09 20 20 69 73 20 74 68 65 20  </em>..  is the 
6f80: 74 68 65 20 74 69 63 6b 65 74 20 6c 69 66 65 74  the ticket lifet
6f90: 69 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 2e 0a  ime in seconds..
6fa0: 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f  .</dd>..<br>..</
6fb0: 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 0a 20  dl>.    </dd>.. 
6fc0: 20 20 20 3c 62 72 3e 0a 0a 20 20 20 20 3c 64 74     <br>..    <dt
6fd0: 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f  ><strong>-passwo
6fe0: 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  rd</strong> <em>
6ff0: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64  callback</em></d
7000: 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76  t>.    <dd>..Inv
7010: 6f 6b 65 73 20 74 68 65 20 73 70 65 63 69 66 69  okes the specifi
7020: 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c  ed <em>callback<
7030: 2f 65 6d 3e 20 73 63 72 69 70 74 20 77 68 65 6e  /em> script when
7040: 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20 74   OpenSSL needs t
7050: 6f 0a 09 6f 62 74 61 69 6e 20 61 20 70 61 73 73  o..obtain a pass
7060: 77 6f 72 64 2e 20 53 65 65 20 62 65 6c 6f 77 20  word. See below 
7070: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
7080: 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
7090: 64 20 74 6f 0a 09 74 68 65 20 63 61 6c 6c 62 61  d to..the callba
70a0: 63 6b 20 73 63 72 69 70 74 2e 20 53 65 65 20 62  ck script. See b
70b0: 65 6c 6f 77 20 66 6f 72 20 76 61 6c 69 64 20 72  elow for valid r
70c0: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 0a 0a 09  eturn values....
70d0: 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09 3c 64 6c  <br>..<br>...<dl
70e0: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
70f0: 6f 6e 67 3e 70 61 73 73 77 6f 72 64 3c 2f 73 74  ong>password</st
7100: 72 6f 6e 67 3e 20 3c 65 6d 3e 72 77 66 6c 61 67  rong> <em>rwflag
7110: 20 73 69 7a 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 74   size</em>..</dt
7120: 3e 0a 09 3c 64 64 3e 0a 09 20 20 49 6e 76 6f 6b  >..<dd>..  Invok
7130: 65 64 20 77 68 65 6e 20 6c 6f 61 64 69 6e 67 20  ed when loading 
7140: 6f 72 20 73 74 6f 72 69 6e 67 20 61 20 50 45 4d  or storing a PEM
7150: 20 63 65 72 74 69 66 69 63 61 74 65 20 77 69 74   certificate wit
7160: 68 20 65 6e 63 72 79 70 74 69 6f 6e 2e 0a 09 20  h encryption... 
7170: 20 57 68 65 72 65 20 3c 65 6d 3e 72 77 66 6c 61   Where <em>rwfla
7180: 67 3c 2f 65 6d 3e 20 69 73 20 30 20 66 6f 72 20  g</em> is 0 for 
7190: 72 65 61 64 69 6e 67 2f 64 65 63 72 79 70 74 69  reading/decrypti
71a0: 6f 6e 20 6f 72 20 31 20 66 6f 72 0a 09 20 20 77  on or 1 for..  w
71b0: 72 69 74 69 6e 67 2f 65 6e 63 72 79 70 74 69 6f  riting/encryptio
71c0: 6e 20 28 63 61 6e 20 70 72 6f 6d 70 74 20 75 73  n (can prompt us
71d0: 65 72 20 74 6f 20 63 6f 6e 66 69 72 6d 29 20 61  er to confirm) a
71e0: 6e 64 0a 09 20 20 3c 65 6d 3e 73 69 7a 65 3c 2f  nd..  <em>size</
71f0: 65 6d 3e 20 69 73 20 74 68 65 20 6d 61 78 20 70  em> is the max p
7200: 61 73 73 77 6f 72 64 20 6c 65 6e 67 74 68 20 69  assword length i
7210: 6e 20 62 79 74 65 73 2e 0a 09 20 20 54 68 65 20  n bytes...  The 
7220: 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20  callback should 
7230: 72 65 74 75 72 6e 20 74 68 65 20 70 61 73 73 77  return the passw
7240: 6f 72 64 20 61 73 20 61 20 73 74 72 69 6e 67 2e  ord as a string.
7250: 0a 09 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 64  ..</dd>.    </dd
7260: 3e 0a 0a 20 20 20 20 3c 62 72 3e 0a 0a 0a 20 20  >..    <br>...  
7270: 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 76    <dt><strong>-v
7280: 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 3c 2f  alidatecommand</
7290: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c  strong> <em>call
72a0: 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 20  back</em></dt>. 
72b0: 20 20 20 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65 73     <dd>..Invokes
72c0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c   the specified <
72d0: 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e  em>callback</em>
72e0: 20 73 63 72 69 70 74 20 64 75 72 69 6e 67 20 68   script during h
72f0: 61 6e 64 73 68 61 6b 65 20 69 6e 0a 09 6f 72 64  andshake in..ord
7300: 65 72 20 74 6f 20 76 61 6c 69 64 61 74 65 20 74  er to validate t
7310: 68 65 20 70 72 6f 76 69 64 65 64 20 76 61 6c 75  he provided valu
7320: 65 28 73 29 2e 20 53 65 65 20 62 65 6c 6f 77 20  e(s). See below 
7330: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
7340: 0a 09 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73  ..arguments pass
7350: 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61  ed to the callba
7360: 63 6b 20 73 63 72 69 70 74 2e 0a 09 54 6f 20 72  ck script...To r
7370: 65 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65 20  eject the value 
7380: 61 6e 64 20 61 62 6f 72 74 20 63 6f 6e 6e 65 63  and abort connec
7390: 74 69 6f 6e 2c 20 74 68 65 20 63 61 6c 6c 62 61  tion, the callba
73a0: 63 6b 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  ck should return
73b0: 20 30 2e 0a 09 54 6f 20 61 63 63 65 70 74 20 74   0...To accept t
73c0: 68 65 20 76 61 6c 75 65 20 61 6e 64 20 63 6f 6e  he value and con
73d0: 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 6e 65 63  tinue the connec
73e0: 74 69 6f 6e 2c 20 69 74 20 73 68 6f 75 6c 64 20  tion, it should 
73f0: 72 65 74 75 72 6e 20 31 2e 0a 09 54 6f 20 72 65  return 1...To re
7400: 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65 2c 20  ject the value, 
7410: 62 75 74 20 63 6f 6e 74 69 6e 75 65 20 74 68 65  but continue the
7420: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74 20   connection, it 
7430: 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 32 2e  should return 2.
7440: 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e 0a 0a 09  ...<br>..<br>...
7450: 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c  <dl>...<dt>..  <
7460: 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74 72  strong>alpn</str
7470: 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c  ong> <em>channel
7480: 20 70 72 6f 74 6f 63 6f 6c 20 6d 61 74 63 68 3c   protocol match<
7490: 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64  /em>..</dt>..<dd
74a0: 3e 0a 09 20 20 46 6f 72 20 73 65 72 76 65 72 73  >..  For servers
74b0: 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20 63  , this form of c
74c0: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
74d0: 65 64 20 77 68 65 6e 20 74 68 65 20 63 6c 69 65  ed when the clie
74e0: 6e 74 20 41 4c 50 4e 0a 09 20 20 65 78 74 65 6e  nt ALPN..  exten
74f0: 73 69 6f 6e 20 69 73 20 72 65 63 65 69 76 65 64  sion is received
7500: 2e 20 49 66 20 3c 65 6d 3e 6d 61 74 63 68 3c 2f  . If <em>match</
7510: 65 6d 3e 20 69 73 20 74 72 75 65 2c 20 3c 65 6d  em> is true, <em
7520: 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 0a 09  >protocol</em>..
7530: 20 20 69 73 20 74 68 65 20 66 69 72 73 74 20 3c    is the first <
7540: 62 3e 2d 61 6c 70 6e 3c 2f 62 3e 20 73 70 65 63  b>-alpn</b> spec
7550: 69 66 69 65 64 20 70 72 6f 74 6f 63 6f 6c 20 63  ified protocol c
7560: 6f 6d 6d 6f 6e 20 74 6f 20 74 68 65 20 62 6f 74  ommon to the bot
7570: 68 20 74 68 65 0a 09 20 20 63 6c 69 65 6e 74 20  h the..  client 
7580: 61 6e 64 20 73 65 72 76 65 72 2e 20 49 66 20 6e  and server. If n
7590: 6f 74 2c 20 74 68 65 20 66 69 72 73 74 20 63 6c  ot, the first cl
75a0: 69 65 6e 74 20 73 70 65 63 69 66 69 65 64 20 70  ient specified p
75b0: 72 6f 74 6f 63 6f 6c 20 69 73 0a 09 20 20 75 73  rotocol is..  us
75c0: 65 64 2e 20 43 61 6c 6c 65 64 20 61 66 74 65 72  ed. Called after
75d0: 20 68 65 6c 6c 6f 20 61 6e 64 20 41 4c 50 4e 20   hello and ALPN 
75e0: 63 61 6c 6c 62 61 63 6b 73 2e 0a 09 3c 2f 64 64  callbacks...</dd
75f0: 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e 0a  >...<br>...<dt>.
7600: 09 20 20 3c 73 74 72 6f 6e 67 3e 68 65 6c 6c 6f  .  <strong>hello
7610: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68  </strong> <em>ch
7620: 61 6e 6e 65 6c 20 73 65 72 76 65 72 6e 61 6d 65  annel servername
7630: 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64  </em>..</dt>..<d
7640: 64 3e 0a 09 20 20 46 6f 72 20 73 65 72 76 65 72  d>..  For server
7650: 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20  s, this form of 
7660: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
7670: 6b 65 64 20 64 75 72 69 6e 67 20 63 6c 69 65 6e  ked during clien
7680: 74 20 68 65 6c 6c 6f 0a 09 20 20 6d 65 73 73 61  t hello..  messa
7690: 67 65 20 70 72 6f 63 65 73 73 69 6e 67 2e 20 49  ge processing. I
76a0: 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 6c  t is used to sel
76b0: 65 63 74 20 61 6e 20 61 70 70 72 6f 70 72 69 61  ect an appropria
76c0: 74 65 20 63 65 72 74 69 66 69 63 61 74 65 20 74  te certificate t
76d0: 6f 0a 09 20 20 70 72 65 73 65 6e 74 2c 20 61 6e  o..  present, an
76e0: 64 20 6d 61 6b 65 20 6f 74 68 65 72 20 63 6f 6e  d make other con
76f0: 66 69 67 75 72 61 74 69 6f 6e 20 61 64 6a 75 73  figuration adjus
7700: 74 6d 65 6e 74 73 20 72 65 6c 65 76 61 6e 74 20  tments relevant 
7710: 74 6f 20 74 68 61 74 0a 09 20 20 73 65 72 76 65  to that..  serve
7720: 72 20 6e 61 6d 65 20 61 6e 64 20 69 74 73 20 63  r name and its c
7730: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 20 43 61  onfiguration. Ca
7740: 6c 6c 65 64 20 62 65 66 6f 72 65 20 53 4e 49 20  lled before SNI 
7750: 61 6e 64 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63  and ALPN callbac
7760: 6b 73 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 62 72  ks...</dd>...<br
7770: 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72  >...<dt>..  <str
7780: 6f 6e 67 3e 73 6e 69 3c 2f 73 74 72 6f 6e 67 3e  ong>sni</strong>
7790: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65 72   <em>channel ser
77a0: 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e 0a 09 3c 2f  vername</em>..</
77b0: 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 46 6f 72  dt>..<dd>..  For
77c0: 20 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 66   servers, this f
77d0: 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20  orm of callback 
77e0: 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20  is invoked when 
77f0: 74 68 65 20 53 4e 49 20 65 78 74 65 6e 73 69 6f  the SNI extensio
7800: 6e 0a 09 20 20 66 72 6f 6d 20 74 68 65 20 63 6c  n..  from the cl
7810: 69 65 6e 74 20 69 73 20 72 65 63 65 69 76 65 64  ient is received
7820: 2e 20 57 68 65 72 65 20 3c 65 6d 3e 73 65 72 76  . Where <em>serv
7830: 65 72 6e 61 6d 65 3c 2f 65 6d 3e 20 69 73 20 74  ername</em> is t
7840: 68 65 20 63 6c 69 65 6e 74 0a 09 20 20 70 72 6f  he client..  pro
7850: 76 69 64 65 64 20 73 65 72 76 65 72 20 6e 61 6d  vided server nam
7860: 65 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 2d 73  e from the <b>-s
7870: 65 72 76 65 72 6e 61 6d 65 3c 2f 62 3e 20 6f 70  ervername</b> op
7880: 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 0a 09 20  tion. This is.. 
7890: 20 75 73 65 64 20 77 68 65 6e 20 61 20 73 65 72   used when a ser
78a0: 76 65 72 20 73 75 70 70 6f 72 74 73 20 6d 75 6c  ver supports mul
78b0: 74 69 70 6c 65 20 6e 61 6d 65 73 2c 20 73 6f 20  tiple names, so 
78c0: 74 68 65 20 72 69 67 68 74 20 63 65 72 74 69 66  the right certif
78d0: 69 63 61 74 65 0a 09 20 20 63 61 6e 20 62 65 20  icate..  can be 
78e0: 75 73 65 64 2e 20 43 61 6c 6c 65 64 20 61 66 74  used. Called aft
78f0: 65 72 20 68 65 6c 6c 6f 20 63 61 6c 6c 62 61 63  er hello callbac
7900: 6b 20 62 75 74 20 62 65 66 6f 72 65 20 41 4c 50  k but before ALP
7910: 4e 20 63 61 6c 6c 62 61 63 6b 2e 0a 09 3c 2f 64  N callback...</d
7920: 64 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e  d>...<br>...<dt>
7930: 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 76 65 72 69  ..  <strong>veri
7940: 66 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  fy</strong> <em>
7950: 63 68 61 6e 6e 65 6c 20 64 65 70 74 68 20 63 65  channel depth ce
7960: 72 74 20 73 74 61 74 75 73 20 65 72 72 6f 72 3c  rt status error<
7970: 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64  /em>..</dt>..<dd
7980: 3e 0a 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f  >..  This form o
7990: 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  f callback is in
79a0: 76 6f 6b 65 64 20 62 79 20 4f 70 65 6e 53 53 4c  voked by OpenSSL
79b0: 20 77 68 65 6e 20 61 20 6e 65 77 20 63 65 72 74   when a new cert
79c0: 69 66 69 63 61 74 65 0a 09 20 20 69 73 20 72 65  ificate..  is re
79d0: 63 65 69 76 65 64 20 66 72 6f 6d 20 74 68 65 20  ceived from the 
79e0: 70 65 65 72 2e 20 49 74 20 61 6c 6c 6f 77 73 20  peer. It allows 
79f0: 74 68 65 20 63 6c 69 65 6e 74 20 74 6f 20 63 68  the client to ch
7a00: 65 63 6b 20 74 68 65 0a 09 20 20 63 65 72 74 69  eck the..  certi
7a10: 66 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74  ficate verificat
7a20: 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 6e 64 20  ion results and 
7a30: 63 68 6f 6f 73 65 20 77 68 65 74 68 65 72 20 74  choose whether t
7a40: 6f 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 6f 72  o continue..  or
7a50: 20 6e 6f 74 2e 20 49 74 20 69 73 20 63 61 6c 6c   not. It is call
7a60: 65 64 20 66 6f 72 20 65 61 63 68 20 63 65 72 74  ed for each cert
7a70: 69 66 69 63 61 74 65 20 69 6e 20 74 68 65 20 63  ificate in the c
7a80: 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e  ertificate chain
7a90: 2e 0a 09 20 20 3c 75 6c 3e 0a 09 20 20 3c 6c 69  ...  <ul>..  <li
7aa0: 3e 54 68 65 20 3c 65 6d 3e 64 65 70 74 68 3c 2f  >The <em>depth</
7ab0: 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  em> argument is 
7ac0: 61 6e 20 69 6e 74 65 67 65 72 20 72 65 70 72 65  an integer repre
7ad0: 73 65 6e 74 69 6e 67 20 74 68 65 0a 09 20 20 63  senting the..  c
7ae0: 75 72 72 65 6e 74 20 64 65 70 74 68 20 6f 6e 20  urrent depth on 
7af0: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
7b00: 63 68 61 69 6e 2c 20 77 69 74 68 0a 09 20 20 3c  chain, with..  <
7b10: 63 6f 64 65 3e 30 3c 2f 63 6f 64 65 3e 20 61 73  code>0</code> as
7b20: 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69 66   the peer certif
7b30: 69 63 61 74 65 20 61 6e 64 20 68 69 67 68 65 72  icate and higher
7b40: 20 76 61 6c 75 65 73 20 67 6f 69 6e 67 0a 09 20   values going.. 
7b50: 20 75 70 20 74 6f 20 74 68 65 20 43 65 72 74 69   up to the Certi
7b60: 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74 79  ficate Authority
7b70: 20 28 43 41 29 2e 3c 2f 6c 69 3e 0a 09 20 20 3c   (CA).</li>..  <
7b80: 6c 69 3e 54 68 65 20 3c 65 6d 3e 63 65 72 74 3c  li>The <em>cert<
7b90: 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  /em> argument is
7ba0: 20 61 20 6c 69 73 74 20 6f 66 20 6b 65 79 2d 76   a list of key-v
7bb0: 61 6c 75 65 20 70 61 69 72 73 20 73 69 6d 69 6c  alue pairs simil
7bc0: 61 72 0a 09 20 20 74 6f 20 74 68 6f 73 65 20 72  ar..  to those r
7bd0: 65 74 75 72 6e 65 64 20 62 79 0a 09 20 20 3c 61  eturned by..  <a
7be0: 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 74 61   href="#tls::sta
7bf0: 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73  tus"><strong>tls
7c00: 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f 6e 67  ::status</strong
7c10: 3e 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c  ></a>.</li>..  <
7c20: 6c 69 3e 54 68 65 20 3c 65 6d 3e 73 74 61 74 75  li>The <em>statu
7c30: 73 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20  s</em> argument 
7c40: 69 73 20 61 6e 20 62 6f 6f 6c 65 61 6e 20 72 65  is an boolean re
7c50: 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 0a 09  presenting the..
7c60: 20 20 76 61 6c 69 64 69 74 79 20 6f 66 20 74 68    validity of th
7c70: 65 20 63 75 72 72 65 6e 74 20 63 65 72 74 69 66  e current certif
7c80: 69 63 61 74 65 2e 0a 09 20 20 41 20 76 61 6c 75  icate...  A valu
7c90: 65 20 6f 66 20 3c 63 6f 64 65 3e 30 3c 2f 63 6f  e of <code>0</co
7ca0: 64 65 3e 20 6d 65 61 6e 73 20 74 68 65 20 63 65  de> means the ce
7cb0: 72 74 69 66 69 63 61 74 65 20 69 73 20 64 65 65  rtificate is dee
7cc0: 6d 65 64 20 69 6e 76 61 6c 69 64 2e 0a 09 20 20  med invalid...  
7cd0: 41 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 65  A value of <code
7ce0: 3e 31 3c 2f 63 6f 64 65 3e 20 6d 65 61 6e 73 20  >1</code> means 
7cf0: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
7d00: 69 73 20 64 65 65 6d 65 64 20 76 61 6c 69 64 2e  is deemed valid.
7d10: 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 54 68 65  </li>..  <li>The
7d20: 20 3c 65 6d 3e 65 72 72 6f 72 3c 2f 65 6d 3e 20   <em>error</em> 
7d30: 61 72 67 75 6d 65 6e 74 20 73 75 70 70 6c 69 65  argument supplie
7d40: 73 20 74 68 65 20 6d 65 73 73 61 67 65 2c 20 69  s the message, i
7d50: 66 20 61 6e 79 2c 20 67 65 6e 65 72 61 74 65 64  f any, generated
7d60: 0a 09 20 20 62 79 20 3c 63 6f 64 65 3e 58 35 30  ..  by <code>X50
7d70: 39 5f 53 54 4f 52 45 5f 43 54 58 5f 67 65 74 5f  9_STORE_CTX_get_
7d80: 65 72 72 6f 72 28 29 3c 2f 63 6f 64 65 3e 2e 3c  error()</code>.<
7d90: 2f 6c 69 3e 0a 09 20 20 3c 2f 75 6c 3e 0a 09 3c  /li>..  </ul>..<
7da0: 2f 64 64 3e 0a 09 3c 62 72 3e 0a 09 3c 2f 64 6c  /dd>..<br>..</dl
7db0: 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 3c 2f 64 6c  >.    </dd>.</dl
7dc0: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
7dd0: 0a 3c 70 3e 0a 52 65 66 65 72 65 6e 63 65 20 69  .<p>.Reference i
7de0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f  mplementations o
7df0: 66 20 74 68 65 73 65 20 63 61 6c 6c 62 61 63 6b  f these callback
7e00: 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 69  s are provided i
7e10: 6e 20 74 68 65 0a 64 69 73 74 72 69 62 75 74 69  n the.distributi
7e20: 6f 6e 20 61 73 20 3c 73 74 72 6f 6e 67 3e 74 6c  on as <strong>tl
7e30: 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72  s::callback</str
7e40: 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 74 6c  ong>, <strong>tl
7e50: 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74 72  s::password</str
7e60: 6f 6e 67 3e 2c 0a 61 6e 64 20 3c 73 74 72 6f 6e  ong>,.and <stron
7e70: 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f  g>tls::validate_
7e80: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
7e90: 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 20   respectively.  
7ea0: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20  Note that these 
7eb0: 61 72 65 0a 3c 65 6d 3e 73 61 6d 70 6c 65 3c 2f  are.<em>sample</
7ec0: 65 6d 3e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  em> implementati
7ed0: 6f 6e 73 20 6f 6e 6c 79 2e 20 20 49 6e 20 61 20  ons only.  In a 
7ee0: 6d 6f 72 65 20 72 65 61 6c 69 73 74 69 63 20 64  more realistic d
7ef0: 65 70 6c 6f 79 6d 65 6e 74 0a 79 6f 75 20 77 6f  eployment.you wo
7f00: 75 6c 64 20 73 70 65 63 69 66 79 20 79 6f 75 72  uld specify your
7f10: 20 6f 77 6e 20 63 61 6c 6c 62 61 63 6b 20 73 63   own callback sc
7f20: 72 69 70 74 73 20 6f 6e 20 65 61 63 68 20 54 4c  ripts on each TL
7f30: 53 20 63 68 61 6e 6e 65 6c 20 75 73 69 6e 67 20  S channel using 
7f40: 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d  the.<strong>-com
7f50: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c  mand</strong>, <
7f60: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
7f70: 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c  </strong>, and <
7f80: 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65  strong>-validate
7f90: 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67  _command</strong
7fa0: 3e 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a  > options..</p>.
7fb0: 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61 75 6c 74  .<p>.The default
7fc0: 20 62 65 68 61 76 69 6f 72 20 77 68 65 6e 20 74   behavior when t
7fd0: 68 65 20 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d  he <strong>-comm
7fe0: 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 61 6e 64  and</strong> and
7ff0: 20 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64 61   <strong>-valida
8000: 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  te_command</stro
8010: 6e 67 3e 0a 6f 70 74 69 6f 6e 73 20 61 72 65 20  ng>.options are 
8020: 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 69 73  not specified is
8030: 20 66 6f 72 20 54 4c 53 20 74 6f 20 70 72 6f 63   for TLS to proc
8040: 65 73 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ess the associat
8050: 65 64 20 6c 69 62 72 61 72 79 20 63 61 6c 6c 62  ed library callb
8060: 61 63 6b 73 0a 69 6e 74 65 72 6e 61 6c 6c 79 2e  acks.internally.
8070: 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   The default beh
8080: 61 76 69 6f 72 20 77 68 65 6e 20 74 68 65 20 3c  avior when the <
8090: 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f 72 64  strong>-password
80a0: 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e  </strong> option
80b0: 20 69 73 20 6e 6f 74 0a 73 70 65 63 69 66 69 65   is not.specifie
80c0: 64 20 69 73 20 66 6f 72 20 54 4c 53 20 74 6f 20  d is for TLS to 
80d0: 70 72 6f 63 65 73 73 20 74 68 65 20 61 73 73 6f  process the asso
80e0: 63 69 61 74 65 64 20 6c 69 62 72 61 72 79 20 63  ciated library c
80f0: 61 6c 6c 62 61 63 6b 73 20 62 79 20 61 74 74 65  allbacks by atte
8100: 6d 70 74 69 6e 67 0a 74 6f 20 63 61 6c 6c 20 3c  mpting.to call <
8110: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 61 73 73  strong>tls::pass
8120: 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2e 0a 54  word</strong>..T
8130: 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  he difference be
8140: 74 77 65 65 6e 20 74 68 65 73 65 20 74 77 6f 20  tween these two 
8150: 62 65 68 61 76 69 6f 72 73 20 69 73 20 61 20 63  behaviors is a c
8160: 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 6d 61  onsequence of ma
8170: 69 6e 74 61 69 6e 69 6e 67 0a 63 6f 6d 70 61 74  intaining.compat
8180: 69 62 69 6c 69 74 79 20 77 69 74 68 20 65 61 72  ibility with ear
8190: 6c 69 65 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74  lier implementat
81a0: 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ions..</p>..<p>.
81b0: 54 68 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a  The <strong>tls:
81c0: 3a 64 65 62 75 67 3c 2f 73 74 72 6f 6e 67 3e 20  :debug</strong> 
81d0: 76 61 72 69 61 62 6c 65 20 70 72 6f 76 69 64 65  variable provide
81e0: 73 20 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61  s some additiona
81f0: 6c 0a 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 74  l.control over t
8200: 68 65 73 65 20 72 65 66 65 72 65 6e 63 65 20 63  hese reference c
8210: 61 6c 6c 62 61 63 6b 73 2e 20 20 49 74 73 20 76  allbacks.  Its v
8220: 61 6c 75 65 20 69 73 20 7a 65 72 6f 20 62 79 20  alue is zero by 
8230: 64 65 66 61 75 6c 74 2e 0a 48 69 67 68 65 72 20  default..Higher 
8240: 76 61 6c 75 65 73 20 70 72 6f 64 75 63 65 20 6d  values produce m
8250: 6f 72 65 20 64 69 61 67 6e 6f 73 74 69 63 20 6f  ore diagnostic o
8260: 75 74 70 75 74 2c 20 61 6e 64 20 77 69 6c 6c 20  utput, and will 
8270: 61 6c 73 6f 20 66 6f 72 63 65 20 74 68 65 0a 76  also force the.v
8280: 65 72 69 66 79 20 6d 65 74 68 6f 64 20 69 6e 20  erify method in 
8290: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 61 6c  <strong>tls::cal
82a0: 6c 62 61 63 6b 3c 2f 73 74 72 6f 6e 67 3e 20 74  lback</strong> t
82b0: 6f 20 61 63 63 65 70 74 20 74 68 65 0a 63 65 72  o accept the.cer
82c0: 74 69 66 69 63 61 74 65 2c 20 65 76 65 6e 20 77  tificate, even w
82d0: 68 65 6e 20 69 74 20 69 73 20 69 6e 76 61 6c 69  hen it is invali
82e0: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 65 6d  d..</p>..<p>.<em
82f0: 3e 0a 54 68 65 20 75 73 65 20 6f 66 20 74 68 65  >.The use of the
8300: 20 72 65 66 65 72 65 6e 63 65 20 63 61 6c 6c 62   reference callb
8310: 61 63 6b 73 20 3c 73 74 72 6f 6e 67 3e 74 6c 73  acks <strong>tls
8320: 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72 6f  ::callback</stro
8330: 6e 67 3e 2c 0a 3c 73 74 72 6f 6e 67 3e 74 6c 73  ng>,.<strong>tls
8340: 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f  ::password</stro
8350: 6e 67 3e 2c 20 61 6e 64 20 3c 73 74 72 6f 6e 67  ng>, and <strong
8360: 3e 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f 63  >tls::validate_c
8370: 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 0a  ommand</strong>.
8380: 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64  is not recommend
8390: 65 64 2e 20 20 54 68 65 79 20 6d 61 79 20 62 65  ed.  They may be
83a0: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 66 75   removed from fu
83b0: 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e 0a 3c  ture releases..<
83c0: 2f 65 6d 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c  /em>.</p>..<p>.<
83d0: 65 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66 20 74  em>.The use of t
83e0: 68 65 20 76 61 72 69 61 62 6c 65 20 3c 73 74 72  he variable <str
83f0: 6f 6e 67 3e 74 6c 73 3a 3a 64 65 62 75 67 3c 2f  ong>tls::debug</
8400: 73 74 72 6f 6e 67 3e 20 69 73 20 6e 6f 74 20 72  strong> is not r
8410: 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 49 74 20 6d  ecommended..It m
8420: 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72  ay be removed fr
8430: 6f 6d 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  om future releas
8440: 65 73 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a 0a  es..</em>.</p>..
8450: 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 44 45 42  <h3><a name="DEB
8460: 55 47 22 3e 44 45 42 55 47 3c 2f 61 3e 3c 2f 68  UG">DEBUG</a></h
8470: 33 3e 0a 0a 54 4c 53 20 6b 65 79 20 6c 6f 67 67  3>..TLS key logg
8480: 69 6e 67 20 63 61 6e 20 62 65 20 65 6e 61 62 6c  ing can be enabl
8490: 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 74 68  ed by setting th
84a0: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
84b0: 72 69 61 62 6c 65 0a 3c 62 3e 53 53 4c 4b 45 59  riable.<b>SSLKEY
84c0: 4c 4f 47 46 49 4c 45 3c 2f 62 3e 20 74 6f 20 74  LOGFILE</b> to t
84d0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66  he name of the f
84e0: 69 6c 65 20 74 6f 20 6c 6f 67 20 74 6f 2e 20 54  ile to log to. T
84f0: 68 65 6e 20 77 68 65 6e 65 76 65 72 20 54 4c 53  hen whenever TLS
8500: 0a 6b 65 79 20 6d 61 74 65 72 69 61 6c 20 69 73  .key material is
8510: 20 67 65 6e 65 72 61 74 65 64 20 6f 72 20 72 65   generated or re
8520: 63 65 69 76 65 64 20 69 74 20 77 69 6c 6c 20 62  ceived it will b
8530: 65 20 6c 6f 67 67 65 64 20 74 6f 20 74 68 65 20  e logged to the 
8540: 66 69 6c 65 2e 20 54 68 69 73 0a 69 73 20 75 73  file. This.is us
8550: 65 66 75 6c 20 66 6f 72 20 6c 6f 67 67 69 6e 67  eful for logging
8560: 20 6b 65 79 20 64 61 74 61 20 66 6f 72 20 6e 65   key data for ne
8570: 74 77 6f 72 6b 20 6c 6f 67 67 69 6e 67 20 74 6f  twork logging to
8580: 6f 6c 73 20 74 6f 20 75 73 65 20 74 6f 0a 64 65  ols to use to.de
8590: 63 72 79 70 74 20 74 68 65 20 64 61 74 61 2e 0a  crypt the data..
85a0: 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 48 54  .<h3><a name="HT
85b0: 54 50 53 20 45 58 41 4d 50 4c 45 22 3e 48 54 54  TPS EXAMPLE">HTT
85c0: 50 53 20 45 58 41 4d 50 4c 45 3c 2f 61 3e 3c 2f  PS EXAMPLE</a></
85d0: 68 33 3e 0a 0a 3c 70 3e 54 68 69 73 20 65 78 61  h3>..<p>This exa
85e0: 6d 70 6c 65 20 75 73 65 73 20 61 20 73 61 6d 70  mple uses a samp
85f0: 6c 65 20 73 65 72 76 65 72 2e 70 65 6d 20 70 72  le server.pem pr
8600: 6f 76 69 64 65 64 20 77 69 74 68 20 74 68 65 20  ovided with the 
8610: 54 4c 53 20 72 65 6c 65 61 73 65 2c 0a 63 6f 75  TLS release,.cou
8620: 72 74 65 73 79 20 6f 66 20 74 68 65 20 3c 73 74  rtesy of the <st
8630: 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74  rong>OpenSSL</st
8640: 72 6f 6e 67 3e 20 70 72 6f 6a 65 63 74 2e 3c 2f  rong> project.</
8650: 70 3e 0a 0a 3c 70 72 65 3e 3c 63 6f 64 65 3e 0a  p>..<pre><code>.
8660: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
8670: 68 74 74 70 0a 70 61 63 6b 61 67 65 20 72 65 71  http.package req
8680: 75 69 72 65 20 74 6c 73 0a 0a 68 74 74 70 3a 3a  uire tls..http::
8690: 72 65 67 69 73 74 65 72 20 68 74 74 70 73 20 34  register https 4
86a0: 34 33 20 5b 6c 69 73 74 20 3a 3a 74 6c 73 3a 3a  43 [list ::tls::
86b0: 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73 65 72 76  socket -autoserv
86c0: 65 72 6e 61 6d 65 20 74 72 75 65 20 2d 72 65 71  ername true -req
86d0: 75 69 72 65 20 74 72 75 65 20 2d 63 61 64 69 72  uire true -cadir
86e0: 20 2f 65 74 63 2f 73 73 6c 2f 63 65 72 74 73 5d   /etc/ssl/certs]
86f0: 0a 0a 73 65 74 20 74 6f 6b 20 5b 68 74 74 70 3a  ..set tok [http:
8700: 3a 67 65 74 75 72 6c 20 68 74 74 70 73 3a 2f 2f  :geturl https://
8710: 77 77 77 2e 74 63 6c 2e 74 6b 2f 5d 0a 3c 2f 63  www.tcl.tk/].</c
8720: 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 68 33 3e  ode></pre>..<h3>
8730: 3c 61 20 6e 61 6d 65 3d 22 53 50 45 43 49 41 4c  <a name="SPECIAL
8740: 20 43 4f 4e 53 49 44 45 52 41 54 49 4f 4e 53 22   CONSIDERATIONS"
8750: 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53 49 44 45  >SPECIAL CONSIDE
8760: 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f 68 33 3e  RATIONS</a></h3>
8770: 0a 0a 3c 70 3e 54 68 65 20 63 61 70 61 62 69 6c  ..<p>The capabil
8780: 69 74 69 65 73 20 6f 66 20 74 68 69 73 20 70 61  ities of this pa
8790: 63 6b 61 67 65 20 63 61 6e 20 76 61 72 79 20 65  ckage can vary e
87a0: 6e 6f 72 6d 6f 75 73 6c 79 20 62 61 73 65 64 20  normously based 
87b0: 75 70 6f 6e 20 68 6f 77 20 79 6f 75 72 0a 4f 70  upon how your.Op
87c0: 65 6e 53 53 4c 20 6c 69 62 72 61 72 79 20 77 61  enSSL library wa
87d0: 73 20 63 6f 6e 66 69 67 75 72 65 64 20 61 6e 64  s configured and
87e0: 20 62 75 69 6c 74 2e 20 4e 65 77 20 76 65 72 73   built. New vers
87f0: 69 6f 6e 73 20 6d 61 79 20 6f 62 73 6f 6c 65 74  ions may obsolet
8800: 65 20 6f 6c 64 65 72 0a 70 72 6f 74 6f 63 6f 6c  e older.protocol
8810: 20 76 65 72 73 69 6f 6e 73 2c 20 61 64 64 20 6f   versions, add o
8820: 72 20 72 65 6d 6f 76 65 20 63 69 70 68 65 72 73  r remove ciphers
8830: 2c 20 63 68 61 6e 67 65 20 64 65 66 61 75 6c 74  , change default
8840: 20 76 61 6c 75 65 73 2c 20 65 74 63 2e 20 55 73   values, etc. Us
8850: 65 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 74 6c  e the.<strong>tl
8860: 73 3a 3a 63 69 70 68 65 72 73 3c 2f 73 74 72 6f  s::ciphers</stro
8870: 6e 67 3e 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e  ng> and <strong>
8880: 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f  tls::protocols</
8890: 73 74 72 6f 6e 67 3e 20 63 6f 6d 6d 61 6e 64 73  strong> commands
88a0: 20 74 6f 0a 6f 62 74 61 69 6e 20 74 68 65 20 73   to.obtain the s
88b0: 75 70 70 6f 72 74 65 64 20 76 65 72 73 69 6f 6e  upported version
88c0: 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e  s.</p>..<h3><a n
88d0: 61 6d 65 3d 22 53 45 45 20 41 4c 53 4f 22 3e 53  ame="SEE ALSO">S
88e0: 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 68 33 3e  EE ALSO</a></h3>
88f0: 0a 0a 3c 70 3e 3c 73 74 72 6f 6e 67 3e 73 6f 63  ..<p><strong>soc
8900: 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73  ket</strong>, <s
8910: 74 72 6f 6e 67 3e 66 69 6c 65 65 76 65 6e 74 2c  trong>fileevent,
8920: 20 3c 2f 73 74 72 6f 6e 67 3e 3c 61 0a 68 72 65   </strong><a.hre
8930: 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6f 70  f="http://www.op
8940: 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 3c 73 74 72  enssl.org/"><str
8950: 6f 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74 72  ong>OpenSSL</str
8960: 6f 6e 67 3e 3c 2f 61 3e 3c 2f 70 3e 0a 0a 3c 68  ong></a></p>..<h
8970: 72 3e 0a 0a 3c 70 72 65 3e 0a 43 6f 70 79 72 69  r>..<pre>.Copyri
8980: 67 68 74 20 26 63 6f 70 79 3b 20 31 39 39 39 20  ght &copy; 1999 
8990: 4d 61 74 74 20 4e 65 77 6d 61 6e 2e 0a 43 6f 70  Matt Newman..Cop
89a0: 79 72 69 67 68 74 20 26 63 6f 70 79 3b 20 32 30  yright &copy; 20
89b0: 30 34 20 53 74 61 72 66 69 73 68 20 53 79 73 74  04 Starfish Syst
89c0: 65 6d 73 2e 0a 3c 2f 70 72 65 3e 0a 3c 2f 62 6f  ems..</pre>.</bo
89d0: 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a              dy>.</html>.