Hex Artifact Content

Artifact 02cd2779a57a9183c57588119879d17951f1be755b1a4408072bca3974d90e5e:


0000: 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a  <!DOCTYPE html>.
0010: 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 65 6e 22 3e  <html lang="en">
0020: 0a 3c 68 65 61 64 3e 0a 3c 6d 65 74 61 20 68 74  .<head>.<meta ht
0030: 74 70 2d 65 71 75 69 76 3d 22 43 6f 6e 74 65 6e  tp-equiv="Conten
0040: 74 2d 54 79 70 65 22 20 63 6f 6e 74 65 6e 74 3d  t-Type" content=
0050: 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72  "text/html; char
0060: 73 65 74 3d 75 74 66 2d 38 22 3e 0a 3c 6d 65 74  set=utf-8">.<met
0070: 61 20 6e 61 6d 65 3d 22 43 6f 70 79 72 69 67 68  a name="Copyrigh
0080: 74 22 20 63 6f 6e 74 65 6e 74 3d 22 31 39 39 39  t" content="1999
0090: 20 4d 61 74 74 20 4e 65 77 6d 61 6e 20 2f 20 32   Matt Newman / 2
00a0: 30 30 34 20 53 74 61 72 66 69 73 68 20 53 79 73  004 Starfish Sys
00b0: 74 65 6d 73 22 3e 0a 3c 74 69 74 6c 65 3e 54 4c  tems">.<title>TL
00c0: 53 20 28 53 53 4c 29 20 54 43 4c 20 43 6f 6d 6d  S (SSL) TCL Comm
00d0: 61 6e 64 73 3c 2f 74 69 74 6c 65 3e 0a 3c 6c 69  ands</title>.<li
00e0: 6e 6b 20 72 65 6c 3d 22 73 74 79 6c 65 73 68 65  nk rel="styleshe
00f0: 65 74 22 20 68 72 65 66 3d 22 64 6f 63 73 2e 63  et" href="docs.c
0100: 73 73 22 20 74 79 70 65 3d 22 74 65 78 74 2f 63  ss" type="text/c
0110: 73 73 22 20 6d 65 64 69 61 3d 22 61 6c 6c 22 3e  ss" media="all">
0120: 0a 3c 2f 68 65 61 64 3e 0a 0a 3c 62 6f 64 79 20  .</head>..<body 
0130: 63 6c 61 73 73 3d 22 76 73 63 2d 69 6e 69 74 69  class="vsc-initi
0140: 61 6c 69 7a 65 64 22 3e 0a 0a 3c 68 32 3e 54 43  alized">..<h2>TC
0150: 4c 20 54 6c 73 20 45 78 74 65 6e 73 69 6f 6e 20  L Tls Extension 
0160: 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 68  Documentation</h
0170: 32 3e 0a 0a 3c 64 6c 3e 0a 20 20 20 20 3c 64 64  2>..<dl>.    <dd
0180: 3e 3c 61 20 68 72 65 66 3d 22 23 4e 41 4d 45 22  ><a href="#NAME"
0190: 3e 4e 41 4d 45 3c 2f 61 3e 0a 20 20 20 20 3c 64  >NAME</a>.    <d
01a0: 6c 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c 73 3c 2f  l>..<dd><b>tls</
01b0: 62 3e 20 2d 20 62 69 6e 64 69 6e 67 20 74 6f 20  b> - binding to 
01c0: 3c 62 3e 4f 70 65 6e 53 53 4c 3c 2f 62 3e 20 6c  <b>OpenSSL</b> l
01d0: 69 62 72 61 72 79 0a 09 66 6f 72 20 65 6e 63 72  ibrary..for encr
01e0: 79 70 74 65 64 20 73 6f 63 6b 65 74 20 61 6e 64  ypted socket and
01f0: 20 49 2f 4f 20 63 68 61 6e 6e 65 6c 20 63 6f 6d   I/O channel com
0200: 6d 75 6e 69 63 61 74 69 6f 6e 73 2e 3c 2f 64 64  munications.</dd
0210: 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20  >.    </dl>.    
0220: 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61  </dd>.    <dd><a
0230: 20 68 72 65 66 3d 22 23 53 59 4e 4f 50 53 49 53   href="#SYNOPSIS
0240: 22 3e 53 59 4e 4f 50 53 49 53 3c 2f 61 3e 20 3c  ">SYNOPSIS</a> <
0250: 2f 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 64 6c  /dd>.    <dd><dl
0260: 3e 0a 09 3c 64 64 3e 3c 62 3e 70 61 63 6b 61 67  >..<dd><b>packag
0270: 65 20 72 65 71 75 69 72 65 20 54 63 6c 3c 2f 62  e require Tcl</b
0280: 3e 20 3c 65 6d 3e 3f 3c 62 3e 38 2e 35 2d 3c 2f  > <em>?<b>8.5-</
0290: 62 3e 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c  b>?</em></dd>..<
02a0: 64 64 3e 3c 62 3e 70 61 63 6b 61 67 65 20 72 65  dd><b>package re
02b0: 71 75 69 72 65 20 74 6c 73 3c 2f 62 3e 20 3c 65  quire tls</b> <e
02c0: 6d 3e 3f 3c 62 3e 31 2e 38 2d 3c 2f 62 3e 3f 3c  m>?<b>1.8-</b>?<
02d0: 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 26  /em></dd>..<dt>&
02e0: 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09 3c 64 64 3e  nbsp;</dt>..<dd>
02f0: 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74 3c 2f 62 3e  <b>tls::init</b>
0300: 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 3c 2f   <em>?options?</
0310: 65 6d 3e 20 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c  em> </dd>..<dd><
0320: 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62  b>tls::socket</b
0330: 3e 20 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 20  > <em>?options? 
0340: 68 6f 73 74 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f  host port</em></
0350: 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c 73 3a  dd>..<dd><b>tls:
0360: 3a 73 6f 63 6b 65 74 3c 2f 62 3e 20 3c 65 6d 3e  :socket</b> <em>
0370: 3f 2d 73 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64  ?-server command
0380: 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20 70 6f 72 74  ? ?options? port
0390: 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 64 64 3e  </em></dd>..<dd>
03a0: 3c 62 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b  <b>tls::handshak
03b0: 65 3c 2f 62 3e 20 3c 65 6d 3e 20 63 68 61 6e 6e  e</b> <em> chann
03c0: 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c 64  el</em></dd>..<d
03d0: 64 3e 3c 62 3e 74 6c 73 3a 3a 73 74 61 74 75 73  d><b>tls::status
03e0: 3c 2f 62 3e 20 3c 65 6d 3e 3f 2d 6c 6f 63 61 6c  </b> <em>?-local
03f0: 3f 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f  ? channel</em></
0400: 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c 73 3a  dd>..<dd><b>tls:
0410: 3a 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 62 3e 20  :connection</b> 
0420: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e  <em>channel</em>
0430: 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74 6c  </dd>..<dd><b>tl
0440: 73 3a 3a 69 6d 70 6f 72 74 3c 2f 62 3e 20 3c 65  s::import</b> <e
0450: 6d 3e 63 68 61 6e 6e 65 6c 20 3f 6f 70 74 69 6f  m>channel ?optio
0460: 6e 73 3f 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c  ns?</em></dd>..<
0470: 64 64 3e 3c 62 3e 74 6c 73 3a 3a 75 6e 69 6d 70  dd><b>tls::unimp
0480: 6f 72 74 3c 2f 62 3e 20 3c 65 6d 3e 63 68 61 6e  ort</b> <em>chan
0490: 6e 65 6c 3c 2f 65 6d 3e 3c 2f 64 64 3e 0a 09 3c  nel</em></dd>..<
04a0: 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a 09  dt>&nbsp;</dt>..
04b0: 3c 64 64 3e 3c 62 3e 74 6c 73 3a 3a 63 69 70 68  <dd><b>tls::ciph
04c0: 65 72 73 3c 2f 62 3e 20 3c 65 6d 3e 3f 70 72 6f  ers</b> <em>?pro
04d0: 74 6f 63 6f 6c 3f 20 3f 76 65 72 62 6f 73 65 3f  tocol? ?verbose?
04e0: 20 3f 73 75 70 70 6f 72 74 65 64 3f 3c 2f 65 6d   ?supported?</em
04f0: 3e 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74  ></dd>..<dd><b>t
0500: 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 62  ls::protocols</b
0510: 3e 3c 2f 64 64 3e 0a 09 3c 64 64 3e 3c 62 3e 74  ></dd>..<dd><b>t
0520: 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c  ls::version</b><
0530: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 3c 2f  /dd>.    </dl></
0540: 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68  dd>.    <dd><a h
0550: 72 65 66 3d 22 23 43 4f 4d 4d 41 4e 44 53 22 3e  ref="#COMMANDS">
0560: 43 4f 4d 4d 41 4e 44 53 3c 2f 61 3e 3c 2f 64 64  COMMANDS</a></dd
0570: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65  >.    <dd><a hre
0580: 66 3d 22 23 43 45 52 54 49 46 49 43 41 54 45 20  f="#CERTIFICATE 
0590: 56 41 4c 49 44 41 54 49 4f 4e 22 3e 43 45 52 54  VALIDATION">CERT
05a0: 49 46 49 43 41 54 45 20 56 41 4c 49 44 41 54 49  IFICATE VALIDATI
05b0: 4f 4e 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20 20 20  ON</a></dd>.    
05c0: 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 43 41  <dd><a href="#CA
05d0: 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e  LLBACK OPTIONS">
05e0: 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53  CALLBACK OPTIONS
05f0: 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64  </a></dd>.    <d
0600: 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 45 42 55  d><a href="#DEBU
0610: 47 22 3e 44 45 42 55 47 3c 2f 61 3e 3c 2f 64 64  G">DEBUG</a></dd
0620: 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68 72 65  >.    <dd><a hre
0630: 66 3d 22 23 48 54 54 50 53 20 45 58 41 4d 50 4c  f="#HTTPS EXAMPL
0640: 45 22 3e 48 54 54 50 53 20 45 58 41 4d 50 4c 45  E">HTTPS EXAMPLE
0650: 3c 2f 61 3e 3c 2f 64 64 3e 0a 20 20 20 20 3c 64  </a></dd>.    <d
0660: 64 3e 3c 61 20 68 72 65 66 3d 22 23 53 50 45 43  d><a href="#SPEC
0670: 49 41 4c 20 43 4f 4e 53 49 44 45 52 41 54 49 4f  IAL CONSIDERATIO
0680: 4e 53 22 3e 53 50 45 43 49 41 4c 20 43 4f 4e 53  NS">SPECIAL CONS
0690: 49 44 45 52 41 54 49 4f 4e 53 3c 2f 61 3e 3c 2f  IDERATIONS</a></
06a0: 64 64 3e 0a 20 20 20 20 3c 64 64 3e 3c 61 20 68  dd>.    <dd><a h
06b0: 72 65 66 3d 22 23 53 45 45 20 41 4c 53 4f 22 3e  ref="#SEE ALSO">
06c0: 53 45 45 20 41 4c 53 4f 3c 2f 61 3e 3c 2f 64 64  SEE ALSO</a></dd
06d0: 3e 0a 3c 2f 64 6c 3e 0a 3c 62 72 3e 0a 0a 3c 68  >.</dl>.<br>..<h
06e0: 72 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d  r>..<h3><a name=
06f0: 22 4e 41 4d 45 22 3e 4e 41 4d 45 3c 2f 61 3e 3c  "NAME">NAME</a><
0700: 2f 68 33 3e 0a 0a 3c 70 3e 3c 73 74 72 6f 6e 67  /h3>..<p><strong
0710: 3e 74 6c 73 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20  >tls</strong> - 
0720: 62 69 6e 64 69 6e 67 20 74 6f 20 3c 73 74 72 6f  binding to <stro
0730: 6e 67 3e 4f 70 65 6e 53 53 4c 3c 2f 73 74 72 6f  ng>OpenSSL</stro
0740: 6e 67 3e 20 6c 69 62 72 61 72 79 0a 66 6f 72 20  ng> library.for 
0750: 65 6e 63 72 79 70 74 65 64 20 73 6f 63 6b 65 74  encrypted socket
0760: 20 61 6e 64 20 49 2f 4f 20 63 68 61 6e 6e 65 6c   and I/O channel
0770: 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 2e   communications.
0780: 3c 2f 70 3e 0a 3c 62 72 3e 0a 0a 3c 68 72 3e 0a  </p>.<br>..<hr>.
0790: 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 53 59  .<h3><a name="SY
07a0: 4e 4f 50 53 49 53 22 3e 53 59 4e 4f 50 53 49 53  NOPSIS">SYNOPSIS
07b0: 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 3c 62  </a></h3>..<p><b
07c0: 3e 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  >package require
07d0: 20 54 63 6c 3c 2f 62 3e 20 3c 65 6d 3e 3f 3c 62   Tcl</b> <em>?<b
07e0: 3e 38 2e 35 2d 3c 2f 62 3e 3f 3c 2f 65 6d 3e 3c  >8.5-</b>?</em><
07f0: 62 72 3e 0a 3c 62 3e 70 61 63 6b 61 67 65 20 72  br>.<b>package r
0800: 65 71 75 69 72 65 20 74 6c 73 3c 2f 62 3e 20 3c  equire tls</b> <
0810: 65 6d 3e 3f 3c 62 3e 31 2e 38 2d 3c 2f 62 3e 3f  em>?<b>1.8-</b>?
0820: 3c 2f 65 6d 3e 3c 62 72 3e 0a 3c 62 72 3e 0a 3c  </em><br>.<br>.<
0830: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 69 6e  a href="#tls::in
0840: 69 74 22 3e 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74  it"><b>tls::init
0850: 3c 2f 62 3e 20 3c 69 3e 3f 6f 70 74 69 6f 6e 73  </b> <i>?options
0860: 3f 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61  ?</i></a><br>.<a
0870: 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 73 6f 63   href="#tls::soc
0880: 6b 65 74 22 3e 3c 62 3e 74 6c 73 3a 3a 73 6f 63  ket"><b>tls::soc
0890: 6b 65 74 3c 2f 62 3e 20 3c 69 3e 3f 6f 70 74 69  ket</b> <i>?opti
08a0: 6f 6e 73 3f 20 68 6f 73 74 20 70 6f 72 74 3c 2f  ons? host port</
08b0: 69 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22  i><br>.<a href="
08c0: 23 74 6c 73 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62  #tls::socket"><b
08d0: 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f 62 3e  >tls::socket</b>
08e0: 20 3c 69 3e 3f 2d 73 65 72 76 65 72 20 63 6f 6d   <i>?-server com
08f0: 6d 61 6e 64 3f 20 3f 6f 70 74 69 6f 6e 73 3f 20  mand? ?options? 
0900: 70 6f 72 74 3c 2f 69 3e 3c 2f 61 3e 3c 62 72 3e  port</i></a><br>
0910: 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a  .<a href="#tls::
0920: 73 74 61 74 75 73 22 3e 3c 62 3e 74 6c 73 3a 3a  status"><b>tls::
0930: 73 74 61 74 75 73 3c 2f 62 3e 20 3c 69 3e 3f 2d  status</b> <i>?-
0940: 6c 6f 63 61 6c 3f 20 63 68 61 6e 6e 65 6c 3c 2f  local? channel</
0950: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72  i></a><br>.<a hr
0960: 65 66 3d 22 23 74 6c 73 3a 3a 63 6f 6e 6e 65 63  ef="#tls::connec
0970: 74 69 6f 6e 22 3e 3c 62 3e 74 6c 73 3a 3a 63 6f  tion"><b>tls::co
0980: 6e 6e 65 63 74 69 6f 6e 3c 2f 62 3e 20 3c 69 3e  nnection</b> <i>
0990: 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f 61 3e 3c  channel</i></a><
09a0: 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c  br>.<a href="#tl
09b0: 73 3a 3a 68 61 6e 64 73 68 61 6b 65 22 3e 3c 62  s::handshake"><b
09c0: 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 3c  >tls::handshake<
09d0: 2f 62 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f  /b> <i>channel</
09e0: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68 72  i></a><br>.<a hr
09f0: 65 66 3d 22 23 74 6c 73 3a 3a 69 6d 70 6f 72 74  ef="#tls::import
0a00: 22 3e 3c 62 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74  "><b>tls::import
0a10: 3c 2f 62 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 20  </b> <i>channel 
0a20: 3f 6f 70 74 69 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61  ?options?</i></a
0a30: 3e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23  ><br>.<a href="#
0a40: 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c  tls::unimport"><
0a50: 62 3e 74 6c 73 3a 3a 75 6e 69 6d 70 6f 72 74 3c  b>tls::unimport<
0a60: 2f 62 3e 20 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f  /b> <i>channel</
0a70: 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 62 72 3e 0a  i></a><br>.<br>.
0a80: 3c 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 63  <a href="#tls::c
0a90: 69 70 68 65 72 73 22 3e 3c 62 3e 74 6c 73 3a 3a  iphers"><b>tls::
0aa0: 63 69 70 68 65 72 73 3c 2f 62 3e 20 3c 69 3e 3f  ciphers</b> <i>?
0ab0: 70 72 6f 74 6f 63 6f 6c 3f 20 3f 76 65 72 62 6f  protocol? ?verbo
0ac0: 73 65 3f 20 3f 73 75 70 70 6f 72 74 65 64 3f 3c  se? ?supported?<
0ad0: 2f 69 3e 3c 2f 61 3e 3c 62 72 3e 0a 3c 61 20 68  /i></a><br>.<a h
0ae0: 72 65 66 3d 22 23 74 6c 73 3a 3a 70 72 6f 74 6f  ref="#tls::proto
0af0: 63 6f 6c 73 22 3e 3c 62 3e 74 6c 73 3a 3a 70 72  cols"><b>tls::pr
0b00: 6f 74 6f 63 6f 6c 73 3c 2f 62 3e 3c 2f 61 3e 3c  otocols</b></a><
0b10: 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 23 74 6c  br>.<a href="#tl
0b20: 73 3a 3a 76 65 72 73 69 6f 6e 22 3e 3c 62 3e 74  s::version"><b>t
0b30: 6c 73 3a 3a 76 65 72 73 69 6f 6e 3c 2f 62 3e 3c  ls::version</b><
0b40: 2f 61 3e 3c 62 72 3e 0a 3c 2f 70 3e 0a 3c 62 72  /a><br>.</p>.<br
0b50: 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20  >..<hr>..<h3><a 
0b60: 6e 61 6d 65 3d 22 44 45 53 43 52 49 50 54 49 4f  name="DESCRIPTIO
0b70: 4e 22 3e 44 45 53 43 52 49 50 54 49 4f 4e 3c 2f  N">DESCRIPTION</
0b80: 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 69 73  a></h3>..<p>This
0b90: 20 65 78 74 65 6e 73 69 6f 6e 20 70 72 6f 76 69   extension provi
0ba0: 64 65 73 20 54 43 4c 20 73 63 72 69 70 74 20 61  des TCL script a
0bb0: 63 63 65 73 73 20 74 6f 20 73 65 63 75 72 65 20  ccess to secure 
0bc0: 73 6f 63 6b 65 74 20 63 6f 6d 6d 75 6e 69 63 61  socket communica
0bd0: 74 69 6f 6e 73 0a 75 73 69 6e 67 20 74 68 65 20  tions.using the 
0be0: 54 72 61 6e 73 70 6f 72 74 20 4c 61 79 65 72 20  Transport Layer 
0bf0: 53 65 63 75 72 69 74 79 20 28 54 4c 53 29 20 70  Security (TLS) p
0c00: 72 6f 74 6f 63 6f 6c 2e 20 49 74 20 70 72 6f 76  rotocol. It prov
0c10: 69 64 65 73 20 61 20 67 65 6e 65 72 69 63 0a 62  ides a generic.b
0c20: 69 6e 64 69 6e 67 20 74 6f 20 3c 61 20 68 72 65  inding to <a hre
0c30: 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 6f  f="https://www.o
0c40: 70 65 6e 73 73 6c 2e 6f 72 67 2f 22 3e 4f 70 65  penssl.org/">Ope
0c50: 6e 53 53 4c 3c 2f 61 3e 2c 20 75 74 69 6c 69 7a  nSSL</a>, utiliz
0c60: 69 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e  ing the.<strong>
0c70: 54 63 6c 5f 53 74 61 63 6b 43 68 61 6e 6e 65 6c  Tcl_StackChannel
0c80: 3c 2f 73 74 72 6f 6e 67 3e 20 41 50 49 20 69 6e  </strong> API in
0c90: 20 54 43 4c 20 38 2e 34 20 61 6e 64 20 68 69 67   TCL 8.4 and hig
0ca0: 68 65 72 2e 0a 54 68 65 73 65 20 73 6f 63 6b 65  her..These socke
0cb0: 74 73 20 62 65 68 61 76 65 20 65 78 61 63 74 6c  ts behave exactl
0cc0: 79 20 74 68 65 20 73 61 6d 65 20 61 73 20 63 68  y the same as ch
0cd0: 61 6e 6e 65 6c 73 20 63 72 65 61 74 65 64 20 75  annels created u
0ce0: 73 69 6e 67 20 74 68 65 20 62 75 69 6c 74 2d 69  sing the built-i
0cf0: 6e 0a 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 74  n.<strong>socket
0d00: 3c 2f 73 74 72 6f 6e 67 3e 20 63 6f 6d 6d 61 6e  </strong> comman
0d10: 64 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 64  d, along with ad
0d20: 64 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 73  ditional options
0d30: 20 66 6f 72 20 63 6f 6e 74 72 6f 6c 6c 69 6e 67   for controlling
0d40: 0a 74 68 65 20 53 53 4c 2f 54 4c 53 20 73 65 73  .the SSL/TLS ses
0d50: 73 69 6f 6e 2e 0a 3c 2f 70 3e 0a 3c 62 72 3e 0a  sion..</p>.<br>.
0d60: 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61  .<hr>..<h3><a na
0d70: 6d 65 3d 22 43 4f 4d 4d 41 4e 44 53 22 3e 43 4f  me="COMMANDS">CO
0d80: 4d 4d 41 4e 44 53 3c 2f 61 3e 3c 2f 68 33 3e 0a  MMANDS</a></h3>.
0d90: 0a 3c 70 3e 54 79 70 69 63 61 6c 6c 79 20 6f 6e  .<p>Typically on
0da0: 65 20 77 6f 75 6c 64 20 75 73 65 20 74 68 65 20  e would use the 
0db0: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63  <strong>tls::soc
0dc0: 6b 65 74 20 3c 2f 73 74 72 6f 6e 67 3e 63 6f 6d  ket </strong>com
0dd0: 6d 61 6e 64 0a 77 68 69 63 68 20 70 72 6f 76 69  mand.which provi
0de0: 64 65 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  des compatibilit
0df0: 79 20 77 69 74 68 20 74 68 65 20 6e 61 74 69 76  y with the nativ
0e00: 65 20 54 43 4c 20 3c 73 74 72 6f 6e 67 3e 73 6f  e TCL <strong>so
0e10: 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 0a 63 6f  cket</strong>.co
0e20: 6d 6d 61 6e 64 2e 20 49 6e 20 73 75 63 68 20 63  mmand. In such c
0e30: 61 73 65 73 20 3c 73 74 72 6f 6e 67 3e 74 6c 73  ases <strong>tls
0e40: 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67  ::import</strong
0e50: 3e 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 0a  > should not be.
0e60: 75 73 65 64 20 64 69 72 65 63 74 6c 79 2e 3c 2f  used directly.</
0e70: 70 3e 0a 3c 64 6c 3e 0a 20 20 20 20 3c 64 74 3e  p>.<dl>.    <dt>
0e80: 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 69 6e  <a name="tls::in
0e90: 69 74 22 3e 3c 62 3e 74 6c 73 3a 3a 69 6e 69 74  it"><b>tls::init
0ea0: 20 3c 2f 62 3e 3c 69 3e 3f 6f 70 74 69 6f 6e 73   </b><i>?options
0eb0: 3f 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20  ?</i></a></dt>. 
0ec0: 20 20 20 3c 64 64 3e 4f 70 74 69 6f 6e 61 6c 20     <dd>Optional 
0ed0: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 74 20  function to set 
0ee0: 74 68 65 20 64 65 66 61 75 6c 74 20 6f 70 74 69  the default opti
0ef0: 6f 6e 73 20 75 73 65 64 20 62 79 0a 09 3c 73 74  ons used by..<st
0f00: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74  rong>tls::socket
0f10: 3c 2f 73 74 72 6f 6e 67 3e 2e 20 49 66 20 79 6f  </strong>. If yo
0f20: 75 20 63 61 6c 6c 20 3c 73 74 72 6f 6e 67 3e 74  u call <strong>t
0f30: 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f  ls::import</stro
0f40: 6e 67 3e 0a 09 64 69 72 65 63 74 6c 79 2c 20 74  ng>..directly, t
0f50: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 68 61 73 20  his command has 
0f60: 6e 6f 20 65 66 66 65 63 74 2e 20 54 68 69 73 20  no effect. This 
0f70: 63 6f 6d 6d 61 6e 64 20 73 75 70 70 6f 72 74 73  command supports
0f80: 20 61 6c 6c 20 6f 66 20 74 68 65 0a 09 73 61 6d   all of the..sam
0f90: 65 20 6f 70 74 69 6f 6e 73 20 61 73 20 74 68 65  e options as the
0fa0: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 73 6f   <strong>tls::so
0fb0: 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 20 63 6f  cket</strong> co
0fc0: 6d 6d 61 6e 64 2c 20 74 68 6f 75 67 68 20 79 6f  mmand, though yo
0fd0: 75 0a 09 73 68 6f 75 6c 64 20 6c 69 6d 69 74 20  u..should limit 
0fe0: 79 6f 75 72 20 6f 70 74 69 6f 6e 73 20 74 6f 20  your options to 
0ff0: 6f 6e 6c 79 20 54 4c 53 20 72 65 6c 61 74 65 64  only TLS related
1000: 20 6f 6e 65 73 2e 3c 2f 64 64 3e 0a 20 20 20 20   ones.</dd>.    
1010: 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e 0a  <dt>&nbsp;</dt>.
1020: 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d      <dt><a name=
1030: 22 74 6c 73 3a 3a 73 6f 63 6b 65 74 22 3e 3c 62  "tls::socket"><b
1040: 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 3c 2f 62  >tls::socket </b
1050: 3e 3c 65 6d 3e 3f 6f 70 74 69 6f 6e 73 3f 0a 09  ><em>?options?..
1060: 68 6f 73 74 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f  host port</em></
1070: 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e  a></dt>.    <dt>
1080: 3c 62 3e 74 6c 73 3a 3a 73 6f 63 6b 65 74 3c 2f  <b>tls::socket</
1090: 62 3e 3c 65 6d 3e 20 3f 2d 73 65 72 76 65 72 20  b><em> ?-server 
10a0: 63 6f 6d 6d 61 6e 64 3f 20 3f 6f 70 74 69 6f 6e  command? ?option
10b0: 73 3f 20 70 6f 72 74 3c 2f 65 6d 3e 3c 2f 64 74  s? port</em></dt
10c0: 3e 0a 20 20 20 20 3c 64 64 3e 54 68 69 73 20 69  >.    <dd>This i
10d0: 73 20 61 20 68 65 6c 70 65 72 20 66 75 6e 63 74  s a helper funct
10e0: 69 6f 6e 20 74 68 61 74 20 75 74 69 6c 69 7a 65  ion that utilize
10f0: 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
1100: 20 63 6f 6d 6d 61 6e 64 73 0a 09 28 3c 73 74 72   commands..(<str
1110: 6f 6e 67 3e 73 6f 63 6b 65 74 3c 2f 73 74 72 6f  ong>socket</stro
1120: 6e 67 3e 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e  ng> and <strong>
1130: 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74 72  tls::import</str
1140: 6f 6e 67 3e 29 20 74 6f 20 63 72 65 61 74 65 0a  ong>) to create.
1150: 09 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  .the connection.
1160: 20 49 74 20 62 65 68 61 76 65 73 20 74 68 65 20   It behaves the 
1170: 73 61 6d 65 20 61 73 20 74 68 65 20 6e 61 74 69  same as the nati
1180: 76 65 20 54 43 4c 20 3c 73 74 72 6f 6e 67 3e 73  ve TCL <strong>s
1190: 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e 0a 09  ocket</strong>..
11a0: 63 6f 6d 6d 61 6e 64 2c 20 62 75 74 20 61 6c 73  command, but als
11b0: 6f 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 3c  o supports the <
11c0: 61 20 68 72 65 66 3d 22 23 74 6c 73 3a 3a 69 6d  a href="#tls::im
11d0: 70 6f 72 74 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  port"><strong>tl
11e0: 73 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67  s:import</strong
11f0: 3e 3c 2f 61 3e 0a 09 63 6f 6d 6d 61 6e 64 20 6f  ></a>..command o
1200: 70 74 69 6f 6e 73 20 61 6e 64 20 6f 6e 65 20 61  ptions and one a
1210: 64 64 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e  dditional option
1220: 3a 3c 2f 64 64 3e 0a 20 20 20 20 3c 64 6c 3e 3c  :</dd>.    <dl><
1230: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 09 3c 64 74  blockquote>..<dt
1240: 3e 3c 73 74 72 6f 6e 67 3e 2d 61 75 74 6f 73 65  ><strong>-autose
1250: 72 76 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67  rvername</strong
1260: 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c  > <em>bool</em><
1270: 2f 64 74 3e 0a 09 3c 64 64 3e 41 75 74 6f 6d 61  /dt>..<dd>Automa
1280: 74 69 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20  tically set the 
1290: 2d 73 65 72 76 65 72 6e 61 6d 65 20 61 72 67 75  -servername argu
12a0: 6d 65 6e 74 20 74 6f 20 74 68 65 20 3c 65 6d 3e  ment to the <em>
12b0: 68 6f 73 74 3c 2f 65 6d 3e 0a 09 61 72 67 75 6d  host</em>..argum
12c0: 65 6e 74 20 28 64 65 66 61 75 6c 74 20 69 73 20  ent (default is 
12d0: 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 2e  <em>false</em>).
12e0: 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f 62 6c 6f 63  </dd>.    </bloc
12f0: 6b 71 75 6f 74 65 3e 3c 2f 64 6c 3e 0a 0a 20 20  kquote></dl>..  
1300: 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74    <dt><a name="t
1310: 6c 73 3a 3a 69 6d 70 6f 72 74 22 3e 3c 62 3e 74  ls::import"><b>t
1320: 6c 73 3a 3a 69 6d 70 6f 72 74 20 3c 2f 62 3e 3c  ls::import </b><
1330: 69 3e 63 68 61 6e 6e 65 6c 0a 09 3f 6f 70 74 69  i>channel..?opti
1340: 6f 6e 73 3f 3c 2f 69 3e 3c 2f 61 3e 3c 2f 64 74  ons?</i></a></dt
1350: 3e 0a 20 20 20 20 3c 64 64 3e 41 64 64 20 53 53  >.    <dd>Add SS
1360: 4c 2f 54 4c 53 20 65 6e 63 72 79 70 74 69 6f 6e  L/TLS encryption
1370: 20 74 6f 20 61 20 72 65 67 75 6c 61 72 20 54 43   to a regular TC
1380: 4c 20 63 68 61 6e 6e 65 6c 2e 20 49 74 20 6e 65  L channel. It ne
1390: 65 64 0a 09 6e 6f 74 20 62 65 20 61 20 73 6f 63  ed..not be a soc
13a0: 6b 65 74 2c 20 62 75 74 20 6d 75 73 74 20 70 72  ket, but must pr
13b0: 6f 76 69 64 65 20 62 69 2d 64 69 72 65 63 74 69  ovide bi-directi
13c0: 6f 6e 61 6c 20 66 6c 6f 77 2e 20 41 6c 73 6f 0a  onal flow. Also.
13d0: 09 73 65 74 20 73 65 73 73 69 6f 6e 20 70 61 72  .set session par
13e0: 61 6d 65 74 65 72 73 20 66 6f 72 20 53 53 4c 20  ameters for SSL 
13f0: 68 61 6e 64 73 68 61 6b 65 2e 3c 2f 64 64 3e 0a  handshake.</dd>.
1400: 20 20 20 20 3c 64 6c 3e 3c 62 6c 6f 63 6b 71 75      <dl><blockqu
1410: 6f 74 65 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  ote>..<dt><stron
1420: 67 3e 2d 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e  g>-alpn</strong>
1430: 20 3c 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f   <em>list</em></
1440: 64 74 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66  dt>..<dd>List of
1450: 20 70 72 6f 74 6f 63 6f 6c 73 20 74 6f 20 6f 66   protocols to of
1460: 66 65 72 20 64 75 72 69 6e 67 20 41 70 70 6c 69  fer during Appli
1470: 63 61 74 69 6f 6e 2d 4c 61 79 65 72 0a 09 20 20  cation-Layer..  
1480: 20 20 50 72 6f 74 6f 63 6f 6c 20 4e 65 67 6f 74    Protocol Negot
1490: 69 61 74 69 6f 6e 20 28 41 4c 50 4e 29 2e 20 46  iation (ALPN). F
14a0: 6f 72 20 65 78 61 6d 70 6c 65 3a 20 3c 65 6d 3e  or example: <em>
14b0: 68 32 3c 2f 65 6d 3e 20 61 6e 64 0a 09 20 20 20  h2</em> and..   
14c0: 20 3c 65 6d 3e 68 74 74 70 2f 31 2e 31 3c 2f 65   <em>http/1.1</e
14d0: 6d 3e 2c 20 62 75 74 20 6e 6f 74 20 3c 65 6d 3e  m>, but not <em>
14e0: 68 33 3c 2f 65 6d 3e 20 6f 72 20 3c 65 6d 3e 71  h3</em> or <em>q
14f0: 75 69 63 3c 2f 65 6d 3e 2e 3c 2f 64 64 3e 0a 09  uic</em>.</dd>..
1500: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 61 64  <dt><strong>-cad
1510: 69 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ir</strong> <em>
1520: 64 69 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c  dir</em></dt>..<
1530: 64 64 3e 53 70 65 63 69 66 69 65 73 20 74 68 65  dd>Specifies the
1540: 20 64 69 72 65 63 74 6f 72 79 20 77 68 65 72 65   directory where
1550: 20 74 68 65 20 43 65 72 74 69 66 69 63 61 74 65   the Certificate
1560: 20 41 75 74 68 6f 72 69 74 79 20 28 43 41 29 0a   Authority (CA).
1570: 09 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65  .    certificate
1580: 73 20 61 72 65 20 73 74 6f 72 65 64 2e 20 54 68  s are stored. Th
1590: 65 20 64 65 66 61 75 6c 74 20 69 73 20 70 6c 61  e default is pla
15a0: 74 66 6f 72 6d 20 73 70 65 63 69 66 69 63 20 61  tform specific a
15b0: 6e 64 20 63 61 6e 20 62 65 0a 09 20 20 20 20 73  nd can be..    s
15c0: 65 74 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69  et at compile ti
15d0: 6d 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  me. The default 
15e0: 6c 6f 63 61 74 69 6f 6e 20 63 61 6e 20 62 65 20  location can be 
15f0: 6f 76 65 72 72 69 64 64 65 6e 20 76 69 61 20 74  overridden via t
1600: 68 65 0a 09 20 20 20 20 3c 62 3e 53 53 4c 5f 43  he..    <b>SSL_C
1610: 45 52 54 5f 44 49 52 3c 2f 62 3e 20 65 6e 76 69  ERT_DIR</b> envi
1620: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
1630: 2e 0a 09 20 20 20 20 53 65 65 20 3c 61 20 68 72  ...    See <a hr
1640: 65 66 3d 22 23 43 45 52 54 49 46 49 43 41 54 45  ef="#CERTIFICATE
1650: 20 56 41 4c 49 44 41 54 49 4f 4e 22 3e 43 45 52   VALIDATION">CER
1660: 54 49 46 49 43 41 54 45 20 56 41 4c 49 44 41 54  TIFICATE VALIDAT
1670: 49 4f 4e 3c 2f 61 3e 2e 3c 2f 64 64 3e 0a 09 3c  ION</a>.</dd>..<
1680: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 61 66 69  dt><strong>-cafi
1690: 6c 65 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e  le </strong><em>
16a0: 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64  filename</em></d
16b0: 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65  t>..<dd>Specifie
16c0: 73 20 74 68 65 20 66 69 6c 65 20 77 69 74 68 20  s the file with 
16d0: 74 68 65 20 43 65 72 74 69 66 69 63 61 74 65 20  the Certificate 
16e0: 41 75 74 68 6f 72 69 74 79 20 28 43 41 29 20 63  Authority (CA) c
16f0: 65 72 74 69 66 69 63 61 74 65 73 0a 09 20 20 20  ertificates..   
1700: 20 74 6f 20 75 73 65 2e 20 54 68 65 20 64 65 66   to use. The def
1710: 61 75 6c 74 20 69 73 20 3c 62 3e 63 65 72 74 2e  ault is <b>cert.
1720: 70 65 6d 3c 2f 62 3e 2c 20 69 6e 20 74 68 65 20  pem</b>, in the 
1730: 4f 70 65 6e 53 53 4c 20 64 69 72 65 63 74 6f 72  OpenSSL director
1740: 79 2e 0a 09 20 20 20 20 54 68 65 20 64 65 66 61  y...    The defa
1750: 75 6c 74 20 66 69 6c 65 20 63 61 6e 20 62 65 20  ult file can be 
1760: 6f 76 65 72 72 69 64 64 65 6e 20 76 69 61 20 74  overridden via t
1770: 68 65 20 3c 62 3e 53 53 4c 5f 43 45 52 54 5f 46  he <b>SSL_CERT_F
1780: 49 4c 45 3c 2f 62 3e 0a 09 20 20 20 20 65 6e 76  ILE</b>..    env
1790: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
17a0: 65 2e 0a 09 20 20 20 20 53 65 65 20 3c 61 20 68  e...    See <a h
17b0: 72 65 66 3d 22 23 43 45 52 54 49 46 49 43 41 54  ref="#CERTIFICAT
17c0: 45 20 56 41 4c 49 44 41 54 49 4f 4e 22 3e 43 45  E VALIDATION">CE
17d0: 52 54 49 46 49 43 41 54 45 20 56 41 4c 49 44 41  RTIFICATE VALIDA
17e0: 54 49 4f 4e 3c 2f 61 3e 2e 3c 2f 64 64 3e 0a 09  TION</a>.</dd>..
17f0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 61 73  <dt><strong>-cas
1800: 74 6f 72 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  tore</strong> <e
1810: 6d 3e 55 52 49 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  m>URI</em></dt>.
1820: 09 3c 64 64 3e 55 52 49 20 66 6f 72 20 61 20 43  .<dd>URI for a C
1830: 65 72 74 69 66 69 63 61 74 65 20 41 75 74 68 6f  ertificate Autho
1840: 72 69 74 79 20 28 43 41 29 20 73 74 6f 72 65 2c  rity (CA) store,
1850: 20 77 68 69 63 68 20 6d 61 79 20 62 65 20 61 20   which may be a 
1860: 73 69 6e 67 6c 65 0a 09 20 20 20 20 63 6f 6e 74  single..    cont
1870: 61 69 6e 65 72 20 6f 72 20 61 20 63 61 74 61 6c  ainer or a catal
1880: 6f 67 20 6f 66 20 63 6f 6e 74 61 69 6e 65 72 73  og of containers
1890: 2e 20 53 74 61 72 74 69 6e 67 20 77 69 74 68 20  . Starting with 
18a0: 4f 70 65 6e 53 53 4c 20 33 2e 32 20 6f 6e 0a 09  OpenSSL 3.2 on..
18b0: 20 20 20 20 57 69 6e 64 6f 77 73 2c 20 73 65 74      Windows, set
18c0: 20 74 6f 20 22 6f 72 67 2e 6f 70 65 6e 73 73 6c   to "org.openssl
18d0: 2e 77 69 6e 73 74 6f 72 65 3a 2f 2f 22 20 74 6f  .winstore://" to
18e0: 20 75 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69   use the built-i
18f0: 6e 0a 09 20 20 20 20 57 69 6e 64 6f 77 73 20 43  n..    Windows C
1900: 65 72 74 20 53 74 6f 72 65 2e 20 54 68 65 20 57  ert Store. The W
1910: 69 6e 64 6f 77 73 20 63 65 72 74 20 73 74 6f 72  indows cert stor
1920: 65 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73 20  e only supports 
1930: 72 6f 6f 74 0a 09 20 20 20 20 63 65 72 74 69 66  root..    certif
1940: 69 63 61 74 65 20 73 74 6f 72 65 73 2e 0a 09 20  icate stores... 
1950: 20 20 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22     See <a href="
1960: 23 43 45 52 54 49 46 49 43 41 54 45 20 56 41 4c  #CERTIFICATE VAL
1970: 49 44 41 54 49 4f 4e 22 3e 43 45 52 54 49 46 49  IDATION">CERTIFI
1980: 43 41 54 45 20 56 41 4c 49 44 41 54 49 4f 4e 3c  CATE VALIDATION<
1990: 2f 61 3e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  /a>.</dd>..<dt><
19a0: 73 74 72 6f 6e 67 3e 2d 63 65 72 74 66 69 6c 65  strong>-certfile
19b0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66 69  </strong> <em>fi
19c0: 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e  lename</em></dt>
19d0: 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 73 20  ..<dd>Specifies 
19e0: 74 68 65 20 66 69 6c 65 20 77 69 74 68 20 74 68  the file with th
19f0: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 74 6f  e certificate to
1a00: 20 75 73 65 20 69 6e 20 50 45 4d 20 66 6f 72 6d   use in PEM form
1a10: 61 74 2e 0a 09 20 20 20 20 54 68 69 73 20 61 6c  at...    This al
1a20: 73 6f 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20  so contains the 
1a30: 70 75 62 6c 69 63 20 6b 65 79 2e 3c 2f 64 64 3e  public key.</dd>
1a40: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63  ..<dt><strong>-c
1a50: 65 72 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ert</strong> <em
1a60: 3e 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f  >binary_string</
1a70: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70  em></dt>..<dd>Sp
1a80: 65 63 69 66 69 65 73 20 74 68 65 20 63 65 72 74  ecifies the cert
1a90: 69 66 69 63 61 74 65 20 74 6f 20 75 73 65 20 61  ificate to use a
1aa0: 73 20 61 20 44 45 52 20 65 6e 63 6f 64 65 64 20  s a DER encoded 
1ab0: 73 74 72 69 6e 67 20 28 58 2e 35 30 39 20 44 45  string (X.509 DE
1ac0: 52 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  R).</dd>..<dt><s
1ad0: 74 72 6f 6e 67 3e 2d 63 69 70 68 65 72 3c 2f 73  trong>-cipher</s
1ae0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e  trong> <em>strin
1af0: 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  g</em></dt>..<dd
1b00: 3e 53 70 65 63 69 66 69 65 73 20 74 68 65 20 6c  >Specifies the l
1b10: 69 73 74 20 6f 66 20 63 69 70 68 65 72 73 20 74  ist of ciphers t
1b20: 6f 20 75 73 65 20 66 6f 72 20 54 4c 53 20 31 2e  o use for TLS 1.
1b30: 32 20 61 6e 64 20 65 61 72 6c 69 65 72 2e 20 53  2 and earlier. S
1b40: 74 72 69 6e 67 20 69 73 20 61 0a 09 20 20 20 20  tring is a..    
1b50: 63 6f 6c 6f 6e 20 28 22 3a 22 29 20 73 65 70 61  colon (":") sepa
1b60: 72 61 74 65 64 20 6c 69 73 74 20 6f 66 20 63 69  rated list of ci
1b70: 70 68 65 72 73 2e 20 43 69 70 68 65 72 73 20 63  phers. Ciphers c
1b80: 61 6e 20 62 65 20 63 6f 6d 62 69 6e 65 64 20 75  an be combined u
1b90: 73 69 6e 67 20 74 68 65 0a 09 20 20 20 20 3c 62  sing the..    <b
1ba0: 3e 2b 3c 2f 62 3e 20 63 68 61 72 61 63 74 65 72  >+</b> character
1bb0: 2e 20 50 72 65 66 69 78 65 73 20 63 61 6e 20 62  . Prefixes can b
1bc0: 65 20 75 73 65 64 20 74 6f 20 70 65 72 6d 61 6e  e used to perman
1bd0: 65 6e 74 6c 79 20 72 65 6d 6f 76 65 20 28 22 21  ently remove ("!
1be0: 22 29 2c 0a 09 20 20 20 20 64 65 6c 65 74 65 20  "),..    delete 
1bf0: 28 22 2d 22 29 2c 20 6f 72 20 6d 6f 76 65 20 61  ("-"), or move a
1c00: 20 63 69 70 68 65 72 20 74 6f 20 74 68 65 20 65   cipher to the e
1c10: 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20 28  nd of the list (
1c20: 22 2b 22 29 2e 20 4b 65 79 77 6f 72 64 73 0a 09  "+"). Keywords..
1c30: 20 20 20 20 3c 62 3e 40 53 54 52 45 4e 47 54 48      <b>@STRENGTH
1c40: 3c 2f 62 3e 20 28 73 6f 72 74 20 62 79 20 61 6c  </b> (sort by al
1c50: 67 6f 72 69 74 68 6d 20 6b 65 79 20 6c 65 6e 67  gorithm key leng
1c60: 74 68 29 2c 20 3c 62 3e 40 53 45 43 4c 45 56 45  th), <b>@SECLEVE
1c70: 4c 3d 3c 2f 62 3e 3c 69 3e 6e 3c 2f 69 3e 0a 09  L=</b><i>n</i>..
1c80: 20 20 20 20 28 73 65 74 20 73 65 63 75 72 69 74      (set securit
1c90: 79 20 6c 65 76 65 6c 20 74 6f 20 6e 29 2c 20 61  y level to n), a
1ca0: 6e 64 20 3c 62 3e 44 45 46 41 55 4c 54 3c 2f 62  nd <b>DEFAULT</b
1cb0: 3e 20 28 75 73 65 20 64 65 66 61 75 6c 74 20 63  > (use default c
1cc0: 69 70 68 65 72 20 6c 69 73 74 2c 0a 09 20 20 20  ipher list,..   
1cd0: 20 61 74 20 73 74 61 72 74 20 6f 6e 6c 79 29 20   at start only) 
1ce0: 63 61 6e 20 61 6c 73 6f 20 62 65 20 73 70 65 63  can also be spec
1cf0: 69 66 69 65 64 2e 20 53 65 65 20 4f 70 65 6e 53  ified. See OpenS
1d00: 53 4c 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  SL documentation
1d10: 20 66 6f 72 20 74 68 65 0a 09 20 20 20 20 66 75   for the..    fu
1d20: 6c 6c 20 6c 69 73 74 20 6f 66 20 76 61 6c 69 64  ll list of valid
1d30: 20 76 61 6c 75 65 73 2e 3c 2f 64 64 3e 0a 09 3c   values.</dd>..<
1d40: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 63 69 70 68  dt><strong>-ciph
1d50: 65 72 73 75 69 74 65 73 3c 2f 73 74 72 6f 6e 67  ersuites</strong
1d60: 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d  > <em>string</em
1d70: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63  ></dt>..<dd>Spec
1d80: 69 66 69 65 73 20 74 68 65 20 6c 69 73 74 20 6f  ifies the list o
1d90: 66 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20  f cipher suites 
1da0: 74 6f 20 75 73 65 20 66 6f 72 20 54 4c 53 20 31  to use for TLS 1
1db0: 2e 33 2e 20 53 74 72 69 6e 67 20 69 73 20 61 20  .3. String is a 
1dc0: 63 6f 6c 6f 6e 0a 09 20 20 20 20 28 22 3a 22 29  colon..    (":")
1dd0: 20 73 65 70 61 72 61 74 65 64 20 6c 69 73 74 20   separated list 
1de0: 6f 66 20 63 69 70 68 65 72 20 73 75 69 74 65 20  of cipher suite 
1df0: 6e 61 6d 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74  names.</dd>..<dt
1e00: 3e 3c 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e  ><strong>-comman
1e10: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  d</strong> <em>c
1e20: 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74  allback</em></dt
1e30: 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 73  >..<dd>Specifies
1e40: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 63 6f   the callback co
1e50: 6d 6d 61 6e 64 20 74 6f 20 62 65 20 69 6e 76 6f  mmand to be invo
1e60: 6b 65 64 20 61 74 20 73 65 76 65 72 61 6c 20 70  ked at several p
1e70: 6f 69 6e 74 73 20 64 75 72 69 6e 67 20 74 68 65  oints during the
1e80: 0a 09 20 20 20 20 68 61 6e 64 73 68 61 6b 65 20  ..    handshake 
1e90: 74 6f 20 70 61 73 73 20 65 72 72 6f 72 73 2c 20  to pass errors, 
1ea0: 74 72 61 63 69 6e 67 20 69 6e 66 6f 72 6d 61 74  tracing informat
1eb0: 69 6f 6e 2c 20 61 6e 64 20 70 72 6f 74 6f 63 6f  ion, and protoco
1ec0: 6c 20 6d 65 73 73 61 67 65 73 2e 0a 09 20 20 20  l messages...   
1ed0: 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22 23 43   See <a href="#C
1ee0: 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22  ALLBACK OPTIONS"
1ef0: 3e 43 41 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e  >CALLBACK OPTION
1f00: 53 3c 2f 61 3e 20 66 6f 72 20 6d 6f 72 65 20 69  S</a> for more i
1f10: 6e 66 6f 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  nfo.</dd>..<dt><
1f20: 73 74 72 6f 6e 67 3e 2d 64 68 70 61 72 61 6d 73  strong>-dhparams
1f30: 20 3c 2f 73 74 72 6f 6e 67 3e 3c 65 6d 3e 66 69   </strong><em>fi
1f40: 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e  lename</em></dt>
1f50: 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 73 20  ..<dd>Specifies 
1f60: 74 68 65 20 44 69 66 66 69 65 2d 48 65 6c 6c 6d  the Diffie-Hellm
1f70: 61 6e 20 28 44 48 29 20 70 61 72 61 6d 65 74 65  an (DH) paramete
1f80: 72 73 20 66 69 6c 65 2e 3c 2f 64 64 3e 0a 09 3c  rs file.</dd>..<
1f90: 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b 65 79 66  dt><strong>-keyf
1fa0: 69 6c 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ile</strong> <em
1fb0: 3e 66 69 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f  >filename</em></
1fc0: 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69  dt>..<dd>Specifi
1fd0: 65 73 20 74 68 65 20 70 72 69 76 61 74 65 20 6b  es the private k
1fe0: 65 79 20 66 69 6c 65 2e 20 28 64 65 66 61 75 6c  ey file. (defaul
1ff0: 74 20 69 73 20 76 61 6c 75 65 20 6f 66 20 2d 63  t is value of -c
2000: 65 72 74 66 69 6c 65 29 2e 3c 2f 64 64 3e 0a 09  ertfile).</dd>..
2010: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 6b 65 79  <dt><strong>-key
2020: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 66 69  </strong> <em>fi
2030: 6c 65 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e  lename</em></dt>
2040: 0a 09 3c 64 64 3e 53 70 65 63 69 66 69 65 73 20  ..<dd>Specifies 
2050: 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 20  the private key 
2060: 74 6f 20 75 73 65 20 61 73 20 61 20 44 45 52 20  to use as a DER 
2070: 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 20 28  encoded string (
2080: 50 4b 43 53 23 31 20 44 45 52 29 2e 3c 2f 64 64  PKCS#1 DER).</dd
2090: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
20a0: 6d 6f 64 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c  model</strong> <
20b0: 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c  em>channel</em><
20c0: 2f 64 74 3e 0a 09 3c 64 64 3e 46 6f 72 63 65 20  /dt>..<dd>Force 
20d0: 74 68 69 73 20 63 68 61 6e 6e 65 6c 20 74 6f 20  this channel to 
20e0: 73 68 61 72 65 20 74 68 65 20 73 61 6d 65 20 3c  share the same <
20f0: 65 6d 3e 3c 73 74 72 6f 6e 67 3e 53 53 4c 5f 43  em><strong>SSL_C
2100: 54 58 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 65 6d 3e  TX</strong></em>
2110: 0a 09 20 20 20 20 73 74 72 75 63 74 75 72 65 20  ..    structure 
2120: 61 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  as the specified
2130: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65 6d   <em>channel</em
2140: 3e 2c 20 61 6e 64 0a 09 20 20 20 20 74 68 65 72  >, and..    ther
2150: 65 66 6f 72 65 20 73 68 61 72 65 20 63 61 6c 6c  efore share call
2160: 62 61 63 6b 73 20 65 74 63 2e 3c 2f 64 64 3e 0a  backs etc.</dd>.
2170: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61  .<dt><strong>-pa
2180: 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 20  ssword</strong> 
2190: 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d  <em>callback</em
21a0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63  ></dt>..<dd>Spec
21b0: 69 66 69 65 73 20 74 68 65 20 63 61 6c 6c 62 61  ifies the callba
21c0: 63 6b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 69 6e  ck command to in
21d0: 76 6f 6b 65 20 77 68 65 6e 20 4f 70 65 6e 53 53  voke when OpenSS
21e0: 4c 20 6e 65 65 64 73 20 74 6f 0a 09 20 20 20 20  L needs to..    
21f0: 6f 62 74 61 69 6e 20 61 20 70 61 73 73 77 6f 72  obtain a passwor
2200: 64 2e 20 54 68 69 73 20 69 73 20 74 79 70 69 63  d. This is typic
2210: 61 6c 6c 79 20 75 73 65 64 20 74 6f 20 75 6e 6c  ally used to unl
2220: 6f 63 6b 20 74 68 65 20 70 72 69 76 61 74 65 20  ock the private 
2230: 6b 65 79 20 6f 66 0a 09 20 20 20 20 61 20 63 65  key of..    a ce
2240: 72 74 69 66 69 63 61 74 65 2e 20 54 68 65 20 63  rtificate. The c
2250: 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 72  allback should r
2260: 65 74 75 72 6e 20 61 20 70 61 73 73 77 6f 72 64  eturn a password
2270: 20 73 74 72 69 6e 67 2e 0a 09 20 20 20 20 53 65   string...    Se
2280: 65 20 3c 61 20 68 72 65 66 3d 22 23 43 41 4c 4c  e <a href="#CALL
2290: 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41  BACK OPTIONS">CA
22a0: 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f  LLBACK OPTIONS</
22b0: 61 3e 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f  a> for more info
22c0: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
22d0: 6f 6e 67 3e 2d 70 6f 73 74 5f 68 61 6e 64 73 68  ong>-post_handsh
22e0: 61 6b 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ake</strong> <em
22f0: 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >bool</em></dt>.
2300: 09 3c 64 64 3e 41 6c 6c 6f 77 20 70 6f 73 74 2d  .<dd>Allow post-
2310: 68 61 6e 64 73 68 61 6b 65 20 73 65 73 73 69 6f  handshake sessio
2320: 6e 20 74 69 63 6b 65 74 20 75 70 64 61 74 65 73  n ticket updates
2330: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
2340: 6f 6e 67 3e 2d 72 65 71 75 65 73 74 20 3c 2f 73  ong>-request </s
2350: 74 72 6f 6e 67 3e 3c 65 6d 3e 62 6f 6f 6c 3c 2f  trong><em>bool</
2360: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 52 65  em></dt>..<dd>Re
2370: 71 75 65 73 74 20 61 20 63 65 72 74 69 66 69 63  quest a certific
2380: 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64 75  ate from peer du
2390: 72 69 6e 67 20 74 68 65 20 53 53 4c 20 68 61 6e  ring the SSL han
23a0: 64 73 68 61 6b 65 2e 20 54 68 69 73 20 69 73 0a  dshake. This is.
23b0: 09 20 20 20 20 6e 65 65 64 65 64 20 74 6f 20 64  .    needed to d
23c0: 6f 20 63 65 72 74 69 66 69 63 61 74 65 20 76 61  o certificate va
23d0: 6c 69 64 61 74 69 6f 6e 2e 20 28 64 65 66 61 75  lidation. (defau
23e0: 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f  lt is <em>true</
23f0: 65 6d 3e 29 2e 0a 09 20 20 20 20 53 65 65 20 3c  em>)...    See <
2400: 61 20 68 72 65 66 3d 22 23 43 45 52 54 49 46 49  a href="#CERTIFI
2410: 43 41 54 45 20 56 41 4c 49 44 41 54 49 4f 4e 22  CATE VALIDATION"
2420: 3e 43 45 52 54 49 46 49 43 41 54 45 20 56 41 4c  >CERTIFICATE VAL
2430: 49 44 41 54 49 4f 4e 3c 2f 61 3e 2e 3c 2f 64 64  IDATION</a>.</dd
2440: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
2450: 72 65 71 75 69 72 65 3c 2f 73 74 72 6f 6e 67 3e  require</strong>
2460: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f   <em>bool</em></
2470: 64 74 3e 0a 09 3c 64 64 3e 52 65 71 75 69 72 65  dt>..<dd>Require
2480: 20 61 20 76 61 6c 69 64 20 63 65 72 74 69 66 69   a valid certifi
2490: 63 61 74 65 20 66 72 6f 6d 20 70 65 65 72 20 64  cate from peer d
24a0: 75 72 69 6e 67 20 53 53 4c 20 68 61 6e 64 73 68  uring SSL handsh
24b0: 61 6b 65 2e 20 49 66 20 74 68 69 73 0a 09 20 20  ake. If this..  
24c0: 20 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 65    is set to true
24d0: 2c 20 74 68 65 6e 20 3c 73 74 72 6f 6e 67 3e 2d  , then <strong>-
24e0: 72 65 71 75 65 73 74 3c 2f 73 74 72 6f 6e 67 3e  request</strong>
24f0: 20 6d 75 73 74 20 61 6c 73 6f 20 62 65 20 73 65   must also be se
2500: 74 20 74 6f 0a 09 20 20 20 20 74 72 75 65 20 61  t to..    true a
2510: 6e 64 20 61 20 65 69 74 68 65 72 20 61 20 2d 63  nd a either a -c
2520: 61 64 69 72 2c 20 2d 63 61 66 69 6c 65 2c 20 2d  adir, -cafile, -
2530: 63 61 73 74 6f 72 65 2c 20 6f 72 20 70 6c 61 74  castore, or plat
2540: 66 6f 72 6d 20 64 65 66 61 75 6c 74 0a 09 20 20  form default..  
2550: 20 20 6d 75 73 74 20 62 65 20 70 72 6f 76 69 64    must be provid
2560: 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 76  ed in order to v
2570: 61 6c 69 64 61 74 65 20 61 67 61 69 6e 73 74 2e  alidate against.
2580: 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d   (default is <em
2590: 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 2e 0a 09 20  >false</em>)... 
25a0: 20 20 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22     See <a href="
25b0: 23 43 45 52 54 49 46 49 43 41 54 45 20 56 41 4c  #CERTIFICATE VAL
25c0: 49 44 41 54 49 4f 4e 22 3e 43 45 52 54 49 46 49  IDATION">CERTIFI
25d0: 43 41 54 45 20 56 41 4c 49 44 41 54 49 4f 4e 3c  CATE VALIDATION<
25e0: 2f 61 3e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  /a>.</dd>..<dt><
25f0: 73 74 72 6f 6e 67 3e 2d 73 65 63 75 72 69 74 79  strong>-security
2600: 5f 6c 65 76 65 6c 3c 2f 73 74 72 6f 6e 67 3e 20  _level</strong> 
2610: 3c 65 6d 3e 69 6e 74 65 67 65 72 3c 2f 65 6d 3e  <em>integer</em>
2620: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69  </dt>..<dd>Speci
2630: 66 69 65 73 20 74 68 65 20 73 65 63 75 72 69 74  fies the securit
2640: 79 20 6c 65 76 65 6c 20 28 76 61 6c 75 65 20 66  y level (value f
2650: 72 6f 6d 20 30 20 74 6f 20 35 29 2e 20 54 68 65  rom 0 to 5). The
2660: 20 73 65 63 75 72 69 74 79 20 6c 65 76 65 6c 0a   security level.
2670: 09 20 20 20 20 61 66 66 65 63 74 73 20 74 68 65  .    affects the
2680: 20 63 69 70 68 65 72 20 73 75 69 74 65 20 65 6e   cipher suite en
2690: 63 72 79 70 74 69 6f 6e 20 61 6c 67 6f 72 69 74  cryption algorit
26a0: 68 6d 73 2c 20 73 75 70 70 6f 72 74 65 64 20 45  hms, supported E
26b0: 43 43 20 63 75 72 76 65 73 2c 0a 09 20 20 20 20  CC curves,..    
26c0: 73 75 70 70 6f 72 74 65 64 20 73 69 67 6e 61 74  supported signat
26d0: 75 72 65 20 61 6c 67 6f 72 69 74 68 6d 73 2c 20  ure algorithms, 
26e0: 44 48 20 70 61 72 61 6d 65 74 65 72 20 73 69 7a  DH parameter siz
26f0: 65 73 2c 20 63 65 72 74 69 66 69 63 61 74 65 20  es, certificate 
2700: 6b 65 79 0a 09 20 20 20 20 73 69 7a 65 73 20 61  key..    sizes a
2710: 6e 64 20 73 69 67 6e 61 74 75 72 65 20 61 6c 67  nd signature alg
2720: 6f 72 69 74 68 6d 73 2e 20 54 68 65 20 64 65 66  orithms. The def
2730: 61 75 6c 74 20 69 73 20 31 20 70 72 69 6f 72 20  ault is 1 prior 
2740: 74 6f 20 4f 70 65 6e 53 53 4c 20 33 2e 32 0a 09  to OpenSSL 3.2..
2750: 20 20 20 20 61 6e 64 20 32 20 74 68 65 72 65 61      and 2 therea
2760: 66 74 65 72 2e 20 4c 65 76 65 6c 20 33 20 61 6e  fter. Level 3 an
2770: 64 20 68 69 67 68 65 72 20 64 69 73 61 62 6c 65  d higher disable
2780: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 73 65 73   support for ses
2790: 73 69 6f 6e 0a 09 20 20 20 20 74 69 63 6b 65 74  sion..    ticket
27a0: 73 20 61 6e 64 20 6f 6e 6c 79 20 61 63 63 65 70  s and only accep
27b0: 74 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20  t cipher suites 
27c0: 74 68 61 74 20 70 72 6f 76 69 64 65 20 66 6f 72  that provide for
27d0: 77 61 72 64 20 73 65 63 72 65 63 79 2e 3c 2f 64  ward secrecy.</d
27e0: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
27f0: 2d 73 65 72 76 65 72 3c 2f 73 74 72 6f 6e 67 3e  -server</strong>
2800: 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f   <em>bool</em></
2810: 64 74 3e 0a 09 3c 64 64 3e 53 70 65 63 69 66 69  dt>..<dd>Specifi
2820: 65 73 20 77 68 65 74 68 65 72 20 74 6f 20 61 63  es whether to ac
2830: 74 20 61 73 20 61 20 73 65 72 76 65 72 20 61 6e  t as a server an
2840: 64 20 72 65 73 70 6f 6e 64 20 77 69 74 68 20 61  d respond with a
2850: 20 73 65 72 76 65 72 0a 09 20 20 20 20 68 61 6e   server..    han
2860: 64 73 68 61 6b 65 20 77 68 65 6e 20 61 20 63 6c  dshake when a cl
2870: 69 65 6e 74 20 63 6f 6e 6e 65 63 74 73 20 61 6e  ient connects an
2880: 64 20 70 72 6f 76 69 64 65 73 20 61 20 63 6c 69  d provides a cli
2890: 65 6e 74 20 68 61 6e 64 73 68 61 6b 65 2e 0a 09  ent handshake...
28a0: 20 20 20 20 28 64 65 66 61 75 6c 74 20 69 73 20      (default is 
28b0: 3c 65 6d 3e 66 61 6c 73 65 3c 2f 65 6d 3e 29 3c  <em>false</em>)<
28c0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
28d0: 67 3e 2d 73 65 72 76 65 72 6e 61 6d 65 3c 2f 73  g>-servername</s
28e0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 68 6f 73 74 3c  trong> <em>host<
28f0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53  /em></dt>..<dd>S
2900: 70 65 63 69 66 79 20 73 65 72 76 65 72 27 73 20  pecify server's 
2910: 68 6f 73 74 6e 61 6d 65 2e 20 54 68 69 73 20 69  hostname. This i
2920: 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 68  s used to set th
2930: 65 20 54 4c 53 20 53 65 72 76 65 72 20 4e 61 6d  e TLS Server Nam
2940: 65 0a 09 20 20 20 20 49 6e 64 69 63 61 74 69 6f  e..    Indicatio
2950: 6e 20 28 53 4e 49 29 20 65 78 74 65 6e 73 69 6f  n (SNI) extensio
2960: 6e 2e 20 53 65 74 20 74 68 69 73 20 74 6f 20 74  n. Set this to t
2970: 68 65 20 65 78 70 65 63 74 65 64 20 73 65 72 76  he expected serv
2980: 65 72 6e 61 6d 65 20 69 6e 20 74 68 65 0a 09 20  ername in the.. 
2990: 20 20 73 65 72 76 65 72 27 73 20 63 65 72 74 69    server's certi
29a0: 66 69 63 61 74 65 20 6f 72 20 6f 6e 65 20 6f 66  ficate or one of
29b0: 20 74 68 65 20 73 75 62 6a 65 63 74 41 6c 74 4e   the subjectAltN
29c0: 61 6d 65 20 61 6c 74 65 72 6e 61 74 65 73 2e 3c  ame alternates.<
29d0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
29e0: 67 3e 2d 73 65 73 73 69 6f 6e 5f 69 64 3c 2f 73  g>-session_id</s
29f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e  trong> <em>strin
2a00: 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  g</em></dt>..<dd
2a10: 3e 53 70 65 63 69 66 69 65 73 20 74 68 65 20 73  >Specifies the s
2a20: 65 73 73 69 6f 6e 20 69 64 20 74 6f 20 72 65 73  ession id to res
2a30: 75 6d 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64 64  ume session.</dd
2a40: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d  >..<dt><strong>-
2a50: 73 73 6c 32 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  ssl2</strong> <e
2a60: 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>bool</em></dt>
2a70: 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65  ..<dd>Enable use
2a80: 20 6f 66 20 53 53 4c 20 76 32 2e 20 28 64 65 66   of SSL v2. (def
2a90: 61 75 6c 74 20 69 73 20 3c 65 6d 3e 66 61 6c 73  ault is <em>fals
2aa0: 65 3c 2f 65 6d 3e 29 2e 0a 09 4e 6f 74 65 3a 20  e</em>)...Note: 
2ab0: 52 65 63 65 6e 74 20 76 65 72 73 69 6f 6e 73 20  Recent versions 
2ac0: 6f 66 20 4f 70 65 6e 53 53 4c 20 64 6f 6e 27 74  of OpenSSL don't
2ad0: 20 73 75 70 70 6f 72 74 20 53 53 4c 76 32 2e 3c   support SSLv2.<
2ae0: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
2af0: 67 3e 2d 73 73 6c 33 20 3c 2f 73 74 72 6f 6e 67  g>-ssl3 </strong
2b00: 3e 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f  ><em>bool</em></
2b10: 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20  dt>..<dd>Enable 
2b20: 75 73 65 20 6f 66 20 53 53 4c 20 76 33 2e 20 28  use of SSL v3. (
2b30: 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 66  default is <em>f
2b40: 61 6c 73 65 3c 2f 65 6d 3e 29 2e 0a 09 4e 6f 74  alse</em>)...Not
2b50: 65 3a 20 53 53 4c 20 76 33 20 6d 75 73 74 20 61  e: SSL v3 must a
2b60: 6c 73 6f 20 62 65 20 65 6e 61 62 6c 65 64 20 77  lso be enabled w
2b70: 69 74 68 20 61 20 63 6f 6d 70 69 6c 65 20 74 69  ith a compile ti
2b80: 6d 65 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a  me option.</dd>.
2b90: 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74 6c  .<dt>-<strong>tl
2ba0: 73 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  s1</strong> <em>
2bb0: 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  bool</em></dt>..
2bc0: 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73 65 20 6f  <dd>Enable use o
2bd0: 66 20 54 4c 53 20 76 31 2e 20 28 64 65 66 61 75  f TLS v1. (defau
2be0: 6c 74 20 69 73 20 3c 65 6d 3e 74 72 75 65 3c 2f  lt is <em>true</
2bf0: 65 6d 3e 29 2e 0a 09 4e 6f 74 65 3a 20 54 4c 53  em>)...Note: TLS
2c00: 20 31 2e 30 20 6e 65 65 64 73 20 53 48 41 31 20   1.0 needs SHA1 
2c10: 74 6f 20 6f 70 65 72 61 74 65 2c 20 77 68 69 63  to operate, whic
2c20: 68 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  h is only availa
2c30: 62 6c 65 20 69 6e 0a 09 73 65 63 75 72 69 74 79  ble in..security
2c40: 20 6c 65 76 65 6c 20 30 20 66 6f 72 20 4f 70 65   level 0 for Ope
2c50: 6e 20 53 53 4c 20 33 2e 30 2b 2e 3c 2f 64 64 3e  n SSL 3.0+.</dd>
2c60: 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e 74  ..<dt>-<strong>t
2c70: 6c 73 31 2e 31 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ls1.1</strong> <
2c80: 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74  em>bool</em></dt
2c90: 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75 73  >..<dd>Enable us
2ca0: 65 20 6f 66 20 54 4c 53 20 76 31 2e 31 20 28 64  e of TLS v1.1 (d
2cb0: 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74 72  efault is <em>tr
2cc0: 75 65 3c 2f 65 6d 3e 29 2e 0a 09 4e 6f 74 65 3a  ue</em>)...Note:
2cd0: 20 54 4c 53 20 31 2e 31 20 6e 65 65 64 73 20 53   TLS 1.1 needs S
2ce0: 48 41 31 20 74 6f 20 6f 70 65 72 61 74 65 2c 20  HA1 to operate, 
2cf0: 77 68 69 63 68 20 69 73 20 6f 6e 6c 79 20 61 76  which is only av
2d00: 61 69 6c 61 62 6c 65 20 69 6e 0a 09 73 65 63 75  ailable in..secu
2d10: 72 69 74 79 20 6c 65 76 65 6c 20 30 20 66 6f 72  rity level 0 for
2d20: 20 4f 70 65 6e 20 53 53 4c 20 33 2e 30 2b 2e 3c   Open SSL 3.0+.<
2d30: 2f 64 64 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f  /dd>..<dt>-<stro
2d40: 6e 67 3e 74 6c 73 31 2e 32 3c 2f 73 74 72 6f 6e  ng>tls1.2</stron
2d50: 67 3e 20 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e  g> <em>bool</em>
2d60: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c  </dt>..<dd>Enabl
2d70: 65 20 75 73 65 20 6f 66 20 54 4c 53 20 76 31 2e  e use of TLS v1.
2d80: 32 20 28 64 65 66 61 75 6c 74 20 69 73 20 3c 65  2 (default is <e
2d90: 6d 3e 74 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64  m>true</em>)</dd
2da0: 3e 0a 09 3c 64 74 3e 2d 3c 73 74 72 6f 6e 67 3e  >..<dt>-<strong>
2db0: 74 6c 73 31 2e 33 3c 2f 73 74 72 6f 6e 67 3e 20  tls1.3</strong> 
2dc0: 3c 65 6d 3e 62 6f 6f 6c 3c 2f 65 6d 3e 3c 2f 64  <em>bool</em></d
2dd0: 74 3e 0a 09 3c 64 64 3e 45 6e 61 62 6c 65 20 75  t>..<dd>Enable u
2de0: 73 65 20 6f 66 20 54 4c 53 20 76 31 2e 33 20 28  se of TLS v1.3 (
2df0: 64 65 66 61 75 6c 74 20 69 73 20 3c 65 6d 3e 74  default is <em>t
2e00: 72 75 65 3c 2f 65 6d 3e 29 3c 2f 64 64 3e 0a 09  rue</em>)</dd>..
2e10: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c  <dt><strong>-val
2e20: 69 64 61 74 65 63 6f 6d 6d 61 6e 64 3c 2f 73 74  idatecommand</st
2e30: 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c 6c 62 61  rong> <em>callba
2e40: 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  ck</em></dt>..<d
2e50: 64 3e 53 70 65 63 69 66 69 65 73 20 74 68 65 20  d>Specifies the 
2e60: 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64  callback command
2e70: 20 74 6f 20 69 6e 76 6f 6b 65 20 74 6f 20 76 61   to invoke to va
2e80: 6c 69 64 61 74 65 20 70 72 6f 74 6f 63 6f 6c 0a  lidate protocol.
2e90: 09 20 20 20 20 63 6f 6e 66 69 67 20 70 61 72 61  .    config para
2ea0: 6d 65 74 65 72 73 20 64 75 72 69 6e 67 20 74 68  meters during th
2eb0: 65 20 70 72 6f 74 6f 63 6f 6c 20 6e 65 67 6f 74  e protocol negot
2ec0: 69 61 74 69 6f 6e 20 70 68 61 73 65 2e 20 54 68  iation phase. Th
2ed0: 69 73 20 63 61 6e 20 62 65 0a 09 20 20 20 20 75  is can be..    u
2ee0: 73 65 64 20 62 79 20 54 43 4c 20 73 63 72 69 70  sed by TCL scrip
2ef0: 74 73 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68  ts to perform th
2f00: 65 69 72 20 6f 77 6e 20 63 65 72 74 69 66 69 63  eir own certific
2f10: 61 74 65 20 76 61 6c 69 64 61 74 69 6f 6e 20 74  ate validation t
2f20: 6f 0a 09 20 20 20 20 73 75 70 70 6c 65 6d 65 6e  o..    supplemen
2f30: 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  t the default va
2f40: 6c 69 64 61 74 69 6f 6e 20 70 72 6f 76 69 64 65  lidation provide
2f50: 64 20 62 79 20 4f 70 65 6e 53 53 4c 2e 20 54 68  d by OpenSSL. Th
2f60: 65 20 73 63 72 69 70 74 20 6d 75 73 74 0a 09 20  e script must.. 
2f70: 20 20 20 72 65 74 75 72 6e 20 61 20 62 6f 6f 6c     return a bool
2f80: 65 61 6e 20 74 72 75 65 20 74 6f 20 63 6f 6e 74  ean true to cont
2f90: 69 6e 75 65 20 74 68 65 20 6e 65 67 6f 74 69 61  inue the negotia
2fa0: 74 69 6f 6e 2e 20 53 65 65 0a 09 20 20 20 20 3c  tion. See..    <
2fb0: 61 20 68 72 65 66 3d 22 23 43 41 4c 4c 42 41 43  a href="#CALLBAC
2fc0: 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41 4c 4c 42  K OPTIONS">CALLB
2fd0: 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f 61 3e 20  ACK OPTIONS</a> 
2fe0: 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 2e 3c 2f  for more info.</
2ff0: 64 64 3e 0a 20 20 20 20 3c 2f 62 6c 6f 63 6b 71  dd>.    </blockq
3000: 75 6f 74 65 3e 3c 2f 64 6c 3e 0a 20 20 20 20 3c  uote></dl>.    <
3010: 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a  dt><a name="tls:
3020: 3a 75 6e 69 6d 70 6f 72 74 22 3e 3c 62 3e 74 6c  :unimport"><b>tl
3030: 73 3a 3a 75 6e 69 6d 70 6f 72 74 20 3c 2f 62 3e  s::unimport </b>
3040: 3c 69 3e 63 68 61 6e 6e 65 6c 3c 2f 69 3e 3c 2f  <i>channel</i></
3050: 61 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e  a></dt>.    <dd>
3060: 50 72 6f 76 69 64 65 64 20 66 6f 72 20 73 79 6d  Provided for sym
3070: 6d 65 74 72 79 20 74 6f 20 3c 73 74 72 6f 6e 67  metry to <strong
3080: 3e 74 6c 73 3a 3a 69 6d 70 6f 72 74 3c 2f 73 74  >tls::import</st
3090: 72 6f 6e 67 3e 2c 20 74 68 69 73 0a 09 75 6e 73  rong>, this..uns
30a0: 74 61 63 6b 73 20 74 68 65 20 65 6e 63 72 79 70  tacks the encryp
30b0: 74 69 6f 6e 20 6f 66 20 61 20 72 65 67 75 6c 61  tion of a regula
30c0: 72 20 54 43 4c 20 63 68 61 6e 6e 65 6c 2e 20 41  r TCL channel. A
30d0: 6e 20 65 72 72 6f 72 0a 09 69 73 20 74 68 72 6f  n error..is thro
30e0: 77 6e 20 69 66 20 54 4c 53 20 69 73 20 6e 6f 74  wn if TLS is not
30f0: 20 74 68 65 20 74 6f 70 20 73 74 61 63 6b 65 64   the top stacked
3100: 20 63 68 61 6e 6e 65 6c 20 74 79 70 65 2e 3c 2f   channel type.</
3110: 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 73  dd>.    <dt>&nbs
3120: 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e  p;</dt>.    <dt>
3130: 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 68 61  <a name="tls::ha
3140: 6e 64 73 68 61 6b 65 22 3e 3c 73 74 72 6f 6e 67  ndshake"><strong
3150: 3e 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b 65 3c  >tls::handshake<
3160: 2f 73 74 72 6f 6e 67 3e 0a 09 3c 65 6d 3e 63 68  /strong>..<em>ch
3170: 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61 3e 3c 2f  annel</em></a></
3180: 64 74 3e 0a 20 20 20 20 3c 64 64 3e 46 6f 72 63  dt>.    <dd>Forc
3190: 65 73 20 68 61 6e 64 73 68 61 6b 65 20 74 6f 20  es handshake to 
31a0: 74 61 6b 65 20 70 6c 61 63 65 2c 20 61 6e 64 20  take place, and 
31b0: 72 65 74 75 72 6e 73 20 30 20 69 66 0a 09 68 61  returns 0 if..ha
31c0: 6e 64 73 68 61 6b 65 20 69 73 20 73 74 69 6c 6c  ndshake is still
31d0: 20 69 6e 20 70 72 6f 67 72 65 73 73 20 28 6e 6f   in progress (no
31e0: 6e 2d 62 6c 6f 63 6b 69 6e 67 29 2c 20 6f 72 20  n-blocking), or 
31f0: 31 20 69 66 0a 09 74 68 65 20 68 61 6e 64 73 68  1 if..the handsh
3200: 61 6b 65 20 77 61 73 20 73 75 63 63 65 73 73 66  ake was successf
3210: 75 6c 2e 20 49 66 20 74 68 65 20 68 61 6e 64 73  ul. If the hands
3220: 68 61 6b 65 20 66 61 69 6c 65 64 0a 09 74 68 69  hake failed..thi
3230: 73 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 74  s routine will t
3240: 68 72 6f 77 20 61 6e 20 65 72 72 6f 72 2e 3c 2f  hrow an error.</
3250: 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 73  dd>.    <dt>&nbs
3260: 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e  p;</dt>.    <dt>
3270: 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 73 74  <a name="tls::st
3280: 61 74 75 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c  atus"><strong>tl
3290: 73 3a 3a 73 74 61 74 75 73 3c 2f 73 74 72 6f 6e  s::status</stron
32a0: 67 3e 0a 09 3c 65 6d 3e 3f 3c 2f 65 6d 3e 3c 62  g>..<em>?</em><b
32b0: 3e 2d 6c 6f 63 61 6c 3c 2f 62 3e 3c 65 6d 3e 3f  >-local</b><em>?
32c0: 20 63 68 61 6e 6e 65 6c 3c 2f 65 6d 3e 3c 2f 61   channel</em></a
32d0: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52  ></dt>.    <dd>R
32e0: 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65  eturns the curre
32f0: 6e 74 20 73 74 61 74 75 73 20 6f 66 20 61 6e 20  nt status of an 
3300: 53 53 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 65  SSL channel. The
3310: 20 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69 73   result is a lis
3320: 74 0a 09 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20  t..of key-value 
3330: 70 61 69 72 73 20 64 65 73 63 72 69 62 69 6e 67  pairs describing
3340: 20 74 68 65 20 53 53 4c 2c 20 63 65 72 74 69 66   the SSL, certif
3350: 69 63 61 74 65 2c 20 61 6e 64 20 63 65 72 74 69  icate, and certi
3360: 66 69 63 61 74 65 0a 09 76 65 72 69 66 69 63 61  ficate..verifica
3370: 74 69 6f 6e 20 73 74 61 74 75 73 2e 20 49 66 20  tion status. If 
3380: 74 68 65 20 53 53 4c 20 68 61 6e 64 73 68 61 6b  the SSL handshak
3390: 65 20 68 61 73 20 6e 6f 74 20 79 65 74 20 63 6f  e has not yet co
33a0: 6d 70 6c 65 74 65 64 2c 0a 09 61 6e 20 65 6d 70  mpleted,..an emp
33b0: 74 79 20 6c 69 73 74 20 69 73 20 72 65 74 75 72  ty list is retur
33c0: 6e 65 64 2e 20 49 66 20 3c 62 3e 2d 6c 6f 63 61  ned. If <b>-loca
33d0: 6c 3c 2f 62 3e 20 69 73 20 73 70 65 63 69 66 69  l</b> is specifi
33e0: 65 64 2c 20 74 68 65 6e 20 74 68 65 0a 09 6c 6f  ed, then the..lo
33f0: 63 61 6c 20 63 65 72 74 69 66 69 63 61 74 65 20  cal certificate 
3400: 69 73 20 75 73 65 64 2e 3c 2f 64 64 3e 0a 20 20  is used.</dd>.  
3410: 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20    <blockquote>. 
3420: 20 20 20 3c 62 3e 53 53 4c 20 53 74 61 74 75 73     <b>SSL Status
3430: 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09 3c  </b>.    <dl>..<
3440: 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c 70 6e 3c  dt><strong>alpn<
3450: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 70 72 6f  /strong> <em>pro
3460: 74 6f 63 6f 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  tocol</em></dt>.
3470: 09 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63 6f  .<dd>The protoco
3480: 6c 20 73 65 6c 65 63 74 65 64 20 61 66 74 65 72  l selected after
3490: 20 41 70 70 6c 69 63 61 74 69 6f 6e 2d 4c 61 79   Application-Lay
34a0: 65 72 20 50 72 6f 74 6f 63 6f 6c 0a 09 20 20 20  er Protocol..   
34b0: 20 4e 65 67 6f 74 69 61 74 69 6f 6e 20 28 41 4c   Negotiation (AL
34c0: 50 4e 29 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  PN).</dd>..<dt><
34d0: 73 74 72 6f 6e 67 3e 63 69 70 68 65 72 3c 2f 73  strong>cipher</s
34e0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 69 70 68 65  trong> <em>ciphe
34f0: 72 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  r</em></dt>..<dd
3500: 3e 54 68 65 20 63 75 72 72 65 6e 74 20 63 69 70  >The current cip
3510: 68 65 72 20 69 6e 20 75 73 65 20 66 6f 72 20 74  her in use for t
3520: 68 65 20 73 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e  he session.</dd>
3530: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 65  ..<dt><strong>pe
3540: 65 72 6e 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20  ername</strong> 
3550: 3c 65 6d 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64  <em>name</em></d
3560: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 65 65 72  t>..<dd>The peer
3570: 6e 61 6d 65 20 66 72 6f 6d 20 74 68 65 20 63 65  name from the ce
3580: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
3590: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 72 6f  .<dt><strong>pro
35a0: 74 6f 63 6f 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c  tocol</strong> <
35b0: 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c  em>version</em><
35c0: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 70 72  /dt>..<dd>The pr
35d0: 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 20 75  otocol version u
35e0: 73 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  sed for the conn
35f0: 65 63 74 69 6f 6e 3a 0a 09 20 20 20 20 53 53 4c  ection:..    SSL
3600: 32 2c 20 53 53 4c 33 2c 20 54 4c 53 31 2c 20 54  2, SSL3, TLS1, T
3610: 4c 53 31 2e 31 2c 20 54 4c 53 31 2e 32 2c 20 54  LS1.1, TLS1.2, T
3620: 4c 53 31 2e 33 2c 20 6f 72 20 75 6e 6b 6e 6f 77  LS1.3, or unknow
3630: 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  n.</dd>..<dt><st
3640: 72 6f 6e 67 3e 73 62 69 74 73 3c 2f 73 74 72 6f  rong>sbits</stro
3650: 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f  ng> <em>n</em></
3660: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 6e 75 6d  dt>..<dd>The num
3670: 62 65 72 20 6f 66 20 62 69 74 73 20 75 73 65 64  ber of bits used
3680: 20 66 6f 72 20 74 68 65 20 73 65 73 73 69 6f 6e   for the session
3690: 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e   key.</dd>..<dt>
36a0: 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72  <strong>signatur
36b0: 65 48 61 73 68 41 6c 67 6f 72 69 74 68 6d 3c 2f  eHashAlgorithm</
36c0: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f  strong> <em>algo
36d0: 72 69 74 68 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  rithm</em></dt>.
36e0: 09 3c 64 64 3e 54 68 65 20 73 69 67 6e 61 74 75  .<dd>The signatu
36f0: 72 65 20 68 61 73 68 20 61 6c 67 6f 72 69 74 68  re hash algorith
3700: 6d 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  m.</dd>..<dt><st
3710: 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72 65 54 79  rong>signatureTy
3720: 70 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  pe</strong> <em>
3730: 74 79 70 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  type</em></dt>..
3740: 3c 64 64 3e 54 68 65 20 73 69 67 6e 61 74 75 72  <dd>The signatur
3750: 65 20 74 79 70 65 20 76 61 6c 75 65 2e 3c 2f 64  e type value.</d
3760: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
3770: 76 65 72 69 66 79 44 65 70 74 68 3c 2f 73 74 72  verifyDepth</str
3780: 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c  ong> <em>n</em><
3790: 2f 64 74 3e 0a 09 3c 64 64 3e 4d 61 78 69 6d 75  /dt>..<dd>Maximu
37a0: 6d 20 64 65 70 74 68 20 66 6f 72 20 74 68 65 20  m depth for the 
37b0: 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69  certificate chai
37c0: 6e 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2e 0a  n verification..
37d0: 09 20 20 20 20 44 65 66 61 75 6c 74 20 69 73 20  .    Default is 
37e0: 2d 31 2c 20 74 6f 20 63 68 65 63 6b 20 61 6c 6c  -1, to check all
37f0: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3800: 6f 6e 67 3e 76 65 72 69 66 79 4d 6f 64 65 3c 2f  ong>verifyMode</
3810: 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74  strong> <em>list
3820: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3830: 4c 69 73 74 20 6f 66 20 63 65 72 74 69 66 69 63  List of certific
3840: 61 74 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e  ate verification
3850: 20 6d 6f 64 65 73 2e 3c 2f 64 64 3e 0a 09 3c 64   modes.</dd>..<d
3860: 74 3e 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66 79  t><strong>verify
3870: 52 65 73 75 6c 74 3c 2f 73 74 72 6f 6e 67 3e 20  Result</strong> 
3880: 3c 65 6d 3e 72 65 73 75 6c 74 3c 2f 65 6d 3e 3c  <em>result</em><
3890: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66  /dt>..<dd>Certif
38a0: 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74 69  icate verificati
38b0: 6f 6e 20 72 65 73 75 6c 74 2e 3c 2f 64 64 3e 0a  on result.</dd>.
38c0: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 61 5f  .<dt><strong>ca_
38d0: 6e 61 6d 65 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c  names</strong> <
38e0: 65 6d 3e 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74  em>list</em></dt
38f0: 3e 0a 09 3c 64 64 3e 4c 69 73 74 20 6f 66 20 74  >..<dd>List of t
3900: 68 65 20 43 65 72 74 69 66 69 63 61 74 65 20 41  he Certificate A
3910: 75 74 68 6f 72 69 74 69 65 73 20 75 73 65 64 20  uthorities used 
3920: 74 6f 20 63 72 65 61 74 65 20 74 68 65 20 63 65  to create the ce
3930: 72 74 69 66 69 63 61 74 65 2e 3c 2f 64 64 3e 0a  rtificate.</dd>.
3940: 20 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 62      </dl>.    <b
3950: 3e 43 65 72 74 69 66 69 63 61 74 65 20 53 74 61  >Certificate Sta
3960: 74 75 73 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e  tus</b>.    <dl>
3970: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 61 6c  ..<dt><strong>al
3980: 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 73  l</strong> <em>s
3990: 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  tring</em></dt>.
39a0: 09 3c 64 64 3e 44 75 6d 70 20 6f 66 20 61 6c 6c  .<dd>Dump of all
39b0: 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e 66   certificate inf
39c0: 6f 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  o.</dd>..<dt><st
39d0: 72 6f 6e 67 3e 76 65 72 73 69 6f 6e 3c 2f 73 74  rong>version</st
39e0: 72 6f 6e 67 3e 20 3c 65 6d 3e 76 61 6c 75 65 3c  rong> <em>value<
39f0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
3a00: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 76  he certificate v
3a10: 65 72 73 69 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64  ersion.</dd>..<d
3a20: 74 3e 3c 73 74 72 6f 6e 67 3e 73 65 72 69 61 6c  t><strong>serial
3a30: 4e 75 6d 62 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  Number</strong> 
3a40: 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  <em>n</em></dt>.
3a50: 09 3c 64 64 3e 54 68 65 20 73 65 72 69 61 6c 20  .<dd>The serial 
3a60: 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 63 65  number of the ce
3a70: 72 74 69 66 69 63 61 74 65 20 61 73 20 61 20 68  rtificate as a h
3a80: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
3a90: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 73 69 67  .<dt><strong>sig
3aa0: 6e 61 74 75 72 65 3c 2f 73 74 72 6f 6e 67 3e 20  nature</strong> 
3ab0: 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f 65  <em>algorithm</e
3ac0: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 69 70  m></dt>..<dd>Cip
3ad0: 68 65 72 20 61 6c 67 6f 72 69 74 68 6d 20 75 73  her algorithm us
3ae0: 65 64 20 66 6f 72 20 63 65 72 74 69 66 69 63 61  ed for certifica
3af0: 74 65 20 73 69 67 6e 61 74 75 72 65 2e 3c 2f 64  te signature.</d
3b00: 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e  d>..<dt><strong>
3b10: 69 73 73 75 65 72 3c 2f 73 74 72 6f 6e 67 3e 20  issuer</strong> 
3b20: 3c 65 6d 3e 64 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e  <em>dn</em></dt>
3b30: 0a 09 3c 64 64 3e 54 68 65 20 64 69 73 74 69 6e  ..<dd>The distin
3b40: 67 75 69 73 68 65 64 20 6e 61 6d 65 20 28 44 4e  guished name (DN
3b50: 29 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69  ) of the certifi
3b60: 63 61 74 65 20 69 73 73 75 65 72 2e 3c 2f 64 64  cate issuer.</dd
3b70: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e  >..<dt><strong>n
3b80: 6f 74 42 65 66 6f 72 65 3c 2f 73 74 72 6f 6e 67  otBefore</strong
3b90: 3e 20 3c 65 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c  > <em>date</em><
3ba0: 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 62 65  /dt>..<dd>The be
3bb0: 67 69 6e 6e 69 6e 67 20 64 61 74 65 20 6f 66 20  ginning date of 
3bc0: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
3bd0: 76 61 6c 69 64 69 74 79 2e 3c 2f 64 64 3e 0a 09  validity.</dd>..
3be0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6e 6f 74 41  <dt><strong>notA
3bf0: 66 74 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  fter</strong> <e
3c00: 6d 3e 64 61 74 65 3c 2f 65 6d 3e 3c 2f 64 74 3e  m>date</em></dt>
3c10: 0a 09 3c 64 64 3e 54 68 65 20 65 78 70 69 72 61  ..<dd>The expira
3c20: 74 69 6f 6e 20 64 61 74 65 20 6f 66 20 74 68 65  tion date of the
3c30: 20 63 65 72 74 69 66 69 63 61 74 65 20 76 61 6c   certificate val
3c40: 69 64 69 74 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74  idity.</dd>..<dt
3c50: 3e 3c 73 74 72 6f 6e 67 3e 73 75 62 6a 65 63 74  ><strong>subject
3c60: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 64 6e  </strong> <em>dn
3c70: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
3c80: 54 68 65 20 64 69 73 74 69 6e 67 75 69 73 68 65  The distinguishe
3c90: 64 20 6e 61 6d 65 20 28 44 4e 29 20 6f 66 20 74  d name (DN) of t
3ca0: 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73  he certificate s
3cb0: 75 62 6a 65 63 74 2e 0a 09 20 20 20 20 46 69 65  ubject...    Fie
3cc0: 6c 64 73 20 69 6e 63 6c 75 64 65 3a 20 43 6f 6d  lds include: Com
3cd0: 6d 6f 6e 20 4e 61 6d 65 20 28 43 4e 29 2c 20 4f  mon Name (CN), O
3ce0: 72 67 61 6e 69 7a 61 74 69 6f 6e 20 28 4f 29 2c  rganization (O),
3cf0: 20 4c 6f 63 61 6c 69 74 79 0a 09 20 20 20 20 6f   Locality..    o
3d00: 72 20 43 69 74 79 20 28 4c 29 2c 20 53 74 61 74  r City (L), Stat
3d10: 65 20 6f 72 20 50 72 6f 76 69 6e 63 65 20 28 53  e or Province (S
3d20: 29 2c 20 61 6e 64 20 43 6f 75 6e 74 72 79 20 4e  ), and Country N
3d30: 61 6d 65 20 28 43 29 2e 3c 2f 64 64 3e 0a 09 3c  ame (C).</dd>..<
3d40: 64 74 3e 3c 73 74 72 6f 6e 67 3e 69 73 73 75 65  dt><strong>issue
3d50: 72 55 6e 69 71 75 65 49 44 3c 2f 73 74 72 6f 6e  rUniqueID</stron
3d60: 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65  g> <em>string</e
3d70: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65  m></dt>..<dd>The
3d80: 20 69 73 73 75 65 72 20 75 6e 69 71 75 65 20 69   issuer unique i
3d90: 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  d.</dd>..<dt><st
3da0: 72 6f 6e 67 3e 73 75 62 6a 65 63 74 55 6e 69 71  rong>subjectUniq
3db0: 75 65 49 44 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  ueID</strong> <e
3dc0: 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f 64  m>string</em></d
3dd0: 74 3e 0a 09 3c 64 64 3e 54 68 65 20 73 75 62 6a  t>..<dd>The subj
3de0: 65 63 74 20 75 6e 69 71 75 65 20 69 64 2e 3c 2f  ect unique id.</
3df0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
3e00: 3e 6e 75 6d 5f 65 78 74 65 6e 73 69 6f 6e 73 3c  >num_extensions<
3e10: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c 2f  /strong> <em>n</
3e20: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4e 75  em></dt>..<dd>Nu
3e30: 6d 62 65 72 20 6f 66 20 63 65 72 74 69 66 69 63  mber of certific
3e40: 61 74 65 20 65 78 74 65 6e 73 69 6f 6e 73 2e 3c  ate extensions.<
3e50: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
3e60: 67 3e 65 78 74 65 6e 73 69 6f 6e 73 3c 2f 73 74  g>extensions</st
3e70: 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f  rong> <em>list</
3e80: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69  em></dt>..<dd>Li
3e90: 73 74 20 6f 66 20 63 65 72 74 69 66 69 63 61 74  st of certificat
3ea0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 6e 61 6d 65  e extension name
3eb0: 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  s.</dd>..<dt><st
3ec0: 72 6f 6e 67 3e 61 75 74 68 6f 72 69 74 79 4b 65  rong>authorityKe
3ed0: 79 49 64 65 6e 74 69 66 69 65 72 3c 2f 73 74 72  yIdentifier</str
3ee0: 6f 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c  ong> <em>string<
3ef0: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 28  /em></dt>..<dd>(
3f00: 41 4b 49 29 20 4b 65 79 20 69 64 65 6e 74 69 66  AKI) Key identif
3f10: 69 65 72 20 6f 66 20 74 68 65 20 49 73 73 75 69  ier of the Issui
3f20: 6e 67 20 43 41 20 63 65 72 74 69 66 69 63 61 74  ng CA certificat
3f30: 65 20 74 68 61 74 20 73 69 67 6e 65 64 0a 09 20  e that signed.. 
3f40: 20 20 20 74 68 65 20 53 53 4c 20 63 65 72 74 69     the SSL certi
3f50: 66 69 63 61 74 65 20 61 73 20 61 20 68 65 78 20  ficate as a hex 
3f60: 73 74 72 69 6e 67 2e 20 54 68 69 73 20 76 61 6c  string. This val
3f70: 75 65 20 6d 61 74 63 68 65 73 20 74 68 65 20 53  ue matches the S
3f80: 4b 49 0a 09 20 20 20 20 76 61 6c 75 65 20 6f 66  KI..    value of
3f90: 20 74 68 65 20 49 6e 74 65 72 6d 65 64 69 61 74   the Intermediat
3fa0: 65 20 43 41 20 63 65 72 74 69 66 69 63 61 74 65  e CA certificate
3fb0: 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72  .</dd>..<dt><str
3fc0: 6f 6e 67 3e 73 75 62 6a 65 63 74 4b 65 79 49 64  ong>subjectKeyId
3fd0: 65 6e 74 69 66 69 65 72 3c 2f 73 74 72 6f 6e 67  entifier</strong
3fe0: 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d  > <em>string</em
3ff0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 28 53 4b 49  ></dt>..<dd>(SKI
4000: 29 20 48 61 73 68 20 6f 66 20 74 68 65 20 70 75  ) Hash of the pu
4010: 62 6c 69 63 20 6b 65 79 20 69 6e 73 69 64 65 20  blic key inside 
4020: 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20  the certificate 
4030: 61 73 20 61 20 68 65 78 0a 09 20 20 20 20 73 74  as a hex..    st
4040: 72 69 6e 67 2e 20 55 73 65 64 20 74 6f 20 69 64  ring. Used to id
4050: 65 6e 74 69 66 79 20 63 65 72 74 69 66 69 63 61  entify certifica
4060: 74 65 73 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  tes that contain
4070: 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 09 20   a particular.. 
4080: 20 20 20 70 75 62 6c 69 63 20 6b 65 79 2e 3c 2f     public key.</
4090: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
40a0: 3e 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3c  >subjectAltName<
40b0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73  /strong> <em>lis
40c0: 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  t</em></dt>..<dd
40d0: 3e 4c 69 73 74 20 6f 66 20 61 6c 6c 20 6f 66 20  >List of all of 
40e0: 74 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20  the alternative 
40f0: 64 6f 6d 61 69 6e 20 6e 61 6d 65 73 2c 20 73 75  domain names, su
4100: 62 20 64 6f 6d 61 69 6e 73 2c 0a 09 20 20 20 20  b domains,..    
4110: 61 6e 64 20 49 50 20 61 64 64 72 65 73 73 65 73  and IP addresses
4120: 20 74 68 61 74 20 61 72 65 20 73 65 63 75 72 65   that are secure
4130: 64 20 62 79 20 74 68 65 20 63 65 72 74 69 66 69  d by the certifi
4140: 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  cate.</dd>..<dt>
4150: 3c 73 74 72 6f 6e 67 3e 6f 63 73 70 3c 2f 73 74  <strong>ocsp</st
4160: 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 69 73 74 3c 2f  rong> <em>list</
4170: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 4c 69  em></dt>..<dd>Li
4180: 73 74 20 6f 66 20 61 6c 6c 20 4f 6e 6c 69 6e 65  st of all Online
4190: 20 43 65 72 74 69 66 69 63 61 74 65 20 53 74 61   Certificate Sta
41a0: 74 75 73 20 50 72 6f 74 6f 63 6f 6c 20 28 4f 43  tus Protocol (OC
41b0: 53 50 29 20 55 52 4c 73 2e 3c 2f 64 64 3e 0a 09  SP) URLs.</dd>..
41c0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 65 72 74  <dt><strong>cert
41d0: 69 66 69 63 61 74 65 3c 2f 73 74 72 6f 6e 67 3e  ificate</strong>
41e0: 20 3c 65 6d 3e 63 65 72 74 3c 2f 65 6d 3e 3c 2f   <em>cert</em></
41f0: 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20 50 45 4d  dt>..<dd>The PEM
4200: 20 65 6e 63 6f 64 65 64 20 63 65 72 74 69 66 69   encoded certifi
4210: 63 61 74 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  cate.</dd>..<dt>
4220: 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72  <strong>signatur
4230: 65 41 6c 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f  eAlgorithm</stro
4240: 6e 67 3e 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68  ng> <em>algorith
4250: 6d 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64  m</em></dt>..<dd
4260: 3e 43 69 70 68 65 72 20 61 6c 67 6f 72 69 74 68  >Cipher algorith
4270: 6d 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 63  m used for the c
4280: 65 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61  ertificate signa
4290: 74 75 72 65 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  ture.</dd>..<dt>
42a0: 3c 73 74 72 6f 6e 67 3e 73 69 67 6e 61 74 75 72  <strong>signatur
42b0: 65 56 61 6c 75 65 3c 2f 73 74 72 6f 6e 67 3e 20  eValue</strong> 
42c0: 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c  <em>string</em><
42d0: 2f 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66  /dt>..<dd>Certif
42e0: 69 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20  icate signature 
42f0: 61 73 20 61 20 68 65 78 20 73 74 72 69 6e 67 2e  as a hex string.
4300: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
4310: 6e 67 3e 73 69 67 6e 61 74 75 72 65 44 69 67 65  ng>signatureDige
4320: 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  st</strong> <em>
4330: 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74  version</em></dt
4340: 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66 69 63 61  >..<dd>Certifica
4350: 74 65 20 73 69 67 6e 69 6e 67 20 64 69 67 65 73  te signing diges
4360: 74 20 61 73 20 61 20 68 65 78 20 73 74 72 69 6e  t as a hex strin
4370: 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  g.</dd>..<dt><st
4380: 72 6f 6e 67 3e 70 75 62 6c 69 63 4b 65 79 41 6c  rong>publicKeyAl
4390: 67 6f 72 69 74 68 6d 3c 2f 73 74 72 6f 6e 67 3e  gorithm</strong>
43a0: 20 3c 65 6d 3e 61 6c 67 6f 72 69 74 68 6d 3c 2f   <em>algorithm</
43b0: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 43 65  em></dt>..<dd>Ce
43c0: 72 74 69 66 69 63 61 74 65 20 73 69 67 6e 61 74  rtificate signat
43d0: 75 72 65 20 70 75 62 6c 69 63 20 6b 65 79 20 61  ure public key a
43e0: 6c 67 6f 72 69 74 68 6d 2e 3c 2f 64 64 3e 0a 09  lgorithm.</dd>..
43f0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 70 75 62 6c  <dt><strong>publ
4400: 69 63 4b 65 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c  icKey</strong> <
4410: 65 6d 3e 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c 2f  em>string</em></
4420: 64 74 3e 0a 09 3c 64 64 3e 43 65 72 74 69 66 69  dt>..<dd>Certifi
4430: 63 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 70  cate signature p
4440: 75 62 6c 69 63 20 6b 65 79 20 61 73 20 61 20 68  ublic key as a h
4450: 65 78 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a  ex string.</dd>.
4460: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 62 69 74  .<dt><strong>bit
4470: 73 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e  s</strong> <em>n
4480: 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e  </em></dt>..<dd>
4490: 4e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20 75  Number of bits u
44a0: 73 65 64 20 66 6f 72 20 63 65 72 74 69 66 69 63  sed for certific
44b0: 61 74 65 20 73 69 67 6e 61 74 75 72 65 20 6b 65  ate signature ke
44c0: 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  y.</dd>..<dt><st
44d0: 72 6f 6e 67 3e 73 65 6c 66 5f 73 69 67 6e 65 64  rong>self_signed
44e0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f  </strong> <em>bo
44f0: 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  olean</em></dt>.
4500: 09 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 65  .<dd>Whether the
4510: 20 63 65 72 74 69 66 69 63 61 74 65 20 73 69 67   certificate sig
4520: 6e 61 74 75 72 65 20 69 73 20 73 65 6c 66 20 73  nature is self s
4530: 69 67 6e 65 64 2e 3c 2f 64 64 3e 0a 09 3c 64 74  igned.</dd>..<dt
4540: 3e 3c 73 74 72 6f 6e 67 3e 73 68 61 31 5f 68 61  ><strong>sha1_ha
4550: 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  sh</strong> <em>
4560: 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  hash</em></dt>..
4570: 3c 64 64 3e 54 68 65 20 53 48 41 31 20 68 61 73  <dd>The SHA1 has
4580: 68 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69  h of the certifi
4590: 63 61 74 65 20 61 73 20 61 20 68 65 78 20 73 74  cate as a hex st
45a0: 72 69 6e 67 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  ring.</dd>..<dt>
45b0: 3c 73 74 72 6f 6e 67 3e 73 68 61 32 35 36 5f 68  <strong>sha256_h
45c0: 61 73 68 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ash</strong> <em
45d0: 3e 68 61 73 68 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >hash</em></dt>.
45e0: 09 3c 64 64 3e 54 68 65 20 53 48 41 32 35 36 20  .<dd>The SHA256 
45f0: 68 61 73 68 20 6f 66 20 74 68 65 20 63 65 72 74  hash of the cert
4600: 69 66 69 63 61 74 65 20 61 73 20 61 20 68 65 78  ificate as a hex
4610: 20 73 74 72 69 6e 67 2e 3c 2f 64 64 3e 0a 20 20   string.</dd>.  
4620: 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 62 6c    </dl>.    </bl
4630: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20 3c  ockquote>..    <
4640: 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a  dt><a name="tls:
4650: 3a 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 73 74  :connection"><st
4660: 72 6f 6e 67 3e 74 6c 73 3a 3a 63 6f 6e 6e 65 63  rong>tls::connec
4670: 74 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 0a 20 20  tion</strong>.  
4680: 20 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 3c 2f 65    <em>channel</e
4690: 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20 20  m></a></dt>.    
46a0: 3c 64 64 3e 52 65 74 75 72 6e 73 20 74 68 65 20  <dd>Returns the 
46b0: 63 75 72 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69  current connecti
46c0: 6f 6e 20 73 74 61 74 75 73 20 6f 66 20 61 6e 20  on status of an 
46d0: 53 53 4c 20 63 68 61 6e 6e 65 6c 2e 20 54 68 65  SSL channel. The
46e0: 0a 09 72 65 73 75 6c 74 20 69 73 20 61 20 6c 69  ..result is a li
46f0: 73 74 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20  st of key-value 
4700: 70 61 69 72 73 20 64 65 73 63 72 69 62 69 6e 67  pairs describing
4710: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
4720: 3c 2f 64 64 3e 0a 20 20 20 20 3c 62 6c 6f 63 6b  </dd>.    <block
4730: 71 75 6f 74 65 3e 0a 20 20 20 20 3c 62 3e 53 53  quote>.    <b>SS
4740: 4c 20 53 74 61 74 75 73 3c 2f 62 3e 0a 20 20 20  L Status</b>.   
4750: 20 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f   <dl>..<dt><stro
4760: 6e 67 3e 73 74 61 74 65 3c 2f 73 74 72 6f 6e 67  ng>state</strong
4770: 3e 20 3c 65 6d 3e 73 74 61 74 65 3c 2f 65 6d 3e  > <em>state</em>
4780: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 74 61 74 65  </dt>..<dd>State
4790: 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   of the connecti
47a0: 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  on.</dd>..<dt><s
47b0: 74 72 6f 6e 67 3e 73 65 72 76 65 72 6e 61 6d 65  trong>servername
47c0: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 61  </strong> <em>na
47d0: 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  me</em></dt>..<d
47e0: 64 3e 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  d>The name of th
47f0: 65 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 73  e connected to s
4800: 65 72 76 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74  erver.</dd>..<dt
4810: 3e 3c 73 74 72 6f 6e 67 3e 70 72 6f 74 6f 63 6f  ><strong>protoco
4820: 6c 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 76  l</strong> <em>v
4830: 65 72 73 69 6f 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e  ersion</em></dt>
4840: 0a 09 3c 64 64 3e 54 68 65 20 70 72 6f 74 6f 63  ..<dd>The protoc
4850: 6f 6c 20 76 65 72 73 69 6f 6e 20 75 73 65 64 20  ol version used 
4860: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
4870: 6f 6e 3a 0a 09 20 20 20 20 53 53 4c 32 2c 20 53  on:..    SSL2, S
4880: 53 4c 33 2c 20 54 4c 53 31 2c 20 54 4c 53 31 2e  SL3, TLS1, TLS1.
4890: 31 2c 20 54 4c 53 31 2e 32 2c 20 54 4c 53 31 2e  1, TLS1.2, TLS1.
48a0: 33 2c 20 6f 72 20 75 6e 6b 6e 6f 77 6e 2e 3c 2f  3, or unknown.</
48b0: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
48c0: 3e 72 65 6e 65 67 6f 74 69 61 74 69 6f 6e 5f 61  >renegotiation_a
48d0: 6c 6c 6f 77 65 64 3c 2f 73 74 72 6f 6e 67 3e 20  llowed</strong> 
48e0: 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e  <em>boolean</em>
48f0: 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68  </dt>..<dd>Wheth
4900: 65 72 20 70 72 6f 74 6f 63 6f 6c 20 72 65 6e 65  er protocol rene
4910: 67 6f 74 69 61 74 69 6f 6e 20 69 73 20 73 75 70  gotiation is sup
4920: 70 6f 72 74 65 64 20 6f 72 20 6e 6f 74 2e 3c 2f  ported or not.</
4930: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
4940: 3e 73 65 63 75 72 69 74 79 5f 6c 65 76 65 6c 3c  >security_level<
4950: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6c 65 76  /strong> <em>lev
4960: 65 6c 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64  el</em></dt>..<d
4970: 64 3e 54 68 65 20 73 65 63 75 72 69 74 79 20 6c  d>The security l
4980: 65 76 65 6c 20 75 73 65 64 20 66 6f 72 20 73 65  evel used for se
4990: 6c 65 63 74 69 6f 6e 20 6f 66 20 63 69 70 68 65  lection of ciphe
49a0: 72 73 2c 20 6b 65 79 20 73 69 7a 65 2c 20 65 74  rs, key size, et
49b0: 63 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  c.</dd>..<dt><st
49c0: 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 72 65 75  rong>session_reu
49d0: 73 65 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  sed</strong> <em
49e0: 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64  >boolean</em></d
49f0: 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65 72 20  t>..<dd>Whether 
4a00: 74 68 65 20 73 65 73 73 69 6f 6e 20 68 61 73 20  the session has 
4a10: 62 65 65 6e 20 72 65 75 73 65 64 20 6f 72 20 6e  been reused or n
4a20: 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  ot.</dd>..<dt><s
4a30: 74 72 6f 6e 67 3e 69 73 5f 73 65 72 76 65 72 3c  trong>is_server<
4a40: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 6f 6f  /strong> <em>boo
4a50: 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  lean</em></dt>..
4a60: 3c 64 64 3e 57 68 65 74 68 65 72 20 74 68 65 20  <dd>Whether the 
4a70: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6f  connection is co
4a80: 6e 66 69 67 75 72 65 64 20 61 73 20 61 20 73 65  nfigured as a se
4a90: 72 76 65 72 20 28 31 29 20 6f 72 20 63 6c 69 65  rver (1) or clie
4aa0: 6e 74 20 28 30 29 2e 3c 2f 64 64 3e 0a 09 3c 64  nt (0).</dd>..<d
4ab0: 74 3e 3c 73 74 72 6f 6e 67 3e 63 6f 6d 70 72 65  t><strong>compre
4ac0: 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20 3c  ssion</strong> <
4ad0: 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64 74  em>mode</em></dt
4ae0: 3e 0a 09 3c 64 64 3e 43 6f 6d 70 72 65 73 73 69  >..<dd>Compressi
4af0: 6f 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64 64 3e 0a  on method.</dd>.
4b00: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 65 78 70  .<dt><strong>exp
4b10: 61 6e 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20  ansion</strong> 
4b20: 3c 65 6d 3e 6d 6f 64 65 3c 2f 65 6d 3e 3c 2f 64  <em>mode</em></d
4b30: 74 3e 0a 09 3c 64 64 3e 45 78 70 61 6e 73 69 6f  t>..<dd>Expansio
4b40: 6e 20 6d 65 74 68 6f 64 2e 3c 2f 64 64 3e 0a 09  n method.</dd>..
4b50: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 61 4c 69  <dt><strong>caLi
4b60: 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  st</strong> <em>
4b70: 6c 69 73 74 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a 09  list</em></dt>..
4b80: 3c 64 64 3e 4c 69 73 74 20 6f 66 20 43 65 72 74  <dd>List of Cert
4b90: 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74  ificate Authorit
4ba0: 69 65 73 20 28 43 41 29 20 66 6f 72 20 58 2e 35  ies (CA) for X.5
4bb0: 30 39 20 63 65 72 74 69 66 69 63 61 74 65 2e 3c  09 certificate.<
4bc0: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 20  /dd>.    </dl>. 
4bd0: 20 20 20 3c 62 3e 43 69 70 68 65 72 20 49 6e 66     <b>Cipher Inf
4be0: 6f 3c 2f 62 3e 0a 20 20 20 20 3c 64 6c 3e 0a 09  o</b>.    <dl>..
4bf0: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70 68  <dt><strong>ciph
4c00: 65 72 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  er</strong> <em>
4c10: 63 69 70 68 65 72 3c 2f 65 6d 3e 3c 2f 64 74 3e  cipher</em></dt>
4c20: 0a 09 3c 64 64 3e 54 68 65 20 63 75 72 72 65 6e  ..<dd>The curren
4c30: 74 20 63 69 70 68 65 72 20 69 6e 20 75 73 65 20  t cipher in use 
4c40: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
4c50: 6f 6e 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73  on.</dd>..<dt><s
4c60: 74 72 6f 6e 67 3e 73 74 61 6e 64 61 72 64 5f 6e  trong>standard_n
4c70: 61 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ame</strong> <em
4c80: 3e 6e 61 6d 65 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  >name</em></dt>.
4c90: 09 3c 64 64 3e 54 68 65 20 73 74 61 6e 64 61 72  .<dd>The standar
4ca0: 64 20 52 46 43 20 6e 61 6d 65 20 6f 66 20 63 69  d RFC name of ci
4cb0: 70 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e  pher.</dd>..<dt>
4cc0: 3c 73 74 72 6f 6e 67 3e 61 6c 67 6f 72 69 74 68  <strong>algorith
4cd0: 6d 5f 62 69 74 73 3c 2f 73 74 72 6f 6e 67 3e 20  m_bits</strong> 
4ce0: 3c 65 6d 3e 6e 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  <em>n</em></dt>.
4cf0: 09 3c 64 64 3e 54 68 65 20 6e 75 6d 62 65 72 20  .<dd>The number 
4d00: 6f 66 20 70 72 6f 63 65 73 73 65 64 20 62 69 74  of processed bit
4d10: 73 20 75 73 65 64 20 66 6f 72 20 63 69 70 68 65  s used for ciphe
4d20: 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74  r.</dd>..<dt><st
4d30: 72 6f 6e 67 3e 73 65 63 72 65 74 5f 62 69 74 73  rong>secret_bits
4d40: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 6e 3c  </strong> <em>n<
4d50: 2f 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54  /em></dt>..<dd>T
4d60: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63  he number of sec
4d70: 72 65 74 20 62 69 74 73 20 75 73 65 64 20 66 6f  ret bits used fo
4d80: 72 20 63 69 70 68 65 72 2e 3c 2f 64 64 3e 0a 09  r cipher.</dd>..
4d90: 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6d 69 6e 5f  <dt><strong>min_
4da0: 76 65 72 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e  version</strong>
4db0: 20 3c 65 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d   <em>version</em
4dc0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
4dd0: 6d 69 6e 69 6d 75 6d 20 70 72 6f 74 6f 63 6f 6c  minimum protocol
4de0: 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 63 69 70   version for cip
4df0: 68 65 72 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  her.</dd>..<dt><
4e00: 73 74 72 6f 6e 67 3e 63 69 70 68 65 72 5f 69 73  strong>cipher_is
4e10: 5f 61 65 61 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c  _aead</strong> <
4e20: 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c  em>boolean</em><
4e30: 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74 68 65  /dt>..<dd>Whethe
4e40: 72 20 74 68 65 20 63 69 70 68 65 72 20 69 73 20  r the cipher is 
4e50: 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 45 6e  Authenticated En
4e60: 63 72 79 70 74 69 6f 6e 20 77 69 74 68 0a 09 20  cryption with.. 
4e70: 20 20 20 41 73 73 6f 63 69 61 74 65 64 20 44 61     Associated Da
4e80: 74 61 20 28 41 45 41 44 29 2e 3c 2f 64 64 3e 0a  ta (AEAD).</dd>.
4e90: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 63 69 70  .<dt><strong>cip
4ea0: 68 65 72 5f 69 64 3c 2f 73 74 72 6f 6e 67 3e 20  her_id</strong> 
4eb0: 3c 65 6d 3e 69 64 3c 2f 65 6d 3e 3c 2f 64 74 3e  <em>id</em></dt>
4ec0: 0a 09 3c 64 64 3e 54 68 65 20 4f 70 65 6e 53 53  ..<dd>The OpenSS
4ed0: 4c 20 63 69 70 68 65 72 20 69 64 2e 3c 2f 64 64  L cipher id.</dd
4ee0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 64  >..<dt><strong>d
4ef0: 65 73 63 72 69 70 74 69 6f 6e 3c 2f 73 74 72 6f  escription</stro
4f00: 6e 67 3e 20 3c 65 6d 3e 73 74 72 69 6e 67 3c 2f  ng> <em>string</
4f10: 65 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 41 20  em></dt>..<dd>A 
4f20: 74 65 78 74 20 64 65 73 63 72 69 70 74 69 6f 6e  text description
4f30: 20 6f 66 20 74 68 65 20 63 69 70 68 65 72 2e 3c   of the cipher.<
4f40: 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  /dd>..<dt><stron
4f50: 67 3e 68 61 6e 64 73 68 61 6b 65 5f 64 69 67 65  g>handshake_dige
4f60: 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  st</strong> <em>
4f70: 62 6f 6f 6c 65 61 6e 3c 2f 65 6d 3e 3c 2f 64 74  boolean</em></dt
4f80: 3e 0a 09 3c 64 64 3e 44 69 67 65 73 74 20 75 73  >..<dd>Digest us
4f90: 65 64 20 64 75 72 69 6e 67 20 68 61 6e 64 73 68  ed during handsh
4fa0: 61 6b 65 2e 3c 2f 64 64 3e 0a 20 20 20 20 3c 2f  ake.</dd>.    </
4fb0: 64 6c 3e 0a 20 20 20 20 3c 62 3e 53 65 73 73 69  dl>.    <b>Sessi
4fc0: 6f 6e 20 49 6e 66 6f 3c 2f 62 3e 0a 20 20 20 20  on Info</b>.    
4fd0: 3c 64 6c 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e  <dl>..<dt><stron
4fe0: 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e 20  g>alpn</strong> 
4ff0: 3c 65 6d 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d  <em>protocol</em
5000: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 54 68 65 20  ></dt>..<dd>The 
5010: 70 72 6f 74 6f 63 6f 6c 20 73 65 6c 65 63 74 65  protocol selecte
5020: 64 20 61 66 74 65 72 20 41 70 70 6c 69 63 61 74  d after Applicat
5030: 69 6f 6e 2d 4c 61 79 65 72 20 50 72 6f 74 6f 63  ion-Layer Protoc
5040: 6f 6c 0a 09 20 20 20 20 4e 65 67 6f 74 69 61 74  ol..    Negotiat
5050: 69 6f 6e 20 28 41 4c 50 4e 29 2e 3c 2f 64 64 3e  ion (ALPN).</dd>
5060: 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 72 65  ..<dt><strong>re
5070: 73 75 6d 61 62 6c 65 3c 2f 73 74 72 6f 6e 67 3e  sumable</strong>
5080: 20 3c 65 6d 3e 62 6f 6f 6c 65 61 6e 3c 2f 65 6d   <em>boolean</em
5090: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 57 68 65 74  ></dt>..<dd>Whet
50a0: 68 65 72 20 74 68 65 20 73 65 73 73 69 6f 6e 20  her the session 
50b0: 63 61 6e 20 62 65 20 72 65 73 75 6d 65 64 20 6f  can be resumed o
50c0: 72 20 6e 6f 74 2e 3c 2f 64 64 3e 0a 09 3c 64 74  r not.</dd>..<dt
50d0: 3e 3c 73 74 72 6f 6e 67 3e 73 74 61 72 74 5f 74  ><strong>start_t
50e0: 69 6d 65 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d  ime</strong> <em
50f0: 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f 64  >seconds</em></d
5100: 74 3e 0a 09 3c 64 64 3e 54 69 6d 65 20 73 69 6e  t>..<dd>Time sin
5110: 63 65 20 73 65 73 73 69 6f 6e 20 73 74 61 72 74  ce session start
5120: 65 64 20 69 6e 20 73 65 63 6f 6e 64 73 20 73 69  ed in seconds si
5130: 6e 63 65 20 65 70 6f 63 68 2e 3c 2f 64 64 3e 0a  nce epoch.</dd>.
5140: 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 74 69 6d  .<dt><strong>tim
5150: 65 6f 75 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65  eout</strong> <e
5160: 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d 3e 3c 2f  m>seconds</em></
5170: 64 74 3e 0a 09 3c 64 64 3e 4d 61 78 20 64 75 72  dt>..<dd>Max dur
5180: 61 74 69 6f 6e 20 6f 66 20 73 65 73 73 69 6f 6e  ation of session
5190: 20 69 6e 20 73 65 63 6f 6e 64 73 20 62 65 66 6f   in seconds befo
51a0: 72 65 20 74 69 6d 65 2d 6f 75 74 2e 3c 2f 64 64  re time-out.</dd
51b0: 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67 3e 6c  >..<dt><strong>l
51c0: 69 66 65 74 69 6d 65 3c 2f 73 74 72 6f 6e 67 3e  ifetime</strong>
51d0: 20 3c 65 6d 3e 73 65 63 6f 6e 64 73 3c 2f 65 6d   <em>seconds</em
51e0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 73 73  ></dt>..<dd>Sess
51f0: 69 6f 6e 20 74 69 63 6b 65 74 20 6c 69 66 65 74  ion ticket lifet
5200: 69 6d 65 20 68 69 6e 74 20 69 6e 20 73 65 63 6f  ime hint in seco
5210: 6e 64 73 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  nds.</dd>..<dt><
5220: 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e 5f 69  strong>session_i
5230: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  d</strong> <em>b
5240: 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d  inary_string</em
5250: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71  ></dt>..<dd>Uniq
5260: 75 65 20 73 65 73 73 69 6f 6e 20 69 64 20 66 6f  ue session id fo
5270: 72 20 75 73 65 20 69 6e 20 72 65 73 75 6d 69 6e  r use in resumin
5280: 67 20 74 68 65 20 73 65 73 73 69 6f 6e 2e 3c 2f  g the session.</
5290: 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f 6e 67  dd>..<dt><strong
52a0: 3e 73 65 73 73 69 6f 6e 5f 74 69 63 6b 65 74 3c  >session_ticket<
52b0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62 69 6e  /strong> <em>bin
52c0: 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d 3e 3c  ary_string</em><
52d0: 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71 75 65  /dt>..<dd>Unique
52e0: 20 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20   session ticket 
52f0: 66 6f 72 20 75 73 65 20 69 6e 20 72 65 73 75 6d  for use in resum
5300: 69 6e 67 20 74 68 65 20 73 65 73 73 69 6f 6e 2e  ing the session.
5310: 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c 73 74 72 6f  </dd>..<dt><stro
5320: 6e 67 3e 74 69 63 6b 65 74 5f 61 70 70 5f 64 61  ng>ticket_app_da
5330: 74 61 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ta</strong> <em>
5340: 62 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65  binary_string</e
5350: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69  m></dt>..<dd>Uni
5360: 71 75 65 20 73 65 73 73 69 6f 6e 20 74 69 63 6b  que session tick
5370: 65 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  et application d
5380: 61 74 61 2e 3c 2f 64 64 3e 0a 09 3c 64 74 3e 3c  ata.</dd>..<dt><
5390: 73 74 72 6f 6e 67 3e 6d 61 73 74 65 72 5f 6b 65  strong>master_ke
53a0: 79 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 62  y</strong> <em>b
53b0: 69 6e 61 72 79 5f 73 74 72 69 6e 67 3c 2f 65 6d  inary_string</em
53c0: 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 55 6e 69 71  ></dt>..<dd>Uniq
53d0: 75 65 20 73 65 73 73 69 6f 6e 20 6d 61 73 74 65  ue session maste
53e0: 72 20 6b 65 79 2e 3c 2f 64 64 3e 0a 09 3c 64 74  r key.</dd>..<dt
53f0: 3e 3c 73 74 72 6f 6e 67 3e 73 65 73 73 69 6f 6e  ><strong>session
5400: 5f 63 61 63 68 65 5f 6d 6f 64 65 3c 2f 73 74 72  _cache_mode</str
5410: 6f 6e 67 3e 20 3c 65 6d 3e 6d 6f 64 65 3c 2f 65  ong> <em>mode</e
5420: 6d 3e 3c 2f 64 74 3e 0a 09 3c 64 64 3e 53 65 72  m></dt>..<dd>Ser
5430: 76 65 72 20 63 61 63 68 65 20 6d 6f 64 65 20 28  ver cache mode (
5440: 63 6c 69 65 6e 74 2c 20 73 65 72 76 65 72 2c 20  client, server, 
5450: 6f 72 20 62 6f 74 68 29 2e 3c 2f 64 64 3e 0a 20  or both).</dd>. 
5460: 20 20 20 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 62     </dl>.    </b
5470: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 20 20  lockquote>..    
5480: 3c 64 74 3e 3c 61 20 6e 61 6d 65 3d 22 74 6c 73  <dt><a name="tls
5490: 3a 3a 63 69 70 68 65 72 73 22 3e 3c 73 74 72 6f  ::ciphers"><stro
54a0: 6e 67 3e 74 6c 73 3a 3a 63 69 70 68 65 72 73 3c  ng>tls::ciphers<
54b0: 2f 73 74 72 6f 6e 67 3e 0a 09 3c 65 6d 3e 3f 70  /strong>..<em>?p
54c0: 72 6f 74 6f 63 6f 6c 3f 20 3f 76 65 72 62 6f 73  rotocol? ?verbos
54d0: 65 3f 20 3f 73 75 70 70 6f 72 74 65 64 3f 3c 2f  e? ?supported?</
54e0: 65 6d 3e 3c 2f 61 3e 3c 2f 64 74 3e 0a 20 20 20  em></a></dt>.   
54f0: 20 3c 64 64 3e 57 69 74 68 6f 75 74 20 61 6e 79   <dd>Without any
5500: 20 61 72 67 73 2c 20 72 65 74 75 72 6e 73 20 61   args, returns a
5510: 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 73 79 6d   list of all sym
5520: 6d 65 74 72 69 63 20 63 69 70 68 65 72 73 20 66  metric ciphers f
5530: 6f 72 20 75 73 65 0a 09 77 69 74 68 20 74 68 65  or use..with the
5540: 20 3c 73 74 72 6f 6e 67 3e 2d 63 69 70 68 65 72   <strong>-cipher
5550: 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e  </strong> option
5560: 2e 20 57 69 74 68 20 3c 65 6d 3e 70 72 6f 74 6f  . With <em>proto
5570: 63 6f 6c 3c 2f 65 6d 3e 2c 0a 09 6f 6e 6c 79 20  col</em>,..only 
5580: 74 68 65 20 63 69 70 68 65 72 73 20 73 75 70 70  the ciphers supp
5590: 6f 72 74 65 64 20 66 6f 72 20 74 68 61 74 20 70  orted for that p
55a0: 72 6f 74 6f 63 6f 6c 20 61 72 65 20 72 65 74 75  rotocol are retu
55b0: 72 6e 65 64 2e 20 53 65 65 0a 09 3c 61 20 68 72  rned. See..<a hr
55c0: 65 66 3d 22 23 74 6c 73 3a 3a 70 72 6f 74 6f 63  ef="#tls::protoc
55d0: 6f 6c 73 22 3e 3c 73 74 72 6f 6e 67 3e 74 6c 73  ols"><strong>tls
55e0: 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 73 74 72  ::protocols</str
55f0: 6f 6e 67 3e 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64  ong></a> command
5600: 0a 09 66 6f 72 20 74 68 65 20 73 75 70 70 6f 72  ..for the suppor
5610: 74 65 64 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 49  ted protocols. I
5620: 66 20 3c 65 6d 3e 76 65 72 62 6f 73 65 3c 2f 65  f <em>verbose</e
5630: 6d 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 20  m> is specified 
5640: 61 73 20 74 72 75 65 0a 09 74 68 65 6e 20 61 20  as true..then a 
5650: 76 65 72 62 6f 73 65 2c 20 68 75 6d 61 6e 20 72  verbose, human r
5660: 65 61 64 61 62 6c 65 20 6c 69 73 74 20 69 73 20  eadable list is 
5670: 72 65 74 75 72 6e 65 64 20 77 69 74 68 20 61 64  returned with ad
5680: 64 69 74 69 6f 6e 61 6c 0a 09 69 6e 66 6f 72 6d  ditional..inform
5690: 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 63 69 70  ation on the cip
56a0: 68 65 72 2e 20 49 66 20 3c 65 6d 3e 73 75 70 70  her. If <em>supp
56b0: 6f 72 74 65 64 3c 2f 65 6d 3e 20 69 73 20 73 70  orted</em> is sp
56c0: 65 63 69 66 69 65 64 20 61 73 20 74 72 75 65 2c  ecified as true,
56d0: 0a 09 74 68 65 6e 20 6f 6e 6c 79 20 74 68 65 20  ..then only the 
56e0: 63 69 70 68 65 72 73 20 73 75 70 70 6f 72 74 65  ciphers supporte
56f0: 64 20 66 6f 72 20 70 72 6f 74 6f 63 6f 6c 20 77  d for protocol w
5700: 69 6c 6c 20 62 65 20 6c 69 73 74 65 64 2e 3c 2f  ill be listed.</
5710: 64 64 3e 0a 20 20 20 20 3c 64 74 3e 26 6e 62 73  dd>.    <dt>&nbs
5720: 70 3b 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 74 3e  p;</dt>.    <dt>
5730: 3c 61 20 6e 61 6d 65 3d 22 74 6c 73 3a 3a 70 72  <a name="tls::pr
5740: 6f 74 6f 63 6f 6c 73 22 3e 3c 73 74 72 6f 6e 67  otocols"><strong
5750: 3e 74 6c 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c  >tls::protocols<
5760: 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 64 74  /strong></a></dt
5770: 3e 0a 20 20 20 20 3c 64 64 3e 52 65 74 75 72 6e  >.    <dd>Return
5780: 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20  s a list of the 
5790: 73 75 70 70 6f 72 74 65 64 20 53 53 4c 2f 54 4c  supported SSL/TL
57a0: 53 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 56 61 6c  S protocols. Val
57b0: 69 64 20 76 61 6c 75 65 73 20 61 72 65 3a 0a 09  id values are:..
57c0: 3c 62 3e 73 73 6c 32 3c 2f 62 3e 2c 20 3c 62 3e  <b>ssl2</b>, <b>
57d0: 73 73 6c 33 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73  ssl3</b>, <b>tls
57e0: 31 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e 31  1</b>, <b>tls1.1
57f0: 3c 2f 62 3e 2c 20 3c 62 3e 74 6c 73 31 2e 32 3c  </b>, <b>tls1.2<
5800: 2f 62 3e 2c 0a 09 61 6e 64 20 3c 62 3e 74 6c 73  /b>,..and <b>tls
5810: 31 2e 33 3c 2f 62 3e 2e 20 45 78 61 63 74 20 6c  1.3</b>. Exact l
5820: 69 73 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 4f  ist depends on O
5830: 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 61  penSSL version a
5840: 6e 64 0a 09 63 6f 6d 70 69 6c 65 20 74 69 6d 65  nd..compile time
5850: 20 66 6c 61 67 73 2e 3c 2f 64 64 3e 0a 20 20 20   flags.</dd>.   
5860: 20 3c 64 74 3e 26 6e 62 73 70 3b 3c 2f 64 74 3e   <dt>&nbsp;</dt>
5870: 0a 20 20 20 20 3c 64 74 3e 3c 61 20 6e 61 6d 65  .    <dt><a name
5880: 3d 22 74 6c 73 3a 3a 76 65 72 73 69 6f 6e 22 3e  ="tls::version">
5890: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76 65 72  <strong>tls::ver
58a0: 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61  sion</strong></a
58b0: 3e 3c 2f 64 74 3e 0a 20 20 20 20 3c 64 64 3e 52  ></dt>.    <dd>R
58c0: 65 74 75 72 6e 73 20 74 68 65 20 4f 70 65 6e 53  eturns the OpenS
58d0: 53 4c 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e  SL version strin
58e0: 67 2e 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 3c 62  g.</dd>.</dl>.<b
58f0: 72 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61  r>..<hr>..<h3><a
5900: 20 6e 61 6d 65 3d 22 43 45 52 54 49 46 49 43 41   name="CERTIFICA
5910: 54 45 20 56 41 4c 49 44 41 54 49 4f 4e 22 3e 43  TE VALIDATION">C
5920: 45 52 54 49 46 49 43 41 54 45 20 56 41 4c 49 44  ERTIFICATE VALID
5930: 41 54 49 4f 4e 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a  ATION</a></h3>..
5940: 3c 68 34 3e 53 75 6d 6d 61 72 79 20 6f 66 20 63  <h4>Summary of c
5950: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74 69  ommand line opti
5960: 6f 6e 73 3a 3c 2f 68 34 3e 0a 3c 70 3e 54 68 65  ons:</h4>.<p>The
5970: 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f   following optio
5980: 6e 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  ns are used for 
5990: 63 65 72 74 69 66 69 63 61 74 65 20 76 61 6c 69  certificate vali
59a0: 64 61 74 69 6f 6e 3a 3c 2f 70 3e 0a 3c 75 6c 3e  dation:</p>.<ul>
59b0: 0a 3c 6c 69 3e 54 68 65 20 3c 62 3e 2d 63 61 64  .<li>The <b>-cad
59c0: 69 72 3c 2f 62 3e 20 6f 70 74 69 6f 6e 20 73 70  ir</b> option sp
59d0: 65 63 69 66 69 65 73 20 74 68 65 20 64 69 72 65  ecifies the dire
59e0: 63 74 6f 72 79 20 77 68 65 72 65 20 74 68 65 20  ctory where the 
59f0: 43 65 72 74 69 66 69 63 61 74 65 0a 41 75 74 68  Certificate.Auth
5a00: 6f 72 69 74 79 20 28 43 41 29 20 63 65 72 74 69  ority (CA) certi
5a10: 66 69 63 61 74 65 73 20 61 72 65 20 73 74 6f 72  ficates are stor
5a20: 65 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20  ed. The default 
5a30: 69 73 20 70 6c 61 74 66 6f 72 6d 20 73 70 65 63  is platform spec
5a40: 69 66 69 63 2c 20 62 75 74 0a 69 73 20 75 73 75  ific, but.is usu
5a50: 61 6c 6c 79 20 22 2f 65 74 63 2f 73 73 6c 2f 63  ally "/etc/ssl/c
5a60: 65 72 74 73 22 20 6f 6e 20 4c 69 6e 75 78 2f 55  erts" on Linux/U
5a70: 6e 69 78 20 73 79 73 74 65 6d 73 2e 20 54 68 65  nix systems. The
5a80: 20 64 65 66 61 75 6c 74 20 6c 6f 63 61 74 69 6f   default locatio
5a90: 6e 20 63 61 6e 20 62 65 0a 6f 76 65 72 72 69 64  n can be.overrid
5aa0: 64 65 6e 20 76 69 61 20 74 68 65 20 3c 62 3e 53  den via the <b>S
5ab0: 53 4c 5f 43 45 52 54 5f 44 49 52 3c 2f 62 3e 20  SL_CERT_DIR</b> 
5ac0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
5ad0: 61 62 6c 65 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54  able.</li>.<li>T
5ae0: 68 65 20 3c 62 3e 2d 63 61 66 69 6c 65 20 3c 2f  he <b>-cafile </
5af0: 62 3e 20 6f 70 74 69 6f 6e 20 73 70 65 63 69 66  b> option specif
5b00: 69 65 73 20 74 68 65 20 66 69 6c 65 20 74 68 61  ies the file tha
5b10: 74 20 63 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 6f  t contains all o
5b20: 66 20 74 68 65 0a 43 65 72 74 69 66 69 63 61 74  f the.Certificat
5b30: 65 20 41 75 74 68 6f 72 69 74 79 20 28 43 41 29  e Authority (CA)
5b40: 20 63 65 72 74 69 66 69 63 61 74 65 73 20 69 6e   certificates in
5b50: 20 74 68 65 20 50 45 4d 20 66 69 6c 65 20 66 6f   the PEM file fo
5b60: 72 6d 61 74 2e 20 54 68 65 20 64 65 66 61 75 6c  rmat. The defaul
5b70: 74 20 69 73 0a 3c 62 3e 63 65 72 74 2e 70 65 6d  t is.<b>cert.pem
5b80: 3c 2f 62 3e 2c 20 69 6e 20 74 68 65 20 4f 70 65  </b>, in the Ope
5b90: 6e 53 53 4c 20 64 69 72 65 63 74 6f 72 79 2e 20  nSSL directory. 
5ba0: 4f 6e 20 4c 69 6e 75 78 2f 55 6e 69 78 20 73 79  On Linux/Unix sy
5bb0: 73 74 65 6d 73 2c 20 74 68 69 73 20 69 73 0a 75  stems, this is.u
5bc0: 73 75 61 6c 6c 79 20 22 2f 65 74 63 2f 73 73 6c  sually "/etc/ssl
5bd0: 2f 63 61 2d 62 75 6e 64 6c 65 2e 70 65 6d 22 2e  /ca-bundle.pem".
5be0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 66 69 6c   The default fil
5bf0: 65 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64  e can be overrid
5c00: 64 65 6e 20 76 69 61 20 74 68 65 0a 3c 62 3e 53  den via the.<b>S
5c10: 53 4c 5f 43 45 52 54 5f 46 49 4c 45 3c 2f 62 3e  SL_CERT_FILE</b>
5c20: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
5c30: 69 61 62 6c 65 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e  iable.</li>.<li>
5c40: 54 68 65 20 3c 62 3e 2d 63 61 73 74 6f 72 65 3c  The <b>-castore<
5c50: 2f 62 3e 20 6f 70 74 69 6f 6e 20 63 6f 6e 74 61  /b> option conta
5c60: 69 6e 73 20 74 68 65 20 55 52 49 20 74 6f 20 74  ins the URI to t
5c70: 68 65 20 43 65 72 74 69 66 69 63 61 74 65 20 41  he Certificate A
5c80: 75 74 68 6f 72 69 74 79 0a 28 43 41 29 20 73 74  uthority.(CA) st
5c90: 6f 72 65 2c 20 77 68 69 63 68 20 6d 61 79 20 62  ore, which may b
5ca0: 65 20 61 20 73 69 6e 67 6c 65 20 63 6f 6e 74 61  e a single conta
5cb0: 69 6e 65 72 20 6f 72 20 61 20 63 61 74 61 6c 6f  iner or a catalo
5cc0: 67 20 6f 66 20 63 6f 6e 74 61 69 6e 65 72 73 2e  g of containers.
5cd0: 0a 53 74 61 72 74 69 6e 67 20 77 69 74 68 20 4f  .Starting with O
5ce0: 70 65 6e 53 53 4c 20 33 2e 32 20 6f 6e 20 57 69  penSSL 3.2 on Wi
5cf0: 6e 64 6f 77 73 2c 20 73 65 74 20 74 68 69 73 20  ndows, set this 
5d00: 74 6f 20 22 6f 72 67 2e 6f 70 65 6e 73 73 6c 2e  to "org.openssl.
5d10: 77 69 6e 73 74 6f 72 65 3a 2f 2f 22 20 74 6f 0a  winstore://" to.
5d20: 75 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  use the built-in
5d30: 20 57 69 6e 64 6f 77 73 20 43 65 72 74 69 66 69   Windows Certifi
5d40: 63 61 74 65 20 53 74 6f 72 65 2e 20 54 68 65 20  cate Store. The 
5d50: 57 69 6e 64 6f 77 73 20 63 65 72 74 20 73 74 6f  Windows cert sto
5d60: 72 65 20 6f 6e 6c 79 0a 73 75 70 70 6f 72 74 73  re only.supports
5d70: 20 72 6f 6f 74 20 63 65 72 74 69 66 69 63 61 74   root certificat
5d80: 65 20 73 74 6f 72 65 73 2e 3c 2f 6c 69 3e 0a 3c  e stores.</li>.<
5d90: 6c 69 3e 54 68 65 20 3c 62 3e 2d 72 65 71 75 65  li>The <b>-reque
5da0: 73 74 3c 2f 62 3e 20 6f 70 74 69 6f 6e 20 69 73  st</b> option is
5db0: 20 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74   used to request
5dc0: 20 74 68 65 20 73 65 72 76 65 72 20 73 65 6e 64   the server send
5dd0: 20 69 74 73 0a 63 65 72 74 69 66 69 63 61 74 65   its.certificate
5de0: 20 63 68 61 69 6e 20 61 73 20 70 61 72 74 20 6f   chain as part o
5df0: 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  f the connection
5e00: 20 6e 65 67 6f 74 69 61 74 69 6f 6e 20 70 72 6f   negotiation pro
5e10: 63 65 73 73 2e 20 54 68 69 73 20 69 73 0a 6e 65  cess. This is.ne
5e20: 65 64 65 64 20 74 6f 20 64 6f 20 63 65 72 74 69  eded to do certi
5e30: 66 69 63 61 74 65 20 76 61 6c 69 64 61 74 69 6f  ficate validatio
5e40: 6e 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69  n. The default i
5e50: 73 20 74 72 75 65 2e 20 49 6e 20 61 64 64 69 74  s true. In addit
5e60: 69 6f 6e 2c 20 74 68 65 0a 63 6c 69 65 6e 74 20  ion, the.client 
5e70: 63 61 6e 20 6d 61 6e 75 61 6c 6c 79 20 69 6e 73  can manually ins
5e80: 70 65 63 74 20 61 6e 64 20 61 63 63 65 70 74 20  pect and accept 
5e90: 6f 72 20 72 65 6a 65 63 74 20 65 61 63 68 20 63  or reject each c
5ea0: 65 72 74 69 66 69 63 61 74 65 20 75 73 69 6e 67  ertificate using
5eb0: 20 74 68 65 0a 3c 62 3e 2d 76 61 6c 69 64 61 74   the.<b>-validat
5ec0: 65 63 6f 6d 6d 61 6e 64 3c 2f 62 3e 20 6f 70 74  ecommand</b> opt
5ed0: 69 6f 6e 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68  ion.</li>.<li>Th
5ee0: 65 20 3c 62 3e 2d 72 65 71 75 69 72 65 3c 2f 62  e <b>-require</b
5ef0: 3e 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  > option is used
5f00: 20 74 6f 20 72 65 71 75 69 72 65 20 63 65 72 74   to require cert
5f10: 69 66 69 63 61 74 65 20 76 61 6c 69 64 61 74 69  ificate validati
5f20: 6f 6e 20 62 65 0a 70 65 72 66 6f 72 6d 65 64 20  on be.performed 
5f30: 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 63  as part of the c
5f40: 6f 6e 6e 65 63 74 69 6f 6e 20 6e 65 67 6f 74 69  onnection negoti
5f50: 61 74 69 6f 6e 20 70 72 6f 63 65 73 73 2e 20 41  ation process. A
5f60: 20 76 61 6c 69 64 20 43 41 20 64 69 72 65 63 74   valid CA direct
5f70: 6f 72 79 2c 0a 66 69 6c 65 2c 20 6f 72 20 73 74  ory,.file, or st
5f80: 6f 72 65 20 6d 75 73 74 20 62 65 20 70 72 65 73  ore must be pres
5f90: 65 6e 74 20 66 6f 72 20 74 68 69 73 20 74 6f 20  ent for this to 
5fa0: 77 6f 72 6b 2e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  work.</li>.</ul>
5fb0: 0a 0a 3c 62 72 3e 0a 3c 68 34 3e 57 68 65 6e 20  ..<br>.<h4>When 
5fc0: 61 72 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  are command line
5fd0: 20 6f 70 74 69 6f 6e 73 20 6e 65 65 64 65 64 3a   options needed:
5fe0: 3c 2f 68 34 3e 0a 3c 70 3e 0a 42 79 20 64 65 66  </h4>.<p>.By def
5ff0: 61 75 6c 74 2c 20 61 20 63 6c 69 65 6e 74 20 54  ault, a client T
6000: 4c 53 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 6f  LS connection do
6010: 65 73 20 4e 4f 54 20 76 61 6c 69 64 61 74 65 20  es NOT validate 
6020: 74 68 65 20 73 65 72 76 65 72 20 63 65 72 74 69  the server certi
6030: 66 69 63 61 74 65 0a 63 68 61 69 6e 2e 20 54 68  ficate.chain. Th
6040: 69 73 20 6c 69 6d 69 74 61 74 69 6f 6e 20 69 73  is limitation is
6050: 20 64 75 65 20 74 6f 20 74 68 65 20 6c 61 63 6b   due to the lack
6060: 20 6f 66 20 61 20 63 6f 6d 6d 6f 6e 20 63 72 6f   of a common cro
6070: 73 73 20 70 6c 61 74 66 6f 72 6d 0a 64 61 74 61  ss platform.data
6080: 62 61 73 65 20 6f 66 20 43 65 72 74 69 66 69 63  base of Certific
6090: 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28 43  ate Authority (C
60a0: 41 29 20 70 72 6f 76 69 64 65 64 20 63 65 72 74  A) provided cert
60b0: 69 66 69 63 61 74 65 73 20 74 6f 20 76 61 6c 69  ificates to vali
60c0: 64 61 74 65 0a 61 67 61 69 6e 73 74 2e 20 4d 61  date.against. Ma
60d0: 6e 79 20 4c 69 6e 75 78 20 73 79 73 74 65 6d 73  ny Linux systems
60e0: 20 6e 61 74 69 76 65 6c 79 20 73 75 70 70 6f 72   natively suppor
60f0: 74 20 4f 70 65 6e 53 53 4c 20 61 6e 64 20 74 68  t OpenSSL and th
6100: 75 73 20 68 61 76 65 20 74 68 65 73 65 0a 63 65  us have these.ce
6110: 72 74 69 66 69 63 61 74 65 73 20 69 6e 73 74 61  rtificates insta
6120: 6c 6c 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  lled as part of 
6130: 74 68 65 20 4f 53 2c 20 62 75 74 20 4d 61 63 4f  the OS, but MacO
6140: 53 20 61 6e 64 20 57 69 6e 64 6f 77 73 20 64 6f  S and Windows do
6150: 20 6e 6f 74 2e 20 49 6e 0a 6f 72 64 65 72 20 74   not. In.order t
6160: 6f 20 75 73 65 20 74 68 65 20 3c 62 3e 2d 72 65  o use the <b>-re
6170: 71 75 69 72 65 3c 2f 62 3e 20 6f 70 74 69 6f 6e  quire</b> option
6180: 2c 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  , one of the fol
6190: 6c 6f 77 69 6e 67 20 6d 75 73 74 20 62 65 20 74  lowing must be t
61a0: 72 75 65 3a 3c 2f 70 3e 0a 3c 75 6c 3e 0a 3c 6c  rue:</p>.<ul>.<l
61b0: 69 3e 4f 6e 20 4c 69 6e 75 78 20 61 6e 64 20 55  i>On Linux and U
61c0: 6e 69 78 20 73 79 73 74 65 6d 73 20 77 69 74 68  nix systems with
61d0: 20 4f 70 65 6e 53 53 4c 20 61 6c 72 65 61 64 79   OpenSSL already
61e0: 20 69 6e 73 74 61 6c 6c 65 64 2c 20 69 66 20 74   installed, if t
61f0: 68 65 20 43 41 0a 63 65 72 74 69 66 69 63 61 74  he CA.certificat
6200: 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  es are stored in
6210: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 6f   the standard lo
6220: 63 61 74 69 6f 6e 73 2c 20 6f 72 20 74 68 65 20  cations, or the 
6230: 3c 62 3e 53 53 4c 5f 43 45 52 54 5f 44 49 52 3c  <b>SSL_CERT_DIR<
6240: 2f 62 3e 0a 6f 72 20 3c 62 3e 53 53 4c 5f 43 45  /b>.or <b>SSL_CE
6250: 52 54 5f 46 49 4c 45 3c 2f 62 3e 20 65 6e 76 20  RT_FILE</b> env 
6260: 76 61 72 73 20 61 72 65 20 73 65 74 2c 20 74 68  vars are set, th
6270: 65 6e 20 6e 6f 20 6f 74 68 65 72 20 6f 70 74 69  en no other opti
6280: 6f 6e 73 20 61 72 65 20 6e 65 65 64 65 64 2e 3c  ons are needed.<
6290: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 49 66 20 4f 70 65  /li>..<li>If Ope
62a0: 6e 53 53 4c 20 69 73 20 6e 6f 74 20 69 6e 73 74  nSSL is not inst
62b0: 61 6c 6c 65 64 20 69 6e 20 74 68 65 20 64 65 66  alled in the def
62c0: 61 75 6c 74 20 6c 6f 63 61 74 69 6f 6e 2c 20 6f  ault location, o
62d0: 72 20 77 68 65 6e 20 75 73 69 6e 67 20 4d 61 63  r when using Mac
62e0: 20 4f 53 0a 6f 72 20 57 69 6e 64 6f 77 73 20 61   OS.or Windows a
62f0: 6e 64 20 4f 70 65 6e 53 53 4c 20 69 73 20 69 6e  nd OpenSSL is in
6300: 73 74 61 6c 6c 65 64 2c 20 74 68 65 20 3c 62 3e  stalled, the <b>
6310: 53 53 4c 5f 43 45 52 54 5f 44 49 52 3c 2f 62 3e  SSL_CERT_DIR</b>
6320: 20 61 6e 64 2f 6f 72 20 0a 3c 62 3e 53 53 4c 5f   and/or .<b>SSL_
6330: 43 45 52 54 5f 46 49 4c 45 3c 2f 62 3e 20 65 6e  CERT_FILE</b> en
6340: 76 20 76 61 72 73 20 6f 72 20 74 68 65 20 3c 62  v vars or the <b
6350: 3e 2d 63 61 64 69 72 3c 2f 62 3e 20 61 6e 64 2f  >-cadir</b> and/
6360: 6f 72 20 3c 62 3e 2d 63 61 66 69 6c 65 3c 2f 62  or <b>-cafile</b
6370: 3e 0a 20 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20  >. options must 
6380: 62 65 20 64 65 66 69 6e 65 64 2e 3c 2f 6c 69 3e  be defined.</li>
6390: 0a 0a 3c 6c 69 3e 4f 6e 20 57 69 6e 64 6f 77 73  ..<li>On Windows
63a0: 2c 20 73 74 61 72 74 69 6e 67 20 69 6e 20 4f 70  , starting in Op
63b0: 65 6e 53 53 4c 20 33 2e 32 2c 20 69 74 20 69 73  enSSL 3.2, it is
63c0: 20 6e 6f 77 20 70 6f 73 73 69 62 6c 65 20 74 6f   now possible to
63d0: 20 61 63 63 65 73 73 20 74 68 65 0a 62 75 69 6c   access the.buil
63e0: 74 2d 69 6e 20 57 69 6e 64 6f 77 73 20 43 65 72  t-in Windows Cer
63f0: 74 69 66 69 63 61 74 65 20 53 74 6f 72 65 20 66  tificate Store f
6400: 72 6f 6d 20 4f 70 65 6e 53 53 4c 2e 20 54 68 69  rom OpenSSL. Thi
6410: 73 20 63 61 6e 20 62 65 20 61 63 68 69 65 76 65  s can be achieve
6420: 64 20 62 79 0a 73 65 74 74 69 6e 67 20 74 68 65  d by.setting the
6430: 20 3c 62 3e 2d 63 61 73 74 6f 72 65 3c 2f 62 3e   <b>-castore</b>
6440: 20 6f 70 74 69 6f 6e 20 74 6f 20 22 3c 62 3e 6f   option to "<b>o
6450: 72 67 2e 6f 70 65 6e 73 73 6c 2e 77 69 6e 73 74  rg.openssl.winst
6460: 6f 72 65 3a 2f 2f 3c 2f 62 3e 22 2e 3c 2f 6c 69  ore://</b>".</li
6470: 3e 0a 0a 3c 6c 69 3e 49 66 20 4f 70 65 6e 53 53  >..<li>If OpenSS
6480: 4c 20 69 73 20 6e 6f 74 20 69 6e 73 74 61 6c 6c  L is not install
6490: 65 64 2c 20 74 68 65 20 43 41 20 63 65 72 74 69  ed, the CA certi
64a0: 66 69 63 61 74 65 73 20 6d 75 73 74 20 62 65 20  ficates must be 
64b0: 64 6f 77 6e 6c 6f 61 64 65 64 20 61 6e 64 0a 69  downloaded and.i
64c0: 6e 73 74 61 6c 6c 65 64 20 77 69 74 68 20 74 68  nstalled with th
64d0: 65 20 75 73 65 72 20 73 6f 66 74 77 61 72 65 2e  e user software.
64e0: 20 54 68 65 20 43 55 52 4c 20 74 65 61 6d 20 6d   The CURL team m
64f0: 61 6b 65 73 20 74 68 65 6d 20 61 76 61 69 6c 61  akes them availa
6500: 62 6c 65 20 61 74 0a 3c 61 20 68 72 65 66 3d 22  ble at.<a href="
6510: 68 74 74 70 73 3a 2f 2f 63 75 72 6c 2e 73 65 2f  https://curl.se/
6520: 64 6f 63 73 2f 63 61 65 78 74 72 61 63 74 2e 68  docs/caextract.h
6530: 74 6d 6c 22 3e 43 41 20 63 65 72 74 69 66 69 63  tml">CA certific
6540: 61 74 65 73 20 65 78 74 72 61 63 74 65 64 0a 66  ates extracted.f
6550: 72 6f 6d 20 4d 6f 7a 69 6c 6c 61 3c 2f 61 3e 20  rom Mozilla</a> 
6560: 69 6e 20 74 68 65 20 3c 62 3e 63 61 63 65 72 74  in the <b>cacert
6570: 2e 70 65 6d 3c 2f 62 3e 20 66 69 6c 65 2e 20 59  .pem</b> file. Y
6580: 6f 75 20 6d 75 73 74 20 74 68 65 6e 20 65 69 74  ou must then eit
6590: 68 65 72 0a 73 65 74 20 74 68 65 20 3c 62 3e 53  her.set the <b>S
65a0: 53 4c 5f 43 45 52 54 5f 44 49 52 3c 2f 62 3e 20  SL_CERT_DIR</b> 
65b0: 61 6e 64 2f 6f 72 20 3c 62 3e 53 53 4c 5f 43 45  and/or <b>SSL_CE
65c0: 52 54 5f 46 49 4c 45 3c 2f 62 3e 20 65 6e 76 20  RT_FILE</b> env 
65d0: 76 61 72 73 20 6f 72 20 74 68 65 0a 3c 62 3e 2d  vars or the.<b>-
65e0: 63 61 64 69 72 3c 2f 62 3e 20 6f 72 20 3c 62 3e  cadir</b> or <b>
65f0: 2d 63 61 66 69 6c 65 3c 2f 62 3e 20 6f 70 74 69  -cafile</b> opti
6600: 6f 6e 73 20 6d 75 73 74 20 62 65 20 73 65 74 20  ons must be set 
6610: 74 6f 20 74 68 65 20 66 69 6c 65 27 73 20 69 6e  to the file's in
6620: 73 74 61 6c 6c 0a 6c 6f 63 61 74 69 6f 6e 2e 20  stall.location. 
6630: 49 74 20 69 73 20 79 6f 75 72 20 72 65 73 70 6f  It is your respo
6640: 6e 73 69 62 69 6c 69 74 79 20 74 6f 20 6b 65 65  nsibility to kee
6650: 70 20 74 68 69 73 20 66 69 6c 65 20 75 70 20 74  p this file up t
6660: 6f 20 64 61 74 65 2e 3c 2f 6c 69 3e 0a 3c 2f 75  o date.</li>.</u
6670: 6c 3e 0a 3c 62 72 3e 0a 0a 3c 68 72 3e 0a 0a 3c  l>.<br>..<hr>..<
6680: 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 43 41 4c 4c  h3><a name="CALL
6690: 42 41 43 4b 20 4f 50 54 49 4f 4e 53 22 3e 43 41  BACK OPTIONS">CA
66a0: 4c 4c 42 41 43 4b 20 4f 50 54 49 4f 4e 53 3c 2f  LLBACK OPTIONS</
66b0: 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 0a 41 73 20  a></h3>..<p>.As 
66c0: 69 6e 64 69 63 61 74 65 64 20 61 62 6f 76 65 2c  indicated above,
66d0: 20 69 6e 64 69 76 69 64 75 61 6c 20 63 68 61 6e   individual chan
66e0: 6e 65 6c 73 20 63 61 6e 20 62 65 20 67 69 76 65  nels can be give
66f0: 6e 20 74 68 65 69 72 20 6f 77 6e 20 63 61 6c 6c  n their own call
6700: 62 61 63 6b 73 0a 74 6f 20 68 61 6e 64 6c 65 20  backs.to handle 
6710: 69 6e 74 65 72 6d 65 64 69 61 74 65 20 70 72 6f  intermediate pro
6720: 63 65 73 73 69 6e 67 20 62 79 20 74 68 65 20 4f  cessing by the O
6730: 70 65 6e 53 53 4c 20 6c 69 62 72 61 72 79 2c 20  penSSL library, 
6740: 75 73 69 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e  using the.<stron
6750: 67 3e 2d 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  g>-command</stro
6760: 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 2d 70 61  ng>, <strong>-pa
6770: 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c  ssword</strong>,
6780: 20 61 6e 64 0a 3c 73 74 72 6f 6e 67 3e 2d 76 61   and.<strong>-va
6790: 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f  lidate_command</
67a0: 73 74 72 6f 6e 67 3e 20 6f 70 74 69 6f 6e 73 20  strong> options 
67b0: 70 61 73 73 65 64 20 74 6f 20 65 69 74 68 65 72  passed to either
67c0: 20 6f 66 0a 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a   of.<strong>tls:
67d0: 3a 73 6f 63 6b 65 74 3c 2f 73 74 72 6f 6e 67 3e  :socket</strong>
67e0: 20 6f 72 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a   or <strong>tls:
67f0: 3a 69 6d 70 6f 72 74 3c 2f 73 74 72 6f 6e 67 3e  :import</strong>
6800: 2e 0a 55 6e 6c 69 6b 65 20 70 72 65 76 69 6f 75  ..Unlike previou
6810: 73 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 54 43  s versions of TC
6820: 4c 20 54 4c 53 2c 20 6f 6e 6c 79 20 69 66 20 74  L TLS, only if t
6830: 68 65 20 63 61 6c 6c 62 61 63 6b 20 67 65 6e 65  he callback gene
6840: 72 61 74 65 73 20 61 6e 20 65 72 72 6f 72 2c 0a  rates an error,.
6850: 77 69 6c 6c 20 74 68 65 20 3c 62 3e 62 67 65 72  will the <b>bger
6860: 72 6f 72 3c 2f 62 3e 20 63 6f 6d 6d 61 6e 64 20  ror</b> command 
6870: 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 20  will be invoked 
6880: 77 69 74 68 20 74 68 65 20 65 72 72 6f 72 20 69  with the error i
6890: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 3c 2f 70 3e  nformation..</p>
68a0: 0a 0a 3c 64 6c 3e 0a 20 20 20 20 3c 64 74 3e 3c  ..<dl>.    <dt><
68b0: 73 74 72 6f 6e 67 3e 2d 63 6f 6d 6d 61 6e 64 3c  strong>-command<
68c0: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 61 6c  /strong> <em>cal
68d0: 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74 3e 0a  lback</em></dt>.
68e0: 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76 6f 6b 65      <dd>..Invoke
68f0: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
6900: 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d  <em>callback</em
6910: 3e 20 73 63 72 69 70 74 20 61 74 20 73 65 76 65  > script at seve
6920: 72 61 6c 20 70 6f 69 6e 74 73 0a 09 64 75 72 69  ral points..duri
6930: 6e 67 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 68  ng the OpenSSL h
6940: 61 6e 64 73 68 61 6b 65 20 61 6e 64 20 75 73 65  andshake and use
6950: 2e 20 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 20  . See below for 
6960: 74 68 65 20 70 6f 73 73 69 62 6c 65 0a 09 61 72  the possible..ar
6970: 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74  guments passed t
6980: 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 73  o the callback s
6990: 63 72 69 70 74 2e 20 56 61 6c 75 65 73 20 72 65  cript. Values re
69a0: 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 0a  turned from the.
69b0: 09 63 61 6c 6c 62 61 63 6b 20 61 72 65 20 69 67  .callback are ig
69c0: 6e 6f 72 65 64 2e 0a 20 20 20 20 3c 62 72 3e 0a  nored..    <br>.
69d0: 20 20 20 20 3c 64 6c 3e 0a 09 3c 64 74 3e 0a 09      <dl>..<dt>..
69e0: 3c 73 74 72 6f 6e 67 3e 65 72 72 6f 72 3c 2f 73  <strong>error</s
69f0: 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61 6e 6e  trong> <em>chann
6a00: 65 6c 49 64 20 6d 65 73 73 61 67 65 3c 2f 65 6d  elId message</em
6a10: 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09  >..</dt>..<dd>..
6a20: 20 20 20 20 54 68 69 73 20 66 6f 72 6d 20 6f 66      This form of
6a30: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
6a40: 6f 6b 65 64 20 77 68 65 6e 65 76 65 72 20 61 6e  oked whenever an
6a50: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 64 75   error occurs du
6a60: 72 69 6e 67 20 74 68 65 0a 09 20 20 20 20 69 6e  ring the..    in
6a70: 69 74 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e  itial connection
6a80: 2c 20 68 61 6e 64 73 68 61 6b 65 2c 20 6f 72 20  , handshake, or 
6a90: 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e 73 2e 20  I/O operations. 
6aa0: 54 68 65 20 3c 65 6d 3e 6d 65 73 73 61 67 65 3c  The <em>message<
6ab0: 2f 65 6d 3e 0a 09 20 20 20 20 61 72 67 75 6d 65  /em>..    argume
6ac0: 6e 74 20 63 61 6e 20 62 65 20 66 72 6f 6d 20 74  nt can be from t
6ad0: 68 65 20 54 63 6c 5f 45 72 72 6e 6f 4d 73 67 2c  he Tcl_ErrnoMsg,
6ae0: 20 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f   OpenSSL functio
6af0: 6e 0a 09 20 20 20 20 3c 63 6f 64 65 3e 45 52 52  n..    <code>ERR
6b00: 5f 72 65 61 73 6f 6e 5f 65 72 72 6f 72 5f 73 74  _reason_error_st
6b10: 72 69 6e 67 28 29 3c 2f 63 6f 64 65 3e 2c 20 6f  ring()</code>, o
6b20: 72 20 61 20 63 75 73 74 6f 6d 20 6d 65 73 73 61  r a custom messa
6b30: 67 65 2e 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e  ge...</dd>..<br>
6b40: 0a 09 3c 64 74 3e 0a 09 20 20 20 20 3c 73 74 72  ..<dt>..    <str
6b50: 6f 6e 67 3e 69 6e 66 6f 3c 2f 73 74 72 6f 6e 67  ong>info</strong
6b60: 3e 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20  > <em>channelId 
6b70: 6d 61 6a 6f 72 20 6d 69 6e 6f 72 20 6d 65 73 73  major minor mess
6b80: 61 67 65 20 74 79 70 65 3c 2f 65 6d 3e 0a 09 3c  age type</em>..<
6b90: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 20 20  /dt>..<dd>..    
6ba0: 20 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61   This form of ca
6bb0: 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65  llback is invoke
6bc0: 64 20 62 79 20 74 68 65 20 4f 70 65 6e 53 53 4c  d by the OpenSSL
6bd0: 20 66 75 6e 63 74 69 6f 6e 0a 09 20 20 20 20 3c   function..    <
6be0: 63 6f 64 65 3e 53 53 4c 5f 73 65 74 5f 69 6e 66  code>SSL_set_inf
6bf0: 6f 5f 63 61 6c 6c 62 61 63 6b 28 29 3c 2f 63 6f  o_callback()</co
6c00: 64 65 3e 20 64 75 72 69 6e 67 20 74 68 65 20 69  de> during the i
6c10: 6e 69 74 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f  nitial connectio
6c20: 6e 0a 09 20 20 20 20 61 6e 64 20 68 61 6e 64 73  n..    and hands
6c30: 68 61 6b 65 20 6f 70 65 72 61 74 69 6f 6e 73 2e  hake operations.
6c40: 20 54 68 65 20 3c 65 6d 3e 74 79 70 65 3c 2f 65   The <em>type</e
6c50: 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e  m> argument is n
6c60: 65 77 20 66 6f 72 0a 09 20 20 20 20 54 4c 53 20  ew for..    TLS 
6c70: 31 2e 38 2e 20 54 68 65 20 61 72 67 75 6d 65 6e  1.8. The argumen
6c80: 74 73 20 61 72 65 3a 0a 09 3c 62 72 3e 0a 09 3c  ts are:..<br>..<
6c90: 75 6c 3e 0a 09 3c 6c 69 3e 50 6f 73 73 69 62 6c  ul>..<li>Possibl
6ca0: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 3c 65 6d  e values for <em
6cb0: 3e 6d 61 6a 6f 72 3c 2f 65 6d 3e 20 61 72 65 3a  >major</em> are:
6cc0: 0a 09 20 20 20 20 3c 63 6f 64 65 3e 68 61 6e 64  ..    <code>hand
6cd0: 73 68 61 6b 65 2c 20 61 6c 65 72 74 2c 20 63 6f  shake, alert, co
6ce0: 6e 6e 65 63 74 2c 20 61 63 63 65 70 74 3c 2f 63  nnect, accept</c
6cf0: 6f 64 65 3e 2e 3c 2f 6c 69 3e 0a 09 3c 6c 69 3e  ode>.</li>..<li>
6d00: 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20  Possible values 
6d10: 66 6f 72 20 3c 65 6d 3e 6d 69 6e 6f 72 3c 2f 65  for <em>minor</e
6d20: 6d 3e 20 61 72 65 3a 0a 09 20 20 20 20 3c 63 6f  m> are:..    <co
6d30: 64 65 3e 73 74 61 72 74 2c 20 64 6f 6e 65 2c 20  de>start, done, 
6d40: 72 65 61 64 2c 20 77 72 69 74 65 2c 20 6c 6f 6f  read, write, loo
6d50: 70 2c 20 65 78 69 74 3c 2f 63 6f 64 65 3e 2e 3c  p, exit</code>.<
6d60: 2f 6c 69 3e 0a 09 3c 6c 69 3e 54 68 65 20 3c 65  /li>..<li>The <e
6d70: 6d 3e 6d 65 73 73 61 67 65 3c 2f 65 6d 3e 20 61  m>message</em> a
6d80: 72 67 75 6d 65 6e 74 20 69 73 20 61 20 64 65 73  rgument is a des
6d90: 63 72 69 70 74 69 76 65 20 73 74 72 69 6e 67 20  criptive string 
6da0: 77 68 69 63 68 20 6d 61 79 0a 09 20 20 20 20 62  which may..    b
6db0: 65 20 67 65 6e 65 72 61 74 65 64 20 65 69 74 68  e generated eith
6dc0: 65 72 20 62 79 20 3c 63 6f 64 65 3e 53 53 4c 5f  er by <code>SSL_
6dd0: 73 74 61 74 65 5f 73 74 72 69 6e 67 5f 6c 6f 6e  state_string_lon
6de0: 67 28 29 3c 2f 63 6f 64 65 3e 20 6f 72 20 62 79  g()</code> or by
6df0: 0a 09 20 20 20 20 3c 63 6f 64 65 3e 53 53 4c 5f  ..    <code>SSL_
6e00: 61 6c 65 72 74 5f 64 65 73 63 5f 73 74 72 69 6e  alert_desc_strin
6e10: 67 5f 6c 6f 6e 67 28 29 3c 2f 63 6f 64 65 3e 2c  g_long()</code>,
6e20: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
6e30: 65 20 63 6f 6e 74 65 78 74 2e 3c 2f 6c 69 3e 0a  e context.</li>.
6e40: 09 3c 6c 69 3e 46 6f 72 20 61 6c 65 72 74 73 2c  .<li>For alerts,
6e50: 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61   the possible va
6e60: 6c 75 65 73 20 66 6f 72 20 3c 65 6d 3e 74 79 70  lues for <em>typ
6e70: 65 3c 2f 65 6d 3e 20 61 72 65 3a 0a 09 20 20 20  e</em> are:..   
6e80: 20 3c 63 6f 64 65 3e 77 61 72 6e 69 6e 67 2c 20   <code>warning, 
6e90: 66 61 74 61 6c 2c 20 61 6e 64 20 75 6e 6b 6e 6f  fatal, and unkno
6ea0: 77 6e 3c 2f 63 6f 64 65 3e 2e 20 46 6f 72 20 6f  wn</code>. For o
6eb0: 74 68 65 72 73 2c 0a 09 20 20 20 20 3c 63 6f 64  thers,..    <cod
6ec0: 65 3e 69 6e 66 6f 3c 2f 63 6f 64 65 3e 20 69 73  e>info</code> is
6ed0: 20 75 73 65 64 2e 3c 2f 6c 69 3e 0a 09 3c 2f 75   used.</li>..</u
6ee0: 6c 3e 0a 09 3c 2f 64 64 3e 0a 09 3c 64 74 3e 0a  l>..</dd>..<dt>.
6ef0: 09 3c 73 74 72 6f 6e 67 3e 6d 65 73 73 61 67 65  .<strong>message
6f00: 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68  </strong> <em>ch
6f10: 61 6e 6e 65 6c 49 64 20 64 69 72 65 63 74 69 6f  annelId directio
6f20: 6e 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74 65 6e  n version conten
6f30: 74 5f 74 79 70 65 20 6d 65 73 73 61 67 65 3c 2f  t_type message</
6f40: 65 6d 3e 0a 09 3c 2f 64 74 3e 0a 09 3c 64 64 3e  em>..</dt>..<dd>
6f50: 0a 09 20 20 20 20 54 68 69 73 20 66 6f 72 6d 20  ..    This form 
6f60: 6f 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  of callback is i
6f70: 6e 76 6f 6b 65 64 20 62 79 20 74 68 65 20 4f 70  nvoked by the Op
6f80: 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e 0a 09  enSSL function..
6f90: 20 20 20 20 3c 63 6f 64 65 3e 53 53 4c 5f 73 65      <code>SSL_se
6fa0: 74 5f 6d 73 67 5f 63 61 6c 6c 62 61 63 6b 28 29  t_msg_callback()
6fb0: 3c 2f 63 6f 64 65 3e 20 77 68 65 6e 65 76 65 72  </code> whenever
6fc0: 20 61 20 6d 65 73 73 61 67 65 20 69 73 20 73 65   a message is se
6fd0: 6e 74 20 6f 72 0a 09 20 20 20 20 72 65 63 65 69  nt or..    recei
6fe0: 76 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 69  ved during the i
6ff0: 6e 69 74 69 61 6c 20 63 6f 6e 6e 65 63 74 69 6f  nitial connectio
7000: 6e 2c 20 68 61 6e 64 73 68 61 6b 65 2c 20 6f 72  n, handshake, or
7010: 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e 73 2e   I/O operations.
7020: 0a 09 20 20 20 20 49 74 20 69 73 20 6f 6e 6c 79  ..    It is only
7030: 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20   available when 
7040: 4f 70 65 6e 53 53 4c 20 69 73 20 63 6f 6d 70 6c  OpenSSL is compl
7050: 69 65 64 20 77 69 74 68 20 74 68 65 0a 09 20 20  ied with the..  
7060: 20 20 3c 65 6d 3e 65 6e 61 62 6c 65 2d 73 73 6c    <em>enable-ssl
7070: 2d 74 72 61 63 65 3c 2f 65 6d 3e 20 6f 70 74 69  -trace</em> opti
7080: 6f 6e 2e 20 41 72 67 75 6d 65 6e 74 73 20 61 72  on. Arguments ar
7090: 65 3a 20 3c 65 6d 3e 64 69 72 65 63 74 69 6f 6e  e: <em>direction
70a0: 3c 2f 65 6d 3e 0a 09 20 20 20 20 69 73 20 3c 62  </em>..    is <b
70b0: 3e 53 65 6e 74 3c 2f 62 3e 20 6f 72 20 3c 62 3e  >Sent</b> or <b>
70c0: 52 65 63 65 69 76 65 64 3c 2f 62 3e 2c 20 3c 65  Received</b>, <e
70d0: 6d 3e 76 65 72 73 69 6f 6e 3c 2f 65 6d 3e 20 69  m>version</em> i
70e0: 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 0a 09  s the protocol..
70f0: 20 20 20 20 76 65 72 73 69 6f 6e 2c 20 3c 65 6d      version, <em
7100: 3e 63 6f 6e 74 65 6e 74 5f 74 79 70 65 3c 2f 65  >content_type</e
7110: 6d 3e 20 69 73 20 74 68 65 20 6d 65 73 73 61 67  m> is the messag
7120: 65 20 63 6f 6e 74 65 6e 74 20 74 79 70 65 2c 20  e content type, 
7130: 61 6e 64 0a 09 20 20 20 20 3c 65 6d 3e 6d 65 73  and..    <em>mes
7140: 73 61 67 65 3c 2f 65 6d 3e 20 69 73 20 6d 6f 72  sage</em> is mor
7150: 65 20 69 6e 66 6f 20 66 72 6f 6d 20 74 68 65 20  e info from the 
7160: 3c 63 6f 64 65 3e 53 53 4c 5f 74 72 61 63 65 3c  <code>SSL_trace<
7170: 2f 63 6f 64 65 3e 20 41 50 49 2e 0a 09 20 20 20  /code> API...   
7180: 20 54 68 69 73 20 63 61 6c 6c 62 61 63 6b 20 69   This callback i
7190: 73 20 6e 65 77 20 66 6f 72 20 54 4c 53 20 31 2e  s new for TLS 1.
71a0: 38 2e 0a 09 3c 2f 64 64 3e 0a 09 3c 62 72 3e 0a  8...</dd>..<br>.
71b0: 09 3c 64 74 3e 0a 09 3c 73 74 72 6f 6e 67 3e 73  .<dt>..<strong>s
71c0: 65 73 73 69 6f 6e 3c 2f 73 74 72 6f 6e 67 3e 20  ession</strong> 
71d0: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 73 65  <em>channelId se
71e0: 73 73 69 6f 6e 5f 69 64 20 74 69 63 6b 65 74 20  ssion_id ticket 
71f0: 6c 69 66 65 74 69 6d 65 3c 2f 65 6d 3e 0a 09 3c  lifetime</em>..<
7200: 2f 64 74 3e 0a 09 3c 64 64 3e 0a 09 20 20 20 20  /dt>..<dd>..    
7210: 54 68 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c  This form of cal
7220: 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
7230: 20 62 79 20 74 68 65 20 4f 70 65 6e 53 53 4c 20   by the OpenSSL 
7240: 66 75 6e 63 74 69 6f 6e 0a 09 20 20 20 20 3c 63  function..    <c
7250: 6f 64 65 3e 53 53 4c 5f 43 54 58 5f 73 65 73 73  ode>SSL_CTX_sess
7260: 5f 73 65 74 5f 6e 65 77 5f 63 62 28 29 3c 2f 63  _set_new_cb()</c
7270: 6f 64 65 3e 20 77 68 65 6e 65 76 65 72 20 61 20  ode> whenever a 
7280: 6e 65 77 20 73 65 73 73 69 6f 6e 20 69 64 20 69  new session id i
7290: 73 0a 09 20 20 20 20 73 65 6e 74 20 62 79 20 74  s..    sent by t
72a0: 68 65 20 73 65 72 76 65 72 20 64 75 72 69 6e 67  he server during
72b0: 20 74 68 65 20 69 6e 69 74 69 61 6c 20 63 6f 6e   the initial con
72c0: 6e 65 63 74 69 6f 6e 20 61 6e 64 20 68 61 6e 64  nection and hand
72d0: 73 68 61 6b 65 2c 20 62 75 74 0a 09 20 20 20 20  shake, but..    
72e0: 63 61 6e 20 61 6c 73 6f 20 62 65 20 72 65 63 65  can also be rece
72f0: 69 76 65 64 20 6c 61 74 65 72 20 69 66 20 74 68  ived later if th
7300: 65 20 3c 62 3e 2d 70 6f 73 74 5f 68 61 6e 64 73  e <b>-post_hands
7310: 68 61 6b 65 3c 2f 62 3e 20 6f 70 74 69 6f 6e 20  hake</b> option 
7320: 69 73 0a 09 20 20 20 20 75 73 65 64 2e 20 41 72  is..    used. Ar
7330: 67 75 6d 65 6e 74 73 20 61 72 65 3a 20 3c 65 6d  guments are: <em
7340: 3e 73 65 73 73 69 6f 6e 5f 69 64 3c 2f 65 6d 3e  >session_id</em>
7350: 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 0a   is the current.
7360: 09 20 20 20 20 73 65 73 73 69 6f 6e 20 69 64 65  .    session ide
7370: 6e 74 69 66 69 65 72 2c 20 3c 65 6d 3e 74 69 63  ntifier, <em>tic
7380: 6b 65 74 3c 2f 65 6d 3e 20 69 73 20 74 68 65 20  ket</em> is the 
7390: 73 65 73 73 69 6f 6e 20 74 69 63 6b 65 74 20 69  session ticket i
73a0: 6e 66 6f 2c 20 61 6e 64 0a 09 20 20 20 20 3c 65  nfo, and..    <e
73b0: 6d 3e 6c 69 66 65 74 69 6d 65 3c 2f 65 6d 3e 20  m>lifetime</em> 
73c0: 69 73 20 74 68 65 20 74 68 65 20 74 69 63 6b 65  is the the ticke
73d0: 74 20 6c 69 66 65 74 69 6d 65 20 69 6e 20 73 65  t lifetime in se
73e0: 63 6f 6e 64 73 2e 0a 09 20 20 20 20 54 68 69 73  conds...    This
73f0: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 65 77   callback is new
7400: 20 66 6f 72 20 54 4c 53 20 31 2e 38 2e 0a 09 3c   for TLS 1.8...<
7410: 2f 64 64 3e 0a 20 20 20 20 3c 2f 64 6c 3e 0a 20  /dd>.    </dl>. 
7420: 20 20 20 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 3c     </dd>.</dl>.<
7430: 62 72 3e 0a 3c 64 6c 3e 0a 20 20 20 20 3c 64 74  br>.<dl>.    <dt
7440: 3e 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f  ><strong>-passwo
7450: 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  rd</strong> <em>
7460: 63 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64  callback</em></d
7470: 74 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76  t>.    <dd>..Inv
7480: 6f 6b 65 73 20 74 68 65 20 73 70 65 63 69 66 69  okes the specifi
7490: 65 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c  ed <em>callback<
74a0: 2f 65 6d 3e 20 73 63 72 69 70 74 20 77 68 65 6e  /em> script when
74b0: 20 4f 70 65 6e 53 53 4c 20 6e 65 65 64 73 20 74   OpenSSL needs t
74c0: 6f 0a 09 6f 62 74 61 69 6e 20 61 20 70 61 73 73  o..obtain a pass
74d0: 77 6f 72 64 2e 20 53 65 65 20 62 65 6c 6f 77 20  word. See below 
74e0: 66 6f 72 20 74 68 65 20 70 6f 73 73 69 62 6c 65  for the possible
74f0: 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
7500: 64 20 74 6f 0a 09 74 68 65 20 63 61 6c 6c 62 61  d to..the callba
7510: 63 6b 20 73 63 72 69 70 74 2e 20 53 65 65 20 62  ck script. See b
7520: 65 6c 6f 77 20 66 6f 72 20 76 61 6c 69 64 20 72  elow for valid r
7530: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 0a 09 3c  eturn values...<
7540: 62 72 3e 0a 09 3c 64 6c 3e 0a 09 20 20 20 20 3c  br>..<dl>..    <
7550: 64 74 3e 0a 09 20 20 20 20 3c 73 74 72 6f 6e 67  dt>..    <strong
7560: 3e 70 61 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e  >password</stron
7570: 67 3e 20 3c 65 6d 3e 72 77 66 6c 61 67 20 73 69  g> <em>rwflag si
7580: 7a 65 3c 2f 65 6d 3e 0a 09 20 20 20 20 3c 2f 64  ze</em>..    </d
7590: 74 3e 0a 09 20 20 20 20 3c 64 64 3e 0a 09 09 49  t>..    <dd>...I
75a0: 6e 76 6f 6b 65 64 20 77 68 65 6e 20 6c 6f 61 64  nvoked when load
75b0: 69 6e 67 20 6f 72 20 73 74 6f 72 69 6e 67 20 61  ing or storing a
75c0: 20 50 45 4d 20 63 65 72 74 69 66 69 63 61 74 65   PEM certificate
75d0: 20 77 69 74 68 20 65 6e 63 72 79 70 74 69 6f 6e   with encryption
75e0: 2e 0a 09 09 57 68 65 72 65 20 3c 65 6d 3e 72 77  ....Where <em>rw
75f0: 66 6c 61 67 3c 2f 65 6d 3e 20 69 73 20 30 20 66  flag</em> is 0 f
7600: 6f 72 20 72 65 61 64 69 6e 67 2f 64 65 63 72 79  or reading/decry
7610: 70 74 69 6f 6e 20 6f 72 20 31 20 66 6f 72 0a 09  ption or 1 for..
7620: 09 77 72 69 74 69 6e 67 2f 65 6e 63 72 79 70 74  .writing/encrypt
7630: 69 6f 6e 20 28 63 61 6e 20 70 72 6f 6d 70 74 20  ion (can prompt 
7640: 75 73 65 72 20 74 6f 20 63 6f 6e 66 69 72 6d 29  user to confirm)
7650: 20 61 6e 64 20 3c 65 6d 3e 73 69 7a 65 3c 2f 65   and <em>size</e
7660: 6d 3e 20 69 73 0a 09 09 74 68 65 20 6d 61 78 20  m> is...the max 
7670: 70 61 73 73 77 6f 72 64 20 6c 65 6e 67 74 68 20  password length 
7680: 69 6e 20 62 79 74 65 73 2e 20 54 68 65 20 63 61  in bytes. The ca
7690: 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 72 65  llback should re
76a0: 74 75 72 6e 20 74 68 65 0a 09 09 70 61 73 73 77  turn the...passw
76b0: 6f 72 64 20 61 73 20 61 20 73 74 72 69 6e 67 2e  ord as a string.
76c0: 20 42 6f 74 68 20 61 72 67 75 6d 65 6e 74 73 20   Both arguments 
76d0: 61 72 65 20 6e 65 77 20 66 6f 72 20 54 4c 53 20  are new for TLS 
76e0: 31 2e 38 2e 0a 09 20 20 20 20 3c 2f 64 64 3e 0a  1.8...    </dd>.
76f0: 09 3c 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e  .</dl>.    </dd>
7700: 0a 3c 2f 64 6c 3e 0a 3c 62 72 3e 0a 3c 64 6c 3e  .</dl>.<br>.<dl>
7710: 0a 20 20 20 20 3c 64 74 3e 3c 73 74 72 6f 6e 67  .    <dt><strong
7720: 3e 2d 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e  >-validatecomman
7730: 64 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63  d</strong> <em>c
7740: 61 6c 6c 62 61 63 6b 3c 2f 65 6d 3e 3c 2f 64 74  allback</em></dt
7750: 3e 0a 20 20 20 20 3c 64 64 3e 0a 09 49 6e 76 6f  >.    <dd>..Invo
7760: 6b 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65  kes the specifie
7770: 64 20 3c 65 6d 3e 63 61 6c 6c 62 61 63 6b 3c 2f  d <em>callback</
7780: 65 6d 3e 20 73 63 72 69 70 74 20 64 75 72 69 6e  em> script durin
7790: 67 20 68 61 6e 64 73 68 61 6b 65 20 69 6e 0a 09  g handshake in..
77a0: 6f 72 64 65 72 20 74 6f 20 76 61 6c 69 64 61 74  order to validat
77b0: 65 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 76  e the provided v
77c0: 61 6c 75 65 28 73 29 2e 20 53 65 65 20 62 65 6c  alue(s). See bel
77d0: 6f 77 20 66 6f 72 20 74 68 65 20 70 6f 73 73 69  ow for the possi
77e0: 62 6c 65 0a 09 61 72 67 75 6d 65 6e 74 73 20 70  ble..arguments p
77f0: 61 73 73 65 64 20 74 6f 20 74 68 65 20 63 61 6c  assed to the cal
7800: 6c 62 61 63 6b 20 73 63 72 69 70 74 2e 20 49 66  lback script. If
7810: 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2c 20   not specified, 
7820: 4f 70 65 6e 53 53 4c 0a 09 77 69 6c 6c 20 61 63  OpenSSL..will ac
7830: 63 65 70 74 20 76 61 6c 69 64 20 63 65 72 74 69  cept valid certi
7840: 66 69 63 61 74 65 73 20 61 6e 64 20 65 78 74 65  ficates and exte
7850: 6e 73 69 6f 6e 73 2e 0a 09 54 6f 20 72 65 6a 65  nsions...To reje
7860: 63 74 20 74 68 65 20 76 61 6c 75 65 20 61 6e 64  ct the value and
7870: 20 61 62 6f 72 74 20 74 68 65 20 63 6f 6e 6e 65   abort the conne
7880: 63 74 69 6f 6e 2c 20 74 68 65 20 63 61 6c 6c 62  ction, the callb
7890: 61 63 6b 20 73 68 6f 75 6c 64 20 72 65 74 75 72  ack should retur
78a0: 6e 20 30 2e 0a 09 54 6f 20 61 63 63 65 70 74 20  n 0...To accept 
78b0: 74 68 65 20 76 61 6c 75 65 20 61 6e 64 20 63 6f  the value and co
78c0: 6e 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 6e 65  ntinue the conne
78d0: 63 74 69 6f 6e 2c 20 69 74 20 73 68 6f 75 6c 64  ction, it should
78e0: 20 72 65 74 75 72 6e 20 31 2e 0a 09 54 6f 20 72   return 1...To r
78f0: 65 6a 65 63 74 20 74 68 65 20 76 61 6c 75 65 2c  eject the value,
7900: 20 62 75 74 20 63 6f 6e 74 69 6e 75 65 20 74 68   but continue th
7910: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 74  e connection, it
7920: 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 32   should return 2
7930: 2e 0a 09 3c 62 72 3e 0a 09 3c 64 6c 3e 0a 09 20  ...<br>..<dl>.. 
7940: 20 20 20 3c 64 74 3e 0a 09 09 3c 73 74 72 6f 6e     <dt>...<stron
7950: 67 3e 61 6c 70 6e 3c 2f 73 74 72 6f 6e 67 3e 20  g>alpn</strong> 
7960: 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 70 72  <em>channelId pr
7970: 6f 74 6f 63 6f 6c 20 6d 61 74 63 68 3c 2f 65 6d  otocol match</em
7980: 3e 0a 09 09 3c 2f 64 74 3e 0a 09 20 20 20 20 3c  >...</dt>..    <
7990: 64 64 3e 0a 09 09 46 6f 72 20 73 65 72 76 65 72  dd>...For server
79a0: 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20  s, this form of 
79b0: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
79c0: 6b 65 64 20 77 68 65 6e 20 74 68 65 20 63 6c 69  ked when the cli
79d0: 65 6e 74 20 41 4c 50 4e 0a 09 09 65 78 74 65 6e  ent ALPN...exten
79e0: 73 69 6f 6e 20 69 73 20 72 65 63 65 69 76 65 64  sion is received
79f0: 2e 20 49 66 20 3c 65 6d 3e 6d 61 74 63 68 3c 2f  . If <em>match</
7a00: 65 6d 3e 20 69 73 20 74 72 75 65 2c 20 3c 65 6d  em> is true, <em
7a10: 3e 70 72 6f 74 6f 63 6f 6c 3c 2f 65 6d 3e 0a 09  >protocol</em>..
7a20: 09 69 73 20 74 68 65 20 66 69 72 73 74 20 3c 62  .is the first <b
7a30: 3e 2d 61 6c 70 6e 3c 2f 62 3e 20 6f 70 74 69 6f  >-alpn</b> optio
7a40: 6e 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 74  n specified prot
7a50: 6f 63 6f 6c 20 63 6f 6d 6d 6f 6e 20 74 6f 20 62  ocol common to b
7a60: 6f 74 68 0a 09 09 74 68 65 20 63 6c 69 65 6e 74  oth...the client
7a70: 20 61 6e 64 20 73 65 72 76 65 72 2e 20 49 66 20   and server. If 
7a80: 6e 6f 74 2c 20 74 68 65 20 66 69 72 73 74 20 63  not, the first c
7a90: 6c 69 65 6e 74 20 73 70 65 63 69 66 69 65 64 20  lient specified 
7aa0: 70 72 6f 74 6f 63 6f 6c 20 69 73 0a 09 09 75 73  protocol is...us
7ab0: 65 64 2e 20 49 74 20 69 73 20 63 61 6c 6c 65 64  ed. It is called
7ac0: 20 61 66 74 65 72 20 74 68 65 20 68 65 6c 6c 6f   after the hello
7ad0: 20 61 6e 64 20 41 4c 50 4e 20 63 61 6c 6c 62 61   and ALPN callba
7ae0: 63 6b 73 2e 0a 09 09 54 68 69 73 20 63 61 6c 6c  cks....This call
7af0: 62 61 63 6b 20 69 73 20 6e 65 77 20 66 6f 72 20  back is new for 
7b00: 54 4c 53 20 31 2e 38 2e 0a 09 20 20 20 20 3c 2f  TLS 1.8...    </
7b10: 64 64 3e 0a 09 20 20 20 20 3c 62 72 3e 0a 09 20  dd>..    <br>.. 
7b20: 20 20 20 3c 64 74 3e 0a 09 09 3c 73 74 72 6f 6e     <dt>...<stron
7b30: 67 3e 68 65 6c 6c 6f 3c 2f 73 74 72 6f 6e 67 3e  g>hello</strong>
7b40: 20 3c 65 6d 3e 63 68 61 6e 6e 65 6c 49 64 20 73   <em>channelId s
7b50: 65 72 76 65 72 6e 61 6d 65 3c 2f 65 6d 3e 0a 09  ervername</em>..
7b60: 20 20 20 20 3c 2f 64 74 3e 0a 09 20 20 20 20 3c      </dt>..    <
7b70: 64 64 3e 0a 09 09 46 6f 72 20 73 65 72 76 65 72  dd>...For server
7b80: 73 2c 20 74 68 69 73 20 66 6f 72 6d 20 6f 66 20  s, this form of 
7b90: 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
7ba0: 6b 65 64 20 64 75 72 69 6e 67 20 63 6c 69 65 6e  ked during clien
7bb0: 74 20 68 65 6c 6c 6f 0a 09 09 6d 65 73 73 61 67  t hello...messag
7bc0: 65 20 70 72 6f 63 65 73 73 69 6e 67 2e 20 54 68  e processing. Th
7bd0: 65 20 70 75 72 70 6f 73 65 20 69 73 20 73 6f 20  e purpose is so 
7be0: 74 68 65 20 73 65 72 76 65 72 20 63 61 6e 20 73  the server can s
7bf0: 65 6c 65 63 74 20 74 68 65 0a 09 09 61 70 70 72  elect the...appr
7c00: 6f 70 72 69 61 74 65 20 63 65 72 74 69 66 69 63  opriate certific
7c10: 61 74 65 20 74 6f 20 70 72 65 73 65 6e 74 20 74  ate to present t
7c20: 6f 20 74 68 65 20 63 6c 69 65 6e 74 2c 20 61 6e  o the client, an
7c30: 64 20 74 6f 20 6d 61 6b 65 20 6f 74 68 65 72 0a  d to make other.
7c40: 09 09 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  ..configuration 
7c50: 61 64 6a 75 73 74 6d 65 6e 74 73 20 72 65 6c 65  adjustments rele
7c60: 76 61 6e 74 20 74 6f 20 74 68 61 74 20 73 65 72  vant to that ser
7c70: 76 65 72 20 6e 61 6d 65 20 61 6e 64 20 69 74 73  ver name and its
7c80: 0a 09 09 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ...configuration
7c90: 2e 20 49 74 20 69 73 20 63 61 6c 6c 65 64 20 62  . It is called b
7ca0: 65 66 6f 72 65 20 74 68 65 20 53 4e 49 20 61 6e  efore the SNI an
7cb0: 64 20 41 4c 50 4e 20 63 61 6c 6c 62 61 63 6b 73  d ALPN callbacks
7cc0: 2e 0a 09 09 54 68 69 73 20 63 61 6c 6c 62 61 63  ....This callbac
7cd0: 6b 20 69 73 20 6e 65 77 20 66 6f 72 20 54 4c 53  k is new for TLS
7ce0: 20 31 2e 38 2e 0a 09 20 20 20 20 3c 2f 64 64 3e   1.8...    </dd>
7cf0: 0a 09 20 20 20 20 3c 62 72 3e 0a 09 20 20 20 20  ..    <br>..    
7d00: 3c 64 74 3e 0a 09 09 3c 73 74 72 6f 6e 67 3e 73  <dt>...<strong>s
7d10: 6e 69 3c 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e  ni</strong> <em>
7d20: 63 68 61 6e 6e 65 6c 49 64 20 73 65 72 76 65 72  channelId server
7d30: 6e 61 6d 65 3c 2f 65 6d 3e 0a 09 20 20 20 20 3c  name</em>..    <
7d40: 2f 64 74 3e 0a 09 20 20 20 20 3c 64 64 3e 0a 09  /dt>..    <dd>..
7d50: 09 46 6f 72 20 73 65 72 76 65 72 73 2c 20 74 68  .For servers, th
7d60: 69 73 20 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62  is form of callb
7d70: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
7d80: 68 65 6e 20 74 68 65 20 53 65 72 76 65 72 20 4e  hen the Server N
7d90: 61 6d 65 0a 09 09 49 6e 64 69 63 61 74 69 6f 6e  ame...Indication
7da0: 20 28 53 4e 49 29 20 65 78 74 65 6e 73 69 6f 6e   (SNI) extension
7db0: 20 69 73 20 72 65 63 65 69 76 65 64 2e 20 54 68   is received. Th
7dc0: 65 20 3c 65 6d 3e 73 65 72 76 65 72 6e 61 6d 65  e <em>servername
7dd0: 3c 2f 65 6d 3e 0a 09 09 61 72 67 75 6d 65 6e 74  </em>...argument
7de0: 20 69 73 20 74 68 65 20 63 6c 69 65 6e 74 20 70   is the client p
7df0: 72 6f 76 69 64 65 64 20 73 65 72 76 65 72 20 6e  rovided server n
7e00: 61 6d 65 20 69 6e 20 74 68 65 20 3c 62 3e 2d 73  ame in the <b>-s
7e10: 65 72 76 65 72 6e 61 6d 65 3c 2f 62 3e 0a 09 09  ervername</b>...
7e20: 6f 70 74 69 6f 6e 2e 20 54 68 65 20 70 75 72 70  option. The purp
7e30: 6f 73 65 20 69 73 20 73 6f 20 77 68 65 6e 20 61  ose is so when a
7e40: 20 73 65 72 76 65 72 20 73 75 70 70 6f 72 74 73   server supports
7e50: 20 6d 75 6c 74 69 70 6c 65 20 6e 61 6d 65 73 2c   multiple names,
7e60: 20 74 68 65 0a 09 09 72 69 67 68 74 20 63 65 72   the...right cer
7e70: 74 69 66 69 63 61 74 65 20 63 61 6e 20 62 65 20  tificate can be 
7e80: 75 73 65 64 2e 20 49 74 20 69 73 20 63 61 6c 6c  used. It is call
7e90: 65 64 20 61 66 74 65 72 20 74 68 65 20 68 65 6c  ed after the hel
7ea0: 6c 6f 20 63 61 6c 6c 62 61 63 6b 0a 09 09 62 75  lo callback...bu
7eb0: 74 20 62 65 66 6f 72 65 20 74 68 65 20 41 4c 50  t before the ALP
7ec0: 4e 20 63 61 6c 6c 62 61 63 6b 2e 0a 09 09 54 68  N callback....Th
7ed0: 69 73 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e  is callback is n
7ee0: 65 77 20 66 6f 72 20 54 4c 53 20 31 2e 38 2e 0a  ew for TLS 1.8..
7ef0: 09 20 20 20 20 3c 2f 64 64 3e 0a 09 20 20 20 20  .    </dd>..    
7f00: 3c 62 72 3e 0a 09 20 20 20 20 3c 64 74 3e 0a 09  <br>..    <dt>..
7f10: 09 3c 73 74 72 6f 6e 67 3e 76 65 72 69 66 79 3c  .<strong>verify<
7f20: 2f 73 74 72 6f 6e 67 3e 20 3c 65 6d 3e 63 68 61  /strong> <em>cha
7f30: 6e 6e 65 6c 49 64 20 64 65 70 74 68 20 63 65 72  nnelId depth cer
7f40: 74 20 73 74 61 74 75 73 20 65 72 72 6f 72 3c 2f  t status error</
7f50: 65 6d 3e 0a 09 20 20 20 20 3c 2f 64 74 3e 0a 09  em>..    </dt>..
7f60: 20 20 20 20 3c 64 64 3e 0a 09 09 54 68 69 73 20      <dd>...This 
7f70: 66 6f 72 6d 20 6f 66 20 63 61 6c 6c 62 61 63 6b  form of callback
7f80: 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 4f   is invoked by O
7f90: 70 65 6e 53 53 4c 20 77 68 65 6e 20 61 20 6e 65  penSSL when a ne
7fa0: 77 20 63 65 72 74 69 66 69 63 61 74 65 0a 09 09  w certificate...
7fb0: 69 73 20 72 65 63 65 69 76 65 64 20 66 72 6f 6d  is received from
7fc0: 20 74 68 65 20 70 65 65 72 2e 20 49 74 20 61 6c   the peer. It al
7fd0: 6c 6f 77 73 20 74 68 65 20 63 6c 69 65 6e 74 20  lows the client 
7fe0: 74 6f 20 63 68 65 63 6b 20 74 68 65 0a 09 09 63  to check the...c
7ff0: 65 72 74 69 66 69 63 61 74 65 20 76 65 72 69 66  ertificate verif
8000: 69 63 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20  ication results 
8010: 61 6e 64 20 63 68 6f 6f 73 65 20 77 68 65 74 68  and choose wheth
8020: 65 72 20 74 6f 20 63 6f 6e 74 69 6e 75 65 0a 09  er to continue..
8030: 09 6f 72 20 6e 6f 74 2e 20 49 74 20 69 73 20 63  .or not. It is c
8040: 61 6c 6c 65 64 20 66 6f 72 20 65 61 63 68 20 63  alled for each c
8050: 65 72 74 69 66 69 63 61 74 65 20 69 6e 20 74 68  ertificate in th
8060: 65 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68  e certificate ch
8070: 61 69 6e 2e 0a 09 09 3c 75 6c 3e 0a 09 09 3c 6c  ain....<ul>...<l
8080: 69 3e 54 68 65 20 3c 65 6d 3e 64 65 70 74 68 3c  i>The <em>depth<
8090: 2f 65 6d 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  /em> argument is
80a0: 20 74 68 65 20 69 6e 74 65 67 65 72 20 64 65 70   the integer dep
80b0: 74 68 20 6f 66 20 74 68 65 0a 09 09 63 65 72 74  th of the...cert
80c0: 69 66 69 63 61 74 65 20 69 6e 20 74 68 65 20 63  ificate in the c
80d0: 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e  ertificate chain
80e0: 2c 20 77 68 65 72 65 20 30 20 69 73 20 74 68 65  , where 0 is the
80f0: 20 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74   peer certificat
8100: 65 0a 09 09 61 6e 64 20 68 69 67 68 65 72 20 76  e...and higher v
8110: 61 6c 75 65 73 20 67 6f 69 6e 67 20 75 70 20 74  alues going up t
8120: 6f 20 74 68 65 20 43 65 72 74 69 66 69 63 61 74  o the Certificat
8130: 65 20 41 75 74 68 6f 72 69 74 79 20 28 43 41 29  e Authority (CA)
8140: 2e 3c 2f 6c 69 3e 0a 09 09 3c 6c 69 3e 54 68 65  .</li>...<li>The
8150: 20 3c 65 6d 3e 63 65 72 74 3c 2f 65 6d 3e 20 61   <em>cert</em> a
8160: 72 67 75 6d 65 6e 74 20 69 73 20 61 20 6c 69 73  rgument is a lis
8170: 74 20 6f 66 20 6b 65 79 2d 76 61 6c 75 65 20 70  t of key-value p
8180: 61 69 72 73 20 73 69 6d 69 6c 61 72 0a 09 09 74  airs similar...t
8190: 6f 20 74 68 6f 73 65 20 72 65 74 75 72 6e 65 64  o those returned
81a0: 20 62 79 0a 09 09 3c 61 20 68 72 65 66 3d 22 23   by...<a href="#
81b0: 74 6c 73 3a 3a 73 74 61 74 75 73 22 3e 3c 73 74  tls::status"><st
81c0: 72 6f 6e 67 3e 74 6c 73 3a 3a 73 74 61 74 75 73  rong>tls::status
81d0: 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 2e 3c 2f  </strong></a>.</
81e0: 6c 69 3e 0a 09 09 3c 6c 69 3e 54 68 65 20 3c 65  li>...<li>The <e
81f0: 6d 3e 73 74 61 74 75 73 3c 2f 65 6d 3e 20 61 72  m>status</em> ar
8200: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 62 6f  gument is the bo
8210: 6f 6c 65 61 6e 20 76 61 6c 69 64 69 74 79 20 6f  olean validity o
8220: 66 20 74 68 65 0a 09 09 63 75 72 72 65 6e 74 20  f the...current 
8230: 63 65 72 74 69 66 69 63 61 74 65 20 77 68 65 72  certificate wher
8240: 65 20 30 20 69 73 20 69 6e 76 61 6c 69 64 20 61  e 0 is invalid a
8250: 6e 64 20 31 20 69 73 20 76 61 6c 69 64 2e 3c 2f  nd 1 is valid.</
8260: 6c 69 3e 0a 09 09 3c 6c 69 3e 54 68 65 20 3c 65  li>...<li>The <e
8270: 6d 3e 65 72 72 6f 72 3c 2f 65 6d 3e 20 61 72 67  m>error</em> arg
8280: 75 6d 65 6e 74 20 69 73 20 74 68 65 20 65 72 72  ument is the err
8290: 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61  or message, if a
82a0: 6e 79 2c 20 67 65 6e 65 72 61 74 65 64 0a 09 09  ny, generated...
82b0: 62 79 20 3c 63 6f 64 65 3e 58 35 30 39 5f 53 54  by <code>X509_ST
82c0: 4f 52 45 5f 43 54 58 5f 67 65 74 5f 65 72 72 6f  ORE_CTX_get_erro
82d0: 72 28 29 3c 2f 63 6f 64 65 3e 2e 3c 2f 6c 69 3e  r()</code>.</li>
82e0: 0a 09 09 3c 2f 75 6c 3e 0a 09 20 20 20 20 3c 2f  ...</ul>..    </
82f0: 64 64 3e 0a 09 20 20 20 20 3c 62 72 3e 0a 09 3c  dd>..    <br>..<
8300: 2f 64 6c 3e 0a 20 20 20 20 3c 2f 64 64 3e 0a 3c  /dl>.    </dd>.<
8310: 2f 64 6c 3e 0a 0a 3c 70 3e 0a 52 65 66 65 72 65  /dl>..<p>.Refere
8320: 6e 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  nce implementati
8330: 6f 6e 73 20 6f 66 20 74 68 65 73 65 20 63 61 6c  ons of these cal
8340: 6c 62 61 63 6b 73 20 61 72 65 20 70 72 6f 76 69  lbacks are provi
8350: 64 65 64 20 69 6e 20 74 68 65 0a 64 69 73 74 72  ded in the.distr
8360: 69 62 75 74 69 6f 6e 20 61 73 20 3c 73 74 72 6f  ibution as <stro
8370: 6e 67 3e 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b  ng>tls::callback
8380: 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f  </strong>, <stro
8390: 6e 67 3e 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64  ng>tls::password
83a0: 3c 2f 73 74 72 6f 6e 67 3e 2c 0a 61 6e 64 20 3c  </strong>,.and <
83b0: 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 76 61 6c 69  strong>tls::vali
83c0: 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74  date_command</st
83d0: 72 6f 6e 67 3e 20 72 65 73 70 65 63 74 69 76 65  rong> respective
83e0: 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68  ly. Note that th
83f0: 65 73 65 20 61 72 65 0a 3c 65 6d 3e 73 61 6d 70  ese are.<em>samp
8400: 6c 65 3c 2f 65 6d 3e 20 69 6d 70 6c 65 6d 65 6e  le</em> implemen
8410: 74 61 74 69 6f 6e 73 20 6f 6e 6c 79 2e 20 49 6e  tations only. In
8420: 20 61 20 6d 6f 72 65 20 72 65 61 6c 69 73 74 69   a more realisti
8430: 63 20 64 65 70 6c 6f 79 6d 65 6e 74 0a 79 6f 75  c deployment.you
8440: 20 77 6f 75 6c 64 20 73 70 65 63 69 66 79 20 79   would specify y
8450: 6f 75 72 20 6f 77 6e 20 63 61 6c 6c 62 61 63 6b  our own callback
8460: 20 73 63 72 69 70 74 73 20 6f 6e 20 65 61 63 68   scripts on each
8470: 20 54 4c 53 20 63 68 61 6e 6e 65 6c 20 75 73 69   TLS channel usi
8480: 6e 67 20 74 68 65 0a 3c 73 74 72 6f 6e 67 3e 2d  ng the.<strong>-
8490: 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e  command</strong>
84a0: 2c 20 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77  , <strong>-passw
84b0: 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2c 20 61 6e  ord</strong>, an
84c0: 64 0a 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69 64  d.<strong>-valid
84d0: 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72  ate_command</str
84e0: 6f 6e 67 3e 20 6f 70 74 69 6f 6e 73 2e 0a 3c 2f  ong> options..</
84f0: 70 3e 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61 75  p>.<p>.The defau
8500: 6c 74 20 62 65 68 61 76 69 6f 72 20 77 68 65 6e  lt behavior when
8510: 20 74 68 65 20 3c 73 74 72 6f 6e 67 3e 2d 63 6f   the <strong>-co
8520: 6d 6d 61 6e 64 3c 2f 73 74 72 6f 6e 67 3e 20 61  mmand</strong> a
8530: 6e 64 20 3c 73 74 72 6f 6e 67 3e 2d 76 61 6c 69  nd <strong>-vali
8540: 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74  date_command</st
8550: 72 6f 6e 67 3e 0a 6f 70 74 69 6f 6e 73 20 61 72  rong>.options ar
8560: 65 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20  e not specified 
8570: 69 73 20 66 6f 72 20 54 4c 53 20 74 6f 20 70 72  is for TLS to pr
8580: 6f 63 65 73 73 20 74 68 65 20 61 73 73 6f 63 69  ocess the associ
8590: 61 74 65 64 20 6c 69 62 72 61 72 79 20 63 61 6c  ated library cal
85a0: 6c 62 61 63 6b 73 0a 69 6e 74 65 72 6e 61 6c 6c  lbacks.internall
85b0: 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 62  y. The default b
85c0: 65 68 61 76 69 6f 72 20 77 68 65 6e 20 74 68 65  ehavior when the
85d0: 20 3c 73 74 72 6f 6e 67 3e 2d 70 61 73 73 77 6f   <strong>-passwo
85e0: 72 64 3c 2f 73 74 72 6f 6e 67 3e 20 6f 70 74 69  rd</strong> opti
85f0: 6f 6e 20 69 73 20 6e 6f 74 0a 73 70 65 63 69 66  on is not.specif
8600: 69 65 64 20 69 73 20 66 6f 72 20 54 4c 53 20 74  ied is for TLS t
8610: 6f 20 70 72 6f 63 65 73 73 20 74 68 65 20 61 73  o process the as
8620: 73 6f 63 69 61 74 65 64 20 6c 69 62 72 61 72 79  sociated library
8630: 20 63 61 6c 6c 62 61 63 6b 73 20 62 79 20 61 74   callbacks by at
8640: 74 65 6d 70 74 69 6e 67 0a 74 6f 20 63 61 6c 6c  tempting.to call
8650: 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 70 61   <strong>tls::pa
8660: 73 73 77 6f 72 64 3c 2f 73 74 72 6f 6e 67 3e 2e  ssword</strong>.
8670: 0a 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20  .The difference 
8680: 62 65 74 77 65 65 6e 20 74 68 65 73 65 20 74 77  between these tw
8690: 6f 20 62 65 68 61 76 69 6f 72 73 20 69 73 20 61  o behaviors is a
86a0: 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20   consequence of 
86b0: 6d 61 69 6e 74 61 69 6e 69 6e 67 0a 63 6f 6d 70  maintaining.comp
86c0: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 65  atibility with e
86d0: 61 72 6c 69 65 72 20 69 6d 70 6c 65 6d 65 6e 74  arlier implement
86e0: 61 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 3c 70 3e  ations..</p>.<p>
86f0: 0a 3c 65 6d 3e 0a 54 68 65 20 75 73 65 20 6f 66  .<em>.The use of
8700: 20 74 68 65 20 72 65 66 65 72 65 6e 63 65 20 63   the reference c
8710: 61 6c 6c 62 61 63 6b 73 20 3c 73 74 72 6f 6e 67  allbacks <strong
8720: 3e 74 6c 73 3a 3a 63 61 6c 6c 62 61 63 6b 3c 2f  >tls::callback</
8730: 73 74 72 6f 6e 67 3e 2c 0a 3c 73 74 72 6f 6e 67  strong>,.<strong
8740: 3e 74 6c 73 3a 3a 70 61 73 73 77 6f 72 64 3c 2f  >tls::password</
8750: 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c 73 74  strong>, and <st
8760: 72 6f 6e 67 3e 74 6c 73 3a 3a 76 61 6c 69 64 61  rong>tls::valida
8770: 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f 73 74 72 6f  te_command</stro
8780: 6e 67 3e 0a 69 73 20 6e 6f 74 20 72 65 63 6f 6d  ng>.is not recom
8790: 6d 65 6e 64 65 64 2e 20 54 68 65 79 20 6d 61 79  mended. They may
87a0: 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   be removed from
87b0: 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
87c0: 2e 0a 3c 2f 65 6d 3e 0a 3c 2f 70 3e 0a 3c 62 72  ..</em>.</p>.<br
87d0: 3e 0a 0a 3c 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20  >..<hr>..<h3><a 
87e0: 6e 61 6d 65 3d 22 44 45 42 55 47 22 3e 44 45 42  name="DEBUG">DEB
87f0: 55 47 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e  UG</a></h3>..<p>
8800: 46 6f 72 20 6d 6f 73 74 20 64 65 62 75 67 67 69  For most debuggi
8810: 6e 67 20 6e 65 65 64 73 2c 20 74 68 65 20 3c 62  ng needs, the <b
8820: 3e 2d 63 61 6c 6c 62 61 63 6b 3c 2f 62 3e 20 6f  >-callback</b> o
8830: 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65  ption can be use
8840: 64 20 74 6f 20 70 72 6f 76 69 64 65 0a 73 75 66  d to provide.suf
8850: 66 69 63 69 65 6e 74 20 69 6e 73 69 67 68 74 20  ficient insight 
8860: 61 6e 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  and information 
8870: 6f 6e 20 74 68 65 20 54 4c 53 20 68 61 6e 64 73  on the TLS hands
8880: 68 61 6b 65 20 61 6e 64 20 70 72 6f 67 72 65 73  hake and progres
8890: 73 2e 20 49 66 20 66 75 72 74 68 65 72 0a 74 72  s. If further.tr
88a0: 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20 69 6e  oubleshooting in
88b0: 73 69 67 68 74 20 69 73 20 6e 65 65 64 65 64 2c  sight is needed,
88c0: 20 74 68 65 20 63 6f 6d 70 69 6c 65 20 74 69 6d   the compile tim
88d0: 65 20 6f 70 74 69 6f 6e 20 3c 62 3e 2d 2d 65 6e  e option <b>--en
88e0: 61 62 6c 65 2d 64 65 62 75 67 3c 2f 62 3e 0a 63  able-debug</b>.c
88f0: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 67 65  an be used to ge
8900: 74 20 64 65 74 61 69 6c 65 64 20 65 78 65 63 75  t detailed execu
8910: 74 69 6f 6e 20 66 6c 6f 77 20 73 74 61 74 75 73  tion flow status
8920: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 4c 53 20 6b 65  .</p>..<p>TLS ke
8930: 79 20 6c 6f 67 67 69 6e 67 20 63 61 6e 20 62 65  y logging can be
8940: 20 65 6e 61 62 6c 65 64 20 62 79 20 73 65 74 74   enabled by sett
8950: 69 6e 67 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  ing the environm
8960: 65 6e 74 20 76 61 72 69 61 62 6c 65 0a 3c 62 3e  ent variable.<b>
8970: 53 53 4c 4b 45 59 4c 4f 47 46 49 4c 45 3c 2f 62  SSLKEYLOGFILE</b
8980: 3e 20 74 6f 20 74 68 65 20 6e 61 6d 65 20 6f 66  > to the name of
8990: 20 74 68 65 20 66 69 6c 65 20 74 6f 20 6c 6f 67   the file to log
89a0: 20 74 6f 2e 20 54 68 65 6e 20 77 68 65 6e 65 76   to. Then whenev
89b0: 65 72 20 54 4c 53 0a 6b 65 79 20 6d 61 74 65 72  er TLS.key mater
89c0: 69 61 6c 20 69 73 20 67 65 6e 65 72 61 74 65 64  ial is generated
89d0: 20 6f 72 20 72 65 63 65 69 76 65 64 20 69 74 20   or received it 
89e0: 77 69 6c 6c 20 62 65 20 6c 6f 67 67 65 64 20 74  will be logged t
89f0: 6f 20 74 68 65 20 66 69 6c 65 2e 20 54 68 69 73  o the file. This
8a00: 0a 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 6c  .is useful for l
8a10: 6f 67 67 69 6e 67 20 6b 65 79 20 64 61 74 61 20  ogging key data 
8a20: 66 6f 72 20 6e 65 74 77 6f 72 6b 20 6c 6f 67 67  for network logg
8a30: 69 6e 67 20 74 6f 6f 6c 73 20 74 6f 20 75 73 65  ing tools to use
8a40: 20 74 6f 0a 64 65 63 72 79 70 74 20 74 68 65 20   to.decrypt the 
8a50: 64 61 74 61 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  data.</p>..<p>Th
8a60: 65 20 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 64  e <strong>tls::d
8a70: 65 62 75 67 3c 2f 73 74 72 6f 6e 67 3e 20 76 61  ebug</strong> va
8a80: 72 69 61 62 6c 65 20 70 72 6f 76 69 64 65 73 20  riable provides 
8a90: 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a  some additional.
8aa0: 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 74 68 65  control over the
8ab0: 73 65 20 72 65 66 65 72 65 6e 63 65 20 63 61 6c  se reference cal
8ac0: 6c 62 61 63 6b 73 2e 20 49 74 73 20 76 61 6c 75  lbacks. Its valu
8ad0: 65 20 69 73 20 7a 65 72 6f 20 62 79 20 64 65 66  e is zero by def
8ae0: 61 75 6c 74 2e 0a 48 69 67 68 65 72 20 76 61 6c  ault..Higher val
8af0: 75 65 73 20 70 72 6f 64 75 63 65 20 6d 6f 72 65  ues produce more
8b00: 20 64 69 61 67 6e 6f 73 74 69 63 20 6f 75 74 70   diagnostic outp
8b10: 75 74 2c 20 61 6e 64 20 77 69 6c 6c 20 61 6c 73  ut, and will als
8b20: 6f 20 66 6f 72 63 65 20 74 68 65 0a 76 65 72 69  o force the.veri
8b30: 66 79 20 6d 65 74 68 6f 64 20 69 6e 20 3c 73 74  fy method in <st
8b40: 72 6f 6e 67 3e 74 6c 73 3a 3a 63 61 6c 6c 62 61  rong>tls::callba
8b50: 63 6b 3c 2f 73 74 72 6f 6e 67 3e 20 74 6f 20 61  ck</strong> to a
8b60: 63 63 65 70 74 20 74 68 65 0a 63 65 72 74 69 66  ccept the.certif
8b70: 69 63 61 74 65 2c 20 65 76 65 6e 20 77 68 65 6e  icate, even when
8b80: 20 69 74 20 69 73 20 69 6e 76 61 6c 69 64 20 69   it is invalid i
8b90: 66 20 74 68 65 20 3c 62 3e 74 6c 73 3a 3a 76 61  f the <b>tls::va
8ba0: 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e 64 3c 2f  lidate_command</
8bb0: 62 3e 0a 63 61 6c 6c 62 61 63 6b 20 69 73 20 75  b>.callback is u
8bc0: 73 65 64 20 66 6f 72 20 74 68 65 20 3c 62 3e 2d  sed for the <b>-
8bd0: 76 61 6c 69 64 61 74 65 63 6f 6d 6d 61 6e 64 3c  validatecommand<
8be0: 2f 62 3e 20 6f 70 74 69 6f 6e 2e 3c 2f 70 3e 0a  /b> option.</p>.
8bf0: 0a 3c 70 3e 3c 65 6d 3e 54 68 65 20 75 73 65 20  .<p><em>The use 
8c00: 6f 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20  of the variable 
8c10: 3c 73 74 72 6f 6e 67 3e 74 6c 73 3a 3a 64 65 62  <strong>tls::deb
8c20: 75 67 3c 2f 73 74 72 6f 6e 67 3e 20 69 73 20 6e  ug</strong> is n
8c30: 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a  ot recommended..
8c40: 49 74 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65  It may be remove
8c50: 64 20 66 72 6f 6d 20 66 75 74 75 72 65 20 72 65  d from future re
8c60: 6c 65 61 73 65 73 2e 3c 2f 65 6d 3e 3c 2f 70 3e  leases.</em></p>
8c70: 0a 0a 3c 68 34 3e 3c 61 20 6e 61 6d 65 3d 22 44  ..<h4><a name="D
8c80: 45 42 55 47 5f 45 58 41 4d 50 4c 45 53 22 3e 44  EBUG_EXAMPLES">D
8c90: 65 62 75 67 20 45 78 61 6d 70 6c 65 73 3c 2f 61  ebug Examples</a
8ca0: 3e 3c 2f 68 34 3e 0a 0a 3c 70 3e 54 68 65 73 65  ></h4>..<p>These
8cb0: 20 65 78 61 6d 70 6c 65 73 20 75 73 65 20 74 68   examples use th
8cc0: 65 20 64 65 66 61 75 6c 74 20 55 6e 69 78 20 70  e default Unix p
8cd0: 6c 61 74 66 6f 72 6d 20 53 53 4c 20 63 65 72 74  latform SSL cert
8ce0: 69 66 69 63 61 74 65 73 2e 20 46 6f 72 20 73 74  ificates. For st
8cf0: 61 6e 64 61 72 64 0a 69 6e 73 74 61 6c 6c 61 74  andard.installat
8d00: 69 6f 6e 73 2c 20 2d 63 61 64 69 72 20 61 6e 64  ions, -cadir and
8d10: 20 2d 63 61 66 69 6c 65 20 73 68 6f 75 6c 64 20   -cafile should 
8d20: 6e 6f 74 20 62 65 20 6e 65 65 64 65 64 2e 20 49  not be needed. I
8d30: 66 20 79 6f 75 72 20 63 65 72 74 69 66 69 63 61  f your certifica
8d40: 74 65 73 0a 61 72 65 20 69 6e 20 6e 6f 6e 2d 73  tes.are in non-s
8d50: 74 61 6e 64 61 72 64 20 6c 6f 63 61 74 69 6f 6e  tandard location
8d60: 73 2c 20 75 70 64 61 74 65 20 2d 63 61 64 69 72  s, update -cadir
8d70: 20 6f 72 20 75 73 65 20 2d 63 61 66 69 6c 65 20   or use -cafile 
8d80: 61 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 3c  as needed.</p>.<
8d90: 62 72 3e 0a 0a 3c 70 3e 45 78 61 6d 70 6c 65 20  br>..<p>Example 
8da0: 23 31 3a 20 55 73 65 20 48 54 54 50 20 70 61 63  #1: Use HTTP pac
8db0: 6b 61 67 65 3c 2f 70 3e 0a 3c 70 72 65 3e 3c 63  kage</p>.<pre><c
8dc0: 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20 72 65 71  ode>.package req
8dd0: 75 69 72 65 20 68 74 74 70 0a 70 61 63 6b 61 67  uire http.packag
8de0: 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 73 65  e require tls.se
8df0: 74 20 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 77  t url "https://w
8e00: 77 77 2e 74 63 6c 2e 74 6b 2f 22 0a 0a 68 74 74  ww.tcl.tk/"..htt
8e10: 70 3a 3a 72 65 67 69 73 74 65 72 20 68 74 74 70  p::register http
8e20: 73 20 34 34 33 20 5b 6c 69 73 74 20 3a 3a 74 6c  s 443 [list ::tl
8e30: 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73  s::socket -autos
8e40: 65 72 76 65 72 6e 61 6d 65 20 74 72 75 65 20 2d  ervername true -
8e50: 72 65 71 75 69 72 65 20 74 72 75 65 20 2d 63 61  require true -ca
8e60: 64 69 72 20 2f 65 74 63 2f 73 73 6c 2f 63 65 72  dir /etc/ssl/cer
8e70: 74 73 20 5c 0a 20 20 20 20 2d 63 6f 6d 6d 61 6e  ts \.    -comman
8e80: 64 20 3a 3a 74 6c 73 3a 3a 63 61 6c 6c 62 61 63  d ::tls::callbac
8e90: 6b 20 2d 70 61 73 73 77 6f 72 64 20 3a 3a 74 6c  k -password ::tl
8ea0: 73 3a 3a 70 61 73 73 77 6f 72 64 20 2d 76 61 6c  s::password -val
8eb0: 69 64 61 74 65 63 6f 6d 6d 61 6e 64 20 3a 3a 74  idatecommand ::t
8ec0: 6c 73 3a 3a 76 61 6c 69 64 61 74 65 5f 63 6f 6d  ls::validate_com
8ed0: 6d 61 6e 64 5d 0a 0a 23 20 43 68 65 63 6b 20 66  mand]..# Check f
8ee0: 6f 72 20 65 72 72 6f 72 0a 73 65 74 20 74 6f 6b  or error.set tok
8ef0: 65 6e 20 5b 68 74 74 70 3a 3a 67 65 74 75 72 6c  en [http::geturl
8f00: 20 24 75 72 6c 5d 0a 69 66 20 7b 5b 68 74 74 70   $url].if {[http
8f10: 3a 3a 73 74 61 74 75 73 20 24 74 6f 6b 65 6e 5d  ::status $token]
8f20: 20 6e 65 20 22 6f 6b 22 7d 20 7b 0a 20 20 20 20   ne "ok"} {.    
8f30: 70 75 74 73 20 5b 66 6f 72 6d 61 74 20 22 45 72  puts [format "Er
8f40: 72 6f 72 20 25 73 22 20 5b 68 74 74 70 3a 3a 73  ror %s" [http::s
8f50: 74 61 74 75 73 20 24 74 6f 6b 65 6e 5d 5d 0a 7d  tatus $token]].}
8f60: 0a 0a 23 20 47 65 74 20 77 65 62 20 70 61 67 65  ..# Get web page
8f70: 0a 73 65 74 20 64 61 74 61 20 5b 68 74 74 70 3a  .set data [http:
8f80: 3a 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 70 75  :data $token].pu
8f90: 74 73 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  ts [string lengt
8fa0: 68 20 24 64 61 74 61 5d 0a 0a 23 20 43 6c 65 61  h $data]..# Clea
8fb0: 6e 75 70 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65 61  nup.::http::clea
8fc0: 6e 75 70 20 24 74 6f 6b 65 6e 0a 3c 2f 63 6f 64  nup $token.</cod
8fd0: 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 70 3e 45 78 61  e></pre>..<p>Exa
8fe0: 6d 70 6c 65 20 23 32 3a 20 55 73 65 20 72 61 77  mple #2: Use raw
8ff0: 20 73 6f 63 6b 65 74 3c 2f 70 3e 0a 3c 70 72 65   socket</p>.<pre
9000: 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20  ><code>.package 
9010: 72 65 71 75 69 72 65 20 74 6c 73 0a 0a 73 65 74  require tls..set
9020: 20 75 72 6c 20 22 77 77 77 2e 74 63 6c 2d 6c 61   url "www.tcl-la
9030: 6e 67 2e 6f 72 67 22 0a 73 65 74 20 70 6f 72 74  ng.org".set port
9040: 20 34 34 33 0a 0a 73 65 74 20 63 68 20 5b 74 6c   443..set ch [tl
9050: 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 75 74 6f 73  s::socket -autos
9060: 65 72 76 65 72 6e 61 6d 65 20 31 20 2d 73 65 72  ervername 1 -ser
9070: 76 65 72 6e 61 6d 65 20 24 75 72 6c 20 2d 72 65  vername $url -re
9080: 71 75 65 73 74 20 31 20 2d 72 65 71 75 69 72 65  quest 1 -require
9090: 20 31 20 5c 0a 20 20 20 20 2d 61 6c 70 6e 20 7b   1 \.    -alpn {
90a0: 68 74 74 70 2f 31 2e 31 7d 20 2d 63 61 64 69 72  http/1.1} -cadir
90b0: 20 2f 65 74 63 2f 73 73 6c 2f 63 65 72 74 73 20   /etc/ssl/certs 
90c0: 2d 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a 3a  -command ::tls::
90d0: 63 61 6c 6c 62 61 63 6b 20 5c 0a 20 20 20 20 2d  callback \.    -
90e0: 70 61 73 73 77 6f 72 64 20 3a 3a 74 6c 73 3a 3a  password ::tls::
90f0: 70 61 73 73 77 6f 72 64 20 2d 76 61 6c 69 64 61  password -valida
9100: 74 65 63 6f 6d 6d 61 6e 64 20 3a 3a 74 6c 73 3a  tecommand ::tls:
9110: 3a 76 61 6c 69 64 61 74 65 5f 63 6f 6d 6d 61 6e  :validate_comman
9120: 64 20 24 75 72 6c 20 24 70 6f 72 74 5d 0a 63 68  d $url $port].ch
9130: 61 6e 20 63 6f 6e 66 69 67 75 72 65 20 24 63 68  an configure $ch
9140: 20 2d 62 75 66 66 65 72 73 69 7a 65 20 36 35 35   -buffersize 655
9150: 33 36 0a 74 6c 73 3a 3a 68 61 6e 64 73 68 61 6b  36.tls::handshak
9160: 65 20 24 63 68 0a 0a 70 75 74 73 20 24 63 68 20  e $ch..puts $ch 
9170: 22 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 22  "GET / HTTP/1.1"
9180: 0a 66 6c 75 73 68 20 24 63 68 0a 61 66 74 65 72  .flush $ch.after
9190: 20 35 30 30 0a 73 65 74 20 64 61 74 61 20 5b 72   500.set data [r
91a0: 65 61 64 20 24 63 68 5d 0a 0a 61 72 72 61 79 20  ead $ch]..array 
91b0: 73 65 74 20 73 74 61 74 75 73 20 5b 74 6c 73 3a  set status [tls:
91c0: 3a 73 74 61 74 75 73 20 24 63 68 5d 0a 61 72 72  :status $ch].arr
91d0: 61 79 20 73 65 74 20 63 6f 6e 6e 20 5b 74 6c 73  ay set conn [tls
91e0: 3a 3a 63 6f 6e 6e 65 63 74 69 6f 6e 20 24 63 68  ::connection $ch
91f0: 5d 0a 61 72 72 61 79 20 73 65 74 20 63 68 61 6e  ].array set chan
9200: 20 5b 63 68 61 6e 20 63 6f 6e 66 69 67 75 72 65   [chan configure
9210: 20 24 63 68 5d 0a 63 6c 6f 73 65 20 24 63 68 0a   $ch].close $ch.
9220: 70 61 72 72 61 79 20 73 74 61 74 75 73 0a 70 61  parray status.pa
9230: 72 72 61 79 20 63 6f 6e 6e 0a 70 61 72 72 61 79  rray conn.parray
9240: 20 63 68 61 6e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70   chan.</code></p
9250: 72 65 3e 0a 3c 62 72 3e 0a 0a 3c 68 72 3e 0a 0a  re>.<br>..<hr>..
9260: 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22 48 54 54  <h3><a name="HTT
9270: 50 53 20 45 58 41 4d 50 4c 45 22 3e 48 54 54 50  PS EXAMPLE">HTTP
9280: 53 20 45 58 41 4d 50 4c 45 3c 2f 61 3e 3c 2f 68  S EXAMPLE</a></h
9290: 33 3e 0a 0a 3c 70 3e 54 68 65 73 65 20 65 78 61  3>..<p>These exa
92a0: 6d 70 6c 65 73 20 75 73 65 20 74 68 65 20 64 65  mples use the de
92b0: 66 61 75 6c 74 20 55 6e 69 78 20 70 6c 61 74 66  fault Unix platf
92c0: 6f 72 6d 20 53 53 4c 20 63 65 72 74 69 66 69 63  orm SSL certific
92d0: 61 74 65 73 2e 20 46 6f 72 20 73 74 61 6e 64 61  ates. For standa
92e0: 72 64 0a 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 73  rd.installations
92f0: 2c 20 2d 63 61 64 69 72 20 61 6e 64 20 2d 63 61  , -cadir and -ca
9300: 66 69 6c 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20  file should not 
9310: 62 65 20 6e 65 65 64 65 64 2e 20 49 66 20 79 6f  be needed. If yo
9320: 75 72 20 63 65 72 74 69 66 69 63 61 74 65 73 0a  ur certificates.
9330: 61 72 65 20 69 6e 20 6e 6f 6e 2d 73 74 61 6e 64  are in non-stand
9340: 61 72 64 20 6c 6f 63 61 74 69 6f 6e 73 2c 20 75  ard locations, u
9350: 70 64 61 74 65 20 2d 63 61 64 69 72 20 6f 72 20  pdate -cadir or 
9360: 75 73 65 20 2d 63 61 66 69 6c 65 20 61 73 20 6e  use -cafile as n
9370: 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45  eeded.</p>..<p>E
9380: 78 61 6d 70 6c 65 20 23 31 3a 20 47 65 74 20 77  xample #1: Get w
9390: 65 62 20 70 61 67 65 3c 2f 70 3e 0a 3c 70 72 65  eb page</p>.<pre
93a0: 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20  ><code>.package 
93b0: 72 65 71 75 69 72 65 20 68 74 74 70 0a 70 61 63  require http.pac
93c0: 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6c 73  kage require tls
93d0: 0a 73 65 74 20 75 72 6c 20 22 68 74 74 70 73 3a  .set url "https:
93e0: 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 22 0a 0a  //www.tcl.tk/"..
93f0: 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72 20 68  http::register h
9400: 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74 20 3a  ttps 443 [list :
9410: 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 61 75  :tls::socket -au
9420: 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 74 72 75  toservername tru
9430: 65 20 2d 72 65 71 75 69 72 65 20 74 72 75 65 20  e -require true 
9440: 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73 6c 2f  -cadir /etc/ssl/
9450: 63 65 72 74 73 5d 0a 0a 23 20 43 68 65 63 6b 20  certs]..# Check 
9460: 66 6f 72 20 65 72 72 6f 72 0a 73 65 74 20 74 6f  for error.set to
9470: 6b 65 6e 20 5b 68 74 74 70 3a 3a 67 65 74 75 72  ken [http::getur
9480: 6c 20 24 75 72 6c 5d 0a 69 66 20 7b 5b 68 74 74  l $url].if {[htt
9490: 70 3a 3a 73 74 61 74 75 73 20 24 74 6f 6b 65 6e  p::status $token
94a0: 5d 20 6e 65 20 22 6f 6b 22 7d 20 7b 0a 20 20 20  ] ne "ok"} {.   
94b0: 20 70 75 74 73 20 5b 66 6f 72 6d 61 74 20 22 45   puts [format "E
94c0: 72 72 6f 72 20 25 73 22 20 5b 68 74 74 70 3a 3a  rror %s" [http::
94d0: 73 74 61 74 75 73 20 24 74 6f 6b 65 6e 5d 5d 0a  status $token]].
94e0: 7d 0a 0a 23 20 47 65 74 20 77 65 62 20 70 61 67  }..# Get web pag
94f0: 65 0a 73 65 74 20 64 61 74 61 20 5b 68 74 74 70  e.set data [http
9500: 3a 3a 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 70  ::data $token].p
9510: 75 74 73 20 24 64 61 74 61 0a 0a 23 20 43 6c 65  uts $data..# Cle
9520: 61 6e 75 70 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65  anup.::http::cle
9530: 61 6e 75 70 20 24 74 6f 6b 65 6e 0a 3c 2f 63 6f  anup $token.</co
9540: 64 65 3e 3c 2f 70 72 65 3e 0a 0a 3c 70 3e 45 78  de></pre>..<p>Ex
9550: 61 6d 70 6c 65 20 23 32 3a 20 44 6f 77 6e 6c 6f  ample #2: Downlo
9560: 61 64 20 66 69 6c 65 3c 2f 70 3e 0a 3c 70 72 65  ad file</p>.<pre
9570: 3e 3c 63 6f 64 65 3e 0a 70 61 63 6b 61 67 65 20  ><code>.package 
9580: 72 65 71 75 69 72 65 20 68 74 74 70 0a 70 61 63  require http.pac
9590: 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6c 73  kage require tls
95a0: 0a 0a 73 65 74 20 75 72 6c 20 22 68 74 74 70 73  ..set url "https
95b0: 3a 2f 2f 77 69 6b 69 2e 74 63 6c 2d 6c 61 6e 67  ://wiki.tcl-lang
95c0: 2e 6f 72 67 2f 73 69 74 65 6d 61 70 2e 78 6d 6c  .org/sitemap.xml
95d0: 22 0a 73 65 74 20 66 69 6c 65 6e 61 6d 65 20 5b  ".set filename [
95e0: 66 69 6c 65 20 74 61 69 6c 20 24 75 72 6c 5d 0a  file tail $url].
95f0: 0a 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72 20  .http::register 
9600: 68 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74 20  https 443 [list 
9610: 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 61  ::tls::socket -a
9620: 75 74 6f 73 65 72 76 65 72 6e 61 6d 65 20 74 72  utoservername tr
9630: 75 65 20 2d 72 65 71 75 69 72 65 20 74 72 75 65  ue -require true
9640: 20 2d 63 61 64 69 72 20 2f 65 74 63 2f 73 73 6c   -cadir /etc/ssl
9650: 2f 63 65 72 74 73 5d 0a 0a 23 20 47 65 74 20 66  /certs]..# Get f
9660: 69 6c 65 0a 73 65 74 20 63 68 20 5b 6f 70 65 6e  ile.set ch [open
9670: 20 24 66 69 6c 65 6e 61 6d 65 20 77 62 5d 0a 73   $filename wb].s
9680: 65 74 20 74 6f 6b 65 6e 20 5b 3a 3a 68 74 74 70  et token [::http
9690: 3a 3a 67 65 74 75 72 6c 20 24 75 72 6c 20 2d 62  ::geturl $url -b
96a0: 6c 6f 63 6b 73 69 7a 65 20 36 35 35 33 36 20 2d  locksize 65536 -
96b0: 63 68 61 6e 6e 65 6c 20 24 63 68 5d 0a 0a 23 20  channel $ch]..# 
96c0: 43 6c 65 61 6e 75 70 0a 63 6c 6f 73 65 20 24 63  Cleanup.close $c
96d0: 68 0a 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e 75  h.::http::cleanu
96e0: 70 20 24 74 6f 6b 65 6e 0a 3c 2f 63 6f 64 65 3e  p $token.</code>
96f0: 3c 2f 70 72 65 3e 0a 3c 62 72 3e 0a 0a 3c 68 72  </pre>.<br>..<hr
9700: 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65 3d 22  >..<h3><a name="
9710: 53 50 45 43 49 41 4c 20 43 4f 4e 53 49 44 45 52  SPECIAL CONSIDER
9720: 41 54 49 4f 4e 53 22 3e 53 50 45 43 49 41 4c 20  ATIONS">SPECIAL 
9730: 43 4f 4e 53 49 44 45 52 41 54 49 4f 4e 53 3c 2f  CONSIDERATIONS</
9740: 61 3e 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20  a></h3>..<p>The 
9750: 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66 20  capabilities of 
9760: 74 68 69 73 20 70 61 63 6b 61 67 65 20 63 61 6e  this package can
9770: 20 76 61 72 79 20 65 6e 6f 72 6d 6f 75 73 6c 79   vary enormously
9780: 20 62 61 73 65 64 20 75 70 6f 6e 20 68 6f 77 20   based upon how 
9790: 74 68 65 0a 6c 69 6e 6b 65 64 20 74 6f 20 4f 70  the.linked to Op
97a0: 65 6e 53 53 4c 20 6c 69 62 72 61 72 79 20 77 61  enSSL library wa
97b0: 73 20 63 6f 6e 66 69 67 75 72 65 64 20 61 6e 64  s configured and
97c0: 20 62 75 69 6c 74 2e 20 4e 65 77 20 76 65 72 73   built. New vers
97d0: 69 6f 6e 73 20 6d 61 79 20 6f 62 73 6f 6c 65 74  ions may obsolet
97e0: 65 0a 6f 6c 64 65 72 20 70 72 6f 74 6f 63 6f 6c  e.older protocol
97f0: 20 76 65 72 73 69 6f 6e 73 2c 20 61 64 64 20 6f   versions, add o
9800: 72 20 72 65 6d 6f 76 65 20 63 69 70 68 65 72 73  r remove ciphers
9810: 2c 20 63 68 61 6e 67 65 20 64 65 66 61 75 6c 74  , change default
9820: 20 76 61 6c 75 65 73 2c 20 65 74 63 2e 0a 55 73   values, etc..Us
9830: 65 20 74 68 65 20 3c 73 74 72 6f 6e 67 3e 74 6c  e the <strong>tl
9840: 73 3a 3a 70 72 6f 74 6f 63 6f 6c 73 3c 2f 73 74  s::protocols</st
9850: 72 6f 6e 67 3e 20 63 6f 6d 6d 61 6e 64 73 20 74  rong> commands t
9860: 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 73 75 70  o obtain the sup
9870: 70 6f 72 74 65 64 0a 70 72 6f 74 6f 63 6f 6c 20  ported.protocol 
9880: 76 65 72 73 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c  versions.</p>..<
9890: 68 72 3e 0a 0a 3c 68 33 3e 3c 61 20 6e 61 6d 65  hr>..<h3><a name
98a0: 3d 22 53 45 45 20 41 4c 53 4f 22 3e 53 45 45 20  ="SEE ALSO">SEE 
98b0: 41 4c 53 4f 3c 2f 61 3e 3c 2f 68 33 3e 0a 0a 3c  ALSO</a></h3>..<
98c0: 70 3e 3c 73 74 72 6f 6e 67 3e 73 6f 63 6b 65 74  p><strong>socket
98d0: 3c 2f 73 74 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f  </strong>, <stro
98e0: 6e 67 3e 66 69 6c 65 65 76 65 6e 74 3c 2f 73 74  ng>fileevent</st
98f0: 72 6f 6e 67 3e 2c 20 3c 73 74 72 6f 6e 67 3e 68  rong>, <strong>h
9900: 74 74 70 3c 2f 73 74 72 6f 6e 67 3e 2c 0a 3c 61  ttp</strong>,.<a
9910: 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 77   href="https://w
9920: 77 77 2e 6f 70 65 6e 73 73 6c 2e 6f 72 67 2f 22  ww.openssl.org/"
9930: 3e 3c 73 74 72 6f 6e 67 3e 4f 70 65 6e 53 53 4c  ><strong>OpenSSL
9940: 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 61 3e 3c 2f 70  </strong></a></p
9950: 3e 0a 0a 3c 68 72 3e 0a 0a 3c 70 72 65 3e 0a 43  >..<hr>..<pre>.C
9960: 6f 70 79 72 69 67 68 74 20 26 63 6f 70 79 3b 20  opyright &copy; 
9970: 31 39 39 39 20 4d 61 74 74 20 4e 65 77 6d 61 6e  1999 Matt Newman
9980: 2e 0a 43 6f 70 79 72 69 67 68 74 20 26 63 6f 70  ..Copyright &cop
9990: 79 3b 20 32 30 30 34 20 53 74 61 72 66 69 73 68  y; 2004 Starfish
99a0: 20 53 79 73 74 65 6d 73 2e 0a 43 6f 70 79 72 69   Systems..Copyri
99b0: 67 68 74 20 26 63 6f 70 79 3b 20 32 30 32 33 20  ght &copy; 2023 
99c0: 42 72 69 61 6e 20 4f 27 48 61 67 61 6e 2e 0a 3c  Brian O'Hagan..<
99d0: 2f 70 72 65 3e 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f  /pre>.</body>.</
99e0: 68 74 6d 6c 3e 0a                                html>.