Hex Artifact Content

Artifact b95229bb9c52dac80f25e897e967c4649dc85c211e8552c1aae7ac9f72970cd4:


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 3c 2f 64 64 3e 0a  al option:</dd>.
15c0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20  <blockquote>.   
15d0: 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f   <dl>..<dt><stro
15e0: 6e 67 3e 2d 61 75 74 6f 73 65 72 76 65 72 6e 61  ng>-autoserverna
15f0: 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  me</strong> <em>
1600: 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  bool</em></dt>..
1610: 3c 64 64 3e 41 75 74 6f 6d 61 74 69 63 61 6c 6c  <dd>Automaticall
1620: 79 20 73 65 6e 64 20 74 68 65 20 2d 73 65 72 76  y send the -serv
1630: 65 72 6e 61 6d 65 20 61 73 20 74 68 65 20 3c 65  ername as the <e
1640: 6d 3e 68 6f 73 74 3c 2f 65 6d 3e 20 61 72 67 75  m>host</em> argu
1650: 6d 65 6e 74 0a 09 20 20 20 20 28 64 65 66 61 75  ment..    (defau
1660: 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73 65 3c  lt is <em>false<
1670: 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 20 20 20 20 3c  /em>)</dd>.    <
1680: 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /dl>.</blockquot
1690: 65 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  e>..    <dt><a n
16a0: 61 6d 65 3d 22 74 6c 73 3a 3a 69 6d 70 6f 72 74  ame="tls::import
16b0: 22 3e 3c 62 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74  "><b>tls::import
16c0: 20 3c 2f 62 3e 3c 69 3e 63 68 61 6e 6e 65 6c 0a   </b><i>channel.
16d0: 09 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f  .?options?</i></
16e0: 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e  a></dt>.    <dd>
16f0: 53 53 4c 2d 65 6e 61 62 6c 65 20 61 20 72 65 67  SSL-enable a reg
1700: 75 6c 61 72 20 54 63 6c 20 63 68 61 6e 6e 65 6c  ular Tcl channel
1710: 20 2d 20 69 74 20 6e 65 65 64 20 6e 6f 74 20 62   - it need not b
1720: 65 20 61 0a 09 73 6f 63 6b 65 74 2c 20 62 75 74  e a..socket, but
1730: 20 6d 75 73 74 20 70 72 6f 76 69 64 65 20 62 69   must provide bi
1740: 2d 64 69 72 65 63 74 69 6f 6e 61 6c 20 66 6c 6f  -directional flo
1750: 77 2e 20 41 6c 73 6f 0a 09 73 65 74 74 69 6e 67  w. Also..setting
1760: 20 73 65 73 73 69 6f 6e 20 70 61 72 61 6d 65 74   session paramet
1770: 65 72 73 20 66 6f 72 20 53 53 4c 20 68 61 6e 64  ers for SSL hand
1780: 73 68 61 6b 65 2e 3c 2f 64 64 3e 0a 0a 3c 62 6c  shake.</dd>..<bl
1790: 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20 20 3c 64  ockquote>.    <d
17a0: 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  l>..<dt><strong>
17b0: 2d 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c  -alpn</strong> <
17c0: 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74  em>list</em></dt
17d0: 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 70  >..<dd>List of p
17e0: 72 6f 74 6f 63 6f 6c 73 20 74 6f 20 6f 66 66 65  rotocols to offe
17f0: 72 20 64 75 72 69 6e 67 20 41 70 70 6c 69 63 61  r during Applica
1800: 74 69 6f 6e 2d 4c 61 79 65 72 0a 09 20 20 20 20  tion-Layer..    
1810: 50 72 6f 74 6f 63 6f 6c 20 4e 65 67 6f 74 69 61  Protocol Negotia
1820: 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 20 46 6f 72  tion (ALPN). For
1830: 20 65 78 61 6d 70 6c 65 3a 20 3c 65 6d 3e 68 32   example: <em>h2
1840: 3c 2f 65 6d 3e 20 61 6e 64 0a 09 20 20 20 20 3c  </em> and..    <
1850: 65 6d 3e 68 74 74 70 2f 31 2e 31 3c 2f 65 6d 3e  em>http/1.1</em>
1860: 2c 20 62 75 74 20 6e 6f 74 20 3c 65 6d 3e 68 33  , but not <em>h3
1870: 3c 2f 65 6d 3e 20 6f 72 20 3c 65 6d 3e 71 75 69  </em> or <em>qui
1880: 63 3c 2f 65 6d 3e 2e 3c 2f 64 64 3e 0a 09 3c 64  c</em>.</dd>..<d
1890: 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 61 64 69 72  t><strong>-cadir
18a0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 69  </strong> <em>di
18b0: 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  r</em></dt>..<dd
18c0: 3e 53 65 74 20 74 68 65 20 43 41 20 63 65 72 74  >Set the CA cert
18d0: 69 66 69 63 61 74 65 73 20 70 61 74 68 2e 20 54  ificates path. T
18e0: 68 65 20 64 65 66 61 75 6c 74 20 64 69 72 65 63  he default direc
18f0: 74 6f 72 79 20 69 73 20 70 6c 61 74 66 6f 72 6d  tory is platform
1900: 0a 09 20 20 20 20 73 70 65 63 69 66 69 63 20 61  ..    specific a
1910: 6e 64 20 63 61 6e 20 62 65 20 73 65 74 20 61 74  nd can be set at
1920: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 54   compile time. T
1930: 68 69 73 20 63 61 6e 20 62 65 20 6f 76 65 72 72  his can be overr
1940: 69 64 64 65 6e 0a 09 20 20 20 20 76 69 61 20 74  idden..    via t
1950: 68 65 20 3c 62 3e 53 53 4c 5f 43 45 52 54 5f 44  he <b>SSL_CERT_D
1960: 49 52 3c 2f 62 3e 20 65 6e 76 69 72 6f 6e 6d 65  IR</b> environme
1970: 6e 74 20 76 61 72 69 61 62 6c 65 2e 3c 2f 64 64  nt variable.</dd
1980: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
1990: 63 61 66 69 6c 65 20 3c 2f 73 74 72 6f 6e 67 3e  cafile </strong>
19a0: 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d  <em>filename</em
19b0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 74 20  ></dt>..<dd>Set 
19c0: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
19d0: 61 75 74 68 6f 72 69 74 79 20 28 43 41 29 20 63  authority (CA) c
19e0: 65 72 74 69 66 69 63 61 74 65 73 20 66 69 6c 65  ertificates file
19f0: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a 09 20  . The default.. 
1a00: 20 20 20 69 73 20 74 68 65 20 63 65 72 74 2e 70     is the cert.p
1a10: 65 6d 20 66 69 6c 65 20 69 6e 20 74 68 65 20 4f  em file in the O
1a20: 70 73 6e 53 53 4c 20 64 69 72 65 63 74 6f 72 79  psnSSL directory
1a30: 2e 20 54 68 69 73 20 63 61 6e 20 61 6c 73 6f 20  . This can also 
1a40: 62 65 0a 09 20 20 20 20 6f 76 65 72 72 69 64 64  be..    overridd
1a50: 65 6e 20 76 69 61 20 74 68 65 20 3c 62 3e 53 53  en via the <b>SS
1a60: 4c 5f 43 45 52 54 5f 46 49 4c 45 3c 2f 62 3e 20  L_CERT_FILE</b> 
1a70: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
1a80: 61 62 6c 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  able.</dd>..<dt>
1a90: 3c 73 74 72 6f 6e 67 3e 2d 63 65 72 74 66 69 6c  <strong>-certfil
1aa0: 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66  e</strong> <em>f
1ab0: 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74  ilename</em></dt
1ac0: 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 79 20 74  >..<dd>Specify t
1ad0: 68 65 20 66 69 6c 65 6e 61 6d 65 20 77 69 74 68  he filename with
1ae0: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
1af0: 20 74 6f 20 75 73 65 2e 3c 2f 64 64 3e 0a 09 3c   to use.</dd>..<
1b00: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 65 72 74  dt><strong>-cert
1b10: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66 69  </strong> <em>fi
1b20: 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e  lename</em></dt>
1b30: 0a 09 3c 64 64 3e 53 70 65 63 69 66 79 20 74 68  ..<dd>Specify th
1b40: 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 61 20  e contents of a 
1b50: 63 65 72 74 69 66 69 63 61 74 65 20 74 6f 20 75  certificate to u
1b60: 73 65 2c 20 61 73 20 61 20 44 45 52 0a 09 20 20  se, as a DER..  
1b70: 20 20 65 6e 63 6f 64 65 64 20 62 69 6e 61 72 79    encoded binary
1b80: 20 76 61 6c 75 65 20 28 58 2e 35 30 39 20 44 45   value (X.509 DE
1b90: 52 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  R).</dd>..<dt><s
1ba0: 74 72 6f 6e 67 3e 2d 63 69 70 68 65 72 3c 2f 73  trong>-cipher</s
1bb0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e  trong> <em>strin
1bc0: 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  g</em></dt>..<dd
1bd0: 3e 4c 69 73 74 20 6f 66 20 63 69 70 68 65 72 73  >List of ciphers
1be0: 20 74 6f 20 75 73 65 2e 20 53 74 72 69 6e 67 20   to use. String 
1bf0: 69 73 20 61 20 63 6f 6c 6f 6e 20 28 22 3a 22 29  is a colon (":")
1c00: 20 73 65 70 61 72 61 74 65 64 20 6c 69 73 74 0a   separated list.
1c10: 09 20 20 20 20 6f 66 20 63 69 70 68 65 72 73 20  .    of ciphers 
1c20: 6f 72 20 63 69 70 68 65 72 20 73 75 69 74 65 73  or cipher suites
1c30: 2e 20 43 69 70 68 65 72 20 73 75 69 74 65 73 20  . Cipher suites 
1c40: 63 61 6e 20 62 65 20 63 6f 6d 62 69 6e 65 64 0a  can be combined.
1c50: 09 20 20 20 20 75 73 69 6e 67 20 74 68 65 20 3c  .    using the <
1c60: 62 3e 2b 3c 2f 62 3e 20 63 68 61 72 61 63 74 65  b>+</b> characte
1c70: 72 2e 20 50 72 65 66 69 78 65 73 20 63 61 6e 20  r. Prefixes can 
1c80: 62 65 20 75 73 65 64 20 74 6f 20 70 65 72 6d 61  be used to perma
1c90: 6e 65 6e 74 6c 79 0a 09 20 20 20 20 72 65 6d 6f  nently..    remo
1ca0: 76 65 20 28 22 21 22 29 2c 20 64 65 6c 65 74 65  ve ("!"), delete
1cb0: 20 28 22 2d 22 29 2c 20 6f 72 20 6d 6f 76 65 20   ("-"), or move 
1cc0: 61 20 63 79 70 68 65 72 20 74 6f 20 74 68 65 20  a cypher to the 
1cd0: 65 6e 64 20 6f 66 0a 09 20 20 20 20 74 68 65 20  end of..    the 
1ce0: 6c 69 73 74 20 28 22 2b 22 29 2e 20 4b 65 79 77  list ("+"). Keyw
1cf0: 6f 72 64 73 20 3c 62 3e 40 53 54 52 45 4e 47 54  ords <b>@STRENGT
1d00: 48 3c 2f 62 3e 20 28 73 6f 72 74 20 62 79 20 61  H</b> (sort by a
1d10: 6c 67 6f 72 69 74 68 6d 0a 09 20 20 20 20 6b 65  lgorithm..    ke
1d20: 79 20 6c 65 6e 67 74 68 29 2c 20 3c 62 3e 40 53  y length), <b>@S
1d30: 45 43 4c 45 56 45 4c 3d 3c 2f 62 3e 3c 69 3e 6e  ECLEVEL=</b><i>n
1d40: 3c 2f 69 3e 20 28 73 65 74 20 73 65 63 75 72 69  </i> (set securi
1d50: 74 79 20 6c 65 76 65 6c 20 74 6f 0a 09 20 20 20  ty level to..   
1d60: 20 6e 29 2c 20 61 6e 64 20 3c 62 3e 44 45 46 41   n), and <b>DEFA
1d70: 55 4c 54 3c 2f 62 3e 20 28 75 73 65 20 64 65 66  ULT</b> (use def
1d80: 61 75 6c 74 20 63 69 70 68 65 72 20 6c 69 73 74  ault cipher list
1d90: 2c 20 61 74 20 73 74 61 72 74 20 6f 6e 6c 79 29  , at start only)
1da0: 0a 09 20 20 20 20 63 61 6e 20 61 6c 73 6f 20 62  ..    can also b
1db0: 65 20 73 70 65 63 69 66 69 65 64 2e 20 53 65 65  e specified. See
1dc0: 20 4f 70 65 6e 53 53 4c 20 64 6f 63 75 6d 65 6e   OpenSSL documen
1dd0: 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 66  tation for the f
1de0: 75 6c 6c 0a 09 20 20 20 20 6c 69 73 74 20 6f 66  ull..    list of
1df0: 20 76 61 6c 69 64 20 76 61 6c 75 65 73 2e 20 28   valid values. (
1e00: 54 4c 53 20 31 2e 32 20 61 6e 64 20 65 61 72 6c  TLS 1.2 and earl
1e10: 69 65 72 20 6f 6e 6c 79 29 3c 2f 64 64 3e 0a 09  ier only)</dd>..
1e20: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 69 70  <dt><strong>-cip
1e30: 68 65 72 73 75 69 74 65 73 3c 2f 73 74 72 6f 6e  hersuites</stron
1e40: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
1e50: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73  m></dt>..<dd>Lis
1e60: 74 20 6f 66 20 63 69 70 68 65 72 20 73 75 69 74  t of cipher suit
1e70: 65 73 20 74 6f 20 75 73 65 2e 20 53 74 72 69 6e  es to use. Strin
1e80: 67 20 69 73 20 61 20 63 6f 6c 6f 6e 20 28 22 3a  g is a colon (":
1e90: 22 29 0a 09 20 20 20 20 73 65 70 61 72 61 74 65  ")..    separate
1ea0: 64 20 6c 69 73 74 20 6f 66 20 63 69 70 68 65 72  d list of cipher
1eb0: 20 73 75 69 74 65 20 6e 61 6d 65 73 2e 20 28 54   suite names. (T
1ec0: 4c 53 20 31 2e 33 20 6f 6e 6c 79 29 3c 2f 64 64  LS 1.3 only)</dd
1ed0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
1ee0: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
1ef0: 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65   <em>callback</e
1f00: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 61 6c  m></dt>..<dd>Cal
1f10: 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20  lback to invoke 
1f20: 61 74 20 73 65 76 65 72 61 6c 20 70 6f 69 6e 74  at several point
1f30: 73 20 64 75 72 69 6e 67 20 74 68 65 20 68 61 6e  s during the han
1f40: 64 73 68 61 6b 65 2e 0a 09 20 20 20 20 54 68 69  dshake...    Thi
1f50: 73 20 69 73 20 75 73 65 64 20 74 6f 20 70 61 73  s is used to pas
1f60: 73 20 65 72 72 6f 72 73 20 61 6e 64 20 74 72 61  s errors and tra
1f70: 63 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  cing information
1f80: 2c 20 61 6e 64 0a 09 20 20 20 20 69 74 20 63 61  , and..    it ca
1f90: 6e 20 61 6c 6c 6f 77 20 54 63 6c 20 73 63 72 69  n allow Tcl scri
1fa0: 70 74 73 20 74 6f 20 70 65 72 66 6f 72 6d 20 74  pts to perform t
1fb0: 68 65 69 72 20 6f 77 6e 20 63 65 72 74 69 66 69  heir own certifi
1fc0: 63 61 74 65 0a 09 20 20 20 20 76 61 6c 69 64 61  cate..    valida
1fd0: 74 69 6f 6e 20 69 6e 20 70 6c 61 63 65 20 6f 66  tion in place of
1fe0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
1ff0: 69 64 61 74 69 6f 6e 20 70 72 6f 76 69 64 65 64  idation provided
2000: 20 62 79 0a 09 20 20 20 20 4f 70 65 6e 53 53 4c   by..    OpenSSL
2010: 2e 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22 23  . See <a href="#
2020: 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53  CALLBACK OPTIONS
2030: 22 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f  ">CALLBACK OPTIO
2040: 4e 53 3c 2f 61 3e 0a 09 20 20 20 20 66 6f 72 20  NS</a>..    for 
2050: 66 75 72 74 68 65 72 20 64 69 73 63 75 73 73 69  further discussi
2060: 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  on.</dd>..<dt><s
2070: 74 72 6f 6e 67 3e 2d 64 68 70 61 72 61 6d 73 20  trong>-dhparams 
2080: 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 66 69 6c  </strong><em>fil
2090: 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  ename</em></dt>.
20a0: 09 3c 64 64 3e 53 70 65 63 69 66 79 20 74 68 65  .<dd>Specify the
20b0: 20 44 69 66 66 69 65 2d 48 65 6c 6c 6d 61 6e 20   Diffie-Hellman 
20c0: 70 61 72 61 6d 65 74 65 72 73 20 66 69 6c 65 2e  parameters file.
20d0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
20e0: 6e 67 3e 2d 6b 65 79 66 69 6c 65 3c 2f 73 74 72  ng>-keyfile</str
20f0: 6f 6e 67 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d  ong> <em>filenam
2100: 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  e</em></dt>..<dd
2110: 3e 53 70 65 63 69 66 79 20 74 68 65 20 70 72 69  >Specify the pri
2120: 76 61 74 65 20 6b 65 79 20 66 69 6c 65 2e 20 28  vate key file. (
2130: 64 65 66 61 75 6c 74 20 69 73 0a 09 20 20 20 20  default is..    
2140: 76 61 6c 75 65 20 6f 66 20 2d 63 65 72 74 66 69  value of -certfi
2150: 6c 65 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  le)</dd>..<dt><s
2160: 74 72 6f 6e 67 3e 2d 6b 65 79 3c 2f 73 74 72 6f  trong>-key</stro
2170: 6e 67 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65  ng> <em>filename
2180: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2190: 53 70 65 63 69 66 79 20 74 68 65 20 70 72 69 76  Specify the priv
21a0: 61 74 65 20 6b 65 79 20 74 6f 20 75 73 65 20 61  ate key to use a
21b0: 73 20 61 20 44 45 52 20 65 6e 63 6f 64 65 64 20  s a DER encoded 
21c0: 76 61 6c 75 65 20 28 50 4b 43 53 23 31 20 44 45  value (PKCS#1 DE
21d0: 52 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  R)</dd>..<dt><st
21e0: 72 6f 6e 67 3e 2d 6d 6f 64 65 6c 3c 2f 73 74 72  rong>-model</str
21f0: 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c  ong> <em>channel
2200: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
2210: 46 6f 72 63 65 20 74 68 69 73 20 63 68 61 6e 6e  Force this chann
2220: 65 6c 20 74 6f 20 73 68 61 72 65 20 74 68 65 20  el to share the 
2230: 73 61 6d 65 20 3c 65 6d 3e 3c 73 74 72 6f 6e 67  same <em><strong
2240: 3e 53 53 4c 5f 43 54 58 3c 2f 73 74 72 6f 6e 67  >SSL_CTX</strong
2250: 3e 3c 2f 65 6d 3e 0a 09 20 20 20 20 73 74 72 75  ></em>..    stru
2260: 63 74 75 72 65 20 61 73 20 74 68 65 20 73 70 65  cture as the spe
2270: 63 69 66 69 65 64 20 3c 65 6d 3e 63 68 61 6e 6e  cified <em>chann
2280: 65 6c 3c 2f 65 6d 3e 2c 20 61 6e 64 0a 09 20 20  el</em>, and..  
2290: 20 20 74 68 65 72 65 66 6f 72 65 20 73 68 61 72    therefore shar
22a0: 65 20 63 61 6c 6c 62 61 63 6b 73 20 65 74 63 2e  e callbacks etc.
22b0: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
22c0: 6e 67 3e 2d 70 61 73 73 77 6f 72 64 3c 2f 73 74  ng>-password</st
22d0: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61  rong> <em>callba
22e0: 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ck</em></dt>..<d
22f0: 64 3e 43 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e  d>Callback to in
2300: 76 6f 6b 65 20 77 68 65 6e 20 4f 70 65 6e 53 53  voke when OpenSS
2310: 4c 20 6e 65 65 64 73 20 74 6f 20 6f 62 74 61 69  L needs to obtai
2320: 6e 20 61 20 70 61 73 73 77 6f 72 64 2c 0a 09 20  n a password,.. 
2330: 20 20 20 74 79 70 69 63 61 6c 6c 79 20 74 6f 20     typically to 
2340: 75 6e 6c 6f 63 6b 20 74 68 65 20 70 72 69 76 61  unlock the priva
2350: 74 65 20 6b 65 79 20 6f 66 20 61 20 63 65 72 74  te key of a cert
2360: 69 66 69 63 61 74 65 2e 20 54 68 65 0a 09 20 20  ificate. The..  
2370: 20 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c    callback shoul
2380: 64 20 72 65 74 75 72 6e 20 61 20 73 74 72 69 6e  d return a strin
2390: 67 20 77 68 69 63 68 20 72 65 70 72 65 73 65 6e  g which represen
23a0: 74 73 20 74 68 65 20 70 61 73 73 77 6f 72 64 0a  ts the password.
23b0: 09 20 20 20 20 74 6f 20 62 65 20 75 73 65 64 2e  .    to be used.
23c0: 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22 23 43   See <a href="#C
23d0: 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22  ALLBACK OPTIONS"
23e0: 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e  >CALLBACK OPTION
23f0: 53 3c 2f 61 3e 0a 09 20 20 20 20 66 6f 72 20 66  S</a>..    for f
2400: 75 72 74 68 65 72 20 64 69 73 63 75 73 73 69 6f  urther discussio
2410: 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  n.</dd>..<dt><st
2420: 72 6f 6e 67 3e 2d 70 6f 73 74 5f 68 61 6e 64 73  rong>-post_hands
2430: 68 61 6b 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  hake</strong> <e
2440: 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>bool</em></dt>
2450: 0a 09 3c 64 64 3e 41 6c 6c 6f 77 20 70 6f 73 74  ..<dd>Allow post
2460: 2d 68 61 6e 64 73 68 61 6b 65 20 74 69 63 6b 65  -handshake ticke
2470: 74 20 75 70 64 61 74 65 73 2e 3c 2f 64 64 3e 0a  t updates.</dd>.
2480: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 72 65  .<dt><strong>-re
2490: 71 75 65 73 74 20 3c 2f 73 74 72 6f 6e 67 3e 3c  quest </strong><
24a0: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
24b0: 3e 0a 09 3c 64 64 3e 52 65 71 75 65 73 74 20 61  >..<dd>Request a
24c0: 20 63 65 72 74 69 66 69 63 61 74 65 20 66 72 6f   certificate fro
24d0: 6d 20 70 65 65 72 20 64 75 72 69 6e 67 20 53 53  m peer during SS
24e0: 4c 20 68 61 6e 64 73 68 61 6b 65 2e 0a 09 20 20  L handshake...  
24f0: 20 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65    (default is <e
2500: 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64  m>true</em>)</dd
2510: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
2520: 72 65 71 75 69 72 65 3c 2f 73 74 72 6f 6e 67 3e  require</strong>
2530: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f   <em>bool</em></
2540: 64 74 3e 0a 09 3c 64 64 3e 52 65 71 75 69 72 65  dt>..<dd>Require
2550: 20 61 20 76 61 6c 69 64 20 63 65 72 74 69 66 69   a valid certifi
2560: 63 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64  cate from peer d
2570: 75 72 69 6e 67 20 53 53 4c 20 68 61 6e 64 73 68  uring SSL handsh
2580: 61 6b 65 2e 0a 09 20 20 20 20 49 66 20 74 68 69  ake...    If thi
2590: 73 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 65  s is set to true
25a0: 2c 20 74 68 65 6e 20 3c 73 74 72 6f 6e 67 3e 2d  , then <strong>-
25b0: 72 65 71 75 65 73 74 3c 2f 73 74 72 6f 6e 67 3e  request</strong>
25c0: 20 6d 75 73 74 0a 09 20 20 20 20 61 6c 73 6f 20   must..    also 
25d0: 62 65 20 73 65 74 20 74 6f 20 74 72 75 65 2e 20  be set to true. 
25e0: 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e  (default is <em>
25f0: 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e  false</em>)</dd>
2600: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 73  ..<dt><strong>-s
2610: 65 63 75 72 69 74 79 5f 6c 65 76 65 6c 3c 2f 73  ecurity_level</s
2620: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 69 6e 74 65 67  trong> <em>integ
2630: 65 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  er</em></dt>..<d
2640: 64 3e 53 65 74 20 73 65 63 75 72 69 74 79 20 6c  d>Set security l
2650: 65 76 65 6c 2e 20 4d 75 73 74 20 62 65 20 30 20  evel. Must be 0 
2660: 74 6f 20 35 2e 20 54 68 65 20 73 65 63 75 72 69  to 5. The securi
2670: 74 79 20 6c 65 76 65 6c 20 61 66 66 65 63 74 73  ty level affects
2680: 0a 09 20 20 20 20 63 69 70 68 65 72 20 73 75 69  ..    cipher sui
2690: 74 65 20 65 6e 63 72 79 70 74 69 6f 6e 20 61 6c  te encryption al
26a0: 67 6f 72 69 74 68 6d 73 2c 20 73 75 70 70 6f 72  gorithms, suppor
26b0: 74 65 64 20 45 43 43 20 63 75 72 76 65 73 2c 0a  ted ECC curves,.
26c0: 09 20 20 20 20 73 75 70 70 6f 72 74 65 64 20 73  .    supported s
26d0: 69 67 6e 61 74 75 72 65 20 61 6c 67 6f 72 69 74  ignature algorit
26e0: 68 6d 73 2c 20 44 48 20 70 61 72 61 6d 65 74 65  hms, DH paramete
26f0: 72 20 73 69 7a 65 73 2c 20 63 65 72 74 69 66 69  r sizes, certifi
2700: 63 61 74 65 0a 09 20 20 20 20 6b 65 79 20 73 69  cate..    key si
2710: 7a 65 73 20 61 6e 64 20 73 69 67 6e 61 74 75 72  zes and signatur
2720: 65 20 61 6c 67 6f 72 69 74 68 6d 73 2e 20 54 68  e algorithms. Th
2730: 65 20 64 65 66 61 75 6c 74 20 69 73 20 31 2e 0a  e default is 1..
2740: 09 20 20 20 20 4c 65 76 65 6c 20 33 20 61 6e 64  .    Level 3 and
2750: 20 68 69 67 68 65 72 20 64 69 73 61 62 6c 65 20   higher disable 
2760: 73 75 70 70 6f 72 74 20 66 6f 72 20 73 65 73 73  support for sess
2770: 69 6f 6e 20 74 69 63 6b 65 74 73 20 61 6e 64 20  ion tickets and 
2780: 6f 6e 6c 79 0a 09 20 20 20 20 61 63 63 65 70 74  only..    accept
2790: 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20 74   cipher suites t
27a0: 68 61 74 20 70 72 6f 76 69 64 65 20 66 6f 72 77  hat provide forw
27b0: 61 72 64 20 73 65 63 72 65 63 79 2e 3c 2f 64 64  ard secrecy.</dd
27c0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
27d0: 73 65 72 76 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  server</strong> 
27e0: 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64  <em>bool</em></d
27f0: 74 3e 0a 09 3c 64 64 3e 48 61 6e 64 73 68 61 6b  t>..<dd>Handshak
2800: 65 20 61 73 20 73 65 72 76 65 72 20 69 66 20 74  e as server if t
2810: 72 75 65 2c 20 65 6c 73 65 20 68 61 6e 64 73 68  rue, else handsh
2820: 61 6b 65 20 61 73 0a 09 20 20 20 20 63 6c 69 65  ake as..    clie
2830: 6e 74 2e 20 28 64 65 66 61 75 6c 74 20 69 73 20  nt. (default is 
2840: 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c  <em>false</em>)<
2850: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
2860: 67 3e 2d 73 65 72 76 65 72 6e 61 6d 65 3c 2f 73  g>-servername</s
2870: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 68 6f 73 74 3c  trong> <em>host<
2880: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53  /em></dt>..<dd>S
2890: 70 65 63 69 66 79 20 73 65 72 76 65 72 20 68 6f  pecify server ho
28a0: 73 74 6e 61 6d 65 2e 20 4f 6e 6c 79 20 61 76 61  stname. Only ava
28b0: 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20 4f 70  ilable if the Op
28c0: 65 6e 53 53 4c 20 6c 69 62 72 61 72 79 0a 09 20  enSSL library.. 
28d0: 20 20 20 74 68 65 20 70 61 63 6b 61 67 65 20 69     the package i
28e0: 73 20 6c 69 6e 6b 65 64 20 61 67 61 69 6e 73 74  s linked against
28f0: 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 54 4c   supports the TL
2900: 53 20 68 6f 73 74 6e 61 6d 65 20 65 78 74 65 6e  S hostname exten
2910: 73 69 6f 6e 0a 09 20 20 20 20 66 6f 72 20 27 53  sion..    for 'S
2920: 65 72 76 65 72 20 4e 61 6d 65 20 49 6e 64 69 63  erver Name Indic
2930: 61 74 69 6f 6e 27 20 28 53 4e 49 29 2e 20 55 73  ation' (SNI). Us
2940: 65 20 74 6f 20 6e 61 6d 65 20 74 68 65 20 6c 6f  e to name the lo
2950: 67 69 63 61 6c 20 68 6f 73 74 0a 09 20 20 20 20  gical host..    
2960: 77 65 20 61 72 65 20 74 61 6c 6b 69 6e 67 20 74  we are talking t
2970: 6f 20 61 6e 64 20 65 78 70 65 63 74 69 6e 67 20  o and expecting 
2980: 61 20 63 65 72 74 69 66 69 63 61 74 65 20 66 6f  a certificate fo
2990: 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  r.</dd>..<dt><st
29a0: 72 6f 6e 67 3e 2d 73 65 73 73 69 6f 6e 5f 69 64  rong>-session_id
29b0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74  </strong> <em>st
29c0: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
29d0: 3c 64 64 3e 53 65 73 73 69 6f 6e 20 69 64 20 74  <dd>Session id t
29e0: 6f 20 72 65 73 75 6d 65 20 73 65 73 73 69 6f 6e  o resume session
29f0: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
2a00: 6f 6e 67 3e 2d 73 73 6c 32 3c 2f 73 74 72 6f 6e  ong>-ssl2</stron
2a10: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e  g> <em>bool</em>
2a20: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c  </dt>..<dd>Enabl
2a30: 65 20 75 73 65 20 6f 66 20 53 53 4c 20 76 32 2e  e use of SSL v2.
2a40: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d   (default is <em
2a50: 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c 2f 64 64  >false</em>)</dd
2a60: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
2a70: 73 73 6c 33 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65  ssl3 </strong><e
2a80: 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>bool</em></dt>
2a90: 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65  ..<dd>Enable use
2aa0: 20 6f 66 20 53 53 4c 20 76 33 2e 20 28 64 65 66   of SSL v3. (def
2ab0: 61 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73  ault is <em>fals
2ac0: 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c 64  e</em>)</dd>..<d
2ad0: 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c 73 31 3c  t>-<strong>tls1<
2ae0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
2af0: 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  l</em></dt>..<dd
2b00: 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 54  >Enable use of T
2b10: 4c 53 20 76 31 2e 20 28 64 65 66 61 75 6c 74 20  LS v1. (default 
2b20: 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e  is <em>true</em>
2b30: 29 3c 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74  )</dd>..<dt>-<st
2b40: 72 6f 6e 67 3e 74 6c 73 31 2e 31 3c 2f 73 74 72  rong>tls1.1</str
2b50: 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65  ong> <em>bool</e
2b60: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61  m></dt>..<dd>Ena
2b70: 62 6c 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76  ble use of TLS v
2b80: 31 2e 31 20 28 64 65 66 61 75 6c 74 20 69 73 20  1.1 (default is 
2b90: 3c 65 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f  <em>true</em>)</
2ba0: 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e  dd>..<dt>-<stron
2bb0: 67 3e 74 6c 73 31 2e 32 3c 2f 73 74 72 6f 6e 67  g>tls1.2</strong
2bc0: 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c  > <em>bool</em><
2bd0: 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65  /dt>..<dd>Enable
2be0: 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31 2e 32   use of TLS v1.2
2bf0: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d   (default is <em
2c00: 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e  >true</em>)</dd>
2c10: 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74  ..<dt>-<strong>t
2c20: 6c 73 31 2e 33 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ls1.3</strong> <
2c30: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
2c40: 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73  >..<dd>Enable us
2c50: 65 20 6f 66 20 54 4c 53 20 76 31 2e 33 20 28 64  e of TLS v1.3 (d
2c60: 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72  efault is <em>tr
2c70: 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09 3c  ue</em>)</dd>..<
2c80: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69  dt><strong>-vali
2c90: 64 61 74 65 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  datecommand</str
2ca0: 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63  ong> <em>callbac
2cb0: 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  k</em></dt>..<dd
2cc0: 3e 43 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76  >Callback to inv
2cd0: 6f 6b 65 20 74 6f 20 76 65 72 69 66 79 20 6f 72  oke to verify or
2ce0: 20 76 61 6c 69 64 61 74 65 20 70 72 6f 74 6f 63   validate protoc
2cf0: 6f 6c 20 63 6f 6e 66 69 67 0a 09 20 20 20 20 70  ol config..    p
2d00: 61 72 61 6d 65 74 65 72 73 20 64 75 72 69 6e 67  arameters during
2d10: 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 20 6e 65   the protocol ne
2d20: 67 6f 74 69 61 74 69 6f 6e 20 70 68 61 73 65 2e  gotiation phase.
2d30: 20 53 65 65 0a 09 20 20 20 20 3c 61 20 68 72 65   See..    <a hre
2d40: 66 3d 22 23 43 41 4c 4c 42 41 43 4b 20 4f 50 54  f="#CALLBACK OPT
2d50: 49 4f 4e 53 22 3e 43 41 4c 4c 42 41 43 4b 20 4f  IONS">CALLBACK O
2d60: 50 54 49 4f 4e 53 3c 2f 61 3e 0a 09 20 20 20 20  PTIONS</a>..    
2d70: 66 6f 72 20 66 75 72 74 68 65 72 20 64 69 73 63  for further disc
2d80: 75 73 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 20 20 20  ussion.</dd>.   
2d90: 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75   </dl>.</blockqu
2da0: 6f 74 65 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61  ote>..    <dt><a
2db0: 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 75 6e 69 6d   name="tls::unim
2dc0: 70 6f 72 74 22 3e 3c 62 3e 74 6c 73 3a 3a 75 6e  port"><b>tls::un
2dd0: 69 6d 70 6f 72 74 20 3c 2f 62 3e 3c 69 3e 63 68  import </b><i>ch
2de0: 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64  annel</i></a></d
2df0: 74 3e 0a 20 20 20 20 3c 64 64 3e 50 72 6f 76 69  t>.    <dd>Provi
2e00: 64 65 64 20 66 6f 72 20 73 79 6d 6d 65 74 72 79  ded for symmetry
2e10: 20 74 6f 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a   to <strong>tls:
2e20: 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e  :import</strong>
2e30: 2c 20 74 68 69 73 0a 20 20 20 20 20 20 75 6e 73  , this.      uns
2e40: 74 61 63 6b 73 20 74 68 65 20 53 53 4c 2d 65 6e  tacks the SSL-en
2e50: 61 62 6c 69 6e 67 20 6f 66 20 61 20 72 65 67 75  abling of a regu
2e60: 6c 61 72 20 54 63 6c 20 63 68 61 6e 6e 65 6c 2e  lar Tcl channel.
2e70: 20 20 41 6e 20 65 72 72 6f 72 0a 20 20 20 20 20    An error.     
2e80: 20 69 73 20 74 68 72 6f 77 6e 20 69 66 20 54 4c   is thrown if TL
2e90: 53 20 69 73 20 6e 6f 74 20 74 68 65 20 74 6f 70  S is not the top
2ea0: 20 73 74 61 63 6b 65 64 20 63 68 61 6e 6e 65 6c   stacked channel
2eb0: 20 74 79 70 65 2e 3c 2f 64 64 3e 0a 20 20 20 20   type.</dd>.    
2ec0: 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a  <dt>&nbsp;</dt>.
2ed0: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
2ee0: 22 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 22  "tls::handshake"
2ef0: 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 68 61  ><strong>tls::ha
2f00: 6e 64 73 68 61 6b 65 3c 2f 73 74 72 6f 6e 67 3e  ndshake</strong>
2f10: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d   <em>channel</em
2f20: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
2f30: 64 64 3e 46 6f 72 63 65 73 20 68 61 6e 64 73 68  dd>Forces handsh
2f40: 61 6b 65 20 74 6f 20 74 61 6b 65 20 70 6c 61 63  ake to take plac
2f50: 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 73 20 30  e, and returns 0
2f60: 20 69 66 0a 09 68 61 6e 64 73 68 61 6b 65 20 69   if..handshake i
2f70: 73 20 73 74 69 6c 6c 20 69 6e 20 70 72 6f 67 72  s still in progr
2f80: 65 73 73 20 28 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e  ess (non-blockin
2f90: 67 29 2c 20 6f 72 20 31 20 69 66 0a 09 74 68 65  g), or 1 if..the
2fa0: 20 68 61 6e 64 73 68 61 6b 65 20 77 61 73 20 73   handshake was s
2fb0: 75 63 63 65 73 73 66 75 6c 2e 20 49 66 20 74 68  uccessful. If th
2fc0: 65 20 68 61 6e 64 73 68 61 6b 65 20 66 61 69 6c  e handshake fail
2fd0: 65 64 0a 09 74 68 69 73 20 72 6f 75 74 69 6e 65  ed..this routine
2fe0: 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 65   will throw an e
2ff0: 72 72 6f 72 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c  rror.</dd>.    <
3000: 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 20  dt>&nbsp;</dt>. 
3010: 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22     <dt><a name="
3020: 74 6c 73 3a 3a 73 74 61 74 75 73 22 3e 3c 73 74  tls::status"><st
3030: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 74 61 74 75 73  rong>tls::status
3040: 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20 3c 65  </strong>.    <e
3050: 6d 3e 3f 3c 2f 65 6d 3e 3c 62 3e 2d 6c 6f 63 61  m>?</em><b>-loca
3060: 6c 3c 2f 62 3e 3c 65 6d 3e 3f 20 63 68 61 6e 6e  l</b><em>? chann
3070: 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  el</em></a></dt>
3080: 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73  .    <dd>Returns
3090: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
30a0: 74 75 73 20 6f 66 20 74 68 65 20 63 65 72 74 69  tus of the certi
30b0: 66 69 63 61 74 65 20 66 6f 72 20 61 6e 20 53 53  ficate for an SS
30c0: 4c 0a 09 63 68 61 6e 6e 65 6c 2e 20 54 68 65 20  L..channel. The 
30d0: 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69 73 74  result is a list
30e0: 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70 61   of key-value pa
30f0: 69 72 73 20 64 65 73 63 72 69 62 69 6e 67 0a 09  irs describing..
3100: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2e  the certificate.
3110: 20 49 66 20 74 68 65 20 53 53 4c 20 68 61 6e 64   If the SSL hand
3120: 73 68 61 6b 65 20 68 61 73 20 6e 6f 74 20 79 65  shake has not ye
3130: 74 20 63 6f 6d 70 6c 65 74 65 64 2c 0a 09 61 6e  t completed,..an
3140: 20 65 6d 70 74 79 20 6c 69 73 74 20 69 73 20 72   empty list is r
3150: 65 74 75 72 6e 65 64 2e 20 49 66 20 3c 62 3e 2d  eturned. If <b>-
3160: 6c 6f 63 61 6c 3c 2f 62 3e 20 69 73 0a 09 73 70  local</b> is..sp
3170: 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68  ecified, then th
3180: 65 20 6c 6f 63 61 6c 20 63 65 72 74 69 66 69 63  e local certific
3190: 61 74 65 20 69 73 20 75 73 65 64 2e 3c 2f 64 64  ate is used.</dd
31a0: 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09  >.<blockquote>..
31b0: 3c 62 3e 53 53 4c 20 53 74 61 74 75 73 3c 2f 62  <b>SSL Status</b
31c0: 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e  >.    <dl>..<dt>
31d0: 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73 74  <strong>alpn</st
31e0: 72 6f 6e 67 3e 20 3c 65 6d 3e 70 72 6f 74 6f 63  rong> <em>protoc
31f0: 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ol</em></dt>..<d
3200: 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20 73  d>The protocol s
3210: 65 6c 65 63 74 65 64 20 61 66 74 65 72 20 41 70  elected after Ap
3220: 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79 65 72 20  plication-Layer 
3230: 50 72 6f 74 6f 63 6f 6c 0a 09 20 20 20 20 4e 65  Protocol..    Ne
3240: 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50 4e 29  gotiation (ALPN)
3250: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3260: 6f 6e 67 3e 63 69 70 68 65 72 3c 2f 73 74 72 6f  ong>cipher</stro
3270: 6e 67 3e 20 3c 65 6d 3e 63 69 70 68 65 72 3c 2f  ng> <em>cipher</
3280: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3290: 65 20 63 75 72 72 65 6e 74 20 63 69 70 68 65 72  e current cipher
32a0: 20 69 6e 20 75 73 65 20 62 65 74 77 65 65 6e 20   in use between 
32b0: 74 68 65 20 63 6c 69 65 6e 74 20 61 6e 64 0a 09  the client and..
32c0: 20 20 20 20 73 65 72 76 65 72 20 63 68 61 6e 6e      server chann
32d0: 65 6c 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  els.</dd>..<dt><
32e0: 73 74 72 6f 6e 67 3e 70 65 65 72 6e 61 6d 65 3c  strong>peername<
32f0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 61 6d  /strong> <em>nam
3300: 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  e</em></dt>..<dd
3310: 3e 54 68 65 20 70 65 65 72 6e 61 6d 65 20 66 72  >The peername fr
3320: 6f 6d 20 74 68 65 20 63 65 72 74 69 66 69 63 61  om the certifica
3330: 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  te.</dd>..<dt><s
3340: 74 72 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c 3c 2f  trong>protocol</
3350: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72 73  strong> <em>vers
3360: 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ion</em></dt>..<
3370: 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20  dd>The protocol 
3380: 76 65 72 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  version used for
3390: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a   the connection:
33a0: 0a 09 20 20 20 20 53 53 4c 32 2c 20 53 53 4c 33  ..    SSL2, SSL3
33b0: 2c 20 54 4c 53 31 2c 20 54 4c 53 31 2e 31 2c 20  , TLS1, TLS1.1, 
33c0: 54 4c 53 31 2e 32 2c 20 54 4c 53 31 2e 33 2c 20  TLS1.2, TLS1.3, 
33d0: 6f 72 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64 64 3e  or unknown.</dd>
33e0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 62  ..<dt><strong>sb
33f0: 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  its</strong> <em
3400: 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  >n</em></dt>..<d
3410: 64 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  d>The number of 
3420: 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 74 68  bits used for th
3430: 65 20 73 65 73 73 69 6f 6e 20 6b 65 79 2e 3c 2f  e session key.</
3440: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3450: 3e 73 69 67 6e 61 74 75 72 65 48 61 73 68 41 6c  >signatureHashAl
3460: 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67 3e  gorithm</strong>
3470: 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f   <em>algorithm</
3480: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68  em></dt>..<dd>Th
3490: 65 20 73 69 67 6e 61 74 75 72 65 20 68 61 73 68  e signature hash
34a0: 20 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64 3e   algorithm.</dd>
34b0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69  ..<dt><strong>si
34c0: 67 6e 61 74 75 72 65 54 79 70 65 3c 2f 73 74 72  gnatureType</str
34d0: 6f 6e 67 3e 20 3c 65 6d 3e 74 79 70 65 3c 2f 65  ong> <em>type</e
34e0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
34f0: 20 73 69 67 6e 61 74 75 72 65 20 74 79 70 65 20   signature type 
3500: 76 61 6c 75 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74  value.</dd>..<dt
3510: 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66 79 44  ><strong>verifyD
3520: 65 70 74 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  epth</strong> <e
3530: 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  m>n</em></dt>..<
3540: 64 64 3e 4d 61 78 69 6d 75 6d 20 64 65 70 74 68  dd>Maximum depth
3550: 20 66 6f 72 20 74 68 65 20 63 65 72 74 69 66 69   for the certifi
3560: 63 61 74 65 20 63 68 61 69 6e 20 76 65 72 69 66  cate chain verif
3570: 69 63 61 74 69 6f 6e 2e 0a 09 20 20 20 20 44 65  ication...    De
3580: 66 61 75 6c 74 20 69 73 20 2d 31 2c 20 74 6f 20  fault is -1, to 
3590: 63 68 65 63 6b 20 61 6c 6c 2e 3c 2f 64 64 3e 0a  check all.</dd>.
35a0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72  .<dt><strong>ver
35b0: 69 66 79 4d 6f 64 65 3c 2f 73 74 72 6f 6e 67 3e  ifyMode</strong>
35c0: 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f   <em>list</em></
35d0: 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66  dt>..<dd>List of
35e0: 20 63 65 72 74 69 66 69 63 61 74 65 20 76 65 72   certificate ver
35f0: 69 66 69 63 61 74 69 6f 6e 20 6d 6f 64 65 73 2e  ification modes.
3600: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
3610: 6e 67 3e 76 65 72 69 66 79 52 65 73 75 6c 74 3c  ng>verifyResult<
3620: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 72 65 73  /strong> <em>res
3630: 75 6c 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ult</em></dt>..<
3640: 64 64 3e 43 65 72 74 69 66 69 63 61 74 65 20 76  dd>Certificate v
3650: 65 72 69 66 69 63 61 74 69 6f 6e 20 72 65 73 75  erification resu
3660: 6c 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  lt.</dd>..<dt><s
3670: 74 72 6f 6e 67 3e 63 61 5f 6e 61 6d 65 73 3c 2f  trong>ca_names</
3680: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74  strong> <em>list
3690: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
36a0: 4c 69 73 74 20 6f 66 20 74 68 65 20 43 65 72 74  List of the Cert
36b0: 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74  ificate Authorit
36c0: 69 65 73 20 75 73 65 64 20 74 6f 20 63 72 65 61  ies used to crea
36d0: 74 65 20 74 68 65 20 63 65 72 74 69 66 69 63 61  te the certifica
36e0: 74 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64  te.</dd>.    </d
36f0: 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  l>.</blockquote>
3700: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c  .<blockquote>..<
3710: 62 3e 43 65 72 74 69 66 69 63 61 74 65 20 53 74  b>Certificate St
3720: 61 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c  atus</b>.    <dl
3730: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61  >..<dt><strong>a
3740: 6c 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ll</strong> <em>
3750: 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e  string</em></dt>
3760: 0a 09 3c 64 64 3e 44 75 6d 70 20 6f 66 20 61 6c  ..<dd>Dump of al
3770: 6c 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e  l certificate in
3780: 66 6f 2e 3c 2f 64 64 3e 0a 0a 09 3c 64 74 3e 3c  fo.</dd>...<dt><
3790: 73 74 72 6f 6e 67 3e 76 65 72 73 69 6f 6e 3c 2f  strong>version</
37a0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76 61 6c 75  strong> <em>valu
37b0: 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  e</em></dt>..<dd
37c0: 3e 54 68 65 20 63 65 72 74 69 66 69 63 61 74 65  >The certificate
37d0: 20 76 65 72 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09   version.</dd>..
37e0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 72 69  <dt><strong>seri
37f0: 61 6c 4e 75 6d 62 65 72 3c 2f 73 74 72 6f 6e 67  alNumber</strong
3800: 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74  > <em>n</em></dt
3810: 3e 0a 09 3c 64 64 3e 54 68 65 20 73 65 72 69 61  >..<dd>The seria
3820: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20  l number of the 
3830: 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20 68  certificate as h
3840: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
3850: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 67  .<dt><strong>sig
3860: 6e 61 74 75 72 65 3c 2f 73 74 72 6f 6e 67 3e 20  nature</strong> 
3870: 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f 65  <em>algorithm</e
3880: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 69 70  m></dt>..<dd>Cip
3890: 68 65 72 20 61 6c 67 6f 72 69 74 68 6d 20 75 73  her algorithm us
38a0: 65 64 20 66 6f 72 20 63 65 72 74 69 66 69 63 61  ed for certifica
38b0: 74 65 20 73 69 67 6e 61 74 75 72 65 2e 3c 2f 64  te signature.</d
38c0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
38d0: 69 73 73 75 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  issuer</strong> 
38e0: 3c 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e  <em>dn</em></dt>
38f0: 0a 09 3c 64 64 3e 54 68 65 20 64 69 73 74 69 6e  ..<dd>The distin
3900: 67 75 69 73 68 65 64 20 6e 61 6d 65 20 28 44 4e  guished name (DN
3910: 29 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69  ) of the certifi
3920: 63 61 74 65 20 69 73 73 75 65 72 2e 3c 2f 64 64  cate issuer.</dd
3930: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e  >..<dt><strong>n
3940: 6f 74 42 65 66 6f 72 65 3c 2f 73 74 72 6f 6e 67  otBefore</strong
3950: 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c  > <em>date</em><
3960: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 62 65  /dt>..<dd>The be
3970: 67 69 6e 20 64 61 74 65 20 66 6f 72 20 74 68 65  gin date for the
3980: 20 76 61 6c 69 64 69 74 79 20 6f 66 20 74 68 65   validity of the
3990: 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64   certificate.</d
39a0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
39b0: 6e 6f 74 41 66 74 65 72 3c 2f 73 74 72 6f 6e 67  notAfter</strong
39c0: 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c  > <em>date</em><
39d0: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 65 78  /dt>..<dd>The ex
39e0: 70 69 72 61 74 69 6f 6e 20 64 61 74 65 20 66 6f  piration date fo
39f0: 72 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74  r the certificat
3a00: 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  e.</dd>..<dt><st
3a10: 72 6f 6e 67 3e 73 75 62 6a 65 63 74 3c 2f 73 74  rong>subject</st
3a20: 72 6f 6e 67 3e 20 3c 65 6d 3e 64 6e 3c 2f 65 6d  rong> <em>dn</em
3a30: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
3a40: 64 69 73 74 69 6e 67 75 69 73 68 65 64 20 6e 61  distinguished na
3a50: 6d 65 20 28 44 4e 29 20 6f 66 20 74 68 65 20 63  me (DN) of the c
3a60: 65 72 74 69 66 69 63 61 74 65 20 73 75 62 6a 65  ertificate subje
3a70: 63 74 2e 0a 09 20 20 20 20 46 69 65 6c 64 73 20  ct...    Fields 
3a80: 69 6e 63 6c 75 64 65 3a 20 43 6f 6d 6d 6f 6e 20  include: Common 
3a90: 4e 61 6d 65 20 28 43 4e 29 2c 20 4f 72 67 61 6e  Name (CN), Organ
3aa0: 69 7a 61 74 69 6f 6e 20 28 4f 29 2c 20 4c 6f 63  ization (O), Loc
3ab0: 61 6c 69 74 79 0a 09 20 20 20 20 6f 72 20 43 69  ality..    or Ci
3ac0: 74 79 20 28 4c 29 2c 20 53 74 61 74 65 20 6f 72  ty (L), State or
3ad0: 20 50 72 6f 76 69 6e 63 65 20 28 53 29 2c 20 61   Province (S), a
3ae0: 6e 64 20 43 6f 75 6e 74 72 79 20 4e 61 6d 65 20  nd Country Name 
3af0: 28 43 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  (C).</dd>..<dt><
3b00: 73 74 72 6f 6e 67 3e 69 73 73 75 65 72 55 6e 69  strong>issuerUni
3b10: 71 75 65 49 44 3c 2f 73 74 72 6f 6e 67 3e 20 3c  queID</strong> <
3b20: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
3b30: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 69 73 73  dt>..<dd>The iss
3b40: 75 65 72 20 75 6e 69 71 75 65 20 69 64 2e 3c 2f  uer unique id.</
3b50: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3b60: 3e 73 75 62 6a 65 63 74 55 6e 69 71 75 65 49 44  >subjectUniqueID
3b70: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74  </strong> <em>st
3b80: 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  ring</em></dt>..
3b90: 3c 64 64 3e 54 68 65 20 73 75 62 6a 65 63 74 20  <dd>The subject 
3ba0: 75 6e 69 71 75 65 20 69 64 2e 3c 2f 64 64 3e 0a  unique id.</dd>.
3bb0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e 75  ..<dt><strong>nu
3bc0: 6d 5f 65 78 74 65 6e 73 69 6f 6e 73 3c 2f 73 74  m_extensions</st
3bd0: 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e  rong> <em>n</em>
3be0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4e 75 6d 62 65  </dt>..<dd>Numbe
3bf0: 72 20 6f 66 20 63 65 72 74 69 66 69 63 61 74 65  r of certificate
3c00: 20 65 78 74 65 6e 73 69 6f 6e 73 2e 3c 2f 64 64   extensions.</dd
3c10: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 65  >..<dt><strong>e
3c20: 78 74 65 6e 73 69 6f 6e 73 3c 2f 73 74 72 6f 6e  xtensions</stron
3c30: 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e  g> <em>list</em>
3c40: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20  </dt>..<dd>List 
3c50: 6f 66 20 63 65 72 74 69 66 69 63 61 74 65 20 65  of certificate e
3c60: 78 74 65 6e 73 69 6f 6e 20 6e 61 6d 65 73 2e 3c  xtension names.<
3c70: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
3c80: 67 3e 61 75 74 68 6f 72 69 74 79 4b 65 79 49 64  g>authorityKeyId
3c90: 65 6e 74 69 66 69 65 72 3c 2f 73 74 72 6f 6e 67  entifier</strong
3ca0: 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d  > <em>string</em
3cb0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 28 41 4b 49  ></dt>..<dd>(AKI
3cc0: 29 20 4b 65 79 20 69 64 65 6e 74 69 66 69 65 72  ) Key identifier
3cd0: 20 6f 66 20 74 68 65 20 49 73 73 75 69 6e 67 20   of the Issuing 
3ce0: 43 41 20 63 65 72 74 69 66 69 63 61 74 65 20 74  CA certificate t
3cf0: 68 61 74 20 73 69 67 6e 65 64 0a 09 20 20 20 20  hat signed..    
3d00: 74 68 65 20 53 53 4c 20 63 65 72 74 69 66 69 63  the SSL certific
3d10: 61 74 65 20 61 73 20 68 65 78 20 73 74 72 69 6e  ate as hex strin
3d20: 67 2e 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61  g. This value ma
3d30: 74 63 68 65 73 20 74 68 65 20 53 4b 49 0a 09 20  tches the SKI.. 
3d40: 20 20 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20     value of the 
3d50: 49 6e 74 65 72 6d 65 64 69 61 74 65 20 43 41 20  Intermediate CA 
3d60: 63 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64  certificate.</dd
3d70: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73  >..<dt><strong>s
3d80: 75 62 6a 65 63 74 4b 65 79 49 64 65 6e 74 69 66  ubjectKeyIdentif
3d90: 69 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ier</strong> <em
3da0: 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74  >string</em></dt
3db0: 3e 0a 09 3c 64 64 3e 28 53 4b 49 29 20 48 61 73  >..<dd>(SKI) Has
3dc0: 68 20 6f 66 20 74 68 65 20 70 75 62 6c 69 63 20  h of the public 
3dd0: 6b 65 79 20 69 6e 73 69 64 65 20 74 68 65 20 63  key inside the c
3de0: 65 72 74 69 66 69 63 61 74 65 20 61 73 20 68 65  ertificate as he
3df0: 78 0a 09 20 20 20 73 74 72 69 6e 67 2e 20 55 73  x..   string. Us
3e00: 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 63  ed to identify c
3e10: 65 72 74 69 66 69 63 61 74 65 73 20 74 68 61 74  ertificates that
3e20: 20 63 6f 6e 74 61 69 6e 20 61 20 70 61 72 74 69   contain a parti
3e30: 63 75 6c 61 72 0a 09 20 20 20 70 75 62 6c 69 63  cular..   public
3e40: 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e   key.</dd>..<dt>
3e50: 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63 74 41  <strong>subjectA
3e60: 6c 74 4e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20  ltName</strong> 
3e70: 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64  <em>list</em></d
3e80: 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20  t>..<dd>List of 
3e90: 61 6c 6c 20 6f 66 20 74 68 65 20 61 6c 74 65 72  all of the alter
3ea0: 6e 61 74 69 76 65 20 64 6f 6d 61 69 6e 20 6e 61  native domain na
3eb0: 6d 65 73 2c 20 73 75 62 20 64 6f 6d 61 69 6e 73  mes, sub domains
3ec0: 2c 0a 09 20 20 20 20 61 6e 64 20 49 50 20 61 64  ,..    and IP ad
3ed0: 64 72 65 73 73 65 73 20 74 68 61 74 20 61 72 65  dresses that are
3ee0: 20 73 65 63 75 72 65 64 20 62 79 20 74 68 65 20   secured by the 
3ef0: 63 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64  certificate.</dd
3f00: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6f  >..<dt><strong>o
3f10: 63 73 70 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  csp</strong> <em
3f20: 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >list</em></dt>.
3f30: 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 61 6c 6c  .<dd>List of all
3f40: 20 4f 6e 6c 69 6e 65 20 43 65 72 74 69 66 69 63   Online Certific
3f50: 61 74 65 20 53 74 61 74 75 73 20 50 72 6f 74 6f  ate Status Proto
3f60: 63 6f 6c 20 28 4f 43 53 50 29 20 55 52 4c 73 2e  col (OCSP) URLs.
3f70: 3c 2f 64 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72  </dd>...<dt><str
3f80: 6f 6e 67 3e 63 65 72 74 69 66 69 63 61 74 65 3c  ong>certificate<
3f90: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 65 72  /strong> <em>cer
3fa0: 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  t</em></dt>..<dd
3fb0: 3e 54 68 65 20 50 45 4d 20 65 6e 63 6f 64 65 64  >The PEM encoded
3fc0: 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c 2f 64   certificate.</d
3fd0: 64 3e 0a 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  d>...<dt><strong
3fe0: 3e 73 69 67 6e 61 74 75 72 65 41 6c 67 6f 72 69  >signatureAlgori
3ff0: 74 68 6d 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  thm</strong> <em
4000: 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f 65 6d 3e 3c  >algorithm</em><
4010: 2f 64 74 3e 0a 09 3c 64 64 3e 43 69 70 68 65 72  /dt>..<dd>Cipher
4020: 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64 20   algorithm used 
4030: 66 6f 72 20 63 65 72 74 69 66 69 63 61 74 65 20  for certificate 
4040: 73 69 67 6e 61 74 75 72 65 2e 3c 2f 64 64 3e 0a  signature.</dd>.
4050: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 67  .<dt><strong>sig
4060: 6e 61 74 75 72 65 56 61 6c 75 65 3c 2f 73 74 72  natureValue</str
4070: 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c  ong> <em>string<
4080: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43  /em></dt>..<dd>C
4090: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61  ertificate signa
40a0: 74 75 72 65 20 61 73 20 68 65 78 20 73 74 72 69  ture as hex stri
40b0: 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ng.</dd>..<dt><s
40c0: 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 44  trong>signatureD
40d0: 69 67 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c  igest</strong> <
40e0: 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c  em>version</em><
40f0: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66  /dt>..<dd>Certif
4100: 69 63 61 74 65 20 73 69 67 6e 69 6e 67 20 64 69  icate signing di
4110: 67 65 73 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  gest.</dd>..<dt>
4120: 3c 73 74 72 6f 6e 67 3e 70 75 62 6c 69 63 4b 65  <strong>publicKe
4130: 79 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f  yAlgorithm</stro
4140: 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68  ng> <em>algorith
4150: 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  m</em></dt>..<dd
4160: 3e 43 65 72 74 69 66 69 63 61 74 65 20 73 69 67  >Certificate sig
4170: 6e 61 74 75 72 65 20 70 75 62 6c 69 63 20 6b 65  nature public ke
4180: 79 20 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64  y algorithm.</dd
4190: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70  >..<dt><strong>p
41a0: 75 62 6c 69 63 4b 65 79 3c 2f 73 74 72 6f 6e 67  ublicKey</strong
41b0: 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d  > <em>string</em
41c0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74  ></dt>..<dd>Cert
41d0: 69 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72  ificate signatur
41e0: 65 20 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20  e public key as 
41f0: 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e  hex string.</dd>
4200: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 62 69  ..<dt><strong>bi
4210: 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ts</strong> <em>
4220: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  n</em></dt>..<dd
4230: 3e 4e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20  >Number of bits 
4240: 75 73 65 64 20 66 6f 72 20 63 65 72 74 69 66 69  used for certifi
4250: 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 6b  cate signature k
4260: 65 79 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  ey</dd>..<dt><st
4270: 72 6f 6e 67 3e 73 65 6c 66 5f 73 69 67 6e 65 64  rong>self_signed
4280: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f  </strong> <em>bo
4290: 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  olean</em></dt>.
42a0: 09 3c 64 64 3e 49 73 20 63 65 72 74 69 66 69 63  .<dd>Is certific
42b0: 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 73 65  ate signature se
42c0: 6c 66 20 73 69 67 6e 65 64 2e 3c 2f 64 64 3e 0a  lf signed.</dd>.
42d0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 68  ..<dt><strong>sh
42e0: 61 31 5f 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e  a1_hash</strong>
42f0: 20 3c 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f   <em>hash</em></
4300: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 53 48 41  dt>..<dd>The SHA
4310: 31 20 68 61 73 68 20 6f 66 20 74 68 65 20 63 65  1 hash of the ce
4320: 72 74 69 66 69 63 61 74 65 20 61 73 20 68 65 78  rtificate as hex
4330: 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c   string.</dd>..<
4340: 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 32 35  dt><strong>sha25
4350: 36 5f 68 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20  6_hash</strong> 
4360: 3c 65 6d 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64  <em>hash</em></d
4370: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 53 48 41 32  t>..<dd>The SHA2
4380: 35 36 20 68 61 73 68 20 6f 66 20 74 68 65 20 63  56 hash of the c
4390: 65 72 74 69 66 69 63 61 74 65 20 61 73 20 68 65  ertificate as he
43a0: 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 20  x string.</dd>. 
43b0: 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b     </dl>.</block
43c0: 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c 64 74 3e  quote>..    <dt>
43d0: 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 63 6f  <a name="tls::co
43e0: 6e 6e 65 63 74 69 6f 6e 22 3e 3c 73 74 72 6f 6e  nnection"><stron
43f0: 67 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 63 74 69 6f  g>tls::connectio
4400: 6e 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20 20 20 3c  n</strong>.    <
4410: 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c  em>channel</em><
4420: 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64  /a></dt>.    <dd
4430: 3e 52 65 74 75 72 6e 73 20 74 68 65 20 63 75 72  >Returns the cur
4440: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
4450: 73 74 61 74 75 73 20 6f 66 20 61 6e 20 53 53 4c  status of an SSL
4460: 20 63 68 61 6e 6e 65 6c 2e 20 54 68 65 0a 09 72   channel. The..r
4470: 65 73 75 6c 74 20 69 73 20 61 20 6c 69 73 74 20  esult is a list 
4480: 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69  of key-value pai
4490: 72 73 20 64 65 73 63 72 69 62 69 6e 67 20 74 68  rs describing th
44a0: 65 0a 09 63 6f 6e 6e 65 63 74 65 64 20 70 65 65  e..connected pee
44b0: 72 2e 3c 2f 64 64 3e 0a 3c 62 6c 6f 63 6b 71 75  r.</dd>.<blockqu
44c0: 6f 74 65 3e 0a 09 3c 62 3e 53 53 4c 20 53 74 61  ote>..<b>SSL Sta
44d0: 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e  tus</b>.    <dl>
44e0: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 74  ..<dt><strong>st
44f0: 61 74 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ate</strong> <em
4500: 3e 73 74 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74 3e  >state</em></dt>
4510: 0a 09 3c 64 64 3e 53 74 61 74 65 20 6f 66 20 74  ..<dd>State of t
4520: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f  he connection.</
4530: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4540: 3e 73 65 72 76 65 72 6e 61 6d 65 3c 2f 73 74 72  >servername</str
4550: 6f 6e 67 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65  ong> <em>name</e
4560: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
4570: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6e   name of the con
4580: 6e 65 63 74 65 64 20 74 6f 20 73 65 72 76 65 72  nected to server
4590: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
45a0: 6f 6e 67 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 73 74  ong>protocol</st
45b0: 72 6f 6e 67 3e 20 3c 65 6d 3e 76 65 72 73 69 6f  rong> <em>versio
45c0: 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  n</em></dt>..<dd
45d0: 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20 76 65  >The protocol ve
45e0: 72 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74  rsion used for t
45f0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a 0a 09  he connection:..
4600: 20 20 20 20 53 53 4c 32 2c 20 53 53 4c 33 2c 20      SSL2, SSL3, 
4610: 54 4c 53 31 2c 20 54 4c 53 31 2e 31 2c 20 54 4c  TLS1, TLS1.1, TL
4620: 53 31 2e 32 2c 20 54 4c 53 31 2e 33 2c 20 6f 72  S1.2, TLS1.3, or
4630: 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f 64 64 3e 0a 09   unknown.</dd>..
4640: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 72 65 6e 65  <dt><strong>rene
4650: 67 6f 74 69 61 74 69 6f 6e 5f 61 6c 6c 6f 77 65  gotiation_allowe
4660: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  d</strong> <em>b
4670: 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e  oolean</em></dt>
4680: 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20 70 72  ..<dd>Whether pr
4690: 6f 74 6f 63 6f 6c 20 72 65 6e 65 67 6f 74 69 61  otocol renegotia
46a0: 74 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74 65  tion is supporte
46b0: 64 20 6f 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09  d or not.</dd>..
46c0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 63 75  <dt><strong>secu
46d0: 72 69 74 79 5f 6c 65 76 65 6c 3c 2f 73 74 72 6f  rity_level</stro
46e0: 6e 67 3e 20 3c 65 6d 3e 6c 65 76 65 6c 3c 2f 65  ng> <em>level</e
46f0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
4700: 20 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c 20   security level 
4710: 75 73 65 64 20 66 6f 72 20 73 65 6c 65 63 74 69  used for selecti
4720: 6f 6e 20 6f 66 20 63 69 70 68 65 72 73 2c 20 6b  on of ciphers, k
4730: 65 79 20 73 69 7a 65 2c 20 65 74 63 2e 3c 2f 64  ey size, etc.</d
4740: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
4750: 73 65 73 73 69 6f 6e 5f 72 65 75 73 65 64 3c 2f  session_reused</
4760: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c  strong> <em>bool
4770: 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ean</em></dt>..<
4780: 64 64 3e 57 68 65 74 68 65 72 20 74 68 65 20 73  dd>Whether the s
4790: 65 73 73 69 6f 6e 20 68 61 73 20 62 65 65 6e 20  ession has been 
47a0: 72 65 75 73 65 64 20 6f 72 20 6e 6f 74 2e 3c 2f  reused or not.</
47b0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
47c0: 3e 69 73 5f 73 65 72 76 65 72 3c 2f 73 74 72 6f  >is_server</stro
47d0: 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c  ng> <em>boolean<
47e0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57  /em></dt>..<dd>W
47f0: 68 65 74 68 65 72 20 74 68 65 20 63 6f 6e 6e 65  hether the conne
4800: 63 74 69 6f 6e 20 69 73 20 63 6f 6e 66 69 67 75  ction is configu
4810: 72 65 64 20 61 73 20 61 20 73 65 72 76 65 72 20  red as a server 
4820: 28 31 29 20 6f 72 20 63 6c 69 65 6e 74 20 28 30  (1) or client (0
4830: 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  ).</dd>..<dt><st
4840: 72 6f 6e 67 3e 63 6f 6d 70 72 65 73 73 69 6f 6e  rong>compression
4850: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6d 6f  </strong> <em>mo
4860: 64 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  de</em></dt>..<d
4870: 64 3e 43 6f 6d 70 72 65 73 73 69 6f 6e 20 6d 65  d>Compression me
4880: 74 68 6f 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  thod.</dd>..<dt>
4890: 3c 73 74 72 6f 6e 67 3e 65 78 70 61 6e 73 69 6f  <strong>expansio
48a0: 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6d  n</strong> <em>m
48b0: 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ode</em></dt>..<
48c0: 64 64 3e 45 78 70 61 6e 73 69 6f 6e 20 6d 65 74  dd>Expansion met
48d0: 68 6f 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  hod.</dd>..<dt><
48e0: 73 74 72 6f 6e 67 3e 63 61 4c 69 73 74 3c 2f 73  strong>caList</s
48f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c  trong> <em>list<
4900: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c  /em></dt>..<dd>L
4910: 69 73 74 20 6f 66 20 43 65 72 74 69 66 69 63 61  ist of Certifica
4920: 74 65 20 41 75 74 68 6f 72 69 74 69 65 73 20 28  te Authorities (
4930: 43 41 29 20 66 6f 72 20 58 2e 35 30 39 20 63 65  CA) for X.509 ce
4940: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
4950: 20 20 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63      </dl>.</bloc
4960: 6b 71 75 6f 74 65 3e 0a 3c 62 6c 6f 63 6b 71 75  kquote>.<blockqu
4970: 6f 74 65 3e 0a 09 3c 62 3e 43 69 70 68 65 72 20  ote>..<b>Cipher 
4980: 49 6e 66 6f 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c  Info</b>.    <dl
4990: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63  >..<dt><strong>c
49a0: 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ipher</strong> <
49b0: 65 6d 3e 63 69 70 68 65 72 3c 2f 65 6d 3e 3c 2f  em>cipher</em></
49c0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 63 75 72  dt>..<dd>The cur
49d0: 72 65 6e 74 20 63 69 70 68 65 72 20 69 6e 20 75  rent cipher in u
49e0: 73 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  se for the conne
49f0: 63 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74  ction.</dd>..<dt
4a00: 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 6e 64 61 72  ><strong>standar
4a10: 64 5f 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20  d_name</strong> 
4a20: 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64  <em>name</em></d
4a30: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 74 61 6e  t>..<dd>The stan
4a40: 64 61 72 64 20 52 46 43 20 6e 61 6d 65 20 6f 66  dard RFC name of
4a50: 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c   cipher.</dd>..<
4a60: 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 67 6f 72  dt><strong>algor
4a70: 69 74 68 6d 5f 62 69 74 73 3c 2f 73 74 72 6f 6e  ithm_bits</stron
4a80: 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64  g> <em>n</em></d
4a90: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 75 6d 62  t>..<dd>The numb
4aa0: 65 72 20 6f 66 20 70 72 6f 63 65 73 73 65 64 20  er of processed 
4ab0: 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 63 69  bits used for ci
4ac0: 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  pher.</dd>..<dt>
4ad0: 3c 73 74 72 6f 6e 67 3e 73 65 63 72 65 74 5f 62  <strong>secret_b
4ae0: 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  its</strong> <em
4af0: 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  >n</em></dt>..<d
4b00: 64 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  d>The number of 
4b10: 73 65 63 72 65 74 20 62 69 74 73 20 75 73 65 64  secret bits used
4b20: 20 66 6f 72 20 63 69 70 68 65 72 2e 3c 2f 64 64   for cipher.</dd
4b30: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6d  >..<dt><strong>m
4b40: 69 6e 5f 76 65 72 73 69 6f 6e 3c 2f 73 74 72 6f  in_version</stro
4b50: 6e 67 3e 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c  ng> <em>version<
4b60: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
4b70: 68 65 20 6d 69 6e 69 6d 75 6d 20 70 72 6f 74 6f  he minimum proto
4b80: 63 6f 6c 20 76 65 72 73 69 6f 6e 20 66 6f 72 20  col version for 
4b90: 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64  cipher.</dd>..<d
4ba0: 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 68 65 72  t><strong>cipher
4bb0: 5f 69 73 5f 61 65 61 64 3c 2f 73 74 72 6f 6e 67  _is_aead</strong
4bc0: 3e 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65  > <em>boolean</e
4bd0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65  m></dt>..<dd>Whe
4be0: 74 68 65 72 20 74 68 65 20 63 69 70 68 65 72 20  ther the cipher 
4bf0: 69 73 20 41 75 74 68 65 6e 74 69 63 61 74 65 64  is Authenticated
4c00: 20 65 6e 63 72 79 70 74 69 6f 6e 20 77 69 74 68   encryption with
4c10: 20 61 73 73 6f 63 69 61 74 65 64 0a 09 64 61 74   associated..dat
4c20: 61 20 28 41 45 41 44 29 2e 3c 2f 64 64 3e 0a 09  a (AEAD).</dd>..
4c30: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 68  <dt><strong>ciph
4c40: 65 72 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  er_id</strong> <
4c50: 65 6d 3e 69 64 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  em>id</em></dt>.
4c60: 09 3c 64 64 3e 54 68 65 20 4f 70 65 6e 53 53 4c  .<dd>The OpenSSL
4c70: 20 63 69 70 68 65 72 20 69 64 2e 3c 2f 64 64 3e   cipher id.</dd>
4c80: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 64 65  ..<dt><strong>de
4c90: 73 63 72 69 70 74 69 6f 6e 3c 2f 73 74 72 6f 6e  scription</stron
4ca0: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
4cb0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 20 74  m></dt>..<dd>A t
4cc0: 65 78 74 20 64 65 73 63 72 69 70 74 69 6f 6e 20  ext description 
4cd0: 6f 66 20 74 68 65 20 63 69 70 68 65 72 2e 3c 2f  of the cipher.</
4ce0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4cf0: 3e 68 61 6e 64 73 68 61 6b 65 5f 64 69 67 65 73  >handshake_diges
4d00: 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  t</strong> <em>b
4d10: 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e  oolean</em></dt>
4d20: 0a 09 3c 64 64 3e 44 69 67 65 73 74 20 75 73 65  ..<dd>Digest use
4d30: 64 20 64 75 72 69 6e 67 20 68 61 6e 64 73 68 61  d during handsha
4d40: 6b 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 64  ke.</dd>.    </d
4d50: 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  l>.</blockquote>
4d60: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c  .<blockquote>..<
4d70: 62 3e 53 65 73 73 69 6f 6e 20 49 6e 66 6f 3c 2f  b>Session Info</
4d80: 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74  b>.    <dl>..<dt
4d90: 3e 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c 2f 73  ><strong>alpn</s
4da0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 70 72 6f 74 6f  trong> <em>proto
4db0: 63 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  col</em></dt>..<
4dc0: 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20  dd>The protocol 
4dd0: 73 65 6c 65 63 74 65 64 20 61 66 74 65 72 20 41  selected after A
4de0: 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79 65 72  pplication-Layer
4df0: 20 50 72 6f 74 6f 63 6f 6c 0a 09 20 20 20 20 4e   Protocol..    N
4e00: 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50 4e  egotiation (ALPN
4e10: 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  ).</dd>..<dt><st
4e20: 72 6f 6e 67 3e 72 65 73 75 6d 61 62 6c 65 3c 2f  rong>resumable</
4e30: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f 6c  strong> <em>bool
4e40: 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  ean</em></dt>..<
4e50: 64 64 3e 43 61 6e 20 74 68 65 20 73 65 73 73 69  dd>Can the sessi
4e60: 6f 6e 20 62 65 20 72 65 73 75 6d 65 64 20 6f 72  on be resumed or
4e70: 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e   not.</dd>..<dt>
4e80: 3c 73 74 72 6f 6e 67 3e 73 74 61 72 74 5f 74 69  <strong>start_ti
4e90: 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  me</strong> <em>
4ea0: 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f 64 74  seconds</em></dt
4eb0: 3e 0a 09 3c 64 64 3e 54 69 6d 65 20 73 69 6e 63  >..<dd>Time sinc
4ec0: 65 20 73 65 73 73 69 6f 6e 20 73 74 61 72 74 65  e session starte
4ed0: 64 20 69 6e 20 73 65 63 6f 6e 64 73 20 73 69 6e  d in seconds sin
4ee0: 63 65 20 65 70 6f 63 68 2e 3c 2f 64 64 3e 0a 09  ce epoch.</dd>..
4ef0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 74 69 6d 65  <dt><strong>time
4f00: 6f 75 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  out</strong> <em
4f10: 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f 64  >seconds</em></d
4f20: 74 3e 0a 09 3c 64 64 3e 4d 61 78 20 64 75 72 61  t>..<dd>Max dura
4f30: 74 69 6f 6e 20 6f 66 20 73 65 73 73 69 6f 6e 20  tion of session 
4f40: 69 6e 20 73 65 63 6f 6e 64 73 20 62 65 66 6f 72  in seconds befor
4f50: 65 20 74 69 6d 65 2d 6f 75 74 2e 3c 2f 64 64 3e  e time-out.</dd>
4f60: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6c 69  ..<dt><strong>li
4f70: 66 65 74 69 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20  fetime</strong> 
4f80: 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e  <em>seconds</em>
4f90: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 73 73 69  </dt>..<dd>Sessi
4fa0: 6f 6e 20 74 69 63 6b 65 74 20 6c 69 66 65 74 69  on ticket lifeti
4fb0: 6d 65 20 68 69 6e 74 20 69 6e 20 73 65 63 6f 6e  me hint in secon
4fc0: 64 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ds.</dd>..<dt><s
4fd0: 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 69 64  trong>session_id
4fe0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 69  </strong> <em>bi
4ff0: 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d 3e  nary_string</em>
5000: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71 75  </dt>..<dd>Uniqu
5010: 65 20 73 65 73 73 69 6f 6e 20 69 64 20 66 6f 72  e session id for
5020: 20 75 73 65 20 69 6e 20 72 65 73 75 6d 69 6e 67   use in resuming
5030: 20 74 68 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64   the session.</d
5040: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
5050: 73 65 73 73 69 6f 6e 5f 74 69 63 6b 65 74 3c 2f  session_ticket</
5060: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 69 6e 61  strong> <em>bina
5070: 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  ry_string</em></
5080: 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71 75 65 20  dt>..<dd>Unique 
5090: 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20 66  session ticket f
50a0: 6f 72 20 75 73 65 20 69 6e 20 72 65 73 75 6d 69  or use in resumi
50b0: 6e 67 20 74 68 65 20 73 65 73 73 69 6f 6e 2e 3c  ng the session.<
50c0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
50d0: 67 3e 74 69 63 6b 65 74 5f 61 70 70 5f 64 61 74  g>ticket_app_dat
50e0: 61 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  a</strong> <em>b
50f0: 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d  inary_string</em
5100: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71  ></dt>..<dd>Uniq
5110: 75 65 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65  ue session ticke
5120: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 61  t application da
5130: 74 61 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ta.</dd>..<dt><s
5140: 74 72 6f 6e 67 3e 6d 61 73 74 65 72 5f 6b 65 79  trong>master_key
5150: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 69  </strong> <em>bi
5160: 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d 3e  nary_string</em>
5170: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71 75  </dt>..<dd>Uniqu
5180: 65 20 73 65 73 73 69 6f 6e 20 6d 61 73 74 65 72  e session master
5190: 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e   key.</dd>..<dt>
51a0: 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f  <strong>session_
51b0: 63 61 63 68 65 5f 6d 6f 64 65 3c 2f 73 74 72 6f  cache_mode</stro
51c0: 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d  ng> <em>mode</em
51d0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 72 76  ></dt>..<dd>Serv
51e0: 65 72 20 63 61 63 68 65 20 6d 6f 64 65 20 28 63  er cache mode (c
51f0: 6c 69 65 6e 74 2c 20 73 65 72 76 65 72 2c 20 6f  lient, server, o
5200: 72 20 62 6f 74 68 29 2e 3c 2f 64 64 3e 0a 20 20  r both).</dd>.  
5210: 20 20 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71    </dl>.</blockq
5220: 75 6f 74 65 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c  uote>..    <dt><
5230: 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 63 69 70  a name="tls::cip
5240: 68 65 72 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73  her"><strong>tls
5250: 3a 3a 63 69 70 68 65 72 3c 2f 73 74 72 6f 6e 67  ::cipher</strong
5260: 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c  > <em>name</em><
5270: 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64  /a></dt>.    <dd
5280: 3e 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f  >Return a list o
5290: 66 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 73  f property names
52a0: 20 61 6e 64 20 76 61 6c 75 65 73 20 64 65 73 63   and values desc
52b0: 72 69 62 69 6e 67 20 63 69 70 68 65 72 0a 09 3c  ribing cipher..<
52c0: 69 3e 6e 61 6d 65 3c 2f 69 3e 2e 20 50 72 6f 70  i>name</i>. Prop
52d0: 65 72 74 69 65 73 20 69 6e 63 6c 75 64 65 20 6e  erties include n
52e0: 61 6d 65 2c 20 64 65 73 63 72 69 70 74 69 6f 6e  ame, description
52f0: 2c 20 62 6c 6f 63 6b 5f 73 69 7a 65 2c 0a 09 6b  , block_size,..k
5300: 65 79 5f 6c 65 6e 67 74 68 2c 20 69 76 5f 6c 65  ey_length, iv_le
5310: 6e 67 74 68 2c 20 74 79 70 65 2c 20 61 6e 64 20  ngth, type, and 
5320: 6d 6f 64 65 20 6c 69 73 74 2e 3c 2f 64 64 3e 0a  mode list.</dd>.
5330: 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65  .    <dt><a name
5340: 3d 22 74 6c 73 3a 3a 63 69 70 68 65 72 73 22 3e  ="tls::ciphers">
5350: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 69 70  <strong>tls::cip
5360: 68 65 72 73 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20  hers</strong>.  
5370: 20 20 3c 65 6d 3e 3f 70 72 6f 74 6f 63 6f 6c 3f    <em>?protocol?
5380: 20 3f 76 65 72 62 6f 73 65 3f 20 3f 73 75 70 70   ?verbose? ?supp
5390: 6f 72 74 65 64 3f 3c 2f 65 6d 3e 3c 2f 61 3e 3c  orted?</em></a><
53a0: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 57 69 74  /dt>.    <dd>Wit
53b0: 68 6f 75 74 20 61 6e 79 20 61 72 67 73 2c 20 72  hout any args, r
53c0: 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66  eturns a list of
53d0: 20 61 6c 6c 20 63 69 70 68 65 72 73 2e 20 57 69   all ciphers. Wi
53e0: 74 68 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c  th <em>protocol<
53f0: 2f 65 6d 3e 2c 0a 09 6f 6e 6c 79 20 74 68 65 20  /em>,..only the 
5400: 63 69 70 68 65 72 73 20 73 75 70 70 6f 72 74 65  ciphers supporte
5410: 64 20 66 6f 72 20 74 68 61 74 20 70 72 6f 74 6f  d for that proto
5420: 63 6f 6c 20 61 72 65 20 72 65 74 75 72 6e 65 64  col are returned
5430: 2e 20 53 65 65 0a 09 3c 62 3e 74 6c 73 3a 3a 70  . See..<b>tls::p
5440: 72 6f 74 6f 63 6f 6c 73 3c 2f 62 3e 20 63 6f 6d  rotocols</b> com
5450: 6d 61 6e 64 20 66 6f 72 20 74 68 65 20 73 75 70  mand for the sup
5460: 70 6f 72 74 65 64 20 70 72 6f 74 6f 63 6f 6c 73  ported protocols
5470: 2e 20 49 66 0a 09 3c 65 6d 3e 76 65 72 62 6f 73  . If..<em>verbos
5480: 65 3c 2f 65 6d 3e 20 69 73 20 73 70 65 63 69 66  e</em> is specif
5490: 69 65 64 20 61 73 20 74 72 75 65 20 74 68 65 6e  ied as true then
54a0: 20 61 20 76 65 72 62 6f 73 65 2c 20 68 75 6d 61   a verbose, huma
54b0: 6e 20 72 65 61 64 61 62 6c 65 0a 09 6c 69 73 74  n readable..list
54c0: 20 69 73 20 72 65 74 75 72 6e 65 64 20 77 69 74   is returned wit
54d0: 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  h additional inf
54e0: 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20  ormation on the 
54f0: 63 69 70 68 65 72 2e 20 49 66 0a 09 3c 65 6d 3e  cipher. If..<em>
5500: 73 75 70 70 6f 72 74 65 64 3c 2f 65 6d 3e 20 69  supported</em> i
5510: 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74  s specified as t
5520: 72 75 65 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  rue, then only t
5530: 68 65 20 63 69 70 68 65 72 73 0a 09 73 75 70 70  he ciphers..supp
5540: 6f 72 74 65 64 20 66 6f 72 20 70 72 6f 74 6f 63  orted for protoc
5550: 6f 6c 20 77 69 6c 6c 20 62 65 20 6c 69 73 74 65  ol will be liste
5560: 64 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64 74  d.</dd>..    <dt
5570: 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 64  ><a name="tls::d
5580: 69 67 65 73 74 73 22 3e 3c 73 74 72 6f 6e 67 3e  igests"><strong>
5590: 74 6c 73 3a 3a 64 69 67 65 73 74 73 3c 2f 73 74  tls::digests</st
55a0: 72 6f 6e 67 3e 20 3c 65 6d 3e 3f 6e 61 6d 65 3f  rong> <em>?name?
55b0: 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  </em></a></dt>. 
55c0: 20 20 20 3c 64 64 3e 57 69 74 68 6f 75 74 20 3c     <dd>Without <
55d0: 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 2c 20 72 65  em>name</em>, re
55e0: 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20  turns a list of 
55f0: 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 68 61  the supported ha
5600: 73 68 20 61 6c 67 6f 72 69 74 68 6d 73 0a 09 66  sh algorithms..f
5610: 6f 72 20 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73  or <b>tls::diges
5620: 74 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 2e 20 57  t</b> command. W
5630: 69 74 68 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d  ith <em>name</em
5640: 3e 2c 20 72 65 74 75 72 6e 73 20 61 20 6c 69 73  >, returns a lis
5650: 74 20 6f 66 0a 09 70 72 6f 70 65 72 74 79 20 6e  t of..property n
5660: 61 6d 65 73 20 61 6e 64 20 76 61 6c 75 65 73 20  ames and values 
5670: 64 65 73 63 72 69 62 69 6e 67 20 64 69 67 65 73  describing diges
5680: 74 20 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 2e 20 50  t <i>name</i>. P
5690: 72 6f 70 65 72 74 69 65 73 0a 09 69 6e 63 6c 75  roperties..inclu
56a0: 64 65 20 6e 61 6d 65 2c 20 64 65 73 63 72 69 70  de name, descrip
56b0: 74 69 6f 6e 2c 20 73 69 7a 65 2c 20 62 6c 6f 63  tion, size, bloc
56c0: 6b 5f 73 69 7a 65 2c 20 74 79 70 65 2c 20 61 6e  k_size, type, an
56d0: 64 20 66 6c 61 67 73 20 6c 69 73 74 2e 3c 2f 64  d flags list.</d
56e0: 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  d>..    <dt><a n
56f0: 61 6d 65 3d 22 74 6c 73 3a 3a 6d 61 63 73 22 3e  ame="tls::macs">
5700: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 6d 61 63  <strong>tls::mac
5710: 73 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f  s</strong></a></
5720: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75  dt>.    <dd>Retu
5730: 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68  rns a list of th
5740: 65 20 61 76 61 69 6c 61 62 6c 65 20 4d 65 73 73  e available Mess
5750: 61 67 65 20 41 75 74 68 65 6e 74 69 63 61 74 69  age Authenticati
5760: 6f 6e 20 43 6f 64 65 73 20 28 4d 41 43 29 20 66  on Codes (MAC) f
5770: 6f 72 0a 09 74 68 65 20 3c 62 3e 74 6c 73 3a 3a  or..the <b>tls::
5780: 64 69 67 65 73 74 3c 2f 62 3e 20 63 6f 6d 6d 61  digest</b> comma
5790: 6e 64 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64  nd.</dd>..    <d
57a0: 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a  t><a name="tls::
57b0: 70 72 6f 74 6f 63 6f 6c 73 22 3e 3c 73 74 72 6f  protocols"><stro
57c0: 6e 67 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c  ng>tls::protocol
57d0: 73 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f  s</strong></a></
57e0: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75  dt>.    <dd>Retu
57f0: 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 73 75  rns a list of su
5800: 70 70 6f 72 74 65 64 20 70 72 6f 74 6f 63 6f 6c  pported protocol
5810: 73 2e 20 56 61 6c 69 64 20 76 61 6c 75 65 73 20  s. Valid values 
5820: 61 72 65 3a 0a 09 3c 62 3e 73 73 6c 32 3c 2f 62  are:..<b>ssl2</b
5830: 3e 2c 20 3c 62 3e 73 73 6c 33 3c 2f 62 3e 2c 20  >, <b>ssl3</b>, 
5840: 3c 62 3e 74 6c 73 31 3c 2f 62 3e 2c 20 3c 62 3e  <b>tls1</b>, <b>
5850: 74 6c 73 31 2e 31 3c 2f 62 3e 2c 20 3c 62 3e 74  tls1.1</b>, <b>t
5860: 6c 73 31 2e 32 3c 2f 62 3e 2c 0a 09 61 6e 64 20  ls1.2</b>,..and 
5870: 3c 62 3e 74 6c 73 31 2e 33 3c 2f 62 3e 2e 20 45  <b>tls1.3</b>. E
5880: 78 61 63 74 20 6c 69 73 74 20 64 65 70 65 6e 64  xact list depend
5890: 73 20 6f 6e 20 4f 70 65 6e 53 53 4c 20 76 65 72  s on OpenSSL ver
58a0: 73 69 6f 6e 20 61 6e 64 0a 09 63 6f 6d 70 69 6c  sion and..compil
58b0: 65 20 74 69 6d 65 20 66 6c 61 67 73 2e 3c 2f 64  e time flags.</d
58c0: 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e  d>..    <dt><a n
58d0: 61 6d 65 3d 22 74 6c 73 3a 3a 76 65 72 73 69 6f  ame="tls::versio
58e0: 6e 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  n"><strong>tls::
58f0: 76 65 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e  version</strong>
5900: 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64  </a></dt>.    <d
5910: 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20 4f 70  d>Returns the Op
5920: 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 73 74  enSSL version st
5930: 72 69 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20  ring.</dd>..    
5940: 3c 62 72 3e 0a 20 20 20 20 3c 64 74 3e 3c 61 20  <br>.    <dt><a 
5950: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 64 69 67 65 73  name="tls::diges
5960: 74 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a  t"><strong>tls::
5970: 64 69 67 65 73 74 3c 2f 73 74 72 6f 6e 67 3e 20  digest</strong> 
5980: 3c 62 3e 2d 64 69 67 65 73 74 3c 2f 62 3e 0a 09  <b>-digest</b>..
5990: 3c 65 6d 3e 6e 61 6d 65 20 3f 3c 2f 65 6d 3e 3c  <em>name ?</em><
59a0: 62 3e 2d 62 69 6e 3c 2f 62 3e 7c 3c 62 3e 2d 68  b>-bin</b>|<b>-h
59b0: 65 78 3c 2f 62 3e 3c 65 6d 3e 3f 20 5b 3c 2f 65  ex</b><em>? [</e
59c0: 6d 3e 3c 62 3e 2d 66 69 6c 65 3c 2f 62 3e 20 3c  m><b>-file</b> <
59d0: 65 6d 3e 66 69 6c 65 6e 61 6d 65 20 7c 20 3c 2f  em>filename | </
59e0: 65 6d 3e 3c 62 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f  em><b>-command</
59f0: 62 3e 20 3c 65 6d 3e 63 6d 64 4e 61 6d 65 20 7c  b> <em>cmdName |
5a00: 0a 09 3c 2f 65 6d 3e 3c 62 3e 2d 63 68 61 6e 3c  ..</em><b>-chan<
5a10: 2f 62 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49  /b> <em>channelI
5a20: 64 20 7c 20 3c 2f 65 6d 3e 3c 62 3e 2d 64 61 74  d | </em><b>-dat
5a30: 61 3c 2f 62 3e 20 3c 65 6d 3e 64 61 74 61 5d 3c  a</b> <em>data]<
5a40: 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20  /em></a></dt>.  
5a50: 20 20 3c 64 64 3e 43 61 6c 63 75 6c 61 74 65 20    <dd>Calculate 
5a60: 74 68 65 20 6d 65 73 73 61 67 65 20 64 69 67 65  the message dige
5a70: 73 74 20 28 4d 44 29 20 6f 66 20 64 61 74 61 20  st (MD) of data 
5a80: 75 73 69 6e 67 20 3c 65 6d 3e 6e 61 6d 65 3c 2f  using <em>name</
5a90: 65 6d 3e 20 68 61 73 68 0a 09 66 75 6e 63 74 69  em> hash..functi
5aa0: 6f 6e 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68  on and return th
5ab0: 65 20 72 65 73 75 6c 74 69 6e 67 20 68 61 73 68  e resulting hash
5ac0: 20 76 61 6c 75 65 20 61 73 20 61 20 68 65 78 20   value as a hex 
5ad0: 73 74 72 69 6e 67 20 28 64 65 66 61 75 6c 74 29  string (default)
5ae0: 0a 09 6f 72 20 61 73 20 61 20 62 69 6e 61 72 79  ..or as a binary
5af0: 20 76 61 6c 75 65 20 77 69 74 68 20 3c 62 3e 2d   value with <b>-
5b00: 62 69 6e 3c 2f 62 3e 20 6f 72 20 3c 62 3e 2d 62  bin</b> or <b>-b
5b10: 69 6e 61 72 79 3c 2f 62 3e 20 6f 70 74 69 6f 6e  inary</b> option
5b20: 2e 20 4d 44 73 0a 09 61 72 65 20 75 73 65 64 20  . MDs..are used 
5b30: 74 6f 20 65 6e 73 75 72 65 20 74 68 65 20 69 6e  to ensure the in
5b40: 74 65 67 72 69 74 79 20 6f 66 20 64 61 74 61 2e  tegrity of data.
5b50: 20 54 68 65 20 68 61 73 68 20 66 75 6e 63 74 69   The hash functi
5b60: 6f 6e 20 63 61 6e 20 62 65 20 61 6e 79 0a 09 73  on can be any..s
5b70: 75 70 70 6f 72 74 65 64 20 4f 70 65 6e 53 53 4c  upported OpenSSL
5b80: 20 61 6c 67 6f 72 69 74 68 6d 20 73 75 63 68 20   algorithm such 
5b90: 61 73 20 3c 62 3e 6d 64 34 3c 2f 62 3e 2c 20 3c  as <b>md4</b>, <
5ba0: 62 3e 6d 64 35 3c 2f 62 3e 2c 20 3c 62 3e 73 68  b>md5</b>, <b>sh
5bb0: 61 31 3c 2f 62 3e 2c 0a 09 3c 62 3e 73 68 61 32  a1</b>,..<b>sha2
5bc0: 35 36 3c 2f 62 3e 2c 20 3c 62 3e 73 68 61 35 31  56</b>, <b>sha51
5bd0: 32 3c 2f 62 3e 2c 20 3c 62 3e 73 68 61 33 2d 32  2</b>, <b>sha3-2
5be0: 35 36 3c 2f 62 3e 2c 20 65 74 63 2e 20 53 65 65  56</b>, etc. See
5bf0: 0a 09 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74  ..<b>tls::digest
5c00: 73 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 20 66 6f  s</b> command fo
5c10: 72 20 61 20 66 75 6c 6c 20 6c 69 73 74 2e 20 49  r a full list. I
5c20: 6e 20 4f 70 65 6e 53 53 4c 20 33 2e 30 2b 2c 20  n OpenSSL 3.0+, 
5c30: 6f 6c 64 65 72 0a 09 61 6c 67 6f 72 69 74 68 6d  older..algorithm
5c40: 73 20 6d 61 79 20 72 65 73 69 64 65 20 69 6e 20  s may reside in 
5c50: 74 68 65 20 6c 65 67 61 63 79 20 70 72 6f 76 69  the legacy provi
5c60: 64 65 72 2e 0a 09 3c 62 72 3e 0a 09 55 73 69 6e  der...<br>..Usin
5c70: 67 20 74 68 65 20 3c 62 3e 2d 64 61 74 61 3c 2f  g the <b>-data</
5c80: 62 3e 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 20 69  b> option will i
5c90: 6d 6d 65 64 69 61 74 65 6c 79 20 72 65 74 75 72  mmediately retur
5ca0: 6e 20 74 68 65 20 6d 65 73 73 61 67 65 0a 09 64  n the message..d
5cb0: 69 67 65 73 74 20 66 6f 72 20 3c 65 6d 3e 64 61  igest for <em>da
5cc0: 74 61 3c 2f 65 6d 3e 20 69 6e 20 74 68 65 20 73  ta</em> in the s
5cd0: 70 65 63 69 66 69 65 64 20 66 6f 72 6d 61 74 2e  pecified format.
5ce0: 20 45 78 61 6d 70 6c 65 20 63 6f 64 65 3a 0a 3c   Example code:.<
5cf0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 63 6f 64 65  blockquote><code
5d00: 3e 0a 09 09 73 65 74 20 6d 64 20 5b 3a 3a 74 6c  >...set md [::tl
5d10: 73 3a 3a 64 69 67 65 73 74 20 73 68 61 32 35 36  s::digest sha256
5d20: 20 22 53 6f 6d 65 20 65 78 61 6d 70 6c 65 20 64   "Some example d
5d30: 61 74 61 2e 22 5d 3c 62 72 3e 0a 3c 2f 63 6f 64  ata."]<br>.</cod
5d40: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
5d50: 09 55 73 69 6e 67 20 74 68 65 20 3c 62 3e 2d 66  .Using the <b>-f
5d60: 69 6c 65 3c 2f 62 3e 20 6f 72 20 3c 62 3e 2d 66  ile</b> or <b>-f
5d70: 69 6c 65 6e 61 6d 65 3c 2f 62 3e 20 6f 70 74 69  ilename</b> opti
5d80: 6f 6e 20 77 69 6c 6c 20 6f 70 65 6e 20 66 69 6c  on will open fil
5d90: 65 0a 09 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 3c  e..<em>filename<
5da0: 2f 65 6d 3e 2c 20 72 65 61 64 20 74 68 65 20 66  /em>, read the f
5db0: 69 6c 65 20 64 61 74 61 2c 20 63 6c 6f 73 65 20  ile data, close 
5dc0: 74 68 65 20 66 69 6c 65 2c 20 61 6e 64 20 72 65  the file, and re
5dd0: 74 75 72 6e 20 74 68 65 0a 09 6d 65 73 73 61 67  turn the..messag
5de0: 65 20 64 69 67 65 73 74 20 69 6e 20 74 68 65 20  e digest in the 
5df0: 73 70 65 63 69 66 69 65 64 20 66 6f 72 6d 61 74  specified format
5e00: 2e 20 54 68 69 73 20 75 73 65 73 20 74 68 65 20  . This uses the 
5e10: 54 43 4c 20 41 50 49 73 2c 20 73 6f 20 56 46 53  TCL APIs, so VFS
5e20: 0a 09 66 69 6c 65 73 20 61 72 65 20 73 75 70 70  ..files are supp
5e30: 6f 72 74 65 64 2e 20 45 78 61 6d 70 6c 65 20 63  orted. Example c
5e40: 6f 64 65 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  ode:.<blockquote
5e50: 3e 3c 63 6f 64 65 3e 0a 09 09 73 65 74 20 6d 64  ><code>...set md
5e60: 20 5b 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20   [::tls::digest 
5e70: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5e80: 66 69 6c 65 20 74 65 73 74 5f 66 69 6c 65 2e 74  file test_file.t
5e90: 78 74 5d 3c 62 72 3e 0a 3c 2f 63 6f 64 65 3e 3c  xt]<br>.</code><
5ea0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 55 73  /blockquote>..Us
5eb0: 69 6e 67 20 74 68 65 20 3c 62 3e 2d 63 68 61 6e  ing the <b>-chan
5ec0: 3c 2f 62 3e 20 6f 72 20 3c 62 3e 2d 63 68 61 6e  </b> or <b>-chan
5ed0: 6e 65 6c 3c 2f 62 3e 20 6f 70 74 69 6f 6e 2c 20  nel</b> option, 
5ee0: 61 20 73 74 61 63 6b 65 64 20 63 68 61 6e 6e 65  a stacked channe
5ef0: 6c 20 69 73 0a 09 63 72 65 61 74 65 64 20 66 6f  l is..created fo
5f00: 72 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 3c  r <em>channelId<
5f10: 2f 65 6d 3e 20 61 6e 64 20 64 61 74 61 20 72 65  /em> and data re
5f20: 61 64 20 66 72 6f 6d 20 74 68 65 20 63 68 61 6e  ad from the chan
5f30: 6e 65 6c 20 69 73 20 75 73 65 64 0a 09 74 6f 20  nel is used..to 
5f40: 63 61 6c 63 75 6c 61 74 65 20 61 20 6d 65 73 73  calculate a mess
5f50: 61 67 65 20 64 69 67 65 73 74 20 77 69 74 68 20  age digest with 
5f60: 74 68 65 20 72 65 73 75 6c 74 20 72 65 74 75 72  the result retur
5f70: 6e 65 64 20 77 69 74 68 20 74 68 65 20 6c 61 73  ned with the las
5f80: 74 0a 09 72 65 61 64 20 6f 70 65 72 61 74 69 6f  t..read operatio
5f90: 6e 20 62 65 66 6f 72 65 20 45 4f 46 2e 20 43 68  n before EOF. Ch
5fa0: 61 6e 6e 65 6c 20 69 73 20 61 75 74 6f 6d 61 74  annel is automat
5fb0: 69 63 61 6c 6c 79 20 73 65 74 20 74 6f 20 62 69  ically set to bi
5fc0: 6e 61 72 79 20 6d 6f 64 65 2e 0a 09 45 78 61 6d  nary mode...Exam
5fd0: 70 6c 65 20 63 6f 64 65 3a 0a 3c 62 6c 6f 63 6b  ple code:.<block
5fe0: 71 75 6f 74 65 3e 3c 63 6f 64 65 3e 0a 09 09 73  quote><code>...s
5ff0: 65 74 20 63 68 20 5b 6f 70 65 6e 20 74 65 73 74  et ch [open test
6000: 5f 66 69 6c 65 2e 74 78 74 20 72 5d 3c 62 72 3e  _file.txt r]<br>
6010: 0a 09 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74  ...::tls::digest
6020: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
6030: 2d 63 68 61 6e 20 24 63 68 3c 62 72 3e 0a 09 09  -chan $ch<br>...
6040: 77 68 69 6c 65 20 7b 21 5b 65 6f 66 20 24 63 68  while {![eof $ch
6050: 5d 7d 20 7b 73 65 74 20 6d 64 20 5b 72 65 61 64  ]} {set md [read
6060: 20 24 63 68 20 34 30 39 36 5d 7d 3c 62 72 3e 0a   $ch 4096]}<br>.
6070: 09 09 63 6c 6f 73 65 20 24 63 68 0a 3c 2f 63 6f  ..close $ch.</co
6080: 64 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  de></blockquote>
6090: 0a 09 55 73 69 6e 67 20 74 68 65 20 3c 62 3e 2d  ..Using the <b>-
60a0: 63 6f 6d 6d 61 6e 64 3c 2f 62 3e 20 6f 70 74 69  command</b> opti
60b0: 6f 6e 2c 20 61 20 6e 65 77 20 63 6f 6d 6d 61 6e  on, a new comman
60c0: 64 20 3c 65 6d 3e 63 6d 64 4e 61 6d 65 3c 2f 65  d <em>cmdName</e
60d0: 6d 3e 20 69 73 0a 09 63 72 65 61 74 65 64 20 61  m> is..created a
60e0: 6e 64 20 72 65 74 75 72 6e 65 64 2e 20 54 6f 20  nd returned. To 
60f0: 61 64 64 20 64 61 74 61 20 74 6f 20 74 68 65 20  add data to the 
6100: 68 61 73 68 20 66 75 6e 63 74 69 6f 6e 2c 20 63  hash function, c
6110: 61 6c 6c 0a 09 26 71 75 6f 74 3b 3c 65 6d 3e 63  all..&quot;<em>c
6120: 6d 64 4e 61 6d 65 3c 2f 65 6d 3e 20 3c 62 3e 75  mdName</em> <b>u
6130: 70 64 61 74 65 3c 2f 62 3e 20 3c 65 6d 3e 64 61  pdate</b> <em>da
6140: 74 61 3c 2f 65 6d 3e 26 71 75 6f 74 3b 2c 20 77  ta</em>&quot;, w
6150: 68 65 72 65 20 64 61 74 61 20 69 73 0a 09 74 68  here data is..th
6160: 65 20 64 61 74 61 20 74 6f 20 61 64 64 2e 20 57  e data to add. W
6170: 68 65 6e 20 64 6f 6e 65 2c 20 63 61 6c 6c 20 26  hen done, call &
6180: 71 75 6f 74 3b 3c 65 6d 3e 63 6d 64 4e 61 6d 65  quot;<em>cmdName
6190: 3c 2f 65 6d 3e 20 3c 62 3e 66 69 6e 61 6c 69 7a  </em> <b>finaliz
61a0: 65 3c 2f 62 3e 26 71 75 6f 74 3b 0a 09 74 6f 20  e</b>&quot;..to 
61b0: 72 65 74 75 72 6e 20 74 68 65 20 6d 65 73 73 61  return the messa
61c0: 67 65 20 64 69 67 65 73 74 2e 20 45 78 61 6d 70  ge digest. Examp
61d0: 6c 65 20 63 6f 64 65 3a 0a 3c 62 6c 6f 63 6b 71  le code:.<blockq
61e0: 75 6f 74 65 3e 3c 63 6f 64 65 3e 0a 09 09 73 65  uote><code>...se
61f0: 74 20 63 6d 64 20 5b 3a 3a 74 6c 73 3a 3a 64 69  t cmd [::tls::di
6200: 67 65 73 74 20 2d 64 69 67 65 73 74 20 73 68 61  gest -digest sha
6210: 32 35 36 20 2d 63 6f 6d 6d 61 6e 64 20 3a 3a 74  256 -command ::t
6220: 6c 73 3a 3a 74 65 6d 70 5d 3c 62 72 3e 0a 09 09  ls::temp]<br>...
6230: 24 63 6d 64 20 75 70 64 61 74 65 20 22 53 6f 6d  $cmd update "Som
6240: 65 20 64 61 74 61 2e 20 22 3c 62 72 3e 0a 09 09  e data. "<br>...
6250: 24 63 6d 64 20 75 70 64 61 74 65 20 22 4d 6f 72  $cmd update "Mor
6260: 65 20 64 61 74 61 2e 22 3c 62 72 3e 0a 09 09 73  e data."<br>...s
6270: 65 74 20 6d 64 20 5b 24 63 6d 64 20 66 69 6e 61  et md [$cmd fina
6280: 6c 69 7a 65 5d 0a 3c 2f 63 6f 64 65 3e 3c 2f 62  lize].</code></b
6290: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c 2f 64 64  lockquote>..</dd
62a0: 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61  >..    <dt><a na
62b0: 6d 65 3d 22 74 6c 73 3a 3a 63 6d 61 63 22 3e 3c  me="tls::cmac"><
62c0: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 63 6d 61 63  strong>tls::cmac
62d0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 62 3e 2d 63 69  </strong> <b>-ci
62e0: 70 68 65 72 3c 2f 62 3e 20 3c 65 6d 3e 6e 61 6d  pher</b> <em>nam
62f0: 65 3c 2f 65 6d 3e 0a 09 3c 62 3e 2d 6b 65 79 3c  e</em>..<b>-key<
6300: 2f 62 3e 20 3c 65 6d 3e 6b 65 79 20 3f 3c 2f 65  /b> <em>key ?</e
6310: 6d 3e 3c 62 3e 2d 62 69 6e 3c 2f 62 3e 7c 3c 62  m><b>-bin</b>|<b
6320: 3e 2d 68 65 78 3c 2f 62 3e 3c 65 6d 3e 3f 20 5b  >-hex</b><em>? [
6330: 3c 2f 65 6d 3e 3c 62 3e 2d 66 69 6c 65 3c 2f 62  </em><b>-file</b
6340: 3e 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 20 7c  > <em>filename |
6350: 20 3c 2f 65 6d 3e 3c 62 3e 2d 63 6f 6d 6d 61 6e   </em><b>-comman
6360: 64 3c 2f 62 3e 20 3c 65 6d 3e 63 6d 64 4e 61 6d  d</b> <em>cmdNam
6370: 65 20 7c 0a 09 3c 2f 65 6d 3e 3c 62 3e 2d 63 68  e |..</em><b>-ch
6380: 61 6e 3c 2f 62 3e 20 3c 65 6d 3e 63 68 61 6e 6e  an</b> <em>chann
6390: 65 6c 49 64 20 7c 20 3c 2f 65 6d 3e 3c 62 3e 2d  elId | </em><b>-
63a0: 64 61 74 61 3c 2f 62 3e 20 3c 65 6d 3e 64 61 74  data</b> <em>dat
63b0: 61 5d 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  a]</em></a></dt>
63c0: 0a 20 20 20 20 3c 64 64 3e 43 61 6c 63 75 6c 61  .    <dd>Calcula
63d0: 74 65 20 74 68 65 20 43 69 70 68 65 72 2d 62 61  te the Cipher-ba
63e0: 73 65 64 20 4d 65 73 73 61 67 65 20 41 75 74 68  sed Message Auth
63f0: 65 6e 74 69 63 61 74 69 6f 6e 20 43 6f 64 65 20  entication Code 
6400: 28 43 4d 41 43 29 2e 20 4d 41 43 73 0a 09 61 72  (CMAC). MACs..ar
6410: 65 20 75 73 65 64 20 74 6f 20 65 6e 73 75 72 65  e used to ensure
6420: 20 61 75 74 68 65 6e 74 69 63 69 74 79 20 61 6e   authenticity an
6430: 64 20 74 68 65 20 69 6e 74 65 67 72 69 74 79 20  d the integrity 
6440: 6f 66 20 64 61 74 61 2e 20 49 74 20 75 73 65 73  of data. It uses
6450: 20 74 68 65 0a 09 73 61 6d 65 20 6f 70 74 69 6f   the..same optio
6460: 6e 73 20 61 73 20 3c 62 3e 74 6c 73 3a 3a 64 69  ns as <b>tls::di
6470: 67 65 73 74 3c 2f 62 3e 2c 20 70 6c 75 73 20 74  gest</b>, plus t
6480: 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 70  he additional op
6490: 74 69 6f 6e 0a 09 3c 62 3e 2d 63 69 70 68 65 72  tion..<b>-cipher
64a0: 3c 2f 62 3e 20 74 6f 20 73 70 65 63 69 66 79 20  </b> to specify 
64b0: 74 68 65 20 63 69 70 68 65 72 20 74 6f 20 75 73  the cipher to us
64c0: 65 20 61 6e 64 20 66 6f 72 20 63 65 72 74 61 69  e and for certai
64d0: 6e 20 63 69 70 68 65 72 73 2c 0a 09 3c 62 3e 2d  n ciphers,..<b>-
64e0: 6b 65 79 3c 2f 62 3e 20 74 6f 20 73 70 65 63 69  key</b> to speci
64f0: 66 79 20 74 68 65 20 6b 65 79 2e 3c 2f 64 64 3e  fy the key.</dd>
6500: 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d  ..    <dt><a nam
6510: 65 3d 22 74 6c 73 3a 3a 68 6d 61 63 22 3e 3c 73  e="tls::hmac"><s
6520: 74 72 6f 6e 67 3e 74 6c 73 3a 3a 68 6d 61 63 3c  trong>tls::hmac<
6530: 2f 73 74 72 6f 6e 67 3e 20 3c 62 3e 2d 64 69 67  /strong> <b>-dig
6540: 65 73 74 3c 2f 62 3e 20 3c 65 6d 3e 6e 61 6d 65  est</b> <em>name
6550: 3c 2f 65 6d 3e 0a 09 3c 62 3e 2d 6b 65 79 3c 2f  </em>..<b>-key</
6560: 62 3e 20 3c 65 6d 3e 6b 65 79 20 3f 3c 2f 65 6d  b> <em>key ?</em
6570: 3e 3c 62 3e 2d 62 69 6e 3c 2f 62 3e 7c 3c 62 3e  ><b>-bin</b>|<b>
6580: 2d 68 65 78 3c 2f 62 3e 3c 65 6d 3e 3f 20 5b 3c  -hex</b><em>? [<
6590: 2f 65 6d 3e 3c 62 3e 2d 66 69 6c 65 3c 2f 62 3e  /em><b>-file</b>
65a0: 20 3c 65 6d 3e 66 69 6c 65 6e 61 6d 65 20 7c 20   <em>filename | 
65b0: 3c 2f 65 6d 3e 3c 62 3e 2d 63 6f 6d 6d 61 6e 64  </em><b>-command
65c0: 3c 2f 62 3e 20 3c 65 6d 3e 63 6d 64 4e 61 6d 65  </b> <em>cmdName
65d0: 20 7c 0a 09 3c 2f 65 6d 3e 3c 62 3e 2d 63 68 61   |..</em><b>-cha
65e0: 6e 3c 2f 62 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65  n</b> <em>channe
65f0: 6c 49 64 20 7c 20 3c 2f 65 6d 3e 3c 62 3e 2d 64  lId | </em><b>-d
6600: 61 74 61 3c 2f 62 3e 20 3c 65 6d 3e 64 61 74 61  ata</b> <em>data
6610: 5d 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a  ]</em></a></dt>.
6620: 20 20 20 20 3c 64 64 3e 43 61 6c 63 75 6c 61 74      <dd>Calculat
6630: 65 20 74 68 65 20 48 61 73 68 2d 62 61 73 65 64  e the Hash-based
6640: 20 4d 65 73 73 61 67 65 20 41 75 74 68 65 6e 74   Message Authent
6650: 69 63 61 74 69 6f 6e 20 43 6f 64 65 20 28 48 4d  ication Code (HM
6660: 41 43 29 2e 20 48 4d 41 43 73 20 61 72 65 0a 09  AC). HMACs are..
6670: 75 73 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74  used to ensure t
6680: 68 65 20 64 61 74 61 20 69 6e 74 65 67 72 69 74  he data integrit
6690: 79 20 61 6e 64 20 61 75 74 68 65 6e 74 69 63 69  y and authentici
66a0: 74 79 20 6f 66 20 61 20 6d 65 73 73 61 67 65 20  ty of a message 
66b0: 75 73 69 6e 67 20 61 0a 09 73 68 61 72 65 64 20  using a..shared 
66c0: 73 65 63 72 65 74 20 6b 65 79 2e 20 54 68 65 20  secret key. The 
66d0: 63 72 79 70 74 6f 67 72 61 70 68 69 63 20 73 74  cryptographic st
66e0: 72 65 6e 67 74 68 20 64 65 70 65 6e 64 73 20 75  rength depends u
66f0: 70 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 0a  pon the size of.
6700: 09 74 68 65 20 6b 65 79 20 61 6e 64 20 74 68 65  .the key and the
6710: 20 73 65 63 75 72 69 74 79 20 6f 66 20 74 68 65   security of the
6720: 20 68 61 73 68 20 66 75 6e 63 74 69 6f 6e 20 75   hash function u
6730: 73 65 64 2e 20 49 74 20 75 73 65 73 20 74 68 65  sed. It uses the
6740: 20 73 61 6d 65 0a 09 6f 70 74 69 6f 6e 73 20 61   same..options a
6750: 73 20 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74  s <b>tls::digest
6760: 3c 2f 62 3e 2c 20 70 6c 75 73 20 61 64 64 69 74  </b>, plus addit
6770: 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 20 3c 62 3e  ional option <b>
6780: 2d 6b 65 79 3c 2f 62 3e 20 74 6f 0a 09 73 70 65  -key</b> to..spe
6790: 63 69 66 79 20 74 68 65 20 6b 65 79 20 74 6f 20  cify the key to 
67a0: 75 73 65 2e 20 54 6f 20 73 61 6c 74 20 61 20 70  use. To salt a p
67b0: 61 73 73 77 6f 72 64 2c 20 61 70 70 65 6e 64 20  assword, append 
67c0: 6f 72 20 70 72 65 70 65 6e 64 20 74 68 65 20 73  or prepend the s
67d0: 61 6c 74 0a 09 64 61 74 61 20 74 6f 20 74 68 65  alt..data to the
67e0: 20 70 61 73 73 77 6f 72 64 2e 3c 2f 64 64 3e 0a   password.</dd>.
67f0: 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65  .    <dt><a name
6800: 3d 22 74 6c 73 3a 3a 6d 61 63 22 3e 3c 73 74 72  ="tls::mac"><str
6810: 6f 6e 67 3e 74 6c 73 3a 3a 6d 61 63 3c 2f 73 74  ong>tls::mac</st
6820: 72 6f 6e 67 3e 20 3c 62 3e 2d 63 69 70 68 65 72  rong> <b>-cipher
6830: 3c 2f 62 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65  </b> <em>name</e
6840: 6d 3e 0a 09 3c 62 3e 2d 64 69 67 65 73 74 3c 2f  m>..<b>-digest</
6850: 62 3e 20 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e  b> <em>name</em>
6860: 20 3c 62 3e 2d 6b 65 79 3c 2f 62 3e 20 3c 65 6d   <b>-key</b> <em
6870: 3e 6b 65 79 20 3f 3c 2f 65 6d 3e 3c 62 3e 2d 62  >key ?</em><b>-b
6880: 69 6e 3c 2f 62 3e 7c 3c 62 3e 2d 68 65 78 3c 2f  in</b>|<b>-hex</
6890: 62 3e 3c 65 6d 3e 3f 0a 09 5b 3c 2f 65 6d 3e 3c  b><em>?..[</em><
68a0: 62 3e 2d 66 69 6c 65 3c 2f 62 3e 20 3c 65 6d 3e  b>-file</b> <em>
68b0: 66 69 6c 65 6e 61 6d 65 20 7c 20 3c 2f 65 6d 3e  filename | </em>
68c0: 3c 62 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 62 3e 20  <b>-command</b> 
68d0: 3c 65 6d 3e 63 6d 64 4e 61 6d 65 20 7c 0a 09 3c  <em>cmdName |..<
68e0: 2f 65 6d 3e 3c 62 3e 2d 63 68 61 6e 3c 2f 62 3e  /em><b>-chan</b>
68f0: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 7c   <em>channelId |
6900: 20 3c 2f 65 6d 3e 3c 62 3e 2d 64 61 74 61 3c 2f   </em><b>-data</
6910: 62 3e 20 3c 65 6d 3e 64 61 74 61 5d 3c 2f 65 6d  b> <em>data]</em
6920: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
6930: 64 64 3e 28 4f 70 65 6e 53 53 4c 20 33 2e 30 2b  dd>(OpenSSL 3.0+
6940: 29 20 43 61 6c 63 75 6c 61 74 65 20 74 68 65 20  ) Calculate the 
6950: 4d 65 73 73 61 67 65 20 41 75 74 68 65 6e 74 69  Message Authenti
6960: 63 61 74 69 6f 6e 20 43 6f 64 65 20 28 4d 41 43  cation Code (MAC
6970: 29 2e 20 4d 41 43 73 0a 09 61 72 65 20 75 73 65  ). MACs..are use
6980: 64 20 74 6f 20 65 6e 73 75 72 65 20 61 75 74 68  d to ensure auth
6990: 65 6e 74 69 63 69 74 79 20 61 6e 64 20 74 68 65  enticity and the
69a0: 20 69 6e 74 65 67 72 69 74 79 20 6f 66 20 64 61   integrity of da
69b0: 74 61 2e 20 49 74 20 75 73 65 73 20 74 68 65 0a  ta. It uses the.
69c0: 09 73 61 6d 65 20 6f 70 74 69 6f 6e 73 20 61 73  .same options as
69d0: 20 3c 62 3e 74 6c 73 3a 3a 64 69 67 65 73 74 3c   <b>tls::digest<
69e0: 2f 62 3e 2c 20 70 6c 75 73 20 74 68 65 20 61 64  /b>, plus the ad
69f0: 64 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 73  ditional options
6a00: 0a 09 3c 62 3e 2d 63 69 70 68 65 72 3c 2f 62 3e  ..<b>-cipher</b>
6a10: 20 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20   to specify the 
6a20: 63 69 70 68 65 72 20 74 6f 20 75 73 65 2c 20 3c  cipher to use, <
6a30: 62 3e 2d 64 69 67 65 73 74 3c 2f 62 3e 20 74 6f  b>-digest</b> to
6a40: 20 73 70 65 63 69 66 79 0a 09 74 68 65 20 64 69   specify..the di
6a50: 67 65 73 74 2c 20 61 6e 64 20 66 6f 72 20 63 65  gest, and for ce
6a60: 72 74 61 69 6e 20 63 69 70 68 65 72 73 2c 20 3c  rtain ciphers, <
6a70: 62 3e 2d 6b 65 79 3c 2f 62 3e 20 74 6f 20 73 70  b>-key</b> to sp
6a80: 65 63 69 66 79 20 74 68 65 20 6b 65 79 2e 3c 2f  ecify the key.</
6a90: 64 64 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20  dd>..    <dt><a 
6aa0: 6e 61 6d 65 3d 22 74 6c 73 3a 3a 6d 64 34 22 3e  name="tls::md4">
6ab0: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 6d 64 34  <strong>tls::md4
6ac0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61  </strong> <em>da
6ad0: 74 61 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e  ta</em></a></dt>
6ae0: 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72 6e 73  .    <dd>Returns
6af0: 20 74 68 65 20 4d 44 34 20 6d 65 73 73 61 67 65   the MD4 message
6b00: 2d 64 69 67 65 73 74 20 66 6f 72 20 3c 65 6d 3e  -digest for <em>
6b10: 64 61 74 61 3c 2f 65 6d 3e 20 61 73 20 61 20 68  data</em> as a h
6b20: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
6b30: 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65  .    <dt><a name
6b40: 3d 22 74 6c 73 3a 3a 6d 64 35 22 3e 3c 73 74 72  ="tls::md5"><str
6b50: 6f 6e 67 3e 74 6c 73 3a 3a 6d 64 35 3c 2f 73 74  ong>tls::md5</st
6b60: 72 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f  rong> <em>data</
6b70: 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20  em></a></dt>.   
6b80: 20 3c 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65   <dd>Returns the
6b90: 20 4d 44 35 20 6d 65 73 73 61 67 65 2d 64 69 67   MD5 message-dig
6ba0: 65 73 74 20 66 6f 72 20 3c 65 6d 3e 64 61 74 61  est for <em>data
6bb0: 3c 2f 65 6d 3e 20 61 73 20 61 20 68 65 78 20 73  </em> as a hex s
6bc0: 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20 20  tring.</dd>..   
6bd0: 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c   <dt><a name="tl
6be0: 73 3a 3a 73 68 61 31 22 3e 3c 73 74 72 6f 6e 67  s::sha1"><strong
6bf0: 3e 74 6c 73 3a 3a 73 68 61 31 3c 2f 73 74 72 6f  >tls::sha1</stro
6c00: 6e 67 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65 6d  ng> <em>data</em
6c10: 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c  ></a></dt>.    <
6c20: 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20 53  dd>Returns the S
6c30: 48 41 31 20 73 65 63 75 72 65 20 68 61 73 68 20  HA1 secure hash 
6c40: 61 6c 67 6f 72 69 74 68 6d 20 64 69 67 65 73 74  algorithm digest
6c50: 20 66 6f 72 20 3c 65 6d 3e 64 61 74 61 3c 2f 65   for <em>data</e
6c60: 6d 3e 20 61 73 20 61 20 68 65 78 20 73 74 72 69  m> as a hex stri
6c70: 6e 67 2e 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 64  ng.</dd>..    <d
6c80: 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a  t><a name="tls::
6c90: 73 68 61 32 35 36 22 3e 3c 73 74 72 6f 6e 67 3e  sha256"><strong>
6ca0: 74 6c 73 3a 3a 73 68 61 32 35 36 3c 2f 73 74 72  tls::sha256</str
6cb0: 6f 6e 67 3e 20 3c 65 6d 3e 64 61 74 61 3c 2f 65  ong> <em>data</e
6cc0: 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20  m></a></dt>.    
6cd0: 3c 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20  <dd>Returns the 
6ce0: 53 48 41 2d 32 20 53 48 41 32 35 36 20 73 65 63  SHA-2 SHA256 sec
6cf0: 75 72 65 20 68 61 73 68 20 61 6c 67 6f 72 69 74  ure hash algorit
6d00: 68 6d 20 64 69 67 65 73 74 20 66 6f 72 20 3c 65  hm digest for <e
6d10: 6d 3e 64 61 74 61 3c 2f 65 6d 3e 20 61 73 20 61  m>data</em> as a
6d20: 20 68 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64   hex string.</dd
6d30: 3e 0a 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61  >..    <dt><a na
6d40: 6d 65 3d 22 74 6c 73 3a 3a 73 68 61 35 31 32 22  me="tls::sha512"
6d50: 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 68  ><strong>tls::sh
6d60: 61 35 31 32 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  a512</strong> <e
6d70: 6d 3e 64 61 74 61 3c 2f 65 6d 3e 3c 2f 61 3e 3c  m>data</em></a><
6d80: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74  /dt>.    <dd>Ret
6d90: 75 72 6e 73 20 74 68 65 20 53 48 41 2d 32 20 53  urns the SHA-2 S
6da0: 48 41 35 31 32 20 73 65 63 75 72 65 20 68 61 73  HA512 secure has
6db0: 68 20 61 6c 67 6f 72 69 74 68 6d 20 64 69 67 65  h algorithm dige
6dc0: 73 74 20 66 6f 72 20 3c 65 6d 3e 64 61 74 61 3c  st for <em>data<
6dd0: 2f 65 6d 3e 20 61 73 20 61 20 68 65 78 20 73 74  /em> as a hex st
6de0: 72 69 6e 67 2e 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e  ring.</dd>.</dl>
6df0: 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 43  ..<h3><a name="C
6e00: 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22  ALLBACK OPTIONS"
6e10: 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e  >CALLBACK OPTION
6e20: 53 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 0a  S</a></h3>..<p>.
6e30: 41 73 20 69 6e 64 69 63 61 74 65 64 20 61 62 6f  As indicated abo
6e40: 76 65 2c 20 69 6e 64 69 76 69 64 75 61 6c 20 63  ve, individual c
6e50: 68 61 6e 6e 65 6c 73 20 63 61 6e 20 62 65 20 67  hannels can be g
6e60: 69 76 65 6e 20 74 68 65 69 72 20 6f 77 6e 20 63  iven their own c
6e70: 61 6c 6c 62 61 63 6b 73 0a 74 6f 20 68 61 6e 64  allbacks.to hand
6e80: 6c 65 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20  le intermediate 
6e90: 70 72 6f 63 65 73 73 69 6e 67 20 62 79 20 74 68  processing by th
6ea0: 65 20 4f 70 65 6e 53 53 4c 20 6c 69 62 72 61 72  e OpenSSL librar
6eb0: 79 2c 20 75 73 69 6e 67 20 74 68 65 0a 3c 73 74  y, using the.<st
6ec0: 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73  rong>-command</s
6ed0: 74 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e  trong>, <strong>
6ee0: 2d 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e  -password</stron
6ef0: 67 3e 2c 20 61 6e 64 0a 3c 73 74 72 6f 6e 67 3e  g>, and.<strong>
6f00: 2d 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e  -validate_comman
6f10: 64 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f  d</strong> optio
6f20: 6e 73 20 70 61 73 73 65 64 20 74 6f 20 65 69 74  ns passed to eit
6f30: 68 65 72 20 6f 66 0a 3c 73 74 72 6f 6e 67 3e 74  her of.<strong>t
6f40: 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 73 74 72 6f  ls::socket</stro
6f50: 6e 67 3e 20 6f 72 20 3c 73 74 72 6f 6e 67 3e 74  ng> or <strong>t
6f60: 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f  ls::import</stro
6f70: 6e 67 3e 2e 0a 49 66 20 74 68 65 20 63 61 6c 6c  ng>..If the call
6f80: 62 61 63 6b 20 67 65 6e 65 72 61 74 65 73 20 61  back generates a
6f90: 6e 20 65 72 72 6f 72 2c 20 74 68 65 20 3c 62 3e  n error, the <b>
6fa0: 62 67 65 72 72 6f 72 3c 2f 62 3e 20 63 6f 6d 6d  bgerror</b> comm
6fb0: 61 6e 64 20 77 69 74 68 20 62 65 0a 69 6e 76 6f  and with be.invo
6fc0: 6b 65 64 20 77 69 74 68 20 74 68 65 20 65 72 72  ked with the err
6fd0: 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  or information..
6fe0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
6ff0: 65 3e 0a 3c 64 6c 3e 0a 0a 20 20 20 20 3c 64 74  e>.<dl>..    <dt
7000: 3e 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e  ><strong>-comman
7010: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  d</strong> <em>c
7020: 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74  allback</em></dt
7030: 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76 6f  >.    <dd>..Invo
7040: 6b 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65  kes the specifie
7050: 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f  d <em>callback</
7060: 65 6d 3e 20 73 63 72 69 70 74 20 61 74 20 73 65  em> script at se
7070: 76 65 72 61 6c 20 70 6f 69 6e 74 73 0a 09 64 75  veral points..du
7080: 72 69 6e 67 20 74 68 65 20 4f 70 65 6e 53 53 4c  ring the OpenSSL
7090: 20 68 61 6e 64 73 68 61 6b 65 20 61 6e 64 20 75   handshake and u
70a0: 73 65 2e 20 53 65 65 20 62 65 6c 6f 77 20 66 6f  se. See below fo
70b0: 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65 0a 09  r the possible..
70c0: 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64  arguments passed
70d0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
70e0: 20 73 63 72 69 70 74 2e 20 56 61 6c 75 65 73 20   script. Values 
70f0: 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68  returned from th
7100: 65 0a 09 63 61 6c 6c 62 61 63 6b 20 61 72 65 20  e..callback are 
7110: 69 67 6e 6f 72 65 64 2e 0a 0a 09 3c 62 72 3e 0a  ignored....<br>.
7120: 09 3c 62 72 3e 0a 0a 09 3c 64 6c 3e 0a 0a 09 3c  .<br>...<dl>...<
7130: 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 65  dt>..  <strong>e
7140: 72 72 6f 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  rror</strong> <e
7150: 6d 3e 63 68 61 6e 6e 65 6c 20 6d 65 73 73 61 67  m>channel messag
7160: 65 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c  e</em>..</dt>..<
7170: 64 64 3e 0a 09 20 20 54 68 65 20 3c 65 6d 3e 6d  dd>..  The <em>m
7180: 65 73 73 61 67 65 3c 2f 65 6d 3e 20 61 72 67 75  essage</em> argu
7190: 6d 65 6e 74 20 63 6f 6e 74 61 69 6e 73 20 61 6e  ment contains an
71a0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 67   error message g
71b0: 65 6e 65 72 61 74 65 64 0a 09 20 20 62 79 20 74  enerated..  by t
71c0: 68 65 20 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74  he OpenSSL funct
71d0: 69 6f 6e 20 3c 63 6f 64 65 3e 45 52 52 5f 72 65  ion <code>ERR_re
71e0: 61 73 6f 6e 5f 65 72 72 6f 72 5f 73 74 72 69 6e  ason_error_strin
71f0: 67 28 29 3c 2f 63 6f 64 65 3e 2e 0a 09 3c 2f 64  g()</code>...</d
7200: 64 3e 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e  d>...<br>...<dt>
7210: 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 69 6e 66 6f  ..  <strong>info
7220: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68  </strong> <em>ch
7230: 61 6e 6e 65 6c 20 6d 61 6a 6f 72 20 6d 69 6e 6f  annel major mino
7240: 72 20 6d 65 73 73 61 67 65 20 74 79 70 65 3c 2f  r message type</
7250: 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e  em>..</dt>..<dd>
7260: 0a 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66  ..  This form of
7270: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
7280: 6f 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e  oked by the Open
7290: 53 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20  SSL function..  
72a0: 3c 63 6f 64 65 3e 53 53 4c 5f 43 54 58 5f 73 65  <code>SSL_CTX_se
72b0: 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28  t_info_callback(
72c0: 29 3c 2f 63 6f 64 65 3e 20 64 75 72 69 6e 67 20  )</code> during 
72d0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 65 74 75 70  connection setup
72e0: 0a 09 20 20 61 6e 64 20 75 73 65 2e 0a 09 20 20  ..  and use...  
72f0: 3c 62 72 3e 0a 09 20 20 3c 75 6c 3e 0a 09 20 20  <br>..  <ul>..  
7300: 3c 6c 69 3e 50 6f 73 73 69 62 6c 65 20 76 61 6c  <li>Possible val
7310: 75 65 73 20 66 6f 72 20 3c 65 6d 3e 6d 61 6a 6f  ues for <em>majo
7320: 72 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09 20 20 3c  r</em> are:..  <
7330: 63 6f 64 65 3e 68 61 6e 64 73 68 61 6b 65 2c 20  code>handshake, 
7340: 61 6c 65 72 74 2c 20 63 6f 6e 6e 65 63 74 2c 20  alert, connect, 
7350: 61 63 63 65 70 74 3c 2f 63 6f 64 65 3e 2e 3c 2f  accept</code>.</
7360: 6c 69 3e 0a 09 20 20 3c 6c 69 3e 50 6f 73 73 69  li>..  <li>Possi
7370: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 3c  ble values for <
7380: 65 6d 3e 6d 69 6e 6f 72 3c 2f 65 6d 3e 20 61 72  em>minor</em> ar
7390: 65 3a 0a 09 20 20 3c 63 6f 64 65 3e 73 74 61 72  e:..  <code>star
73a0: 74 2c 20 64 6f 6e 65 2c 20 72 65 61 64 2c 20 77  t, done, read, w
73b0: 72 69 74 65 2c 20 6c 6f 6f 70 2c 20 65 78 69 74  rite, loop, exit
73c0: 3c 2f 63 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 20  </code>.</li>.. 
73d0: 20 3c 6c 69 3e 54 68 65 20 3c 65 6d 3e 6d 65 73   <li>The <em>mes
73e0: 73 61 67 65 3c 2f 65 6d 3e 20 61 72 67 75 6d 65  sage</em> argume
73f0: 6e 74 20 69 73 20 61 20 64 65 73 63 72 69 70 74  nt is a descript
7400: 69 76 65 20 73 74 72 69 6e 67 20 77 68 69 63 68  ive string which
7410: 20 6d 61 79 0a 09 20 20 62 65 20 67 65 6e 65 72   may..  be gener
7420: 61 74 65 64 20 65 69 74 68 65 72 20 62 79 20 3c  ated either by <
7430: 63 6f 64 65 3e 53 53 4c 5f 73 74 61 74 65 5f 73  code>SSL_state_s
7440: 74 72 69 6e 67 5f 6c 6f 6e 67 28 29 3c 2f 63 6f  tring_long()</co
7450: 64 65 3e 20 6f 72 20 62 79 0a 09 20 20 3c 63 6f  de> or by..  <co
7460: 64 65 3e 53 53 4c 5f 61 6c 65 72 74 5f 64 65 73  de>SSL_alert_des
7470: 63 5f 73 74 72 69 6e 67 5f 6c 6f 6e 67 28 29 3c  c_string_long()<
7480: 2f 63 6f 64 65 3e 2c 20 64 65 70 65 6e 64 69 6e  /code>, dependin
7490: 67 20 6f 6e 20 74 68 65 20 63 6f 6e 74 65 78 74  g on the context
74a0: 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 6c 69 3e 46 6f  .</li>..  <li>Fo
74b0: 72 20 61 6c 65 72 74 73 2c 20 74 68 65 20 70 6f  r alerts, the po
74c0: 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f  ssible values fo
74d0: 72 20 3c 65 6d 3e 74 79 70 65 3c 2f 65 6d 3e 20  r <em>type</em> 
74e0: 61 72 65 3a 0a 09 20 20 3c 63 6f 64 65 3e 77 61  are:..  <code>wa
74f0: 72 6e 69 6e 67 2c 20 66 61 74 61 6c 2c 20 61 6e  rning, fatal, an
7500: 64 20 75 6e 6b 6e 6f 77 6e 3c 2f 63 6f 64 65 3e  d unknown</code>
7510: 2e 20 46 6f 72 20 6f 74 68 65 72 73 2c 0a 09 20  . For others,.. 
7520: 20 3c 63 6f 64 65 3e 69 6e 66 6f 3c 2f 63 6f 64   <code>info</cod
7530: 65 3e 20 69 73 20 75 73 65 64 2e 3c 2f 6c 69 3e  e> is used.</li>
7540: 0a 09 20 20 3c 2f 75 6c 3e 0a 09 3c 2f 64 64 3e  ..  </ul>..</dd>
7550: 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f  ...<dt>..  <stro
7560: 6e 67 3e 6d 65 73 73 61 67 65 3c 2f 73 74 72 6f  ng>message</stro
7570: 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20  ng> <em>channel 
7580: 64 69 72 65 63 74 69 6f 6e 20 76 65 72 73 69 6f  direction versio
7590: 6e 20 63 6f 6e 74 65 6e 74 5f 74 79 70 65 20 64  n content_type d
75a0: 61 74 61 3c 2f 65 6d 3e 0a 09 3c 2f 64 74 3e 0a  ata</em>..</dt>.
75b0: 09 3c 64 64 3e 0a 09 20 20 54 68 69 73 20 66 6f  .<dd>..  This fo
75c0: 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69  rm of callback i
75d0: 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 74 68 65  s invoked by the
75e0: 20 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f   OpenSSL functio
75f0: 6e 0a 09 20 20 3c 63 6f 64 65 3e 53 53 4c 5f 73  n..  <code>SSL_s
7600: 65 74 5f 6d 73 67 5f 63 61 6c 6c 62 61 63 6b 28  et_msg_callback(
7610: 29 3c 2f 63 6f 64 65 3e 20 77 68 65 6e 65 76 65  )</code> wheneve
7620: 72 20 61 20 6d 65 73 73 61 67 65 20 69 73 20 73  r a message is s
7630: 65 6e 74 20 6f 72 0a 09 20 20 72 65 63 65 69 76  ent or..  receiv
7640: 65 64 2e 20 49 74 20 69 73 20 6f 6e 6c 79 20 61  ed. It is only a
7650: 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 0a 09 20  vailable when.. 
7660: 20 4f 70 65 6e 53 53 4c 20 69 73 20 63 6f 6d 70   OpenSSL is comp
7670: 6c 69 65 64 20 77 69 74 68 20 74 68 65 20 3c 65  lied with the <e
7680: 6d 3e 65 6e 61 62 6c 65 2d 73 73 6c 2d 74 72 61  m>enable-ssl-tra
7690: 63 65 3c 2f 65 6d 3e 20 6f 70 74 69 6f 6e 2e 0a  ce</em> option..
76a0: 09 20 20 57 68 65 72 65 20 3c 65 6d 3e 64 69 72  .  Where <em>dir
76b0: 65 63 74 69 6f 6e 3c 2f 65 6d 3e 20 69 73 20 53  ection</em> is S
76c0: 65 6e 74 20 6f 72 20 52 65 63 65 69 76 65 64 2c  ent or Received,
76d0: 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d   <em>version</em
76e0: 3e 20 69 73 20 74 68 65 0a 09 20 20 70 72 6f 74  > is the..  prot
76f0: 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 2c 20 3c 65  ocol version, <e
7700: 6d 3e 63 6f 6e 74 65 6e 74 5f 74 79 70 65 3c 2f  m>content_type</
7710: 65 6d 3e 20 69 73 20 74 68 65 20 6d 65 73 73 61  em> is the messa
7720: 67 65 20 63 6f 6e 74 65 6e 74 20 74 79 70 65 2c  ge content type,
7730: 0a 09 20 20 61 6e 64 20 3c 65 6d 3e 64 61 74 61  ..  and <em>data
7740: 3c 2f 65 6d 3e 20 69 73 20 6d 6f 72 65 20 69 6e  </em> is more in
7750: 66 6f 20 6f 6e 20 74 68 65 20 6d 65 73 73 61 67  fo on the messag
7760: 65 20 66 72 6f 6d 20 74 68 65 20 3c 63 6f 64 65  e from the <code
7770: 3e 53 53 4c 5f 74 72 61 63 65 3c 2f 63 6f 64 65  >SSL_trace</code
7780: 3e 20 41 50 49 2e 0a 09 3c 2f 64 64 3e 0a 09 3c  > API...</dd>..<
7790: 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09 20 20 3c 73  br>...<dt>..  <s
77a0: 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 3c 2f 73  trong>session</s
77b0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e  trong> <em>chann
77c0: 65 6c 20 73 65 73 73 69 6f 6e 5f 69 64 20 74 69  el session_id ti
77d0: 63 6b 65 74 20 6c 69 66 65 74 69 6d 65 3c 2f 65  cket lifetime</e
77e0: 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a  m>..</dt>..<dd>.
77f0: 09 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66 20  .  This form of 
7800: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
7810: 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e 53  ked by the OpenS
7820: 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20 3c  SL function..  <
7830: 63 6f 64 65 3e 53 53 4c 5f 43 54 58 5f 73 65 73  code>SSL_CTX_ses
7840: 73 5f 73 65 74 5f 6e 65 77 5f 63 62 28 29 3c 2f  s_set_new_cb()</
7850: 63 6f 64 65 3e 2e 0a 09 20 20 57 68 65 72 65 20  code>...  Where 
7860: 3c 65 6d 3e 73 65 73 73 69 6f 6e 5f 69 64 3c 2f  <em>session_id</
7870: 65 6d 3e 20 69 73 20 74 68 65 20 63 75 72 72 65  em> is the curre
7880: 6e 74 20 73 65 73 73 69 6f 6e 20 69 64 65 6e 74  nt session ident
7890: 69 66 69 65 72 2c 0a 09 20 20 3c 65 6d 3e 74 69  ifier,..  <em>ti
78a0: 63 6b 65 74 3c 2f 65 6d 3e 20 69 73 20 74 68 65  cket</em> is the
78b0: 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20   session ticket 
78c0: 69 6e 66 6f 2c 20 61 6e 64 20 3c 65 6d 3e 6c 69  info, and <em>li
78d0: 66 65 74 69 6d 65 3c 2f 65 6d 3e 0a 09 20 20 69  fetime</em>..  i
78e0: 73 20 74 68 65 20 74 68 65 20 74 69 63 6b 65 74  s the the ticket
78f0: 20 6c 69 66 65 74 69 6d 65 20 69 6e 20 73 65 63   lifetime in sec
7900: 6f 6e 64 73 2e 0a 09 3c 2f 64 64 3e 0a 09 3c 62  onds...</dd>..<b
7910: 72 3e 0a 09 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f  r>..</dl>.    </
7920: 64 64 3e 0a 0a 20 20 20 20 3c 62 72 3e 0a 0a 20  dd>..    <br>.. 
7930: 20 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d     <dt><strong>-
7940: 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67  password</strong
7950: 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f  > <em>callback</
7960: 65 6d 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64  em></dt>.    <dd
7970: 3e 0a 09 49 6e 76 6f 6b 65 73 20 74 68 65 20 73  >..Invokes the s
7980: 70 65 63 69 66 69 65 64 20 3c 65 6d 3e 63 61 6c  pecified <em>cal
7990: 6c 62 61 63 6b 3c 2f 65 6d 3e 20 73 63 72 69 70  lback</em> scrip
79a0: 74 20 77 68 65 6e 20 4f 70 65 6e 53 53 4c 20 6e  t when OpenSSL n
79b0: 65 65 64 73 20 74 6f 0a 09 6f 62 74 61 69 6e 20  eeds to..obtain 
79c0: 61 20 70 61 73 73 77 6f 72 64 2e 20 53 65 65 20  a password. See 
79d0: 62 65 6c 6f 77 20 66 6f 72 20 74 68 65 20 70 6f  below for the po
79e0: 73 73 69 62 6c 65 20 61 72 67 75 6d 65 6e 74 73  ssible arguments
79f0: 20 70 61 73 73 65 64 20 74 6f 0a 09 74 68 65 20   passed to..the 
7a00: 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70 74 2e  callback script.
7a10: 20 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 20 76   See below for v
7a20: 61 6c 69 64 20 72 65 74 75 72 6e 20 76 61 6c 75  alid return valu
7a30: 65 73 2e 0a 0a 09 3c 62 72 3e 0a 09 3c 62 72 3e  es....<br>..<br>
7a40: 0a 0a 09 3c 64 6c 3e 0a 0a 09 3c 64 74 3e 0a 09  ...<dl>...<dt>..
7a50: 20 20 3c 73 74 72 6f 6e 67 3e 70 61 73 73 77 6f    <strong>passwo
7a60: 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  rd</strong> <em>
7a70: 72 77 66 6c 61 67 20 73 69 7a 65 3c 2f 65 6d 3e  rwflag size</em>
7a80: 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20  ..</dt>..<dd>.. 
7a90: 20 49 6e 76 6f 6b 65 64 20 77 68 65 6e 20 6c 6f   Invoked when lo
7aa0: 61 64 69 6e 67 20 6f 72 20 73 74 6f 72 69 6e 67  ading or storing
7ab0: 20 61 20 50 45 4d 20 63 65 72 74 69 66 69 63 61   a PEM certifica
7ac0: 74 65 20 77 69 74 68 20 65 6e 63 72 79 70 74 69  te with encrypti
7ad0: 6f 6e 2e 0a 09 20 20 57 68 65 72 65 20 3c 65 6d  on...  Where <em
7ae0: 3e 72 77 66 6c 61 67 3c 2f 65 6d 3e 20 69 73 20  >rwflag</em> is 
7af0: 30 20 66 6f 72 20 72 65 61 64 69 6e 67 2f 64 65  0 for reading/de
7b00: 63 72 79 70 74 69 6f 6e 20 6f 72 20 31 20 66 6f  cryption or 1 fo
7b10: 72 0a 09 20 20 77 72 69 74 69 6e 67 2f 65 6e 63  r..  writing/enc
7b20: 72 79 70 74 69 6f 6e 20 28 63 61 6e 20 70 72 6f  ryption (can pro
7b30: 6d 70 74 20 75 73 65 72 20 74 6f 20 63 6f 6e 66  mpt user to conf
7b40: 69 72 6d 29 20 61 6e 64 0a 09 20 20 3c 65 6d 3e  irm) and..  <em>
7b50: 73 69 7a 65 3c 2f 65 6d 3e 20 69 73 20 74 68 65  size</em> is the
7b60: 20 6d 61 78 20 70 61 73 73 77 6f 72 64 20 6c 65   max password le
7b70: 6e 67 74 68 20 69 6e 20 62 79 74 65 73 2e 0a 09  ngth in bytes...
7b80: 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 73    The callback s
7b90: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65  hould return the
7ba0: 20 70 61 73 73 77 6f 72 64 20 61 73 20 61 20 73   password as a s
7bb0: 74 72 69 6e 67 2e 0a 09 3c 2f 64 64 3e 0a 20 20  tring...</dd>.  
7bc0: 20 20 3c 2f 64 64 3e 0a 0a 20 20 20 20 3c 62 72    </dd>..    <br
7bd0: 3e 0a 0a 0a 20 20 20 20 3c 64 74 3e 3c 73 74 72  >...    <dt><str
7be0: 6f 6e 67 3e 2d 76 61 6c 69 64 61 74 65 63 6f 6d  ong>-validatecom
7bf0: 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  mand</strong> <e
7c00: 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c  m>callback</em><
7c10: 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49  /dt>.    <dd>..I
7c20: 6e 76 6f 6b 65 73 20 74 68 65 20 73 70 65 63 69  nvokes the speci
7c30: 66 69 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63  fied <em>callbac
7c40: 6b 3c 2f 65 6d 3e 20 73 63 72 69 70 74 20 64 75  k</em> script du
7c50: 72 69 6e 67 20 68 61 6e 64 73 68 61 6b 65 20 69  ring handshake i
7c60: 6e 0a 09 6f 72 64 65 72 20 74 6f 20 76 61 6c 69  n..order to vali
7c70: 64 61 74 65 20 74 68 65 20 70 72 6f 76 69 64 65  date the provide
7c80: 64 20 76 61 6c 75 65 28 73 29 2e 20 53 65 65 20  d value(s). See 
7c90: 62 65 6c 6f 77 20 66 6f 72 20 74 68 65 20 70 6f  below for the po
7ca0: 73 73 69 62 6c 65 0a 09 61 72 67 75 6d 65 6e 74  ssible..argument
7cb0: 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  s passed to the 
7cc0: 63 61 6c 6c 62 61 63 6b 20 73 63 72 69 70 74 2e  callback script.
7cd0: 0a 09 54 6f 20 72 65 6a 65 63 74 20 74 68 65 20  ..To reject the 
7ce0: 76 61 6c 75 65 20 61 6e 64 20 61 62 6f 72 74 20  value and abort 
7cf0: 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 20  connection, the 
7d00: 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20  callback should 
7d10: 72 65 74 75 72 6e 20 30 2e 0a 09 54 6f 20 61 63  return 0...To ac
7d20: 63 65 70 74 20 74 68 65 20 76 61 6c 75 65 20 61  cept the value a
7d30: 6e 64 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20  nd continue the 
7d40: 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74 20 73  connection, it s
7d50: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 31 2e 0a  hould return 1..
7d60: 09 54 6f 20 72 65 6a 65 63 74 20 74 68 65 20 76  .To reject the v
7d70: 61 6c 75 65 2c 20 62 75 74 20 63 6f 6e 74 69 6e  alue, but contin
7d80: 75 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  ue the connectio
7d90: 6e 2c 20 69 74 20 73 68 6f 75 6c 64 20 72 65 74  n, it should ret
7da0: 75 72 6e 20 32 2e 0a 0a 09 3c 62 72 3e 0a 09 3c  urn 2....<br>..<
7db0: 62 72 3e 0a 0a 09 3c 64 6c 3e 0a 0a 09 3c 64 74  br>...<dl>...<dt
7dc0: 3e 0a 09 20 20 3c 73 74 72 6f 6e 67 3e 61 6c 70  >..  <strong>alp
7dd0: 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  n</strong> <em>c
7de0: 68 61 6e 6e 65 6c 20 70 72 6f 74 6f 63 6f 6c 20  hannel protocol 
7df0: 6d 61 74 63 68 3c 2f 65 6d 3e 0a 09 3c 2f 64 74  match</em>..</dt
7e00: 3e 0a 09 3c 64 64 3e 0a 09 20 20 46 6f 72 20 73  >..<dd>..  For s
7e10: 65 72 76 65 72 73 2c 20 74 68 69 73 20 66 6f 72  ervers, this for
7e20: 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 73  m of callback is
7e30: 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 74 68   invoked when th
7e40: 65 20 63 6c 69 65 6e 74 20 41 4c 50 4e 0a 09 20  e client ALPN.. 
7e50: 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 72 65   extension is re
7e60: 63 65 69 76 65 64 2e 20 49 66 20 3c 65 6d 3e 6d  ceived. If <em>m
7e70: 61 74 63 68 3c 2f 65 6d 3e 20 69 73 20 74 72 75  atch</em> is tru
7e80: 65 2c 20 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c  e, <em>protocol<
7e90: 2f 65 6d 3e 0a 09 20 20 69 73 20 74 68 65 20 66  /em>..  is the f
7ea0: 69 72 73 74 20 3c 62 3e 2d 61 6c 70 6e 3c 2f 62  irst <b>-alpn</b
7eb0: 3e 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 74  > specified prot
7ec0: 6f 63 6f 6c 20 63 6f 6d 6d 6f 6e 20 74 6f 20 74  ocol common to t
7ed0: 68 65 20 62 6f 74 68 20 74 68 65 0a 09 20 20 63  he both the..  c
7ee0: 6c 69 65 6e 74 20 61 6e 64 20 73 65 72 76 65 72  lient and server
7ef0: 2e 20 49 66 20 6e 6f 74 2c 20 74 68 65 20 66 69  . If not, the fi
7f00: 72 73 74 20 63 6c 69 65 6e 74 20 73 70 65 63 69  rst client speci
7f10: 66 69 65 64 20 70 72 6f 74 6f 63 6f 6c 20 69 73  fied protocol is
7f20: 0a 09 20 20 75 73 65 64 2e 20 43 61 6c 6c 65 64  ..  used. Called
7f30: 20 61 66 74 65 72 20 68 65 6c 6c 6f 20 61 6e 64   after hello and
7f40: 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63 6b 73 2e   ALPN callbacks.
7f50: 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 62 72 3e 0a 0a  ..</dd>...<br>..
7f60: 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e 67  .<dt>..  <strong
7f70: 3e 68 65 6c 6c 6f 3c 2f 73 74 72 6f 6e 67 3e 20  >hello</strong> 
7f80: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 73 65 72 76  <em>channel serv
7f90: 65 72 6e 61 6d 65 3c 2f 65 6d 3e 0a 09 3c 2f 64  ername</em>..</d
7fa0: 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 46 6f 72 20  t>..<dd>..  For 
7fb0: 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 66 6f  servers, this fo
7fc0: 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69  rm of callback i
7fd0: 73 20 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67  s invoked during
7fe0: 20 63 6c 69 65 6e 74 20 68 65 6c 6c 6f 0a 09 20   client hello.. 
7ff0: 20 6d 65 73 73 61 67 65 20 70 72 6f 63 65 73 73   message process
8000: 69 6e 67 2e 20 49 74 20 69 73 20 75 73 65 64 20  ing. It is used 
8010: 74 6f 20 73 65 6c 65 63 74 20 61 6e 20 61 70 70  to select an app
8020: 72 6f 70 72 69 61 74 65 20 63 65 72 74 69 66 69  ropriate certifi
8030: 63 61 74 65 20 74 6f 0a 09 20 20 70 72 65 73 65  cate to..  prese
8040: 6e 74 2c 20 61 6e 64 20 6d 61 6b 65 20 6f 74 68  nt, and make oth
8050: 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  er configuration
8060: 20 61 64 6a 75 73 74 6d 65 6e 74 73 20 72 65 6c   adjustments rel
8070: 65 76 61 6e 74 20 74 6f 20 74 68 61 74 0a 09 20  evant to that.. 
8080: 20 73 65 72 76 65 72 20 6e 61 6d 65 20 61 6e 64   server name and
8090: 20 69 74 73 20 63 6f 6e 66 69 67 75 72 61 74 69   its configurati
80a0: 6f 6e 2e 20 43 61 6c 6c 65 64 20 62 65 66 6f 72  on. Called befor
80b0: 65 20 53 4e 49 20 61 6e 64 20 41 4c 50 4e 20 63  e SNI and ALPN c
80c0: 61 6c 6c 62 61 63 6b 73 2e 0a 09 3c 2f 64 64 3e  allbacks...</dd>
80d0: 0a 0a 09 3c 62 72 3e 0a 0a 09 3c 64 74 3e 0a 09  ...<br>...<dt>..
80e0: 20 20 3c 73 74 72 6f 6e 67 3e 73 6e 69 3c 2f 73    <strong>sni</s
80f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e  trong> <em>chann
8100: 65 6c 20 73 65 72 76 65 72 6e 61 6d 65 3c 2f 65  el servername</e
8110: 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a  m>..</dt>..<dd>.
8120: 09 20 20 46 6f 72 20 73 65 72 76 65 72 73 2c 20  .  For servers, 
8130: 74 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c  this form of cal
8140: 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
8150: 20 77 68 65 6e 20 74 68 65 20 53 4e 49 20 65 78   when the SNI ex
8160: 74 65 6e 73 69 6f 6e 0a 09 20 20 66 72 6f 6d 20  tension..  from 
8170: 74 68 65 20 63 6c 69 65 6e 74 20 69 73 20 72 65  the client is re
8180: 63 65 69 76 65 64 2e 20 57 68 65 72 65 20 3c 65  ceived. Where <e
8190: 6d 3e 73 65 72 76 65 72 6e 61 6d 65 3c 2f 65 6d  m>servername</em
81a0: 3e 20 69 73 20 74 68 65 20 63 6c 69 65 6e 74 0a  > is the client.
81b0: 09 20 20 70 72 6f 76 69 64 65 64 20 73 65 72 76  .  provided serv
81c0: 65 72 20 6e 61 6d 65 20 66 72 6f 6d 20 74 68 65  er name from the
81d0: 20 3c 62 3e 2d 73 65 72 76 65 72 6e 61 6d 65 3c   <b>-servername<
81e0: 2f 62 3e 20 6f 70 74 69 6f 6e 2e 20 54 68 69 73  /b> option. This
81f0: 20 69 73 0a 09 20 20 75 73 65 64 20 77 68 65 6e   is..  used when
8200: 20 61 20 73 65 72 76 65 72 20 73 75 70 70 6f 72   a server suppor
8210: 74 73 20 6d 75 6c 74 69 70 6c 65 20 6e 61 6d 65  ts multiple name
8220: 73 2c 20 73 6f 20 74 68 65 20 72 69 67 68 74 20  s, so the right 
8230: 63 65 72 74 69 66 69 63 61 74 65 0a 09 20 20 63  certificate..  c
8240: 61 6e 20 62 65 20 75 73 65 64 2e 20 43 61 6c 6c  an be used. Call
8250: 65 64 20 61 66 74 65 72 20 68 65 6c 6c 6f 20 63  ed after hello c
8260: 61 6c 6c 62 61 63 6b 20 62 75 74 20 62 65 66 6f  allback but befo
8270: 72 65 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63 6b  re ALPN callback
8280: 2e 0a 09 3c 2f 64 64 3e 0a 0a 09 3c 62 72 3e 0a  ...</dd>...<br>.
8290: 0a 09 3c 64 74 3e 0a 09 20 20 3c 73 74 72 6f 6e  ..<dt>..  <stron
82a0: 67 3e 76 65 72 69 66 79 3c 2f 73 74 72 6f 6e 67  g>verify</strong
82b0: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 20 64 65  > <em>channel de
82c0: 70 74 68 20 63 65 72 74 20 73 74 61 74 75 73 20  pth cert status 
82d0: 65 72 72 6f 72 3c 2f 65 6d 3e 0a 09 3c 2f 64 74  error</em>..</dt
82e0: 3e 0a 09 3c 64 64 3e 0a 09 20 20 54 68 69 73 20  >..<dd>..  This 
82f0: 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b  form of callback
8300: 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 4f   is invoked by O
8310: 70 65 6e 53 53 4c 20 77 68 65 6e 20 61 20 6e 65  penSSL when a ne
8320: 77 20 63 65 72 74 69 66 69 63 61 74 65 0a 09 20  w certificate.. 
8330: 20 69 73 20 72 65 63 65 69 76 65 64 20 66 72 6f   is received fro
8340: 6d 20 74 68 65 20 70 65 65 72 2e 20 49 74 20 61  m the peer. It a
8350: 6c 6c 6f 77 73 20 74 68 65 20 63 6c 69 65 6e 74  llows the client
8360: 20 74 6f 20 63 68 65 63 6b 20 74 68 65 0a 09 20   to check the.. 
8370: 20 63 65 72 74 69 66 69 63 61 74 65 20 76 65 72   certificate ver
8380: 69 66 69 63 61 74 69 6f 6e 20 72 65 73 75 6c 74  ification result
8390: 73 20 61 6e 64 20 63 68 6f 6f 73 65 20 77 68 65  s and choose whe
83a0: 74 68 65 72 20 74 6f 20 63 6f 6e 74 69 6e 75 65  ther to continue
83b0: 0a 09 20 20 6f 72 20 6e 6f 74 2e 20 49 74 20 69  ..  or not. It i
83c0: 73 20 63 61 6c 6c 65 64 20 66 6f 72 20 65 61 63  s called for eac
83d0: 68 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e  h certificate in
83e0: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
83f0: 20 63 68 61 69 6e 2e 0a 09 20 20 3c 75 6c 3e 0a   chain...  <ul>.
8400: 09 20 20 3c 6c 69 3e 54 68 65 20 3c 65 6d 3e 64  .  <li>The <em>d
8410: 65 70 74 68 3c 2f 65 6d 3e 20 61 72 67 75 6d 65  epth</em> argume
8420: 6e 74 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  nt is an integer
8430: 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
8440: 65 0a 09 20 20 63 75 72 72 65 6e 74 20 64 65 70  e..  current dep
8450: 74 68 20 6f 6e 20 74 68 65 20 63 65 72 74 69 66  th on the certif
8460: 69 63 61 74 65 20 63 68 61 69 6e 2c 20 77 69 74  icate chain, wit
8470: 68 0a 09 20 20 3c 63 6f 64 65 3e 30 3c 2f 63 6f  h..  <code>0</co
8480: 64 65 3e 20 61 73 20 74 68 65 20 70 65 65 72 20  de> as the peer 
8490: 63 65 72 74 69 66 69 63 61 74 65 20 61 6e 64 20  certificate and 
84a0: 68 69 67 68 65 72 20 76 61 6c 75 65 73 20 67 6f  higher values go
84b0: 69 6e 67 0a 09 20 20 75 70 20 74 6f 20 74 68 65  ing..  up to the
84c0: 20 43 65 72 74 69 66 69 63 61 74 65 20 41 75 74   Certificate Aut
84d0: 68 6f 72 69 74 79 20 28 43 41 29 2e 3c 2f 6c 69  hority (CA).</li
84e0: 3e 0a 09 20 20 3c 6c 69 3e 54 68 65 20 3c 65 6d  >..  <li>The <em
84f0: 3e 63 65 72 74 3c 2f 65 6d 3e 20 61 72 67 75 6d  >cert</em> argum
8500: 65 6e 74 20 69 73 20 61 20 6c 69 73 74 20 6f 66  ent is a list of
8510: 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 73   key-value pairs
8520: 20 73 69 6d 69 6c 61 72 0a 09 20 20 74 6f 20 74   similar..  to t
8530: 68 6f 73 65 20 72 65 74 75 72 6e 65 64 20 62 79  hose returned by
8540: 0a 09 20 20 3c 61 20 68 72 65 66 3d 22 23 74 6c  ..  <a href="#tl
8550: 73 3a 3a 73 74 61 74 75 73 22 3e 3c 73 74 72 6f  s::status"><stro
8560: 6e 67 3e 74 6c 73 3a 3a 73 74 61 74 75 73 3c 2f  ng>tls::status</
8570: 73 74 72 6f 6e 67 3e 3c 2f 61 3e 2e 3c 2f 6c 69  strong></a>.</li
8580: 3e 0a 09 20 20 3c 6c 69 3e 54 68 65 20 3c 65 6d  >..  <li>The <em
8590: 3e 73 74 61 74 75 73 3c 2f 65 6d 3e 20 61 72 67  >status</em> arg
85a0: 75 6d 65 6e 74 20 69 73 20 61 6e 20 62 6f 6f 6c  ument is an bool
85b0: 65 61 6e 20 72 65 70 72 65 73 65 6e 74 69 6e 67  ean representing
85c0: 20 74 68 65 0a 09 20 20 76 61 6c 69 64 69 74 79   the..  validity
85d0: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
85e0: 63 65 72 74 69 66 69 63 61 74 65 2e 0a 09 20 20  certificate...  
85f0: 41 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 65  A value of <code
8600: 3e 30 3c 2f 63 6f 64 65 3e 20 6d 65 61 6e 73 20  >0</code> means 
8610: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
8620: 69 73 20 64 65 65 6d 65 64 20 69 6e 76 61 6c 69  is deemed invali
8630: 64 2e 0a 09 20 20 41 20 76 61 6c 75 65 20 6f 66  d...  A value of
8640: 20 3c 63 6f 64 65 3e 31 3c 2f 63 6f 64 65 3e 20   <code>1</code> 
8650: 6d 65 61 6e 73 20 74 68 65 20 63 65 72 74 69 66  means the certif
8660: 69 63 61 74 65 20 69 73 20 64 65 65 6d 65 64 20  icate is deemed 
8670: 76 61 6c 69 64 2e 3c 2f 6c 69 3e 0a 09 20 20 3c  valid.</li>..  <
8680: 6c 69 3e 54 68 65 20 3c 65 6d 3e 65 72 72 6f 72  li>The <em>error
8690: 3c 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 73  </em> argument s
86a0: 75 70 70 6c 69 65 73 20 74 68 65 20 6d 65 73 73  upplies the mess
86b0: 61 67 65 2c 20 69 66 20 61 6e 79 2c 20 67 65 6e  age, if any, gen
86c0: 65 72 61 74 65 64 0a 09 20 20 62 79 20 3c 63 6f  erated..  by <co
86d0: 64 65 3e 58 35 30 39 5f 53 54 4f 52 45 5f 43 54  de>X509_STORE_CT
86e0: 58 5f 67 65 74 5f 65 72 72 6f 72 28 29 3c 2f 63  X_get_error()</c
86f0: 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 20 20 3c 2f  ode>.</li>..  </
8700: 75 6c 3e 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e  ul>..</dd>..<br>
8710: 0a 09 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64  ..</dl>.    </dd
8720: 3e 0a 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71  >.</dl>.</blockq
8730: 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 52 65 66 65 72  uote>..<p>.Refer
8740: 65 6e 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ence implementat
8750: 69 6f 6e 73 20 6f 66 20 74 68 65 73 65 20 63 61  ions of these ca
8760: 6c 6c 62 61 63 6b 73 20 61 72 65 20 70 72 6f 76  llbacks are prov
8770: 69 64 65 64 20 69 6e 20 74 68 65 0a 64 69 73 74  ided in the.dist
8780: 72 69 62 75 74 69 6f 6e 20 61 73 20 3c 73 74 72  ribution as <str
8790: 6f 6e 67 3e 74 6c 73 3a 3a 63 61 6c 6c 62 61 63  ong>tls::callbac
87a0: 6b 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73 74 72  k</strong>, <str
87b0: 6f 6e 67 3e 74 6c 73 3a 3a 70 61 73 73 77 6f 72  ong>tls::passwor
87c0: 64 3c 2f 73 74 72 6f 6e 67 3e 2c 0a 61 6e 64 20  d</strong>,.and 
87d0: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76 61 6c  <strong>tls::val
87e0: 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73  idate_command</s
87f0: 74 72 6f 6e 67 3e 20 72 65 73 70 65 63 74 69 76  trong> respectiv
8800: 65 6c 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 20  ely.  Note that 
8810: 74 68 65 73 65 20 61 72 65 0a 3c 65 6d 3e 73 61  these are.<em>sa
8820: 6d 70 6c 65 3c 2f 65 6d 3e 20 69 6d 70 6c 65 6d  mple</em> implem
8830: 65 6e 74 61 74 69 6f 6e 73 20 6f 6e 6c 79 2e 20  entations only. 
8840: 20 49 6e 20 61 20 6d 6f 72 65 20 72 65 61 6c 69   In a more reali
8850: 73 74 69 63 20 64 65 70 6c 6f 79 6d 65 6e 74 0a  stic deployment.
8860: 79 6f 75 20 77 6f 75 6c 64 20 73 70 65 63 69 66  you would specif
8870: 79 20 79 6f 75 72 20 6f 77 6e 20 63 61 6c 6c 62  y your own callb
8880: 61 63 6b 20 73 63 72 69 70 74 73 20 6f 6e 20 65  ack scripts on e
8890: 61 63 68 20 54 4c 53 20 63 68 61 6e 6e 65 6c 20  ach TLS channel 
88a0: 75 73 69 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e  using the.<stron
88b0: 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  g>-command</stro
88c0: 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 2d 70 61  ng>, <strong>-pa
88d0: 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c  ssword</strong>,
88e0: 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 2d 76 61   and <strong>-va
88f0: 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f  lidate_command</
8900: 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e 73 2e  strong> options.
8910: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64  .</p>..<p>.The d
8920: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
8930: 77 68 65 6e 20 74 68 65 20 3c 73 74 72 6f 6e 67  when the <strong
8940: 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e  >-command</stron
8950: 67 3e 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 2d  g> and <strong>-
8960: 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64  validate_command
8970: 3c 2f 73 74 72 6f 6e 67 3e 0a 6f 70 74 69 6f 6e  </strong>.option
8980: 73 20 61 72 65 20 6e 6f 74 20 73 70 65 63 69 66  s are not specif
8990: 69 65 64 20 69 73 20 66 6f 72 20 54 4c 53 20 74  ied is for TLS t
89a0: 6f 20 70 72 6f 63 65 73 73 20 74 68 65 20 61 73  o process the as
89b0: 73 6f 63 69 61 74 65 64 20 6c 69 62 72 61 72 79  sociated library
89c0: 20 63 61 6c 6c 62 61 63 6b 73 0a 69 6e 74 65 72   callbacks.inter
89d0: 6e 61 6c 6c 79 2e 20 54 68 65 20 64 65 66 61 75  nally. The defau
89e0: 6c 74 20 62 65 68 61 76 69 6f 72 20 77 68 65 6e  lt behavior when
89f0: 20 74 68 65 20 3c 73 74 72 6f 6e 67 3e 2d 70 61   the <strong>-pa
8a00: 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 20  ssword</strong> 
8a10: 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 74 0a 73 70  option is not.sp
8a20: 65 63 69 66 69 65 64 20 69 73 20 66 6f 72 20 54  ecified is for T
8a30: 4c 53 20 74 6f 20 70 72 6f 63 65 73 73 20 74 68  LS to process th
8a40: 65 20 61 73 73 6f 63 69 61 74 65 64 20 6c 69 62  e associated lib
8a50: 72 61 72 79 20 63 61 6c 6c 62 61 63 6b 73 20 62  rary callbacks b
8a60: 79 20 61 74 74 65 6d 70 74 69 6e 67 0a 74 6f 20  y attempting.to 
8a70: 63 61 6c 6c 20 3c 73 74 72 6f 6e 67 3e 74 6c 73  call <strong>tls
8a80: 3a 3a 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f  ::password</stro
8a90: 6e 67 3e 2e 0a 54 68 65 20 64 69 66 66 65 72 65  ng>..The differe
8aa0: 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 73  nce between thes
8ab0: 65 20 74 77 6f 20 62 65 68 61 76 69 6f 72 73 20  e two behaviors 
8ac0: 69 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65  is a consequence
8ad0: 20 6f 66 20 6d 61 69 6e 74 61 69 6e 69 6e 67 0a   of maintaining.
8ae0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
8af0: 74 68 20 65 61 72 6c 69 65 72 20 69 6d 70 6c 65  th earlier imple
8b00: 6d 65 6e 74 61 74 69 6f 6e 73 2e 0a 3c 2f 70 3e  mentations..</p>
8b10: 0a 0a 3c 70 3e 0a 54 68 65 20 3c 73 74 72 6f 6e  ..<p>.The <stron
8b20: 67 3e 74 6c 73 3a 3a 64 65 62 75 67 3c 2f 73 74  g>tls::debug</st
8b30: 72 6f 6e 67 3e 20 76 61 72 69 61 62 6c 65 20 70  rong> variable p
8b40: 72 6f 76 69 64 65 73 20 73 6f 6d 65 20 61 64 64  rovides some add
8b50: 69 74 69 6f 6e 61 6c 0a 63 6f 6e 74 72 6f 6c 20  itional.control 
8b60: 6f 76 65 72 20 74 68 65 73 65 20 72 65 66 65 72  over these refer
8b70: 65 6e 63 65 20 63 61 6c 6c 62 61 63 6b 73 2e 20  ence callbacks. 
8b80: 20 49 74 73 20 76 61 6c 75 65 20 69 73 20 7a 65   Its value is ze
8b90: 72 6f 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 48  ro by default..H
8ba0: 69 67 68 65 72 20 76 61 6c 75 65 73 20 70 72 6f  igher values pro
8bb0: 64 75 63 65 20 6d 6f 72 65 20 64 69 61 67 6e 6f  duce more diagno
8bc0: 73 74 69 63 20 6f 75 74 70 75 74 2c 20 61 6e 64  stic output, and
8bd0: 20 77 69 6c 6c 20 61 6c 73 6f 20 66 6f 72 63 65   will also force
8be0: 20 74 68 65 0a 76 65 72 69 66 79 20 6d 65 74 68   the.verify meth
8bf0: 6f 64 20 69 6e 20 3c 73 74 72 6f 6e 67 3e 74 6c  od in <strong>tl
8c00: 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f 73 74 72  s::callback</str
8c10: 6f 6e 67 3e 20 74 6f 20 61 63 63 65 70 74 20 74  ong> to accept t
8c20: 68 65 0a 63 65 72 74 69 66 69 63 61 74 65 2c 20  he.certificate, 
8c30: 65 76 65 6e 20 77 68 65 6e 20 69 74 20 69 73 20  even when it is 
8c40: 69 6e 76 61 6c 69 64 2e 0a 3c 2f 70 3e 0a 0a 3c  invalid..</p>..<
8c50: 70 3e 0a 3c 65 6d 3e 0a 54 68 65 20 75 73 65 20  p>.<em>.The use 
8c60: 6f 66 20 74 68 65 20 72 65 66 65 72 65 6e 63 65  of the reference
8c70: 20 63 61 6c 6c 62 61 63 6b 73 20 3c 73 74 72 6f   callbacks <stro
8c80: 6e 67 3e 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b  ng>tls::callback
8c90: 3c 2f 73 74 72 6f 6e 67 3e 2c 0a 3c 73 74 72 6f  </strong>,.<stro
8ca0: 6e 67 3e 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64  ng>tls::password
8cb0: 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c  </strong>, and <
8cc0: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76 61 6c 69  strong>tls::vali
8cd0: 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74  date_command</st
8ce0: 72 6f 6e 67 3e 0a 69 73 20 6e 6f 74 20 72 65 63  rong>.is not rec
8cf0: 6f 6d 6d 65 6e 64 65 64 2e 20 20 54 68 65 79 20  ommended.  They 
8d00: 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66  may be removed f
8d10: 72 6f 6d 20 66 75 74 75 72 65 20 72 65 6c 65 61  rom future relea
8d20: 73 65 73 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a  ses..</em>.</p>.
8d30: 0a 3c 70 3e 0a 3c 65 6d 3e 0a 54 68 65 20 75 73  .<p>.<em>.The us
8d40: 65 20 6f 66 20 74 68 65 20 76 61 72 69 61 62 6c  e of the variabl
8d50: 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 64  e <strong>tls::d
8d60: 65 62 75 67 3c 2f 73 74 72 6f 6e 67 3e 20 69 73  ebug</strong> is
8d70: 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64   not recommended
8d80: 2e 0a 49 74 20 6d 61 79 20 62 65 20 72 65 6d 6f  ..It may be remo
8d90: 76 65 64 20 66 72 6f 6d 20 66 75 74 75 72 65 20  ved from future 
8da0: 72 65 6c 65 61 73 65 73 2e 0a 3c 2f 65 6d 3e 0a  releases..</em>.
8db0: 3c 2f 70 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d  </p>..<h3><a nam
8dc0: 65 3d 22 44 45 42 55 47 22 3e 44 45 42 55 47 3c  e="DEBUG">DEBUG<
8dd0: 2f 61 3e 3c 2f 68 33 3e 0a 0a 54 4c 53 20 6b 65  /a></h3>..TLS ke
8de0: 79 20 6c 6f 67 67 69 6e 67 20 63 61 6e 20 62 65  y logging can be
8df0: 20 65 6e 61 62 6c 65 64 20 62 79 20 73 65 74 74   enabled by sett
8e00: 69 6e 67 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  ing the environm
8e10: 65 6e 74 20 76 61 72 69 61 62 6c 65 0a 3c 62 3e  ent variable.<b>
8e20: 53 53 4c 4b 45 59 4c 4f 47 46 49 4c 45 3c 2f 62  SSLKEYLOGFILE</b
8e30: 3e 20 74 6f 20 74 68 65 20 6e 61 6d 65 20 6f 66  > to the name of
8e40: 20 74 68 65 20 66 69 6c 65 20 74 6f 20 6c 6f 67   the file to log
8e50: 20 74 6f 2e 20 54 68 65 6e 20 77 68 65 6e 65 76   to. Then whenev
8e60: 65 72 20 54 4c 53 0a 6b 65 79 20 6d 61 74 65 72  er TLS.key mater
8e70: 69 61 6c 20 69 73 20 67 65 6e 65 72 61 74 65 64  ial is generated
8e80: 20 6f 72 20 72 65 63 65 69 76 65 64 20 69 74 20   or received it 
8e90: 77 69 6c 6c 20 62 65 20 6c 6f 67 67 65 64 20 74  will be logged t
8ea0: 6f 20 74 68 65 20 66 69 6c 65 2e 20 54 68 69 73  o the file. This
8eb0: 0a 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 6c  .is useful for l
8ec0: 6f 67 67 69 6e 67 20 6b 65 79 20 64 61 74 61 20  ogging key data 
8ed0: 66 6f 72 20 6e 65 74 77 6f 72 6b 20 6c 6f 67 67  for network logg
8ee0: 69 6e 67 20 74 6f 6f 6c 73 20 74 6f 20 75 73 65  ing tools to use
8ef0: 20 74 6f 0a 64 65 63 72 79 70 74 20 74 68 65 20   to.decrypt the 
8f00: 64 61 74 61 2e 0a 0a 3c 68 33 3e 3c 61 20 6e 61  data...<h3><a na
8f10: 6d 65 3d 22 48 54 54 50 53 20 45 58 41 4d 50 4c  me="HTTPS EXAMPL
8f20: 45 22 3e 48 54 54 50 53 20 45 58 41 4d 50 4c 45  E">HTTPS EXAMPLE
8f30: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68  </a></h3>..<p>Th
8f40: 69 73 20 65 78 61 6d 70 6c 65 20 75 73 65 73 20  is example uses 
8f50: 61 20 73 61 6d 70 6c 65 20 73 65 72 76 65 72 2e  a sample server.
8f60: 70 65 6d 20 70 72 6f 76 69 64 65 64 20 77 69 74  pem provided wit
8f70: 68 20 74 68 65 20 54 4c 53 20 72 65 6c 65 61 73  h the TLS releas
8f80: 65 2c 0a 63 6f 75 72 74 65 73 79 20 6f 66 20 74  e,.courtesy of t
8f90: 68 65 20 3c 73 74 72 6f 6e 67 3e 4f 70 65 6e 53  he <strong>OpenS
8fa0: 53 4c 3c 2f 73 74 72 6f 6e 67 3e 20 70 72 6f 6a  SL</strong> proj
8fb0: 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 72 65 3e 3c  ect.</p>..<pre><
8fc0: 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20 72 65  code>.package re
8fd0: 71 75 69 72 65 20 68 74 74 70 0a 70 61 63 6b 61  quire http.packa
8fe0: 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 0a  ge require tls..
8ff0: 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72 20 68  http::register h
9000: 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74 20 3a  ttps 443 [list :
9010: 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 75  :tls::socket -au
9020: 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 74 72 75  toservername tru
9030: 65 20 2d 72 65 71 75 69 72 65 20 74 72 75 65 20  e -require true 
9040: 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73 6c 2f  -cadir /etc/ssl/
9050: 63 65 72 74 73 5d 0a 0a 73 65 74 20 74 6f 6b 20  certs]..set tok 
9060: 5b 68 74 74 70 3a 3a 67 65 74 75 72 6c 20 68 74  [http::geturl ht
9070: 74 70 73 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b  tps://www.tcl.tk
9080: 2f 5d 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e  /].</code></pre>
9090: 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 53  ..<h3><a name="S
90a0: 50 45 43 49 41 4c 20 43 4f 4e 53 49 44 45 52 41  PECIAL CONSIDERA
90b0: 54 49 4f 4e 53 22 3e 53 50 45 43 49 41 4c 20 43  TIONS">SPECIAL C
90c0: 4f 4e 53 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61  ONSIDERATIONS</a
90d0: 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63  ></h3>..<p>The c
90e0: 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66 20 74  apabilities of t
90f0: 68 69 73 20 70 61 63 6b 61 67 65 20 63 61 6e 20  his package can 
9100: 76 61 72 79 20 65 6e 6f 72 6d 6f 75 73 6c 79 20  vary enormously 
9110: 62 61 73 65 64 20 75 70 6f 6e 20 68 6f 77 20 79  based upon how y
9120: 6f 75 72 0a 4f 70 65 6e 53 53 4c 20 6c 69 62 72  our.OpenSSL libr
9130: 61 72 79 20 77 61 73 20 63 6f 6e 66 69 67 75 72  ary was configur
9140: 65 64 20 61 6e 64 20 62 75 69 6c 74 2e 20 4e 65  ed and built. Ne
9150: 77 20 76 65 72 73 69 6f 6e 73 20 6d 61 79 20 6f  w versions may o
9160: 62 73 6f 6c 65 74 65 20 6f 6c 64 65 72 0a 70 72  bsolete older.pr
9170: 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 73 2c  otocol versions,
9180: 20 61 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63   add or remove c
9190: 69 70 68 65 72 73 2c 20 63 68 61 6e 67 65 20 64  iphers, change d
91a0: 65 66 61 75 6c 74 20 76 61 6c 75 65 73 2c 20 65  efault values, e
91b0: 74 63 2e 20 55 73 65 20 74 68 65 0a 3c 73 74 72  tc. Use the.<str
91c0: 6f 6e 67 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73  ong>tls::ciphers
91d0: 3c 2f 73 74 72 6f 6e 67 3e 20 61 6e 64 20 3c 73  </strong> and <s
91e0: 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 72 6f 74 6f  trong>tls::proto
91f0: 63 6f 6c 73 3c 2f 73 74 72 6f 6e 67 3e 20 63 6f  cols</strong> co
9200: 6d 6d 61 6e 64 73 20 74 6f 0a 6f 62 74 61 69 6e  mmands to.obtain
9210: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 76   the supported v
9220: 65 72 73 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 68  ersions.</p>..<h
9230: 33 3e 3c 61 20 6e 61 6d 65 3d 22 53 45 45 20 41  3><a name="SEE A
9240: 4c 53 4f 22 3e 53 45 45 20 41 4c 53 4f 3c 2f 61  LSO">SEE ALSO</a
9250: 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 3c 73 74 72 6f  ></h3>..<p><stro
9260: 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e  ng>socket</stron
9270: 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 66 69 6c 65  g>, <strong>file
9280: 65 76 65 6e 74 2c 20 3c 2f 73 74 72 6f 6e 67 3e  event, </strong>
9290: 3c 61 0a 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a.href="http://
92a0: 77 77 77 2e 6f 70 65 6e 73 73 6c 2e 6f 72 67 2f  www.openssl.org/
92b0: 22 3e 3c 73 74 72 6f 6e 67 3e 4f 70 65 6e 53 53  "><strong>OpenSS
92c0: 4c 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f  L</strong></a></
92d0: 70 3e 0a 0a 3c 68 72 3e 0a 0a 3c 70 72 65 3e 0a  p>..<hr>..<pre>.
92e0: 43 6f 70 79 72 69 67 68 74 20 26 63 6f 70 79 3b  Copyright &copy;
92f0: 20 31 39 39 39 20 4d 61 74 74 20 4e 65 77 6d 61   1999 Matt Newma
9300: 6e 2e 0a 43 6f 70 79 72 69 67 68 74 20 26 63 6f  n..Copyright &co
9310: 70 79 3b 20 32 30 30 34 20 53 74 61 72 66 69 73  py; 2004 Starfis
9320: 68 20 53 79 73 74 65 6d 73 2e 0a 3c 2f 70 72 65  h Systems..</pre
9330: 3e 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c  >.</body>.</html
9340: 3e 0a                                            >.