Hex Artifact Content

Artifact 68573cb13ea4bf97fdd060108a850945ea85ae54f69b92c629389e555da4d8f3:


0000: 27 5c 22 0a 27 5c 22 20 47 65 6e 65 72 61 74 65  '\".'\" Generate
0010: 64 20 66 72 6f 6d 20 66 69 6c 65 20 27 74 6c 73  d from file 'tls
0020: 5c 26 2e 6d 61 6e 27 20 62 79 20 74 63 6c 6c 69  \&.man' by tclli
0030: 62 2f 64 6f 63 74 6f 6f 6c 73 20 77 69 74 68 20  b/doctools with 
0040: 66 6f 72 6d 61 74 20 27 6e 72 6f 66 66 27 0a 27  format 'nroff'.'
0050: 5c 22 20 43 6f 70 79 72 69 67 68 74 20 28 63 29  \" Copyright (c)
0060: 20 31 39 39 39 20 4d 61 74 74 20 4e 65 77 6d 61   1999 Matt Newma
0070: 6e 0a 27 5c 22 20 43 6f 70 79 72 69 67 68 74 20  n.'\" Copyright 
0080: 28 63 29 20 32 30 30 34 20 53 74 61 72 66 69 73  (c) 2004 Starfis
0090: 68 20 53 79 73 74 65 6d 73 0a 27 5c 22 20 43 6f  h Systems.'\" Co
00a0: 70 79 72 69 67 68 74 20 28 63 29 20 32 30 32 34  pyright (c) 2024
00b0: 20 42 72 69 61 6e 20 4f 27 48 61 67 61 6e 0a 27   Brian O'Hagan.'
00c0: 5c 22 0a 2e 54 48 20 22 74 6c 73 22 20 6e 20 31  \"..TH "tls" n 1
00d0: 5c 26 2e 38 20 74 6c 73 20 22 54 63 6c 20 54 4c  \&.8 tls "Tcl TL
00e0: 53 20 65 78 74 65 6e 73 69 6f 6e 22 0a 2e 5c 22  S extension"..\"
00f0: 20 54 68 65 20 2d 2a 2d 20 6e 72 6f 66 66 20 2d   The -*- nroff -
0100: 2a 2d 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 62  *- definitions b
0110: 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 73 75 70  elow are for sup
0120: 70 6c 65 6d 65 6e 74 61 6c 20 6d 61 63 72 6f 73  plemental macros
0130: 20 75 73 65 64 0a 2e 5c 22 20 69 6e 20 54 63 6c   used..\" in Tcl
0140: 2f 54 6b 20 6d 61 6e 75 61 6c 20 65 6e 74 72 69  /Tk manual entri
0150: 65 73 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 41 50 20  es...\"..\" .AP 
0160: 74 79 70 65 20 6e 61 6d 65 20 69 6e 2f 6f 75 74  type name in/out
0170: 20 3f 69 6e 64 65 6e 74 3f 0a 2e 5c 22 09 53 74   ?indent?..\".St
0180: 61 72 74 20 70 61 72 61 67 72 61 70 68 20 64 65  art paragraph de
0190: 73 63 72 69 62 69 6e 67 20 61 6e 20 61 72 67 75  scribing an argu
01a0: 6d 65 6e 74 20 74 6f 20 61 20 6c 69 62 72 61 72  ment to a librar
01b0: 79 20 70 72 6f 63 65 64 75 72 65 2e 0a 2e 5c 22  y procedure...\"
01c0: 09 74 79 70 65 20 69 73 20 74 79 70 65 20 6f 66  .type is type of
01d0: 20 61 72 67 75 6d 65 6e 74 20 28 69 6e 74 2c 20   argument (int, 
01e0: 65 74 63 2e 29 2c 20 69 6e 2f 6f 75 74 20 69 73  etc.), in/out is
01f0: 20 65 69 74 68 65 72 20 22 69 6e 22 2c 20 22 6f   either "in", "o
0200: 75 74 22 2c 0a 2e 5c 22 09 6f 72 20 22 69 6e 2f  ut",..\".or "in/
0210: 6f 75 74 22 20 74 6f 20 64 65 73 63 72 69 62 65  out" to describe
0220: 20 77 68 65 74 68 65 72 20 70 72 6f 63 65 64 75   whether procedu
0230: 72 65 20 72 65 61 64 73 20 6f 72 20 6d 6f 64 69  re reads or modi
0240: 66 69 65 73 20 61 72 67 2c 0a 2e 5c 22 09 61 6e  fies arg,..\".an
0250: 64 20 69 6e 64 65 6e 74 20 69 73 20 65 71 75 69  d indent is equi
0260: 76 61 6c 65 6e 74 20 74 6f 20 73 65 63 6f 6e 64  valent to second
0270: 20 61 72 67 20 6f 66 20 2e 49 50 20 28 73 68 6f   arg of .IP (sho
0280: 75 6c 64 6e 27 74 20 65 76 65 72 20 62 65 0a 2e  uldn't ever be..
0290: 5c 22 09 6e 65 65 64 65 64 3b 20 20 75 73 65 20  \".needed;  use 
02a0: 2e 41 53 20 62 65 6c 6f 77 20 69 6e 73 74 65 61  .AS below instea
02b0: 64 29 0a 2e 5c 22 0a 2e 5c 22 20 2e 41 53 20 3f  d)..\"..\" .AS ?
02c0: 74 79 70 65 3f 20 3f 6e 61 6d 65 3f 0a 2e 5c 22  type? ?name?..\"
02d0: 09 47 69 76 65 20 6d 61 78 69 6d 75 6d 20 73 69  .Give maximum si
02e0: 7a 65 73 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  zes of arguments
02f0: 20 66 6f 72 20 73 65 74 74 69 6e 67 20 74 61 62   for setting tab
0300: 20 73 74 6f 70 73 2e 20 20 54 79 70 65 20 61 6e   stops.  Type an
0310: 64 0a 2e 5c 22 09 6e 61 6d 65 20 61 72 65 20 65  d..\".name are e
0320: 78 61 6d 70 6c 65 73 20 6f 66 20 6c 61 72 67 65  xamples of large
0330: 73 74 20 70 6f 73 73 69 62 6c 65 20 61 72 67 75  st possible argu
0340: 6d 65 6e 74 73 20 74 68 61 74 20 77 69 6c 6c 20  ments that will 
0350: 62 65 20 70 61 73 73 65 64 0a 2e 5c 22 09 74 6f  be passed..\".to
0360: 20 2e 41 50 20 6c 61 74 65 72 2e 20 20 49 66 20   .AP later.  If 
0370: 61 72 67 73 20 61 72 65 20 6f 6d 69 74 74 65 64  args are omitted
0380: 2c 20 64 65 66 61 75 6c 74 20 74 61 62 20 73 74  , default tab st
0390: 6f 70 73 20 61 72 65 20 75 73 65 64 2e 0a 2e 5c  ops are used...\
03a0: 22 0a 2e 5c 22 20 2e 42 53 0a 2e 5c 22 09 53 74  "..\" .BS..\".St
03b0: 61 72 74 20 62 6f 78 20 65 6e 63 6c 6f 73 75 72  art box enclosur
03c0: 65 2e 20 20 46 72 6f 6d 20 68 65 72 65 20 75 6e  e.  From here un
03d0: 74 69 6c 20 6e 65 78 74 20 2e 42 45 2c 20 65 76  til next .BE, ev
03e0: 65 72 79 74 68 69 6e 67 20 77 69 6c 6c 20 62 65  erything will be
03f0: 0a 2e 5c 22 09 65 6e 63 6c 6f 73 65 64 20 69 6e  ..\".enclosed in
0400: 20 6f 6e 65 20 6c 61 72 67 65 20 62 6f 78 2e 0a   one large box..
0410: 2e 5c 22 0a 2e 5c 22 20 2e 42 45 0a 2e 5c 22 09  .\"..\" .BE..\".
0420: 45 6e 64 20 6f 66 20 62 6f 78 20 65 6e 63 6c 6f  End of box enclo
0430: 73 75 72 65 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 43  sure...\"..\" .C
0440: 53 0a 2e 5c 22 09 42 65 67 69 6e 20 63 6f 64 65  S..\".Begin code
0450: 20 65 78 63 65 72 70 74 2e 0a 2e 5c 22 0a 2e 5c   excerpt...\"..\
0460: 22 20 2e 43 45 0a 2e 5c 22 09 45 6e 64 20 63 6f  " .CE..\".End co
0470: 64 65 20 65 78 63 65 72 70 74 2e 0a 2e 5c 22 0a  de excerpt...\".
0480: 2e 5c 22 20 2e 56 53 20 3f 76 65 72 73 69 6f 6e  .\" .VS ?version
0490: 3f 20 3f 62 72 3f 0a 2e 5c 22 09 42 65 67 69 6e  ? ?br?..\".Begin
04a0: 20 76 65 72 74 69 63 61 6c 20 73 69 64 65 62 61   vertical sideba
04b0: 72 2c 20 66 6f 72 20 75 73 65 20 69 6e 20 6d 61  r, for use in ma
04c0: 72 6b 69 6e 67 20 6e 65 77 6c 79 2d 63 68 61 6e  rking newly-chan
04d0: 67 65 64 20 70 61 72 74 73 0a 2e 5c 22 09 6f 66  ged parts..\".of
04e0: 20 6d 61 6e 20 70 61 67 65 73 2e 20 20 54 68 65   man pages.  The
04f0: 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
0500: 69 73 20 69 67 6e 6f 72 65 64 20 61 6e 64 20 75  is ignored and u
0510: 73 65 64 20 66 6f 72 20 72 65 63 6f 72 64 69 6e  sed for recordin
0520: 67 0a 2e 5c 22 09 74 68 65 20 76 65 72 73 69 6f  g..\".the versio
0530: 6e 20 77 68 65 6e 20 74 68 65 20 2e 56 53 20 77  n when the .VS w
0540: 61 73 20 61 64 64 65 64 2c 20 73 6f 20 74 68 61  as added, so tha
0550: 74 20 74 68 65 20 73 69 64 65 62 61 72 73 20 63  t the sidebars c
0560: 61 6e 20 62 65 0a 2e 5c 22 09 66 6f 75 6e 64 20  an be..\".found 
0570: 61 6e 64 20 72 65 6d 6f 76 65 64 20 77 68 65 6e  and removed when
0580: 20 74 68 65 79 20 72 65 61 63 68 20 61 20 63 65   they reach a ce
0590: 72 74 61 69 6e 20 61 67 65 2e 20 20 49 66 20 61  rtain age.  If a
05a0: 6e 6f 74 68 65 72 20 61 72 67 75 6d 65 6e 74 0a  nother argument.
05b0: 2e 5c 22 09 69 73 20 70 72 65 73 65 6e 74 2c 20  .\".is present, 
05c0: 74 68 65 6e 20 61 20 6c 69 6e 65 20 62 72 65 61  then a line brea
05d0: 6b 20 69 73 20 66 6f 72 63 65 64 20 62 65 66 6f  k is forced befo
05e0: 72 65 20 73 74 61 72 74 69 6e 67 20 74 68 65 20  re starting the 
05f0: 73 69 64 65 62 61 72 2e 0a 2e 5c 22 0a 2e 5c 22  sidebar...\"..\"
0600: 20 2e 56 45 0a 2e 5c 22 09 45 6e 64 20 6f 66 20   .VE..\".End of 
0610: 76 65 72 74 69 63 61 6c 20 73 69 64 65 62 61 72  vertical sidebar
0620: 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 44 53 0a 2e 5c  ...\"..\" .DS..\
0630: 22 09 42 65 67 69 6e 20 61 6e 20 69 6e 64 65 6e  ".Begin an inden
0640: 74 65 64 20 75 6e 66 69 6c 6c 65 64 20 64 69 73  ted unfilled dis
0650: 70 6c 61 79 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 44  play...\"..\" .D
0660: 45 0a 2e 5c 22 09 45 6e 64 20 6f 66 20 69 6e 64  E..\".End of ind
0670: 65 6e 74 65 64 20 75 6e 66 69 6c 6c 65 64 20 64  ented unfilled d
0680: 69 73 70 6c 61 79 2e 0a 2e 5c 22 0a 2e 5c 22 20  isplay...\"..\" 
0690: 2e 53 4f 20 3f 6d 61 6e 70 61 67 65 3f 0a 2e 5c  .SO ?manpage?..\
06a0: 22 09 53 74 61 72 74 20 6f 66 20 6c 69 73 74 20  ".Start of list 
06b0: 6f 66 20 73 74 61 6e 64 61 72 64 20 6f 70 74 69  of standard opti
06c0: 6f 6e 73 20 66 6f 72 20 61 20 54 6b 20 77 69 64  ons for a Tk wid
06d0: 67 65 74 2e 20 54 68 65 20 6d 61 6e 70 61 67 65  get. The manpage
06e0: 0a 2e 5c 22 09 61 72 67 75 6d 65 6e 74 20 64 65  ..\".argument de
06f0: 66 69 6e 65 73 20 77 68 65 72 65 20 74 6f 20 6c  fines where to l
0700: 6f 6f 6b 20 75 70 20 74 68 65 20 73 74 61 6e 64  ook up the stand
0710: 61 72 64 20 6f 70 74 69 6f 6e 73 3b 20 69 66 0a  ard options; if.
0720: 2e 5c 22 09 6f 6d 69 74 74 65 64 2c 20 64 65 66  .\".omitted, def
0730: 61 75 6c 74 73 20 74 6f 20 22 6f 70 74 69 6f 6e  aults to "option
0740: 73 22 2e 20 54 68 65 20 6f 70 74 69 6f 6e 73 20  s". The options 
0750: 66 6f 6c 6c 6f 77 20 6f 6e 20 73 75 63 63 65 73  follow on succes
0760: 73 69 76 65 0a 2e 5c 22 09 6c 69 6e 65 73 2c 20  sive..\".lines, 
0770: 69 6e 20 74 68 72 65 65 20 63 6f 6c 75 6d 6e 73  in three columns
0780: 20 73 65 70 61 72 61 74 65 64 20 62 79 20 74 61   separated by ta
0790: 62 73 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 53 45 0a  bs...\"..\" .SE.
07a0: 2e 5c 22 09 45 6e 64 20 6f 66 20 6c 69 73 74 20  .\".End of list 
07b0: 6f 66 20 73 74 61 6e 64 61 72 64 20 6f 70 74 69  of standard opti
07c0: 6f 6e 73 20 66 6f 72 20 61 20 54 6b 20 77 69 64  ons for a Tk wid
07d0: 67 65 74 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 4f 50  get...\"..\" .OP
07e0: 20 63 6d 64 4e 61 6d 65 20 64 62 4e 61 6d 65 20   cmdName dbName 
07f0: 64 62 43 6c 61 73 73 0a 2e 5c 22 09 53 74 61 72  dbClass..\".Star
0800: 74 20 6f 66 20 64 65 73 63 72 69 70 74 69 6f 6e  t of description
0810: 20 6f 66 20 61 20 73 70 65 63 69 66 69 63 20 6f   of a specific o
0820: 70 74 69 6f 6e 2e 20 20 63 6d 64 4e 61 6d 65 20  ption.  cmdName 
0830: 67 69 76 65 73 20 74 68 65 0a 2e 5c 22 09 6f 70  gives the..\".op
0840: 74 69 6f 6e 27 73 20 6e 61 6d 65 20 61 73 20 73  tion's name as s
0850: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
0860: 63 6c 61 73 73 20 63 6f 6d 6d 61 6e 64 2c 20 64  class command, d
0870: 62 4e 61 6d 65 20 67 69 76 65 73 0a 2e 5c 22 09  bName gives..\".
0880: 74 68 65 20 6f 70 74 69 6f 6e 27 73 20 6e 61 6d  the option's nam
0890: 65 20 69 6e 20 74 68 65 20 6f 70 74 69 6f 6e 20  e in the option 
08a0: 64 61 74 61 62 61 73 65 2c 20 61 6e 64 20 64 62  database, and db
08b0: 43 6c 61 73 73 20 67 69 76 65 73 0a 2e 5c 22 09  Class gives..\".
08c0: 74 68 65 20 6f 70 74 69 6f 6e 27 73 20 63 6c 61  the option's cla
08d0: 73 73 20 69 6e 20 74 68 65 20 6f 70 74 69 6f 6e  ss in the option
08e0: 20 64 61 74 61 62 61 73 65 2e 0a 2e 5c 22 0a 2e   database...\"..
08f0: 5c 22 20 2e 55 4c 20 61 72 67 31 20 61 72 67 32  \" .UL arg1 arg2
0900: 0a 2e 5c 22 09 50 72 69 6e 74 20 61 72 67 31 20  ..\".Print arg1 
0910: 75 6e 64 65 72 6c 69 6e 65 64 2c 20 74 68 65 6e  underlined, then
0920: 20 70 72 69 6e 74 20 61 72 67 32 20 6e 6f 72 6d   print arg2 norm
0930: 61 6c 6c 79 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e 51  ally...\"..\" .Q
0940: 57 20 61 72 67 31 20 3f 61 72 67 32 3f 0a 2e 5c  W arg1 ?arg2?..\
0950: 22 09 50 72 69 6e 74 20 61 72 67 31 20 69 6e 20  ".Print arg1 in 
0960: 71 75 6f 74 65 73 2c 20 74 68 65 6e 20 61 72 67  quotes, then arg
0970: 32 20 6e 6f 72 6d 61 6c 6c 79 20 28 66 6f 72 20  2 normally (for 
0980: 74 72 61 69 6c 69 6e 67 20 70 75 6e 63 74 75 61  trailing punctua
0990: 74 69 6f 6e 29 2e 0a 2e 5c 22 0a 2e 5c 22 20 2e  tion)...\"..\" .
09a0: 50 51 20 61 72 67 31 20 3f 61 72 67 32 3f 0a 2e  PQ arg1 ?arg2?..
09b0: 5c 22 09 50 72 69 6e 74 20 61 6e 20 6f 70 65 6e  \".Print an open
09c0: 20 70 61 72 65 6e 74 68 65 73 69 73 2c 20 61 72   parenthesis, ar
09d0: 67 31 20 69 6e 20 71 75 6f 74 65 73 2c 20 74 68  g1 in quotes, th
09e0: 65 6e 20 61 72 67 32 20 6e 6f 72 6d 61 6c 6c 79  en arg2 normally
09f0: 0a 2e 5c 22 09 28 66 6f 72 20 74 72 61 69 6c 69  ..\".(for traili
0a00: 6e 67 20 70 75 6e 63 74 75 61 74 69 6f 6e 29 20  ng punctuation) 
0a10: 61 6e 64 20 74 68 65 6e 20 61 20 63 6c 6f 73 69  and then a closi
0a20: 6e 67 20 70 61 72 65 6e 74 68 65 73 69 73 2e 0a  ng parenthesis..
0a30: 2e 5c 22 0a 2e 5c 22 09 23 20 53 65 74 20 75 70  .\"..\".# Set up
0a40: 20 74 72 61 70 73 20 61 6e 64 20 6f 74 68 65 72   traps and other
0a50: 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 73   miscellaneous s
0a60: 74 75 66 66 20 66 6f 72 20 54 63 6c 2f 54 6b 20  tuff for Tcl/Tk 
0a70: 6d 61 6e 20 70 61 67 65 73 2e 0a 2e 69 66 20 74  man pages...if t
0a80: 20 2e 77 68 20 2d 31 2e 33 69 20 5e 42 0a 2e 6e   .wh -1.3i ^B..n
0a90: 72 20 5e 6c 20 5c 6e 28 2e 6c 0a 2e 61 64 20 62  r ^l \n(.l..ad b
0aa0: 0a 2e 5c 22 09 23 20 53 74 61 72 74 20 61 6e 20  ..\".# Start an 
0ab0: 61 72 67 75 6d 65 6e 74 20 64 65 73 63 72 69 70  argument descrip
0ac0: 74 69 6f 6e 0a 2e 64 65 20 41 50 0a 2e 69 65 20  tion..de AP..ie 
0ad0: 21 22 5c 5c 24 34 22 22 20 2e 54 50 20 5c 5c 24  !"\\$4"" .TP \\$
0ae0: 34 0a 2e 65 6c 20 5c 7b 5c 0a 2e 20 20 20 69 65  4..el \{\..   ie
0af0: 20 21 22 5c 5c 24 32 22 22 20 2e 54 50 20 5c 5c   !"\\$2"" .TP \\
0b00: 6e 28 29 43 75 0a 2e 20 20 20 65 6c 20 20 20 20  n()Cu..   el    
0b10: 20 20 20 20 20 20 2e 54 50 20 31 35 0a 2e 5c 7d        .TP 15..\}
0b20: 0a 2e 74 61 20 5c 5c 6e 28 29 41 75 20 5c 5c 6e  ..ta \\n()Au \\n
0b30: 28 29 42 75 0a 2e 69 65 20 21 22 5c 5c 24 33 22  ()Bu..ie !"\\$3"
0b40: 22 20 5c 7b 5c 0a 5c 26 5c 5c 24 31 20 5c 5c 66  " \{\.\&\\$1 \\f
0b50: 49 5c 5c 24 32 5c 5c 66 50 20 28 5c 5c 24 33 29  I\\$2\\fP (\\$3)
0b60: 0a 2e 5c 22 2e 62 0a 2e 5c 7d 0a 2e 65 6c 20 5c  ..\".b..\}..el \
0b70: 7b 5c 0a 2e 62 72 0a 2e 69 65 20 21 22 5c 5c 24  {\..br..ie !"\\$
0b80: 32 22 22 20 5c 7b 5c 0a 5c 26 5c 5c 24 31 09 5c  2"" \{\.\&\\$1.\
0b90: 5c 66 49 5c 5c 24 32 5c 5c 66 50 0a 2e 5c 7d 0a  \fI\\$2\\fP..\}.
0ba0: 2e 65 6c 20 5c 7b 5c 0a 5c 26 5c 5c 66 49 5c 5c  .el \{\.\&\\fI\\
0bb0: 24 31 5c 5c 66 50 0a 2e 5c 7d 0a 2e 5c 7d 0a 2e  $1\\fP..\}..\}..
0bc0: 2e 0a 2e 5c 22 09 23 20 64 65 66 69 6e 65 20 74  ...\".# define t
0bd0: 61 62 62 69 6e 67 20 76 61 6c 75 65 73 20 66 6f  abbing values fo
0be0: 72 20 2e 41 50 0a 2e 64 65 20 41 53 0a 2e 6e 72  r .AP..de AS..nr
0bf0: 20 29 41 20 31 30 6e 0a 2e 69 66 20 21 22 5c 5c   )A 10n..if !"\\
0c00: 24 31 22 22 20 2e 6e 72 20 29 41 20 5c 5c 77 27  $1"" .nr )A \\w'
0c10: 5c 5c 24 31 27 75 2b 33 6e 0a 2e 6e 72 20 29 42  \\$1'u+3n..nr )B
0c20: 20 5c 5c 6e 28 29 41 75 2b 31 35 6e 0a 2e 5c 22   \\n()Au+15n..\"
0c30: 0a 2e 69 66 20 21 22 5c 5c 24 32 22 22 20 2e 6e  ..if !"\\$2"" .n
0c40: 72 20 29 42 20 5c 5c 77 27 5c 5c 24 32 27 75 2b  r )B \\w'\\$2'u+
0c50: 5c 5c 6e 28 29 41 75 2b 33 6e 0a 2e 6e 72 20 29  \\n()Au+3n..nr )
0c60: 43 20 5c 5c 6e 28 29 42 75 2b 5c 5c 77 27 28 69  C \\n()Bu+\\w'(i
0c70: 6e 2f 6f 75 74 29 27 75 2b 32 6e 0a 2e 2e 0a 2e  n/out)'u+2n.....
0c80: 41 53 20 54 63 6c 5f 49 6e 74 65 72 70 20 54 63  AS Tcl_Interp Tc
0c90: 6c 5f 43 72 65 61 74 65 49 6e 74 65 72 70 20 69  l_CreateInterp i
0ca0: 6e 2f 6f 75 74 0a 2e 5c 22 09 23 20 42 53 20 2d  n/out..\".# BS -
0cb0: 20 73 74 61 72 74 20 62 6f 78 65 64 20 74 65 78   start boxed tex
0cc0: 74 0a 2e 5c 22 09 23 20 5e 79 20 3d 20 73 74 61  t..\".# ^y = sta
0cd0: 72 74 69 6e 67 20 79 20 6c 6f 63 61 74 69 6f 6e  rting y location
0ce0: 0a 2e 5c 22 09 23 20 5e 62 20 3d 20 31 0a 2e 64  ..\".# ^b = 1..d
0cf0: 65 20 42 53 0a 2e 62 72 0a 2e 6d 6b 20 5e 79 0a  e BS..br..mk ^y.
0d00: 2e 6e 72 20 5e 62 20 31 75 0a 2e 69 66 20 6e 20  .nr ^b 1u..if n 
0d10: 2e 6e 66 0a 2e 69 66 20 6e 20 2e 74 69 20 30 0a  .nf..if n .ti 0.
0d20: 2e 69 66 20 6e 20 5c 6c 27 5c 5c 6e 28 2e 6c 75  .if n \l'\\n(.lu
0d30: 5c 28 75 6c 27 0a 2e 69 66 20 6e 20 2e 66 69 0a  \(ul'..if n .fi.
0d40: 2e 2e 0a 2e 5c 22 09 23 20 42 45 20 2d 20 65 6e  ....\".# BE - en
0d50: 64 20 62 6f 78 65 64 20 74 65 78 74 20 28 64 72  d boxed text (dr
0d60: 61 77 20 62 6f 78 20 6e 6f 77 29 0a 2e 64 65 20  aw box now)..de 
0d70: 42 45 0a 2e 6e 66 0a 2e 74 69 20 30 0a 2e 6d 6b  BE..nf..ti 0..mk
0d80: 20 5e 74 0a 2e 69 65 20 6e 20 5c 6c 27 5c 5c 6e   ^t..ie n \l'\\n
0d90: 28 5e 6c 75 5c 28 75 6c 27 0a 2e 65 6c 20 5c 7b  (^lu\(ul'..el \{
0da0: 5c 0a 2e 5c 22 09 44 72 61 77 20 66 6f 75 72 2d  \..\".Draw four-
0db0: 73 69 64 65 64 20 62 6f 78 20 6e 6f 72 6d 61 6c  sided box normal
0dc0: 6c 79 2c 20 62 75 74 20 64 6f 6e 27 74 20 64 72  ly, but don't dr
0dd0: 61 77 20 74 6f 70 20 6f 66 0a 2e 5c 22 09 62 6f  aw top of..\".bo
0de0: 78 20 69 66 20 74 68 65 20 62 6f 78 20 73 74 61  x if the box sta
0df0: 72 74 65 64 20 6f 6e 20 61 6e 20 65 61 72 6c 69  rted on an earli
0e00: 65 72 20 70 61 67 65 2e 0a 2e 69 65 20 21 5c 5c  er page...ie !\\
0e10: 6e 28 5e 62 2d 31 20 5c 7b 5c 0a 5c 68 27 2d 31  n(^b-1 \{\.\h'-1
0e20: 2e 35 6e 27 5c 4c 27 7c 5c 5c 6e 28 5e 79 75 2d  .5n'\L'|\\n(^yu-
0e30: 31 76 27 5c 6c 27 5c 5c 6e 28 5e 6c 75 2b 33 6e  1v'\l'\\n(^lu+3n
0e40: 5c 28 75 6c 27 5c 4c 27 5c 5c 6e 28 5e 74 75 2b  \(ul'\L'\\n(^tu+
0e50: 31 76 2d 5c 5c 6e 28 5e 79 75 27 5c 6c 27 7c 30  1v-\\n(^yu'\l'|0
0e60: 75 2d 31 2e 35 6e 5c 28 75 6c 27 0a 2e 5c 7d 0a  u-1.5n\(ul'..\}.
0e70: 2e 65 6c 20 5c 7d 5c 0a 5c 68 27 2d 31 2e 35 6e  .el \}\.\h'-1.5n
0e80: 27 5c 4c 27 7c 5c 5c 6e 28 5e 79 75 2d 31 76 27  '\L'|\\n(^yu-1v'
0e90: 5c 68 27 5c 5c 6e 28 5e 6c 75 2b 33 6e 27 5c 4c  \h'\\n(^lu+3n'\L
0ea0: 27 5c 5c 6e 28 5e 74 75 2b 31 76 2d 5c 5c 6e 28  '\\n(^tu+1v-\\n(
0eb0: 5e 79 75 27 5c 6c 27 7c 30 75 2d 31 2e 35 6e 5c  ^yu'\l'|0u-1.5n\
0ec0: 28 75 6c 27 0a 2e 5c 7d 0a 2e 5c 7d 0a 2e 66 69  (ul'..\}..\}..fi
0ed0: 0a 2e 62 72 0a 2e 6e 72 20 5e 62 20 30 0a 2e 2e  ..br..nr ^b 0...
0ee0: 0a 2e 5c 22 09 23 20 56 53 20 2d 20 73 74 61 72  ..\".# VS - star
0ef0: 74 20 76 65 72 74 69 63 61 6c 20 73 69 64 65 62  t vertical sideb
0f00: 61 72 0a 2e 5c 22 09 23 20 5e 59 20 3d 20 73 74  ar..\".# ^Y = st
0f10: 61 72 74 69 6e 67 20 79 20 6c 6f 63 61 74 69 6f  arting y locatio
0f20: 6e 0a 2e 5c 22 09 23 20 5e 76 20 3d 20 31 20 28  n..\".# ^v = 1 (
0f30: 66 6f 72 20 74 72 6f 66 66 3b 20 20 66 6f 72 20  for troff;  for 
0f40: 6e 72 6f 66 66 20 74 68 69 73 20 64 6f 65 73 6e  nroff this doesn
0f50: 27 74 20 6d 61 74 74 65 72 29 0a 2e 64 65 20 56  't matter)..de V
0f60: 53 0a 2e 69 66 20 21 22 5c 5c 24 32 22 22 20 2e  S..if !"\\$2"" .
0f70: 62 72 0a 2e 6d 6b 20 5e 59 0a 2e 69 65 20 6e 20  br..mk ^Y..ie n 
0f80: 27 6d 63 20 5c 73 31 32 5c 28 62 72 5c 73 30 0a  'mc \s12\(br\s0.
0f90: 2e 65 6c 20 2e 6e 72 20 5e 76 20 31 75 0a 2e 2e  .el .nr ^v 1u...
0fa0: 0a 2e 5c 22 09 23 20 56 45 20 2d 20 65 6e 64 20  ..\".# VE - end 
0fb0: 6f 66 20 76 65 72 74 69 63 61 6c 20 73 69 64 65  of vertical side
0fc0: 62 61 72 0a 2e 64 65 20 56 45 0a 2e 69 65 20 6e  bar..de VE..ie n
0fd0: 20 27 6d 63 0a 2e 65 6c 20 5c 7b 5c 0a 2e 65 76   'mc..el \{\..ev
0fe0: 20 32 0a 2e 6e 66 0a 2e 74 69 20 30 0a 2e 6d 6b   2..nf..ti 0..mk
0ff0: 20 5e 74 0a 5c 68 27 7c 5c 5c 6e 28 5e 6c 75 2b   ^t.\h'|\\n(^lu+
1000: 33 6e 27 5c 4c 27 7c 5c 5c 6e 28 5e 59 75 2d 31  3n'\L'|\\n(^Yu-1
1010: 76 5c 28 62 76 27 5c 76 27 5c 5c 6e 28 5e 74 75  v\(bv'\v'\\n(^tu
1020: 2b 31 76 2d 5c 5c 6e 28 5e 59 75 27 5c 68 27 2d  +1v-\\n(^Yu'\h'-
1030: 7c 5c 5c 6e 28 5e 6c 75 2b 33 6e 27 0a 2e 73 70  |\\n(^lu+3n'..sp
1040: 20 2d 31 0a 2e 66 69 0a 2e 65 76 0a 2e 5c 7d 0a   -1..fi..ev..\}.
1050: 2e 6e 72 20 5e 76 20 30 0a 2e 2e 0a 2e 5c 22 09  .nr ^v 0.....\".
1060: 23 20 53 70 65 63 69 61 6c 20 6d 61 63 72 6f 20  # Special macro 
1070: 74 6f 20 68 61 6e 64 6c 65 20 70 61 67 65 20 62  to handle page b
1080: 6f 74 74 6f 6d 3a 20 20 66 69 6e 69 73 68 20 6f  ottom:  finish o
1090: 66 66 20 63 75 72 72 65 6e 74 0a 2e 5c 22 09 23  ff current..\".#
10a0: 20 62 6f 78 2f 73 69 64 65 62 61 72 20 69 66 20   box/sidebar if 
10b0: 69 6e 20 62 6f 78 2f 73 69 64 65 62 61 72 20 6d  in box/sidebar m
10c0: 6f 64 65 2c 20 74 68 65 6e 20 69 6e 76 6f 6b 65  ode, then invoke
10d0: 64 20 73 74 61 6e 64 61 72 64 0a 2e 5c 22 09 23  d standard..\".#
10e0: 20 70 61 67 65 20 62 6f 74 74 6f 6d 20 6d 61 63   page bottom mac
10f0: 72 6f 2e 0a 2e 64 65 20 5e 42 0a 2e 65 76 20 32  ro...de ^B..ev 2
1100: 0a 27 74 69 20 30 0a 27 6e 66 0a 2e 6d 6b 20 5e  .'ti 0.'nf..mk ^
1110: 74 0a 2e 69 66 20 5c 5c 6e 28 5e 62 20 5c 7b 5c  t..if \\n(^b \{\
1120: 0a 2e 5c 22 09 44 72 61 77 20 74 68 72 65 65 2d  ..\".Draw three-
1130: 73 69 64 65 64 20 62 6f 78 20 69 66 20 74 68 69  sided box if thi
1140: 73 20 69 73 20 74 68 65 20 62 6f 78 27 73 20 66  s is the box's f
1150: 69 72 73 74 20 70 61 67 65 2c 0a 2e 5c 22 09 64  irst page,..\".d
1160: 72 61 77 20 74 77 6f 20 73 69 64 65 73 20 62 75  raw two sides bu
1170: 74 20 6e 6f 20 74 6f 70 20 6f 74 68 65 72 77 69  t no top otherwi
1180: 73 65 2e 0a 2e 69 65 20 21 5c 5c 6e 28 5e 62 2d  se...ie !\\n(^b-
1190: 31 20 5c 68 27 2d 31 2e 35 6e 27 5c 4c 27 7c 5c  1 \h'-1.5n'\L'|\
11a0: 5c 6e 28 5e 79 75 2d 31 76 27 5c 6c 27 5c 5c 6e  \n(^yu-1v'\l'\\n
11b0: 28 5e 6c 75 2b 33 6e 5c 28 75 6c 27 5c 4c 27 5c  (^lu+3n\(ul'\L'\
11c0: 5c 6e 28 5e 74 75 2b 31 76 2d 5c 5c 6e 28 5e 79  \n(^tu+1v-\\n(^y
11d0: 75 27 5c 68 27 7c 30 75 27 5c 63 0a 2e 65 6c 20  u'\h'|0u'\c..el 
11e0: 5c 68 27 2d 31 2e 35 6e 27 5c 4c 27 7c 5c 5c 6e  \h'-1.5n'\L'|\\n
11f0: 28 5e 79 75 2d 31 76 27 5c 68 27 5c 5c 6e 28 5e  (^yu-1v'\h'\\n(^
1200: 6c 75 2b 33 6e 27 5c 4c 27 5c 5c 6e 28 5e 74 75  lu+3n'\L'\\n(^tu
1210: 2b 31 76 2d 5c 5c 6e 28 5e 79 75 27 5c 68 27 7c  +1v-\\n(^yu'\h'|
1220: 30 75 27 5c 63 0a 2e 5c 7d 0a 2e 69 66 20 5c 5c  0u'\c..\}..if \\
1230: 6e 28 5e 76 20 5c 7b 5c 0a 2e 6e 72 20 5e 78 20  n(^v \{\..nr ^x 
1240: 5c 5c 6e 28 5e 74 75 2b 31 76 2d 5c 5c 6e 28 5e  \\n(^tu+1v-\\n(^
1250: 59 75 0a 5c 6b 78 5c 68 27 2d 5c 5c 6e 78 75 27  Yu.\kx\h'-\\nxu'
1260: 5c 68 27 7c 5c 5c 6e 28 5e 6c 75 2b 33 6e 27 5c  \h'|\\n(^lu+3n'\
1270: 6b 79 5c 4c 27 2d 5c 5c 6e 28 5e 78 75 27 5c 76  ky\L'-\\n(^xu'\v
1280: 27 5c 5c 6e 28 5e 78 75 27 5c 68 27 7c 30 75 27  '\\n(^xu'\h'|0u'
1290: 5c 63 0a 2e 5c 7d 0a 2e 62 70 0a 27 66 69 0a 2e  \c..\}..bp.'fi..
12a0: 65 76 0a 2e 69 66 20 5c 5c 6e 28 5e 62 20 5c 7b  ev..if \\n(^b \{
12b0: 5c 0a 2e 6d 6b 20 5e 79 0a 2e 6e 72 20 5e 62 20  \..mk ^y..nr ^b 
12c0: 32 0a 2e 5c 7d 0a 2e 69 66 20 5c 5c 6e 28 5e 76  2..\}..if \\n(^v
12d0: 20 5c 7b 5c 0a 2e 6d 6b 20 5e 59 0a 2e 5c 7d 0a   \{\..mk ^Y..\}.
12e0: 2e 2e 0a 2e 5c 22 09 23 20 44 53 20 2d 20 62 65  ....\".# DS - be
12f0: 67 69 6e 20 64 69 73 70 6c 61 79 0a 2e 64 65 20  gin display..de 
1300: 44 53 0a 2e 52 53 0a 2e 6e 66 0a 2e 73 70 0a 2e  DS..RS..nf..sp..
1310: 2e 0a 2e 5c 22 09 23 20 44 45 20 2d 20 65 6e 64  ...\".# DE - end
1320: 20 64 69 73 70 6c 61 79 0a 2e 64 65 20 44 45 0a   display..de DE.
1330: 2e 66 69 0a 2e 52 45 0a 2e 73 70 0a 2e 2e 0a 2e  .fi..RE..sp.....
1340: 5c 22 09 23 20 53 4f 20 2d 20 73 74 61 72 74 20  \".# SO - start 
1350: 6f 66 20 6c 69 73 74 20 6f 66 20 73 74 61 6e 64  of list of stand
1360: 61 72 64 20 6f 70 74 69 6f 6e 73 0a 2e 64 65 20  ard options..de 
1370: 53 4f 0a 27 69 65 20 27 5c 5c 24 31 27 27 20 2e  SO.'ie '\\$1'' .
1380: 64 73 20 53 6f 20 5c 5c 66 42 6f 70 74 69 6f 6e  ds So \\fBoption
1390: 73 5c 5c 66 52 0a 27 65 6c 20 2e 64 73 20 53 6f  s\\fR.'el .ds So
13a0: 20 5c 5c 66 42 5c 5c 24 31 5c 5c 66 52 0a 2e 53   \\fB\\$1\\fR..S
13b0: 48 20 22 53 54 41 4e 44 41 52 44 20 4f 50 54 49  H "STANDARD OPTI
13c0: 4f 4e 53 22 0a 2e 4c 50 0a 2e 6e 66 0a 2e 74 61  ONS"..LP..nf..ta
13d0: 20 35 2e 35 63 20 31 31 63 0a 2e 66 74 20 42 0a   5.5c 11c..ft B.
13e0: 2e 2e 0a 2e 5c 22 09 23 20 53 45 20 2d 20 65 6e  ....\".# SE - en
13f0: 64 20 6f 66 20 6c 69 73 74 20 6f 66 20 73 74 61  d of list of sta
1400: 6e 64 61 72 64 20 6f 70 74 69 6f 6e 73 0a 2e 64  ndard options..d
1410: 65 20 53 45 0a 2e 66 69 0a 2e 66 74 20 52 0a 2e  e SE..fi..ft R..
1420: 4c 50 0a 53 65 65 20 74 68 65 20 5c 5c 2a 28 53  LP.See the \\*(S
1430: 6f 20 6d 61 6e 75 61 6c 20 65 6e 74 72 79 20 66  o manual entry f
1440: 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20 74 68  or details on th
1450: 65 20 73 74 61 6e 64 61 72 64 20 6f 70 74 69 6f  e standard optio
1460: 6e 73 2e 0a 2e 2e 0a 2e 5c 22 09 23 20 4f 50 20  ns......\".# OP 
1470: 2d 20 73 74 61 72 74 20 6f 66 20 66 75 6c 6c 20  - start of full 
1480: 64 65 73 63 72 69 70 74 69 6f 6e 20 66 6f 72 20  description for 
1490: 61 20 73 69 6e 67 6c 65 20 6f 70 74 69 6f 6e 0a  a single option.
14a0: 2e 64 65 20 4f 50 0a 2e 4c 50 0a 2e 6e 66 0a 2e  .de OP..LP..nf..
14b0: 74 61 20 34 63 0a 43 6f 6d 6d 61 6e 64 2d 4c 69  ta 4c.Command-Li
14c0: 6e 65 20 4e 61 6d 65 3a 09 5c 5c 66 42 5c 5c 24  ne Name:.\\fB\\$
14d0: 31 5c 5c 66 52 0a 44 61 74 61 62 61 73 65 20 4e  1\\fR.Database N
14e0: 61 6d 65 3a 09 5c 5c 66 42 5c 5c 24 32 5c 5c 66  ame:.\\fB\\$2\\f
14f0: 52 0a 44 61 74 61 62 61 73 65 20 43 6c 61 73 73  R.Database Class
1500: 3a 09 5c 5c 66 42 5c 5c 24 33 5c 5c 66 52 0a 2e  :.\\fB\\$3\\fR..
1510: 66 69 0a 2e 49 50 0a 2e 2e 0a 2e 5c 22 09 23 20  fi..IP.....\".# 
1520: 43 53 20 2d 20 62 65 67 69 6e 20 63 6f 64 65 20  CS - begin code 
1530: 65 78 63 65 72 70 74 0a 2e 64 65 20 43 53 0a 2e  excerpt..de CS..
1540: 52 53 0a 2e 6e 66 0a 2e 74 61 20 2e 32 35 69 20  RS..nf..ta .25i 
1550: 2e 35 69 20 2e 37 35 69 20 31 69 0a 2e 2e 0a 2e  .5i .75i 1i.....
1560: 5c 22 09 23 20 43 45 20 2d 20 65 6e 64 20 63 6f  \".# CE - end co
1570: 64 65 20 65 78 63 65 72 70 74 0a 2e 64 65 20 43  de excerpt..de C
1580: 45 0a 2e 66 69 0a 2e 52 45 0a 2e 2e 0a 2e 5c 22  E..fi..RE.....\"
1590: 09 23 20 55 4c 20 2d 20 75 6e 64 65 72 6c 69 6e  .# UL - underlin
15a0: 65 20 77 6f 72 64 0a 2e 64 65 20 55 4c 0a 5c 5c  e word..de UL.\\
15b0: 24 31 5c 6c 27 7c 30 5c 28 75 6c 27 5c 5c 24 32  $1\l'|0\(ul'\\$2
15c0: 0a 2e 2e 0a 2e 5c 22 09 23 20 51 57 20 2d 20 61  .....\".# QW - a
15d0: 70 70 6c 79 20 71 75 6f 74 61 74 69 6f 6e 20 6d  pply quotation m
15e0: 61 72 6b 73 20 74 6f 20 77 6f 72 64 0a 2e 64 65  arks to word..de
15f0: 20 51 57 0a 2e 69 65 20 27 5c 5c 2a 28 6c 71 27   QW..ie '\\*(lq'
1600: 22 27 20 60 60 5c 5c 24 31 27 27 5c 5c 24 32 0a  "' ``\\$1''\\$2.
1610: 2e 5c 22 22 20 66 69 78 20 65 6d 61 63 73 20 68  .\"" fix emacs h
1620: 69 67 68 6c 69 67 68 74 69 6e 67 0a 2e 65 6c 20  ighlighting..el 
1630: 5c 5c 2a 28 6c 71 5c 5c 24 31 5c 5c 2a 28 72 71  \\*(lq\\$1\\*(rq
1640: 5c 5c 24 32 0a 2e 2e 0a 2e 5c 22 09 23 20 50 51  \\$2.....\".# PQ
1650: 20 2d 20 61 70 70 6c 79 20 70 61 72 65 6e 73 20   - apply parens 
1660: 61 6e 64 20 71 75 6f 74 61 74 69 6f 6e 20 6d 61  and quotation ma
1670: 72 6b 73 20 74 6f 20 77 6f 72 64 0a 2e 64 65 20  rks to word..de 
1680: 50 51 0a 2e 69 65 20 27 5c 5c 2a 28 6c 71 27 22  PQ..ie '\\*(lq'"
1690: 27 20 28 60 60 5c 5c 24 31 27 27 5c 5c 24 32 29  ' (``\\$1''\\$2)
16a0: 5c 5c 24 33 0a 2e 5c 22 22 20 66 69 78 20 65 6d  \\$3..\"" fix em
16b0: 61 63 73 20 68 69 67 68 6c 69 67 68 74 69 6e 67  acs highlighting
16c0: 0a 2e 65 6c 20 28 5c 5c 2a 28 6c 71 5c 5c 24 31  ..el (\\*(lq\\$1
16d0: 5c 5c 2a 28 72 71 5c 5c 24 32 29 5c 5c 24 33 0a  \\*(rq\\$2)\\$3.
16e0: 2e 2e 0a 2e 5c 22 09 23 20 51 52 20 2d 20 71 75  ....\".# QR - qu
16f0: 6f 74 65 64 20 72 61 6e 67 65 0a 2e 64 65 20 51  oted range..de Q
1700: 52 0a 2e 69 65 20 27 5c 5c 2a 28 6c 71 27 22 27  R..ie '\\*(lq'"'
1710: 20 60 60 5c 5c 24 31 27 27 5c 5c 2d 60 60 5c 5c   ``\\$1''\\-``\\
1720: 24 32 27 27 5c 5c 24 33 0a 2e 5c 22 22 20 66 69  $2''\\$3..\"" fi
1730: 78 20 65 6d 61 63 73 20 68 69 67 68 6c 69 67 68  x emacs highligh
1740: 74 69 6e 67 0a 2e 65 6c 20 5c 5c 2a 28 6c 71 5c  ting..el \\*(lq\
1750: 5c 24 31 5c 5c 2a 28 72 71 5c 5c 2d 5c 5c 2a 28  \$1\\*(rq\\-\\*(
1760: 6c 71 5c 5c 24 32 5c 5c 2a 28 72 71 5c 5c 24 33  lq\\$2\\*(rq\\$3
1770: 0a 2e 2e 0a 2e 5c 22 09 23 20 4d 54 20 2d 20 22  .....\".# MT - "
1780: 65 6d 70 74 79 22 20 73 74 72 69 6e 67 0a 2e 64  empty" string..d
1790: 65 20 4d 54 0a 2e 51 57 20 22 22 0a 2e 2e 0a 2e  e MT..QW "".....
17a0: 42 53 0a 2e 53 48 20 4e 41 4d 45 0a 74 6c 73 20  BS..SH NAME.tls 
17b0: 5c 2d 20 62 69 6e 64 69 6e 67 20 74 6f 20 74 68  \- binding to th
17c0: 65 20 4f 70 65 6e 53 53 4c 20 6c 69 62 72 61 72  e OpenSSL librar
17d0: 79 20 66 6f 72 20 65 6e 63 72 79 70 74 65 64 20  y for encrypted 
17e0: 73 6f 63 6b 65 74 20 61 6e 64 20 49 2f 4f 20 63  socket and I/O c
17f0: 68 61 6e 6e 65 6c 20 63 6f 6d 6d 75 6e 69 63 61  hannel communica
1800: 74 69 6f 6e 73 0a 2e 53 48 20 53 59 4e 4f 50 53  tions..SH SYNOPS
1810: 49 53 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69  IS.package requi
1820: 72 65 20 5c 66 42 54 63 6c 20 38 5c 26 2e 35 2d  re \fBTcl 8\&.5-
1830: 5c 66 52 0a 2e 73 70 0a 70 61 63 6b 61 67 65 20  \fR..sp.package 
1840: 72 65 71 75 69 72 65 20 5c 66 42 74 6c 73 20 31  require \fBtls 1
1850: 5c 26 2e 38 5c 66 52 0a 2e 73 70 0a 5c 66 42 74  \&.8\fR..sp.\fBt
1860: 6c 73 3a 3a 69 6e 69 74 5c 66 52 20 3f 5c 66 49  ls::init\fR ?\fI
1870: 2d 6f 70 74 69 6f 6e 5c 66 52 3f 20 3f 5c 66 49  -option\fR? ?\fI
1880: 76 61 6c 75 65 5c 66 52 3f 20 3f 5c 66 49 2d 6f  value\fR? ?\fI-o
1890: 70 74 69 6f 6e 20 76 61 6c 75 65 20 5c 26 2e 5c  ption value \&.\
18a0: 26 2e 5c 26 2e 5c 66 52 3f 0a 2e 73 70 0a 5c 66  &.\&.\fR?..sp.\f
18b0: 42 74 6c 73 3a 3a 73 6f 63 6b 65 74 5c 66 52 20  Btls::socket\fR 
18c0: 3f 5c 66 49 2d 6f 70 74 69 6f 6e 5c 66 52 3f 20  ?\fI-option\fR? 
18d0: 3f 5c 66 49 76 61 6c 75 65 5c 66 52 3f 20 3f 5c  ?\fIvalue\fR? ?\
18e0: 66 49 2d 6f 70 74 69 6f 6e 20 76 61 6c 75 65 20  fI-option value 
18f0: 5c 26 2e 5c 26 2e 5c 26 2e 5c 66 52 3f 20 5c 66  \&.\&.\&.\fR? \f
1900: 49 68 6f 73 74 5c 66 52 20 5c 66 49 70 6f 72 74  Ihost\fR \fIport
1910: 5c 66 52 0a 2e 73 70 0a 5c 66 42 74 6c 73 3a 3a  \fR..sp.\fBtls::
1920: 73 6f 63 6b 65 74 5c 66 52 20 5c 66 42 2d 73 65  socket\fR \fB-se
1930: 72 76 65 72 5c 66 52 20 5c 66 49 63 6f 6d 6d 61  rver\fR \fIcomma
1940: 6e 64 5c 66 52 20 3f 5c 66 49 2d 6f 70 74 69 6f  nd\fR ?\fI-optio
1950: 6e 5c 66 52 3f 20 3f 5c 66 49 76 61 6c 75 65 5c  n\fR? ?\fIvalue\
1960: 66 52 3f 20 3f 5c 66 49 2d 6f 70 74 69 6f 6e 20  fR? ?\fI-option 
1970: 76 61 6c 75 65 20 5c 26 2e 5c 26 2e 5c 26 2e 5c  value \&.\&.\&.\
1980: 66 52 3f 20 5c 66 49 70 6f 72 74 5c 66 52 0a 2e  fR? \fIport\fR..
1990: 73 70 0a 5c 66 42 74 6c 73 3a 3a 69 6d 70 6f 72  sp.\fBtls::impor
19a0: 74 5c 66 52 20 5c 66 49 63 68 61 6e 6e 65 6c 5c  t\fR \fIchannel\
19b0: 66 52 20 3f 5c 66 49 2d 6f 70 74 69 6f 6e 5c 66  fR ?\fI-option\f
19c0: 52 3f 20 3f 5c 66 49 76 61 6c 75 65 5c 66 52 3f  R? ?\fIvalue\fR?
19d0: 20 3f 5c 66 49 2d 6f 70 74 69 6f 6e 20 76 61 6c   ?\fI-option val
19e0: 75 65 20 5c 26 2e 5c 26 2e 5c 26 2e 5c 66 52 3f  ue \&.\&.\&.\fR?
19f0: 0a 2e 73 70 0a 5c 66 42 74 6c 73 3a 3a 75 6e 69  ..sp.\fBtls::uni
1a00: 6d 70 6f 72 74 5c 66 52 20 5c 66 49 63 68 61 6e  mport\fR \fIchan
1a10: 6e 65 6c 5c 66 52 0a 2e 73 70 0a 5c 66 42 74 6c  nel\fR..sp.\fBtl
1a20: 73 3a 3a 68 61 6e 64 73 68 61 6b 65 5c 66 52 20  s::handshake\fR 
1a30: 5c 66 49 63 68 61 6e 6e 65 6c 5c 66 52 0a 2e 73  \fIchannel\fR..s
1a40: 70 0a 5c 66 42 74 6c 73 3a 3a 73 74 61 74 75 73  p.\fBtls::status
1a50: 5c 66 52 20 3f 5c 66 42 2d 6c 6f 63 61 6c 5c 66  \fR ?\fB-local\f
1a60: 52 3f 20 5c 66 49 63 68 61 6e 6e 65 6c 5c 66 52  R? \fIchannel\fR
1a70: 0a 2e 73 70 0a 5c 66 42 74 6c 73 3a 3a 63 6f 6e  ..sp.\fBtls::con
1a80: 6e 65 63 74 69 6f 6e 5c 66 52 20 5c 66 49 63 68  nection\fR \fIch
1a90: 61 6e 6e 65 6c 5c 66 52 0a 2e 73 70 0a 5c 66 42  annel\fR..sp.\fB
1aa0: 74 6c 73 3a 3a 63 69 70 68 65 72 73 5c 66 52 20  tls::ciphers\fR 
1ab0: 3f 5c 66 49 70 72 6f 74 6f 63 6f 6c 5c 66 52 3f  ?\fIprotocol\fR?
1ac0: 20 3f 5c 66 49 76 65 72 62 6f 73 65 5c 66 52 3f   ?\fIverbose\fR?
1ad0: 20 3f 5c 66 49 73 75 70 70 6f 72 74 65 64 5c 66   ?\fIsupported\f
1ae0: 52 3f 0a 2e 73 70 0a 5c 66 42 74 6c 73 3a 3a 70  R?..sp.\fBtls::p
1af0: 72 6f 74 6f 63 6f 6c 73 5c 66 52 0a 2e 73 70 0a  rotocols\fR..sp.
1b00: 5c 66 42 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 5c  \fBtls::version\
1b10: 66 52 0a 2e 73 70 0a 2e 42 45 0a 2e 53 48 20 44  fR..sp..BE..SH D
1b20: 45 53 43 52 49 50 54 49 4f 4e 0a 54 68 69 73 20  ESCRIPTION.This 
1b30: 65 78 74 65 6e 73 69 6f 6e 20 70 72 6f 76 69 64  extension provid
1b40: 65 73 20 54 43 4c 20 73 63 72 69 70 74 20 61 63  es TCL script ac
1b50: 63 65 73 73 20 74 6f 20 73 65 63 75 72 65 20 73  cess to secure s
1b60: 6f 63 6b 65 74 20 63 6f 6d 6d 75 6e 69 63 61 74  ocket communicat
1b70: 69 6f 6e 73 0a 75 73 69 6e 67 20 74 68 65 20 54  ions.using the T
1b80: 72 61 6e 73 70 6f 72 74 20 4c 61 79 65 72 20 53  ransport Layer S
1b90: 65 63 75 72 69 74 79 20 28 54 4c 53 29 20 70 72  ecurity (TLS) pr
1ba0: 6f 74 6f 63 6f 6c 5c 26 2e 20 49 74 20 70 72 6f  otocol\&. It pro
1bb0: 76 69 64 65 73 20 61 20 67 65 6e 65 72 69 63 0a  vides a generic.
1bc0: 62 69 6e 64 69 6e 67 20 74 6f 20 5c 66 49 4f 70  binding to \fIOp
1bd0: 65 6e 53 53 4c 5c 66 52 20 5b 68 74 74 70 73 3a  enSSL\fR [https:
1be0: 2f 2f 77 77 77 5c 26 2e 6f 70 65 6e 73 73 6c 5c  //www\&.openssl\
1bf0: 26 2e 6f 72 67 2f 5d 2c 20 75 74 69 6c 69 7a 69  &.org/], utilizi
1c00: 6e 67 20 74 68 65 0a 5c 66 42 54 63 6c 5f 53 74  ng the.\fBTcl_St
1c10: 61 63 6b 43 68 61 6e 6e 65 6c 5c 66 52 20 41 50  ackChannel\fR AP
1c20: 49 20 69 6e 20 54 43 4c 20 38 5c 26 2e 34 20 61  I in TCL 8\&.4 a
1c30: 6e 64 20 68 69 67 68 65 72 5c 26 2e 0a 54 68 65  nd higher\&..The
1c40: 73 65 20 73 6f 63 6b 65 74 73 20 62 65 68 61 76  se sockets behav
1c50: 65 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61  e exactly the sa
1c60: 6d 65 20 61 73 20 63 68 61 6e 6e 65 6c 73 20 63  me as channels c
1c70: 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65  reated using the
1c80: 20 62 75 69 6c 74 2d 69 6e 0a 5c 66 42 73 6f 63   built-in.\fBsoc
1c90: 6b 65 74 5c 66 52 20 63 6f 6d 6d 61 6e 64 2c 20  ket\fR command, 
1ca0: 61 6c 6f 6e 67 20 77 69 74 68 20 61 64 64 69 74  along with addit
1cb0: 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 73 20 66 6f  ional options fo
1cc0: 72 20 63 6f 6e 74 72 6f 6c 6c 69 6e 67 0a 74 68  r controlling.th
1cd0: 65 20 53 53 4c 2f 54 4c 53 20 73 65 73 73 69 6f  e SSL/TLS sessio
1ce0: 6e 5c 26 2e 0a 2e 53 48 20 43 4f 4d 4d 41 4e 44  n\&...SH COMMAND
1cf0: 53 0a 54 79 70 69 63 61 6c 6c 79 20 6f 6e 65 20  S.Typically one 
1d00: 77 6f 75 6c 64 20 75 73 65 20 74 68 65 20 5c 66  would use the \f
1d10: 42 74 6c 73 3a 3a 73 6f 63 6b 65 74 5c 66 52 20  Btls::socket\fR 
1d20: 63 6f 6d 6d 61 6e 64 20 74 6f 20 63 72 65 61 74  command to creat
1d30: 65 20 61 20 6e 65 77 20 65 6e 63 72 79 70 74 65  e a new encrypte
1d40: 64 0a 54 43 50 20 73 6f 63 6b 65 74 5c 26 2e 20  d.TCP socket\&. 
1d50: 49 74 20 69 73 20 63 6f 6d 70 61 74 69 62 6c 65  It is compatible
1d60: 20 77 69 74 68 20 74 68 65 20 6e 61 74 69 76 65   with the native
1d70: 20 54 43 4c 20 5c 66 42 3a 3a 73 6f 63 6b 65 74   TCL \fB::socket
1d80: 5c 66 52 20 63 6f 6d 6d 61 6e 64 5c 26 2e 0a 41  \fR command\&..A
1d90: 6c 74 65 72 6e 61 74 69 76 65 6c 79 20 66 6f 72  lternatively for
1da0: 20 61 6e 20 65 78 69 73 74 69 6e 67 20 54 43 50   an existing TCP
1db0: 20 73 6f 63 6b 65 74 2c 20 74 68 65 20 5c 66 42   socket, the \fB
1dc0: 74 6c 73 3a 3a 69 6d 70 6f 72 74 5c 66 52 20 63  tls::import\fR c
1dd0: 6f 6d 6d 61 6e 64 20 63 61 6e 20 62 65 0a 75 73  ommand can be.us
1de0: 65 64 20 74 6f 20 73 74 61 72 74 20 54 4c 53 20  ed to start TLS 
1df0: 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  on the connectio
1e00: 6e 5c 26 2e 0a 2e 54 50 0a 5c 66 42 74 6c 73 3a  n\&...TP.\fBtls:
1e10: 3a 69 6e 69 74 5c 66 52 20 3f 5c 66 49 2d 6f 70  :init\fR ?\fI-op
1e20: 74 69 6f 6e 5c 66 52 3f 20 3f 5c 66 49 76 61 6c  tion\fR? ?\fIval
1e30: 75 65 5c 66 52 3f 20 3f 5c 66 49 2d 6f 70 74 69  ue\fR? ?\fI-opti
1e40: 6f 6e 20 76 61 6c 75 65 20 5c 26 2e 5c 26 2e 5c  on value \&.\&.\
1e50: 26 2e 5c 66 52 3f 0a 4f 70 74 69 6f 6e 61 6c 20  &.\fR?.Optional 
1e60: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 74 20  function to set 
1e70: 74 68 65 20 64 65 66 61 75 6c 74 20 6f 70 74 69  the default opti
1e80: 6f 6e 73 20 75 73 65 64 20 62 79 20 5c 66 42 74  ons used by \fBt
1e90: 6c 73 3a 3a 73 6f 63 6b 65 74 5c 66 52 5c 26 2e  ls::socket\fR\&.
1ea0: 20 49 66 20 79 6f 75 0a 63 61 6c 6c 20 5c 66 42   If you.call \fB
1eb0: 74 6c 73 3a 3a 69 6d 70 6f 72 74 5c 66 52 20 64  tls::import\fR d
1ec0: 69 72 65 63 74 6c 79 2c 20 74 68 69 73 20 63 6f  irectly, this co
1ed0: 6d 6d 61 6e 64 20 68 61 73 20 6e 6f 20 65 66 66  mmand has no eff
1ee0: 65 63 74 5c 26 2e 20 54 68 69 73 20 63 6f 6d 6d  ect\&. This comm
1ef0: 61 6e 64 0a 73 75 70 70 6f 72 74 73 20 61 6c 6c  and.supports all
1f00: 20 6f 66 20 74 68 65 20 73 61 6d 65 20 6f 70 74   of the same opt
1f10: 69 6f 6e 73 20 61 73 20 74 68 65 20 5c 66 42 74  ions as the \fBt
1f20: 6c 73 3a 3a 73 6f 63 6b 65 74 5c 66 52 20 63 6f  ls::socket\fR co
1f30: 6d 6d 61 6e 64 2c 20 74 68 6f 75 67 68 20 79 6f  mmand, though yo
1f40: 75 0a 73 68 6f 75 6c 64 20 6c 69 6d 69 74 20 79  u.should limit y
1f50: 6f 75 72 20 6f 70 74 69 6f 6e 73 20 74 6f 20 6f  our options to o
1f60: 6e 6c 79 20 54 4c 53 20 72 65 6c 61 74 65 64 20  nly TLS related 
1f70: 6f 6e 65 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 74  ones\&...TP.\fBt
1f80: 6c 73 3a 3a 73 6f 63 6b 65 74 5c 66 52 20 3f 5c  ls::socket\fR ?\
1f90: 66 49 2d 6f 70 74 69 6f 6e 5c 66 52 3f 20 3f 5c  fI-option\fR? ?\
1fa0: 66 49 76 61 6c 75 65 5c 66 52 3f 20 3f 5c 66 49  fIvalue\fR? ?\fI
1fb0: 2d 6f 70 74 69 6f 6e 20 76 61 6c 75 65 20 5c 26  -option value \&
1fc0: 2e 5c 26 2e 5c 26 2e 5c 66 52 3f 20 5c 66 49 68  .\&.\&.\fR? \fIh
1fd0: 6f 73 74 5c 66 52 20 5c 66 49 70 6f 72 74 5c 66  ost\fR \fIport\f
1fe0: 52 0a 54 68 69 73 20 69 73 20 61 20 68 65 6c 70  R.This is a help
1ff0: 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74  er function that
2000: 20 75 74 69 6c 69 7a 65 73 20 74 68 65 20 75 6e   utilizes the un
2010: 64 65 72 6c 79 69 6e 67 20 63 6f 6d 6d 61 6e 64  derlying command
2020: 73 20 5c 66 42 73 6f 63 6b 65 74 5c 66 52 0a 61  s \fBsocket\fR.a
2030: 6e 64 20 5c 66 42 74 6c 73 3a 3a 69 6d 70 6f 72  nd \fBtls::impor
2040: 74 5c 66 52 20 74 6f 20 63 72 65 61 74 65 20 74  t\fR to create t
2050: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5c 26 2e  he connection\&.
2060: 20 49 74 20 62 65 68 61 76 65 73 20 74 68 65 20   It behaves the 
2070: 73 61 6d 65 20 61 73 20 74 68 65 0a 6e 61 74 69  same as the.nati
2080: 76 65 20 54 43 4c 20 5c 66 42 73 6f 63 6b 65 74  ve TCL \fBsocket
2090: 5c 66 52 20 63 6f 6d 6d 61 6e 64 2c 20 62 75 74  \fR command, but
20a0: 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 74   also supports t
20b0: 68 65 20 5c 66 42 74 6c 73 3a 69 6d 70 6f 72 74  he \fBtls:import
20c0: 5c 66 52 0a 63 6f 6d 6d 61 6e 64 20 6f 70 74 69  \fR.command opti
20d0: 6f 6e 73 20 77 69 74 68 20 6f 6e 65 20 61 64 64  ons with one add
20e0: 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 5c 26  itional option\&
20f0: 2e 20 49 74 20 72 65 74 75 72 6e 73 20 74 68 65  . It returns the
2100: 20 63 68 61 6e 6e 65 6c 20 68 61 6e 64 6c 65 20   channel handle 
2110: 69 64 0a 66 6f 72 20 74 68 65 20 6e 65 77 20 73  id.for the new s
2120: 6f 63 6b 65 74 5c 26 2e 0a 2e 52 53 0a 2e 54 50  ocket\&...RS..TP
2130: 0a 5c 66 42 2d 61 75 74 6f 73 65 72 76 65 72 6e  .\fB-autoservern
2140: 61 6d 65 5c 66 52 20 5c 66 49 62 6f 6f 6c 5c 66  ame\fR \fIbool\f
2150: 52 0a 49 66 20 5c 66 42 74 72 75 65 5c 66 52 2c  R.If \fBtrue\fR,
2160: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73   automatically s
2170: 65 74 20 74 68 65 20 5c 66 42 2d 73 65 72 76 65  et the \fB-serve
2180: 72 6e 61 6d 65 5c 66 52 20 61 72 67 75 6d 65 6e  rname\fR argumen
2190: 74 20 74 6f 20 74 68 65 0a 5c 66 49 68 6f 73 74  t to the.\fIhost
21a0: 5c 66 52 20 61 72 67 75 6d 65 6e 74 5c 26 2e 20  \fR argument\&. 
21b0: 44 65 66 61 75 6c 74 20 69 73 20 5c 66 42 66 61  Default is \fBfa
21c0: 6c 73 65 5c 66 52 5c 26 2e 0a 2e 52 45 0a 2e 54  lse\fR\&...RE..T
21d0: 50 0a 5c 66 42 74 6c 73 3a 3a 73 6f 63 6b 65 74  P.\fBtls::socket
21e0: 5c 66 52 20 5c 66 42 2d 73 65 72 76 65 72 5c 66  \fR \fB-server\f
21f0: 52 20 5c 66 49 63 6f 6d 6d 61 6e 64 5c 66 52 20  R \fIcommand\fR 
2200: 3f 5c 66 49 2d 6f 70 74 69 6f 6e 5c 66 52 3f 20  ?\fI-option\fR? 
2210: 3f 5c 66 49 76 61 6c 75 65 5c 66 52 3f 20 3f 5c  ?\fIvalue\fR? ?\
2220: 66 49 2d 6f 70 74 69 6f 6e 20 76 61 6c 75 65 20  fI-option value 
2230: 5c 26 2e 5c 26 2e 5c 26 2e 5c 66 52 3f 20 5c 66  \&.\&.\&.\fR? \f
2240: 49 70 6f 72 74 5c 66 52 0a 53 61 6d 65 20 61 73  Iport\fR.Same as
2250: 20 70 72 65 76 69 6f 75 73 2c 20 62 75 74 20 69   previous, but i
2260: 6e 73 74 65 61 64 20 63 72 65 61 74 65 73 20 61  nstead creates a
2270: 20 73 65 72 76 65 72 20 73 6f 63 6b 65 74 20 66   server socket f
2280: 6f 72 20 63 6c 69 65 6e 74 73 20 74 6f 20 63 6f  or clients to co
2290: 6e 6e 65 63 74 20 74 6f 0a 6a 75 73 74 20 6c 69  nnect to.just li
22a0: 6b 65 20 74 68 65 20 54 63 6c 20 5c 66 42 73 6f  ke the Tcl \fBso
22b0: 63 6b 65 74 20 2d 73 65 72 76 65 72 5c 66 52 20  cket -server\fR 
22c0: 63 6f 6d 6d 61 6e 64 5c 26 2e 20 49 74 20 72 65  command\&. It re
22d0: 74 75 72 6e 73 20 74 68 65 20 63 68 61 6e 6e 65  turns the channe
22e0: 6c 0a 68 61 6e 64 6c 65 20 69 64 20 66 6f 72 20  l.handle id for 
22f0: 74 68 65 20 6e 65 77 20 73 6f 63 6b 65 74 5c 26  the new socket\&
2300: 2e 0a 2e 54 50 0a 5c 66 42 74 6c 73 3a 3a 69 6d  ...TP.\fBtls::im
2310: 70 6f 72 74 5c 66 52 20 5c 66 49 63 68 61 6e 6e  port\fR \fIchann
2320: 65 6c 5c 66 52 20 3f 5c 66 49 2d 6f 70 74 69 6f  el\fR ?\fI-optio
2330: 6e 5c 66 52 3f 20 3f 5c 66 49 76 61 6c 75 65 5c  n\fR? ?\fIvalue\
2340: 66 52 3f 20 3f 5c 66 49 2d 6f 70 74 69 6f 6e 20  fR? ?\fI-option 
2350: 76 61 6c 75 65 20 5c 26 2e 5c 26 2e 5c 26 2e 5c  value \&.\&.\&.\
2360: 66 52 3f 0a 53 74 61 72 74 20 54 4c 53 20 65 6e  fR?.Start TLS en
2370: 63 72 79 70 74 69 6f 6e 20 6f 6e 20 54 43 4c 20  cryption on TCL 
2380: 63 68 61 6e 6e 65 6c 20 5c 66 49 63 68 61 6e 6e  channel \fIchann
2390: 65 6c 5c 66 52 20 76 69 61 20 61 20 73 74 61 63  el\fR via a stac
23a0: 6b 65 64 20 63 68 61 6e 6e 65 6c 5c 26 2e 20 49  ked channel\&. I
23b0: 74 0a 6e 65 65 64 20 6e 6f 74 20 62 65 20 61 20  t.need not be a 
23c0: 73 6f 63 6b 65 74 2c 20 62 75 74 20 6d 75 73 74  socket, but must
23d0: 20 70 72 6f 76 69 64 65 20 62 69 2d 64 69 72 65   provide bi-dire
23e0: 63 74 69 6f 6e 61 6c 20 66 6c 6f 77 5c 26 2e 20  ctional flow\&. 
23f0: 41 6c 73 6f 20 73 65 74 73 20 73 65 73 73 69 6f  Also sets sessio
2400: 6e 0a 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72  n.parameters for
2410: 20 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 5c 26   SSL handshake\&
2420: 2e 20 56 61 6c 69 64 20 6f 70 74 69 6f 6e 73 20  . Valid options 
2430: 61 72 65 3a 0a 2e 52 53 0a 2e 54 50 0a 5c 66 42  are:..RS..TP.\fB
2440: 2d 61 6c 70 6e 5c 66 52 20 5c 66 49 6c 69 73 74  -alpn\fR \fIlist
2450: 5c 66 52 0a 4c 69 73 74 20 6f 66 20 70 72 6f 74  \fR.List of prot
2460: 6f 63 6f 6c 73 20 74 6f 20 6f 66 66 65 72 20 64  ocols to offer d
2470: 75 72 69 6e 67 20 41 70 70 6c 69 63 61 74 69 6f  uring Applicatio
2480: 6e 2d 4c 61 79 65 72 20 50 72 6f 74 6f 63 6f 6c  n-Layer Protocol
2490: 20 4e 65 67 6f 74 69 61 74 69 6f 6e 0a 28 41 4c   Negotiation.(AL
24a0: 50 4e 29 5c 26 2e 20 46 6f 72 20 65 78 61 6d 70  PN)\&. For examp
24b0: 6c 65 3a 20 5c 66 42 68 32 5c 66 52 20 61 6e 64  le: \fBh2\fR and
24c0: 20 5c 66 42 68 74 74 70 2f 31 5c 26 2e 31 5c 66   \fBhttp/1\&.1\f
24d0: 52 2c 20 62 75 74 20 6e 6f 74 20 5c 66 42 68 33  R, but not \fBh3
24e0: 5c 66 52 20 6f 72 0a 5c 66 42 71 75 69 63 5c 66  \fR or.\fBquic\f
24f0: 52 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 63 61 64  R\&...TP.\fB-cad
2500: 69 72 5c 66 52 20 5c 66 49 64 69 72 65 63 74 6f  ir\fR \fIdirecto
2510: 72 79 5c 66 52 0a 53 70 65 63 69 66 69 65 73 20  ry\fR.Specifies 
2520: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 77 68  the directory wh
2530: 65 72 65 20 74 68 65 20 43 65 72 74 69 66 69 63  ere the Certific
2540: 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28 43  ate Authority (C
2550: 41 29 20 63 65 72 74 69 66 69 63 61 74 65 73 20  A) certificates 
2560: 61 72 65 0a 73 74 6f 72 65 64 5c 26 2e 20 54 68  are.stored\&. Th
2570: 65 20 64 65 66 61 75 6c 74 20 69 73 20 70 6c 61  e default is pla
2580: 74 66 6f 72 6d 20 73 70 65 63 69 66 69 63 20 61  tform specific a
2590: 6e 64 20 63 61 6e 20 62 65 20 73 65 74 20 61 74  nd can be set at
25a0: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 5c 26 2e   compile time\&.
25b0: 20 54 68 65 0a 64 65 66 61 75 6c 74 20 6c 6f 63   The.default loc
25c0: 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 6f 76 65  ation can be ove
25d0: 72 72 69 64 64 65 6e 20 62 79 20 74 68 65 20 5c  rridden by the \
25e0: 66 42 53 53 4c 5f 43 45 52 54 5f 44 49 52 5c 66  fBSSL_CERT_DIR\f
25f0: 52 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 76 61  R environment.va
2600: 72 69 61 62 6c 65 5c 26 2e 20 53 65 65 20 5c 66  riable\&. See \f
2610: 42 43 65 72 74 69 66 69 63 61 74 65 20 56 61 6c  BCertificate Val
2620: 69 64 61 74 69 6f 6e 5c 66 52 20 66 6f 72 20 6d  idation\fR for m
2630: 6f 72 65 20 64 65 74 61 69 6c 73 5c 26 2e 0a 2e  ore details\&...
2640: 54 50 0a 5c 66 42 2d 63 61 66 69 6c 65 5c 66 52  TP.\fB-cafile\fR
2650: 20 5c 66 49 66 69 6c 65 6e 61 6d 65 5c 66 52 0a   \fIfilename\fR.
2660: 53 70 65 63 69 66 69 65 73 20 74 68 65 20 66 69  Specifies the fi
2670: 6c 65 20 77 69 74 68 20 74 68 65 20 43 65 72 74  le with the Cert
2680: 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74  ificate Authorit
2690: 79 20 28 43 41 29 20 63 65 72 74 69 66 69 63 61  y (CA) certifica
26a0: 74 65 73 20 74 6f 20 75 73 65 5c 26 2e 0a 54 68  tes to use\&..Th
26b0: 65 20 64 65 66 61 75 6c 74 20 69 73 20 22 5c 66  e default is "\f
26c0: 49 63 65 72 74 5c 26 2e 70 65 6d 5c 66 52 22 2c  Icert\&.pem\fR",
26d0: 20 69 6e 20 74 68 65 20 4f 70 65 6e 53 53 4c 20   in the OpenSSL 
26e0: 64 69 72 65 63 74 6f 72 79 5c 26 2e 20 54 68 65  directory\&. The
26f0: 20 64 65 66 61 75 6c 74 20 66 69 6c 65 20 63 61   default file ca
2700: 6e 0a 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20  n.be overridden 
2710: 62 79 20 74 68 65 20 5c 66 42 53 53 4c 5f 43 45  by the \fBSSL_CE
2720: 52 54 5f 46 49 4c 45 5c 66 52 20 65 6e 76 69 72  RT_FILE\fR envir
2730: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 5c  onment variable\
2740: 26 2e 20 53 65 65 0a 5c 66 42 43 65 72 74 69 66  &. See.\fBCertif
2750: 69 63 61 74 65 20 56 61 6c 69 64 61 74 69 6f 6e  icate Validation
2760: 5c 66 52 20 66 6f 72 20 6d 6f 72 65 20 64 65 74  \fR for more det
2770: 61 69 6c 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d  ails\&...TP.\fB-
2780: 63 61 73 74 6f 72 65 5c 66 52 20 5c 66 49 55 52  castore\fR \fIUR
2790: 49 5c 66 52 0a 53 70 65 63 69 66 69 65 73 20 74  I\fR.Specifies t
27a0: 68 65 20 55 6e 69 66 6f 72 6d 20 52 65 73 6f 75  he Uniform Resou
27b0: 72 63 65 20 49 64 65 6e 74 69 66 69 65 72 20 28  rce Identifier (
27c0: 55 52 49 29 20 66 6f 72 20 74 68 65 20 43 65 72  URI) for the Cer
27d0: 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69  tificate Authori
27e0: 74 79 0a 28 43 41 29 20 73 74 6f 72 65 2c 20 77  ty.(CA) store, w
27f0: 68 69 63 68 20 6d 61 79 20 62 65 20 61 20 73 69  hich may be a si
2800: 6e 67 6c 65 20 63 6f 6e 74 61 69 6e 65 72 20 6f  ngle container o
2810: 72 20 61 20 63 61 74 61 6c 6f 67 20 6f 66 20 63  r a catalog of c
2820: 6f 6e 74 61 69 6e 65 72 73 5c 26 2e 0a 53 74 61  ontainers\&..Sta
2830: 72 74 69 6e 67 20 77 69 74 68 20 4f 70 65 6e 53  rting with OpenS
2840: 53 4c 20 33 5c 26 2e 32 20 6f 6e 20 57 69 6e 64  SL 3\&.2 on Wind
2850: 6f 77 73 2c 20 73 65 74 20 74 6f 20 22 5c 66 42  ows, set to "\fB
2860: 6f 72 67 5c 26 2e 6f 70 65 6e 73 73 6c 5c 26 2e  org\&.openssl\&.
2870: 77 69 6e 73 74 6f 72 65 3a 2f 2f 5c 66 52 22 0a  winstore://\fR".
2880: 74 6f 20 75 73 65 20 74 68 65 20 62 75 69 6c 74  to use the built
2890: 2d 69 6e 20 57 69 6e 64 6f 77 73 20 43 65 72 74  -in Windows Cert
28a0: 69 66 69 63 61 74 65 20 53 74 6f 72 65 5c 26 2e  ificate Store\&.
28b0: 20 54 68 69 73 20 73 74 6f 72 65 20 6f 6e 6c 79   This store only
28c0: 20 73 75 70 70 6f 72 74 73 20 72 6f 6f 74 0a 63   supports root.c
28d0: 65 72 74 69 66 69 63 61 74 65 20 73 74 6f 72 65  ertificate store
28e0: 73 5c 26 2e 20 53 65 65 20 5c 66 42 43 65 72 74  s\&. See \fBCert
28f0: 69 66 69 63 61 74 65 20 56 61 6c 69 64 61 74 69  ificate Validati
2900: 6f 6e 5c 66 52 20 66 6f 72 20 6d 6f 72 65 20 64  on\fR for more d
2910: 65 74 61 69 6c 73 5c 26 2e 0a 2e 54 50 0a 5c 66  etails\&...TP.\f
2920: 42 2d 63 65 72 74 66 69 6c 65 5c 66 52 20 5c 66  B-certfile\fR \f
2930: 49 66 69 6c 65 6e 61 6d 65 5c 66 52 0a 53 70 65  Ifilename\fR.Spe
2940: 63 69 66 69 65 73 20 74 68 65 20 6e 61 6d 65 20  cifies the name 
2950: 6f 66 20 74 68 65 20 66 69 6c 65 20 77 69 74 68  of the file with
2960: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
2970: 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 20 74   in PEM format t
2980: 6f 20 75 73 65 0a 61 73 20 74 68 65 20 6c 6f 63  o use.as the loc
2990: 61 6c 20 28 63 6c 69 65 6e 74 20 6f 72 20 73 65  al (client or se
29a0: 72 76 65 72 29 20 63 65 72 74 69 66 69 63 61 74  rver) certificat
29b0: 65 5c 26 2e 20 49 74 20 61 6c 73 6f 20 63 6f 6e  e\&. It also con
29c0: 74 61 69 6e 73 20 74 68 65 20 70 75 62 6c 69 63  tains the public
29d0: 20 6b 65 79 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d   key\&...TP.\fB-
29e0: 63 65 72 74 5c 66 52 20 5c 66 49 73 74 72 69 6e  cert\fR \fIstrin
29f0: 67 5c 66 52 0a 53 70 65 63 69 66 69 65 73 20 74  g\fR.Specifies t
2a00: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 74  he certificate t
2a10: 6f 20 75 73 65 20 61 73 20 61 20 44 45 52 20 65  o use as a DER e
2a20: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 20 28 58  ncoded string (X
2a30: 5c 26 2e 35 30 39 20 44 45 52 29 5c 26 2e 0a 2e  \&.509 DER)\&...
2a40: 54 50 0a 5c 66 42 2d 63 69 70 68 65 72 5c 66 52  TP.\fB-cipher\fR
2a50: 20 5c 66 49 73 74 72 69 6e 67 5c 66 52 0a 53 70   \fIstring\fR.Sp
2a60: 65 63 69 66 69 65 73 20 74 68 65 20 6c 69 73 74  ecifies the list
2a70: 20 6f 66 20 63 69 70 68 65 72 73 20 74 6f 20 75   of ciphers to u
2a80: 73 65 20 66 6f 72 20 54 4c 53 20 31 5c 26 2e 32  se for TLS 1\&.2
2a90: 20 61 6e 64 20 65 61 72 6c 69 65 72 20 63 6f 6e   and earlier con
2aa0: 6e 65 63 74 69 6f 6e 73 5c 26 2e 0a 53 74 72 69  nections\&..Stri
2ab0: 6e 67 20 69 73 20 61 20 63 6f 6c 6f 6e 20 22 5c  ng is a colon "\
2ac0: 66 42 3a 5c 66 52 22 20 73 65 70 61 72 61 74 65  fB:\fR" separate
2ad0: 64 20 6c 69 73 74 20 6f 66 20 63 69 70 68 65 72  d list of cipher
2ae0: 73 5c 26 2e 0a 43 69 70 68 65 72 73 20 63 61 6e  s\&..Ciphers can
2af0: 20 62 65 20 63 6f 6d 62 69 6e 65 64 20 75 73 69   be combined usi
2b00: 6e 67 20 74 68 65 20 22 5c 66 42 2b 5c 66 52 22  ng the "\fB+\fR"
2b10: 20 63 68 61 72 61 63 74 65 72 5c 26 2e 0a 50 72   character\&..Pr
2b20: 65 66 69 78 65 73 20 63 61 6e 20 62 65 20 75 73  efixes can be us
2b30: 65 64 20 74 6f 20 70 65 72 6d 61 6e 65 6e 74 6c  ed to permanentl
2b40: 79 20 72 65 6d 6f 76 65 20 22 5c 66 42 21 5c 66  y remove "\fB!\f
2b50: 52 22 2c 20 64 65 6c 65 74 65 20 22 5c 66 42 2d  R", delete "\fB-
2b60: 5c 66 52 22 2c 20 6f 72 0a 6d 6f 76 65 20 74 6f  \fR", or.move to
2b70: 20 74 68 65 20 65 6e 64 20 22 5c 66 42 2b 5c 66   the end "\fB+\f
2b80: 52 22 20 61 20 73 70 65 63 69 66 69 65 64 20 63  R" a specified c
2b90: 69 70 68 65 72 5c 26 2e 0a 4b 65 79 77 6f 72 64  ipher\&..Keyword
2ba0: 73 20 5c 66 42 40 53 54 52 45 4e 47 54 48 5c 66  s \fB@STRENGTH\f
2bb0: 52 20 28 73 6f 72 74 20 62 79 20 61 6c 67 6f 72  R (sort by algor
2bc0: 69 74 68 6d 20 6b 65 79 20 6c 65 6e 67 74 68 29  ithm key length)
2bd0: 2c 0a 5c 66 42 40 53 45 43 4c 45 56 45 4c 3d 5c  ,.\fB@SECLEVEL=\
2be0: 66 52 5c 66 49 6e 5c 66 52 20 28 73 65 74 20 73  fR\fIn\fR (set s
2bf0: 65 63 75 72 69 74 79 20 6c 65 76 65 6c 20 74 6f  ecurity level to
2c00: 20 6e 29 2c 20 61 6e 64 0a 5c 66 42 44 45 46 41   n), and.\fBDEFA
2c10: 55 4c 54 5c 66 52 20 28 75 73 65 20 64 65 66 61  ULT\fR (use defa
2c20: 75 6c 74 20 63 69 70 68 65 72 20 6c 69 73 74 2c  ult cipher list,
2c30: 20 61 74 20 73 74 61 72 74 20 6f 6e 6c 79 29 20   at start only) 
2c40: 63 61 6e 20 61 6c 73 6f 20 62 65 20 73 70 65 63  can also be spec
2c50: 69 66 69 65 64 5c 26 2e 0a 53 65 65 20 74 68 65  ified\&..See the
2c60: 20 5c 66 49 4f 70 65 6e 53 53 4c 5c 66 52 20 5b   \fIOpenSSL\fR [
2c70: 68 74 74 70 73 3a 2f 2f 64 6f 63 73 5c 26 2e 6f  https://docs\&.o
2c80: 70 65 6e 73 73 6c 5c 26 2e 6f 72 67 2f 6d 61 73  penssl\&.org/mas
2c90: 74 65 72 2f 6d 61 6e 31 2f 6f 70 65 6e 73 73 6c  ter/man1/openssl
2ca0: 2d 63 69 70 68 65 72 73 2f 23 6f 70 74 69 6f 6e  -ciphers/#option
2cb0: 73 5d 0a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  s].documentation
2cc0: 20 66 6f 72 20 74 68 65 20 66 75 6c 6c 20 6c 69   for the full li
2cd0: 73 74 20 6f 66 20 76 61 6c 69 64 20 76 61 6c 75  st of valid valu
2ce0: 65 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 63 69  es\&...TP.\fB-ci
2cf0: 70 68 65 72 73 75 69 74 65 73 5c 66 52 20 5c 66  phersuites\fR \f
2d00: 49 73 74 72 69 6e 67 5c 66 52 0a 53 70 65 63 69  Istring\fR.Speci
2d10: 66 69 65 73 20 74 68 65 20 6c 69 73 74 20 6f 66  fies the list of
2d20: 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20 74   cipher suites t
2d30: 6f 20 75 73 65 20 66 6f 72 20 54 4c 53 20 31 5c  o use for TLS 1\
2d40: 26 2e 33 20 61 73 20 61 20 63 6f 6c 6f 6e 0a 22  &.3 as a colon."
2d50: 5c 66 42 3a 5c 66 52 22 20 73 65 70 61 72 61 74  \fB:\fR" separat
2d60: 65 64 20 6c 69 73 74 20 6f 66 20 63 69 70 68 65  ed list of ciphe
2d70: 72 20 73 75 69 74 65 20 6e 61 6d 65 73 5c 26 2e  r suite names\&.
2d80: 20 53 65 65 20 74 68 65 0a 5c 66 49 4f 70 65 6e   See the.\fIOpen
2d90: 53 53 4c 5c 66 52 20 5b 68 74 74 70 73 3a 2f 2f  SSL\fR [https://
2da0: 64 6f 63 73 5c 26 2e 6f 70 65 6e 73 73 6c 5c 26  docs\&.openssl\&
2db0: 2e 6f 72 67 2f 6d 61 73 74 65 72 2f 6d 61 6e 31  .org/master/man1
2dc0: 2f 6f 70 65 6e 73 73 6c 2d 63 69 70 68 65 72 73  /openssl-ciphers
2dd0: 2f 23 6f 70 74 69 6f 6e 73 5d 0a 64 6f 63 75 6d  /#options].docum
2de0: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
2df0: 20 66 75 6c 6c 20 6c 69 73 74 20 6f 66 20 76 61   full list of va
2e00: 6c 69 64 20 76 61 6c 75 65 73 5c 26 2e 0a 2e 54  lid values\&...T
2e10: 50 0a 5c 66 42 2d 63 6f 6d 6d 61 6e 64 5c 66 52  P.\fB-command\fR
2e20: 20 5c 66 49 63 61 6c 6c 62 61 63 6b 5c 66 52 0a   \fIcallback\fR.
2e30: 53 70 65 63 69 66 69 65 73 20 74 68 65 20 63 61  Specifies the ca
2e40: 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 74  llback command t
2e50: 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 61 74 20  o be invoked at 
2e60: 73 65 76 65 72 61 6c 20 70 6f 69 6e 74 73 20 64  several points d
2e70: 75 72 69 6e 67 20 74 68 65 0a 68 61 6e 64 73 68  uring the.handsh
2e80: 61 6b 65 20 74 6f 20 70 61 73 73 20 65 72 72 6f  ake to pass erro
2e90: 72 73 2c 20 74 72 61 63 69 6e 67 20 69 6e 66 6f  rs, tracing info
2ea0: 72 6d 61 74 69 6f 6e 2c 20 61 6e 64 20 70 72 6f  rmation, and pro
2eb0: 74 6f 63 6f 6c 20 6d 65 73 73 61 67 65 73 5c 26  tocol messages\&
2ec0: 2e 0a 53 65 65 20 5c 66 42 43 61 6c 6c 62 61 63  ..See \fBCallbac
2ed0: 6b 20 4f 70 74 69 6f 6e 73 5c 66 52 20 66 6f 72  k Options\fR for
2ee0: 20 6d 6f 72 65 20 69 6e 66 6f 5c 26 2e 0a 2e 54   more info\&...T
2ef0: 50 0a 5c 66 42 2d 64 68 70 61 72 61 6d 73 5c 66  P.\fB-dhparams\f
2f00: 52 20 5c 66 49 66 69 6c 65 6e 61 6d 65 5c 66 52  R \fIfilename\fR
2f10: 0a 53 70 65 63 69 66 69 65 73 20 74 68 65 20 44  .Specifies the D
2f20: 69 66 66 69 65 2d 48 65 6c 6c 6d 61 6e 20 28 44  iffie-Hellman (D
2f30: 48 29 20 70 61 72 61 6d 65 74 65 72 73 20 66 69  H) parameters fi
2f40: 6c 65 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 6b 65  le\&...TP.\fB-ke
2f50: 79 66 69 6c 65 5c 66 52 20 5c 66 49 66 69 6c 65  yfile\fR \fIfile
2f60: 6e 61 6d 65 5c 66 52 0a 53 70 65 63 69 66 69 65  name\fR.Specifie
2f70: 73 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65  s the private ke
2f80: 79 20 66 69 6c 65 5c 26 2e 20 54 68 65 20 64 65  y file\&. The de
2f90: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 74  fault value is t
2fa0: 6f 20 75 73 65 20 74 68 65 20 66 69 6c 65 0a 73  o use the file.s
2fb0: 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
2fc0: 5c 66 49 2d 63 65 72 74 66 69 6c 65 5c 66 52 20  \fI-certfile\fR 
2fd0: 6f 70 74 69 6f 6e 5c 26 2e 0a 2e 54 50 0a 5c 66  option\&...TP.\f
2fe0: 42 2d 6b 65 79 5c 66 52 20 5c 66 49 73 74 72 69  B-key\fR \fIstri
2ff0: 6e 67 5c 66 52 0a 53 70 65 63 69 66 69 65 73 20  ng\fR.Specifies 
3000: 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 20  the private key 
3010: 74 6f 20 75 73 65 20 61 73 20 61 20 44 45 52 20  to use as a DER 
3020: 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 20 28  encoded string (
3030: 50 4b 43 53 23 31 20 44 45 52 29 5c 26 2e 0a 2e  PKCS#1 DER)\&...
3040: 54 50 0a 5c 66 42 2d 6d 6f 64 65 6c 5c 66 52 20  TP.\fB-model\fR 
3050: 5c 66 49 63 68 61 6e 6e 65 6c 5c 66 52 0a 46 6f  \fIchannel\fR.Fo
3060: 72 63 65 20 74 68 69 73 20 63 68 61 6e 6e 65 6c  rce this channel
3070: 20 74 6f 20 73 68 61 72 65 20 74 68 65 20 73 61   to share the sa
3080: 6d 65 20 5c 66 49 53 53 4c 5f 43 54 58 5c 66 52  me \fISSL_CTX\fR
3090: 20 73 74 72 75 63 74 75 72 65 20 61 73 20 74 68   structure as th
30a0: 65 0a 73 70 65 63 69 66 69 65 64 20 5c 66 49 63  e.specified \fIc
30b0: 68 61 6e 6e 65 6c 5c 66 52 2c 20 61 6e 64 20 74  hannel\fR, and t
30c0: 68 65 72 65 66 6f 72 65 20 73 68 61 72 65 20 63  herefore share c
30d0: 6f 6e 66 69 67 2c 20 63 61 6c 6c 62 61 63 6b 73  onfig, callbacks
30e0: 2c 20 65 74 63 5c 26 2e 0a 2e 54 50 0a 5c 66 42  , etc\&...TP.\fB
30f0: 2d 70 61 73 73 77 6f 72 64 5c 66 52 20 5c 66 49  -password\fR \fI
3100: 63 61 6c 6c 62 61 63 6b 5c 66 52 0a 53 70 65 63  callback\fR.Spec
3110: 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 62 61  ifies the callba
3120: 63 6b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 69 6e  ck command to in
3130: 76 6f 6b 65 20 77 68 65 6e 20 4f 70 65 6e 53 53  voke when OpenSS
3140: 4c 20 6e 65 65 64 73 20 74 6f 20 6f 62 74 61 69  L needs to obtai
3150: 6e 20 61 0a 70 61 73 73 77 6f 72 64 5c 26 2e 20  n a.password\&. 
3160: 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c 6c  This is typicall
3170: 79 20 75 73 65 64 20 74 6f 20 75 6e 6c 6f 63 6b  y used to unlock
3180: 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79   the private key
3190: 20 6f 66 20 61 20 63 65 72 74 69 66 69 63 61 74   of a certificat
31a0: 65 5c 26 2e 0a 54 68 65 20 63 61 6c 6c 62 61 63  e\&..The callbac
31b0: 6b 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20  k should return 
31c0: 61 20 70 61 73 73 77 6f 72 64 20 73 74 72 69 6e  a password strin
31d0: 67 5c 26 2e 20 53 65 65 20 5c 66 42 43 61 6c 6c  g\&. See \fBCall
31e0: 62 61 63 6b 20 4f 70 74 69 6f 6e 73 5c 66 52 0a  back Options\fR.
31f0: 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 5c 26 2e  for more info\&.
3200: 0a 2e 54 50 0a 5c 66 42 2d 70 6f 73 74 5f 68 61  ..TP.\fB-post_ha
3210: 6e 64 73 68 61 6b 65 5c 66 52 20 5c 66 49 62 6f  ndshake\fR \fIbo
3220: 6f 6c 5c 66 52 0a 41 6c 6c 6f 77 20 70 6f 73 74  ol\fR.Allow post
3230: 2d 68 61 6e 64 73 68 61 6b 65 20 73 65 73 73 69  -handshake sessi
3240: 6f 6e 20 74 69 63 6b 65 74 20 75 70 64 61 74 65  on ticket update
3250: 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 72 65 71  s\&...TP.\fB-req
3260: 75 65 73 74 5c 66 52 20 5c 66 49 62 6f 6f 6c 5c  uest\fR \fIbool\
3270: 66 52 0a 52 65 71 75 65 73 74 20 61 20 63 65 72  fR.Request a cer
3280: 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 70 65  tificate from pe
3290: 65 72 20 64 75 72 69 6e 67 20 74 68 65 20 53 53  er during the SS
32a0: 4c 20 68 61 6e 64 73 68 61 6b 65 5c 26 2e 20 54  L handshake\&. T
32b0: 68 69 73 20 69 73 20 6e 65 65 64 65 64 20 74 6f  his is needed to
32c0: 20 64 6f 0a 43 65 72 74 69 66 69 63 61 74 65 20   do.Certificate 
32d0: 56 61 6c 69 64 61 74 69 6f 6e 5c 26 2e 20 44 65  Validation\&. De
32e0: 66 61 75 6c 74 20 69 73 20 5c 66 42 74 72 75 65  fault is \fBtrue
32f0: 5c 66 52 5c 26 2e 0a 53 65 65 20 5c 66 42 43 65  \fR\&..See \fBCe
3300: 72 74 69 66 69 63 61 74 65 20 56 61 6c 69 64 61  rtificate Valida
3310: 74 69 6f 6e 5c 66 52 20 66 6f 72 20 6d 6f 72 65  tion\fR for more
3320: 20 64 65 74 61 69 6c 73 5c 26 2e 0a 2e 54 50 0a   details\&...TP.
3330: 5c 66 42 2d 72 65 71 75 69 72 65 5c 66 52 20 5c  \fB-require\fR \
3340: 66 49 62 6f 6f 6c 5c 66 52 0a 52 65 71 75 69 72  fIbool\fR.Requir
3350: 65 20 61 20 76 61 6c 69 64 20 63 65 72 74 69 66  e a valid certif
3360: 69 63 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20  icate from peer 
3370: 64 75 72 69 6e 67 20 74 68 65 20 53 53 4c 20 68  during the SSL h
3380: 61 6e 64 73 68 61 6b 65 5c 26 2e 20 49 66 20 74  andshake\&. If t
3390: 68 69 73 20 69 73 20 73 65 74 20 74 6f 0a 74 72  his is set to.tr
33a0: 75 65 2c 20 74 68 65 6e 20 5c 66 42 2d 72 65 71  ue, then \fB-req
33b0: 75 65 73 74 5c 66 52 20 6d 75 73 74 20 61 6c 73  uest\fR must als
33c0: 6f 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65  o be set to true
33d0: 20 61 6e 64 20 61 20 65 69 74 68 65 72 20 5c 66   and a either \f
33e0: 42 2d 63 61 64 69 72 5c 66 52 2c 0a 5c 66 42 2d  B-cadir\fR,.\fB-
33f0: 63 61 66 69 6c 65 5c 66 52 2c 20 5c 66 42 2d 63  cafile\fR, \fB-c
3400: 61 73 74 6f 72 65 5c 66 52 2c 20 6f 72 20 61 20  astore\fR, or a 
3410: 70 6c 61 74 66 6f 72 6d 20 64 65 66 61 75 6c 74  platform default
3420: 20 6d 75 73 74 20 62 65 20 70 72 6f 76 69 64 65   must be provide
3430: 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 76 61  d in order to.va
3440: 6c 69 64 61 74 65 20 61 67 61 69 6e 73 74 5c 26  lidate against\&
3450: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73  . The default is
3460: 20 5c 66 42 66 61 6c 73 65 5c 66 52 20 73 69 6e   \fBfalse\fR sin
3470: 63 65 20 6e 6f 74 20 61 6c 6c 20 70 6c 61 74 66  ce not all platf
3480: 6f 72 6d 73 20 68 61 76 65 0a 63 65 72 74 69 66  orms have.certif
3490: 69 63 61 74 65 73 20 74 6f 20 76 61 6c 69 64 61  icates to valida
34a0: 74 65 20 61 67 61 69 6e 73 74 20 69 6e 20 61 20  te against in a 
34b0: 66 6f 72 6d 20 63 6f 6d 70 61 74 69 62 6c 65 20  form compatible 
34c0: 77 69 74 68 20 4f 70 65 6e 53 53 4c 5c 26 2e 0a  with OpenSSL\&..
34d0: 53 65 65 20 5c 66 42 43 65 72 74 69 66 69 63 61  See \fBCertifica
34e0: 74 65 20 56 61 6c 69 64 61 74 69 6f 6e 5c 66 52  te Validation\fR
34f0: 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c   for more detail
3500: 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 73 65 63  s\&...TP.\fB-sec
3510: 75 72 69 74 79 5f 6c 65 76 65 6c 5c 66 52 20 5c  urity_level\fR \
3520: 66 49 69 6e 74 65 67 65 72 5c 66 52 0a 53 70 65  fIinteger\fR.Spe
3530: 63 69 66 69 65 73 20 74 68 65 20 73 65 63 75 72  cifies the secur
3540: 69 74 79 20 6c 65 76 65 6c 20 28 76 61 6c 75 65  ity level (value
3550: 20 66 72 6f 6d 20 30 20 74 6f 20 35 29 5c 26 2e   from 0 to 5)\&.
3560: 20 54 68 65 20 73 65 63 75 72 69 74 79 20 6c 65   The security le
3570: 76 65 6c 20 61 66 66 65 63 74 73 0a 74 68 65 20  vel affects.the 
3580: 61 6c 6c 6f 77 65 64 20 63 69 70 68 65 72 20 73  allowed cipher s
3590: 75 69 74 65 20 65 6e 63 72 79 70 74 69 6f 6e 20  uite encryption 
35a0: 61 6c 67 6f 72 69 74 68 6d 73 2c 20 73 75 70 70  algorithms, supp
35b0: 6f 72 74 65 64 20 45 43 43 20 63 75 72 76 65 73  orted ECC curves
35c0: 2c 0a 73 75 70 70 6f 72 74 65 64 20 73 69 67 6e  ,.supported sign
35d0: 61 74 75 72 65 20 61 6c 67 6f 72 69 74 68 6d 73  ature algorithms
35e0: 2c 20 44 48 20 70 61 72 61 6d 65 74 65 72 20 73  , DH parameter s
35f0: 69 7a 65 73 2c 20 63 65 72 74 69 66 69 63 61 74  izes, certificat
3600: 65 20 6b 65 79 20 73 69 7a 65 73 0a 61 6e 64 20  e key sizes.and 
3610: 73 69 67 6e 61 74 75 72 65 20 61 6c 67 6f 72 69  signature algori
3620: 74 68 6d 73 5c 26 2e 20 54 68 65 20 64 65 66 61  thms\&. The defa
3630: 75 6c 74 20 69 73 20 31 20 70 72 69 6f 72 20 74  ult is 1 prior t
3640: 6f 20 4f 70 65 6e 53 53 4c 20 33 5c 26 2e 32 20  o OpenSSL 3\&.2 
3650: 61 6e 64 20 32 0a 74 68 65 72 65 61 66 74 65 72  and 2.thereafter
3660: 5c 26 2e 20 4c 65 76 65 6c 20 33 20 61 6e 64 20  \&. Level 3 and 
3670: 68 69 67 68 65 72 20 64 69 73 61 62 6c 65 20 73  higher disable s
3680: 75 70 70 6f 72 74 20 66 6f 72 20 73 65 73 73 69  upport for sessi
3690: 6f 6e 20 74 69 63 6b 65 74 73 20 61 6e 64 0a 6f  on tickets and.o
36a0: 6e 6c 79 20 61 63 63 65 70 74 20 63 69 70 68 65  nly accept ciphe
36b0: 72 20 73 75 69 74 65 73 20 74 68 61 74 20 70 72  r suites that pr
36c0: 6f 76 69 64 65 20 66 6f 72 77 61 72 64 20 73 65  ovide forward se
36d0: 63 72 65 63 79 5c 26 2e 0a 2e 54 50 0a 5c 66 42  crecy\&...TP.\fB
36e0: 2d 73 65 72 76 65 72 5c 66 52 20 5c 66 49 62 6f  -server\fR \fIbo
36f0: 6f 6c 5c 66 52 0a 53 70 65 63 69 66 69 65 73 20  ol\fR.Specifies 
3700: 77 68 65 74 68 65 72 20 74 6f 20 61 63 74 20 61  whether to act a
3710: 73 20 61 20 73 65 72 76 65 72 20 61 6e 64 20 72  s a server and r
3720: 65 73 70 6f 6e 64 20 77 69 74 68 20 61 20 73 65  espond with a se
3730: 72 76 65 72 20 68 61 6e 64 73 68 61 6b 65 20 77  rver handshake w
3740: 68 65 6e 20 61 0a 63 6c 69 65 6e 74 20 63 6f 6e  hen a.client con
3750: 6e 65 63 74 73 20 61 6e 64 20 70 72 6f 76 69 64  nects and provid
3760: 65 73 20 61 20 63 6c 69 65 6e 74 20 68 61 6e 64  es a client hand
3770: 73 68 61 6b 65 5c 26 2e 20 54 68 65 20 64 65 66  shake\&. The def
3780: 61 75 6c 74 20 69 73 20 5c 66 42 66 61 6c 73 65  ault is \fBfalse
3790: 5c 66 52 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 73  \fR\&...TP.\fB-s
37a0: 65 72 76 65 72 6e 61 6d 65 5c 66 52 20 5c 66 49  ervername\fR \fI
37b0: 68 6f 73 74 6e 61 6d 65 5c 66 52 0a 53 70 65 63  hostname\fR.Spec
37c0: 69 66 79 20 74 68 65 20 70 65 65 72 27 73 20 68  ify the peer's h
37d0: 6f 73 74 6e 61 6d 65 5c 26 2e 20 54 68 69 73 20  ostname\&. This 
37e0: 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 74  is used to set t
37f0: 68 65 20 54 4c 53 20 53 65 72 76 65 72 20 4e 61  he TLS Server Na
3800: 6d 65 0a 49 6e 64 69 63 61 74 69 6f 6e 20 28 53  me.Indication (S
3810: 4e 49 29 20 65 78 74 65 6e 73 69 6f 6e 5c 26 2e  NI) extension\&.
3820: 20 53 65 74 20 74 68 69 73 20 74 6f 20 74 68 65   Set this to the
3830: 20 65 78 70 65 63 74 65 64 20 73 65 72 76 65 72   expected server
3840: 6e 61 6d 65 20 69 6e 20 74 68 65 0a 73 65 72 76  name in the.serv
3850: 65 72 27 73 20 63 65 72 74 69 66 69 63 61 74 65  er's certificate
3860: 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 53   or one of the S
3870: 75 62 6a 65 63 74 20 41 6c 74 65 72 6e 61 74 65  ubject Alternate
3880: 20 4e 61 6d 65 73 20 28 53 41 4e 29 5c 26 2e 0a   Names (SAN)\&..
3890: 2e 54 50 0a 5c 66 42 2d 73 65 73 73 69 6f 6e 5f  .TP.\fB-session_
38a0: 69 64 5c 66 52 20 5c 66 49 62 69 6e 61 72 79 5f  id\fR \fIbinary_
38b0: 73 74 72 69 6e 67 5c 66 52 0a 53 70 65 63 69 66  string\fR.Specif
38c0: 69 65 73 20 74 68 65 20 73 65 73 73 69 6f 6e 20  ies the session 
38d0: 69 64 20 74 6f 20 72 65 73 75 6d 65 20 61 20 73  id to resume a s
38e0: 65 73 73 69 6f 6e 5c 26 2e 20 4e 6f 74 20 73 75  ession\&. Not su
38f0: 70 70 6f 72 74 65 64 20 79 65 74 5c 26 2e 0a 2e  pported yet\&...
3900: 54 50 0a 5c 66 42 2d 73 73 6c 32 5c 66 52 20 5c  TP.\fB-ssl2\fR \
3910: 66 49 62 6f 6f 6c 5c 66 52 0a 45 6e 61 62 6c 65  fIbool\fR.Enable
3920: 20 75 73 65 20 6f 66 20 53 53 4c 20 76 32 5c 26   use of SSL v2\&
3930: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73  . The default is
3940: 20 5c 66 42 66 61 6c 73 65 5c 66 52 5c 26 2e 20   \fBfalse\fR\&. 
3950: 4e 6f 74 65 3a 20 52 65 63 65 6e 74 20 76 65 72  Note: Recent ver
3960: 73 69 6f 6e 73 20 6f 66 0a 4f 70 65 6e 53 53 4c  sions of.OpenSSL
3970: 20 6e 6f 20 6c 6f 6e 67 65 72 20 73 75 70 70 6f   no longer suppo
3980: 72 74 20 53 53 4c 76 32 2c 20 73 6f 20 74 68 69  rt SSLv2, so thi
3990: 73 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61  s may not have a
39a0: 6e 79 20 65 66 66 65 63 74 5c 26 2e 20 53 65 65  ny effect\&. See
39b0: 20 74 68 65 0a 5c 66 42 74 6c 73 3a 3a 70 72 6f   the.\fBtls::pro
39c0: 74 6f 63 6f 6c 73 5c 66 52 20 63 6f 6d 6d 61 6e  tocols\fR comman
39d0: 64 20 66 6f 72 20 73 75 70 70 6f 72 74 65 64 20  d for supported 
39e0: 70 72 6f 74 6f 63 6f 6c 73 5c 26 2e 0a 2e 54 50  protocols\&...TP
39f0: 0a 5c 66 42 2d 73 73 6c 33 5c 66 52 20 5c 66 49  .\fB-ssl3\fR \fI
3a00: 62 6f 6f 6c 5c 66 52 0a 45 6e 61 62 6c 65 20 75  bool\fR.Enable u
3a10: 73 65 20 6f 66 20 53 53 4c 20 76 33 5c 26 2e 20  se of SSL v3\&. 
3a20: 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 5c  The default is \
3a30: 66 42 66 61 6c 73 65 5c 66 52 5c 26 2e 20 4e 6f  fBfalse\fR\&. No
3a40: 74 65 3a 20 52 65 63 65 6e 74 20 76 65 72 73 69  te: Recent versi
3a50: 6f 6e 73 0a 6f 66 20 4f 70 65 6e 53 53 4c 20 6d  ons.of OpenSSL m
3a60: 61 79 20 68 61 76 65 20 74 68 69 73 20 64 69 73  ay have this dis
3a70: 61 62 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c 65  abled at compile
3a80: 20 74 69 6d 65 2c 20 73 6f 20 74 68 69 73 20 6d   time, so this m
3a90: 61 79 20 6e 6f 74 20 68 61 76 65 20 61 6e 79 0a  ay not have any.
3aa0: 65 66 66 65 63 74 5c 26 2e 20 53 65 65 20 74 68  effect\&. See th
3ab0: 65 20 5c 66 42 74 6c 73 3a 3a 70 72 6f 74 6f 63  e \fBtls::protoc
3ac0: 6f 6c 73 5c 66 52 20 63 6f 6d 6d 61 6e 64 20 66  ols\fR command f
3ad0: 6f 72 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f  or supported pro
3ae0: 74 6f 63 6f 6c 73 5c 26 2e 0a 2e 54 50 0a 5c 66  tocols\&...TP.\f
3af0: 42 2d 74 6c 73 31 5c 66 52 20 5c 66 49 62 6f 6f  B-tls1\fR \fIboo
3b00: 6c 5c 66 52 0a 45 6e 61 62 6c 65 20 75 73 65 20  l\fR.Enable use 
3b10: 6f 66 20 54 4c 53 20 76 31 5c 26 2e 20 54 68 65  of TLS v1\&. The
3b20: 20 64 65 66 61 75 6c 74 20 69 73 20 5c 66 42 74   default is \fBt
3b30: 72 75 65 5c 66 52 5c 26 2e 20 4e 6f 74 65 3a 20  rue\fR\&. Note: 
3b40: 54 4c 53 20 31 5c 26 2e 30 20 6e 65 65 64 73 0a  TLS 1\&.0 needs.
3b50: 53 48 41 31 20 74 6f 20 6f 70 65 72 61 74 65 2c  SHA1 to operate,
3b60: 20 77 68 69 63 68 20 69 73 20 6f 6e 6c 79 20 61   which is only a
3b70: 76 61 69 6c 61 62 6c 65 20 69 6e 20 73 65 63 75  vailable in secu
3b80: 72 69 74 79 20 6c 65 76 65 6c 20 30 20 66 6f 72  rity level 0 for
3b90: 20 4f 70 65 6e 20 53 53 4c 20 33 5c 26 2e 30 2b   Open SSL 3\&.0+
3ba0: 5c 26 2e 0a 53 65 65 20 74 68 65 20 5c 66 49 2d  \&..See the \fI-
3bb0: 73 65 63 75 72 69 74 79 5f 6c 65 76 65 6c 5c 66  security_level\f
3bc0: 52 20 6f 70 74 69 6f 6e 5c 26 2e 0a 2e 54 50 0a  R option\&...TP.
3bd0: 5c 66 42 2d 74 6c 73 31 5c 26 2e 31 5c 66 52 20  \fB-tls1\&.1\fR 
3be0: 5c 66 49 62 6f 6f 6c 5c 66 52 0a 45 6e 61 62 6c  \fIbool\fR.Enabl
3bf0: 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31 5c  e use of TLS v1\
3c00: 26 2e 31 5c 26 2e 20 54 68 65 20 64 65 66 61 75  &.1\&. The defau
3c10: 6c 74 20 69 73 20 5c 66 42 74 72 75 65 5c 66 52  lt is \fBtrue\fR
3c20: 5c 26 2e 20 4e 6f 74 65 3a 20 54 4c 53 20 31 5c  \&. Note: TLS 1\
3c30: 26 2e 31 20 6e 65 65 64 73 0a 53 48 41 31 20 74  &.1 needs.SHA1 t
3c40: 6f 20 6f 70 65 72 61 74 65 2c 20 77 68 69 63 68  o operate, which
3c50: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
3c60: 6c 65 20 69 6e 20 73 65 63 75 72 69 74 79 20 6c  le in security l
3c70: 65 76 65 6c 20 30 20 66 6f 72 20 4f 70 65 6e 20  evel 0 for Open 
3c80: 53 53 4c 20 33 5c 26 2e 30 2b 5c 26 2e 0a 53 65  SSL 3\&.0+\&..Se
3c90: 65 20 74 68 65 20 5c 66 49 2d 73 65 63 75 72 69  e the \fI-securi
3ca0: 74 79 5f 6c 65 76 65 6c 5c 66 52 20 6f 70 74 69  ty_level\fR opti
3cb0: 6f 6e 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 74 6c  on\&...TP.\fB-tl
3cc0: 73 31 5c 26 2e 32 5c 66 52 20 5c 66 49 62 6f 6f  s1\&.2\fR \fIboo
3cd0: 6c 5c 66 52 0a 45 6e 61 62 6c 65 20 75 73 65 20  l\fR.Enable use 
3ce0: 6f 66 20 54 4c 53 20 76 31 5c 26 2e 32 5c 26 2e  of TLS v1\&.2\&.
3cf0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20   The default is 
3d00: 5c 66 42 74 72 75 65 5c 66 52 5c 26 2e 0a 2e 54  \fBtrue\fR\&...T
3d10: 50 0a 5c 66 42 2d 74 6c 73 31 5c 26 2e 33 5c 66  P.\fB-tls1\&.3\f
3d20: 52 20 5c 66 49 62 6f 6f 6c 5c 66 52 0a 45 6e 61  R \fIbool\fR.Ena
3d30: 62 6c 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76  ble use of TLS v
3d40: 31 5c 26 2e 33 5c 26 2e 20 54 68 65 20 64 65 66  1\&.3\&. The def
3d50: 61 75 6c 74 20 69 73 20 5c 66 42 74 72 75 65 5c  ault is \fBtrue\
3d60: 66 52 5c 26 2e 0a 2e 54 50 0a 5c 66 42 2d 76 61  fR\&...TP.\fB-va
3d70: 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 5c 66 52  lidatecommand\fR
3d80: 20 5c 66 49 63 61 6c 6c 62 61 63 6b 5c 66 52 0a   \fIcallback\fR.
3d90: 53 70 65 63 69 66 69 65 73 20 74 68 65 20 63 61  Specifies the ca
3da0: 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 74  llback command t
3db0: 6f 20 69 6e 76 6f 6b 65 20 74 6f 20 76 61 6c 69  o invoke to vali
3dc0: 64 61 74 65 20 74 68 65 20 70 65 65 72 20 63 65  date the peer ce
3dd0: 72 74 69 66 69 63 61 74 65 73 0a 61 6e 64 20 6f  rtificates.and o
3de0: 74 68 65 72 20 63 6f 6e 66 69 67 20 69 6e 66 6f  ther config info
3df0: 20 64 75 72 69 6e 67 20 74 68 65 20 70 72 6f 74   during the prot
3e00: 6f 63 6f 6c 20 6e 65 67 6f 74 69 61 74 69 6f 6e  ocol negotiation
3e10: 20 70 68 61 73 65 5c 26 2e 20 54 68 69 73 20 63   phase\&. This c
3e20: 61 6e 20 62 65 20 75 73 65 64 0a 62 79 20 54 43  an be used.by TC
3e30: 4c 20 73 63 72 69 70 74 73 20 74 6f 20 70 65 72  L scripts to per
3e40: 66 6f 72 6d 20 74 68 65 69 72 20 6f 77 6e 20 43  form their own C
3e50: 65 72 74 69 66 69 63 61 74 65 20 56 61 6c 69 64  ertificate Valid
3e60: 61 74 69 6f 6e 20 74 6f 20 73 75 70 70 6c 65 6d  ation to supplem
3e70: 65 6e 74 20 74 68 65 0a 64 65 66 61 75 6c 74 20  ent the.default 
3e80: 76 61 6c 69 64 61 74 69 6f 6e 20 70 72 6f 76 69  validation provi
3e90: 64 65 64 20 62 79 20 4f 70 65 6e 53 53 4c 5c 26  ded by OpenSSL\&
3ea0: 2e 20 54 68 65 20 73 63 72 69 70 74 20 6d 75 73  . The script mus
3eb0: 74 20 72 65 74 75 72 6e 20 61 20 62 6f 6f 6c 65  t return a boole
3ec0: 61 6e 20 74 72 75 65 0a 74 6f 20 63 6f 6e 74 69  an true.to conti
3ed0: 6e 75 65 20 74 68 65 20 6e 65 67 6f 74 69 61 74  nue the negotiat
3ee0: 69 6f 6e 5c 26 2e 20 53 65 65 20 5c 66 42 43 61  ion\&. See \fBCa
3ef0: 6c 6c 62 61 63 6b 20 4f 70 74 69 6f 6e 73 5c 66  llback Options\f
3f00: 52 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 5c  R for more info\
3f10: 26 2e 0a 2e 52 45 0a 2e 54 50 0a 5c 66 42 74 6c  &...RE..TP.\fBtl
3f20: 73 3a 3a 75 6e 69 6d 70 6f 72 74 5c 66 52 20 5c  s::unimport\fR \
3f30: 66 49 63 68 61 6e 6e 65 6c 5c 66 52 0a 43 6f 6d  fIchannel\fR.Com
3f40: 70 6c 69 6d 65 6e 74 20 74 6f 20 5c 66 42 74 6c  pliment to \fBtl
3f50: 73 3a 3a 69 6d 70 6f 72 74 5c 66 52 5c 26 2e 20  s::import\fR\&. 
3f60: 55 73 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 74  Used to remove t
3f70: 68 65 20 74 6f 70 20 6c 65 76 65 6c 20 73 74 61  he top level sta
3f80: 63 6b 65 64 20 63 68 61 6e 6e 65 6c 0a 66 72 6f  cked channel.fro
3f90: 6d 20 5c 66 49 63 68 61 6e 6e 65 6c 5c 66 52 5c  m \fIchannel\fR\
3fa0: 26 2e 20 54 68 69 73 20 75 6e 73 74 61 63 6b 73  &. This unstacks
3fb0: 20 74 68 65 20 65 6e 63 72 79 70 74 69 6f 6e 20   the encryption 
3fc0: 6f 66 20 61 20 72 65 67 75 6c 61 72 20 54 43 4c  of a regular TCL
3fd0: 20 63 68 61 6e 6e 65 6c 5c 26 2e 20 41 6e 0a 65   channel\&. An.e
3fe0: 72 72 6f 72 20 69 73 20 74 68 72 6f 77 6e 20 69  rror is thrown i
3ff0: 66 20 54 4c 53 20 69 73 20 6e 6f 74 20 74 68 65  f TLS is not the
4000: 20 74 6f 70 20 73 74 61 63 6b 65 64 20 63 68 61   top stacked cha
4010: 6e 6e 65 6c 20 74 79 70 65 5c 26 2e 0a 2e 54 50  nnel type\&...TP
4020: 0a 5c 66 42 74 6c 73 3a 3a 68 61 6e 64 73 68 61  .\fBtls::handsha
4030: 6b 65 5c 66 52 20 5c 66 49 63 68 61 6e 6e 65 6c  ke\fR \fIchannel
4040: 5c 66 52 0a 46 6f 72 63 65 73 20 74 68 65 20 54  \fR.Forces the T
4050: 4c 53 20 6e 65 67 6f 74 69 61 74 69 6f 6e 20 68  LS negotiation h
4060: 61 6e 64 73 68 61 6b 65 20 74 6f 20 74 61 6b 65  andshake to take
4070: 20 70 6c 61 63 65 20 69 6d 6d 65 64 69 61 74 65   place immediate
4080: 6c 79 2c 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ly, and returns 
4090: 30 0a 69 66 20 68 61 6e 64 73 68 61 6b 65 20 69  0.if handshake i
40a0: 73 20 73 74 69 6c 6c 20 69 6e 20 70 72 6f 67 72  s still in progr
40b0: 65 73 73 20 28 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e  ess (non-blockin
40c0: 67 29 2c 20 6f 72 20 31 20 69 66 20 74 68 65 20  g), or 1 if the 
40d0: 68 61 6e 64 73 68 61 6b 65 20 77 61 73 0a 73 75  handshake was.su
40e0: 63 63 65 73 73 66 75 6c 5c 26 2e 20 49 66 20 74  ccessful\&. If t
40f0: 68 65 20 68 61 6e 64 73 68 61 6b 65 20 66 61 69  he handshake fai
4100: 6c 65 64 2c 20 61 6e 20 65 72 72 6f 72 20 77 69  led, an error wi
4110: 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 5c 26  ll be returned\&
4120: 2e 0a 2e 54 50 0a 5c 66 42 74 6c 73 3a 3a 73 74  ...TP.\fBtls::st
4130: 61 74 75 73 5c 66 52 20 3f 5c 66 42 2d 6c 6f 63  atus\fR ?\fB-loc
4140: 61 6c 5c 66 52 3f 20 5c 66 49 63 68 61 6e 6e 65  al\fR? \fIchanne
4150: 6c 5c 66 52 0a 52 65 74 75 72 6e 73 20 74 68 65  l\fR.Returns the
4160: 20 63 75 72 72 65 6e 74 20 73 74 61 74 75 73 20   current status 
4170: 6f 66 20 61 6e 20 53 53 4c 20 63 68 61 6e 6e 65  of an SSL channe
4180: 6c 5c 26 2e 20 54 68 65 20 72 65 73 75 6c 74 20  l\&. The result 
4190: 69 73 20 61 20 6c 69 73 74 20 6f 66 20 6b 65 79  is a list of key
41a0: 2d 76 61 6c 75 65 0a 70 61 69 72 73 20 64 65 73  -value.pairs des
41b0: 63 72 69 62 69 6e 67 20 74 68 65 20 53 53 4c 2c  cribing the SSL,
41c0: 20 63 65 72 74 69 66 69 63 61 74 65 2c 20 61 6e   certificate, an
41d0: 64 20 63 65 72 74 69 66 69 63 61 74 65 20 76 65  d certificate ve
41e0: 72 69 66 69 63 61 74 69 6f 6e 20 73 74 61 74 75  rification statu
41f0: 73 5c 26 2e 20 49 66 0a 74 68 65 20 53 53 4c 20  s\&. If.the SSL 
4200: 68 61 6e 64 73 68 61 6b 65 20 68 61 73 20 6e 6f  handshake has no
4210: 74 20 79 65 74 20 63 6f 6d 70 6c 65 74 65 64 2c  t yet completed,
4220: 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 69   an empty list i
4230: 73 20 72 65 74 75 72 6e 65 64 5c 26 2e 20 49 66  s returned\&. If
4240: 20 74 68 65 0a 5c 66 42 2d 6c 6f 63 61 6c 5c 66   the.\fB-local\f
4250: 52 20 6f 70 74 69 6f 6e 20 69 73 20 73 70 65 63  R option is spec
4260: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
4270: 6c 6f 63 61 6c 20 63 65 72 74 69 66 69 63 61 74  local certificat
4280: 65 20 69 73 20 75 73 65 64 5c 26 2e 20 52 65 74  e is used\&. Ret
4290: 75 72 6e 65 64 0a 76 61 6c 75 65 73 20 69 6e 63  urned.values inc
42a0: 6c 75 64 65 3a 0a 2e 73 70 0a 53 53 4c 20 53 74  lude:..sp.SSL St
42b0: 61 74 75 73 0a 2e 52 53 0a 2e 54 50 0a 5c 66 42  atus..RS..TP.\fB
42c0: 61 6c 70 6e 5c 66 52 20 5c 66 49 70 72 6f 74 6f  alpn\fR \fIproto
42d0: 63 6f 6c 5c 66 52 0a 54 68 65 20 70 72 6f 74 6f  col\fR.The proto
42e0: 63 6f 6c 20 73 65 6c 65 63 74 65 64 20 61 66 74  col selected aft
42f0: 65 72 20 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c  er Application-L
4300: 61 79 65 72 20 50 72 6f 74 6f 63 6f 6c 20 4e 65  ayer Protocol Ne
4310: 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50 4e 29  gotiation (ALPN)
4320: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 63 69 70 68 65  \&...TP.\fBciphe
4330: 72 5c 66 52 20 5c 66 49 63 69 70 68 65 72 5c 66  r\fR \fIcipher\f
4340: 52 0a 54 68 65 20 63 75 72 72 65 6e 74 20 63 69  R.The current ci
4350: 70 68 65 72 20 69 6e 20 75 73 65 20 66 6f 72 20  pher in use for 
4360: 74 68 65 20 73 65 73 73 69 6f 6e 5c 26 2e 0a 2e  the session\&...
4370: 54 50 0a 5c 66 42 70 65 65 72 6e 61 6d 65 5c 66  TP.\fBpeername\f
4380: 52 20 5c 66 49 6e 61 6d 65 5c 66 52 0a 54 68 65  R \fIname\fR.The
4390: 20 70 65 65 72 6e 61 6d 65 20 66 72 6f 6d 20 74   peername from t
43a0: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 5c 26  he certificate\&
43b0: 2e 0a 2e 54 50 0a 5c 66 42 70 72 6f 74 6f 63 6f  ...TP.\fBprotoco
43c0: 6c 5c 66 52 20 5c 66 49 76 65 72 73 69 6f 6e 5c  l\fR \fIversion\
43d0: 66 52 0a 54 68 65 20 70 72 6f 74 6f 63 6f 6c 20  fR.The protocol 
43e0: 76 65 72 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  version used for
43f0: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3a   the connection:
4400: 20 53 53 4c 32 2c 20 53 53 4c 33 2c 20 54 4c 53   SSL2, SSL3, TLS
4410: 31 2c 20 54 4c 53 31 5c 26 2e 31 2c 20 54 4c 53  1, TLS1\&.1, TLS
4420: 31 5c 26 2e 32 2c 20 54 4c 53 31 5c 26 2e 33 2c  1\&.2, TLS1\&.3,
4430: 20 6f 72 20 75 6e 6b 6e 6f 77 6e 5c 26 2e 0a 2e   or unknown\&...
4440: 54 50 0a 5c 66 42 73 62 69 74 73 5c 66 52 20 5c  TP.\fBsbits\fR \
4450: 66 49 6e 5c 66 52 0a 54 68 65 20 6e 75 6d 62 65  fIn\fR.The numbe
4460: 72 20 6f 66 20 62 69 74 73 20 75 73 65 64 20 66  r of bits used f
4470: 6f 72 20 74 68 65 20 73 65 73 73 69 6f 6e 20 6b  or the session k
4480: 65 79 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 69 67  ey\&...TP.\fBsig
4490: 6e 61 74 75 72 65 48 61 73 68 41 6c 67 6f 72 69  natureHashAlgori
44a0: 74 68 6d 5c 66 52 20 5c 66 49 61 6c 67 6f 72 69  thm\fR \fIalgori
44b0: 74 68 6d 5c 66 52 0a 54 68 65 20 73 69 67 6e 61  thm\fR.The signa
44c0: 74 75 72 65 20 68 61 73 68 20 61 6c 67 6f 72 69  ture hash algori
44d0: 74 68 6d 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 69  thm\&...TP.\fBsi
44e0: 67 6e 61 74 75 72 65 54 79 70 65 5c 66 52 20 5c  gnatureType\fR \
44f0: 66 49 74 79 70 65 5c 66 52 0a 54 68 65 20 73 69  fItype\fR.The si
4500: 67 6e 61 74 75 72 65 20 74 79 70 65 20 76 61 6c  gnature type val
4510: 75 65 5c 26 2e 0a 2e 54 50 0a 5c 66 42 76 65 72  ue\&...TP.\fBver
4520: 69 66 79 44 65 70 74 68 5c 66 52 20 5c 66 49 6e  ifyDepth\fR \fIn
4530: 5c 66 52 0a 4d 61 78 69 6d 75 6d 20 64 65 70 74  \fR.Maximum dept
4540: 68 20 66 6f 72 20 74 68 65 20 63 65 72 74 69 66  h for the certif
4550: 69 63 61 74 65 20 63 68 61 69 6e 20 76 65 72 69  icate chain veri
4560: 66 69 63 61 74 69 6f 6e 5c 26 2e 20 44 65 66 61  fication\&. Defa
4570: 75 6c 74 20 69 73 20 2d 31 2c 20 74 6f 20 63 68  ult is -1, to ch
4580: 65 63 6b 20 61 6c 6c 5c 26 2e 0a 2e 54 50 0a 5c  eck all\&...TP.\
4590: 66 42 76 65 72 69 66 79 4d 6f 64 65 5c 66 52 20  fBverifyMode\fR 
45a0: 5c 66 49 6c 69 73 74 5c 66 52 0a 4c 69 73 74 20  \fIlist\fR.List 
45b0: 6f 66 20 63 65 72 74 69 66 69 63 61 74 65 20 76  of certificate v
45c0: 65 72 69 66 69 63 61 74 69 6f 6e 20 6d 6f 64 65  erification mode
45d0: 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 76 65 72 69  s\&...TP.\fBveri
45e0: 66 79 52 65 73 75 6c 74 5c 66 52 20 5c 66 49 72  fyResult\fR \fIr
45f0: 65 73 75 6c 74 5c 66 52 0a 43 65 72 74 69 66 69  esult\fR.Certifi
4600: 63 61 74 65 20 76 65 72 69 66 69 63 61 74 69 6f  cate verificatio
4610: 6e 20 72 65 73 75 6c 74 5c 26 2e 0a 2e 54 50 0a  n result\&...TP.
4620: 5c 66 42 63 61 5f 6e 61 6d 65 73 5c 66 52 20 5c  \fBca_names\fR \
4630: 66 49 6c 69 73 74 5c 66 52 0a 4c 69 73 74 20 6f  fIlist\fR.List o
4640: 66 20 74 68 65 20 43 65 72 74 69 66 69 63 61 74  f the Certificat
4650: 65 20 41 75 74 68 6f 72 69 74 69 65 73 20 75 73  e Authorities us
4660: 65 64 20 74 6f 20 63 72 65 61 74 65 20 74 68 65  ed to create the
4670: 20 63 65 72 74 69 66 69 63 61 74 65 5c 26 2e 0a   certificate\&..
4680: 2e 52 45 0a 2e 49 50 0a 43 65 72 74 69 66 69 63  .RE..IP.Certific
4690: 61 74 65 20 53 74 61 74 75 73 0a 2e 52 53 0a 2e  ate Status..RS..
46a0: 54 50 0a 5c 66 42 61 6c 6c 5c 66 52 20 5c 66 49  TP.\fBall\fR \fI
46b0: 73 74 72 69 6e 67 5c 66 52 0a 44 75 6d 70 20 6f  string\fR.Dump o
46c0: 66 20 61 6c 6c 20 63 65 72 74 69 66 69 63 61 74  f all certificat
46d0: 65 20 69 6e 66 6f 5c 26 2e 0a 2e 54 50 0a 5c 66  e info\&...TP.\f
46e0: 42 76 65 72 73 69 6f 6e 5c 66 52 20 5c 66 49 76  Bversion\fR \fIv
46f0: 61 6c 75 65 5c 66 52 0a 54 68 65 20 63 65 72 74  alue\fR.The cert
4700: 69 66 69 63 61 74 65 20 76 65 72 73 69 6f 6e 5c  ificate version\
4710: 26 2e 0a 2e 54 50 0a 5c 66 42 73 65 72 69 61 6c  &...TP.\fBserial
4720: 4e 75 6d 62 65 72 5c 66 52 20 5c 66 49 73 74 72  Number\fR \fIstr
4730: 69 6e 67 5c 66 52 0a 54 68 65 20 73 65 72 69 61  ing\fR.The seria
4740: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20  l number of the 
4750: 63 65 72 74 69 66 69 63 61 74 65 20 61 73 20 61  certificate as a
4760: 20 68 65 78 20 73 74 72 69 6e 67 5c 26 2e 0a 2e   hex string\&...
4770: 54 50 0a 5c 66 42 73 69 67 6e 61 74 75 72 65 5c  TP.\fBsignature\
4780: 66 52 20 5c 66 49 61 6c 67 6f 72 69 74 68 6d 5c  fR \fIalgorithm\
4790: 66 52 0a 43 69 70 68 65 72 20 61 6c 67 6f 72 69  fR.Cipher algori
47a0: 74 68 6d 20 75 73 65 64 20 66 6f 72 20 63 65 72  thm used for cer
47b0: 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 74 75  tificate signatu
47c0: 72 65 5c 26 2e 0a 2e 54 50 0a 5c 66 42 69 73 73  re\&...TP.\fBiss
47d0: 75 65 72 5c 66 52 20 5c 66 49 73 74 72 69 6e 67  uer\fR \fIstring
47e0: 5c 66 52 0a 54 68 65 20 64 69 73 74 69 6e 67 75  \fR.The distingu
47f0: 69 73 68 65 64 20 6e 61 6d 65 20 28 44 4e 29 20  ished name (DN) 
4800: 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61  of the certifica
4810: 74 65 20 69 73 73 75 65 72 5c 26 2e 0a 2e 54 50  te issuer\&...TP
4820: 0a 5c 66 42 6e 6f 74 42 65 66 6f 72 65 5c 66 52  .\fBnotBefore\fR
4830: 20 5c 66 49 64 61 74 65 5c 66 52 0a 54 68 65 20   \fIdate\fR.The 
4840: 62 65 67 69 6e 6e 69 6e 67 20 64 61 74 65 20 6f  beginning date o
4850: 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74  f the certificat
4860: 65 20 76 61 6c 69 64 69 74 79 5c 26 2e 0a 2e 54  e validity\&...T
4870: 50 0a 5c 66 42 6e 6f 74 41 66 74 65 72 5c 66 52  P.\fBnotAfter\fR
4880: 20 5c 66 49 64 61 74 65 5c 66 52 0a 54 68 65 20   \fIdate\fR.The 
4890: 65 78 70 69 72 61 74 69 6f 6e 20 64 61 74 65 20  expiration date 
48a0: 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61  of the certifica
48b0: 74 65 20 76 61 6c 69 64 69 74 79 5c 26 2e 0a 2e  te validity\&...
48c0: 54 50 0a 5c 66 42 73 75 62 6a 65 63 74 5c 66 52  TP.\fBsubject\fR
48d0: 20 5c 66 49 73 74 72 69 6e 67 5c 66 52 0a 54 68   \fIstring\fR.Th
48e0: 65 20 64 69 73 74 69 6e 67 75 69 73 68 65 64 20  e distinguished 
48f0: 6e 61 6d 65 20 28 44 4e 29 20 6f 66 20 74 68 65  name (DN) of the
4900: 20 63 65 72 74 69 66 69 63 61 74 65 20 73 75 62   certificate sub
4910: 6a 65 63 74 5c 26 2e 20 46 69 65 6c 64 73 20 69  ject\&. Fields i
4920: 6e 63 6c 75 64 65 3a 20 43 6f 6d 6d 6f 6e 0a 4e  nclude: Common.N
4930: 61 6d 65 20 28 43 4e 29 2c 20 4f 72 67 61 6e 69  ame (CN), Organi
4940: 7a 61 74 69 6f 6e 20 28 4f 29 2c 20 4c 6f 63 61  zation (O), Loca
4950: 6c 69 74 79 20 6f 72 20 43 69 74 79 20 28 4c 29  lity or City (L)
4960: 2c 20 53 74 61 74 65 20 6f 72 20 50 72 6f 76 69  , State or Provi
4970: 6e 63 65 20 28 53 29 2c 20 61 6e 64 0a 43 6f 75  nce (S), and.Cou
4980: 6e 74 72 79 20 4e 61 6d 65 20 28 43 29 5c 26 2e  ntry Name (C)\&.
4990: 0a 2e 54 50 0a 5c 66 42 69 73 73 75 65 72 55 6e  ..TP.\fBissuerUn
49a0: 69 71 75 65 49 44 5c 66 52 20 5c 66 49 73 74 72  iqueID\fR \fIstr
49b0: 69 6e 67 5c 66 52 0a 54 68 65 20 69 73 73 75 65  ing\fR.The issue
49c0: 72 20 75 6e 69 71 75 65 20 69 64 5c 26 2e 0a 2e  r unique id\&...
49d0: 54 50 0a 5c 66 42 73 75 62 6a 65 63 74 55 6e 69  TP.\fBsubjectUni
49e0: 71 75 65 49 44 5c 66 52 20 5c 66 49 73 74 72 69  queID\fR \fIstri
49f0: 6e 67 5c 66 52 0a 54 68 65 20 73 75 62 6a 65 63  ng\fR.The subjec
4a00: 74 20 75 6e 69 71 75 65 20 69 64 5c 26 2e 0a 2e  t unique id\&...
4a10: 54 50 0a 5c 66 42 6e 75 6d 5f 65 78 74 65 6e 73  TP.\fBnum_extens
4a20: 69 6f 6e 73 5c 66 52 20 5c 66 49 6e 5c 66 52 0a  ions\fR \fIn\fR.
4a30: 4e 75 6d 62 65 72 20 6f 66 20 63 65 72 74 69 66  Number of certif
4a40: 69 63 61 74 65 20 65 78 74 65 6e 73 69 6f 6e 73  icate extensions
4a50: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 65 78 74 65 6e  \&...TP.\fBexten
4a60: 73 69 6f 6e 73 5c 66 52 20 5c 66 49 6c 69 73 74  sions\fR \fIlist
4a70: 5c 66 52 0a 4c 69 73 74 20 6f 66 20 63 65 72 74  \fR.List of cert
4a80: 69 66 69 63 61 74 65 20 65 78 74 65 6e 73 69 6f  ificate extensio
4a90: 6e 20 6e 61 6d 65 73 5c 26 2e 0a 2e 54 50 0a 5c  n names\&...TP.\
4aa0: 66 42 61 75 74 68 6f 72 69 74 79 4b 65 79 49 64  fBauthorityKeyId
4ab0: 65 6e 74 69 66 69 65 72 5c 66 52 20 5c 66 49 73  entifier\fR \fIs
4ac0: 74 72 69 6e 67 5c 66 52 0a 41 75 74 68 6f 72 69  tring\fR.Authori
4ad0: 74 79 20 4b 65 79 20 49 64 65 6e 74 69 66 69 65  ty Key Identifie
4ae0: 72 20 28 41 4b 49 29 20 6f 66 20 74 68 65 20 49  r (AKI) of the I
4af0: 73 73 75 69 6e 67 20 43 41 20 63 65 72 74 69 66  ssuing CA certif
4b00: 69 63 61 74 65 20 74 68 61 74 20 73 69 67 6e 65  icate that signe
4b10: 64 20 74 68 65 0a 53 53 4c 20 63 65 72 74 69 66  d the.SSL certif
4b20: 69 63 61 74 65 20 61 73 20 61 20 68 65 78 20 73  icate as a hex s
4b30: 74 72 69 6e 67 5c 26 2e 20 54 68 69 73 20 76 61  tring\&. This va
4b40: 6c 75 65 20 6d 61 74 63 68 65 73 20 74 68 65 20  lue matches the 
4b50: 53 4b 49 20 76 61 6c 75 65 20 6f 66 20 74 68 65  SKI value of the
4b60: 0a 49 6e 74 65 72 6d 65 64 69 61 74 65 20 43 41  .Intermediate CA
4b70: 20 63 65 72 74 69 66 69 63 61 74 65 5c 26 2e 0a   certificate\&..
4b80: 2e 54 50 0a 5c 66 42 73 75 62 6a 65 63 74 4b 65  .TP.\fBsubjectKe
4b90: 79 49 64 65 6e 74 69 66 69 65 72 5c 66 52 20 5c  yIdentifier\fR \
4ba0: 66 49 73 74 72 69 6e 67 5c 66 52 0a 53 75 62 6a  fIstring\fR.Subj
4bb0: 65 63 74 20 4b 65 79 20 49 64 65 6e 74 69 66 69  ect Key Identifi
4bc0: 65 72 20 28 53 4b 49 29 20 68 61 73 68 20 6f 66  er (SKI) hash of
4bd0: 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20   the public key 
4be0: 69 6e 73 69 64 65 20 74 68 65 20 63 65 72 74 69  inside the certi
4bf0: 66 69 63 61 74 65 20 61 73 20 61 0a 68 65 78 20  ficate as a.hex 
4c00: 73 74 72 69 6e 67 5c 26 2e 20 55 73 65 64 20 74  string\&. Used t
4c10: 6f 20 69 64 65 6e 74 69 66 79 20 63 65 72 74 69  o identify certi
4c20: 66 69 63 61 74 65 73 20 74 68 61 74 20 63 6f 6e  ficates that con
4c30: 74 61 69 6e 20 61 20 70 61 72 74 69 63 75 6c 61  tain a particula
4c40: 72 20 70 75 62 6c 69 63 20 6b 65 79 5c 26 2e 0a  r public key\&..
4c50: 2e 54 50 0a 5c 66 42 73 75 62 6a 65 63 74 41 6c  .TP.\fBsubjectAl
4c60: 74 4e 61 6d 65 5c 66 52 20 5c 66 49 6c 69 73 74  tName\fR \fIlist
4c70: 5c 66 52 0a 4c 69 73 74 20 6f 66 20 61 6c 6c 20  \fR.List of all 
4c80: 6f 66 20 74 68 65 20 53 75 62 6a 65 63 74 20 41  of the Subject A
4c90: 6c 74 65 72 6e 61 74 69 76 65 20 4e 61 6d 65 73  lternative Names
4ca0: 20 28 53 41 4e 29 20 69 6e 63 6c 75 64 69 6e 67   (SAN) including
4cb0: 20 64 6f 6d 61 69 6e 20 6e 61 6d 65 73 2c 20 73   domain names, s
4cc0: 75 62 0a 64 6f 6d 61 69 6e 73 2c 20 61 6e 64 20  ub.domains, and 
4cd0: 49 50 20 61 64 64 72 65 73 73 65 73 20 74 68 61  IP addresses tha
4ce0: 74 20 61 72 65 20 73 65 63 75 72 65 64 20 62 79  t are secured by
4cf0: 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65   the certificate
4d00: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 6f 63 73 70 5c  \&...TP.\fBocsp\
4d10: 66 52 20 5c 66 49 6c 69 73 74 5c 66 52 0a 4c 69  fR \fIlist\fR.Li
4d20: 73 74 20 6f 66 20 61 6c 6c 20 4f 6e 6c 69 6e 65  st of all Online
4d30: 20 43 65 72 74 69 66 69 63 61 74 65 20 53 74 61   Certificate Sta
4d40: 74 75 73 20 50 72 6f 74 6f 63 6f 6c 20 28 4f 43  tus Protocol (OC
4d50: 53 50 29 20 55 52 4c 73 20 74 68 61 74 20 63 61  SP) URLs that ca
4d60: 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 63 68 65  n be used to.che
4d70: 63 6b 20 74 68 65 20 76 61 6c 69 64 69 74 79 20  ck the validity 
4d80: 6f 66 20 74 68 69 73 20 63 65 72 74 69 66 69 63  of this certific
4d90: 61 74 65 5c 26 2e 0a 2e 54 50 0a 5c 66 42 63 65  ate\&...TP.\fBce
4da0: 72 74 69 66 69 63 61 74 65 5c 66 52 20 5c 66 49  rtificate\fR \fI
4db0: 63 65 72 74 5c 66 52 0a 54 68 65 20 50 45 4d 20  cert\fR.The PEM 
4dc0: 65 6e 63 6f 64 65 64 20 63 65 72 74 69 66 69 63  encoded certific
4dd0: 61 74 65 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 69  ate\&...TP.\fBsi
4de0: 67 6e 61 74 75 72 65 41 6c 67 6f 72 69 74 68 6d  gnatureAlgorithm
4df0: 5c 66 52 20 5c 66 49 61 6c 67 6f 72 69 74 68 6d  \fR \fIalgorithm
4e00: 5c 66 52 0a 43 69 70 68 65 72 20 61 6c 67 6f 72  \fR.Cipher algor
4e10: 69 74 68 6d 20 75 73 65 64 20 66 6f 72 20 74 68  ithm used for th
4e20: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73 69  e certificate si
4e30: 67 6e 61 74 75 72 65 5c 26 2e 0a 2e 54 50 0a 5c  gnature\&...TP.\
4e40: 66 42 73 69 67 6e 61 74 75 72 65 56 61 6c 75 65  fBsignatureValue
4e50: 5c 66 52 20 5c 66 49 73 74 72 69 6e 67 5c 66 52  \fR \fIstring\fR
4e60: 0a 43 65 72 74 69 66 69 63 61 74 65 20 73 69 67  .Certificate sig
4e70: 6e 61 74 75 72 65 20 61 73 20 61 20 68 65 78 20  nature as a hex 
4e80: 73 74 72 69 6e 67 5c 26 2e 0a 2e 54 50 0a 5c 66  string\&...TP.\f
4e90: 42 73 69 67 6e 61 74 75 72 65 44 69 67 65 73 74  BsignatureDigest
4ea0: 5c 66 52 20 5c 66 49 76 65 72 73 69 6f 6e 5c 66  \fR \fIversion\f
4eb0: 52 0a 43 65 72 74 69 66 69 63 61 74 65 20 73 69  R.Certificate si
4ec0: 67 6e 69 6e 67 20 64 69 67 65 73 74 20 61 73 20  gning digest as 
4ed0: 61 20 68 65 78 20 73 74 72 69 6e 67 5c 26 2e 0a  a hex string\&..
4ee0: 2e 54 50 0a 5c 66 42 70 75 62 6c 69 63 4b 65 79  .TP.\fBpublicKey
4ef0: 41 6c 67 6f 72 69 74 68 6d 5c 66 52 20 5c 66 49  Algorithm\fR \fI
4f00: 61 6c 67 6f 72 69 74 68 6d 5c 66 52 0a 43 65 72  algorithm\fR.Cer
4f10: 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 74 75  tificate signatu
4f20: 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20 61 6c  re public key al
4f30: 67 6f 72 69 74 68 6d 5c 26 2e 0a 2e 54 50 0a 5c  gorithm\&...TP.\
4f40: 66 42 70 75 62 6c 69 63 4b 65 79 5c 66 52 20 5c  fBpublicKey\fR \
4f50: 66 49 73 74 72 69 6e 67 5c 66 52 0a 43 65 72 74  fIstring\fR.Cert
4f60: 69 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72  ificate signatur
4f70: 65 20 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20  e public key as 
4f80: 61 20 68 65 78 20 73 74 72 69 6e 67 5c 26 2e 0a  a hex string\&..
4f90: 2e 54 50 0a 5c 66 42 62 69 74 73 5c 66 52 20 5c  .TP.\fBbits\fR \
4fa0: 66 49 6e 5c 66 52 0a 4e 75 6d 62 65 72 20 6f 66  fIn\fR.Number of
4fb0: 20 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 63   bits used for c
4fc0: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61  ertificate signa
4fd0: 74 75 72 65 20 6b 65 79 5c 26 2e 0a 2e 54 50 0a  ture key\&...TP.
4fe0: 5c 66 42 73 65 6c 66 5f 73 69 67 6e 65 64 5c 66  \fBself_signed\f
4ff0: 52 20 5c 66 49 62 6f 6f 6c 65 61 6e 5c 66 52 0a  R \fIboolean\fR.
5000: 57 68 65 74 68 65 72 20 74 68 65 20 63 65 72 74  Whether the cert
5010: 69 66 69 63 61 74 65 20 73 69 67 6e 61 74 75 72  ificate signatur
5020: 65 20 69 73 20 73 65 6c 66 20 73 69 67 6e 65 64  e is self signed
5030: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 68 61 31 5f  \&...TP.\fBsha1_
5040: 68 61 73 68 5c 66 52 20 5c 66 49 68 61 73 68 5c  hash\fR \fIhash\
5050: 66 52 0a 54 68 65 20 53 48 41 31 20 68 61 73 68  fR.The SHA1 hash
5060: 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63   of the certific
5070: 61 74 65 20 61 73 20 61 20 68 65 78 20 73 74 72  ate as a hex str
5080: 69 6e 67 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 68  ing\&...TP.\fBsh
5090: 61 32 35 36 5f 68 61 73 68 5c 66 52 20 5c 66 49  a256_hash\fR \fI
50a0: 68 61 73 68 5c 66 52 0a 54 68 65 20 53 48 41 32  hash\fR.The SHA2
50b0: 35 36 20 68 61 73 68 20 6f 66 20 74 68 65 20 63  56 hash of the c
50c0: 65 72 74 69 66 69 63 61 74 65 20 61 73 20 61 20  ertificate as a 
50d0: 68 65 78 20 73 74 72 69 6e 67 5c 26 2e 0a 2e 52  hex string\&...R
50e0: 45 0a 2e 54 50 0a 5c 66 42 74 6c 73 3a 3a 63 6f  E..TP.\fBtls::co
50f0: 6e 6e 65 63 74 69 6f 6e 5c 66 52 20 5c 66 49 63  nnection\fR \fIc
5100: 68 61 6e 6e 65 6c 5c 66 52 0a 52 65 74 75 72 6e  hannel\fR.Return
5110: 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f  s the current co
5120: 6e 6e 65 63 74 69 6f 6e 20 73 74 61 74 75 73 20  nnection status 
5130: 6f 66 20 61 6e 20 53 53 4c 20 63 68 61 6e 6e 65  of an SSL channe
5140: 6c 5c 26 2e 20 54 68 65 20 72 65 73 75 6c 74 20  l\&. The result 
5150: 69 73 20 61 20 6c 69 73 74 0a 6f 66 20 6b 65 79  is a list.of key
5160: 2d 76 61 6c 75 65 20 70 61 69 72 73 20 64 65 73  -value pairs des
5170: 63 72 69 62 69 6e 67 20 74 68 65 20 63 6f 6e 6e  cribing the conn
5180: 65 63 74 69 6f 6e 5c 26 2e 20 52 65 74 75 72 6e  ection\&. Return
5190: 65 64 20 76 61 6c 75 65 73 20 69 6e 63 6c 75 64  ed values includ
51a0: 65 3a 0a 2e 73 70 0a 53 53 4c 20 53 74 61 74 75  e:..sp.SSL Statu
51b0: 73 0a 2e 52 53 0a 2e 54 50 0a 5c 66 42 73 74 61  s..RS..TP.\fBsta
51c0: 74 65 5c 66 52 20 5c 66 49 73 74 61 74 65 5c 66  te\fR \fIstate\f
51d0: 52 0a 53 74 61 74 65 20 6f 66 20 74 68 65 20 63  R.State of the c
51e0: 6f 6e 6e 65 63 74 69 6f 6e 5c 26 2e 0a 2e 54 50  onnection\&...TP
51f0: 0a 5c 66 42 73 65 72 76 65 72 6e 61 6d 65 5c 66  .\fBservername\f
5200: 52 20 5c 66 49 6e 61 6d 65 5c 66 52 0a 54 68 65  R \fIname\fR.The
5210: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6e   name of the con
5220: 6e 65 63 74 65 64 20 74 6f 20 73 65 72 76 65 72  nected to server
5230: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 70 72 6f 74 6f  \&...TP.\fBproto
5240: 63 6f 6c 5c 66 52 20 5c 66 49 76 65 72 73 69 6f  col\fR \fIversio
5250: 6e 5c 66 52 0a 54 68 65 20 70 72 6f 74 6f 63 6f  n\fR.The protoco
5260: 6c 20 76 65 72 73 69 6f 6e 20 75 73 65 64 20 66  l version used f
5270: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
5280: 6e 3a 20 53 53 4c 32 2c 20 53 53 4c 33 2c 20 54  n: SSL2, SSL3, T
5290: 4c 53 31 2c 20 54 4c 53 31 5c 26 2e 31 2c 20 54  LS1, TLS1\&.1, T
52a0: 4c 53 31 5c 26 2e 32 2c 20 54 4c 53 31 5c 26 2e  LS1\&.2, TLS1\&.
52b0: 33 2c 20 6f 72 20 75 6e 6b 6e 6f 77 6e 5c 26 2e  3, or unknown\&.
52c0: 0a 2e 54 50 0a 5c 66 42 72 65 6e 65 67 6f 74 69  ..TP.\fBrenegoti
52d0: 61 74 69 6f 6e 5f 61 6c 6c 6f 77 65 64 5c 66 52  ation_allowed\fR
52e0: 20 5c 66 49 62 6f 6f 6c 65 61 6e 5c 66 52 0a 57   \fIboolean\fR.W
52f0: 68 65 74 68 65 72 20 70 72 6f 74 6f 63 6f 6c 20  hether protocol 
5300: 72 65 6e 65 67 6f 74 69 61 74 69 6f 6e 20 69 73  renegotiation is
5310: 20 73 75 70 70 6f 72 74 65 64 20 6f 72 20 6e 6f   supported or no
5320: 74 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 65 63 75  t\&...TP.\fBsecu
5330: 72 69 74 79 5f 6c 65 76 65 6c 5c 66 52 20 5c 66  rity_level\fR \f
5340: 49 6c 65 76 65 6c 5c 66 52 0a 54 68 65 20 73 65  Ilevel\fR.The se
5350: 63 75 72 69 74 79 20 6c 65 76 65 6c 20 75 73 65  curity level use
5360: 64 20 66 6f 72 20 73 65 6c 65 63 74 69 6f 6e 20  d for selection 
5370: 6f 66 20 63 69 70 68 65 72 73 2c 20 6b 65 79 20  of ciphers, key 
5380: 73 69 7a 65 2c 20 65 74 63 5c 26 2e 0a 2e 54 50  size, etc\&...TP
5390: 0a 5c 66 42 73 65 73 73 69 6f 6e 5f 72 65 75 73  .\fBsession_reus
53a0: 65 64 5c 66 52 20 5c 66 49 62 6f 6f 6c 65 61 6e  ed\fR \fIboolean
53b0: 5c 66 52 0a 57 68 65 74 68 65 72 20 74 68 65 20  \fR.Whether the 
53c0: 73 65 73 73 69 6f 6e 20 68 61 73 20 62 65 65 6e  session has been
53d0: 20 72 65 75 73 65 64 20 6f 72 20 6e 6f 74 5c 26   reused or not\&
53e0: 2e 0a 2e 54 50 0a 5c 66 42 69 73 5f 73 65 72 76  ...TP.\fBis_serv
53f0: 65 72 5c 66 52 20 5c 66 49 62 6f 6f 6c 65 61 6e  er\fR \fIboolean
5400: 5c 66 52 0a 57 68 65 74 68 65 72 20 74 68 65 20  \fR.Whether the 
5410: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6f  connection is co
5420: 6e 66 69 67 75 72 65 64 20 61 73 20 61 20 73 65  nfigured as a se
5430: 72 76 65 72 20 28 31 29 20 6f 72 20 63 6c 69 65  rver (1) or clie
5440: 6e 74 20 28 30 29 5c 26 2e 0a 2e 54 50 0a 5c 66  nt (0)\&...TP.\f
5450: 42 63 6f 6d 70 72 65 73 73 69 6f 6e 5c 66 52 20  Bcompression\fR 
5460: 5c 66 49 6d 6f 64 65 5c 66 52 0a 43 6f 6d 70 72  \fImode\fR.Compr
5470: 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 5c 26 2e  ession method\&.
5480: 0a 2e 54 50 0a 5c 66 42 65 78 70 61 6e 73 69 6f  ..TP.\fBexpansio
5490: 6e 5c 66 52 20 5c 66 49 6d 6f 64 65 5c 66 52 0a  n\fR \fImode\fR.
54a0: 45 78 70 61 6e 73 69 6f 6e 20 6d 65 74 68 6f 64  Expansion method
54b0: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 63 61 4c 69 73  \&...TP.\fBcaLis
54c0: 74 5c 66 52 20 5c 66 49 6c 69 73 74 5c 66 52 0a  t\fR \fIlist\fR.
54d0: 4c 69 73 74 20 6f 66 20 43 65 72 74 69 66 69 63  List of Certific
54e0: 61 74 65 20 41 75 74 68 6f 72 69 74 69 65 73 20  ate Authorities 
54f0: 28 43 41 29 20 66 6f 72 20 58 5c 26 2e 35 30 39  (CA) for X\&.509
5500: 20 63 65 72 74 69 66 69 63 61 74 65 5c 26 2e 0a   certificate\&..
5510: 2e 52 45 0a 2e 49 50 0a 43 69 70 68 65 72 20 49  .RE..IP.Cipher I
5520: 6e 66 6f 0a 2e 52 53 0a 2e 54 50 0a 5c 66 42 63  nfo..RS..TP.\fBc
5530: 69 70 68 65 72 5c 66 52 20 5c 66 49 63 69 70 68  ipher\fR \fIciph
5540: 65 72 5c 66 52 0a 54 68 65 20 63 75 72 72 65 6e  er\fR.The curren
5550: 74 20 63 69 70 68 65 72 20 69 6e 20 75 73 65 20  t cipher in use 
5560: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
5570: 6f 6e 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 74 61  on\&...TP.\fBsta
5580: 6e 64 61 72 64 5f 6e 61 6d 65 5c 66 52 20 5c 66  ndard_name\fR \f
5590: 49 6e 61 6d 65 5c 66 52 0a 54 68 65 20 73 74 61  Iname\fR.The sta
55a0: 6e 64 61 72 64 20 52 46 43 20 6e 61 6d 65 20 6f  ndard RFC name o
55b0: 66 20 63 69 70 68 65 72 5c 26 2e 0a 2e 54 50 0a  f cipher\&...TP.
55c0: 5c 66 42 61 6c 67 6f 72 69 74 68 6d 5f 62 69 74  \fBalgorithm_bit
55d0: 73 5c 66 52 20 5c 66 49 6e 5c 66 52 0a 54 68 65  s\fR \fIn\fR.The
55e0: 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 63 65   number of proce
55f0: 73 73 65 64 20 62 69 74 73 20 75 73 65 64 20 66  ssed bits used f
5600: 6f 72 20 63 69 70 68 65 72 5c 26 2e 0a 2e 54 50  or cipher\&...TP
5610: 0a 5c 66 42 73 65 63 72 65 74 5f 62 69 74 73 5c  .\fBsecret_bits\
5620: 66 52 20 5c 66 49 6e 5c 66 52 0a 54 68 65 20 6e  fR \fIn\fR.The n
5630: 75 6d 62 65 72 20 6f 66 20 73 65 63 72 65 74 20  umber of secret 
5640: 62 69 74 73 20 75 73 65 64 20 66 6f 72 20 63 69  bits used for ci
5650: 70 68 65 72 5c 26 2e 0a 2e 54 50 0a 5c 66 42 6d  pher\&...TP.\fBm
5660: 69 6e 5f 76 65 72 73 69 6f 6e 5c 66 52 20 5c 66  in_version\fR \f
5670: 49 76 65 72 73 69 6f 6e 5c 66 52 0a 54 68 65 20  Iversion\fR.The 
5680: 6d 69 6e 69 6d 75 6d 20 70 72 6f 74 6f 63 6f 6c  minimum protocol
5690: 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 63 69 70   version for cip
56a0: 68 65 72 5c 26 2e 0a 2e 54 50 0a 5c 66 42 63 69  her\&...TP.\fBci
56b0: 70 68 65 72 5f 69 73 5f 61 65 61 64 5c 66 52 20  pher_is_aead\fR 
56c0: 5c 66 49 62 6f 6f 6c 65 61 6e 5c 66 52 0a 57 68  \fIboolean\fR.Wh
56d0: 65 74 68 65 72 20 74 68 65 20 63 69 70 68 65 72  ether the cipher
56e0: 20 69 73 20 41 75 74 68 65 6e 74 69 63 61 74 65   is Authenticate
56f0: 64 20 45 6e 63 72 79 70 74 69 6f 6e 20 77 69 74  d Encryption wit
5700: 68 20 41 73 73 6f 63 69 61 74 65 64 20 44 61 74  h Associated Dat
5710: 61 20 28 41 45 41 44 29 5c 26 2e 0a 2e 54 50 0a  a (AEAD)\&...TP.
5720: 5c 66 42 63 69 70 68 65 72 5f 69 64 5c 66 52 20  \fBcipher_id\fR 
5730: 5c 66 49 69 64 5c 66 52 0a 54 68 65 20 4f 70 65  \fIid\fR.The Ope
5740: 6e 53 53 4c 20 63 69 70 68 65 72 20 69 64 5c 26  nSSL cipher id\&
5750: 2e 0a 2e 54 50 0a 5c 66 42 64 65 73 63 72 69 70  ...TP.\fBdescrip
5760: 74 69 6f 6e 5c 66 52 20 5c 66 49 73 74 72 69 6e  tion\fR \fIstrin
5770: 67 5c 66 52 0a 41 20 74 65 78 74 20 64 65 73 63  g\fR.A text desc
5780: 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  ription of the c
5790: 69 70 68 65 72 5c 26 2e 0a 2e 54 50 0a 5c 66 42  ipher\&...TP.\fB
57a0: 68 61 6e 64 73 68 61 6b 65 5f 64 69 67 65 73 74  handshake_digest
57b0: 5c 66 52 20 5c 66 49 62 6f 6f 6c 65 61 6e 5c 66  \fR \fIboolean\f
57c0: 52 0a 44 69 67 65 73 74 20 75 73 65 64 20 64 75  R.Digest used du
57d0: 72 69 6e 67 20 68 61 6e 64 73 68 61 6b 65 5c 26  ring handshake\&
57e0: 2e 0a 2e 52 45 0a 2e 49 50 0a 53 65 73 73 69 6f  ...RE..IP.Sessio
57f0: 6e 20 49 6e 66 6f 0a 2e 52 53 0a 2e 54 50 0a 5c  n Info..RS..TP.\
5800: 66 42 61 6c 70 6e 5c 66 52 20 5c 66 49 70 72 6f  fBalpn\fR \fIpro
5810: 74 6f 63 6f 6c 5c 66 52 0a 54 68 65 20 70 72 6f  tocol\fR.The pro
5820: 74 6f 63 6f 6c 20 73 65 6c 65 63 74 65 64 20 61  tocol selected a
5830: 66 74 65 72 20 41 70 70 6c 69 63 61 74 69 6f 6e  fter Application
5840: 2d 4c 61 79 65 72 20 50 72 6f 74 6f 63 6f 6c 20  -Layer Protocol 
5850: 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c 50  Negotiation (ALP
5860: 4e 29 5c 26 2e 0a 2e 54 50 0a 5c 66 42 72 65 73  N)\&...TP.\fBres
5870: 75 6d 61 62 6c 65 5c 66 52 20 5c 66 49 62 6f 6f  umable\fR \fIboo
5880: 6c 65 61 6e 5c 66 52 0a 57 68 65 74 68 65 72 20  lean\fR.Whether 
5890: 74 68 65 20 73 65 73 73 69 6f 6e 20 63 61 6e 20  the session can 
58a0: 62 65 20 72 65 73 75 6d 65 64 20 6f 72 20 6e 6f  be resumed or no
58b0: 74 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 74 61 72  t\&...TP.\fBstar
58c0: 74 5f 74 69 6d 65 5c 66 52 20 5c 66 49 73 65 63  t_time\fR \fIsec
58d0: 6f 6e 64 73 5c 66 52 0a 54 69 6d 65 20 73 69 6e  onds\fR.Time sin
58e0: 63 65 20 73 65 73 73 69 6f 6e 20 73 74 61 72 74  ce session start
58f0: 65 64 20 69 6e 20 73 65 63 6f 6e 64 73 20 73 69  ed in seconds si
5900: 6e 63 65 20 65 70 6f 63 68 5c 26 2e 0a 2e 54 50  nce epoch\&...TP
5910: 0a 5c 66 42 74 69 6d 65 6f 75 74 5c 66 52 20 5c  .\fBtimeout\fR \
5920: 66 49 73 65 63 6f 6e 64 73 5c 66 52 0a 4d 61 78  fIseconds\fR.Max
5930: 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 73 65 73   duration of ses
5940: 73 69 6f 6e 20 69 6e 20 73 65 63 6f 6e 64 73 20  sion in seconds 
5950: 62 65 66 6f 72 65 20 74 69 6d 65 2d 6f 75 74 5c  before time-out\
5960: 26 2e 0a 2e 54 50 0a 5c 66 42 6c 69 66 65 74 69  &...TP.\fBlifeti
5970: 6d 65 5c 66 52 20 5c 66 49 73 65 63 6f 6e 64 73  me\fR \fIseconds
5980: 5c 66 52 0a 53 65 73 73 69 6f 6e 20 74 69 63 6b  \fR.Session tick
5990: 65 74 20 6c 69 66 65 74 69 6d 65 20 68 69 6e 74  et lifetime hint
59a0: 20 69 6e 20 73 65 63 6f 6e 64 73 5c 26 2e 0a 2e   in seconds\&...
59b0: 54 50 0a 5c 66 42 73 65 73 73 69 6f 6e 5f 69 64  TP.\fBsession_id
59c0: 5c 66 52 20 5c 66 49 62 69 6e 61 72 79 5f 73 74  \fR \fIbinary_st
59d0: 72 69 6e 67 5c 66 52 0a 55 6e 69 71 75 65 20 73  ring\fR.Unique s
59e0: 65 73 73 69 6f 6e 20 69 64 20 66 6f 72 20 75 73  ession id for us
59f0: 65 20 69 6e 20 72 65 73 75 6d 69 6e 67 20 74 68  e in resuming th
5a00: 65 20 73 65 73 73 69 6f 6e 5c 26 2e 0a 2e 54 50  e session\&...TP
5a10: 0a 5c 66 42 73 65 73 73 69 6f 6e 5f 74 69 63 6b  .\fBsession_tick
5a20: 65 74 5c 66 52 20 5c 66 49 62 69 6e 61 72 79 5f  et\fR \fIbinary_
5a30: 73 74 72 69 6e 67 5c 66 52 0a 55 6e 69 71 75 65  string\fR.Unique
5a40: 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20   session ticket 
5a50: 66 6f 72 20 75 73 65 20 69 6e 20 72 65 73 75 6d  for use in resum
5a60: 69 6e 67 20 74 68 65 20 73 65 73 73 69 6f 6e 5c  ing the session\
5a70: 26 2e 0a 2e 54 50 0a 5c 66 42 74 69 63 6b 65 74  &...TP.\fBticket
5a80: 5f 61 70 70 5f 64 61 74 61 5c 66 52 20 5c 66 49  _app_data\fR \fI
5a90: 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 5c 66 52  binary_string\fR
5aa0: 0a 55 6e 69 71 75 65 20 73 65 73 73 69 6f 6e 20  .Unique session 
5ab0: 74 69 63 6b 65 74 20 61 70 70 6c 69 63 61 74 69  ticket applicati
5ac0: 6f 6e 20 64 61 74 61 5c 26 2e 0a 2e 54 50 0a 5c  on data\&...TP.\
5ad0: 66 42 6d 61 73 74 65 72 5f 6b 65 79 5c 66 52 20  fBmaster_key\fR 
5ae0: 5c 66 49 62 69 6e 61 72 79 5f 73 74 72 69 6e 67  \fIbinary_string
5af0: 5c 66 52 0a 55 6e 69 71 75 65 20 73 65 73 73 69  \fR.Unique sessi
5b00: 6f 6e 20 6d 61 73 74 65 72 20 6b 65 79 5c 26 2e  on master key\&.
5b10: 0a 2e 54 50 0a 5c 66 42 73 65 73 73 69 6f 6e 5f  ..TP.\fBsession_
5b20: 63 61 63 68 65 5f 6d 6f 64 65 5c 66 52 20 5c 66  cache_mode\fR \f
5b30: 49 6d 6f 64 65 5c 66 52 0a 53 65 72 76 65 72 20  Imode\fR.Server 
5b40: 63 61 63 68 65 20 6d 6f 64 65 20 28 63 6c 69 65  cache mode (clie
5b50: 6e 74 2c 20 73 65 72 76 65 72 2c 20 6f 72 20 62  nt, server, or b
5b60: 6f 74 68 29 5c 26 2e 0a 2e 52 45 0a 2e 54 50 0a  oth)\&...RE..TP.
5b70: 5c 66 42 74 6c 73 3a 3a 63 69 70 68 65 72 73 5c  \fBtls::ciphers\
5b80: 66 52 20 3f 5c 66 49 70 72 6f 74 6f 63 6f 6c 5c  fR ?\fIprotocol\
5b90: 66 52 3f 20 3f 5c 66 49 76 65 72 62 6f 73 65 5c  fR? ?\fIverbose\
5ba0: 66 52 3f 20 3f 5c 66 49 73 75 70 70 6f 72 74 65  fR? ?\fIsupporte
5bb0: 64 5c 66 52 3f 0a 57 69 74 68 6f 75 74 20 61 6e  d\fR?.Without an
5bc0: 79 20 61 72 67 73 2c 20 72 65 74 75 72 6e 73 20  y args, returns 
5bd0: 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 73 79  a list of all sy
5be0: 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 73 20  mmetric ciphers 
5bf0: 66 6f 72 20 75 73 65 20 77 69 74 68 20 74 68 65  for use with the
5c00: 0a 5c 66 49 2d 63 69 70 68 65 72 5c 66 52 20 6f  .\fI-cipher\fR o
5c10: 70 74 69 6f 6e 5c 26 2e 20 57 69 74 68 20 5c 66  ption\&. With \f
5c20: 49 70 72 6f 74 6f 63 6f 6c 5c 66 52 2c 20 6f 6e  Iprotocol\fR, on
5c30: 6c 79 20 74 68 65 20 63 69 70 68 65 72 73 20 73  ly the ciphers s
5c40: 75 70 70 6f 72 74 65 64 20 66 6f 72 20 74 68 61  upported for tha
5c50: 74 0a 70 72 6f 74 6f 63 6f 6c 20 61 72 65 20 72  t.protocol are r
5c60: 65 74 75 72 6e 65 64 5c 26 2e 20 53 65 65 20 74  eturned\&. See t
5c70: 68 65 20 5c 66 42 74 6c 73 3a 3a 70 72 6f 74 6f  he \fBtls::proto
5c80: 63 6f 6c 73 5c 66 52 20 63 6f 6d 6d 61 6e 64 20  cols\fR command 
5c90: 66 6f 72 20 74 68 65 20 73 75 70 70 6f 72 74 65  for the supporte
5ca0: 64 0a 70 72 6f 74 6f 63 6f 6c 73 5c 26 2e 20 49  d.protocols\&. I
5cb0: 66 20 5c 66 49 76 65 72 62 6f 73 65 5c 66 52 20  f \fIverbose\fR 
5cc0: 69 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  is specified as 
5cd0: 74 72 75 65 20 74 68 65 6e 20 61 20 76 65 72 62  true then a verb
5ce0: 6f 73 65 2c 20 68 75 6d 61 6e 20 72 65 61 64 61  ose, human reada
5cf0: 62 6c 65 0a 6c 69 73 74 20 69 73 20 72 65 74 75  ble.list is retu
5d00: 72 6e 65 64 20 77 69 74 68 20 61 64 64 69 74 69  rned with additi
5d10: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
5d20: 20 6f 6e 20 74 68 65 20 63 69 70 68 65 72 5c 26   on the cipher\&
5d30: 2e 20 49 66 20 5c 66 49 73 75 70 70 6f 72 74 65  . If \fIsupporte
5d40: 64 5c 66 52 0a 69 73 20 73 70 65 63 69 66 69 65  d\fR.is specifie
5d50: 64 20 61 73 20 74 72 75 65 2c 20 74 68 65 6e 20  d as true, then 
5d60: 6f 6e 6c 79 20 74 68 65 20 63 69 70 68 65 72 73  only the ciphers
5d70: 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 70   supported for p
5d80: 72 6f 74 6f 63 6f 6c 20 77 69 6c 6c 20 62 65 20  rotocol will be 
5d90: 6c 69 73 74 65 64 5c 26 2e 0a 2e 54 50 0a 5c 66  listed\&...TP.\f
5da0: 42 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 5c  Btls::protocols\
5db0: 66 52 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 73  fR.Returns a lis
5dc0: 74 20 6f 66 20 74 68 65 20 73 75 70 70 6f 72 74  t of the support
5dd0: 65 64 20 53 53 4c 2f 54 4c 53 20 70 72 6f 74 6f  ed SSL/TLS proto
5de0: 63 6f 6c 73 5c 26 2e 20 56 61 6c 69 64 20 76 61  cols\&. Valid va
5df0: 6c 75 65 73 20 61 72 65 3a 0a 5c 66 42 73 73 6c  lues are:.\fBssl
5e00: 32 5c 66 52 2c 20 5c 66 42 73 73 6c 33 5c 66 52  2\fR, \fBssl3\fR
5e10: 2c 20 5c 66 42 74 6c 73 31 5c 66 52 2c 20 5c 66  , \fBtls1\fR, \f
5e20: 42 74 6c 73 31 5c 26 2e 31 5c 66 52 2c 20 5c 66  Btls1\&.1\fR, \f
5e30: 42 74 6c 73 31 5c 26 2e 32 5c 66 52 2c 20 61 6e  Btls1\&.2\fR, an
5e40: 64 0a 5c 66 42 74 6c 73 31 5c 26 2e 33 5c 66 52  d.\fBtls1\&.3\fR
5e50: 5c 26 2e 20 45 78 61 63 74 20 6c 69 73 74 20 64  \&. Exact list d
5e60: 65 70 65 6e 64 73 20 6f 6e 20 4f 70 65 6e 53 53  epends on OpenSS
5e70: 4c 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 63 6f  L version and co
5e80: 6d 70 69 6c 65 20 74 69 6d 65 20 66 6c 61 67 73  mpile time flags
5e90: 5c 26 2e 0a 2e 54 50 0a 5c 66 42 74 6c 73 3a 3a  \&...TP.\fBtls::
5ea0: 76 65 72 73 69 6f 6e 5c 66 52 0a 52 65 74 75 72  version\fR.Retur
5eb0: 6e 73 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 76  ns the OpenSSL v
5ec0: 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 5c 26 2e  ersion string\&.
5ed0: 0a 2e 50 50 0a 2e 53 48 20 22 43 45 52 54 49 46  ..PP..SH "CERTIF
5ee0: 49 43 41 54 45 20 56 41 4c 49 44 41 54 49 4f 4e  ICATE VALIDATION
5ef0: 22 0a 2e 53 53 20 22 53 55 4d 4d 41 52 59 20 4f  "..SS "SUMMARY O
5f00: 46 20 43 4f 4d 4d 41 4e 44 20 4c 49 4e 45 20 4f  F COMMAND LINE O
5f10: 50 54 49 4f 4e 53 22 0a 54 68 65 20 66 6f 6c 6c  PTIONS".The foll
5f20: 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 61 72  owing options ar
5f30: 65 20 75 73 65 64 20 66 6f 72 20 70 65 65 72 20  e used for peer 
5f40: 43 65 72 74 69 66 69 63 61 74 65 20 56 61 6c 69  Certificate Vali
5f50: 64 61 74 69 6f 6e 3a 0a 2e 54 50 0a 5c 66 42 2d  dation:..TP.\fB-
5f60: 63 61 64 69 72 5c 66 52 20 5c 66 49 64 69 72 65  cadir\fR \fIdire
5f70: 63 74 6f 72 79 5c 66 52 0a 53 70 65 63 69 66 69  ctory\fR.Specifi
5f80: 65 73 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  es the directory
5f90: 20 77 68 65 72 65 20 74 68 65 20 43 65 72 74 69   where the Certi
5fa0: 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74 79  ficate Authority
5fb0: 20 28 43 41 29 20 63 65 72 74 69 66 69 63 61 74   (CA) certificat
5fc0: 65 73 20 61 72 65 0a 73 74 6f 72 65 64 5c 26 2e  es are.stored\&.
5fd0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20   The default is 
5fe0: 70 6c 61 74 66 6f 72 6d 20 73 70 65 63 69 66 69  platform specifi
5ff0: 63 2c 20 62 75 74 20 69 73 20 75 73 75 61 6c 6c  c, but is usuall
6000: 79 20 22 5c 66 49 2f 65 74 63 2f 73 73 6c 2f 63  y "\fI/etc/ssl/c
6010: 65 72 74 73 5c 66 52 22 20 6f 6e 0a 4c 69 6e 75  erts\fR" on.Linu
6020: 78 2f 55 6e 69 78 20 73 79 73 74 65 6d 73 5c 26  x/Unix systems\&
6030: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 6c 6f  . The default lo
6040: 63 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 6f 76  cation can be ov
6050: 65 72 72 69 64 64 65 6e 20 62 79 20 74 68 65 0a  erridden by the.
6060: 5c 66 42 53 53 4c 5f 43 45 52 54 5f 44 49 52 5c  \fBSSL_CERT_DIR\
6070: 66 52 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  fR environment v
6080: 61 72 69 61 62 6c 65 5c 26 2e 0a 2e 54 50 0a 5c  ariable\&...TP.\
6090: 66 42 2d 63 61 66 69 6c 65 5c 66 52 20 5c 66 49  fB-cafile\fR \fI
60a0: 66 69 6c 65 6e 61 6d 65 5c 66 52 0a 53 70 65 63  filename\fR.Spec
60b0: 69 66 69 65 73 20 74 68 65 20 66 69 6c 65 20 77  ifies the file w
60c0: 69 74 68 20 74 68 65 20 43 65 72 74 69 66 69 63  ith the Certific
60d0: 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28 43  ate Authority (C
60e0: 41 29 20 63 65 72 74 69 66 69 63 61 74 65 73 20  A) certificates 
60f0: 74 6f 20 75 73 65 20 69 6e 0a 5c 66 42 50 45 4d  to use in.\fBPEM
6100: 5c 66 52 20 66 69 6c 65 20 66 6f 72 6d 61 74 5c  \fR file format\
6110: 26 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69  &. The default i
6120: 73 20 22 5c 66 49 63 65 72 74 5c 26 2e 70 65 6d  s "\fIcert\&.pem
6130: 5c 66 52 22 2c 20 69 6e 20 74 68 65 20 4f 70 65  \fR", in the Ope
6140: 6e 53 53 4c 20 64 69 72 65 63 74 6f 72 79 5c 26  nSSL directory\&
6150: 2e 20 4f 6e 0a 4c 69 6e 75 78 2f 55 6e 69 78 20  . On.Linux/Unix 
6160: 73 79 73 74 65 6d 73 2c 20 74 68 69 73 20 69 73  systems, this is
6170: 20 75 73 75 61 6c 6c 79 20 22 5c 66 49 2f 65 74   usually "\fI/et
6180: 63 2f 73 73 6c 2f 63 61 2d 62 75 6e 64 6c 65 5c  c/ssl/ca-bundle\
6190: 26 2e 70 65 6d 5c 66 52 22 5c 26 2e 20 54 68 65  &.pem\fR"\&. The
61a0: 20 64 65 66 61 75 6c 74 20 66 69 6c 65 0a 63 61   default file.ca
61b0: 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20  n be overridden 
61c0: 62 79 20 74 68 65 20 5c 66 42 53 53 4c 5f 43 45  by the \fBSSL_CE
61d0: 52 54 5f 46 49 4c 45 5c 66 52 20 65 6e 76 69 72  RT_FILE\fR envir
61e0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 5c  onment variable\
61f0: 26 2e 0a 2e 54 50 0a 5c 66 42 2d 63 61 73 74 6f  &...TP.\fB-casto
6200: 72 65 5c 66 52 20 5c 66 49 55 52 49 5c 66 52 0a  re\fR \fIURI\fR.
6210: 53 70 65 63 69 66 69 65 73 20 74 68 65 20 55 6e  Specifies the Un
6220: 69 66 6f 72 6d 20 52 65 73 6f 75 72 63 65 20 49  iform Resource I
6230: 64 65 6e 74 69 66 69 65 72 20 28 55 52 49 29 20  dentifier (URI) 
6240: 66 6f 72 20 74 68 65 20 43 65 72 74 69 66 69 63  for the Certific
6250: 61 74 65 20 41 75 74 68 6f 72 69 74 79 0a 28 43  ate Authority.(C
6260: 41 29 20 73 74 6f 72 65 2c 20 77 68 69 63 68 20  A) store, which 
6270: 6d 61 79 20 62 65 20 61 20 73 69 6e 67 6c 65 20  may be a single 
6280: 63 6f 6e 74 61 69 6e 65 72 20 6f 72 20 61 20 63  container or a c
6290: 61 74 61 6c 6f 67 20 6f 66 20 63 6f 6e 74 61 69  atalog of contai
62a0: 6e 65 72 73 5c 26 2e 0a 53 74 61 72 74 69 6e 67  ners\&..Starting
62b0: 20 77 69 74 68 20 4f 70 65 6e 53 53 4c 20 33 5c   with OpenSSL 3\
62c0: 26 2e 32 20 6f 6e 20 57 69 6e 64 6f 77 73 2c 20  &.2 on Windows, 
62d0: 73 65 74 20 74 6f 20 22 5c 66 42 6f 72 67 5c 26  set to "\fBorg\&
62e0: 2e 6f 70 65 6e 73 73 6c 5c 26 2e 77 69 6e 73 74  .openssl\&.winst
62f0: 6f 72 65 3a 2f 2f 5c 66 52 22 0a 74 6f 20 75 73  ore://\fR".to us
6300: 65 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 57  e the built-in W
6310: 69 6e 64 6f 77 73 20 43 65 72 74 69 66 69 63 61  indows Certifica
6320: 74 65 20 53 74 6f 72 65 5c 26 2e 20 54 68 69 73  te Store\&. This
6330: 20 73 74 6f 72 65 20 6f 6e 6c 79 20 73 75 70 70   store only supp
6340: 6f 72 74 73 20 72 6f 6f 74 0a 63 65 72 74 69 66  orts root.certif
6350: 69 63 61 74 65 20 73 74 6f 72 65 73 5c 26 2e 0a  icate stores\&..
6360: 2e 54 50 0a 5c 66 42 2d 72 65 71 75 65 73 74 5c  .TP.\fB-request\
6370: 66 52 20 5c 66 49 62 6f 6f 6c 5c 66 52 0a 52 65  fR \fIbool\fR.Re
6380: 71 75 65 73 74 20 61 20 63 65 72 74 69 66 69 63  quest a certific
6390: 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64 75  ate from peer du
63a0: 72 69 6e 67 20 74 68 65 20 53 53 4c 20 68 61 6e  ring the SSL han
63b0: 64 73 68 61 6b 65 5c 26 2e 20 54 68 69 73 20 69  dshake\&. This i
63c0: 73 20 6e 65 65 64 65 64 20 74 6f 20 64 6f 0a 43  s needed to do.C
63d0: 65 72 74 69 66 69 63 61 74 65 20 56 61 6c 69 64  ertificate Valid
63e0: 61 74 69 6f 6e 5c 26 2e 20 44 65 66 61 75 6c 74  ation\&. Default
63f0: 20 69 73 20 5c 66 42 74 72 75 65 5c 66 52 5c 26   is \fBtrue\fR\&
6400: 2e 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 74  . In addition, t
6410: 68 65 0a 63 6c 69 65 6e 74 20 63 61 6e 20 6d 61  he.client can ma
6420: 6e 75 61 6c 6c 79 20 69 6e 73 70 65 63 74 20 61  nually inspect a
6430: 6e 64 20 61 63 63 65 70 74 20 6f 72 20 72 65 6a  nd accept or rej
6440: 65 63 74 20 65 61 63 68 20 63 65 72 74 69 66 69  ect each certifi
6450: 63 61 74 65 20 75 73 69 6e 67 20 74 68 65 0a 5c  cate using the.\
6460: 66 49 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61  fI-validatecomma
6470: 6e 64 5c 66 52 20 6f 70 74 69 6f 6e 5c 26 2e 0a  nd\fR option\&..
6480: 2e 54 50 0a 5c 66 42 2d 72 65 71 75 69 72 65 5c  .TP.\fB-require\
6490: 66 52 20 5c 66 49 62 6f 6f 6c 5c 66 52 0a 52 65  fR \fIbool\fR.Re
64a0: 71 75 69 72 65 20 61 20 76 61 6c 69 64 20 63 65  quire a valid ce
64b0: 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 70  rtificate from p
64c0: 65 65 72 20 64 75 72 69 6e 67 20 74 68 65 20 53  eer during the S
64d0: 53 4c 20 68 61 6e 64 73 68 61 6b 65 5c 26 2e 20  SL handshake\&. 
64e0: 49 66 20 74 68 69 73 20 69 73 20 73 65 74 0a 74  If this is set.t
64f0: 6f 20 5c 66 42 74 72 75 65 5c 66 52 2c 20 74 68  o \fBtrue\fR, th
6500: 65 6e 20 5c 66 49 2d 72 65 71 75 65 73 74 5c 66  en \fI-request\f
6510: 52 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 73  R must also be s
6520: 65 74 20 74 6f 20 5c 66 42 74 72 75 65 5c 66 52  et to \fBtrue\fR
6530: 20 61 6e 64 20 65 69 74 68 65 72 0a 5c 66 49 2d   and either.\fI-
6540: 63 61 64 69 72 5c 66 52 2c 20 5c 66 49 2d 63 61  cadir\fR, \fI-ca
6550: 66 69 6c 65 5c 66 52 2c 20 5c 66 49 2d 63 61 73  file\fR, \fI-cas
6560: 74 6f 72 65 5c 66 52 2c 20 6f 72 20 61 20 70 6c  tore\fR, or a pl
6570: 61 74 66 6f 72 6d 20 64 65 66 61 75 6c 74 20 6d  atform default m
6580: 75 73 74 20 62 65 0a 70 72 6f 76 69 64 65 64 20  ust be.provided 
6590: 69 6e 20 6f 72 64 65 72 20 74 6f 20 76 61 6c 69  in order to vali
65a0: 64 61 74 65 20 61 67 61 69 6e 73 74 5c 26 2e 20  date against\&. 
65b0: 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 5c  The default is \
65c0: 66 42 66 61 6c 73 65 5c 66 52 20 73 69 6e 63 65  fBfalse\fR since
65d0: 20 6e 6f 74 0a 61 6c 6c 20 70 6c 61 74 66 6f 72   not.all platfor
65e0: 6d 73 20 68 61 76 65 20 63 65 72 74 69 66 69 63  ms have certific
65f0: 61 74 65 73 20 74 6f 20 76 61 6c 69 64 61 74 65  ates to validate
6600: 20 61 67 61 69 6e 73 74 20 69 6e 20 61 20 66 6f   against in a fo
6610: 72 6d 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69  rm compatible wi
6620: 74 68 0a 4f 70 65 6e 53 53 4c 5c 26 2e 20 53 65  th.OpenSSL\&. Se
6630: 65 20 5c 66 42 43 65 72 74 69 66 69 63 61 74 65  e \fBCertificate
6640: 20 56 61 6c 69 64 61 74 69 6f 6e 5c 66 52 20 66   Validation\fR f
6650: 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 5c  or more details\
6660: 26 2e 0a 2e 50 50 0a 2e 53 53 20 22 57 48 45 4e  &...PP..SS "WHEN
6670: 20 41 52 45 20 43 4f 4d 4d 41 4e 44 20 4c 49 4e   ARE COMMAND LIN
6680: 45 20 4f 50 54 49 4f 4e 53 20 4e 45 45 44 45 44  E OPTIONS NEEDED
6690: 3f 22 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 61  ?".By default, a
66a0: 20 63 6c 69 65 6e 74 20 54 4c 53 20 63 6f 6e 6e   client TLS conn
66b0: 65 63 74 69 6f 6e 20 64 6f 65 73 20 5c 66 49 4e  ection does \fIN
66c0: 4f 54 5c 66 52 20 76 61 6c 69 64 61 74 65 20 74  OT\fR validate t
66d0: 68 65 20 73 65 72 76 65 72 20 63 65 72 74 69 66  he server certif
66e0: 69 63 61 74 65 0a 63 68 61 69 6e 5c 26 2e 20 54  icate.chain\&. T
66f0: 68 69 73 20 6c 69 6d 69 74 61 74 69 6f 6e 20 69  his limitation i
6700: 73 20 64 75 65 20 74 6f 20 74 68 65 20 6c 61 63  s due to the lac
6710: 6b 20 6f 66 20 61 20 63 6f 6d 6d 6f 6e 20 63 72  k of a common cr
6720: 6f 73 73 20 70 6c 61 74 66 6f 72 6d 0a 64 61 74  oss platform.dat
6730: 61 62 61 73 65 20 6f 66 20 43 65 72 74 69 66 69  abase of Certifi
6740: 63 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28  cate Authority (
6750: 43 41 29 20 70 72 6f 76 69 64 65 64 20 63 65 72  CA) provided cer
6760: 74 69 66 69 63 61 74 65 73 20 74 6f 20 76 61 6c  tificates to val
6770: 69 64 61 74 65 0a 61 67 61 69 6e 73 74 5c 26 2e  idate.against\&.
6780: 20 4d 61 6e 79 20 4c 69 6e 75 78 20 73 79 73 74   Many Linux syst
6790: 65 6d 73 20 6e 61 74 69 76 65 6c 79 20 73 75 70  ems natively sup
67a0: 70 6f 72 74 20 4f 70 65 6e 53 53 4c 20 61 6e 64  port OpenSSL and
67b0: 20 74 68 75 73 20 68 61 76 65 20 74 68 65 73 65   thus have these
67c0: 0a 63 65 72 74 69 66 69 63 61 74 65 73 20 69 6e  .certificates in
67d0: 73 74 61 6c 6c 65 64 20 61 73 20 70 61 72 74 20  stalled as part 
67e0: 6f 66 20 74 68 65 20 4f 53 2c 20 62 75 74 20 4d  of the OS, but M
67f0: 61 63 4f 53 20 61 6e 64 20 57 69 6e 64 6f 77 73  acOS and Windows
6800: 20 64 6f 20 6e 6f 74 5c 26 2e 20 49 6e 0a 6f 72   do not\&. In.or
6810: 64 65 72 20 74 6f 20 75 73 65 20 74 68 65 20 5c  der to use the \
6820: 66 42 2d 72 65 71 75 69 72 65 5c 66 52 20 6f 70  fB-require\fR op
6830: 74 69 6f 6e 2c 20 6f 6e 65 20 6f 66 20 74 68 65  tion, one of the
6840: 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 75 73 74 20   following must 
6850: 62 65 20 74 72 75 65 3a 0a 2e 49 50 20 5c 28 62  be true:..IP \(b
6860: 75 0a 4f 6e 20 4c 69 6e 75 78 20 61 6e 64 20 55  u.On Linux and U
6870: 6e 69 78 20 73 79 73 74 65 6d 73 20 77 69 74 68  nix systems with
6880: 20 4f 70 65 6e 53 53 4c 20 61 6c 72 65 61 64 79   OpenSSL already
6890: 20 69 6e 73 74 61 6c 6c 65 64 2c 20 69 66 20 74   installed, if t
68a0: 68 65 20 43 41 0a 63 65 72 74 69 66 69 63 61 74  he CA.certificat
68b0: 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  es are stored in
68c0: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 6f   the standard lo
68d0: 63 61 74 69 6f 6e 73 2c 20 6f 72 20 69 66 20 74  cations, or if t
68e0: 68 65 20 5c 66 42 53 53 4c 5f 43 45 52 54 5f 44  he \fBSSL_CERT_D
68f0: 49 52 5c 66 52 0a 6f 72 20 5c 66 42 53 53 4c 5f  IR\fR.or \fBSSL_
6900: 43 45 52 54 5f 46 49 4c 45 5c 66 52 20 65 6e 76  CERT_FILE\fR env
6910: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
6920: 65 73 20 61 72 65 20 73 65 74 2c 20 74 68 65 6e  es are set, then
6930: 20 5c 66 42 2d 63 61 64 69 72 5c 66 52 2c 0a 5c   \fB-cadir\fR,.\
6940: 66 42 2d 63 61 64 69 72 5c 66 52 2c 20 61 6e 64  fB-cadir\fR, and
6950: 20 5c 66 42 2d 63 61 73 74 6f 72 65 5c 66 52 20   \fB-castore\fR 
6960: 61 72 65 6e 27 74 20 6e 65 65 64 65 64 5c 26 2e  aren't needed\&.
6970: 0a 2e 49 50 20 5c 28 62 75 0a 49 66 20 4f 70 65  ..IP \(bu.If Ope
6980: 6e 53 53 4c 20 69 73 20 6e 6f 74 20 69 6e 73 74  nSSL is not inst
6990: 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 64 65 66  alled in the def
69a0: 61 75 6c 74 20 6c 6f 63 61 74 69 6f 6e 2c 20 6f  ault location, o
69b0: 72 20 77 68 65 6e 20 75 73 69 6e 67 20 4d 61 63  r when using Mac
69c0: 20 4f 53 0a 6f 72 20 57 69 6e 64 6f 77 73 20 61   OS.or Windows a
69d0: 6e 64 20 4f 70 65 6e 53 53 4c 20 69 73 20 69 6e  nd OpenSSL is in
69e0: 73 74 61 6c 6c 65 64 2c 20 74 68 65 20 5c 66 42  stalled, the \fB
69f0: 53 53 4c 5f 43 45 52 54 5f 44 49 52 5c 66 52 20  SSL_CERT_DIR\fR 
6a00: 61 6e 64 2f 6f 72 0a 5c 66 42 53 53 4c 5f 43 45  and/or.\fBSSL_CE
6a10: 52 54 5f 46 49 4c 45 5c 66 52 20 65 6e 76 69 72  RT_FILE\fR envir
6a20: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
6a30: 20 6f 72 20 74 68 65 20 6f 6e 65 20 6f 66 20 74   or the one of t
6a40: 68 65 20 5c 66 42 2d 63 61 64 69 72 5c 66 52 2c  he \fB-cadir\fR,
6a50: 0a 5c 66 42 2d 63 61 64 69 72 5c 66 52 2c 20 6f  .\fB-cadir\fR, o
6a60: 72 20 5c 66 42 2d 63 61 73 74 6f 72 65 5c 66 52  r \fB-castore\fR
6a70: 20 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 62 65   options must be
6a80: 20 64 65 66 69 6e 65 64 5c 26 2e 0a 2e 49 50 20   defined\&...IP 
6a90: 5c 28 62 75 0a 4f 6e 20 57 69 6e 64 6f 77 73 2c  \(bu.On Windows,
6aa0: 20 73 74 61 72 74 69 6e 67 20 69 6e 20 4f 70 65   starting in Ope
6ab0: 6e 53 53 4c 20 33 5c 26 2e 32 2c 20 69 74 20 69  nSSL 3\&.2, it i
6ac0: 73 20 6e 6f 77 20 70 6f 73 73 69 62 6c 65 20 74  s now possible t
6ad0: 6f 20 61 63 63 65 73 73 20 74 68 65 0a 62 75 69  o access the.bui
6ae0: 6c 74 2d 69 6e 20 57 69 6e 64 6f 77 73 20 43 65  lt-in Windows Ce
6af0: 72 74 69 66 69 63 61 74 65 20 53 74 6f 72 65 20  rtificate Store 
6b00: 66 72 6f 6d 20 4f 70 65 6e 53 53 4c 5c 26 2e 20  from OpenSSL\&. 
6b10: 54 68 69 73 20 63 61 6e 20 62 65 20 61 63 68 69  This can be achi
6b20: 65 76 65 64 20 62 79 0a 73 65 74 74 69 6e 67 20  eved by.setting 
6b30: 74 68 65 20 5c 66 42 2d 63 61 73 74 6f 72 65 5c  the \fB-castore\
6b40: 66 52 20 6f 70 74 69 6f 6e 20 74 6f 20 22 5c 66  fR option to "\f
6b50: 42 6f 72 67 5c 26 2e 6f 70 65 6e 73 73 6c 5c 26  Borg\&.openssl\&
6b60: 2e 77 69 6e 73 74 6f 72 65 3a 2f 2f 5c 66 52 22  .winstore://\fR"
6b70: 5c 26 2e 0a 2e 49 50 20 5c 28 62 75 0a 49 66 20  \&...IP \(bu.If 
6b80: 4f 70 65 6e 53 53 4c 20 69 73 20 6e 6f 74 20 69  OpenSSL is not i
6b90: 6e 73 74 61 6c 6c 65 64 2c 20 74 68 65 20 43 41  nstalled, the CA
6ba0: 20 63 65 72 74 69 66 69 63 61 74 65 73 20 6d 75   certificates mu
6bb0: 73 74 20 62 65 20 64 6f 77 6e 6c 6f 61 64 65 64  st be downloaded
6bc0: 20 61 6e 64 0a 69 6e 73 74 61 6c 6c 65 64 20 77   and.installed w
6bd0: 69 74 68 20 74 68 65 20 75 73 65 72 20 73 6f 66  ith the user sof
6be0: 74 77 61 72 65 5c 26 2e 20 54 68 65 20 43 55 52  tware\&. The CUR
6bf0: 4c 20 74 65 61 6d 20 6d 61 6b 65 73 20 74 68 65  L team makes the
6c00: 6d 20 61 76 61 69 6c 61 62 6c 65 20 61 74 0a 5c  m available at.\
6c10: 66 49 43 41 20 63 65 72 74 69 66 69 63 61 74 65  fICA certificate
6c20: 73 20 65 78 74 72 61 63 74 65 64 0a 66 72 6f 6d  s extracted.from
6c30: 20 4d 6f 7a 69 6c 6c 61 5c 66 52 20 5b 68 74 74   Mozilla\fR [htt
6c40: 70 73 3a 2f 2f 63 75 72 6c 5c 26 2e 73 65 2f 64  ps://curl\&.se/d
6c50: 6f 63 73 2f 63 61 65 78 74 72 61 63 74 5c 26 2e  ocs/caextract\&.
6c60: 68 74 6d 6c 5d 20 69 6e 20 74 68 65 20 22 5c 66  html] in the "\f
6c70: 49 63 61 63 65 72 74 5c 26 2e 70 65 6d 5c 66 52  Icacert\&.pem\fR
6c80: 22 20 66 69 6c 65 5c 26 2e 20 59 6f 75 20 6d 75  " file\&. You mu
6c90: 73 74 20 74 68 65 6e 20 65 69 74 68 65 72 20 73  st then either s
6ca0: 65 74 20 74 68 65 0a 5c 66 42 53 53 4c 5f 43 45  et the.\fBSSL_CE
6cb0: 52 54 5f 44 49 52 5c 66 52 20 61 6e 64 2f 6f 72  RT_DIR\fR and/or
6cc0: 20 5c 66 42 53 53 4c 5f 43 45 52 54 5f 46 49 4c   \fBSSL_CERT_FIL
6cd0: 45 5c 66 52 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  E\fR environment
6ce0: 20 76 61 72 69 61 62 6c 65 73 20 6f 72 20 74 68   variables or th
6cf0: 65 0a 5c 66 42 2d 63 61 64 69 72 5c 66 52 20 6f  e.\fB-cadir\fR o
6d00: 72 20 5c 66 42 2d 63 61 66 69 6c 65 5c 66 52 20  r \fB-cafile\fR 
6d10: 6f 70 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 43  options to the C
6d20: 41 20 63 65 72 74 20 66 69 6c 65 27 73 20 69 6e  A cert file's in
6d30: 73 74 61 6c 6c 0a 6c 6f 63 61 74 69 6f 6e 5c 26  stall.location\&
6d40: 2e 20 49 74 20 69 73 20 79 6f 75 72 20 72 65 73  . It is your res
6d50: 70 6f 6e 73 69 62 69 6c 69 74 79 20 74 6f 20 6b  ponsibility to k
6d60: 65 65 70 20 74 68 69 73 20 66 69 6c 65 20 75 70  eep this file up
6d70: 20 74 6f 20 64 61 74 65 5c 26 2e 0a 2e 50 50 0a   to date\&...PP.
6d80: 2e 53 48 20 22 43 41 4c 4c 42 41 43 4b 20 4f 50  .SH "CALLBACK OP
6d90: 54 49 4f 4e 53 22 0a 41 73 20 70 72 65 76 69 6f  TIONS".As previo
6da0: 75 73 6c 79 20 64 65 73 63 72 69 62 65 64 2c 20  usly described, 
6db0: 65 61 63 68 20 63 68 61 6e 6e 65 6c 20 63 61 6e  each channel can
6dc0: 20 62 65 20 67 69 76 65 6e 20 74 68 65 69 72 20   be given their 
6dd0: 6f 77 6e 20 63 61 6c 6c 62 61 63 6b 73 0a 74 6f  own callbacks.to
6de0: 20 68 61 6e 64 6c 65 20 69 6e 74 65 72 6d 65 64   handle intermed
6df0: 69 61 74 65 20 70 72 6f 63 65 73 73 69 6e 67 20  iate processing 
6e00: 62 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 6c  by the OpenSSL l
6e10: 69 62 72 61 72 79 2c 20 75 73 69 6e 67 20 74 68  ibrary, using th
6e20: 65 0a 5c 66 42 2d 63 6f 6d 6d 61 6e 64 5c 66 52  e.\fB-command\fR
6e30: 2c 20 5c 66 42 2d 70 61 73 73 77 6f 72 64 5c 66  , \fB-password\f
6e40: 52 2c 20 61 6e 64 20 5c 66 42 2d 76 61 6c 69 64  R, and \fB-valid
6e50: 61 74 65 5f 63 6f 6d 6d 61 6e 64 5c 66 52 20 6f  ate_command\fR o
6e60: 70 74 69 6f 6e 73 0a 70 61 73 73 65 64 20 74 6f  ptions.passed to
6e70: 20 65 69 74 68 65 72 20 6f 66 20 5c 66 42 74 6c   either of \fBtl
6e80: 73 3a 3a 73 6f 63 6b 65 74 5c 66 52 20 6f 72 20  s::socket\fR or 
6e90: 5c 66 42 74 6c 73 3a 3a 69 6d 70 6f 72 74 5c 66  \fBtls::import\f
6ea0: 52 5c 26 2e 0a 55 6e 6c 69 6b 65 20 70 72 65 76  R\&..Unlike prev
6eb0: 69 6f 75 73 20 76 65 72 73 69 6f 6e 73 20 6f 66  ious versions of
6ec0: 20 54 63 6c 54 4c 53 2c 20 6f 6e 6c 79 20 69 66   TclTLS, only if
6ed0: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 67 65   the callback ge
6ee0: 6e 65 72 61 74 65 73 20 61 6e 20 65 72 72 6f 72  nerates an error
6ef0: 2c 0a 77 69 6c 6c 20 74 68 65 20 5c 66 42 62 67  ,.will the \fBbg
6f00: 65 72 72 6f 72 5c 66 52 20 63 6f 6d 6d 61 6e 64  error\fR command
6f10: 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   be invoked with
6f20: 20 74 68 65 20 65 72 72 6f 72 20 69 6e 66 6f 72   the error infor
6f30: 6d 61 74 69 6f 6e 5c 26 2e 0a 2e 53 53 20 22 56  mation\&...SS "V
6f40: 41 4c 55 45 53 20 46 4f 52 20 43 4f 4d 4d 41 4e  ALUES FOR COMMAN
6f50: 44 20 43 41 4c 4c 42 41 43 4b 22 0a 54 68 65 20  D CALLBACK".The 
6f60: 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 74 68 65  callback for the
6f70: 20 5c 66 42 2d 63 6f 6d 6d 61 6e 64 5c 66 52 20   \fB-command\fR 
6f80: 6f 70 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65  option is invoke
6f90: 64 20 61 74 20 73 65 76 65 72 61 6c 20 70 6f 69  d at several poi
6fa0: 6e 74 73 20 64 75 72 69 6e 67 20 74 68 65 0a 4f  nts during the.O
6fb0: 70 65 6e 53 53 4c 20 68 61 6e 64 73 68 61 6b 65  penSSL handshake
6fc0: 20 61 6e 64 20 64 75 72 69 6e 67 20 72 6f 75 74   and during rout
6fd0: 69 6e 65 20 6f 70 65 72 61 74 69 6f 6e 73 5c 26  ine operations\&
6fe0: 2e 20 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 20  . See below for 
6ff0: 74 68 65 20 70 6f 73 73 69 62 6c 65 0a 61 72 67  the possible.arg
7000: 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f  uments passed to
7010: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 63   the callback sc
7020: 72 69 70 74 5c 26 2e 20 56 61 6c 75 65 73 20 72  ript\&. Values r
7030: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65  eturned from the
7040: 20 63 61 6c 6c 62 61 63 6b 20 61 72 65 0a 69 67   callback are.ig
7050: 6e 6f 72 65 64 5c 26 2e 0a 2e 54 50 0a 5c 66 42  nored\&...TP.\fB
7060: 65 72 72 6f 72 5c 66 52 20 5c 66 49 63 68 61 6e  error\fR \fIchan
7070: 6e 65 6c 49 64 20 6d 65 73 73 61 67 65 5c 66 52  nelId message\fR
7080: 0a 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61  .This form of ca
7090: 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65  llback is invoke
70a0: 64 20 77 68 65 6e 65 76 65 72 20 61 6e 20 65 72  d whenever an er
70b0: 72 6f 72 20 6f 63 63 75 72 73 20 64 75 72 69 6e  ror occurs durin
70c0: 67 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 63 6f  g the initial.co
70d0: 6e 6e 65 63 74 69 6f 6e 2c 20 68 61 6e 64 73 68  nnection, handsh
70e0: 61 6b 65 2c 20 6f 72 20 49 2f 4f 20 6f 70 65 72  ake, or I/O oper
70f0: 61 74 69 6f 6e 73 5c 26 2e 20 54 68 65 20 5c 66  ations\&. The \f
7100: 49 6d 65 73 73 61 67 65 5c 66 52 20 61 72 67 75  Imessage\fR argu
7110: 6d 65 6e 74 20 63 61 6e 20 62 65 0a 66 72 6f 6d  ment can be.from
7120: 20 74 68 65 20 54 63 6c 5f 45 72 72 6e 6f 4d 73   the Tcl_ErrnoMs
7130: 67 2c 20 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74  g, OpenSSL funct
7140: 69 6f 6e 20 5c 66 42 45 52 52 5f 72 65 61 73 6f  ion \fBERR_reaso
7150: 6e 5f 65 72 72 6f 72 5f 73 74 72 69 6e 67 28 29  n_error_string()
7160: 5c 66 52 2c 0a 6f 72 20 61 20 63 75 73 74 6f 6d  \fR,.or a custom
7170: 20 6d 65 73 73 61 67 65 5c 26 2e 20 54 68 69 73   message\&. This
7180: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 65 77   callback is new
7190: 20 66 6f 72 20 54 63 6c 54 4c 53 20 31 5c 26 2e   for TclTLS 1\&.
71a0: 38 5c 26 2e 0a 2e 54 50 0a 5c 66 42 69 6e 66 6f  8\&...TP.\fBinfo
71b0: 5c 66 52 20 5c 66 49 63 68 61 6e 6e 65 6c 49 64  \fR \fIchannelId
71c0: 20 6d 61 6a 6f 72 20 6d 69 6e 6f 72 20 6d 65 73   major minor mes
71d0: 73 61 67 65 20 74 79 70 65 5c 66 52 0a 54 68 69  sage type\fR.Thi
71e0: 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61  s form of callba
71f0: 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79  ck is invoked by
7200: 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 66 75 6e   the OpenSSL fun
7210: 63 74 69 6f 6e 0a 5c 66 42 53 53 4c 5f 73 65 74  ction.\fBSSL_set
7220: 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28 29  _info_callback()
7230: 5c 66 52 20 64 75 72 69 6e 67 20 74 68 65 20 69  \fR during the i
7240: 6e 69 74 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f  nitial connectio
7250: 6e 20 61 6e 64 20 68 61 6e 64 73 68 61 6b 65 0a  n and handshake.
7260: 6f 70 65 72 61 74 69 6f 6e 73 5c 26 2e 20 54 68  operations\&. Th
7270: 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 3a  e arguments are:
7280: 0a 2e 52 53 0a 2e 54 50 0a 5c 66 49 6d 61 6a 6f  ..RS..TP.\fImajo
7290: 72 5c 66 52 0a 4d 61 6a 6f 72 20 63 61 74 65 67  r\fR.Major categ
72a0: 6f 72 79 20 66 6f 72 20 65 72 72 6f 72 5c 26 2e  ory for error\&.
72b0: 20 56 61 6c 69 64 20 65 6e 75 6d 73 20 61 72 65   Valid enums are
72c0: 3a 20 5c 66 42 68 61 6e 64 73 68 61 6b 65 5c 66  : \fBhandshake\f
72d0: 52 2c 20 5c 66 42 61 6c 65 72 74 5c 66 52 2c 0a  R, \fBalert\fR,.
72e0: 5c 66 42 63 6f 6e 6e 65 63 74 5c 66 52 2c 20 5c  \fBconnect\fR, \
72f0: 66 42 61 63 63 65 70 74 5c 66 52 5c 26 2e 0a 2e  fBaccept\fR\&...
7300: 54 50 0a 5c 66 49 6d 69 6e 6f 72 5c 66 52 0a 4d  TP.\fIminor\fR.M
7310: 69 6e 6f 72 20 63 61 74 65 67 6f 72 79 20 66 6f  inor category fo
7320: 72 20 65 72 72 6f 72 5c 26 2e 20 56 61 6c 69 64  r error\&. Valid
7330: 20 65 6e 75 6d 73 20 61 72 65 3a 20 5c 66 42 73   enums are: \fBs
7340: 74 61 72 74 5c 66 52 2c 20 5c 66 42 64 6f 6e 65  tart\fR, \fBdone
7350: 5c 66 52 2c 20 5c 66 42 72 65 61 64 5c 66 52 2c  \fR, \fBread\fR,
7360: 0a 5c 66 42 77 72 69 74 65 5c 66 52 2c 20 5c 66  .\fBwrite\fR, \f
7370: 42 6c 6f 6f 70 5c 66 52 2c 20 5c 66 42 65 78 69  Bloop\fR, \fBexi
7380: 74 5c 66 52 5c 26 2e 0a 2e 54 50 0a 5c 66 49 6d  t\fR\&...TP.\fIm
7390: 65 73 73 61 67 65 5c 66 52 0a 44 65 73 63 72 69  essage\fR.Descri
73a0: 70 74 69 76 65 20 6d 65 73 73 61 67 65 20 73 74  ptive message st
73b0: 72 69 6e 67 20 77 68 69 63 68 20 6d 61 79 20 62  ring which may b
73c0: 65 20 67 65 6e 65 72 61 74 65 64 20 65 69 74 68  e generated eith
73d0: 65 72 20 62 79 0a 5c 66 42 53 53 4c 5f 73 74 61  er by.\fBSSL_sta
73e0: 74 65 5f 73 74 72 69 6e 67 5f 6c 6f 6e 67 28 29  te_string_long()
73f0: 5c 66 52 20 6f 72 20 5c 66 42 53 53 4c 5f 61 6c  \fR or \fBSSL_al
7400: 65 72 74 5f 64 65 73 63 5f 73 74 72 69 6e 67 5f  ert_desc_string_
7410: 6c 6f 6e 67 28 29 5c 66 52 2c 0a 64 65 70 65 6e  long()\fR,.depen
7420: 64 69 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6e 74  ding on the cont
7430: 65 78 74 5c 26 2e 0a 2e 54 50 0a 5c 66 49 74 79  ext\&...TP.\fIty
7440: 70 65 5c 66 52 0a 46 6f 72 20 61 6c 65 72 74 73  pe\fR.For alerts
7450: 2c 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76  , the possible v
7460: 61 6c 75 65 73 20 61 72 65 3a 20 5c 66 42 77 61  alues are: \fBwa
7470: 72 6e 69 6e 67 5c 66 52 2c 0a 5c 66 42 66 61 74  rning\fR,.\fBfat
7480: 61 6c 5c 66 52 2c 20 61 6e 64 20 5c 66 42 75 6e  al\fR, and \fBun
7490: 6b 6e 6f 77 6e 5c 66 52 5c 26 2e 20 46 6f 72 20  known\fR\&. For 
74a0: 6f 74 68 65 72 73 2c 20 5c 66 42 69 6e 66 6f 5c  others, \fBinfo\
74b0: 66 52 20 69 73 20 75 73 65 64 5c 26 2e 0a 54 68  fR is used\&..Th
74c0: 69 73 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e  is argument is n
74d0: 65 77 20 66 6f 72 20 54 63 6c 54 4c 53 20 31 5c  ew for TclTLS 1\
74e0: 26 2e 38 5c 26 2e 0a 2e 52 45 0a 2e 54 50 0a 5c  &.8\&...RE..TP.\
74f0: 66 42 6d 65 73 73 61 67 65 5c 66 52 20 5c 66 49  fBmessage\fR \fI
7500: 63 68 61 6e 6e 65 6c 49 64 20 64 69 72 65 63 74  channelId direct
7510: 69 6f 6e 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74  ion version cont
7520: 65 6e 74 5f 74 79 70 65 20 6d 65 73 73 61 67 65  ent_type message
7530: 5c 66 52 0a 54 68 69 73 20 66 6f 72 6d 20 6f 66  \fR.This form of
7540: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
7550: 6f 6b 65 64 20 62 79 20 74 68 65 20 4f 70 65 6e  oked by the Open
7560: 53 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 5c 66 42  SSL function.\fB
7570: 53 53 4c 5f 73 65 74 5f 6d 73 67 5f 63 61 6c 6c  SSL_set_msg_call
7580: 62 61 63 6b 28 29 5c 66 52 20 77 68 65 6e 65 76  back()\fR whenev
7590: 65 72 20 61 20 6d 65 73 73 61 67 65 20 69 73 20  er a message is 
75a0: 73 65 6e 74 20 6f 72 20 72 65 63 65 69 76 65 64  sent or received
75b0: 20 64 75 72 69 6e 67 20 74 68 65 0a 69 6e 69 74   during the.init
75c0: 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ial connection, 
75d0: 68 61 6e 64 73 68 61 6b 65 2c 20 6f 72 20 49 2f  handshake, or I/
75e0: 4f 20 6f 70 65 72 61 74 69 6f 6e 73 5c 26 2e 20  O operations\&. 
75f0: 49 74 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  It is only avail
7600: 61 62 6c 65 20 77 68 65 6e 0a 4f 70 65 6e 53 53  able when.OpenSS
7610: 4c 20 69 73 20 63 6f 6d 70 6c 69 65 64 20 77 69  L is complied wi
7620: 74 68 20 74 68 65 20 5c 66 42 65 6e 61 62 6c 65  th the \fBenable
7630: 2d 73 73 6c 2d 74 72 61 63 65 5c 66 52 20 6f 70  -ssl-trace\fR op
7640: 74 69 6f 6e 5c 26 2e 20 54 68 69 73 20 63 61 6c  tion\&. This cal
7650: 6c 62 61 63 6b 20 69 73 0a 6e 65 77 20 66 6f 72  lback is.new for
7660: 20 54 63 6c 54 4c 53 20 31 5c 26 2e 38 5c 26 2e   TclTLS 1\&.8\&.
7670: 20 54 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61   The arguments a
7680: 72 65 3a 0a 2e 52 53 0a 2e 54 50 0a 5c 66 49 64  re:..RS..TP.\fId
7690: 69 72 65 63 74 69 6f 6e 5c 66 52 0a 44 69 72 65  irection\fR.Dire
76a0: 63 74 69 6f 6e 20 69 73 20 65 69 74 68 65 72 20  ction is either 
76b0: 5c 66 42 53 65 6e 74 5c 66 52 20 6f 72 20 5c 66  \fBSent\fR or \f
76c0: 42 52 65 63 65 69 76 65 64 5c 66 52 5c 26 2e 0a  BReceived\fR\&..
76d0: 2e 54 50 0a 5c 66 49 76 65 72 73 69 6f 6e 5c 66  .TP.\fIversion\f
76e0: 52 0a 56 65 72 73 69 6f 6e 20 69 73 20 74 68 65  R.Version is the
76f0: 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f   protocol versio
7700: 6e 5c 26 2e 0a 2e 54 50 0a 5c 66 49 63 6f 6e 74  n\&...TP.\fIcont
7710: 65 6e 74 5f 74 79 70 65 5c 66 52 0a 43 6f 6e 74  ent_type\fR.Cont
7720: 65 6e 74 20 74 79 70 65 20 69 73 20 74 68 65 20  ent type is the 
7730: 6d 65 73 73 61 67 65 20 63 6f 6e 74 65 6e 74 20  message content 
7740: 74 79 70 65 5c 26 2e 0a 2e 54 50 0a 5c 66 49 6d  type\&...TP.\fIm
7750: 65 73 73 61 67 65 5c 66 52 0a 4d 65 73 73 61 67  essage\fR.Messag
7760: 65 20 69 73 20 6d 6f 72 65 20 69 6e 66 6f 20 66  e is more info f
7770: 72 6f 6d 20 74 68 65 20 5c 66 42 53 53 4c 5f 74  rom the \fBSSL_t
7780: 72 61 63 65 5c 66 52 20 41 50 49 5c 26 2e 0a 2e  race\fR API\&...
7790: 52 45 0a 2e 54 50 0a 5c 66 42 73 65 73 73 69 6f  RE..TP.\fBsessio
77a0: 6e 5c 66 52 20 5c 66 49 63 68 61 6e 6e 65 6c 49  n\fR \fIchannelI
77b0: 64 20 73 65 73 73 69 6f 6e 5f 69 64 20 73 65 73  d session_id ses
77c0: 73 69 6f 6e 5f 74 69 63 6b 65 74 20 6c 69 66 65  sion_ticket life
77d0: 74 69 6d 65 5c 66 52 0a 54 68 69 73 20 66 6f 72  time\fR.This for
77e0: 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 73  m of callback is
77f0: 20 69 6e 76 6f 6b 65 64 20 62 79 20 74 68 65 20   invoked by the 
7800: 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e  OpenSSL function
7810: 0a 5c 66 42 53 53 4c 5f 43 54 58 5f 73 65 73 73  .\fBSSL_CTX_sess
7820: 5f 73 65 74 5f 6e 65 77 5f 63 62 28 29 5c 66 52  _set_new_cb()\fR
7830: 20 77 68 65 6e 65 76 65 72 20 61 20 6e 65 77 20   whenever a new 
7840: 73 65 73 73 69 6f 6e 20 69 64 20 69 73 20 73 65  session id is se
7850: 6e 74 20 62 79 20 74 68 65 0a 73 65 72 76 65 72  nt by the.server
7860: 20 64 75 72 69 6e 67 20 74 68 65 20 69 6e 69 74   during the init
7870: 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61  ial connection a
7880: 6e 64 20 68 61 6e 64 73 68 61 6b 65 20 61 6e 64  nd handshake and
7890: 20 61 6c 73 6f 20 64 75 72 69 6e 67 20 74 68 65   also during the
78a0: 20 73 65 73 73 69 6f 6e 0a 69 66 20 74 68 65 20   session.if the 
78b0: 5c 66 42 2d 70 6f 73 74 5f 68 61 6e 64 73 68 61  \fB-post_handsha
78c0: 6b 65 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73 20  ke\fR option is 
78d0: 73 65 74 20 74 6f 20 74 72 75 65 5c 26 2e 20 54  set to true\&. T
78e0: 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  his callback is 
78f0: 6e 65 77 20 66 6f 72 0a 54 63 6c 54 4c 53 20 31  new for.TclTLS 1
7900: 5c 26 2e 38 5c 26 2e 20 54 68 65 20 61 72 67 75  \&.8\&. The argu
7910: 6d 65 6e 74 73 20 61 72 65 3a 0a 2e 52 53 0a 2e  ments are:..RS..
7920: 54 50 0a 5c 66 49 73 65 73 73 69 6f 6e 5f 69 64  TP.\fIsession_id
7930: 5c 66 52 0a 53 65 73 73 69 6f 6e 20 49 64 20 69  \fR.Session Id i
7940: 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65  s the current se
7950: 73 73 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 72  ssion identifier
7960: 0a 2e 54 50 0a 5c 66 49 73 65 73 73 69 6f 6e 5f  ..TP.\fIsession_
7970: 74 69 63 6b 65 74 5c 66 52 0a 54 69 63 6b 65 74  ticket\fR.Ticket
7980: 20 69 73 20 74 68 65 20 73 65 73 73 69 6f 6e 20   is the session 
7990: 74 69 63 6b 65 74 20 69 6e 66 6f 0a 2e 54 50 0a  ticket info..TP.
79a0: 5c 66 49 6c 69 66 65 74 69 6d 65 5c 66 52 0a 4c  \fIlifetime\fR.L
79b0: 69 66 65 74 69 6d 65 20 69 73 20 74 68 65 20 74  ifetime is the t
79c0: 69 63 6b 65 74 20 6c 69 66 65 74 69 6d 65 20 69  icket lifetime i
79d0: 6e 20 73 65 63 6f 6e 64 73 5c 26 2e 0a 2e 52 45  n seconds\&...RE
79e0: 0a 2e 54 50 0a 5c 66 42 76 65 72 69 66 79 5c 66  ..TP.\fBverify\f
79f0: 52 20 5c 66 49 63 68 61 6e 6e 65 6c 49 64 20 64  R \fIchannelId d
7a00: 65 70 74 68 20 63 65 72 74 20 73 74 61 74 75 73  epth cert status
7a10: 20 65 72 72 6f 72 5c 66 52 0a 54 68 69 73 20 63   error\fR.This c
7a20: 61 6c 6c 62 61 63 6b 20 77 61 73 20 6d 6f 76 65  allback was move
7a30: 64 20 74 6f 20 5c 66 42 2d 76 61 6c 69 64 61 74  d to \fB-validat
7a40: 65 63 6f 6d 6d 61 6e 64 5c 66 52 20 69 6e 20 54  ecommand\fR in T
7a50: 63 6c 54 4c 53 20 31 5c 26 2e 38 5c 26 2e 0a 2e  clTLS 1\&.8\&...
7a60: 50 50 0a 2e 53 53 20 22 56 41 4c 55 45 53 20 46  PP..SS "VALUES F
7a70: 4f 52 20 50 41 53 53 57 4f 52 44 20 43 41 4c 4c  OR PASSWORD CALL
7a80: 42 41 43 4b 22 0a 54 68 65 20 63 61 6c 6c 62 61  BACK".The callba
7a90: 63 6b 20 66 6f 72 20 74 68 65 20 5c 66 42 2d 70  ck for the \fB-p
7aa0: 61 73 73 77 6f 72 64 5c 66 52 20 6f 70 74 69 6f  assword\fR optio
7ab0: 6e 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20  n is invoked by 
7ac0: 54 63 6c 54 4c 53 20 77 68 65 6e 65 76 65 72 20  TclTLS whenever 
7ad0: 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 0a 74 6f  OpenSSL needs.to
7ae0: 20 6f 62 74 61 69 6e 20 61 20 70 61 73 73 77 6f   obtain a passwo
7af0: 72 64 5c 26 2e 20 53 65 65 20 62 65 6c 6f 77 20  rd\&. See below 
7b00: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
7b10: 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
7b20: 64 20 74 6f 20 74 68 65 0a 63 61 6c 6c 62 61 63  d to the.callbac
7b30: 6b 20 73 63 72 69 70 74 5c 26 2e 20 54 68 65 20  k script\&. The 
7b40: 75 73 65 72 20 70 72 6f 76 69 64 65 64 20 70 61  user provided pa
7b50: 73 73 77 6f 72 64 20 69 73 20 65 78 70 65 63 74  ssword is expect
7b60: 65 64 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ed to be returne
7b70: 64 20 62 79 20 74 68 65 0a 63 61 6c 6c 62 61 63  d by the.callbac
7b80: 6b 5c 26 2e 0a 2e 54 50 0a 5c 66 42 70 61 73 73  k\&...TP.\fBpass
7b90: 77 6f 72 64 5c 66 52 20 5c 66 49 72 77 66 6c 61  word\fR \fIrwfla
7ba0: 67 20 73 69 7a 65 5c 66 52 0a 49 6e 76 6f 6b 65  g size\fR.Invoke
7bb0: 64 20 77 68 65 6e 20 6c 6f 61 64 69 6e 67 20 6f  d when loading o
7bc0: 72 20 73 74 6f 72 69 6e 67 20 61 6e 20 65 6e 63  r storing an enc
7bd0: 72 79 70 74 65 64 20 50 45 4d 20 63 65 72 74 69  rypted PEM certi
7be0: 66 69 63 61 74 65 5c 26 2e 20 54 68 65 20 61 72  ficate\&. The ar
7bf0: 67 75 6d 65 6e 74 73 20 61 72 65 3a 0a 2e 52 53  guments are:..RS
7c00: 0a 2e 54 50 0a 5c 66 49 72 77 66 6c 61 67 5c 66  ..TP.\fIrwflag\f
7c10: 52 0a 54 68 65 20 72 65 61 64 2f 77 72 69 74 65  R.The read/write
7c20: 20 66 6c 61 67 20 69 73 20 30 20 66 6f 72 20 72   flag is 0 for r
7c30: 65 61 64 69 6e 67 2f 64 65 63 72 79 70 74 69 6f  eading/decryptio
7c40: 6e 20 6f 72 20 31 20 66 6f 72 20 77 72 69 74 69  n or 1 for writi
7c50: 6e 67 2f 65 6e 63 72 79 70 74 69 6f 6e 5c 26 2e  ng/encryption\&.
7c60: 0a 54 68 65 20 6c 61 74 74 65 72 20 63 61 6e 20  .The latter can 
7c70: 62 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 72  be used to deter
7c80: 6d 69 6e 65 20 77 68 65 6e 20 74 6f 20 70 72 6f  mine when to pro
7c90: 6d 70 74 20 74 68 65 20 75 73 65 72 20 74 6f 20  mpt the user to 
7ca0: 63 6f 6e 66 69 72 6d 5c 26 2e 0a 54 68 69 73 20  confirm\&..This 
7cb0: 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 65 77 20  argument is new 
7cc0: 66 6f 72 20 54 63 6c 54 4c 53 20 31 5c 26 2e 38  for TclTLS 1\&.8
7cd0: 5c 26 2e 0a 2e 54 50 0a 5c 66 49 73 69 7a 65 5c  \&...TP.\fIsize\
7ce0: 66 52 0a 54 68 65 20 73 69 7a 65 20 69 73 20 74  fR.The size is t
7cf0: 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  he maximum lengt
7d00: 68 20 6f 66 20 74 68 65 20 70 61 73 73 77 6f 72  h of the passwor
7d10: 64 20 69 6e 20 62 79 74 65 73 5c 26 2e 0a 54 68  d in bytes\&..Th
7d20: 69 73 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e  is argument is n
7d30: 65 77 20 66 6f 72 20 54 63 6c 54 4c 53 20 31 5c  ew for TclTLS 1\
7d40: 26 2e 38 5c 26 2e 0a 2e 52 45 0a 2e 50 50 0a 2e  &.8\&...RE..PP..
7d50: 53 53 20 22 56 41 4c 55 45 53 20 46 4f 52 20 56  SS "VALUES FOR V
7d60: 41 4c 49 44 41 54 45 20 43 4f 4d 4d 41 4e 44 20  ALIDATE COMMAND 
7d70: 43 41 4c 4c 42 41 43 4b 22 0a 54 68 65 20 63 61  CALLBACK".The ca
7d80: 6c 6c 62 61 63 6b 20 66 6f 72 20 74 68 65 20 5c  llback for the \
7d90: 66 42 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61  fB-validatecomma
7da0: 6e 64 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73 20  nd\fR option is 
7db0: 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67 20 74  invoked during t
7dc0: 68 65 20 68 61 6e 64 73 68 61 6b 65 0a 70 72 6f  he handshake.pro
7dd0: 63 65 73 73 20 69 6e 20 6f 72 64 65 72 20 66 6f  cess in order fo
7de0: 72 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  r the applicatio
7df0: 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68  n to validate th
7e00: 65 20 70 72 6f 76 69 64 65 64 20 76 61 6c 75 65  e provided value
7e10: 28 73 29 5c 26 2e 20 53 65 65 0a 62 65 6c 6f 77  (s)\&. See.below
7e20: 20 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c   for the possibl
7e30: 65 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73  e arguments pass
7e40: 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61  ed to the callba
7e50: 63 6b 20 73 63 72 69 70 74 5c 26 2e 20 49 66 20  ck script\&. If 
7e60: 6e 6f 74 0a 73 70 65 63 69 66 69 65 64 2c 20 4f  not.specified, O
7e70: 70 65 6e 53 53 4c 20 77 69 6c 6c 20 61 63 63 65  penSSL will acce
7e80: 70 74 20 61 6c 6c 20 76 61 6c 69 64 20 63 65 72  pt all valid cer
7e90: 74 69 66 69 63 61 74 65 73 20 61 6e 64 20 65 78  tificates and ex
7ea0: 74 65 6e 73 69 6f 6e 73 5c 26 2e 20 54 6f 20 72  tensions\&. To r
7eb0: 65 6a 65 63 74 0a 74 68 65 20 76 61 6c 75 65 20  eject.the value 
7ec0: 61 6e 64 20 61 62 6f 72 74 20 74 68 65 20 63 6f  and abort the co
7ed0: 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 20 63 61  nnection, the ca
7ee0: 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 72 65  llback should re
7ef0: 74 75 72 6e 20 30 5c 26 2e 20 54 6f 20 61 63 63  turn 0\&. To acc
7f00: 65 70 74 20 74 68 65 0a 76 61 6c 75 65 20 61 6e  ept the.value an
7f10: 64 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63  d continue the c
7f20: 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74 20 73 68  onnection, it sh
7f30: 6f 75 6c 64 20 72 65 74 75 72 6e 20 31 5c 26 2e  ould return 1\&.
7f40: 20 54 6f 20 72 65 6a 65 63 74 20 74 68 65 20 76   To reject the v
7f50: 61 6c 75 65 2c 20 62 75 74 0a 63 6f 6e 74 69 6e  alue, but.contin
7f60: 75 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  ue the connectio
7f70: 6e 2c 20 69 74 20 73 68 6f 75 6c 64 20 72 65 74  n, it should ret
7f80: 75 72 6e 20 32 5c 26 2e 20 54 68 69 73 20 63 61  urn 2\&. This ca
7f90: 6c 6c 62 61 63 6b 20 69 73 20 6e 65 77 20 66 6f  llback is new fo
7fa0: 72 20 54 63 6c 54 4c 53 20 31 5c 26 2e 38 5c 26  r TclTLS 1\&.8\&
7fb0: 2e 0a 2e 54 50 0a 5c 66 42 61 6c 70 6e 5c 66 52  ...TP.\fBalpn\fR
7fc0: 20 5c 66 49 63 68 61 6e 6e 65 6c 49 64 20 70 72   \fIchannelId pr
7fd0: 6f 74 6f 63 6f 6c 20 6d 61 74 63 68 5c 66 52 0a  otocol match\fR.
7fe0: 46 6f 72 20 73 65 72 76 65 72 73 2c 20 74 68 69  For servers, thi
7ff0: 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61  s form of callba
8000: 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68  ck is invoked wh
8010: 65 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 41 4c  en the client AL
8020: 50 4e 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 0a  PN extension is.
8030: 72 65 63 65 69 76 65 64 5c 26 2e 20 49 66 20 5c  received\&. If \
8040: 66 49 6d 61 74 63 68 5c 66 52 20 69 73 20 74 72  fImatch\fR is tr
8050: 75 65 2c 20 74 68 65 6e 20 5c 66 49 70 72 6f 74  ue, then \fIprot
8060: 6f 63 6f 6c 5c 66 52 20 69 73 20 74 68 65 20 66  ocol\fR is the f
8070: 69 72 73 74 0a 5c 66 42 2d 61 6c 70 6e 5c 66 52  irst.\fB-alpn\fR
8080: 20 70 72 6f 74 6f 63 6f 6c 20 6f 70 74 69 6f 6e   protocol option
8090: 20 69 6e 20 63 6f 6d 6d 6f 6e 20 74 6f 20 62 6f   in common to bo
80a0: 74 68 20 74 68 65 20 63 6c 69 65 6e 74 20 61 6e  th the client an
80b0: 64 20 73 65 72 76 65 72 5c 26 2e 0a 49 66 20 6e  d server\&..If n
80c0: 6f 74 2c 20 74 68 65 20 66 69 72 73 74 20 63 6c  ot, the first cl
80d0: 69 65 6e 74 20 73 70 65 63 69 66 69 65 64 20 70  ient specified p
80e0: 72 6f 74 6f 63 6f 6c 20 69 73 20 75 73 65 64 5c  rotocol is used\
80f0: 26 2e 20 54 68 69 73 20 63 61 6c 6c 62 61 63 6b  &. This callback
8100: 20 69 73 20 63 61 6c 6c 65 64 0a 61 66 74 65 72   is called.after
8110: 20 74 68 65 20 48 65 6c 6c 6f 20 61 6e 64 20 41   the Hello and A
8120: 4c 50 4e 20 63 61 6c 6c 62 61 63 6b 73 5c 26 2e  LPN callbacks\&.
8130: 0a 2e 54 50 0a 5c 66 42 68 65 6c 6c 6f 5c 66 52  ..TP.\fBhello\fR
8140: 20 5c 66 49 63 68 61 6e 6e 65 6c 49 64 20 73 65   \fIchannelId se
8150: 72 76 65 72 6e 61 6d 65 5c 66 52 0a 46 6f 72 20  rvername\fR.For 
8160: 73 65 72 76 65 72 73 2c 20 74 68 69 73 20 66 6f  servers, this fo
8170: 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69  rm of callback i
8180: 73 20 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67  s invoked during
8190: 20 63 6c 69 65 6e 74 20 68 65 6c 6c 6f 20 6d 65   client hello me
81a0: 73 73 61 67 65 0a 70 72 6f 63 65 73 73 69 6e 67  ssage.processing
81b0: 5c 26 2e 20 54 68 65 20 70 75 72 70 6f 73 65 20  \&. The purpose 
81c0: 69 73 20 73 6f 20 74 68 65 20 73 65 72 76 65 72  is so the server
81d0: 20 63 61 6e 20 73 65 6c 65 63 74 20 74 68 65 20   can select the 
81e0: 61 70 70 72 6f 70 72 69 61 74 65 20 63 65 72 74  appropriate cert
81f0: 69 66 69 63 61 74 65 0a 74 6f 20 70 72 65 73 65  ificate.to prese
8200: 6e 74 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74  nt to the client
8210: 2c 20 61 6e 64 20 74 6f 20 6d 61 6b 65 20 6f 74  , and to make ot
8220: 68 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  her configuratio
8230: 6e 20 61 64 6a 75 73 74 6d 65 6e 74 73 20 72 65  n adjustments re
8240: 6c 65 76 61 6e 74 0a 74 6f 20 74 68 61 74 20 73  levant.to that s
8250: 65 72 76 65 72 20 6e 61 6d 65 20 61 6e 64 20 69  erver name and i
8260: 74 73 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ts configuration
8270: 5c 26 2e 20 49 74 20 69 73 20 63 61 6c 6c 65 64  \&. It is called
8280: 20 62 65 66 6f 72 65 20 74 68 65 20 53 4e 49 20   before the SNI 
8290: 61 6e 64 20 41 4c 50 4e 0a 63 61 6c 6c 62 61 63  and ALPN.callbac
82a0: 6b 73 5c 26 2e 0a 2e 54 50 0a 5c 66 42 73 6e 69  ks\&...TP.\fBsni
82b0: 5c 66 52 20 5c 66 49 63 68 61 6e 6e 65 6c 49 64  \fR \fIchannelId
82c0: 20 73 65 72 76 65 72 6e 61 6d 65 5c 66 52 0a 46   servername\fR.F
82d0: 6f 72 20 73 65 72 76 65 72 73 2c 20 74 68 69 73  or servers, this
82e0: 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63   form of callbac
82f0: 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65  k is invoked whe
8300: 6e 20 74 68 65 20 53 65 72 76 65 72 20 4e 61 6d  n the Server Nam
8310: 65 20 49 6e 64 69 63 61 74 69 6f 6e 0a 28 53 4e  e Indication.(SN
8320: 49 29 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20  I) extension is 
8330: 72 65 63 65 69 76 65 64 5c 26 2e 20 54 68 65 20  received\&. The 
8340: 5c 66 49 73 65 72 76 65 72 6e 61 6d 65 5c 66 52  \fIservername\fR
8350: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
8360: 20 63 6c 69 65 6e 74 0a 70 72 6f 76 69 64 65 64   client.provided
8370: 20 73 65 72 76 65 72 20 6e 61 6d 65 20 73 70 65   server name spe
8380: 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 5c 66  cified in the \f
8390: 42 2d 73 65 72 76 65 72 6e 61 6d 65 3c 2f 62 3e  B-servername</b>
83a0: 5c 66 52 20 6f 70 74 69 6f 6e 5c 26 2e 20 54 68  \fR option\&. Th
83b0: 65 0a 70 75 72 70 6f 73 65 20 69 73 20 73 6f 20  e.purpose is so 
83c0: 77 68 65 6e 20 61 20 73 65 72 76 65 72 20 73 75  when a server su
83d0: 70 70 6f 72 74 73 20 6d 75 6c 74 69 70 6c 65 20  pports multiple 
83e0: 6e 61 6d 65 73 2c 20 74 68 65 20 72 69 67 68 74  names, the right
83f0: 20 63 65 72 74 69 66 69 63 61 74 65 0a 63 61 6e   certificate.can
8400: 20 62 65 20 75 73 65 64 5c 26 2e 20 49 74 20 69   be used\&. It i
8410: 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72 20 74  s called after t
8420: 68 65 20 68 65 6c 6c 6f 20 63 61 6c 6c 62 61 63  he hello callbac
8430: 6b 20 62 75 74 20 62 65 66 6f 72 65 20 74 68 65  k but before the
8440: 20 41 4c 50 4e 0a 63 61 6c 6c 62 61 63 6b 5c 26   ALPN.callback\&
8450: 2e 0a 2e 54 50 0a 5c 66 42 76 65 72 69 66 79 5c  ...TP.\fBverify\
8460: 66 52 20 5c 66 49 63 68 61 6e 6e 65 6c 49 64 20  fR \fIchannelId 
8470: 64 65 70 74 68 20 63 65 72 74 20 73 74 61 74 75  depth cert statu
8480: 73 20 65 72 72 6f 72 5c 66 52 0a 54 68 69 73 20  s error\fR.This 
8490: 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b  form of callback
84a0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 4f   is invoked by O
84b0: 70 65 6e 53 53 4c 20 77 68 65 6e 20 61 20 6e 65  penSSL when a ne
84c0: 77 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73  w certificate is
84d0: 20 72 65 63 65 69 76 65 64 0a 66 72 6f 6d 20 74   received.from t
84e0: 68 65 20 70 65 65 72 5c 26 2e 20 49 74 20 61 6c  he peer\&. It al
84f0: 6c 6f 77 73 20 74 68 65 20 63 6c 69 65 6e 74 20  lows the client 
8500: 74 6f 20 63 68 65 63 6b 20 74 68 65 20 63 65 72  to check the cer
8510: 74 69 66 69 63 61 74 65 20 76 65 72 69 66 69 63  tificate verific
8520: 61 74 69 6f 6e 0a 72 65 73 75 6c 74 73 20 61 6e  ation.results an
8530: 64 20 63 68 6f 6f 73 65 20 77 68 65 74 68 65 72  d choose whether
8540: 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 6f 72 20   to continue or 
8550: 6e 6f 74 5c 26 2e 20 49 74 20 69 73 20 63 61 6c  not\&. It is cal
8560: 6c 65 64 20 66 6f 72 20 65 61 63 68 0a 63 65 72  led for each.cer
8570: 74 69 66 69 63 61 74 65 20 69 6e 20 74 68 65 20  tificate in the 
8580: 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69  certificate chai
8590: 6e 5c 26 2e 20 54 68 69 73 20 63 61 6c 6c 62 61  n\&. This callba
85a0: 63 6b 20 77 61 73 20 6d 6f 76 65 64 20 66 72 6f  ck was moved fro
85b0: 6d 0a 5c 66 42 2d 63 6f 6d 6d 61 6e 64 5c 66 52  m.\fB-command\fR
85c0: 20 69 6e 20 54 63 6c 54 4c 53 20 31 5c 26 2e 38   in TclTLS 1\&.8
85d0: 5c 26 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74  \&. The argument
85e0: 73 20 61 72 65 3a 0a 2e 52 53 0a 2e 54 50 0a 5c  s are:..RS..TP.\
85f0: 66 49 64 65 70 74 68 5c 66 52 0a 54 68 65 20 64  fIdepth\fR.The d
8600: 65 70 74 68 20 69 73 20 74 68 65 20 69 6e 74 65  epth is the inte
8610: 67 65 72 20 64 65 70 74 68 20 6f 66 20 74 68 65  ger depth of the
8620: 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e 20   certificate in 
8630: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
8640: 63 68 61 69 6e 2c 0a 77 68 65 72 65 20 30 20 69  chain,.where 0 i
8650: 73 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69  s the peer certi
8660: 66 69 63 61 74 65 20 61 6e 64 20 68 69 67 68 65  ficate and highe
8670: 72 20 76 61 6c 75 65 73 20 67 6f 69 6e 67 20 75  r values going u
8680: 70 20 74 6f 20 74 68 65 20 43 65 72 74 69 66 69  p to the Certifi
8690: 63 61 74 65 0a 41 75 74 68 6f 72 69 74 79 20 28  cate.Authority (
86a0: 43 41 29 5c 26 2e 0a 2e 54 50 0a 5c 66 49 63 65  CA)\&...TP.\fIce
86b0: 72 74 5c 66 52 0a 54 68 65 20 63 65 72 74 20 61  rt\fR.The cert a
86c0: 72 67 75 6d 65 6e 74 20 69 73 20 61 20 6c 69 73  rgument is a lis
86d0: 74 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70  t of key-value p
86e0: 61 69 72 73 20 73 69 6d 69 6c 61 72 20 74 6f 20  airs similar to 
86f0: 74 68 6f 73 65 20 72 65 74 75 72 6e 65 64 20 62  those returned b
8700: 79 0a 5c 66 42 74 6c 73 3a 3a 73 74 61 74 75 73  y.\fBtls::status
8710: 5c 66 52 5c 26 2e 0a 2e 54 50 0a 5c 66 49 73 74  \fR\&...TP.\fIst
8720: 61 74 75 73 5c 66 52 0a 54 68 65 20 73 74 61 74  atus\fR.The stat
8730: 75 73 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  us argument is t
8740: 68 65 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 69 64  he boolean valid
8750: 69 74 79 20 6f 66 20 74 68 65 20 63 75 72 72 65  ity of the curre
8760: 6e 74 20 63 65 72 74 69 66 69 63 61 74 65 20 77  nt certificate w
8770: 68 65 72 65 20 30 0a 69 73 20 69 6e 76 61 6c 69  here 0.is invali
8780: 64 20 61 6e 64 20 31 20 69 73 20 76 61 6c 69 64  d and 1 is valid
8790: 5c 26 2e 0a 2e 54 50 0a 5c 66 49 65 72 72 6f 72  \&...TP.\fIerror
87a0: 5c 66 52 0a 54 68 65 20 65 72 72 6f 72 20 61 72  \fR.The error ar
87b0: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 65 72  gument is the er
87c0: 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20  ror message, if 
87d0: 61 6e 79 2c 20 67 65 6e 65 72 61 74 65 64 20 62  any, generated b
87e0: 79 0a 5c 66 42 58 35 30 39 5f 53 54 4f 52 45 5f  y.\fBX509_STORE_
87f0: 43 54 58 5f 67 65 74 5f 65 72 72 6f 72 28 29 5c  CTX_get_error()\
8800: 66 52 5c 26 2e 0a 2e 52 45 0a 2e 50 50 0a 52 65  fR\&...RE..PP.Re
8810: 66 65 72 65 6e 63 65 20 69 6d 70 6c 65 6d 65 6e  ference implemen
8820: 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 73 65  tations of these
8830: 20 63 61 6c 6c 62 61 63 6b 73 20 61 72 65 20 70   callbacks are p
8840: 72 6f 76 69 64 65 64 20 69 6e 20 22 5c 66 49 74  rovided in "\fIt
8850: 6c 73 5c 26 2e 74 63 6c 5c 66 52 22 0a 61 73 20  ls\&.tcl\fR".as 
8860: 5c 66 42 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b  \fBtls::callback
8870: 5c 66 52 2c 20 5c 66 42 74 6c 73 3a 3a 70 61 73  \fR, \fBtls::pas
8880: 73 77 6f 72 64 5c 66 52 2c 20 61 6e 64 20 5c 66  sword\fR, and \f
8890: 42 74 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f 63  Btls::validate_c
88a0: 6f 6d 6d 61 6e 64 5c 66 52 0a 72 65 73 70 65 63  ommand\fR.respec
88b0: 74 69 76 65 6c 79 5c 26 2e 20 4e 6f 74 65 20 74  tively\&. Note t
88c0: 68 61 74 20 74 68 65 73 65 20 61 72 65 20 6f 6e  hat these are on
88d0: 6c 79 20 5c 66 49 73 61 6d 70 6c 65 5c 66 52 20  ly \fIsample\fR 
88e0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 5c  implementations\
88f0: 26 2e 20 49 6e 20 61 20 6d 6f 72 65 0a 72 65 61  &. In a more.rea
8900: 6c 69 73 74 69 63 20 64 65 70 6c 6f 79 6d 65 6e  listic deploymen
8910: 74 20 79 6f 75 20 77 6f 75 6c 64 20 73 70 65 63  t you would spec
8920: 69 66 79 20 79 6f 75 72 20 6f 77 6e 20 63 61 6c  ify your own cal
8930: 6c 62 61 63 6b 20 73 63 72 69 70 74 73 20 6f 6e  lback scripts on
8940: 20 65 61 63 68 20 54 4c 53 0a 63 68 61 6e 6e 65   each TLS.channe
8950: 6c 20 75 73 69 6e 67 20 74 68 65 20 5c 66 42 2d  l using the \fB-
8960: 63 6f 6d 6d 61 6e 64 5c 66 52 2c 20 5c 66 42 2d  command\fR, \fB-
8970: 70 61 73 73 77 6f 72 64 5c 66 52 2c 20 61 6e 64  password\fR, and
8980: 0a 5c 66 42 2d 76 61 6c 69 64 61 74 65 5f 63 6f  .\fB-validate_co
8990: 6d 6d 61 6e 64 5c 66 52 20 6f 70 74 69 6f 6e 73  mmand\fR options
89a0: 5c 26 2e 0a 2e 50 50 0a 54 68 65 20 64 65 66 61  \&...PP.The defa
89b0: 75 6c 74 20 62 65 68 61 76 69 6f 72 20 77 68 65  ult behavior whe
89c0: 6e 20 74 68 65 20 5c 66 42 2d 63 6f 6d 6d 61 6e  n the \fB-comman
89d0: 64 5c 66 52 20 61 6e 64 20 5c 66 42 2d 76 61 6c  d\fR and \fB-val
89e0: 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 5c 66 52  idate_command\fR
89f0: 0a 6f 70 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74  .options are not
8a00: 20 73 70 65 63 69 66 69 65 64 2c 20 69 73 20 66   specified, is f
8a10: 6f 72 20 54 63 6c 54 4c 53 20 74 6f 20 70 72 6f  or TclTLS to pro
8a20: 63 65 73 73 20 74 68 65 20 61 73 73 6f 63 69 61  cess the associa
8a30: 74 65 64 20 6c 69 62 72 61 72 79 0a 63 61 6c 6c  ted library.call
8a40: 62 61 63 6b 73 20 69 6e 74 65 72 6e 61 6c 6c 79  backs internally
8a50: 5c 26 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  \&. The default 
8a60: 62 65 68 61 76 69 6f 72 20 77 68 65 6e 20 74 68  behavior when th
8a70: 65 20 5c 66 42 2d 70 61 73 73 77 6f 72 64 5c 66  e \fB-password\f
8a80: 52 20 6f 70 74 69 6f 6e 0a 69 73 20 6e 6f 74 20  R option.is not 
8a90: 73 70 65 63 69 66 69 65 64 20 69 73 20 66 6f 72  specified is for
8aa0: 20 54 63 6c 54 4c 53 20 74 6f 20 70 72 6f 63 65   TclTLS to proce
8ab0: 73 73 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  ss the associate
8ac0: 64 20 6c 69 62 72 61 72 79 20 63 61 6c 6c 62 61  d library callba
8ad0: 63 6b 73 20 62 79 0a 61 74 74 65 6d 70 74 69 6e  cks by.attemptin
8ae0: 67 20 74 6f 20 63 61 6c 6c 20 5c 66 42 74 6c 73  g to call \fBtls
8af0: 3a 3a 70 61 73 73 77 6f 72 64 5c 66 52 5c 26 2e  ::password\fR\&.
8b00: 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20   The difference 
8b10: 62 65 74 77 65 65 6e 20 74 68 65 73 65 20 74 77  between these tw
8b20: 6f 0a 62 65 68 61 76 69 6f 72 73 20 69 73 20 61  o.behaviors is a
8b30: 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20   consequence of 
8b40: 6d 61 69 6e 74 61 69 6e 69 6e 67 20 63 6f 6d 70  maintaining comp
8b50: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 65  atibility with e
8b60: 61 72 6c 69 65 72 0a 69 6d 70 6c 65 6d 65 6e 74  arlier.implement
8b70: 61 74 69 6f 6e 73 5c 26 2e 0a 2e 50 50 0a 5c 66  ations\&...PP.\f
8b80: 49 54 68 65 20 75 73 65 20 6f 66 20 74 68 65 20  IThe use of the 
8b90: 72 65 66 65 72 65 6e 63 65 20 63 61 6c 6c 62 61  reference callba
8ba0: 63 6b 73 20 5c 66 42 74 6c 73 3a 3a 63 61 6c 6c  cks \fBtls::call
8bb0: 62 61 63 6b 5c 66 52 2c 20 5c 66 42 74 6c 73 3a  back\fR, \fBtls:
8bc0: 3a 70 61 73 73 77 6f 72 64 5c 66 52 2c 0a 61 6e  :password\fR,.an
8bd0: 64 20 5c 66 42 74 6c 73 3a 3a 76 61 6c 69 64 61  d \fBtls::valida
8be0: 74 65 5f 63 6f 6d 6d 61 6e 64 5c 66 52 20 69 73  te_command\fR is
8bf0: 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64   not recommended
8c00: 5c 26 2e 20 54 68 65 79 20 6d 61 79 20 62 65 20  \&. They may be 
8c10: 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 66 75 74  removed from fut
8c20: 75 72 65 20 72 65 6c 65 61 73 65 73 5c 26 2e 5c  ure releases\&.\
8c30: 66 52 0a 2e 53 48 20 44 45 42 55 47 0a 46 6f 72  fR..SH DEBUG.For
8c40: 20 6d 6f 73 74 20 64 65 62 75 67 67 69 6e 67 20   most debugging 
8c50: 6e 65 65 64 73 2c 20 74 68 65 20 5c 66 42 2d 63  needs, the \fB-c
8c60: 61 6c 6c 62 61 63 6b 5c 66 52 20 6f 70 74 69 6f  allback\fR optio
8c70: 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
8c80: 20 70 72 6f 76 69 64 65 0a 73 75 66 66 69 63 69   provide.suffici
8c90: 65 6e 74 20 69 6e 73 69 67 68 74 20 61 6e 64 20  ent insight and 
8ca0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74  information on t
8cb0: 68 65 20 54 4c 53 20 68 61 6e 64 73 68 61 6b 65  he TLS handshake
8cc0: 20 61 6e 64 20 70 72 6f 67 72 65 73 73 5c 26 2e   and progress\&.
8cd0: 20 49 66 0a 66 75 72 74 68 65 72 20 74 72 6f 75   If.further trou
8ce0: 62 6c 65 73 68 6f 6f 74 69 6e 67 20 69 6e 73 69  bleshooting insi
8cf0: 67 68 74 20 69 73 20 6e 65 65 64 65 64 2c 20 74  ght is needed, t
8d00: 68 65 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20  he compile time 
8d10: 6f 70 74 69 6f 6e 0a 5c 66 42 2d 2d 65 6e 61 62  option.\fB--enab
8d20: 6c 65 2d 64 65 62 75 67 5c 66 52 20 63 61 6e 20  le-debug\fR can 
8d30: 62 65 20 75 73 65 64 20 74 6f 20 67 65 74 20 64  be used to get d
8d40: 65 74 61 69 6c 65 64 20 65 78 65 63 75 74 69 6f  etailed executio
8d50: 6e 20 66 6c 6f 77 20 73 74 61 74 75 73 5c 26 2e  n flow status\&.
8d60: 0a 2e 50 50 0a 54 4c 53 20 6b 65 79 20 6c 6f 67  ..PP.TLS key log
8d70: 67 69 6e 67 20 63 61 6e 20 62 65 20 65 6e 61 62  ging can be enab
8d80: 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 74  led by setting t
8d90: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
8da0: 61 72 69 61 62 6c 65 0a 5c 66 42 53 53 4c 4b 45  ariable.\fBSSLKE
8db0: 59 4c 4f 47 46 49 4c 45 5c 66 52 20 74 6f 20 74  YLOGFILE\fR to t
8dc0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66  he name of the f
8dd0: 69 6c 65 20 74 6f 20 6c 6f 67 20 74 6f 5c 26 2e  ile to log to\&.
8de0: 20 54 68 65 6e 20 77 68 65 6e 65 76 65 72 20 54   Then whenever T
8df0: 4c 53 20 6b 65 79 0a 6d 61 74 65 72 69 61 6c 20  LS key.material 
8e00: 69 73 20 67 65 6e 65 72 61 74 65 64 20 6f 72 20  is generated or 
8e10: 72 65 63 65 69 76 65 64 20 69 74 20 77 69 6c 6c  received it will
8e20: 20 62 65 20 6c 6f 67 67 65 64 20 74 6f 20 74 68   be logged to th
8e30: 65 20 66 69 6c 65 5c 26 2e 20 54 68 69 73 20 69  e file\&. This i
8e40: 73 20 75 73 65 66 75 6c 0a 66 6f 72 20 6c 6f 67  s useful.for log
8e50: 67 69 6e 67 20 6b 65 79 20 64 61 74 61 20 66 6f  ging key data fo
8e60: 72 20 6e 65 74 77 6f 72 6b 20 6c 6f 67 67 69 6e  r network loggin
8e70: 67 20 74 6f 6f 6c 73 20 74 6f 20 75 73 65 20 74  g tools to use t
8e80: 6f 20 64 65 63 72 79 70 74 20 74 68 65 20 64 61  o decrypt the da
8e90: 74 61 5c 26 2e 0a 2e 50 50 0a 54 68 65 20 5c 66  ta\&...PP.The \f
8ea0: 42 74 6c 73 3a 3a 64 65 62 75 67 5c 66 52 20 76  Btls::debug\fR v
8eb0: 61 72 69 61 62 6c 65 20 70 72 6f 76 69 64 65 73  ariable provides
8ec0: 20 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c   some additional
8ed0: 20 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 74 68   control over th
8ee0: 65 73 65 0a 72 65 66 65 72 65 6e 63 65 20 63 61  ese.reference ca
8ef0: 6c 6c 62 61 63 6b 73 5c 26 2e 20 49 74 73 20 76  llbacks\&. Its v
8f00: 61 6c 75 65 20 69 73 20 7a 65 72 6f 20 62 79 20  alue is zero by 
8f10: 64 65 66 61 75 6c 74 5c 26 2e 20 48 69 67 68 65  default\&. Highe
8f20: 72 20 76 61 6c 75 65 73 20 70 72 6f 64 75 63 65  r values produce
8f30: 20 6d 6f 72 65 0a 64 69 61 67 6e 6f 73 74 69 63   more.diagnostic
8f40: 20 6f 75 74 70 75 74 2c 20 61 6e 64 20 77 69 6c   output, and wil
8f50: 6c 20 61 6c 73 6f 20 66 6f 72 63 65 20 74 68 65  l also force the
8f60: 20 76 65 72 69 66 79 20 6d 65 74 68 6f 64 20 69   verify method i
8f70: 6e 20 5c 66 42 74 6c 73 3a 3a 63 61 6c 6c 62 61  n \fBtls::callba
8f80: 63 6b 5c 66 52 0a 74 6f 20 61 63 63 65 70 74 20  ck\fR.to accept 
8f90: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2c  the certificate,
8fa0: 20 65 76 65 6e 20 77 68 65 6e 20 69 74 20 69 73   even when it is
8fb0: 20 69 6e 76 61 6c 69 64 20 69 66 20 74 68 65 0a   invalid if the.
8fc0: 5c 66 42 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d  \fB-validatecomm
8fd0: 61 6e 64 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73  and\fR option is
8fe0: 20 73 65 74 20 74 6f 20 5c 66 42 74 6c 73 3a 3a   set to \fBtls::
8ff0: 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64  validate_command
9000: 5c 66 52 5c 26 2e 0a 2e 50 50 0a 5c 66 49 54 68  \fR\&...PP.\fITh
9010: 65 20 75 73 65 20 6f 66 20 74 68 65 20 76 61 72  e use of the var
9020: 69 61 62 6c 65 20 5c 66 42 74 6c 73 3a 3a 64 65  iable \fBtls::de
9030: 62 75 67 5c 66 52 20 69 73 20 6e 6f 74 20 72 65  bug\fR is not re
9040: 63 6f 6d 6d 65 6e 64 65 64 5c 26 2e 0a 49 74 20  commended\&..It 
9050: 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20 66  may be removed f
9060: 72 6f 6d 20 66 75 74 75 72 65 20 72 65 6c 65 61  rom future relea
9070: 73 65 73 5c 26 2e 5c 66 52 0a 2e 53 48 20 22 44  ses\&.\fR..SH "D
9080: 45 42 55 47 20 45 58 41 4d 50 4c 45 53 22 0a 54  EBUG EXAMPLES".T
9090: 68 65 73 65 20 65 78 61 6d 70 6c 65 73 20 75 73  hese examples us
90a0: 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 55 6e  e the default Un
90b0: 69 78 20 70 6c 61 74 66 6f 72 6d 20 53 53 4c 20  ix platform SSL 
90c0: 63 65 72 74 69 66 69 63 61 74 65 73 5c 26 2e 20  certificates\&. 
90d0: 46 6f 72 20 73 74 61 6e 64 61 72 64 0a 69 6e 73  For standard.ins
90e0: 74 61 6c 6c 61 74 69 6f 6e 73 2c 20 2d 63 61 64  tallations, -cad
90f0: 69 72 20 61 6e 64 20 2d 63 61 66 69 6c 65 20 73  ir and -cafile s
9100: 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6e 65 65  hould not be nee
9110: 64 65 64 5c 26 2e 20 49 66 20 79 6f 75 72 20 63  ded\&. If your c
9120: 65 72 74 69 66 69 63 61 74 65 73 0a 61 72 65 20  ertificates.are 
9130: 69 6e 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20  in non-standard 
9140: 6c 6f 63 61 74 69 6f 6e 73 2c 20 73 70 65 63 69  locations, speci
9150: 66 79 20 2d 63 61 64 69 72 20 6f 72 20 2d 63 61  fy -cadir or -ca
9160: 66 69 6c 65 20 61 73 20 6e 65 65 64 65 64 5c 26  file as needed\&
9170: 2e 0a 2e 50 50 0a 45 78 61 6d 70 6c 65 20 23 31  ...PP.Example #1
9180: 3a 20 55 73 65 20 48 54 54 50 20 70 61 63 6b 61  : Use HTTP packa
9190: 67 65 0a 2e 43 53 0a 0a 0a 0a 70 61 63 6b 61 67  ge..CS....packag
91a0: 65 20 72 65 71 75 69 72 65 20 68 74 74 70 0a 70  e require http.p
91b0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74  ackage require t
91c0: 6c 73 0a 73 65 74 20 75 72 6c 20 22 68 74 74 70  ls.set url "http
91d0: 73 3a 2f 2f 77 77 77 5c 26 2e 74 63 6c 5c 26 2e  s://www\&.tcl\&.
91e0: 74 6b 2f 22 0a 0a 68 74 74 70 3a 3a 72 65 67 69  tk/"..http::regi
91f0: 73 74 65 72 20 68 74 74 70 73 20 34 34 33 20 5b  ster https 443 [
9200: 6c 69 73 74 20 3a 3a 74 6c 73 3a 3a 73 6f 63 6b  list ::tls::sock
9210: 65 74 20 2d 61 75 74 6f 73 65 72 76 65 72 6e 61  et -autoserverna
9220: 6d 65 20 31 20 2d 72 65 71 75 69 72 65 20 31 20  me 1 -require 1 
9230: 20 2d 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a   -command ::tls:
9240: 3a 63 61 6c 6c 62 61 63 6b 20 2d 70 61 73 73 77  :callback -passw
9250: 6f 72 64 20 3a 3a 74 6c 73 3a 3a 70 61 73 73 77  ord ::tls::passw
9260: 6f 72 64 20 20 2d 76 61 6c 69 64 61 74 65 63 6f  ord  -validateco
9270: 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a 76 61 6c  mmand ::tls::val
9280: 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 5d 0a 0a  idate_command]..
9290: 23 20 43 68 65 63 6b 20 66 6f 72 20 65 72 72 6f  # Check for erro
92a0: 72 0a 73 65 74 20 74 6f 6b 65 6e 20 5b 68 74 74  r.set token [htt
92b0: 70 3a 3a 67 65 74 75 72 6c 20 24 75 72 6c 5d 0a  p::geturl $url].
92c0: 69 66 20 7b 5b 68 74 74 70 3a 3a 73 74 61 74 75  if {[http::statu
92d0: 73 20 24 74 6f 6b 65 6e 5d 20 6e 65 20 22 6f 6b  s $token] ne "ok
92e0: 22 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 5b 66  "} {.    puts [f
92f0: 6f 72 6d 61 74 20 22 45 72 72 6f 72 20 25 73 22  ormat "Error %s"
9300: 20 5b 68 74 74 70 3a 3a 73 74 61 74 75 73 20 24   [http::status $
9310: 74 6f 6b 65 6e 5d 5d 0a 7d 0a 0a 23 20 47 65 74  token]].}..# Get
9320: 20 77 65 62 20 70 61 67 65 0a 73 65 74 20 64 61   web page.set da
9330: 74 61 20 5b 68 74 74 70 3a 3a 64 61 74 61 20 24  ta [http::data $
9340: 74 6f 6b 65 6e 5d 0a 70 75 74 73 20 5b 73 74 72  token].puts [str
9350: 69 6e 67 20 6c 65 6e 67 74 68 20 24 64 61 74 61  ing length $data
9360: 5d 0a 0a 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 68  ]..# Cleanup.::h
9370: 74 74 70 3a 3a 63 6c 65 61 6e 75 70 20 24 74 6f  ttp::cleanup $to
9380: 6b 65 6e 0a 0a 2e 43 45 0a 45 78 61 6d 70 6c 65  ken...CE.Example
9390: 20 23 32 3a 20 55 73 65 20 72 61 77 20 73 6f 63   #2: Use raw soc
93a0: 6b 65 74 0a 2e 43 53 0a 0a 0a 0a 70 61 63 6b 61  ket..CS....packa
93b0: 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 0a  ge require tls..
93c0: 73 65 74 20 75 72 6c 20 22 77 77 77 5c 26 2e 74  set url "www\&.t
93d0: 63 6c 2d 6c 61 6e 67 5c 26 2e 6f 72 67 22 0a 73  cl-lang\&.org".s
93e0: 65 74 20 70 6f 72 74 20 34 34 33 0a 0a 73 65 74  et port 443..set
93f0: 20 63 68 20 5b 74 6c 73 3a 3a 73 6f 63 6b 65 74   ch [tls::socket
9400: 20 2d 61 75 74 6f 73 65 72 76 65 72 6e 61 6d 65   -autoservername
9410: 20 31 20 2d 73 65 72 76 65 72 6e 61 6d 65 20 24   1 -servername $
9420: 75 72 6c 20 2d 72 65 71 75 69 72 65 20 31 20 20  url -require 1  
9430: 2d 61 6c 70 6e 20 7b 68 74 74 70 2f 31 5c 26 2e  -alpn {http/1\&.
9440: 31 7d 20 2d 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c  1} -command ::tl
9450: 73 3a 3a 63 61 6c 6c 62 61 63 6b 20 2d 70 61 73  s::callback -pas
9460: 73 77 6f 72 64 20 3a 3a 74 6c 73 3a 3a 70 61 73  sword ::tls::pas
9470: 73 77 6f 72 64 20 20 2d 76 61 6c 69 64 61 74 65  sword  -validate
9480: 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a 76  command ::tls::v
9490: 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 20  alidate_command 
94a0: 24 75 72 6c 20 24 70 6f 72 74 5d 0a 63 68 61 6e  $url $port].chan
94b0: 20 63 6f 6e 66 69 67 75 72 65 20 24 63 68 20 2d   configure $ch -
94c0: 62 75 66 66 65 72 73 69 7a 65 20 36 35 35 33 36  buffersize 65536
94d0: 0a 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 20  .tls::handshake 
94e0: 24 63 68 0a 0a 70 75 74 73 20 24 63 68 20 22 47  $ch..puts $ch "G
94f0: 45 54 20 2f 20 48 54 54 50 2f 31 5c 26 2e 31 22  ET / HTTP/1\&.1"
9500: 0a 66 6c 75 73 68 20 24 63 68 0a 61 66 74 65 72  .flush $ch.after
9510: 20 35 30 30 0a 73 65 74 20 64 61 74 61 20 5b 72   500.set data [r
9520: 65 61 64 20 24 63 68 5d 0a 0a 61 72 72 61 79 20  ead $ch]..array 
9530: 73 65 74 20 73 74 61 74 75 73 20 5b 74 6c 73 3a  set status [tls:
9540: 3a 73 74 61 74 75 73 20 24 63 68 5d 0a 61 72 72  :status $ch].arr
9550: 61 79 20 73 65 74 20 63 6f 6e 6e 20 5b 74 6c 73  ay set conn [tls
9560: 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 20 24 63 68  ::connection $ch
9570: 5d 0a 61 72 72 61 79 20 73 65 74 20 63 68 61 6e  ].array set chan
9580: 20 5b 63 68 61 6e 20 63 6f 6e 66 69 67 75 72 65   [chan configure
9590: 20 24 63 68 5d 0a 63 6c 6f 73 65 20 24 63 68 0a   $ch].close $ch.
95a0: 70 61 72 72 61 79 20 73 74 61 74 75 73 0a 70 61  parray status.pa
95b0: 72 72 61 79 20 63 6f 6e 6e 0a 70 61 72 72 61 79  rray conn.parray
95c0: 20 63 68 61 6e 0a 0a 2e 43 45 0a 2e 53 48 20 22   chan...CE..SH "
95d0: 48 54 54 50 20 50 41 43 4b 41 47 45 20 45 58 41  HTTP PACKAGE EXA
95e0: 4d 50 4c 45 53 22 0a 54 68 65 73 65 20 65 78 61  MPLES".These exa
95f0: 6d 70 6c 65 73 20 75 73 65 20 74 68 65 20 64 65  mples use the de
9600: 66 61 75 6c 74 20 55 6e 69 78 20 70 6c 61 74 66  fault Unix platf
9610: 6f 72 6d 20 53 53 4c 20 63 65 72 74 69 66 69 63  orm SSL certific
9620: 61 74 65 73 5c 26 2e 20 46 6f 72 20 73 74 61 6e  ates\&. For stan
9630: 64 61 72 64 0a 69 6e 73 74 61 6c 6c 61 74 69 6f  dard.installatio
9640: 6e 73 2c 20 2d 63 61 64 69 72 20 61 6e 64 20 2d  ns, -cadir and -
9650: 63 61 66 69 6c 65 20 73 68 6f 75 6c 64 20 6e 6f  cafile should no
9660: 74 20 62 65 20 6e 65 65 64 65 64 5c 26 2e 20 49  t be needed\&. I
9670: 66 20 79 6f 75 72 20 63 65 72 74 69 66 69 63 61  f your certifica
9680: 74 65 73 0a 61 72 65 20 69 6e 20 6e 6f 6e 2d 73  tes.are in non-s
9690: 74 61 6e 64 61 72 64 20 6c 6f 63 61 74 69 6f 6e  tandard location
96a0: 73 2c 20 73 65 74 20 2d 63 61 64 69 72 20 6f 72  s, set -cadir or
96b0: 20 75 73 65 20 2d 63 61 66 69 6c 65 20 61 73 20   use -cafile as 
96c0: 6e 65 65 64 65 64 5c 26 2e 0a 2e 50 50 0a 45 78  needed\&...PP.Ex
96d0: 61 6d 70 6c 65 20 23 33 3a 20 47 65 74 20 77 65  ample #3: Get we
96e0: 62 20 70 61 67 65 0a 2e 43 53 0a 0a 0a 0a 70 61  b page..CS....pa
96f0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 68 74  ckage require ht
9700: 74 70 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69  tp.package requi
9710: 72 65 20 74 6c 73 0a 73 65 74 20 75 72 6c 20 22  re tls.set url "
9720: 68 74 74 70 73 3a 2f 2f 77 77 77 5c 26 2e 74 63  https://www\&.tc
9730: 6c 5c 26 2e 74 6b 2f 22 0a 0a 68 74 74 70 3a 3a  l\&.tk/"..http::
9740: 72 65 67 69 73 74 65 72 20 68 74 74 70 73 20 34  register https 4
9750: 34 33 20 5b 6c 69 73 74 20 3a 3a 74 6c 73 3a 3a  43 [list ::tls::
9760: 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73 65 72 76  socket -autoserv
9770: 65 72 6e 61 6d 65 20 31 20 2d 72 65 71 75 69 72  ername 1 -requir
9780: 65 20 31 5d 0a 0a 23 20 43 68 65 63 6b 20 66 6f  e 1]..# Check fo
9790: 72 20 65 72 72 6f 72 0a 73 65 74 20 74 6f 6b 65  r error.set toke
97a0: 6e 20 5b 68 74 74 70 3a 3a 67 65 74 75 72 6c 20  n [http::geturl 
97b0: 24 75 72 6c 5d 0a 69 66 20 7b 5b 68 74 74 70 3a  $url].if {[http:
97c0: 3a 73 74 61 74 75 73 20 24 74 6f 6b 65 6e 5d 20  :status $token] 
97d0: 6e 65 20 22 6f 6b 22 7d 20 7b 0a 20 20 20 20 70  ne "ok"} {.    p
97e0: 75 74 73 20 5b 66 6f 72 6d 61 74 20 22 45 72 72  uts [format "Err
97f0: 6f 72 20 25 73 22 20 5b 68 74 74 70 3a 3a 73 74  or %s" [http::st
9800: 61 74 75 73 20 24 74 6f 6b 65 6e 5d 5d 0a 7d 0a  atus $token]].}.
9810: 0a 23 20 47 65 74 20 77 65 62 20 70 61 67 65 0a  .# Get web page.
9820: 73 65 74 20 64 61 74 61 20 5b 68 74 74 70 3a 3a  set data [http::
9830: 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 70 75 74  data $token].put
9840: 73 20 24 64 61 74 61 0a 0a 23 20 43 6c 65 61 6e  s $data..# Clean
9850: 75 70 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e  up.::http::clean
9860: 75 70 20 24 74 6f 6b 65 6e 0a 0a 2e 43 45 0a 45  up $token...CE.E
9870: 78 61 6d 70 6c 65 20 23 34 3a 20 44 6f 77 6e 6c  xample #4: Downl
9880: 6f 61 64 20 66 69 6c 65 0a 2e 43 53 0a 0a 0a 0a  oad file..CS....
9890: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
98a0: 68 74 74 70 0a 70 61 63 6b 61 67 65 20 72 65 71  http.package req
98b0: 75 69 72 65 20 74 6c 73 0a 0a 73 65 74 20 75 72  uire tls..set ur
98c0: 6c 20 22 68 74 74 70 73 3a 2f 2f 77 69 6b 69 5c  l "https://wiki\
98d0: 26 2e 74 63 6c 2d 6c 61 6e 67 5c 26 2e 6f 72 67  &.tcl-lang\&.org
98e0: 2f 73 69 74 65 6d 61 70 5c 26 2e 78 6d 6c 22 0a  /sitemap\&.xml".
98f0: 73 65 74 20 66 69 6c 65 6e 61 6d 65 20 5b 66 69  set filename [fi
9900: 6c 65 20 74 61 69 6c 20 24 75 72 6c 5d 0a 0a 68  le tail $url]..h
9910: 74 74 70 3a 3a 72 65 67 69 73 74 65 72 20 68 74  ttp::register ht
9920: 74 70 73 20 34 34 33 20 5b 6c 69 73 74 20 3a 3a  tps 443 [list ::
9930: 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 75 74  tls::socket -aut
9940: 6f 73 65 72 76 65 72 6e 61 6d 65 20 31 20 2d 72  oservername 1 -r
9950: 65 71 75 69 72 65 20 31 5d 0a 0a 23 20 47 65 74  equire 1]..# Get
9960: 20 66 69 6c 65 0a 73 65 74 20 63 68 20 5b 6f 70   file.set ch [op
9970: 65 6e 20 24 66 69 6c 65 6e 61 6d 65 20 77 62 5d  en $filename wb]
9980: 0a 73 65 74 20 74 6f 6b 65 6e 20 5b 3a 3a 68 74  .set token [::ht
9990: 74 70 3a 3a 67 65 74 75 72 6c 20 24 75 72 6c 20  tp::geturl $url 
99a0: 2d 62 6c 6f 63 6b 73 69 7a 65 20 36 35 35 33 36  -blocksize 65536
99b0: 20 2d 63 68 61 6e 6e 65 6c 20 24 63 68 5d 0a 0a   -channel $ch]..
99c0: 23 20 43 6c 65 61 6e 75 70 0a 63 6c 6f 73 65 20  # Cleanup.close 
99d0: 24 63 68 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65 61  $ch.::http::clea
99e0: 6e 75 70 20 24 74 6f 6b 65 6e 0a 0a 2e 43 45 0a  nup $token...CE.
99f0: 2e 53 48 20 22 53 50 45 43 49 41 4c 20 43 4f 4e  .SH "SPECIAL CON
9a00: 53 49 44 45 52 41 54 49 4f 4e 53 22 0a 54 68 65  SIDERATIONS".The
9a10: 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66   capabilities of
9a20: 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 63 61   this package ca
9a30: 6e 20 76 61 72 79 20 65 6e 6f 72 6d 6f 75 73 6c  n vary enormousl
9a40: 79 20 62 61 73 65 64 20 75 70 6f 6e 20 68 6f 77  y based upon how
9a50: 20 74 68 65 0a 6c 69 6e 6b 65 64 20 74 6f 20 4f   the.linked to O
9a60: 70 65 6e 53 53 4c 20 6c 69 62 72 61 72 79 20 77  penSSL library w
9a70: 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 61 6e  as configured an
9a80: 64 20 62 75 69 6c 74 5c 26 2e 20 4e 65 77 20 76  d built\&. New v
9a90: 65 72 73 69 6f 6e 73 20 6d 61 79 20 6f 62 73 6f  ersions may obso
9aa0: 6c 65 74 65 0a 6f 6c 64 65 72 20 70 72 6f 74 6f  lete.older proto
9ab0: 63 6f 6c 20 76 65 72 73 69 6f 6e 73 2c 20 61 64  col versions, ad
9ac0: 64 20 6f 72 20 72 65 6d 6f 76 65 20 63 69 70 68  d or remove ciph
9ad0: 65 72 73 2c 20 63 68 61 6e 67 65 20 64 65 66 61  ers, change defa
9ae0: 75 6c 74 20 76 61 6c 75 65 73 2c 20 65 74 63 5c  ult values, etc\
9af0: 26 2e 0a 55 73 65 20 74 68 65 20 5c 66 42 74 6c  &..Use the \fBtl
9b00: 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 5c 66 52 20  s::protocols\fR 
9b10: 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 6f 62 74 61  commands to obta
9b20: 69 6e 20 74 68 65 20 73 75 70 70 6f 72 74 65 64  in the supported
9b30: 0a 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f  .protocol versio
9b40: 6e 73 5c 26 2e 0a 2e 53 48 20 22 53 45 45 20 41  ns\&...SH "SEE A
9b50: 4c 53 4f 22 0a 5c 66 49 4f 70 65 6e 53 53 4c 5c  LSO".\fIOpenSSL\
9b60: 66 52 20 5b 68 74 74 70 73 3a 2f 2f 77 77 77 5c  fR [https://www\
9b70: 26 2e 6f 70 65 6e 73 73 6c 5c 26 2e 6f 72 67 2f  &.openssl\&.org/
9b80: 5d 2c 20 68 74 74 70 2c 20 73 6f 63 6b 65 74 0a  ], http, socket.
9b90: 2e 53 48 20 4b 45 59 57 4f 52 44 53 0a 49 2f 4f  .SH KEYWORDS.I/O
9ba0: 2c 20 49 50 20 41 64 64 72 65 73 73 2c 20 4f 70  , IP Address, Op
9bb0: 65 6e 53 53 4c 2c 20 53 53 4c 2c 20 54 43 50 2c  enSSL, SSL, TCP,
9bc0: 20 54 4c 53 2c 20 54 63 6c 54 4c 53 2c 20 61 73   TLS, TclTLS, as
9bd0: 79 6e 63 68 72 6f 6e 6f 75 73 20 49 2f 4f 2c 20  ynchronous I/O, 
9be0: 62 69 6e 64 2c 20 63 65 72 74 69 66 69 63 61 74  bind, certificat
9bf0: 65 2c 20 63 68 61 6e 6e 65 6c 2c 20 63 6f 6e 6e  e, channel, conn
9c00: 65 63 74 69 6f 6e 2c 20 64 6f 6d 61 69 6e 20 6e  ection, domain n
9c10: 61 6d 65 2c 20 68 6f 73 74 2c 20 68 74 74 70 73  ame, host, https
9c20: 2c 20 6e 65 74 77 6f 72 6b 2c 20 6e 65 74 77 6f  , network, netwo
9c30: 72 6b 20 61 64 64 72 65 73 73 2c 20 73 6f 63 6b  rk address, sock
9c40: 65 74 2c 20 74 6c 73 0a 2e 53 48 20 43 41 54 45  et, tls..SH CATE
9c50: 47 4f 52 59 0a 74 6c 73 0a 2e 53 48 20 43 4f 50  GORY.tls..SH COP
9c60: 59 52 49 47 48 54 0a 2e 6e 66 0a 43 6f 70 79 72  YRIGHT..nf.Copyr
9c70: 69 67 68 74 20 28 63 29 20 31 39 39 39 20 4d 61  ight (c) 1999 Ma
9c80: 74 74 20 4e 65 77 6d 61 6e 0a 43 6f 70 79 72 69  tt Newman.Copyri
9c90: 67 68 74 20 28 63 29 20 32 30 30 34 20 53 74 61  ght (c) 2004 Sta
9ca0: 72 66 69 73 68 20 53 79 73 74 65 6d 73 0a 43 6f  rfish Systems.Co
9cb0: 70 79 72 69 67 68 74 20 28 63 29 20 32 30 32 34  pyright (c) 2024
9cc0: 20 42 72 69 61 6e 20 4f 27 48 61 67 61 6e 0a 0a   Brian O'Hagan..
9cd0: 2e 66 69 0a                                      .fi.