summaryrefslogtreecommitdiff
path: root/doc/doctrees/environment.pickle
blob: 9a85a4ee7a6760a194b7c16eef72193e574a9c87 (plain)
ofshex dumpascii
0000 80 04 95 01 00 01 00 00 00 00 00 8c 12 73 70 68 69 6e 78 2e 65 6e 76 69 72 6f 6e 6d 65 6e 74 94 .............sphinx.environment.
0020 8c 10 42 75 69 6c 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 94 93 94 29 81 94 7d 94 28 8c 03 61 70 70 ..BuildEnvironment...)..}.(..app
0040 94 4e 8c 0a 64 6f 63 74 72 65 65 64 69 72 94 8c 37 2f 68 6f 6d 65 2f 6d 61 74 65 6a 2f 61 72 63 .N..doctreedir..7/home/matej/arc
0060 68 69 76 2f 6b 6e 69 68 6f 76 6e 61 2f 72 65 70 6f 73 2f 6d 32 63 72 79 70 74 6f 2f 64 6f 63 2f hiv/knihovna/repos/m2crypto/doc/
0080 64 6f 63 74 72 65 65 73 94 8c 06 73 72 63 64 69 72 94 8c 2e 2f 68 6f 6d 65 2f 6d 61 74 65 6a 2f doctrees...srcdir.../home/matej/
00a0 61 72 63 68 69 76 2f 6b 6e 69 68 6f 76 6e 61 2f 72 65 70 6f 73 2f 6d 32 63 72 79 70 74 6f 2f 64 archiv/knihovna/repos/m2crypto/d
00c0 6f 63 94 8c 06 63 6f 6e 66 69 67 94 8c 0d 73 70 68 69 6e 78 2e 63 6f 6e 66 69 67 94 8c 06 43 6f oc...config...sphinx.config...Co
00e0 6e 66 69 67 94 93 94 29 81 94 7d 94 28 8c 09 6f 76 65 72 72 69 64 65 73 94 7d 94 8c 05 73 65 74 nfig...)..}.(..overrides.}...set
0100 75 70 94 4e 8c 0a 65 78 74 65 6e 73 69 6f 6e 73 94 5d 94 28 8c 12 73 70 68 69 6e 78 2e 65 78 74 up.N..extensions.].(..sphinx.ext
0120 2e 61 75 74 6f 64 6f 63 94 8c 13 73 70 68 69 6e 78 2e 65 78 74 2e 76 69 65 77 63 6f 64 65 94 65 .autodoc...sphinx.ext.viewcode.e
0140 8c 0e 74 65 6d 70 6c 61 74 65 73 5f 70 61 74 68 94 5d 94 8c 0a 5f 74 65 6d 70 6c 61 74 65 73 94 ..templates_path.]..._templates.
0160 61 8c 0d 73 6f 75 72 63 65 5f 73 75 66 66 69 78 94 8c 0b 63 6f 6c 6c 65 63 74 69 6f 6e 73 94 8c a..source_suffix...collections..
0180 0b 4f 72 64 65 72 65 64 44 69 63 74 94 93 94 29 52 94 8c 04 2e 72 73 74 94 4e 73 8c 0a 6d 61 73 .OrderedDict...)R....rst.Ns..mas
01a0 74 65 72 5f 64 6f 63 94 8c 05 69 6e 64 65 78 94 8c 07 70 72 6f 6a 65 63 74 94 8c 08 4d 32 43 72 ter_doc...index...project...M2Cr
01c0 79 70 74 6f 94 8c 09 63 6f 70 79 72 69 67 68 74 94 8c 20 32 30 31 37 2c 20 4d 61 74 65 6a 20 43 ypto...copyright...2017,.Matej.C
01e0 65 70 6c 20 3c 6d 63 65 70 6c 40 63 65 70 6c 2e 65 75 3e 94 8c 07 76 65 72 73 69 6f 6e 94 8c 00 epl.<mcepl@cepl.eu>...version...
0200 94 8c 07 72 65 6c 65 61 73 65 94 68 27 8c 10 65 78 63 6c 75 64 65 5f 70 61 74 74 65 72 6e 73 94 ...release.h'..exclude_patterns.
0220 5d 94 8c 06 5f 62 75 69 6c 64 94 61 8c 0e 70 79 67 6d 65 6e 74 73 5f 73 74 79 6c 65 94 8c 06 73 ]..._build.a..pygments_style...s
0240 70 68 69 6e 78 94 8c 10 68 74 6d 6c 5f 73 74 61 74 69 63 5f 70 61 74 68 94 5d 94 8c 07 5f 73 74 phinx...html_static_path.]..._st
0260 61 74 69 63 94 61 8c 11 68 74 6d 6c 68 65 6c 70 5f 62 61 73 65 6e 61 6d 65 94 8c 0b 4d 32 43 72 atic.a..htmlhelp_basename...M2Cr
0280 79 70 74 6f 64 6f 63 94 8c 0e 6c 61 74 65 78 5f 65 6c 65 6d 65 6e 74 73 94 7d 94 8c 0f 6c 61 74 yptodoc...latex_elements.}...lat
02a0 65 78 5f 64 6f 63 75 6d 65 6e 74 73 94 5d 94 28 68 21 8c 0c 4d 32 43 72 79 70 74 6f 2e 74 65 78 ex_documents.].(h!..M2Crypto.tex
02c0 94 8c 16 4d 32 43 72 79 70 74 6f 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 94 8c 31 4d 61 74 65 ...M2Crypto.Documentation..1Mate
02e0 6a 20 43 65 70 6c 20 5c 74 65 78 74 6c 65 73 73 7b 7d 6d 63 65 70 6c 40 63 65 70 6c 2e 65 75 5c j.Cepl.\textless{}mcepl@cepl.eu\
0300 74 65 78 74 67 72 65 61 74 65 72 7b 7d 94 8c 06 6d 61 6e 75 61 6c 94 74 94 61 8c 09 6d 61 6e 5f textgreater{}...manual.t.a..man_
0320 70 61 67 65 73 94 5d 94 28 68 21 8c 08 6d 32 63 72 79 70 74 6f 94 8c 16 4d 32 43 72 79 70 74 6f pages.].(h!..m2crypto...M2Crypto
0340 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 94 5d 94 8c 1a 4d 61 74 65 6a 20 43 65 70 6c 20 3c 6d .Documentation.]...Matej.Cepl.<m
0360 63 65 70 6c 40 63 65 70 6c 2e 65 75 3e 94 61 4b 01 74 94 61 8c 11 74 65 78 69 6e 66 6f 5f 64 6f cepl@cepl.eu>.aK.t.a..texinfo_do
0380 63 75 6d 65 6e 74 73 94 5d 94 28 68 21 68 23 8c 16 4d 32 43 72 79 70 74 6f 20 44 6f 63 75 6d 65 cuments.].(h!h#..M2Crypto.Docume
03a0 6e 74 61 74 69 6f 6e 94 8c 1a 4d 61 74 65 6a 20 43 65 70 6c 20 3c 6d 63 65 70 6c 40 63 65 70 6c ntation...Matej.Cepl.<mcepl@cepl
03c0 2e 65 75 3e 94 68 23 8c 20 4f 6e 65 20 6c 69 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 .eu>.h#..One.line.description.of
03e0 20 70 72 6f 6a 65 63 74 2e 94 8c 0d 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 94 74 94 61 8c 0a 65 .project....Miscellaneous.t.a..e
0400 70 75 62 5f 74 69 74 6c 65 94 68 23 8c 0b 65 70 75 62 5f 61 75 74 68 6f 72 94 68 41 8c 0e 65 70 pub_title.h#..epub_author.hA..ep
0420 75 62 5f 70 75 62 6c 69 73 68 65 72 94 68 41 8c 0e 65 70 75 62 5f 63 6f 70 79 72 69 67 68 74 94 ub_publisher.hA..epub_copyright.
0440 68 25 8c 0e 68 74 6d 6c 5f 63 73 73 5f 66 69 6c 65 73 94 5d 94 8c 0d 68 74 6d 6c 5f 6a 73 5f 66 h%..html_css_files.]...html_js_f
0460 69 6c 65 73 94 5d 94 8c 0e 65 70 75 62 5f 63 73 73 5f 66 69 6c 65 73 94 5d 94 8c 0d 6e 75 6d 66 iles.]...epub_css_files.]...numf
0480 69 67 5f 66 6f 72 6d 61 74 94 7d 94 28 8c 07 73 65 63 74 69 6f 6e 94 8c 0a 53 65 63 74 69 6f 6e ig_format.}.(..section...Section
04a0 20 25 73 94 8c 06 66 69 67 75 72 65 94 8c 07 46 69 67 2e 20 25 73 94 8c 05 74 61 62 6c 65 94 8c .%s...figure...Fig..%s...table..
04c0 08 54 61 62 6c 65 20 25 73 94 8c 0a 63 6f 64 65 2d 62 6c 6f 63 6b 94 8c 0a 4c 69 73 74 69 6e 67 .Table.%s...code-block...Listing
04e0 20 25 73 94 75 8c 06 76 61 6c 75 65 73 94 7d 94 28 68 22 68 23 8c 03 65 6e 76 94 4e 87 94 8c 06 .%s.u..values.}.(h"h#..env.N....
0500 61 75 74 68 6f 72 94 8c 07 75 6e 6b 6e 6f 77 6e 94 68 60 4e 87 94 68 24 68 25 8c 04 68 74 6d 6c author...unknown.h`N..h$h%..html
0520 94 4e 87 94 68 26 68 27 68 60 4e 87 94 68 28 68 27 68 60 4e 87 94 8c 05 74 6f 64 61 79 94 68 27 .N..h&h'h`N..h(h'h`N....today.h'
0540 68 60 4e 87 94 8c 09 74 6f 64 61 79 5f 66 6d 74 94 4e 68 60 4e 87 94 8c 08 6c 61 6e 67 75 61 67 h`N....today_fmt.Nh`N....languag
0560 65 94 4e 68 60 4e 87 94 8c 0b 6c 6f 63 61 6c 65 5f 64 69 72 73 94 5d 94 8c 07 6c 6f 63 61 6c 65 e.Nh`N....locale_dirs.]...locale
0580 73 94 61 68 60 4e 87 94 8c 18 66 69 67 75 72 65 5f 6c 61 6e 67 75 61 67 65 5f 66 69 6c 65 6e 61 s.ah`N....figure_language_filena
05a0 6d 65 94 8c 16 7b 72 6f 6f 74 7d 2e 7b 6c 61 6e 67 75 61 67 65 7d 7b 65 78 74 7d 94 68 60 4e 87 me...{root}.{language}{ext}.h`N.
05c0 94 68 20 68 21 68 60 4e 87 94 68 1a 68 1e 68 60 4e 87 94 8c 0f 73 6f 75 72 63 65 5f 65 6e 63 6f .h.h!h`N..h.h.h`N....source_enco
05e0 64 69 6e 67 94 8c 09 75 74 66 2d 38 2d 73 69 67 94 68 60 4e 87 94 8c 0e 73 6f 75 72 63 65 5f 70 ding...utf-8-sig.h`N....source_p
0600 61 72 73 65 72 73 94 7d 94 68 60 4e 87 94 68 29 68 2a 68 60 4e 87 94 8c 0c 64 65 66 61 75 6c 74 arsers.}.h`N..h)h*h`N....default
0620 5f 72 6f 6c 65 94 4e 68 60 4e 87 94 8c 18 61 64 64 5f 66 75 6e 63 74 69 6f 6e 5f 70 61 72 65 6e _role.Nh`N....add_function_paren
0640 74 68 65 73 65 73 94 88 68 60 4e 87 94 8c 10 61 64 64 5f 6d 6f 64 75 6c 65 5f 6e 61 6d 65 73 94 theses..h`N....add_module_names.
0660 88 68 60 4e 87 94 8c 1d 74 72 69 6d 5f 66 6f 6f 74 6e 6f 74 65 5f 72 65 66 65 72 65 6e 63 65 5f .h`N....trim_footnote_reference_
0680 73 70 61 63 65 94 89 68 60 4e 87 94 8c 0c 73 68 6f 77 5f 61 75 74 68 6f 72 73 94 89 68 60 4e 87 space..h`N....show_authors..h`N.
06a0 94 68 2c 68 2d 68 65 4e 87 94 8c 12 68 69 67 68 6c 69 67 68 74 5f 6c 61 6e 67 75 61 67 65 94 8c .h,h-heN....highlight_language..
06c0 07 64 65 66 61 75 6c 74 94 68 60 4e 87 94 8c 11 68 69 67 68 6c 69 67 68 74 5f 6f 70 74 69 6f 6e .default.h`N....highlight_option
06e0 73 94 7d 94 68 60 4e 87 94 68 17 68 18 68 65 4e 87 94 8c 0f 74 65 6d 70 6c 61 74 65 5f 62 72 69 s.}.h`N..h.h.heN....template_bri
0700 64 67 65 94 4e 68 65 4e 87 94 8c 0d 6b 65 65 70 5f 77 61 72 6e 69 6e 67 73 94 89 68 60 4e 87 94 dge.NheN....keep_warnings..h`N..
0720 8c 11 73 75 70 70 72 65 73 73 5f 77 61 72 6e 69 6e 67 73 94 5d 94 68 60 4e 87 94 8c 16 6d 6f 64 ..suppress_warnings.].h`N....mod
0740 69 6e 64 65 78 5f 63 6f 6d 6d 6f 6e 5f 70 72 65 66 69 78 94 5d 94 68 65 4e 87 94 8c 0a 72 73 74 index_common_prefix.].heN....rst
0760 5f 65 70 69 6c 6f 67 94 4e 68 60 4e 87 94 8c 0a 72 73 74 5f 70 72 6f 6c 6f 67 94 4e 68 60 4e 87 _epilog.Nh`N....rst_prolog.Nh`N.
0780 94 8c 12 74 72 69 6d 5f 64 6f 63 74 65 73 74 5f 66 6c 61 67 73 94 88 68 60 4e 87 94 8c 0e 70 72 ...trim_doctest_flags..h`N....pr
07a0 69 6d 61 72 79 5f 64 6f 6d 61 69 6e 94 8c 02 70 79 94 68 60 4e 87 94 8c 0c 6e 65 65 64 73 5f 73 imary_domain...py.h`N....needs_s
07c0 70 68 69 6e 78 94 4e 4e 4e 87 94 8c 10 6e 65 65 64 73 5f 65 78 74 65 6e 73 69 6f 6e 73 94 7d 94 phinx.NNN....needs_extensions.}.
07e0 4e 4e 87 94 8c 0c 6d 61 6e 70 61 67 65 73 5f 75 72 6c 94 4e 68 60 4e 87 94 8c 08 6e 69 74 70 69 NN....manpages_url.Nh`N....nitpi
0800 63 6b 79 94 89 4e 4e 87 94 8c 0e 6e 69 74 70 69 63 6b 5f 69 67 6e 6f 72 65 94 5d 94 4e 4e 87 94 cky..NN....nitpick_ignore.].NN..
0820 8c 06 6e 75 6d 66 69 67 94 89 68 60 4e 87 94 8c 13 6e 75 6d 66 69 67 5f 73 65 63 6e 75 6d 5f 64 ..numfig..h`N....numfig_secnum_d
0840 65 70 74 68 94 4b 01 68 60 4e 87 94 68 54 68 55 68 60 4e 87 94 8c 0f 6d 61 74 68 5f 6e 75 6d 62 epth.K.h`N..hThUh`N....math_numb
0860 65 72 5f 61 6c 6c 94 89 68 60 4e 87 94 8c 11 6d 61 74 68 5f 65 71 72 65 66 5f 66 6f 72 6d 61 74 er_all..h`N....math_eqref_format
0880 94 4e 68 60 4e 87 94 8c 0b 6d 61 74 68 5f 6e 75 6d 66 69 67 94 88 68 60 4e 87 94 8c 0a 74 6c 73 .Nh`N....math_numfig..h`N....tls
08a0 5f 76 65 72 69 66 79 94 88 68 60 4e 87 94 8c 0b 74 6c 73 5f 63 61 63 65 72 74 73 94 4e 68 60 4e _verify..h`N....tls_cacerts.Nh`N
08c0 87 94 8c 0b 73 6d 61 72 74 71 75 6f 74 65 73 94 88 68 60 4e 87 94 8c 12 73 6d 61 72 74 71 75 6f ....smartquotes..h`N....smartquo
08e0 74 65 73 5f 61 63 74 69 6f 6e 94 8c 03 71 44 65 94 68 60 4e 87 94 8c 14 73 6d 61 72 74 71 75 6f tes_action...qDe.h`N....smartquo
0900 74 65 73 5f 65 78 63 6c 75 64 65 73 94 7d 94 28 8c 09 6c 61 6e 67 75 61 67 65 73 94 5d 94 8c 02 tes_excludes.}.(..languages.]...
0920 6a 61 94 61 8c 08 62 75 69 6c 64 65 72 73 94 5d 94 28 8c 03 6d 61 6e 94 8c 04 74 65 78 74 94 65 ja.a..builders.].(..man...text.e
0940 75 68 60 4e 87 94 8c 0a 68 74 6d 6c 5f 74 68 65 6d 65 94 8c 09 61 6c 61 62 61 73 74 65 72 94 68 uh`N....html_theme...alabaster.h
0960 65 4e 87 94 8c 0f 68 74 6d 6c 5f 74 68 65 6d 65 5f 70 61 74 68 94 5d 94 68 65 4e 87 94 8c 12 68 eN....html_theme_path.].heN....h
0980 74 6d 6c 5f 74 68 65 6d 65 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 65 4e 87 94 8c 0a 68 74 6d 6c 5f tml_theme_options.}.heN....html_
09a0 74 69 74 6c 65 94 8c 17 4d 32 43 72 79 70 74 6f 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 94 title...M2Crypto..documentation.
09c0 68 65 4e 87 94 8c 10 68 74 6d 6c 5f 73 68 6f 72 74 5f 74 69 74 6c 65 94 8c 17 4d 32 43 72 79 70 heN....html_short_title...M2Cryp
09e0 74 6f 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 94 68 65 4e 87 94 8c 0a 68 74 6d 6c 5f 73 74 to..documentation.heN....html_st
0a00 79 6c 65 94 4e 68 65 4e 87 94 8c 09 68 74 6d 6c 5f 6c 6f 67 6f 94 4e 68 65 4e 87 94 8c 0c 68 74 yle.NheN....html_logo.NheN....ht
0a20 6d 6c 5f 66 61 76 69 63 6f 6e 94 4e 68 65 4e 87 94 68 4e 68 4f 68 65 4e 87 94 68 50 68 51 68 65 ml_favicon.NheN..hNhOheN..hPhQhe
0a40 4e 87 94 68 2e 68 2f 68 65 4e 87 94 8c 0f 68 74 6d 6c 5f 65 78 74 72 61 5f 70 61 74 68 94 5d 94 N..h.h/heN....html_extra_path.].
0a60 68 65 4e 87 94 8c 15 68 74 6d 6c 5f 6c 61 73 74 5f 75 70 64 61 74 65 64 5f 66 6d 74 94 4e 68 65 heN....html_last_updated_fmt.Nhe
0a80 4e 87 94 8c 0d 68 74 6d 6c 5f 73 69 64 65 62 61 72 73 94 7d 94 68 65 4e 87 94 8c 15 68 74 6d 6c N....html_sidebars.}.heN....html
0aa0 5f 61 64 64 69 74 69 6f 6e 61 6c 5f 70 61 67 65 73 94 7d 94 68 65 4e 87 94 8c 13 68 74 6d 6c 5f _additional_pages.}.heN....html_
0ac0 64 6f 6d 61 69 6e 5f 69 6e 64 69 63 65 73 94 88 68 65 4e 87 94 8c 13 68 74 6d 6c 5f 61 64 64 5f domain_indices..heN....html_add_
0ae0 70 65 72 6d 61 6c 69 6e 6b 73 94 8c 02 c2 b6 94 68 65 4e 87 94 8c 0e 68 74 6d 6c 5f 75 73 65 5f permalinks......heN....html_use_
0b00 69 6e 64 65 78 94 88 68 65 4e 87 94 8c 10 68 74 6d 6c 5f 73 70 6c 69 74 5f 69 6e 64 65 78 94 89 index..heN....html_split_index..
0b20 68 65 4e 87 94 8c 10 68 74 6d 6c 5f 63 6f 70 79 5f 73 6f 75 72 63 65 94 88 68 65 4e 87 94 8c 14 heN....html_copy_source..heN....
0b40 68 74 6d 6c 5f 73 68 6f 77 5f 73 6f 75 72 63 65 6c 69 6e 6b 94 88 68 65 4e 87 94 8c 16 68 74 6d html_show_sourcelink..heN....htm
0b60 6c 5f 73 6f 75 72 63 65 6c 69 6e 6b 5f 73 75 66 66 69 78 94 8c 04 2e 74 78 74 94 68 65 4e 87 94 l_sourcelink_suffix....txt.heN..
0b80 8c 13 68 74 6d 6c 5f 75 73 65 5f 6f 70 65 6e 73 65 61 72 63 68 94 68 27 68 65 4e 87 94 8c 10 68 ..html_use_opensearch.h'heN....h
0ba0 74 6d 6c 5f 66 69 6c 65 5f 73 75 66 66 69 78 94 4e 68 65 4e 87 94 8c 10 68 74 6d 6c 5f 6c 69 6e tml_file_suffix.NheN....html_lin
0bc0 6b 5f 73 75 66 66 69 78 94 4e 68 65 4e 87 94 8c 13 68 74 6d 6c 5f 73 68 6f 77 5f 63 6f 70 79 72 k_suffix.NheN....html_show_copyr
0be0 69 67 68 74 94 88 68 65 4e 87 94 8c 10 68 74 6d 6c 5f 73 68 6f 77 5f 73 70 68 69 6e 78 94 88 68 ight..heN....html_show_sphinx..h
0c00 65 4e 87 94 8c 0c 68 74 6d 6c 5f 63 6f 6e 74 65 78 74 94 7d 94 68 65 4e 87 94 8c 14 68 74 6d 6c eN....html_context.}.heN....html
0c20 5f 6f 75 74 70 75 74 5f 65 6e 63 6f 64 69 6e 67 94 8c 05 75 74 66 2d 38 94 68 65 4e 87 94 8c 12 _output_encoding...utf-8.heN....
0c40 68 74 6d 6c 5f 63 6f 6d 70 61 63 74 5f 6c 69 73 74 73 94 88 68 65 4e 87 94 8c 15 68 74 6d 6c 5f html_compact_lists..heN....html_
0c60 73 65 63 6e 75 6d 62 65 72 5f 73 75 66 66 69 78 94 8c 02 2e 20 94 68 65 4e 87 94 8c 14 68 74 6d secnumber_suffix......heN....htm
0c80 6c 5f 73 65 61 72 63 68 5f 6c 61 6e 67 75 61 67 65 94 4e 68 65 4e 87 94 8c 13 68 74 6d 6c 5f 73 l_search_language.NheN....html_s
0ca0 65 61 72 63 68 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 65 4e 87 94 8c 12 68 74 6d 6c 5f 73 65 61 72 earch_options.}.heN....html_sear
0cc0 63 68 5f 73 63 6f 72 65 72 94 68 27 4e 4e 87 94 8c 16 68 74 6d 6c 5f 73 63 61 6c 65 64 5f 69 6d ch_scorer.h'NN....html_scaled_im
0ce0 61 67 65 5f 6c 69 6e 6b 94 88 68 65 4e 87 94 8c 1e 68 74 6d 6c 5f 65 78 70 65 72 69 6d 65 6e 74 age_link..heN....html_experiment
0d00 61 6c 5f 68 74 6d 6c 35 5f 77 72 69 74 65 72 94 4e 68 65 4e 87 94 8c 0c 68 74 6d 6c 5f 62 61 73 al_html5_writer.NheN....html_bas
0d20 65 75 72 6c 94 68 27 68 65 4e 87 94 8c 12 68 74 6d 6c 5f 6d 61 74 68 5f 72 65 6e 64 65 72 65 72 eurl.h'heN....html_math_renderer
0d40 94 4e 68 60 4e 87 94 8c 13 73 69 6e 67 6c 65 68 74 6d 6c 5f 73 69 64 65 62 61 72 73 94 68 ec 68 .Nh`N....singlehtml_sidebars.h.h
0d60 65 4e 87 94 8c 0c 6d 61 74 68 6a 61 78 5f 70 61 74 68 94 8c 5b 68 74 74 70 73 3a 2f 2f 63 64 6e eN....mathjax_path..[https://cdn
0d80 6a 73 2e 63 6c 6f 75 64 66 6c 61 72 65 2e 63 6f 6d 2f 61 6a 61 78 2f 6c 69 62 73 2f 6d 61 74 68 js.cloudflare.com/ajax/libs/math
0da0 6a 61 78 2f 32 2e 37 2e 35 2f 6c 61 74 65 73 74 2e 6a 73 3f 63 6f 6e 66 69 67 3d 54 65 58 2d 41 jax/2.7.5/latest.js?config=TeX-A
0dc0 4d 53 2d 4d 4d 4c 5f 48 54 4d 4c 6f 72 4d 4d 4c 94 68 65 4e 87 94 8c 0f 6d 61 74 68 6a 61 78 5f MS-MML_HTMLorMML.heN....mathjax_
0de0 6f 70 74 69 6f 6e 73 94 7d 94 68 65 4e 87 94 8c 0e 6d 61 74 68 6a 61 78 5f 69 6e 6c 69 6e 65 94 options.}.heN....mathjax_inline.
0e00 5d 94 28 8c 02 5c 28 94 8c 02 5c 29 94 65 68 65 4e 87 94 8c 0f 6d 61 74 68 6a 61 78 5f 64 69 73 ].(..\(...\).eheN....mathjax_dis
0e20 70 6c 61 79 94 5d 94 28 8c 02 5c 5b 94 8c 02 5c 5d 94 65 68 65 4e 87 94 8c 0e 6d 61 74 68 6a 61 play.].(..\[...\].eheN....mathja
0e40 78 5f 63 6f 6e 66 69 67 94 4e 68 65 4e 87 94 8c 15 61 70 70 6c 65 68 65 6c 70 5f 62 75 6e 64 6c x_config.NheN....applehelp_bundl
0e60 65 5f 6e 61 6d 65 94 68 23 8c 09 61 70 70 6c 65 68 65 6c 70 94 4e 87 94 8c 13 61 70 70 6c 65 68 e_name.h#..applehelp.N....appleh
0e80 65 6c 70 5f 62 75 6e 64 6c 65 5f 69 64 94 4e 6a 3a 01 00 00 4e 87 94 8c 14 61 70 70 6c 65 68 65 elp_bundle_id.Nj:...N....applehe
0ea0 6c 70 5f 64 65 76 5f 72 65 67 69 6f 6e 94 8c 05 65 6e 2d 75 73 94 6a 3a 01 00 00 4e 87 94 8c 18 lp_dev_region...en-us.j:...N....
0ec0 61 70 70 6c 65 68 65 6c 70 5f 62 75 6e 64 6c 65 5f 76 65 72 73 69 6f 6e 94 8c 01 31 94 6a 3a 01 applehelp_bundle_version...1.j:.
0ee0 00 00 4e 87 94 8c 0e 61 70 70 6c 65 68 65 6c 70 5f 69 63 6f 6e 94 4e 6a 3a 01 00 00 4e 87 94 8c ..N....applehelp_icon.Nj:...N...
0f00 14 61 70 70 6c 65 68 65 6c 70 5f 6b 62 5f 70 72 6f 64 75 63 74 94 8c 09 4d 32 43 72 79 70 74 6f .applehelp_kb_product...M2Crypto
0f20 2d 94 6a 3a 01 00 00 4e 87 94 8c 10 61 70 70 6c 65 68 65 6c 70 5f 6b 62 5f 75 72 6c 94 4e 6a 3a -.j:...N....applehelp_kb_url.Nj:
0f40 01 00 00 4e 87 94 8c 14 61 70 70 6c 65 68 65 6c 70 5f 72 65 6d 6f 74 65 5f 75 72 6c 94 4e 6a 3a ...N....applehelp_remote_url.Nj:
0f60 01 00 00 4e 87 94 8c 17 61 70 70 6c 65 68 65 6c 70 5f 69 6e 64 65 78 5f 61 6e 63 68 6f 72 73 94 ...N....applehelp_index_anchors.
0f80 89 6a 3a 01 00 00 4e 87 94 8c 19 61 70 70 6c 65 68 65 6c 70 5f 6d 69 6e 5f 74 65 72 6d 5f 6c 65 .j:...N....applehelp_min_term_le
0fa0 6e 67 74 68 94 4e 6a 3a 01 00 00 4e 87 94 8c 13 61 70 70 6c 65 68 65 6c 70 5f 73 74 6f 70 77 6f ngth.Nj:...N....applehelp_stopwo
0fc0 72 64 73 94 8c 02 65 6e 94 6a 3a 01 00 00 4e 87 94 8c 10 61 70 70 6c 65 68 65 6c 70 5f 6c 6f 63 rds...en.j:...N....applehelp_loc
0fe0 61 6c 65 94 6a 52 01 00 00 6a 3a 01 00 00 4e 87 94 8c 0f 61 70 70 6c 65 68 65 6c 70 5f 74 69 74 ale.jR...j:...N....applehelp_tit
1000 6c 65 94 8c 0d 4d 32 43 72 79 70 74 6f 20 48 65 6c 70 94 6a 3a 01 00 00 4e 87 94 8c 1b 61 70 70 le...M2Crypto.Help.j:...N....app
1020 6c 65 68 65 6c 70 5f 63 6f 64 65 73 69 67 6e 5f 69 64 65 6e 74 69 74 79 94 4e 6a 3a 01 00 00 4e lehelp_codesign_identity.Nj:...N
1040 87 94 8c 18 61 70 70 6c 65 68 65 6c 70 5f 63 6f 64 65 73 69 67 6e 5f 66 6c 61 67 73 94 5d 94 6a ....applehelp_codesign_flags.].j
1060 3a 01 00 00 4e 87 94 8c 16 61 70 70 6c 65 68 65 6c 70 5f 69 6e 64 65 78 65 72 5f 70 61 74 68 94 :...N....applehelp_indexer_path.
1080 8c 0f 2f 75 73 72 2f 62 69 6e 2f 68 69 75 74 69 6c 94 6a 3a 01 00 00 4e 87 94 8c 17 61 70 70 6c ../usr/bin/hiutil.j:...N....appl
10a0 65 68 65 6c 70 5f 63 6f 64 65 73 69 67 6e 5f 70 61 74 68 94 8c 11 2f 75 73 72 2f 62 69 6e 2f 63 ehelp_codesign_path.../usr/bin/c
10c0 6f 64 65 73 69 67 6e 94 6a 3a 01 00 00 4e 87 94 8c 20 61 70 70 6c 65 68 65 6c 70 5f 64 69 73 61 odesign.j:...N....applehelp_disa
10e0 62 6c 65 5f 65 78 74 65 72 6e 61 6c 5f 74 6f 6f 6c 73 94 89 4e 4e 87 94 8c 0d 65 70 75 62 5f 62 ble_external_tools..NN....epub_b
1100 61 73 65 6e 61 6d 65 94 68 23 4e 4e 87 94 8c 0c 65 70 75 62 5f 76 65 72 73 69 6f 6e 94 47 40 08 asename.h#NN....epub_version.G@.
1120 00 00 00 00 00 00 8c 04 65 70 75 62 94 4e 87 94 8c 0a 65 70 75 62 5f 74 68 65 6d 65 94 6a 69 01 ........epub.N....epub_theme.ji.
1140 00 00 6a 69 01 00 00 4e 87 94 8c 12 65 70 75 62 5f 74 68 65 6d 65 5f 6f 70 74 69 6f 6e 73 94 7d ..ji...N....epub_theme_options.}
1160 94 6a 69 01 00 00 4e 87 94 68 4a 68 23 6a 69 01 00 00 4e 87 94 68 4b 68 41 6a 69 01 00 00 4e 87 .ji...N..hJh#ji...N..hKhAji...N.
1180 94 8c 0d 65 70 75 62 5f 6c 61 6e 67 75 61 67 65 94 6a 52 01 00 00 6a 69 01 00 00 4e 87 94 68 4c ...epub_language.jR...ji...N..hL
11a0 68 41 6a 69 01 00 00 4e 87 94 68 4d 68 25 6a 69 01 00 00 4e 87 94 8c 0f 65 70 75 62 5f 69 64 65 hAji...N..hMh%ji...N....epub_ide
11c0 6e 74 69 66 69 65 72 94 68 63 6a 69 01 00 00 4e 87 94 8c 0b 65 70 75 62 5f 73 63 68 65 6d 65 94 ntifier.hcji...N....epub_scheme.
11e0 68 63 6a 69 01 00 00 4e 87 94 8c 08 65 70 75 62 5f 75 69 64 94 68 63 68 60 4e 87 94 8c 0a 65 70 hcji...N....epub_uid.hch`N....ep
1200 75 62 5f 63 6f 76 65 72 94 29 68 60 4e 87 94 8c 0a 65 70 75 62 5f 67 75 69 64 65 94 29 68 60 4e ub_cover.)h`N....epub_guide.)h`N
1220 87 94 8c 0e 65 70 75 62 5f 70 72 65 5f 66 69 6c 65 73 94 5d 94 68 60 4e 87 94 8c 0f 65 70 75 62 ....epub_pre_files.].h`N....epub
1240 5f 70 6f 73 74 5f 66 69 6c 65 73 94 5d 94 68 60 4e 87 94 68 52 68 53 6a 69 01 00 00 4e 87 94 8c _post_files.].h`N..hRhSji...N...
1260 12 65 70 75 62 5f 65 78 63 6c 75 64 65 5f 66 69 6c 65 73 94 5d 94 68 60 4e 87 94 8c 0d 65 70 75 .epub_exclude_files.].h`N....epu
1280 62 5f 74 6f 63 64 65 70 74 68 94 4b 03 68 60 4e 87 94 8c 0b 65 70 75 62 5f 74 6f 63 64 75 70 94 b_tocdepth.K.h`N....epub_tocdup.
12a0 88 68 60 4e 87 94 8c 0d 65 70 75 62 5f 74 6f 63 73 63 6f 70 65 94 68 8b 68 60 4e 87 94 8c 0f 65 .h`N....epub_tocscope.h.h`N....e
12c0 70 75 62 5f 66 69 78 5f 69 6d 61 67 65 73 94 89 68 60 4e 87 94 8c 14 65 70 75 62 5f 6d 61 78 5f pub_fix_images..h`N....epub_max_
12e0 69 6d 61 67 65 5f 77 69 64 74 68 94 4b 00 68 60 4e 87 94 8c 0e 65 70 75 62 5f 73 68 6f 77 5f 75 image_width.K.h`N....epub_show_u
1300 72 6c 73 94 8c 06 69 6e 6c 69 6e 65 94 6a 69 01 00 00 4e 87 94 8c 0e 65 70 75 62 5f 75 73 65 5f rls...inline.ji...N....epub_use_
1320 69 6e 64 65 78 94 88 6a 69 01 00 00 4e 87 94 8c 10 65 70 75 62 5f 64 65 73 63 72 69 70 74 69 6f index..ji...N....epub_descriptio
1340 6e 94 68 63 6a 69 01 00 00 4e 87 94 8c 10 65 70 75 62 5f 63 6f 6e 74 72 69 62 75 74 6f 72 94 68 n.hcji...N....epub_contributor.h
1360 63 6a 69 01 00 00 4e 87 94 8c 11 65 70 75 62 5f 77 72 69 74 69 6e 67 5f 6d 6f 64 65 94 8c 0a 68 cji...N....epub_writing_mode...h
1380 6f 72 69 7a 6f 6e 74 61 6c 94 6a 69 01 00 00 4e 87 94 8c 10 64 65 76 68 65 6c 70 5f 62 61 73 65 orizontal.ji...N....devhelp_base
13a0 6e 61 6d 65 94 68 23 4e 4e 87 94 8c 0f 67 65 74 74 65 78 74 5f 63 6f 6d 70 61 63 74 94 88 8c 07 name.h#NN....gettext_compact....
13c0 67 65 74 74 65 78 74 94 4e 87 94 8c 10 67 65 74 74 65 78 74 5f 6c 6f 63 61 74 69 6f 6e 94 88 6a gettext.N....gettext_location..j
13e0 a3 01 00 00 4e 87 94 8c 0c 67 65 74 74 65 78 74 5f 75 75 69 64 94 89 6a a3 01 00 00 4e 87 94 8c ....N....gettext_uuid..j....N...
1400 12 67 65 74 74 65 78 74 5f 61 75 74 6f 5f 62 75 69 6c 64 94 88 68 60 4e 87 94 8c 1a 67 65 74 74 .gettext_auto_build..h`N....gett
1420 65 78 74 5f 61 64 64 69 74 69 6f 6e 61 6c 5f 74 61 72 67 65 74 73 94 5d 94 68 60 4e 87 94 68 31 ext_additional_targets.].h`N..h1
1440 68 32 4e 4e 87 94 8c 0c 6c 61 74 65 78 5f 65 6e 67 69 6e 65 94 8c 08 70 64 66 6c 61 74 65 78 94 h2NN....latex_engine...pdflatex.
1460 4e 4e 87 94 68 35 68 36 4e 4e 87 94 8c 0a 6c 61 74 65 78 5f 6c 6f 67 6f 94 4e 4e 4e 87 94 8c 10 NN..h5h6NN....latex_logo.NNN....
1480 6c 61 74 65 78 5f 61 70 70 65 6e 64 69 63 65 73 94 5d 94 4e 4e 87 94 8c 1b 6c 61 74 65 78 5f 75 latex_appendices.].NN....latex_u
14a0 73 65 5f 6c 61 74 65 78 5f 6d 75 6c 74 69 63 6f 6c 75 6d 6e 94 89 4e 4e 87 94 8c 0f 6c 61 74 65 se_latex_multicolumn..NN....late
14c0 78 5f 75 73 65 5f 78 69 6e 64 79 94 89 4e 4e 87 94 8c 19 6c 61 74 65 78 5f 74 6f 70 6c 65 76 65 x_use_xindy..NN....latex_topleve
14e0 6c 5f 73 65 63 74 69 6f 6e 69 6e 67 94 4e 4e 4e 87 94 8c 14 6c 61 74 65 78 5f 64 6f 6d 61 69 6e l_sectioning.NNN....latex_domain
1500 5f 69 6e 64 69 63 65 73 94 88 4e 4e 87 94 8c 0f 6c 61 74 65 78 5f 73 68 6f 77 5f 75 72 6c 73 94 _indices..NN....latex_show_urls.
1520 8c 02 6e 6f 94 4e 4e 87 94 8c 13 6c 61 74 65 78 5f 73 68 6f 77 5f 70 61 67 65 72 65 66 73 94 89 ..no.NN....latex_show_pagerefs..
1540 4e 4e 87 94 68 33 68 34 4e 4e 87 94 8c 16 6c 61 74 65 78 5f 61 64 64 69 74 69 6f 6e 61 6c 5f 66 NN..h3h4NN....latex_additional_f
1560 69 6c 65 73 94 5d 94 4e 4e 87 94 8c 0e 6c 61 74 65 78 5f 64 6f 63 63 6c 61 73 73 94 7d 94 4e 4e iles.].NN....latex_docclass.}.NN
1580 87 94 8c 10 6c 69 6e 6b 63 68 65 63 6b 5f 69 67 6e 6f 72 65 94 5d 94 4e 4e 87 94 8c 11 6c 69 6e ....linkcheck_ignore.].NN....lin
15a0 6b 63 68 65 63 6b 5f 72 65 74 72 69 65 73 94 4b 01 4e 4e 87 94 8c 11 6c 69 6e 6b 63 68 65 63 6b kcheck_retries.K.NN....linkcheck
15c0 5f 74 69 6d 65 6f 75 74 94 4e 4e 4e 87 94 8c 11 6c 69 6e 6b 63 68 65 63 6b 5f 77 6f 72 6b 65 72 _timeout.NNN....linkcheck_worker
15e0 73 94 4b 05 4e 4e 87 94 8c 11 6c 69 6e 6b 63 68 65 63 6b 5f 61 6e 63 68 6f 72 73 94 88 4e 4e 87 s.K.NN....linkcheck_anchors..NN.
1600 94 8c 18 6c 69 6e 6b 63 68 65 63 6b 5f 61 6e 63 68 6f 72 73 5f 69 67 6e 6f 72 65 94 5d 94 8c 02 ...linkcheck_anchors_ignore.]...
1620 5e 21 94 61 4e 4e 87 94 68 3c 68 3d 4e 4e 87 94 8c 0d 6d 61 6e 5f 73 68 6f 77 5f 75 72 6c 73 94 ^!.aNN..h<h=NN....man_show_urls.
1640 89 4e 4e 87 94 8c 0f 71 74 68 65 6c 70 5f 62 61 73 65 6e 61 6d 65 94 68 23 4e 4e 87 94 8c 10 71 .NN....qthelp_basename.h#NN....q
1660 74 68 65 6c 70 5f 6e 61 6d 65 73 70 61 63 65 94 4e 68 65 4e 87 94 8c 0c 71 74 68 65 6c 70 5f 74 thelp_namespace.NheN....qthelp_t
1680 68 65 6d 65 94 8c 05 6e 6f 6e 61 76 94 68 65 4e 87 94 8c 14 71 74 68 65 6c 70 5f 74 68 65 6d 65 heme...nonav.heN....qthelp_theme
16a0 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 65 4e 87 94 68 43 68 44 4e 4e 87 94 8c 12 74 65 78 69 6e 66 _options.}.heN..hChDNN....texinf
16c0 6f 5f 61 70 70 65 6e 64 69 63 65 73 94 5d 94 4e 4e 87 94 8c 10 74 65 78 69 6e 66 6f 5f 65 6c 65 o_appendices.].NN....texinfo_ele
16e0 6d 65 6e 74 73 94 7d 94 4e 4e 87 94 8c 16 74 65 78 69 6e 66 6f 5f 64 6f 6d 61 69 6e 5f 69 6e 64 ments.}.NN....texinfo_domain_ind
1700 69 63 65 73 94 88 4e 4e 87 94 8c 11 74 65 78 69 6e 66 6f 5f 73 68 6f 77 5f 75 72 6c 73 94 8c 08 ices..NN....texinfo_show_urls...
1720 66 6f 6f 74 6e 6f 74 65 94 4e 4e 87 94 8c 15 74 65 78 69 6e 66 6f 5f 6e 6f 5f 64 65 74 61 69 6c footnote.NN....texinfo_no_detail
1740 6d 65 6e 75 94 89 4e 4e 87 94 8c 11 74 65 78 74 5f 73 65 63 74 69 6f 6e 63 68 61 72 73 94 8c 07 menu..NN....text_sectionchars...
1760 2a 3d 2d 7e 22 2b 60 94 68 60 4e 87 94 8c 0d 74 65 78 74 5f 6e 65 77 6c 69 6e 65 73 94 8c 04 75 *=-~"+`.h`N....text_newlines...u
1780 6e 69 78 94 68 60 4e 87 94 8c 13 74 65 78 74 5f 61 64 64 5f 73 65 63 6e 75 6d 62 65 72 73 94 88 nix.h`N....text_add_secnumbers..
17a0 68 60 4e 87 94 8c 15 74 65 78 74 5f 73 65 63 6e 75 6d 62 65 72 5f 73 75 66 66 69 78 94 8c 02 2e h`N....text_secnumber_suffix....
17c0 20 94 68 60 4e 87 94 8c 0a 78 6d 6c 5f 70 72 65 74 74 79 94 88 68 60 4e 87 94 8c 17 63 70 70 5f ..h`N....xml_pretty..h`N....cpp_
17e0 69 6e 64 65 78 5f 63 6f 6d 6d 6f 6e 5f 70 72 65 66 69 78 94 5d 94 68 60 4e 87 94 8c 11 63 70 70 index_common_prefix.].h`N....cpp
1800 5f 69 64 5f 61 74 74 72 69 62 75 74 65 73 94 5d 94 68 60 4e 87 94 8c 14 63 70 70 5f 70 61 72 65 _id_attributes.].h`N....cpp_pare
1820 6e 5f 61 74 74 72 69 62 75 74 65 73 94 5d 94 68 60 4e 87 94 8c 11 61 75 74 6f 63 6c 61 73 73 5f n_attributes.].h`N....autoclass_
1840 63 6f 6e 74 65 6e 74 94 8c 05 63 6c 61 73 73 94 68 60 4e 87 94 8c 14 61 75 74 6f 64 6f 63 5f 6d content...class.h`N....autodoc_m
1860 65 6d 62 65 72 5f 6f 72 64 65 72 94 8c 0a 61 6c 70 68 61 62 65 74 69 63 94 68 60 4e 87 94 8c 15 ember_order...alphabetic.h`N....
1880 61 75 74 6f 64 6f 63 5f 64 65 66 61 75 6c 74 5f 66 6c 61 67 73 94 5d 94 68 60 4e 87 94 8c 17 61 autodoc_default_flags.].h`N....a
18a0 75 74 6f 64 6f 63 5f 64 65 66 61 75 6c 74 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 60 4e 87 94 8c 1b utodoc_default_options.}.h`N....
18c0 61 75 74 6f 64 6f 63 5f 64 6f 63 73 74 72 69 6e 67 5f 73 69 67 6e 61 74 75 72 65 94 88 68 60 4e autodoc_docstring_signature..h`N
18e0 87 94 8c 14 61 75 74 6f 64 6f 63 5f 6d 6f 63 6b 5f 69 6d 70 6f 72 74 73 94 5d 94 68 60 4e 87 94 ....autodoc_mock_imports.].h`N..
1900 8c 16 61 75 74 6f 64 6f 63 5f 77 61 72 6e 69 6e 67 69 73 65 72 72 6f 72 94 88 68 60 4e 87 94 8c ..autodoc_warningiserror..h`N...
1920 1a 61 75 74 6f 64 6f 63 5f 69 6e 68 65 72 69 74 5f 64 6f 63 73 74 72 69 6e 67 73 94 88 68 60 4e .autodoc_inherit_docstrings..h`N
1940 87 94 8c 0f 76 69 65 77 63 6f 64 65 5f 69 6d 70 6f 72 74 94 4e 68 27 4e 87 94 8c 14 76 69 65 77 ....viewcode_import.Nh'N....view
1960 63 6f 64 65 5f 65 6e 61 62 6c 65 5f 65 70 75 62 94 89 68 27 4e 87 94 8c 20 76 69 65 77 63 6f 64 code_enable_epub..h'N....viewcod
1980 65 5f 66 6f 6c 6c 6f 77 5f 69 6d 70 6f 72 74 65 64 5f 6d 65 6d 62 65 72 73 94 88 68 27 4e 87 94 e_follow_imported_members..h'N..
19a0 75 75 62 8c 0d 63 6f 6e 66 69 67 5f 73 74 61 74 75 73 94 4b 01 8c 07 76 65 72 73 69 6f 6e 94 7d uub..config_status.K...version.}
19c0 94 28 8c 10 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 63 94 4b 01 8c 18 73 70 68 69 6e 78 2e .(..sphinx.domains.c.K...sphinx.
19e0 64 6f 6d 61 69 6e 73 2e 63 68 61 6e 67 65 73 65 74 94 4b 01 8c 12 73 70 68 69 6e 78 2e 64 6f 6d domains.changeset.K...sphinx.dom
1a00 61 69 6e 73 2e 63 70 70 94 4b 01 8c 19 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 6a 61 76 61 ains.cpp.K...sphinx.domains.java
1a20 73 63 72 69 70 74 94 4b 01 8c 13 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 6d 61 74 68 94 4b script.K...sphinx.domains.math.K
1a40 02 8c 15 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 70 79 74 68 6f 6e 94 4b 01 8c 12 73 70 68 ...sphinx.domains.python.K...sph
1a60 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 72 73 74 94 4b 01 8c 12 73 70 68 69 6e 78 2e 64 6f 6d 61 69 inx.domains.rst.K...sphinx.domai
1a80 6e 73 2e 73 74 64 94 4b 01 68 16 4b 01 68 2d 4b 37 75 8c 14 76 65 72 73 69 6f 6e 69 6e 67 5f 63 ns.std.K.h.K.h-K7u..versioning_c
1aa0 6f 6e 64 69 74 69 6f 6e 94 89 8c 12 76 65 72 73 69 6f 6e 69 6e 67 5f 63 6f 6d 70 61 72 65 94 89 ondition....versioning_compare..
1ac0 8c 07 64 6f 6d 61 69 6e 73 94 7d 94 8c 08 73 65 74 74 69 6e 67 73 94 7d 94 28 8c 10 65 6d 62 65 ..domains.}...settings.}.(..embe
1ae0 64 5f 73 74 79 6c 65 73 68 65 65 74 94 89 8c 15 63 6c 6f 61 6b 5f 65 6d 61 69 6c 5f 61 64 64 72 d_stylesheet....cloak_email_addr
1b00 65 73 73 65 73 94 88 8c 0c 70 65 70 5f 62 61 73 65 5f 75 72 6c 94 8c 20 68 74 74 70 73 3a 2f 2f esses....pep_base_url...https://
1b20 77 77 77 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 64 65 76 2f 70 65 70 73 2f 94 8c 0e 70 65 70 5f 72 www.python.org/dev/peps/...pep_r
1b40 65 66 65 72 65 6e 63 65 73 94 4e 8c 0c 72 66 63 5f 62 61 73 65 5f 75 72 6c 94 8c 1c 68 74 74 70 eferences.N..rfc_base_url...http
1b60 73 3a 2f 2f 74 6f 6f 6c 73 2e 69 65 74 66 2e 6f 72 67 2f 68 74 6d 6c 2f 94 8c 0e 72 66 63 5f 72 s://tools.ietf.org/html/...rfc_r
1b80 65 66 65 72 65 6e 63 65 73 94 4e 8c 0e 69 6e 70 75 74 5f 65 6e 63 6f 64 69 6e 67 94 68 79 8c 0e eferences.N..input_encoding.hy..
1ba0 64 6f 63 74 69 74 6c 65 5f 78 66 6f 72 6d 94 89 8c 12 73 65 63 74 73 75 62 74 69 74 6c 65 5f 78 doctitle_xform....sectsubtitle_x
1bc0 66 6f 72 6d 94 89 8c 0a 68 61 6c 74 5f 6c 65 76 65 6c 94 4b 05 8c 16 66 69 6c 65 5f 69 6e 73 65 form....halt_level.K...file_inse
1be0 72 74 69 6f 6e 5f 65 6e 61 62 6c 65 64 94 88 8c 13 73 6d 61 72 74 71 75 6f 74 65 73 5f 6c 6f 63 rtion_enabled....smartquotes_loc
1c00 61 6c 65 73 94 5d 94 8c 03 65 6e 76 94 68 03 8c 1d 74 72 69 6d 5f 66 6f 6f 74 6e 6f 74 65 5f 72 ales.]...env.h...trim_footnote_r
1c20 65 66 65 72 65 6e 63 65 5f 73 70 61 63 65 94 89 8c 0d 6c 61 6e 67 75 61 67 65 5f 63 6f 64 65 94 eference_space....language_code.
1c40 6a 52 01 00 00 8c 0c 73 6d 61 72 74 5f 71 75 6f 74 65 73 94 88 75 8c 09 5f 77 61 72 6e 66 75 6e jR.....smart_quotes..u.._warnfun
1c60 63 94 4e 8c 0a 66 6f 75 6e 64 5f 64 6f 63 73 94 8f 94 28 8c 0b 68 6f 77 74 6f 2e 73 6d 69 6d 65 c.N..found_docs...(..howto.smime
1c80 94 8c 08 68 6f 77 74 6f 2e 63 61 94 8c 09 68 6f 77 74 6f 2e 73 73 6c 94 8c 0c 4d 32 43 72 79 70 ...howto.ca...howto.ssl...M2Cryp
1ca0 74 6f 2e 53 53 4c 94 8c 05 69 6e 64 65 78 94 8c 08 4d 32 43 72 79 70 74 6f 94 8c 10 5a 53 65 72 to.SSL...index...M2Crypto...ZSer
1cc0 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 90 8c 08 61 6c 6c 5f 64 6f 63 73 94 7d 94 28 8c 10 5a 53 verSSL-HOWTO....all_docs.}.(..ZS
1ce0 65 72 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 47 41 d7 36 b6 d0 56 fa e6 8c 08 68 6f 77 74 6f 2e erverSSL-HOWTO.GA.6..V....howto.
1d00 63 61 94 47 41 d7 36 b6 d0 58 5e 69 8c 0b 68 6f 77 74 6f 2e 73 6d 69 6d 65 94 47 41 d7 36 b6 d0 ca.GA.6..X^i..howto.smime.GA.6..
1d20 5a fe c5 8c 09 68 6f 77 74 6f 2e 73 73 6c 94 47 41 d7 36 b6 d0 5b eb 75 8c 05 69 6e 64 65 78 94 Z....howto.ssl.GA.6..[.u..index.
1d40 47 41 d7 36 b6 d0 5c 64 79 8c 0c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 47 41 d7 36 b7 0b e3 0c GA.6..\dy..M2Crypto.SSL.GA.6....
1d60 33 6a 53 02 00 00 47 41 d7 36 b7 5c e0 f0 f6 75 8c 0c 64 65 70 65 6e 64 65 6e 63 69 65 73 94 68 3jS...GA.6.\...u..dependencies.h
1d80 1b 8c 0b 64 65 66 61 75 6c 74 64 69 63 74 94 93 94 8c 08 62 75 69 6c 74 69 6e 73 94 8c 03 73 65 ...defaultdict.....builtins...se
1da0 74 94 93 94 85 94 52 94 28 8c 09 68 6f 77 74 6f 2e 73 73 6c 94 8f 94 8c 05 69 6e 64 65 78 94 8f t.....R.(..howto.ssl.....index..
1dc0 94 8c 0b 68 6f 77 74 6f 2e 73 6d 69 6d 65 94 8f 94 8c 10 5a 53 65 72 76 65 72 53 53 4c 2d 48 4f ...howto.smime.....ZServerSSL-HO
1de0 57 54 4f 94 8f 94 8c 08 68 6f 77 74 6f 2e 63 61 94 8f 94 6a 5c 02 00 00 8f 94 28 8c 21 2e 2e 2f WTO.....howto.ca...j\.....(.!../
1e00 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 70 79 94 8c M2Crypto/SSL/ssl_dispatcher.py..
1e20 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 74 69 6d 65 6f 75 74 2e 70 79 94 8c 1c 2e 2e .../M2Crypto/SSL/timeout.py.....
1e40 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 53 53 4c 53 65 72 76 65 72 2e 70 79 94 8c 15 2e 2e 2f /M2Crypto/SSL/SSLServer.py...../
1e60 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 63 62 2e 70 79 94 8c 1b 2e 2e 2f 4d 32 43 72 79 70 74 6f M2Crypto/SSL/cb.py...../M2Crypto
1e80 2f 53 53 4c 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 94 8c 19 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 /SSL/__init__.py...../M2Crypto/S
1ea0 53 4c 2f 43 69 70 68 65 72 2e 70 79 94 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 43 SL/Cipher.py...../M2Crypto/SSL/C
1ec0 6f 6e 74 65 78 74 2e 70 79 94 8c 29 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 54 77 69 73 ontext.py..)../M2Crypto/SSL/Twis
1ee0 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 70 79 94 8c 1d 2e 2e 2f 4d 32 43 72 79 tedProtocolWrapper.py...../M2Cry
1f00 70 74 6f 2f 53 53 4c 2f 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 79 94 8c 1a 2e 2e 2f 4d 32 43 72 79 pto/SSL/Connection.py...../M2Cry
1f20 70 74 6f 2f 53 53 4c 2f 43 68 65 63 6b 65 72 2e 70 79 94 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f pto/SSL/Checker.py...../M2Crypto
1f40 2f 53 53 4c 2f 53 65 73 73 69 6f 6e 2e 70 79 94 90 6a 53 02 00 00 8f 94 28 8c 25 2f 75 73 72 2f /SSL/Session.py..jS.....(.%/usr/
1f60 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 78 6d 6c 72 70 63 2f 63 6c 69 65 6e 74 2e 70 79 lib64/python3.7/xmlrpc/client.py
1f80 94 8c 17 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 6d 32 63 72 79 70 74 6f 2e 70 79 94 8c 12 2e 2e 2f ...../M2Crypto/m2crypto.py...../
1fa0 4d 32 43 72 79 70 74 6f 2f 52 43 34 2e 70 79 94 8c 24 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 M2Crypto/RC4.py..$/usr/lib64/pyt
1fc0 68 6f 6e 33 2e 37 2f 75 72 6c 6c 69 62 2f 70 61 72 73 65 2e 70 79 94 8c 11 2e 2e 2f 4d 32 43 72 hon3.7/urllib/parse.py...../M2Cr
1fe0 79 70 74 6f 2f 45 43 2e 70 79 94 8c 13 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 75 74 69 6c 2e 70 79 ypto/EC.py...../M2Crypto/util.py
2000 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 45 72 72 2e 70 79 94 8c 13 2e 2e 2f 4d 32 43 72 79 ...../M2Crypto/Err.py...../M2Cry
2020 70 74 6f 2f 41 53 4e 31 2e 70 79 94 8c 18 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 6d 32 75 72 6c 6c pto/ASN1.py...../M2Crypto/m2urll
2040 69 62 32 2e 70 79 94 8c 19 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 41 75 74 68 43 6f 6f 6b 69 65 2e ib2.py...../M2Crypto/AuthCookie.
2060 70 79 94 8c 14 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 4d 49 4d 45 2e 70 79 94 8c 12 2e 2e 2f 4d py...../M2Crypto/SMIME.py...../M
2080 32 43 72 79 70 74 6f 2f 45 56 50 2e 70 79 94 8c 27 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 2Crypto/EVP.py..'/usr/lib64/pyth
20a0 6f 6e 33 2e 37 2f 75 72 6c 6c 69 62 2f 72 65 73 70 6f 6e 73 65 2e 70 79 94 8c 17 2e 2e 2f 4d 32 on3.7/urllib/response.py...../M2
20c0 43 72 79 70 74 6f 2f 6d 32 75 72 6c 6c 69 62 2e 70 79 94 8c 15 2e 2e 2f 4d 32 43 72 79 70 74 6f Crypto/m2urllib.py...../M2Crypto
20e0 2f 45 6e 67 69 6e 65 2e 70 79 94 8c 26 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e /Engine.py..&/usr/lib64/python3.
2100 37 2f 75 72 6c 6c 69 62 2f 72 65 71 75 65 73 74 2e 70 79 94 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 7/urllib/request.py...../M2Crypt
2120 6f 2f 6d 32 78 6d 6c 72 70 63 6c 69 62 2e 70 79 94 8c 13 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 58 o/m2xmlrpclib.py...../M2Crypto/X
2140 35 30 39 2e 70 79 94 8c 17 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 68 74 74 70 73 6c 69 62 2e 70 79 509.py...../M2Crypto/httpslib.py
2160 94 8c 20 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 64 61 74 65 74 69 6d 65 .../usr/lib64/python3.7/datetime
2180 2e 70 79 94 8c 29 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 64 69 73 74 75 .py..)/usr/lib64/python3.7/distu
21a0 74 69 6c 73 2f 76 65 72 73 69 6f 6e 2e 70 79 94 8c 17 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 63 61 tils/version.py...../M2Crypto/ca
21c0 6c 6c 62 61 63 6b 2e 70 79 94 8c 1e 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 llback.py.../usr/lib64/python3.7
21e0 2f 66 74 70 6c 69 62 2e 70 79 94 8c 11 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 6d 32 2e 70 79 94 8c /ftplib.py...../M2Crypto/m2.py..
2200 11 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 42 4e 2e 70 79 94 8c 11 2e 2e 2f 4d 32 43 72 79 70 74 6f .../M2Crypto/BN.py...../M2Crypto
2220 2f 44 48 2e 70 79 94 8c 1e 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 73 6f /DH.py.../usr/lib64/python3.7/so
2240 63 6b 65 74 2e 70 79 94 8c 16 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 66 74 70 73 6c 69 62 2e 70 79 cket.py...../M2Crypto/ftpslib.py
2260 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 44 53 41 2e 70 79 94 8c 24 2f 75 73 72 2f 6c 69 62 ...../M2Crypto/DSA.py..$/usr/lib
2280 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 68 74 74 70 2f 63 6f 6f 6b 69 65 73 2e 70 79 94 8c 1e 2f 64/python3.7/http/cookies.py.../
22a0 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 74 79 70 69 6e 67 2e 70 79 94 8c 12 usr/lib64/python3.7/typing.py...
22c0 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 42 49 4f 2e 70 79 94 8c 24 2f 75 73 72 2f 6c 69 62 36 34 2f ../M2Crypto/BIO.py..$/usr/lib64/
22e0 70 79 74 68 6f 6e 33 2e 37 2f 75 72 6c 6c 69 62 2f 65 72 72 6f 72 2e 70 79 94 8c 17 2e 2e 2f 4d python3.7/urllib/error.py...../M
2300 32 43 72 79 70 74 6f 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 2Crypto/__init__.py...../M2Crypt
2320 6f 2f 52 53 41 2e 70 79 94 8c 13 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 52 61 6e 64 2e 70 79 94 8c o/RSA.py...../M2Crypto/Rand.py..
2340 23 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 68 74 74 70 2f 63 6c 69 65 6e #/usr/lib64/python3.7/http/clien
2360 74 2e 70 79 94 8c 18 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 74 68 72 65 61 64 69 6e 67 2e 70 79 94 t.py...../M2Crypto/threading.py.
2380 8c 1f 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 37 2f 64 65 63 69 6d 61 6c 2e 70 ../usr/lib64/python3.7/decimal.p
23a0 79 94 90 75 8c 08 69 6e 63 6c 75 64 65 64 94 6a 5f 02 00 00 6a 62 02 00 00 85 94 52 94 8c 0d 72 y..u..included.j_...jb.....R...r
23c0 65 72 65 61 64 5f 61 6c 77 61 79 73 94 8f 94 8c 08 6d 65 74 61 64 61 74 61 94 6a 5f 02 00 00 6a eread_always.....metadata.j_...j
23e0 60 02 00 00 8c 04 64 69 63 74 94 93 94 85 94 52 94 28 6a 57 02 00 00 7d 94 8c 06 6f 72 70 68 61 `.....dict.....R.(jW...}...orpha
2400 6e 94 68 27 73 6a 58 02 00 00 7d 94 8c 06 6f 72 70 68 61 6e 94 68 27 73 6a 59 02 00 00 7d 94 8c n.h'sjX...}...orphan.h'sjY...}..
2420 06 6f 72 70 68 61 6e 94 68 27 73 6a 5a 02 00 00 7d 94 8c 06 6f 72 70 68 61 6e 94 68 27 73 6a 5b .orphan.h'sjZ...}...orphan.h'sj[
2440 02 00 00 7d 94 6a 5c 02 00 00 7d 94 6a 53 02 00 00 7d 94 75 8c 06 74 69 74 6c 65 73 94 7d 94 28 ...}.j\...}.jS...}.u..titles.}.(
2460 6a 57 02 00 00 8c 0e 64 6f 63 75 74 69 6c 73 2e 6e 6f 64 65 73 94 8c 05 74 69 74 6c 65 94 93 94 jW.....docutils.nodes...title...
2480 29 81 94 7d 94 28 8c 09 72 61 77 73 6f 75 72 63 65 94 68 27 8c 08 63 68 69 6c 64 72 65 6e 94 5d )..}.(..rawsource.h'..children.]
24a0 94 28 6a ba 02 00 00 8c 09 67 65 6e 65 72 61 74 65 64 94 93 94 29 81 94 7d 94 28 6a bf 02 00 00 .(j......generated...)..}.(j....
24c0 68 27 6a c0 02 00 00 5d 94 6a ba 02 00 00 8c 04 54 65 78 74 94 93 94 8c 08 31 2e c2 a0 c2 a0 c2 h'j....].j......Text.....1......
24e0 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 8c 06 70 61 72 65 6e 74 94 6a c4 02 00 00 75 62 ......}.(j....h'..parent.j....ub
2500 61 8c 0a 61 74 74 72 69 62 75 74 65 73 94 7d 94 28 8c 03 69 64 73 94 5d 94 8c 07 63 6c 61 73 73 a..attributes.}.(..ids.]...class
2520 65 73 94 5d 94 8c 07 73 65 63 74 6e 75 6d 94 61 8c 05 6e 61 6d 65 73 94 5d 94 8c 08 64 75 70 6e es.]...sectnum.a..names.]...dupn
2540 61 6d 65 73 94 5d 94 8c 08 62 61 63 6b 72 65 66 73 94 5d 94 75 8c 07 74 61 67 6e 61 6d 65 94 8c ames.]...backrefs.].u..tagname..
2560 09 67 65 6e 65 72 61 74 65 64 94 8c 06 73 6f 75 72 63 65 94 4e 8c 04 6c 69 6e 65 94 4e 6a cd 02 .generated...source.N..line.Nj..
2580 00 00 6a bd 02 00 00 75 62 6a c8 02 00 00 8c 10 5a 53 65 72 76 65 72 53 53 4c 2d 48 4f 57 54 4f ..j....ubj......ZServerSSL-HOWTO
25a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 10 5a 53 65 72 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 .....}.(j......ZServerSSL-HOWTO.
25c0 6a cd 02 00 00 6a bd 02 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 j....j....ubej....}.(j....].j...
25e0 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 8c 05 .].j....].j....].j....].uj......
2600 74 69 74 6c 65 94 75 62 6a 58 02 00 00 6a bc 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a title.ubjX...j....)..}.(j....h'j
2620 c0 02 00 00 5d 94 6a c8 02 00 00 8c 28 48 4f 57 54 4f 3a 20 43 72 65 61 74 69 6e 67 20 79 6f 75 ....].j.....(HOWTO:.Creating.you
2640 72 20 6f 77 6e 20 43 41 20 77 69 74 68 20 4f 70 65 6e 53 53 4c 94 85 94 81 94 7d 94 28 6a bf 02 r.own.CA.with.OpenSSL.....}.(j..
2660 00 00 8c 28 48 4f 57 54 4f 3a 20 43 72 65 61 74 69 6e 67 20 79 6f 75 72 20 6f 77 6e 20 43 41 20 ...(HOWTO:.Creating.your.own.CA.
2680 77 69 74 68 20 4f 70 65 6e 53 53 4c 94 6a cd 02 00 00 6a eb 02 00 00 75 62 61 6a ce 02 00 00 7d with.OpenSSL.j....j....ubaj....}
26a0 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
26c0 02 00 00 5d 94 75 6a db 02 00 00 6a ea 02 00 00 75 62 6a 59 02 00 00 6a bc 02 00 00 29 81 94 7d ...].uj....j....ubjY...j....)..}
26e0 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 31 48 4f 57 54 4f 3a 20 50 72 .(j....h'j....].j.....1HOWTO:.Pr
2700 6f 67 72 61 6d 6d 69 6e 67 20 53 2f 4d 49 4d 45 20 69 6e 20 50 79 74 68 6f 6e 20 77 69 74 68 20 ogramming.S/MIME.in.Python.with.
2720 4d 32 43 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 31 48 4f 57 54 4f 3a 20 50 72 M2Crypto.....}.(j.....1HOWTO:.Pr
2740 6f 67 72 61 6d 6d 69 6e 67 20 53 2f 4d 49 4d 45 20 69 6e 20 50 79 74 68 6f 6e 20 77 69 74 68 20 ogramming.S/MIME.in.Python.with.
2760 4d 32 43 72 79 70 74 6f 94 6a cd 02 00 00 6a f9 02 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 M2Crypto.j....j....ubaj....}.(j.
2780 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d ...].j....].j....].j....].j....]
27a0 94 75 6a db 02 00 00 6a ea 02 00 00 75 62 6a 5a 02 00 00 6a bc 02 00 00 29 81 94 7d 94 28 6a bf .uj....j....ubjZ...j....)..}.(j.
27c0 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 2e 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 ...h'j....].j......HOWTO:.Progra
27e0 6d 6d 69 6e 67 20 53 53 4c 20 69 6e 20 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 74 mming.SSL.in.Python.with.M2Crypt
2800 6f 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 2e 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 o.....}.(j......HOWTO:.Programmi
2820 6e 67 20 53 53 4c 20 69 6e 20 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 74 6f 94 6a ng.SSL.in.Python.with.M2Crypto.j
2840 cd 02 00 00 6a 07 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubaj....}.(j....].j....
2860 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a ea 02 ].j....].j....].j....].uj....j..
2880 00 00 75 62 6a 5b 02 00 00 6a bc 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 ..ubj[...j....)..}.(j....h'j....
28a0 5d 94 6a c8 02 00 00 8c 26 57 65 6c 63 6f 6d 65 20 74 6f 20 4d 32 43 72 79 70 74 6f e2 80 99 73 ].j.....&Welcome.to.M2Crypto...s
28c0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 21 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 24 57 65 .documentation!.....}.(j.....$We
28e0 6c 63 6f 6d 65 20 74 6f 20 4d 32 43 72 79 70 74 6f 27 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f lcome.to.M2Crypto's.documentatio
2900 6e 21 94 6a cd 02 00 00 6a 15 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a n!.j....j....ubaj....}.(j....].j
2920 d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 ....].j....].j....].j....].uj...
2940 00 6a ea 02 00 00 75 62 6a 5c 02 00 00 6a bc 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a .j....ubj\...j....)..}.(j....h'j
2960 c0 02 00 00 5d 94 6a c8 02 00 00 8c 0b 53 53 4c 20 50 61 63 6b 61 67 65 94 85 94 81 94 7d 94 28 ....].j......SSL.Package.....}.(
2980 6a bf 02 00 00 8c 0b 53 53 4c 20 50 61 63 6b 61 67 65 94 6a cd 02 00 00 6a 23 03 00 00 75 62 61 j......SSL.Package.j....j#...uba
29a0 6a ce 02 00 00 7d 94 28 8c 03 69 64 73 94 5d 94 8c 07 63 6c 61 73 73 65 73 94 5d 94 8c 05 6e 61 j....}.(..ids.]...classes.]...na
29c0 6d 65 73 94 5d 94 8c 08 64 75 70 6e 61 6d 65 73 94 5d 94 8c 08 62 61 63 6b 72 65 66 73 94 5d 94 mes.]...dupnames.]...backrefs.].
29e0 75 6a db 02 00 00 8c 05 74 69 74 6c 65 94 75 62 6a 53 02 00 00 6a bc 02 00 00 29 81 94 7d 94 28 uj......title.ubjS...j....)..}.(
2a00 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 10 4d 32 43 72 79 70 74 6f 20 50 61 j....h'j....].j......M2Crypto.Pa
2a20 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 10 4d 32 43 72 79 70 74 6f 20 50 61 63 ckage.....}.(j......M2Crypto.Pac
2a40 6b 61 67 65 94 6a cd 02 00 00 6a 37 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 8c 03 69 64 73 94 kage.j....j7...ubaj....}.(..ids.
2a60 5d 94 8c 07 63 6c 61 73 73 65 73 94 5d 94 8c 05 6e 61 6d 65 73 94 5d 94 8c 08 64 75 70 6e 61 6d ]...classes.]...names.]...dupnam
2a80 65 73 94 5d 94 8c 08 62 61 63 6b 72 65 66 73 94 5d 94 75 6a db 02 00 00 6a bb 02 00 00 75 62 75 es.]...backrefs.].uj....j....ubu
2aa0 8c 0a 6c 6f 6e 67 74 69 74 6c 65 73 94 7d 94 28 6a 57 02 00 00 6a bd 02 00 00 6a 58 02 00 00 6a ..longtitles.}.(jW...j....jX...j
2ac0 eb 02 00 00 6a 59 02 00 00 6a f9 02 00 00 6a 5a 02 00 00 6a 07 03 00 00 6a 5b 02 00 00 6a 15 03 ....jY...j....jZ...j....j[...j..
2ae0 00 00 6a 5c 02 00 00 6a 23 03 00 00 6a 53 02 00 00 6a 37 03 00 00 75 8c 04 74 6f 63 73 94 7d 94 ..j\...j#...jS...j7...u..tocs.}.
2b00 28 6a 57 02 00 00 6a ba 02 00 00 8c 0b 62 75 6c 6c 65 74 5f 6c 69 73 74 94 93 94 29 81 94 7d 94 (jW...j......bullet_list...)..}.
2b20 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ba 02 00 00 8c 09 6c 69 73 74 5f 69 74 65 6d 94 (j....h'j....].j......list_item.
2b40 93 94 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 8c 0f 73 70 68 69 6e 78 2e ..)..}.(j....h'j....].(..sphinx.
2b60 61 64 64 6e 6f 64 65 73 94 8c 11 63 6f 6d 70 61 63 74 5f 70 61 72 61 67 72 61 70 68 94 93 94 29 addnodes...compact_paragraph...)
2b80 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ba 02 00 00 8c 09 72 65 66 65 72 65 ..}.(j....h'j....].j......refere
2ba0 6e 63 65 94 93 94 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 nce...)..}.(j....h'j....].(j....
2bc0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 08 31 2e c2 a0 c2 )..}.(j....h'j....].j......1....
2be0 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 63 03 00 00 75 62 61 6a ........}.(j....h'j....jc...ubaj
2c00 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 ....}.(j....].j....].j....aj....
2c20 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 ].j....].j....].uj....j....j....
2c40 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a 60 03 00 00 75 62 6a c8 02 00 00 8c 10 5a 53 65 72 76 65 Nj....Nj....j`...ubj......ZServe
2c60 72 53 53 4c 2d 48 4f 57 54 4f 94 85 94 81 94 7d 94 28 6a bf 02 00 00 6a e3 02 00 00 6a cd 02 00 rSSL-HOWTO.....}.(j....j....j...
2c80 00 6a 60 03 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j`...ubej....}.(j....].j....].j
2ca0 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
2cc0 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a db ..refuri.jW.....anchorname.h'uj.
2ce0 02 00 00 8c 09 72 65 66 65 72 65 6e 63 65 94 6a cd 02 00 00 6a 5b 03 00 00 75 62 61 6a ce 02 00 .....reference.j....j[...ubaj...
2d00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 .}.(j....].j....].j....].j....].
2d20 6a d9 02 00 00 5d 94 75 6a db 02 00 00 8c 11 63 6f 6d 70 61 63 74 5f 70 61 72 61 67 72 61 70 68 j....].uj......compact_paragraph
2d40 94 6a cd 02 00 00 6a 55 03 00 00 75 62 6a 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a .j....jU...ubjO...)..}.(j....h'j
2d60 c0 02 00 00 5d 94 28 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 ....].(jT...)..}.(j....h'j....].
2d80 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 jZ...)..}.(j....h'j....].j_...).
2da0 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf .}.(j....h'j....].(j....)..}.(j.
2dc0 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 31 2e c2 a0 c2 a0 c2 a0 94 85 94 ...h'j....].j......1.1..........
2de0 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 91 03 00 00 75 62 61 6a ce 02 00 00 7d 94 ..}.(j....h'j....j....ubaj....}.
2e00 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 (j....].j....].j....aj....].j...
2e20 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 .].j....].uj....j....j....Nj....
2e40 4e 6a cd 02 00 00 6a 8e 03 00 00 75 62 6a c8 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e Nj....j....ubj......Introduction
2e60 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a cd 02 00 .....}.(j......Introduction.j...
2e80 00 6a 8e 03 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j....ubej....}.(j....].j....].j
2ea0 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
2ec0 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d 23 69 6e ..refuri.jW.....anchorname...#in
2ee0 74 72 6f 64 75 63 74 69 6f 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 8b 03 00 00 troduction.uj....j}...j....j....
2f00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
2f20 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 88 j....].j....].uj....j....j....j.
2f40 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 ...ubaj....}.(j....].j....].j...
2f60 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 8c 09 6c 69 73 74 5f 69 74 .].j....].j....].uj......list_it
2f80 65 6d 94 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 em.j....j....ubjT...)..}.(j....h
2fa0 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 'j....].jZ...)..}.(j....h'j....]
2fc0 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 .j_...)..}.(j....h'j....].(j....
2fe0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 32 2e c2 )..}.(j....h'j....].j......1.2..
3000 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a c3 03 00 00 75 62 ..........}.(j....h'j....j....ub
3020 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 aj....}.(j....].j....].j....aj..
3040 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 ..].j....].j....].uj....j....j..
3060 00 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a c0 03 00 00 75 62 6a c8 02 00 00 8c 0b 50 72 65 70 ..Nj....Nj....j....ubj......Prep
3080 61 72 61 74 69 6f 6e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0b 50 72 65 70 61 72 61 74 69 6f aration.....}.(j......Preparatio
30a0 6e 94 6a cd 02 00 00 6a c0 03 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 n.j....j....ubej....}.(j....].j.
30c0 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 ...].j....].j....].j....]...inte
30e0 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 rnal....refuri.jW.....anchorname
3100 94 8c 0c 23 70 72 65 70 61 72 61 74 69 6f 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 ...#preparation.uj....j}...j....
3120 6a bd 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 j....ubaj....}.(j....].j....].j.
3140 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd ...].j....].j....].uj....j....j.
3160 02 00 00 6a ba 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d ...j....ubaj....}.(j....].j....]
3180 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 .j....].j....].j....].uj....j...
31a0 00 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a .j....j....ubjT...)..}.(j....h'j
31c0 c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ....].jZ...)..}.(j....h'j....].j
31e0 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 _...)..}.(j....h'j....].(j....).
3200 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 33 2e c2 a0 c2 .}.(j....h'j....].j......1.3....
3220 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a f4 03 00 00 75 62 61 6a ........}.(j....h'j....j....ubaj
3240 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 ....}.(j....].j....].j....aj....
3260 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 ].j....].j....].uj....j....j....
3280 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a f1 03 00 00 75 62 6a c8 02 00 00 8c 0c 49 6e 73 74 61 6c Nj....Nj....j....ubj......Instal
32a0 6c 61 74 69 6f 6e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0c 49 6e 73 74 61 6c 6c 61 74 69 6f lation.....}.(j......Installatio
32c0 6e 94 6a cd 02 00 00 6a f1 03 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 n.j....j....ubej....}.(j....].j.
32e0 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 ...].j....].j....].j....]...inte
3300 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 rnal....refuri.jW.....anchorname
3320 94 8c 0d 23 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 ...#installation.uj....j}...j...
3340 00 6a ee 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
3360 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a ....].j....].j....].uj....j....j
3380 cd 02 00 00 6a eb 03 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubaj....}.(j....].j....
33a0 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 ].j....].j....].j....].uj....j..
33c0 00 00 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 ..j....j....ubjT...)..}.(j....h'
33e0 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 j....].jZ...)..}.(j....h'j....].
3400 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 j_...)..}.(j....h'j....].(j....)
3420 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 34 2e c2 a0 ..}.(j....h'j....].j......1.4...
3440 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 25 04 00 00 75 62 61 .........}.(j....h'j....j%...uba
3460 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 j....}.(j....].j....].j....aj...
3480 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 .].j....].j....].uj....j....j...
34a0 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a 22 04 00 00 75 62 6a c8 02 00 00 8c 07 54 65 73 74 69 .Nj....Nj....j"...ubj......Testi
34c0 6e 67 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 54 65 73 74 69 6e 67 94 6a cd 02 00 00 6a 22 ng.....}.(j......Testing.j....j"
34e0 04 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 ...ubej....}.(j....].j....].j...
3500 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 .].j....].j....]...internal....r
3520 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 74 65 73 74 69 efuri.jW.....anchorname...#testi
3540 6e 67 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 1f 04 00 00 75 62 61 6a ce 02 00 00 ng.uj....j}...j....j....ubaj....
3560 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
3580 d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 1c 04 00 00 75 62 61 6a ce ....].uj....j....j....j....ubaj.
35a0 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
35c0 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 00 00 75 62 ].j....].uj....j....j....j....ub
35e0 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 jT...)..}.(j....h'j....].jZ...).
3600 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].j_...)..}.(j..
3620 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ..h'j....].(j....)..}.(j....h'j.
3640 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 35 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf ...].j......1.5............}.(j.
3660 02 00 00 68 27 6a cd 02 00 00 6a 56 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d ...h'j....jV...ubaj....}.(j....]
3680 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 .j....].j....aj....].j....].j...
36a0 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a .].uj....j....j....Nj....Nj....j
36c0 53 04 00 00 75 62 6a c8 02 00 00 8c 05 48 54 54 50 53 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c S...ubj......HTTPS.....}.(j.....
36e0 05 48 54 54 50 53 94 6a cd 02 00 00 6a 53 04 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 .HTTPS.j....jS...ubej....}.(j...
3700 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
3720 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.jW.....ancho
3740 72 6e 61 6d 65 94 8c 06 23 68 74 74 70 73 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a rname...#https.uj....j}...j....j
3760 50 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 P...ubaj....}.(j....].j....].j..
3780 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 ..].j....].j....].uj....j....j..
37a0 00 00 6a 4d 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 ..jM...ubaj....}.(j....].j....].
37c0 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 j....].j....].j....].uj....j....
37e0 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 j....j....ubjT...)..}.(j....h'j.
3800 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f ...].jZ...)..}.(j....h'j....].j_
3820 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 ...)..}.(j....h'j....].(j....)..
3840 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 36 2e c2 a0 c2 a0 }.(j....h'j....].j......1.6.....
3860 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 87 04 00 00 75 62 61 6a ce .......}.(j....h'j....j....ubaj.
3880 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d ...}.(j....].j....].j....aj....]
38a0 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e .j....].j....].uj....j....j....N
38c0 6a de 02 00 00 4e 6a cd 02 00 00 6a 84 04 00 00 75 62 6a c8 02 00 00 8c 11 57 65 62 44 41 56 2d j....Nj....j....ubj......WebDAV-
38e0 6f 76 65 72 2d 48 54 54 50 53 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 11 57 65 62 44 41 56 2d over-HTTPS.....}.(j......WebDAV-
3900 6f 76 65 72 2d 48 54 54 50 53 94 6a cd 02 00 00 6a 84 04 00 00 75 62 65 6a ce 02 00 00 7d 94 28 over-HTTPS.j....j....ubej....}.(
3920 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
3940 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 .]...internal....refuri.jW.....a
3960 6e 63 68 6f 72 6e 61 6d 65 94 8c 12 23 77 65 62 64 61 76 2d 6f 76 65 72 2d 68 74 74 70 73 94 75 nchorname...#webdav-over-https.u
3980 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 81 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a j....j}...j....j....ubaj....}.(j
39a0 d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 ....].j....].j....].j....].j....
39c0 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 7e 04 00 00 75 62 61 6a ce 02 00 00 7d ].uj....j....j....j~...ubaj....}
39e0 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
3a00 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 ...].uj....j....j....j....ubjT..
3a20 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jZ...)..}.(
3a40 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 j....h'j....].j_...)..}.(j....h'
3a60 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d j....].(j....)..}.(j....h'j....]
3a80 94 6a c8 02 00 00 8c 0a 31 2e 37 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 .j......1.7............}.(j....h
3aa0 27 6a cd 02 00 00 6a b8 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 'j....j....ubaj....}.(j....].j..
3ac0 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 ..].j....aj....].j....].j....].u
3ae0 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a b5 04 00 00 j....j....j....Nj....Nj....j....
3b00 75 62 6a c8 02 00 00 8c 18 57 65 62 44 41 56 2d 53 6f 75 72 63 65 2d 6f 76 65 72 2d 48 54 54 50 ubj......WebDAV-Source-over-HTTP
3b20 53 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 18 57 65 62 44 41 56 2d 53 6f 75 72 63 65 2d 6f 76 S.....}.(j......WebDAV-Source-ov
3b40 65 72 2d 48 54 54 50 53 94 6a cd 02 00 00 6a b5 04 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 er-HTTPS.j....j....ubej....}.(j.
3b60 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d ...].j....].j....].j....].j....]
3b80 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 ...internal....refuri.jW.....anc
3ba0 68 6f 72 6e 61 6d 65 94 8c 19 23 77 65 62 64 61 76 2d 73 6f 75 72 63 65 2d 6f 76 65 72 2d 68 74 horname...#webdav-source-over-ht
3bc0 74 70 73 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a b2 04 00 00 75 62 61 6a ce 02 00 tps.uj....j}...j....j....ubaj...
3be0 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 .}.(j....].j....].j....].j....].
3c00 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a af 04 00 00 75 62 61 6a j....].uj....j....j....j....ubaj
3c20 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 ....}.(j....].j....].j....].j...
3c40 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 00 00 75 .].j....].uj....j....j....j....u
3c60 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 bjT...)..}.(j....h'j....].jZ...)
3c80 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].j_...)..}.(j.
3ca0 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a ...h'j....].(j....)..}.(j....h'j
3cc0 c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 31 2e 38 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a ....].j......1.8............}.(j
3ce0 bf 02 00 00 68 27 6a cd 02 00 00 6a e9 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 ....h'j....j....ubaj....}.(j....
3d00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 ].j....].j....aj....].j....].j..
3d20 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 ..].uj....j....j....Nj....Nj....
3d40 6a e6 04 00 00 75 62 6a c8 02 00 00 8c 14 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 j....ubj......Python.with.M2Cryp
3d60 74 6f 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 14 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 to.....}.(j......Python.with.M2C
3d80 72 79 70 74 6f 94 6a cd 02 00 00 6a e6 04 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 rypto.j....j....ubej....}.(j....
3da0 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 ].j....].j....].j....].j....]...
3dc0 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 internal....refuri.jW.....anchor
3de0 6e 61 6d 65 94 8c 15 23 70 79 74 68 6f 6e 2d 77 69 74 68 2d 6d 32 63 72 79 70 74 6f 94 75 6a db name...#python-with-m2crypto.uj.
3e00 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a e3 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 ...j}...j....j....ubaj....}.(j..
3e20 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 ..].j....].j....].j....].j....].
3e40 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a e0 04 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....j....j....j....ubaj....}.(
3e60 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
3e80 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 00 29 .].uj....j....j....j....ubjT...)
3ea0 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].jZ...)..}.(j.
3ec0 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].j_...)..}.(j....h'j.
3ee0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ...].(j....)..}.(j....h'j....].j
3f00 c8 02 00 00 8c 0a 31 2e 39 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a ......1.9............}.(j....h'j
3f20 cd 02 00 00 6a 1a 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubaj....}.(j....].j....
3f40 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db ].j....aj....].j....].j....].uj.
3f60 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a 17 05 00 00 75 62 ...j....j....Nj....Nj....j....ub
3f80 6a c8 02 00 00 8c 05 48 54 54 50 53 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 05 48 54 54 50 53 j......HTTPS.....}.(j......HTTPS
3fa0 94 6a cd 02 00 00 6a 17 05 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 .j....j....ubej....}.(j....].j..
3fc0 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 ..].j....].j....].j....]...inter
3fe0 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 nal....refuri.jW.....anchorname.
4000 8c 04 23 69 64 32 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 14 05 00 00 75 62 61 6a ..#id2.uj....j}...j....j....ubaj
4020 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 ....}.(j....].j....].j....].j...
4040 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 11 05 00 00 75 .].j....].uj....j....j....j....u
4060 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
4080 d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 ....].j....].uj....j....j....j..
40a0 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 ..ubjT...)..}.(j....h'j....].jZ.
40c0 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].j_...)..}.
40e0 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 (j....h'j....].(j....)..}.(j....
4100 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0b 31 2e 31 30 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 h'j....].j......1.10............
4120 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 4b 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a }.(j....h'j....jK...ubaj....}.(j
4140 d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d ....].j....].j....aj....].j....]
4160 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 4e 6a .j....].uj....j....j....Nj....Nj
4180 cd 02 00 00 6a 48 05 00 00 75 62 6a c8 02 00 00 8c 11 58 4d 4c 52 50 43 2d 6f 76 65 72 2d 48 54 ....jH...ubj......XMLRPC-over-HT
41a0 54 50 53 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 11 58 4d 4c 52 50 43 2d 6f 76 65 72 2d 48 54 TPS.....}.(j......XMLRPC-over-HT
41c0 54 50 53 94 6a cd 02 00 00 6a 48 05 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 TPS.j....jH...ubej....}.(j....].
41e0 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e j....].j....].j....].j....]...in
4200 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 ternal....refuri.jW.....anchorna
4220 6d 65 94 8c 12 23 78 6d 6c 72 70 63 2d 6f 76 65 72 2d 68 74 74 70 73 94 75 6a db 02 00 00 6a 7d me...#xmlrpc-over-https.uj....j}
4240 03 00 00 6a cd 02 00 00 6a 45 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a ...j....jE...ubaj....}.(j....].j
4260 d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 ....].j....].j....].j....].uj...
4280 00 6a 84 03 00 00 6a cd 02 00 00 6a 42 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 .j....j....jB...ubaj....}.(j....
42a0 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
42c0 db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 ....j....j....j....ubjT...)..}.(
42e0 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 j....h'j....].jZ...)..}.(j....h'
4300 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 j....].j_...)..}.(j....h'j....].
4320 28 6a c3 02 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c (j....)..}.(j....h'j....].j.....
4340 0b 31 2e 31 31 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 .1.11............}.(j....h'j....
4360 6a 7c 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d4 j|...ubaj....}.(j....].j....].j.
4380 02 00 00 61 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a ...aj....].j....].j....].uj....j
43a0 dc 02 00 00 6a dd 02 00 00 4e 6a de 02 00 00 4e 6a cd 02 00 00 6a 79 05 00 00 75 62 6a c8 02 00 ....j....Nj....Nj....jy...ubj...
43c0 00 8c 0a 43 6f 6e 63 6c 75 73 69 6f 6e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0a 43 6f 6e 63 ...Conclusion.....}.(j......Conc
43e0 6c 75 73 69 6f 6e 94 6a cd 02 00 00 6a 79 05 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 lusion.j....jy...ubej....}.(j...
4400 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
4420 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 57 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.jW.....ancho
4440 72 6e 61 6d 65 94 8c 0b 23 63 6f 6e 63 6c 75 73 69 6f 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a rname...#conclusion.uj....j}...j
4460 cd 02 00 00 6a 76 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....jv...ubaj....}.(j....].j....
4480 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 ].j....].j....].j....].uj....j..
44a0 00 00 6a cd 02 00 00 6a 73 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 ..j....js...ubaj....}.(j....].j.
44c0 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 ...].j....].j....].j....].uj....
44e0 6a b9 03 00 00 6a cd 02 00 00 6a 85 03 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d j....j....j....ubej....}.(j....]
4500 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db .j....].j....].j....].j....].uj.
4520 02 00 00 8c 0b 62 75 6c 6c 65 74 5f 6c 69 73 74 94 6a cd 02 00 00 6a 55 03 00 00 75 62 65 6a ce .....bullet_list.j....jU...ubej.
4540 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
4560 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 50 03 00 00 75 62 ].j....].uj....j....j....jP...ub
4580 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 aj....}.(j....].j....].j....].j.
45a0 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a aa 05 00 00 75 62 6a 58 02 00 00 6a 4f ...].j....].uj....j....ubjX...jO
45c0 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 54 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jT...)..}
45e0 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 .(j....h'j....].(jZ...)..}.(j...
4600 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 .h'j....].j_...)..}.(j....h'j...
4620 00 5d 94 6a c8 02 00 00 8c 28 48 4f 57 54 4f 3a 20 43 72 65 61 74 69 6e 67 20 79 6f 75 72 20 6f .].j.....(HOWTO:.Creating.your.o
4640 77 6e 20 43 41 20 77 69 74 68 20 4f 70 65 6e 53 53 4c 94 85 94 81 94 7d 94 28 6a bf 02 00 00 6a wn.CA.with.OpenSSL.....}.(j....j
4660 f2 02 00 00 6a cd 02 00 00 6a c0 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 ....j....j....ubaj....}.(j....].
4680 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e j....].j....].j....].j....]...in
46a0 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 58 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 ternal....refuri.jX.....anchorna
46c0 6d 65 94 68 27 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a bd 05 00 00 75 62 61 6a ce 02 me.h'uj....j}...j....j....ubaj..
46e0 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d ..}.(j....].j....].j....].j....]
4700 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a ba 05 00 00 75 62 6a .j....].uj....j....j....j....ubj
4720 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 54 03 00 00 29 81 O...)..}.(j....h'j....].(jT...).
4740 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].jZ...)..}.(j..
4760 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ..h'j....].j_...)..}.(j....h'j..
4780 00 00 5d 94 6a c8 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 85 94 81 94 7d 94 28 6a ..].j......Introduction.....}.(j
47a0 bf 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a cd 02 00 00 6a df 05 00 00 75 62 61 ......Introduction.j....j....uba
47c0 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
47e0 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 ..].j....]...internal....refuri.
4800 6a 58 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d 23 69 6e 74 72 6f 64 75 63 74 69 6f jX.....anchorname...#introductio
4820 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a dc 05 00 00 75 62 61 6a ce 02 00 00 7d n.uj....j}...j....j....ubaj....}
4840 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
4860 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a d9 05 00 00 75 62 61 6a ce 02 ...].uj....j....j....j....ubaj..
4880 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d ..}.(j....].j....].j....].j....]
48a0 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a d6 05 00 00 75 62 6a .j....].uj....j....j....j....ubj
48c0 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 T...)..}.(j....h'j....].jZ...)..
48e0 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 }.(j....h'j....].j_...)..}.(j...
4900 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0d 54 68 65 20 50 72 6f 63 65 64 75 72 65 94 85 .h'j....].j......The.Procedure..
4920 94 81 94 7d 94 28 6a bf 02 00 00 8c 0d 54 68 65 20 50 72 6f 63 65 64 75 72 65 94 6a cd 02 00 00 ...}.(j......The.Procedure.j....
4940 6a 03 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 j....ubaj....}.(j....].j....].j.
4960 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c ...].j....].j....]...internal...
4980 06 72 65 66 75 72 69 94 6a 58 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0e 23 74 68 65 .refuri.jX.....anchorname...#the
49a0 2d 70 72 6f 63 65 64 75 72 65 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 00 06 00 00 -procedure.uj....j}...j....j....
49c0 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
49e0 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a fd j....].j....].uj....j....j....j.
4a00 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 ...ubaj....}.(j....].j....].j...
4a20 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 .].j....].j....].uj....j....j...
4a40 00 6a d6 05 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d .j....ubjT...)..}.(j....h'j....]
4a60 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 .jZ...)..}.(j....h'j....].j_...)
4a80 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 43 6f 6e 63 6c 75 ..}.(j....h'j....].j......Conclu
4aa0 73 69 6f 6e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0a 43 6f 6e 63 6c 75 73 69 6f 6e 94 6a cd sion.....}.(j......Conclusion.j.
4ac0 02 00 00 6a 27 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d ...j'...ubaj....}.(j....].j....]
4ae0 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c .j....].j....].j....]...internal
4b00 94 88 8c 06 72 65 66 75 72 69 94 6a 58 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0b 23 ....refuri.jX.....anchorname...#
4b20 63 6f 6e 63 6c 75 73 69 6f 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 24 06 00 00 conclusion.uj....j}...j....j$...
4b40 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
4b60 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 21 j....].j....].uj....j....j....j!
4b80 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 ...ubaj....}.(j....].j....].j...
4ba0 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 .].j....].j....].uj....j....j...
4bc0 00 6a d6 05 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j....ubej....}.(j....].j....].j
4be0 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a aa 05 00 00 6a ....].j....].j....].uj....j....j
4c00 cd 02 00 00 6a ba 05 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubej....}.(j....].j....
4c20 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 ].j....].j....].j....].uj....j..
4c40 00 00 6a cd 02 00 00 6a b7 05 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 ..j....j....ubaj....}.(j....].j.
4c60 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 ...].j....].j....].j....].uj....
4c80 6a aa 05 00 00 75 62 6a 59 02 00 00 6a 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 j....ubjY...jO...)..}.(j....h'j.
4ca0 02 00 00 5d 94 28 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ...].(jT...)..}.(j....h'j....].j
4cc0 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 Z...)..}.(j....h'j....].j_...)..
4ce0 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 31 48 4f 57 54 4f 3a 20 50 }.(j....h'j....].j.....1HOWTO:.P
4d00 72 6f 67 72 61 6d 6d 69 6e 67 20 53 2f 4d 49 4d 45 20 69 6e 20 50 79 74 68 6f 6e 20 77 69 74 68 rogramming.S/MIME.in.Python.with
4d20 20 4d 32 43 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a bf 02 00 00 6a 00 03 00 00 6a cd 02 00 00 .M2Crypto.....}.(j....j....j....
4d40 6a 60 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 j`...ubaj....}.(j....].j....].j.
4d60 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c ...].j....].j....]...internal...
4d80 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a db 02 .refuri.jY.....anchorname.h'uj..
4da0 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 5d 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 ..j}...j....j]...ubaj....}.(j...
4dc0 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
4de0 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 5a 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a j....j....j....jZ...ubaj....}.(j
4e00 d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 ....].j....].j....].j....].j....
4e20 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 ].uj....j....j....jW...ubjT...).
4e40 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].jZ...)..}.(j..
4e60 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ..h'j....].j_...)..}.(j....h'j..
4e80 00 00 5d 94 6a c8 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 85 94 81 94 7d 94 28 6a ..].j......Introduction.....}.(j
4ea0 bf 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a cd 02 00 00 6a 82 06 00 00 75 62 61 ......Introduction.j....j....uba
4ec0 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
4ee0 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 ..].j....]...internal....refuri.
4f00 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d 23 69 6e 74 72 6f 64 75 63 74 69 6f jY.....anchorname...#introductio
4f20 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 7f 06 00 00 75 62 61 6a ce 02 00 00 7d n.uj....j}...j....j....ubaj....}
4f40 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
4f60 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 7c 06 00 00 75 62 61 6a ce 02 ...].uj....j....j....j|...ubaj..
4f80 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d ..}.(j....].j....].j....].j....]
4fa0 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a .j....].uj....j....j....jW...ubj
4fc0 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 T...)..}.(j....h'j....].jZ...)..
4fe0 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 }.(j....h'j....].j_...)..}.(j...
5000 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 06 53 2f 4d 49 4d 45 94 85 94 81 94 7d 94 28 6a .h'j....].j......S/MIME.....}.(j
5020 bf 02 00 00 8c 06 53 2f 4d 49 4d 45 94 6a cd 02 00 00 6a a6 06 00 00 75 62 61 6a ce 02 00 00 7d ......S/MIME.j....j....ubaj....}
5040 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
5060 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c ...]...internal....refuri.jY....
5080 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 07 23 73 2d 6d 69 6d 65 94 75 6a db 02 00 00 6a 7d 03 00 .anchorname...#s-mime.uj....j}..
50a0 00 6a cd 02 00 00 6a a3 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 .j....j....ubaj....}.(j....].j..
50c0 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a ..].j....].j....].j....].uj....j
50e0 84 03 00 00 6a cd 02 00 00 6a a0 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 ....j....j....ubaj....}.(j....].
5100 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 j....].j....].j....].j....].uj..
5120 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf ..j....j....jW...ubjT...)..}.(j.
5140 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].jZ...)..}.(j....h'j.
5160 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 ...].j_...)..}.(j....h'j....].j.
5180 02 00 00 8c 15 4b 65 79 73 20 61 6e 64 20 43 65 72 74 69 66 69 63 61 74 65 73 94 85 94 81 94 7d .....Keys.and.Certificates.....}
51a0 94 28 6a bf 02 00 00 8c 15 4b 65 79 73 20 61 6e 64 20 43 65 72 74 69 66 69 63 61 74 65 73 94 6a .(j......Keys.and.Certificates.j
51c0 cd 02 00 00 6a ca 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubaj....}.(j....].j....
51e0 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 ].j....].j....].j....]...interna
5200 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 16 l....refuri.jY.....anchorname...
5220 23 6b 65 79 73 2d 61 6e 64 2d 63 65 72 74 69 66 69 63 61 74 65 73 94 75 6a db 02 00 00 6a 7d 03 #keys-and-certificates.uj....j}.
5240 00 00 6a cd 02 00 00 6a c7 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 ..j....j....ubaj....}.(j....].j.
5260 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 ...].j....].j....].j....].uj....
5280 6a 84 03 00 00 6a cd 02 00 00 6a c4 06 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d j....j....j....ubaj....}.(j....]
52a0 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db .j....].j....].j....].j....].uj.
52c0 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a ...j....j....jW...ubjT...)..}.(j
52e0 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a ....h'j....].jZ...)..}.(j....h'j
5300 c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ....].j_...)..}.(j....h'j....].j
5320 c8 02 00 00 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 85 94 81 94 7d 94 28 6a bf 02 00 ......M2Crypto.SMIME.....}.(j...
5340 00 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 6a cd 02 00 00 6a ee 06 00 00 75 62 61 6a ...M2Crypto.SMIME.j....j....ubaj
5360 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 ....}.(j....].j....].j....].j...
5380 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a .].j....]...internal....refuri.j
53a0 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0f 23 6d 32 63 72 79 70 74 6f 2d 73 6d 69 Y.....anchorname...#m2crypto-smi
53c0 6d 65 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a eb 06 00 00 75 62 61 6a ce 02 00 00 me.uj....j}...j....j....ubaj....
53e0 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
5400 d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a e8 06 00 00 75 62 61 6a ce ....].uj....j....j....j....ubaj.
5420 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
5440 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 ].j....].uj....j....j....jW...ub
5460 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 jT...)..}.(j....h'j....].jZ...).
5480 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].j_...)..}.(j..
54a0 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 04 53 69 67 6e 94 85 94 81 94 7d 94 28 6a bf ..h'j....].j......Sign.....}.(j.
54c0 02 00 00 8c 04 53 69 67 6e 94 6a cd 02 00 00 6a 12 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a .....Sign.j....j....ubaj....}.(j
54e0 d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 ....].j....].j....].j....].j....
5500 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e ]...internal....refuri.jY.....an
5520 63 68 6f 72 6e 61 6d 65 94 8c 05 23 73 69 67 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 chorname...#sign.uj....j}...j...
5540 00 6a 0f 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
5560 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a ....].j....].j....].uj....j....j
5580 cd 02 00 00 6a 0c 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubaj....}.(j....].j....
55a0 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 ].j....].j....].j....].uj....j..
55c0 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 ..j....jW...ubjT...)..}.(j....h'
55e0 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 j....].jZ...)..}.(j....h'j....].
5600 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 06 j_...)..}.(j....h'j....].j......
5620 56 65 72 69 66 79 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 06 56 65 72 69 66 79 94 6a cd 02 00 Verify.....}.(j......Verify.j...
5640 00 6a 36 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j6...ubaj....}.(j....].j....].j
5660 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
5680 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 07 23 76 65 ..refuri.jY.....anchorname...#ve
56a0 72 69 66 79 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 33 07 00 00 75 62 61 6a ce 02 rify.uj....j}...j....j3...ubaj..
56c0 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d ..}.(j....].j....].j....].j....]
56e0 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 30 07 00 00 75 62 61 .j....].uj....j....j....j0...uba
5700 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
5720 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 ..].j....].uj....j....j....jW...
5740 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 ubjT...)..}.(j....h'j....].jZ...
5760 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].j_...)..}.(j
5780 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 07 45 6e 63 72 79 70 74 94 85 94 81 94 ....h'j....].j......Encrypt.....
57a0 7d 94 28 6a bf 02 00 00 8c 07 45 6e 63 72 79 70 74 94 6a cd 02 00 00 6a 5a 07 00 00 75 62 61 6a }.(j......Encrypt.j....jZ...ubaj
57c0 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 ....}.(j....].j....].j....].j...
57e0 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a .].j....]...internal....refuri.j
5800 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 65 6e 63 72 79 70 74 94 75 6a db 02 Y.....anchorname...#encrypt.uj..
5820 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 57 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 ..j}...j....jW...ubaj....}.(j...
5840 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
5860 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 54 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a j....j....j....jT...ubaj....}.(j
5880 d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 ....].j....].j....].j....].j....
58a0 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 ].uj....j....j....jW...ubjT...).
58c0 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].jZ...)..}.(j..
58e0 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ..h'j....].j_...)..}.(j....h'j..
5900 00 00 5d 94 6a c8 02 00 00 8c 07 44 65 63 72 79 70 74 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c ..].j......Decrypt.....}.(j.....
5920 07 44 65 63 72 79 70 74 94 6a cd 02 00 00 6a 7e 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 .Decrypt.j....j~...ubaj....}.(j.
5940 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d ...].j....].j....].j....].j....]
5960 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 ...internal....refuri.jY.....anc
5980 68 6f 72 6e 61 6d 65 94 8c 08 23 64 65 63 72 79 70 74 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd horname...#decrypt.uj....j}...j.
59a0 02 00 00 6a 7b 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d ...j{...ubaj....}.(j....].j....]
59c0 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 .j....].j....].j....].uj....j...
59e0 00 6a cd 02 00 00 6a 78 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 .j....jx...ubaj....}.(j....].j..
5a00 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a ..].j....].j....].j....].uj....j
5a20 b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 ....j....jW...ubjT...)..}.(j....
5a40 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 h'j....].jZ...)..}.(j....h'j....
5a60 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 ].j_...)..}.(j....h'j....].j....
5a80 8c 10 53 69 67 6e 20 61 6e 64 20 45 6e 63 72 79 70 74 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c ..Sign.and.Encrypt.....}.(j.....
5aa0 10 53 69 67 6e 20 61 6e 64 20 45 6e 63 72 79 70 74 94 6a cd 02 00 00 6a a2 07 00 00 75 62 61 6a .Sign.and.Encrypt.j....j....ubaj
5ac0 ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 ....}.(j....].j....].j....].j...
5ae0 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a .].j....]...internal....refuri.j
5b00 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 11 23 73 69 67 6e 2d 61 6e 64 2d 65 6e 63 Y.....anchorname...#sign-and-enc
5b20 72 79 70 74 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 9f 07 00 00 75 62 61 6a ce 02 rypt.uj....j}...j....j....ubaj..
5b40 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d ..}.(j....].j....].j....].j....]
5b60 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 9c 07 00 00 75 62 61 .j....].uj....j....j....j....uba
5b80 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
5ba0 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 ..].j....].uj....j....j....jW...
5bc0 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 ubjT...)..}.(j....h'j....].jZ...
5be0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].j_...)..}.(j
5c00 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 12 44 65 63 72 79 70 74 20 61 6e 64 20 ....h'j....].j......Decrypt.and.
5c20 56 65 72 69 66 79 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 12 44 65 63 72 79 70 74 20 61 6e 64 Verify.....}.(j......Decrypt.and
5c40 20 56 65 72 69 66 79 94 6a cd 02 00 00 6a c6 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 .Verify.j....j....ubaj....}.(j..
5c60 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 ..].j....].j....].j....].j....].
5c80 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 ..internal....refuri.jY.....anch
5ca0 6f 72 6e 61 6d 65 94 8c 13 23 64 65 63 72 79 70 74 2d 61 6e 64 2d 76 65 72 69 66 79 94 75 6a db orname...#decrypt-and-verify.uj.
5cc0 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a c3 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 ...j}...j....j....ubaj....}.(j..
5ce0 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 ..].j....].j....].j....].j....].
5d00 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a c0 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....j....j....j....ubaj....}.(
5d20 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
5d40 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 .].uj....j....j....jW...ubjT...)
5d60 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].jZ...)..}.(j.
5d80 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].j_...)..}.(j....h'j.
5da0 02 00 00 5d 94 6a c8 02 00 00 8c 20 53 65 6e 64 69 6e 67 20 53 2f 4d 49 4d 45 20 6d 65 73 73 61 ...].j......Sending.S/MIME.messa
5dc0 67 65 73 20 76 69 61 20 53 4d 54 50 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 20 53 65 6e 64 69 ges.via.SMTP.....}.(j......Sendi
5de0 6e 67 20 53 2f 4d 49 4d 45 20 6d 65 73 73 61 67 65 73 20 76 69 61 20 53 4d 54 50 94 6a cd 02 00 ng.S/MIME.messages.via.SMTP.j...
5e00 00 6a ea 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
5e20 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
5e40 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 21 23 73 65 ..refuri.jY.....anchorname..!#se
5e60 6e 64 69 6e 67 2d 73 2d 6d 69 6d 65 2d 6d 65 73 73 61 67 65 73 2d 76 69 61 2d 73 6d 74 70 94 75 nding-s-mime-messages-via-smtp.u
5e80 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a e7 07 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a j....j}...j....j....ubaj....}.(j
5ea0 d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 ....].j....].j....].j....].j....
5ec0 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a e4 07 00 00 75 62 61 6a ce 02 00 00 7d ].uj....j....j....j....ubaj....}
5ee0 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
5f00 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 ...].uj....j....j....jW...ubjT..
5f20 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jZ...)..}.(
5f40 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 j....h'j....].j_...)..}.(j....h'
5f60 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 23 56 65 72 69 66 79 69 6e 67 20 6f 72 69 67 69 6e 20 6f j....].j.....#Verifying.origin.o
5f80 66 20 53 2f 4d 49 4d 45 20 6d 65 73 73 61 67 65 73 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 23 f.S/MIME.messages.....}.(j.....#
5fa0 56 65 72 69 66 79 69 6e 67 20 6f 72 69 67 69 6e 20 6f 66 20 53 2f 4d 49 4d 45 20 6d 65 73 73 61 Verifying.origin.of.S/MIME.messa
5fc0 67 65 73 94 6a cd 02 00 00 6a 0e 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 ges.j....j....ubaj....}.(j....].
5fe0 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e j....].j....].j....].j....]...in
6000 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 ternal....refuri.jY.....anchorna
6020 6d 65 94 8c 24 23 76 65 72 69 66 79 69 6e 67 2d 6f 72 69 67 69 6e 2d 6f 66 2d 73 2d 6d 69 6d 65 me..$#verifying-origin-of-s-mime
6040 2d 6d 65 73 73 61 67 65 73 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 0b 08 00 00 75 -messages.uj....j}...j....j....u
6060 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
6080 d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 08 08 ....].j....].uj....j....j....j..
60a0 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 ..ubaj....}.(j....].j....].j....
60c0 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 ].j....].j....].uj....j....j....
60e0 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 jW...ubjT...)..}.(j....h'j....].
6100 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 jZ...)..}.(j....h'j....].j_...).
6120 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 26 49 6e 74 65 72 6f 70 .}.(j....h'j....].j.....&Interop
6140 65 72 61 74 69 6e 67 20 77 69 74 68 20 4e 65 74 73 63 61 70 65 20 4d 65 73 73 65 6e 67 65 72 94 erating.with.Netscape.Messenger.
6160 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 26 49 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 20 77 69 74 ....}.(j.....&Interoperating.wit
6180 68 20 4e 65 74 73 63 61 70 65 20 4d 65 73 73 65 6e 67 65 72 94 6a cd 02 00 00 6a 32 08 00 00 75 h.Netscape.Messenger.j....j2...u
61a0 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
61c0 d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 ....].j....]...internal....refur
61e0 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 27 23 69 6e 74 65 72 6f 70 65 72 i.jY.....anchorname..'#interoper
6200 61 74 69 6e 67 2d 77 69 74 68 2d 6e 65 74 73 63 61 70 65 2d 6d 65 73 73 65 6e 67 65 72 94 75 6a ating-with-netscape-messenger.uj
6220 db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 2f 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 ....j}...j....j/...ubaj....}.(j.
6240 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d ...].j....].j....].j....].j....]
6260 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 2c 08 00 00 75 62 61 6a ce 02 00 00 7d 94 .uj....j....j....j,...ubaj....}.
6280 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 (j....].j....].j....].j....].j..
62a0 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 ..].uj....j....j....jW...ubjT...
62c0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].jZ...)..}.(j
62e0 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a ....h'j....].j_...)..}.(j....h'j
6300 c0 02 00 00 5d 94 6a c8 02 00 00 8c 25 49 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 20 77 69 74 68 ....].j.....%Interoperating.with
6320 20 4d 69 63 72 6f 73 6f 66 74 20 4f 75 74 6c 6f 6f 6b 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c .Microsoft.Outlook.....}.(j.....
6340 25 49 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 20 77 69 74 68 20 4d 69 63 72 6f 73 6f 66 74 20 4f %Interoperating.with.Microsoft.O
6360 75 74 6c 6f 6f 6b 94 6a cd 02 00 00 6a 56 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 utlook.j....jV...ubaj....}.(j...
6380 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
63a0 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.jY.....ancho
63c0 72 6e 61 6d 65 94 8c 26 23 69 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 2d 77 69 74 68 2d 6d 69 63 rname..&#interoperating-with-mic
63e0 72 6f 73 6f 66 74 2d 6f 75 74 6c 6f 6f 6b 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a rosoft-outlook.uj....j}...j....j
6400 53 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 S...ubaj....}.(j....].j....].j..
6420 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 ..].j....].j....].uj....j....j..
6440 00 00 6a 50 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 ..jP...ubaj....}.(j....].j....].
6460 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 j....].j....].j....].uj....j....
6480 6a cd 02 00 00 6a 57 06 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 j....jW...ubjT...)..}.(j....h'j.
64a0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f ...].jZ...)..}.(j....h'j....].j_
64c0 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 06 5a 53 ...)..}.(j....h'j....].j......ZS
64e0 6d 69 6d 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 06 5a 53 6d 69 6d 65 94 6a cd 02 00 00 6a mime.....}.(j......ZSmime.j....j
6500 7a 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 z...ubaj....}.(j....].j....].j..
6520 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 ..].j....].j....]...internal....
6540 72 65 66 75 72 69 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 07 23 7a 73 6d 69 refuri.jY.....anchorname...#zsmi
6560 6d 65 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 77 08 00 00 75 62 61 6a ce 02 00 00 me.uj....j}...j....jw...ubaj....
6580 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
65a0 d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 74 08 00 00 75 62 61 6a ce ....].uj....j....j....jt...ubaj.
65c0 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
65e0 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 ].j....].uj....j....j....jW...ub
6600 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 jT...)..}.(j....h'j....].jZ...).
6620 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].j_...)..}.(j..
6640 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 09 52 65 73 6f 75 72 63 65 73 94 85 94 81 94 ..h'j....].j......Resources.....
6660 7d 94 28 6a bf 02 00 00 8c 09 52 65 73 6f 75 72 63 65 73 94 6a cd 02 00 00 6a 9e 08 00 00 75 62 }.(j......Resources.j....j....ub
6680 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 aj....}.(j....].j....].j....].j.
66a0 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 ...].j....]...internal....refuri
66c0 94 6a 59 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0a 23 72 65 73 6f 75 72 63 65 73 94 .jY.....anchorname...#resources.
66e0 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 9b 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....j}...j....j....ubaj....}.(
6700 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
6720 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 98 08 00 00 75 62 61 6a ce 02 00 00 .].uj....j....j....j....ubaj....
6740 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
6760 d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a 57 06 00 00 75 62 65 6a ce ....].uj....j....j....jW...ubej.
6780 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
67a0 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a aa 05 00 00 75 62 6a 5a 02 00 00 6a 4f 03 00 00 ].j....].uj....j....ubjZ...jO...
67c0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 54 03 00 00 29 81 94 7d 94 28 )..}.(j....h'j....].(jT...)..}.(
67e0 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 j....h'j....].jZ...)..}.(j....h'
6800 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 j....].j_...)..}.(j....h'j....].
6820 6a c8 02 00 00 8c 2e 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 53 4c 20 69 6e j......HOWTO:.Programming.SSL.in
6840 20 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a bf 02 .Python.with.M2Crypto.....}.(j..
6860 00 00 6a 0e 03 00 00 6a cd 02 00 00 6a cb 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 ..j....j....j....ubaj....}.(j...
6880 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
68a0 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5a 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.jZ.....ancho
68c0 72 6e 61 6d 65 94 68 27 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a c8 08 00 00 75 62 61 rname.h'uj....j}...j....j....uba
68e0 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
6900 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a c5 08 00 00 ..].j....].uj....j....j....j....
6920 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
6940 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a c2 j....].j....].uj....j....j....j.
6960 08 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a ...ubjT...)..}.(j....h'j....].jZ
6980 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d ...)..}.(j....h'j....].j_...)..}
69a0 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 .(j....h'j....].j......Introduct
69c0 69 6f 6e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a ion.....}.(j......Introduction.j
69e0 cd 02 00 00 6a ed 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 ....j....ubaj....}.(j....].j....
6a00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 ].j....].j....].j....]...interna
6a20 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5a 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d l....refuri.jZ.....anchorname...
6a40 23 69 6e 74 72 6f 64 75 63 74 69 6f 6e 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a ea #introduction.uj....j}...j....j.
6a60 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 ...ubaj....}.(j....].j....].j...
6a80 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 .].j....].j....].uj....j....j...
6aa0 00 6a e7 08 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
6ac0 d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a ....].j....].j....].uj....j....j
6ae0 cd 02 00 00 6a c2 08 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ....j....ubjT...)..}.(j....h'j..
6b00 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 ..].jZ...)..}.(j....h'j....].j_.
6b20 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 10 41 20 62 ..)..}.(j....h'j....].j......A.b
6b40 69 74 20 6f 66 20 68 69 73 74 6f 72 79 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 10 41 20 62 69 it.of.history.....}.(j......A.bi
6b60 74 20 6f 66 20 68 69 73 74 6f 72 79 94 6a cd 02 00 00 6a 11 09 00 00 75 62 61 6a ce 02 00 00 7d t.of.history.j....j....ubaj....}
6b80 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 .(j....].j....].j....].j....].j.
6ba0 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5a 02 00 00 8c ...]...internal....refuri.jZ....
6bc0 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 11 23 61 2d 62 69 74 2d 6f 66 2d 68 69 73 74 6f 72 79 94 .anchorname...#a-bit-of-history.
6be0 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 0e 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....j}...j....j....ubaj....}.(
6c00 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
6c20 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 0b 09 00 00 75 62 61 6a ce 02 00 00 .].uj....j....j....j....ubaj....
6c40 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
6c60 d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a c2 08 00 00 75 62 6a 54 03 ....].uj....j....j....j....ubjT.
6c80 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].jZ...)..}.
6ca0 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 (j....h'j....].j_...)..}.(j....h
6cc0 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 53 65 63 75 72 65 20 53 53 4c 94 85 94 81 94 7d 94 'j....].j......Secure.SSL.....}.
6ce0 28 6a bf 02 00 00 8c 0a 53 65 63 75 72 65 20 53 53 4c 94 6a cd 02 00 00 6a 35 09 00 00 75 62 61 (j......Secure.SSL.j....j5...uba
6d00 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
6d20 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 ..].j....]...internal....refuri.
6d40 6a 5a 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0b 23 73 65 63 75 72 65 2d 73 73 6c 94 jZ.....anchorname...#secure-ssl.
6d60 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 32 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....j}...j....j2...ubaj....}.(
6d80 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
6da0 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 2f 09 00 00 75 62 61 6a ce 02 00 00 .].uj....j....j....j/...ubaj....
6dc0 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
6de0 d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a c2 08 00 00 75 62 6a 54 03 ....].uj....j....j....j....ubjT.
6e00 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].jZ...)..}.
6e20 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 (j....h'j....].j_...)..}.(j....h
6e40 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0c 43 6f 64 65 20 53 61 6d 70 6c 65 73 94 85 94 81 94 'j....].j......Code.Samples.....
6e60 7d 94 28 6a bf 02 00 00 8c 0c 43 6f 64 65 20 53 61 6d 70 6c 65 73 94 6a cd 02 00 00 6a 59 09 00 }.(j......Code.Samples.j....jY..
6e80 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d .ubaj....}.(j....].j....].j....]
6ea0 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 .j....].j....]...internal....ref
6ec0 75 72 69 94 6a 5a 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d 23 63 6f 64 65 2d 73 61 uri.jZ.....anchorname...#code-sa
6ee0 6d 70 6c 65 73 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 56 09 00 00 75 62 61 6a ce mples.uj....j}...j....jV...ubaj.
6f00 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
6f20 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 53 09 00 00 75 62 ].j....].uj....j....j....jS...ub
6f40 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 aj....}.(j....].j....].j....].j.
6f60 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a c2 08 00 ...].j....].uj....j....j....j...
6f80 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 .ubjT...)..}.(j....h'j....].jZ..
6fa0 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].j_...)..}.(
6fc0 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 07 73 73 6c 64 75 6d 70 94 85 94 81 j....h'j....].j......ssldump....
6fe0 94 7d 94 28 6a bf 02 00 00 8c 07 73 73 6c 64 75 6d 70 94 6a cd 02 00 00 6a 7d 09 00 00 75 62 61 .}.(j......ssldump.j....j}...uba
7000 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 j....}.(j....].j....].j....].j..
7020 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 ..].j....]...internal....refuri.
7040 6a 5a 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 73 73 6c 64 75 6d 70 94 75 6a db jZ.....anchorname...#ssldump.uj.
7060 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a 7a 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 ...j}...j....jz...ubaj....}.(j..
7080 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 ..].j....].j....].j....].j....].
70a0 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a 77 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....j....j....jw...ubaj....}.(
70c0 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 j....].j....].j....].j....].j...
70e0 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a c2 08 00 00 75 62 65 6a ce 02 00 00 .].uj....j....j....j....ubej....
7100 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
7120 d9 02 00 00 5d 94 75 6a db 02 00 00 6a aa 05 00 00 75 62 6a 5b 02 00 00 6a 4f 03 00 00 29 81 94 ....].uj....j....ubj[...jO...)..
7140 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 }.(j....h'j....].(jT...)..}.(j..
7160 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ..h'j....].(jZ...)..}.(j....h'j.
7180 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 ...].j_...)..}.(j....h'j....].j.
71a0 02 00 00 8c 26 57 65 6c 63 6f 6d 65 20 74 6f 20 4d 32 43 72 79 70 74 6f e2 80 99 73 20 64 6f 63 ....&Welcome.to.M2Crypto...s.doc
71c0 75 6d 65 6e 74 61 74 69 6f 6e 21 94 85 94 81 94 7d 94 28 6a bf 02 00 00 6a 1c 03 00 00 6a cd 02 umentation!.....}.(j....j....j..
71e0 00 00 6a aa 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
7200 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
7220 88 8c 06 72 65 66 75 72 69 94 6a 5b 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a ...refuri.j[.....anchorname.h'uj
7240 db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a a7 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 ....j}...j....j....ubaj....}.(j.
7260 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d ...].j....].j....].j....].j....]
7280 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 00 00 6a a4 09 00 00 75 62 6a 4f 03 00 00 29 81 94 .uj....j....j....j....ubjO...)..
72a0 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 58 03 00 00 8c 07 74 6f 63 74 72 65 65 94 }.(j....h'j....].jX.....toctree.
72c0 93 94 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ce 02 00 00 7d 94 28 6a d0 ..)..}.(j....h'j....].j....}.(j.
72e0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d ...].j....].j....].j....].j....]
7300 94 8c 06 70 61 72 65 6e 74 94 6a 5b 02 00 00 8c 07 65 6e 74 72 69 65 73 94 5d 94 4e 8c 08 4d 32 ...parent.j[.....entries.].N..M2
7320 43 72 79 70 74 6f 94 86 94 61 8c 0c 69 6e 63 6c 75 64 65 66 69 6c 65 73 94 5d 94 6a d1 09 00 00 Crypto...a..includefiles.].j....
7340 61 8c 08 6d 61 78 64 65 70 74 68 94 4b 04 8c 07 63 61 70 74 69 6f 6e 94 4e 8c 04 67 6c 6f 62 94 a..maxdepth.K...caption.N..glob.
7360 89 8c 06 68 69 64 64 65 6e 94 89 8c 0d 69 6e 63 6c 75 64 65 68 69 64 64 65 6e 94 89 8c 08 6e 75 ...hidden....includehidden....nu
7380 6d 62 65 72 65 64 94 4b 00 8c 0a 74 69 74 6c 65 73 6f 6e 6c 79 94 89 75 6a db 02 00 00 8c 07 74 mbered.K...titlesonly..uj......t
73a0 6f 63 74 72 65 65 94 6a dd 02 00 00 8c 38 2f 68 6f 6d 65 2f 6d 61 74 65 6a 2f 61 72 63 68 69 76 octree.j.....8/home/matej/archiv
73c0 2f 6b 6e 69 68 6f 76 6e 61 2f 72 65 70 6f 73 2f 6d 32 63 72 79 70 74 6f 2f 64 6f 63 2f 69 6e 64 /knihovna/repos/m2crypto/doc/ind
73e0 65 78 2e 72 73 74 94 6a de 02 00 00 4b 06 6a cd 02 00 00 6a c0 09 00 00 75 62 61 6a ce 02 00 00 ex.rst.j....K.j....j....ubaj....
7400 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
7420 d9 02 00 00 5d 94 75 6a db 02 00 00 6a aa 05 00 00 6a cd 02 00 00 6a a4 09 00 00 75 62 65 6a ce ....].uj....j....j....j....ubej.
7440 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 ...}.(j....].j....].j....].j....
7460 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a a1 09 00 00 75 62 ].j....].uj....j....j....j....ub
7480 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 jT...)..}.(j....h'j....].jZ...).
74a0 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].j_...)..}.(j..
74c0 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 06 48 4f 57 54 4f 73 94 85 94 81 94 7d 94 28 ..h'j....].j......HOWTOs.....}.(
74e0 6a bf 02 00 00 8c 06 48 4f 57 54 4f 73 94 6a cd 02 00 00 6a f0 09 00 00 75 62 61 6a ce 02 00 00 j......HOWTOs.j....j....ubaj....
7500 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
7520 d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5b 02 00 00 ....]...internal....refuri.j[...
7540 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 07 23 68 6f 77 74 6f 73 94 75 6a db 02 00 00 6a 7d 03 ..anchorname...#howtos.uj....j}.
7560 00 00 6a cd 02 00 00 6a ed 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 ..j....j....ubaj....}.(j....].j.
7580 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 ...].j....].j....].j....].uj....
75a0 6a 84 03 00 00 6a cd 02 00 00 6a ea 09 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d j....j....j....ubaj....}.(j....]
75c0 94 6a d2 02 00 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db .j....].j....].j....].j....].uj.
75e0 02 00 00 6a b9 03 00 00 6a cd 02 00 00 6a a1 09 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a ...j....j....j....ubjT...)..}.(j
7600 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a ....h'j....].jZ...)..}.(j....h'j
7620 c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ....].j_...)..}.(j....h'j....].j
7640 c8 02 00 00 8c 12 49 6e 64 69 63 65 73 20 61 6e 64 20 74 61 62 6c 65 73 94 85 94 81 94 7d 94 28 ......Indices.and.tables.....}.(
7660 6a bf 02 00 00 8c 12 49 6e 64 69 63 65 73 20 61 6e 64 20 74 61 62 6c 65 73 94 6a cd 02 00 00 6a j......Indices.and.tables.j....j
7680 14 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 ....ubaj....}.(j....].j....].j..
76a0 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 ..].j....].j....]...internal....
76c0 72 65 66 75 72 69 94 6a 5b 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 13 23 69 6e 64 69 refuri.j[.....anchorname...#indi
76e0 63 65 73 2d 61 6e 64 2d 74 61 62 6c 65 73 94 75 6a db 02 00 00 6a 7d 03 00 00 6a cd 02 00 00 6a ces-and-tables.uj....j}...j....j
7700 11 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 6a d5 02 ....ubaj....}.(j....].j....].j..
7720 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a 84 03 00 00 6a cd 02 ..].j....].j....].uj....j....j..
7740 00 00 6a 0e 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
7760 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a b9 03 00 00 j....].j....].j....].uj....j....
7780 6a cd 02 00 00 6a a1 09 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a d0 02 00 00 5d 94 6a d2 02 00 j....j....ubej....}.(j....].j...
77a0 00 5d 94 6a d5 02 00 00 5d 94 6a d7 02 00 00 5d 94 6a d9 02 00 00 5d 94 75 6a db 02 00 00 6a aa .].j....].j....].j....].uj....j.
77c0 05 00 00 75 62 6a 5c 02 00 00 6a 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 ...ubj\...jO...)..}.(j....h'j...
77e0 00 5d 94 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 5a 03 .].jT...)..}.(j....h'j....].(jZ.
7800 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].j_...)..}.
7820 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0b 53 53 4c 20 50 61 63 6b 61 67 (j....h'j....].j......SSL.Packag
7840 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 6a 2a 03 00 00 6a cd 02 00 00 6a 41 0a 00 00 75 62 61 e.....}.(j....j*...j....jA...uba
7860 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 j....}.(j,...].j....].j0...].j2.
7880 00 00 5d 94 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 ..].j4...]...internal....refuri.
78a0 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a db 02 00 00 8c 09 72 65 66 65 j\.....anchorname.h'uj......refe
78c0 72 65 6e 63 65 94 6a cd 02 00 00 6a 3e 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 rence.j....j>...ubaj....}.(j,...
78e0 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a ].j....].j0...].j2...].j4...].uj
7900 db 02 00 00 8c 11 63 6f 6d 70 61 63 74 5f 70 61 72 61 67 72 61 70 68 94 6a cd 02 00 00 6a 3b 0a ......compact_paragraph.j....j;.
7920 00 00 75 62 6a 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 54 ..ubjO...)..}.(j....h'j....].(jT
7940 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jZ...)..}
7960 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 .(j....h'j....].j_...)..}.(j....
7980 68 27 6a c0 02 00 00 5d 94 28 6a ba 02 00 00 8c 07 6c 69 74 65 72 61 6c 94 93 94 29 81 94 7d 94 h'j....].(j......literal...)..}.
79a0 28 6a bf 02 00 00 8c 03 53 53 4c 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 03 53 53 4c 94 85 94 (j......SSL.j....].j......SSL...
79c0 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 67 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 ..}.(j....h'j....jg...ubaj....}.
79e0 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 (j,...].j....].j0...].j2...].j4.
7a00 00 00 5d 94 75 6a db 02 00 00 8c 07 6c 69 74 65 72 61 6c 94 6a cd 02 00 00 6a 62 0a 00 00 75 62 ..].uj......literal.j....jb...ub
7a20 6a c8 02 00 00 8c 08 20 50 61 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 08 20 50 j.......Package.....}.(j.......P
7a40 61 63 6b 61 67 65 94 6a cd 02 00 00 6a 62 0a 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 ackage.j....jb...ubej....}.(j,..
7a60 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 8c .].j....].j0...].j2...].j4...]..
7a80 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.j\.....ancho
7aa0 72 6e 61 6d 65 94 8c 04 23 69 64 31 94 75 6a db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a 5f 0a rname...#id1.uj....jQ...j....j_.
7ac0 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 ..ubaj....}.(j,...].j....].j0...
7ae0 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 ].j2...].j4...].uj....jX...j....
7b00 6a 5c 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 j\...ubaj....}.(j,...].j....].j0
7b20 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 8c 09 6c 69 73 74 5f ...].j2...].j4...].uj......list_
7b40 69 74 65 6d 94 6a cd 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 item.j....jY...ubjT...)..}.(j...
7b60 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 .h'j....].jZ...)..}.(j....h'j...
7b80 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a .].j_...)..}.(j....h'j....].(jf.
7ba0 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 07 43 68 65 63 6b 65 72 94 6a c0 02 00 00 5d 94 6a c8 ..)..}.(j......Checker.j....].j.
7bc0 02 00 00 8c 07 43 68 65 63 6b 65 72 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 .....Checker.....}.(j....h'j....
7be0 6a 9b 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 j....ubaj....}.(j,...].j....].j0
7c00 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd ...].j2...].j4...].uj....ju...j.
7c20 02 00 00 6a 98 0a 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 ...j....ubj.......Module.....}.(
7c40 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 98 0a 00 00 75 62 65 6a ce 02 00 j.......Module.j....j....ubej...
7c60 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 .}.(j,...].j....].j0...].j2...].
7c80 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 j4...]...internal....refuri.j\..
7ca0 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1c 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f ...anchorname...#module-M2Crypto
7cc0 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 75 6a db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a 95 0a .SSL.Checker.uj....jQ...j....j..
7ce0 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 ..ubaj....}.(j,...].j....].j0...
7d00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 ].j2...].j4...].uj....jX...j....
7d20 6a 92 0a 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 j....ubaj....}.(j,...].j....].j0
7d40 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd ...].j2...].j4...].uj....j....j.
7d60 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 ...jY...ubjT...)..}.(j....h'j...
7d80 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 .].jZ...)..}.(j....h'j....].j_..
7da0 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 .)..}.(j....h'j....].(jf...)..}.
7dc0 28 6a bf 02 00 00 8c 06 43 69 70 68 65 72 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 06 43 69 70 (j......Cipher.j....].j......Cip
7de0 68 65 72 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a cd 0a 00 00 75 62 61 6a her.....}.(j....h'j....j....ubaj
7e00 ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 ....}.(j,...].j....].j0...].j2..
7e20 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd 02 00 00 6a ca 0a 00 00 75 .].j4...].uj....ju...j....j....u
7e40 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d bj.......Module.....}.(j.......M
7e60 6f 64 75 6c 65 94 6a cd 02 00 00 6a ca 0a 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 odule.j....j....ubej....}.(j,...
7e80 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 8c 08 ].j....].j0...].j2...].j4...]...
7ea0 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 internal....refuri.j\.....anchor
7ec0 6e 61 6d 65 94 8c 1b 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 name...#module-M2Crypto.SSL.Ciph
7ee0 65 72 94 75 6a db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a c7 0a 00 00 75 62 61 6a ce 02 00 00 er.uj....jQ...j....j....ubaj....
7f00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a }.(j,...].j....].j0...].j2...].j
7f20 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 6a c4 0a 00 00 75 62 61 6a ce 4...].uj....jX...j....j....ubaj.
7f40 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 ...}.(j,...].j....].j0...].j2...
7f60 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 75 62 ].j4...].uj....j....j....jY...ub
7f80 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 jT...)..}.(j....h'j....].jZ...).
7fa0 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].j_...)..}.(j..
7fc0 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 0a 43 6f ..h'j....].(jf...)..}.(j......Co
7fe0 6e 6e 65 63 74 69 6f 6e 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0a 43 6f 6e 6e 65 63 74 69 6f nnection.j....].j......Connectio
8000 6e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a ff 0a 00 00 75 62 61 6a ce 02 n.....}.(j....h'j....j....ubaj..
8020 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d ..}.(j,...].j....].j0...].j2...]
8040 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd 02 00 00 6a fc 0a 00 00 75 62 6a .j4...].uj....ju...j....j....ubj
8060 c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 .......Module.....}.(j.......Mod
8080 75 6c 65 94 6a cd 02 00 00 6a fc 0a 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 ule.j....j....ubej....}.(j,...].
80a0 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 8c 08 69 6e j....].j0...].j2...].j4...]...in
80c0 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 ternal....refuri.j\.....anchorna
80e0 6d 65 94 8c 1f 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 me...#module-M2Crypto.SSL.Connec
8100 74 69 6f 6e 94 75 6a db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a f9 0a 00 00 75 62 61 6a ce 02 tion.uj....jQ...j....j....ubaj..
8120 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d ..}.(j,...].j....].j0...].j2...]
8140 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 6a f6 0a 00 00 75 62 61 .j4...].uj....jX...j....j....uba
8160 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 j....}.(j,...].j....].j0...].j2.
8180 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 ..].j4...].uj....j....j....jY...
81a0 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 ubjT...)..}.(j....h'j....].jZ...
81c0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].j_...)..}.(j
81e0 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 07 ....h'j....].(jf...)..}.(j......
8200 43 6f 6e 74 65 78 74 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 07 43 6f 6e 74 65 78 74 94 85 94 Context.j....].j......Context...
8220 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 31 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 ..}.(j....h'j....j1...ubaj....}.
8240 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 (j,...].j....].j0...].j2...].j4.
8260 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd 02 00 00 6a 2e 0b 00 00 75 62 6a c8 02 00 00 ..].uj....ju...j....j....ubj....
8280 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 ...Module.....}.(j.......Module.
82a0 6a cd 02 00 00 6a 2e 0b 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 j....j....ubej....}.(j,...].j...
82c0 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e .].j0...].j2...].j4...]...intern
82e0 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c al....refuri.j\.....anchorname..
8300 1c 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 75 6a .#module-M2Crypto.SSL.Context.uj
8320 db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a 2b 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c ....jQ...j....j+...ubaj....}.(j,
8340 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d ...].j....].j0...].j2...].j4...]
8360 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 6a 28 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 .uj....jX...j....j(...ubaj....}.
8380 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 (j,...].j....].j0...].j2...].j4.
83a0 00 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 ..].uj....j....j....jY...ubjT...
83c0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].jZ...)..}.(j
83e0 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a ....h'j....].j_...)..}.(j....h'j
8400 c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 09 53 53 4c 53 65 72 76 ....].(jf...)..}.(j......SSLServ
8420 65 72 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 09 53 53 4c 53 65 72 76 65 72 94 85 94 81 94 7d er.j....].j......SSLServer.....}
8440 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 63 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c .(j....h'j....jc...ubaj....}.(j,
8460 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d ...].j....].j0...].j2...].j4...]
8480 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd 02 00 00 6a 60 0b 00 00 75 62 6a c8 02 00 00 8c 07 20 .uj....ju...j....j`...ubj.......
84a0 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 Module.....}.(j.......Module.j..
84c0 00 00 6a 60 0b 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 ..j`...ubej....}.(j,...].j....].
84e0 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j0...].j2...].j4...]...internal.
8500 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1e 23 6d ...refuri.j\.....anchorname...#m
8520 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 94 75 6a db odule-M2Crypto.SSL.SSLServer.uj.
8540 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a 5d 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 ...jQ...j....j]...ubaj....}.(j,.
8560 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 ..].j....].j0...].j2...].j4...].
8580 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 6a 5a 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....jX...j....jZ...ubaj....}.(
85a0 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 j,...].j....].j0...].j2...].j4..
85c0 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 29 .].uj....j....j....jY...ubjT...)
85e0 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].jZ...)..}.(j.
8600 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].j_...)..}.(j....h'j.
8620 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 07 53 65 73 73 69 6f 6e 94 ...].(jf...)..}.(j......Session.
8640 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 07 53 65 73 73 69 6f 6e 94 85 94 81 94 7d 94 28 6a bf 02 j....].j......Session.....}.(j..
8660 00 00 68 27 6a cd 02 00 00 6a 95 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 ..h'j....j....ubaj....}.(j,...].
8680 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 j....].j0...].j2...].j4...].uj..
86a0 00 00 6a 75 0a 00 00 6a cd 02 00 00 6a 92 0b 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c ..ju...j....j....ubj.......Modul
86c0 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 92 0b e.....}.(j.......Module.j....j..
86e0 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 ..ubej....}.(j,...].j....].j0...
8700 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 ].j2...].j4...]...internal....re
8720 66 75 72 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1c 23 6d 6f 64 75 6c 65 furi.j\.....anchorname...#module
8740 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 75 6a db 02 00 00 6a 51 0a 00 -M2Crypto.SSL.Session.uj....jQ..
8760 00 6a cd 02 00 00 6a 8f 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 .j....j....ubaj....}.(j,...].j..
8780 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a ..].j0...].j2...].j4...].uj....j
87a0 58 0a 00 00 6a cd 02 00 00 6a 8c 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 X...j....j....ubaj....}.(j,...].
87c0 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 j....].j0...].j2...].j4...].uj..
87e0 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf ..j....j....jY...ubjT...)..}.(j.
8800 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].jZ...)..}.(j....h'j.
8820 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a ...].j_...)..}.(j....h'j....].(j
8840 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 16 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c f...)..}.(j......TwistedProtocol
8860 57 72 61 70 70 65 72 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 16 54 77 69 73 74 65 64 50 72 6f Wrapper.j....].j......TwistedPro
8880 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 tocolWrapper.....}.(j....h'j....
88a0 6a c7 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 j....ubaj....}.(j,...].j....].j0
88c0 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd ...].j2...].j4...].uj....ju...j.
88e0 02 00 00 6a c4 0b 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 ...j....ubj.......Module.....}.(
8900 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a c4 0b 00 00 75 62 65 6a ce 02 00 j.......Module.j....j....ubej...
8920 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 .}.(j,...].j....].j0...].j2...].
8940 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 j4...]...internal....refuri.j\..
8960 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 2b 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f ...anchorname..+#module-M2Crypto
8980 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 75 6a db 02 .SSL.TwistedProtocolWrapper.uj..
89a0 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a c1 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 ..jQ...j....j....ubaj....}.(j,..
89c0 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 .].j....].j0...].j2...].j4...].u
89e0 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 6a be 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a j....jX...j....j....ubaj....}.(j
8a00 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 ,...].j....].j0...].j2...].j4...
8a20 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 29 81 ].uj....j....j....jY...ubjT...).
8a40 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].jZ...)..}.(j..
8a60 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ..h'j....].j_...)..}.(j....h'j..
8a80 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 02 63 62 94 6a c0 02 00 00 5d ..].(jf...)..}.(j......cb.j....]
8aa0 94 6a c8 02 00 00 8c 02 63 62 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a f9 .j......cb.....}.(j....h'j....j.
8ac0 0b 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 ...ubaj....}.(j,...].j....].j0..
8ae0 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd 02 00 .].j2...].j4...].uj....ju...j...
8b00 00 6a f6 0b 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf .j....ubj.......Module.....}.(j.
8b20 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a f6 0b 00 00 75 62 65 6a ce 02 00 00 7d ......Module.j....j....ubej....}
8b40 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 .(j,...].j....].j0...].j2...].j4
8b60 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 00 8c ...]...internal....refuri.j\....
8b80 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 17 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 .anchorname...#module-M2Crypto.S
8ba0 53 4c 2e 63 62 94 75 6a db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a f3 0b 00 00 75 62 61 6a ce SL.cb.uj....jQ...j....j....ubaj.
8bc0 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 ...}.(j,...].j....].j0...].j2...
8be0 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 6a f0 0b 00 00 75 62 ].j4...].uj....jX...j....j....ub
8c00 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 aj....}.(j,...].j....].j0...].j2
8c20 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 ...].j4...].uj....j....j....jY..
8c40 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 .ubjT...)..}.(j....h'j....].jZ..
8c60 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].j_...)..}.(
8c80 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c j....h'j....].(jf...)..}.(j.....
8ca0 0e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0e 73 73 .ssl_dispatcher.j....].j......ss
8cc0 6c 5f 64 69 73 70 61 74 63 68 65 72 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 l_dispatcher.....}.(j....h'j....
8ce0 6a 2b 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 j+...ubaj....}.(j,...].j....].j0
8d00 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd ...].j2...].j4...].uj....ju...j.
8d20 02 00 00 6a 28 0c 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 ...j(...ubj.......Module.....}.(
8d40 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 28 0c 00 00 75 62 65 6a ce 02 00 j.......Module.j....j(...ubej...
8d60 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 .}.(j,...].j....].j0...].j2...].
8d80 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 j4...]...internal....refuri.j\..
8da0 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 23 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f ...anchorname..##module-M2Crypto
8dc0 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 75 6a db 02 00 00 6a 51 0a 00 00 6a .SSL.ssl_dispatcher.uj....jQ...j
8de0 cd 02 00 00 6a 25 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 ....j%...ubaj....}.(j,...].j....
8e00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a ].j0...].j2...].j4...].uj....jX.
8e20 00 00 6a cd 02 00 00 6a 22 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e ..j....j"...ubaj....}.(j,...].j.
8e40 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 ...].j0...].j2...].j4...].uj....
8e60 6a 91 0a 00 00 6a cd 02 00 00 6a 59 0a 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 j....j....jY...ubjT...)..}.(j...
8e80 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 .h'j....].jZ...)..}.(j....h'j...
8ea0 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a .].j_...)..}.(j....h'j....].(jf.
8ec0 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 07 74 69 6d 65 6f 75 74 94 6a c0 02 00 00 5d 94 6a c8 ..)..}.(j......timeout.j....].j.
8ee0 02 00 00 8c 07 74 69 6d 65 6f 75 74 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 .....timeout.....}.(j....h'j....
8f00 6a 5d 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 j]...ubaj....}.(j,...].j....].j0
8f20 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 75 0a 00 00 6a cd ...].j2...].j4...].uj....ju...j.
8f40 02 00 00 6a 5a 0c 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 ...jZ...ubj.......Module.....}.(
8f60 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 5a 0c 00 00 75 62 65 6a ce 02 00 j.......Module.j....jZ...ubej...
8f80 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 .}.(j,...].j....].j0...].j2...].
8fa0 6a 34 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5c 02 00 j4...]...internal....refuri.j\..
8fc0 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1c 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f ...anchorname...#module-M2Crypto
8fe0 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 75 6a db 02 00 00 6a 51 0a 00 00 6a cd 02 00 00 6a 57 0c .SSL.timeout.uj....jQ...j....jW.
9000 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 ..ubaj....}.(j,...].j....].j0...
9020 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 58 0a 00 00 6a cd 02 00 00 ].j2...].j4...].uj....jX...j....
9040 6a 54 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 jT...ubaj....}.(j,...].j....].j0
9060 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd ...].j2...].j4...].uj....j....j.
9080 02 00 00 6a 59 0a 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d ...jY...ubej....}.(j,...].j....]
90a0 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 5d 94 75 6a db 02 00 00 8c 0b 62 75 .j0...].j2...].j4...].uj......bu
90c0 6c 6c 65 74 5f 6c 69 73 74 94 6a cd 02 00 00 6a 3b 0a 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a llet_list.j....j;...ubej....}.(j
90e0 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 03 00 00 ,...].j....].j0...].j2...].j4...
9100 5d 94 75 6a db 02 00 00 6a 91 0a 00 00 6a cd 02 00 00 6a 38 0a 00 00 75 62 61 6a ce 02 00 00 7d ].uj....j....j....j8...ubaj....}
9120 94 28 6a 2c 03 00 00 5d 94 6a 2e 03 00 00 5d 94 6a 30 03 00 00 5d 94 6a 32 03 00 00 5d 94 6a 34 .(j,...].j....].j0...].j2...].j4
9140 03 00 00 5d 94 75 6a db 02 00 00 6a 8c 0c 00 00 75 62 6a 53 02 00 00 6a 4f 03 00 00 29 81 94 7d ...].uj....j....ubjS...jO...)..}
9160 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 .(j....h'j....].jT...)..}.(j....
9180 68 27 6a c0 02 00 00 5d 94 28 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 h'j....].(jZ...)..}.(j....h'j...
91a0 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 .].j_...)..}.(j....h'j....].j...
91c0 00 8c 10 4d 32 43 72 79 70 74 6f 20 50 61 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 ...M2Crypto.Package.....}.(j....
91e0 6a 3e 03 00 00 6a cd 02 00 00 6a a2 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d j>...j....j....ubaj....}.(j@...]
9200 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 .jB...].jD...].jF...].jH...]...i
9220 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e nternal....refuri.jS.....anchorn
9240 61 6d 65 94 68 27 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 9f 0c 00 00 75 62 61 6a ce ame.h'uj....j^...j....j....ubaj.
9260 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 ...}.(j@...].jB...].jD...].jF...
9280 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 9c 0c 00 00 75 62 ].jH...].uj....jY...j....j....ub
92a0 6a 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 54 03 00 00 29 jO...)..}.(j....h'j....].(jT...)
92c0 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].jZ...)..}.(j.
92e0 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].j_...)..}.(j....h'j.
9300 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 08 4d 32 43 72 79 70 74 6f ...].(jf...)..}.(j......M2Crypto
9320 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 08 4d 32 43 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a .j....].j......M2Crypto.....}.(j
9340 bf 02 00 00 68 27 6a cd 02 00 00 6a c4 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 ....h'j....j....ubaj....}.(j@...
9360 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a ].jB...].jD...].jF...].jH...].uj
9380 db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a c1 0c 00 00 75 62 6a c8 02 00 00 8c 08 20 50 61 63 ....je...j....j....ubj.......Pac
93a0 6b 61 67 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 08 20 50 61 63 6b 61 67 65 94 6a cd 02 00 kage.....}.(j.......Package.j...
93c0 00 6a c1 0c 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a .j....ubej....}.(j@...].jB...].j
93e0 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 D...].jF...].jH...]...internal..
9400 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 04 23 69 64 ..refuri.jS.....anchorname...#id
9420 31 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a be 0c 00 00 75 62 61 6a ce 02 00 00 7d 1.uj....j^...j....j....ubaj....}
9440 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 .(j@...].jB...].jD...].jF...].jH
9460 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a bb 0c 00 00 75 62 61 6a ce 02 ...].uj....jY...j....j....ubaj..
9480 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d ..}.(j@...].jB...].jD...].jF...]
94a0 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a .jH...].uj....jS...j....j....ubj
94c0 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 T...)..}.(j....h'j....].jZ...)..
94e0 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 }.(j....h'j....].j_...)..}.(j...
9500 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 04 41 53 4e .h'j....].(jf...)..}.(j......ASN
9520 31 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 04 41 53 4e 31 94 85 94 81 94 7d 94 28 6a bf 02 00 1.j....].j......ASN1.....}.(j...
9540 00 68 27 6a cd 02 00 00 6a f6 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a .h'j....j....ubaj....}.(j@...].j
9560 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 B...].jD...].jF...].jH...].uj...
9580 00 6a 65 0a 00 00 6a cd 02 00 00 6a f3 0c 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 .je...j....j....ubj.......Module
95a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a f3 0c 00 .....}.(j.......Module.j....j...
95c0 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d .ubej....}.(j@...].jB...].jD...]
95e0 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 .jF...].jH...]...internal....ref
9600 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 15 23 6d 6f 64 75 6c 65 2d uri.jS.....anchorname...#module-
9620 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a f0 M2Crypto.ASN1.uj....j^...j....j.
9640 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 ...ubaj....}.(j@...].jB...].jD..
9660 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 .].jF...].jH...].uj....jY...j...
9680 00 6a ed 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a .j....ubaj....}.(j@...].jB...].j
96a0 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a D...].jF...].jH...].uj....jS...j
96c0 cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ....j....ubjT...)..}.(j....h'j..
96e0 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 ..].jZ...)..}.(j....h'j....].j_.
9700 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d ..)..}.(j....h'j....].(jf...)..}
9720 94 28 6a bf 02 00 00 8c 0a 41 75 74 68 43 6f 6f 6b 69 65 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 .(j......AuthCookie.j....].j....
9740 8c 0a 41 75 74 68 43 6f 6f 6b 69 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 ..AuthCookie.....}.(j....h'j....
9760 6a 28 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 j(...ubaj....}.(j@...].jB...].jD
9780 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd ...].jF...].jH...].uj....je...j.
97a0 02 00 00 6a 25 0d 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 ...j%...ubj.......Module.....}.(
97c0 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 25 0d 00 00 75 62 65 6a ce 02 00 j.......Module.j....j%...ubej...
97e0 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
9800 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 jH...]...internal....refuri.jS..
9820 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1b 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f ...anchorname...#module-M2Crypto
9840 2e 41 75 74 68 43 6f 6f 6b 69 65 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 22 0d 00 .AuthCookie.uj....j^...j....j"..
9860 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d .ubaj....}.(j@...].jB...].jD...]
9880 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a .jF...].jH...].uj....jY...j....j
98a0 1f 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 ....ubaj....}.(j@...].jB...].jD.
98c0 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 ..].jF...].jH...].uj....jS...j..
98e0 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 ..j....ubjT...)..}.(j....h'j....
9900 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 ].jZ...)..}.(j....h'j....].j_...
9920 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 )..}.(j....h'j....].(jf...)..}.(
9940 6a bf 02 00 00 8c 03 42 49 4f 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 03 42 49 4f 94 85 94 81 j......BIO.j....].j......BIO....
9960 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 5a 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 .}.(j....h'j....jZ...ubaj....}.(
9980 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 j@...].jB...].jD...].jF...].jH..
99a0 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 57 0d 00 00 75 62 6a c8 02 00 00 8c .].uj....je...j....jW...ubj.....
99c0 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a ..Module.....}.(j.......Module.j
99e0 cd 02 00 00 6a 57 0d 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 ....jW...ubej....}.(j@...].jB...
9a00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 ].jD...].jF...].jH...]...interna
9a20 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 14 l....refuri.jS.....anchorname...
9a40 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 42 49 4f 94 75 6a db 02 00 00 6a 5e 03 00 00 #module-M2Crypto.BIO.uj....j^...
9a60 6a cd 02 00 00 6a 54 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 j....jT...ubaj....}.(j@...].jB..
9a80 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 .].jD...].jF...].jH...].uj....jY
9aa0 03 00 00 6a cd 02 00 00 6a 51 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a ...j....jQ...ubaj....}.(j@...].j
9ac0 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 B...].jD...].jF...].jH...].uj...
9ae0 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 .jS...j....j....ubjT...)..}.(j..
9b00 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 ..h'j....].jZ...)..}.(j....h'j..
9b20 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 ..].j_...)..}.(j....h'j....].(jf
9b40 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 02 42 4e 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c ...)..}.(j......BN.j....].j.....
9b60 02 42 4e 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 8c 0d 00 00 75 62 61 6a .BN.....}.(j....h'j....j....ubaj
9b80 ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 ....}.(j@...].jB...].jD...].jF..
9ba0 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 89 0d 00 00 75 .].jH...].uj....je...j....j....u
9bc0 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d bj.......Module.....}.(j.......M
9be0 6f 64 75 6c 65 94 6a cd 02 00 00 6a 89 0d 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 odule.j....j....ubej....}.(j@...
9c00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 ].jB...].jD...].jF...].jH...]...
9c20 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 internal....refuri.jS.....anchor
9c40 6e 61 6d 65 94 8c 13 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 42 4e 94 75 6a db 02 00 name...#module-M2Crypto.BN.uj...
9c60 00 6a 5e 03 00 00 6a cd 02 00 00 6a 86 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 .j^...j....j....ubaj....}.(j@...
9c80 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a ].jB...].jD...].jF...].jH...].uj
9ca0 db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 83 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 ....jY...j....j....ubaj....}.(j@
9cc0 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d ...].jB...].jD...].jF...].jH...]
9ce0 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 .uj....jS...j....j....ubjT...)..
9d00 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 }.(j....h'j....].jZ...)..}.(j...
9d20 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 .h'j....].j_...)..}.(j....h'j...
9d40 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 02 44 48 94 6a c0 02 00 00 5d 94 .].(jf...)..}.(j......DH.j....].
9d60 6a c8 02 00 00 8c 02 44 48 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a be 0d j......DH.....}.(j....h'j....j..
9d80 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 ..ubaj....}.(j@...].jB...].jD...
9da0 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 ].jF...].jH...].uj....je...j....
9dc0 6a bb 0d 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 j....ubj.......Module.....}.(j..
9de0 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a bb 0d 00 00 75 62 65 6a ce 02 00 00 7d 94 .....Module.j....j....ubej....}.
9e00 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 (j@...].jB...].jD...].jF...].jH.
9e20 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a ..]...internal....refuri.jS.....
9e40 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 13 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 44 48 anchorname...#module-M2Crypto.DH
9e60 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a b8 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 .uj....j^...j....j....ubaj....}.
9e80 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 (j@...].jB...].jD...].jF...].jH.
9ea0 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a b5 0d 00 00 75 62 61 6a ce 02 00 ..].uj....jY...j....j....ubaj...
9ec0 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
9ee0 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 jH...].uj....jS...j....j....ubjT
9f00 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jZ...)..}
9f20 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 .(j....h'j....].j_...)..}.(j....
9f40 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 03 44 53 41 94 h'j....].(jf...)..}.(j......DSA.
9f60 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 03 44 53 41 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 j....].j......DSA.....}.(j....h'
9f80 6a cd 02 00 00 6a f0 0d 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 j....j....ubaj....}.(j@...].jB..
9fa0 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 .].jD...].jF...].jH...].uj....je
9fc0 0a 00 00 6a cd 02 00 00 6a ed 0d 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 ...j....j....ubj.......Module...
9fe0 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a ed 0d 00 00 75 62 ..}.(j.......Module.j....j....ub
a000 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 ej....}.(j@...].jB...].jD...].jF
a020 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 ...].jH...]...internal....refuri
a040 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 14 23 6d 6f 64 75 6c 65 2d 4d 32 43 .jS.....anchorname...#module-M2C
a060 72 79 70 74 6f 2e 44 53 41 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a ea 0d 00 00 75 rypto.DSA.uj....j^...j....j....u
a080 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a baj....}.(j@...].jB...].jD...].j
a0a0 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a e7 0d F...].jH...].uj....jY...j....j..
a0c0 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 ..ubaj....}.(j@...].jB...].jD...
a0e0 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 ].jF...].jH...].uj....jS...j....
a100 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 j....ubjT...)..}.(j....h'j....].
a120 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 jZ...)..}.(j....h'j....].j_...).
a140 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf .}.(j....h'j....].(jf...)..}.(j.
a160 02 00 00 8c 02 45 43 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 02 45 43 94 85 94 81 94 7d 94 28 .....EC.j....].j......EC.....}.(
a180 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 22 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 j....h'j....j"...ubaj....}.(j@..
a1a0 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 .].jB...].jD...].jF...].jH...].u
a1c0 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 1f 0e 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f j....je...j....j....ubj.......Mo
a1e0 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 dule.....}.(j.......Module.j....
a200 6a 1f 0e 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 j....ubej....}.(j@...].jB...].jD
a220 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c ...].jF...].jH...]...internal...
a240 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 13 23 6d 6f 64 .refuri.jS.....anchorname...#mod
a260 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 43 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 ule-M2Crypto.EC.uj....j^...j....
a280 6a 1c 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 j....ubaj....}.(j@...].jB...].jD
a2a0 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd ...].jF...].jH...].uj....jY...j.
a2c0 02 00 00 6a 19 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d ...j....ubaj....}.(j@...].jB...]
a2e0 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 .jD...].jF...].jH...].uj....jS..
a300 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a .j....j....ubjT...)..}.(j....h'j
a320 c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ....].jZ...)..}.(j....h'j....].j
a340 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 _...)..}.(j....h'j....].(jf...).
a360 94 7d 94 28 6a bf 02 00 00 8c 03 45 56 50 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 03 45 56 50 .}.(j......EVP.j....].j......EVP
a380 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 54 0e 00 00 75 62 61 6a ce 02 00 .....}.(j....h'j....jT...ubaj...
a3a0 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
a3c0 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 51 0e 00 00 75 62 6a c8 jH...].uj....je...j....jQ...ubj.
a3e0 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 ......Module.....}.(j.......Modu
a400 6c 65 94 6a cd 02 00 00 6a 51 0e 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a le.j....jQ...ubej....}.(j@...].j
a420 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 B...].jD...].jF...].jH...]...int
a440 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d ernal....refuri.jS.....anchornam
a460 65 94 8c 14 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 56 50 94 75 6a db 02 00 00 6a e...#module-M2Crypto.EVP.uj....j
a480 5e 03 00 00 6a cd 02 00 00 6a 4e 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 ^...j....jN...ubaj....}.(j@...].
a4a0 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 jB...].jD...].jF...].jH...].uj..
a4c0 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 4b 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 ..jY...j....jK...ubaj....}.(j@..
a4e0 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 .].jB...].jD...].jF...].jH...].u
a500 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 j....jS...j....j....ubjT...)..}.
a520 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 (j....h'j....].jZ...)..}.(j....h
a540 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 'j....].j_...)..}.(j....h'j....]
a560 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 06 45 6e 67 69 6e 65 94 6a c0 02 00 00 .(jf...)..}.(j......Engine.j....
a580 5d 94 6a c8 02 00 00 8c 06 45 6e 67 69 6e 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd ].j......Engine.....}.(j....h'j.
a5a0 02 00 00 6a 86 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d ...j....ubaj....}.(j@...].jB...]
a5c0 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 .jD...].jF...].jH...].uj....je..
a5e0 00 6a cd 02 00 00 6a 83 0e 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 .j....j....ubj.......Module.....
a600 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 83 0e 00 00 75 62 65 6a }.(j.......Module.j....j....ubej
a620 ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 ....}.(j@...].jB...].jD...].jF..
a640 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a .].jH...]...internal....refuri.j
a660 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 17 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 S.....anchorname...#module-M2Cry
a680 70 74 6f 2e 45 6e 67 69 6e 65 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 80 0e 00 00 pto.Engine.uj....j^...j....j....
a6a0 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 ubaj....}.(j@...].jB...].jD...].
a6c0 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 7d jF...].jH...].uj....jY...j....j}
a6e0 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 ...ubaj....}.(j@...].jB...].jD..
a700 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 .].jF...].jH...].uj....jS...j...
a720 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d .j....ubjT...)..}.(j....h'j....]
a740 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 .jZ...)..}.(j....h'j....].j_...)
a760 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a ..}.(j....h'j....].(jf...)..}.(j
a780 bf 02 00 00 8c 03 45 72 72 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 03 45 72 72 94 85 94 81 94 ......Err.j....].j......Err.....
a7a0 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a b8 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a }.(j....h'j....j....ubaj....}.(j
a7c0 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 @...].jB...].jD...].jF...].jH...
a7e0 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a b5 0e 00 00 75 62 6a c8 02 00 00 8c 07 ].uj....je...j....j....ubj......
a800 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd .Module.....}.(j.......Module.j.
a820 02 00 00 6a b5 0e 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d ...j....ubej....}.(j@...].jB...]
a840 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c .jD...].jF...].jH...]...internal
a860 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 14 23 ....refuri.jS.....anchorname...#
a880 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 75 6a db 02 00 00 6a 5e 03 00 00 6a module-M2Crypto.Err.uj....j^...j
a8a0 cd 02 00 00 6a b2 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 ....j....ubaj....}.(j@...].jB...
a8c0 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 ].jD...].jF...].jH...].uj....jY.
a8e0 00 00 6a cd 02 00 00 6a af 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 ..j....j....ubaj....}.(j@...].jB
a900 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 ...].jD...].jF...].jH...].uj....
a920 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 jS...j....j....ubjT...)..}.(j...
a940 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 .h'j....].jZ...)..}.(j....h'j...
a960 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a .].j_...)..}.(j....h'j....].(jf.
a980 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 03 52 43 34 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c ..)..}.(j......RC4.j....].j.....
a9a0 03 52 43 34 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a ea 0e 00 00 75 62 61 .RC4.....}.(j....h'j....j....uba
a9c0 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 j....}.(j@...].jB...].jD...].jF.
a9e0 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a e7 0e 00 00 ..].jH...].uj....je...j....j....
aa00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 ubj.......Module.....}.(j.......
aa20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a e7 0e 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 Module.j....j....ubej....}.(j@..
aa40 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c .].jB...].jD...].jF...].jH...]..
aa60 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.jS.....ancho
aa80 72 6e 61 6d 65 94 8c 14 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 52 43 34 94 75 6a db rname...#module-M2Crypto.RC4.uj.
aaa0 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a e4 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 ...j^...j....j....ubaj....}.(j@.
aac0 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 ..].jB...].jD...].jF...].jH...].
aae0 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a e1 0e 00 00 75 62 61 6a ce 02 00 00 7d 94 28 uj....jY...j....j....ubaj....}.(
ab00 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 j@...].jB...].jD...].jF...].jH..
ab20 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 .].uj....jS...j....j....ubjT...)
ab40 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].jZ...)..}.(j.
ab60 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 ...h'j....].j_...)..}.(j....h'j.
ab80 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 03 52 53 41 94 6a c0 02 00 ...].(jf...)..}.(j......RSA.j...
aba0 00 5d 94 6a c8 02 00 00 8c 03 52 53 41 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 .].j......RSA.....}.(j....h'j...
abc0 00 6a 1c 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a .j....ubaj....}.(j@...].jB...].j
abe0 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a D...].jF...].jH...].uj....je...j
ac00 cd 02 00 00 6a 19 0f 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 ....j....ubj.......Module.....}.
ac20 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 19 0f 00 00 75 62 65 6a ce 02 (j.......Module.j....j....ubej..
ac40 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d ..}.(j@...].jB...].jD...].jF...]
ac60 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 .jH...]...internal....refuri.jS.
ac80 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 14 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 ....anchorname...#module-M2Crypt
aca0 6f 2e 52 53 41 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 16 0f 00 00 75 62 61 6a ce o.RSA.uj....j^...j....j....ubaj.
acc0 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 ...}.(j@...].jB...].jD...].jF...
ace0 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 13 0f 00 00 75 62 ].jH...].uj....jY...j....j....ub
ad00 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 aj....}.(j@...].jB...].jD...].jF
ad20 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 ...].jH...].uj....jS...j....j...
ad40 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 .ubjT...)..}.(j....h'j....].jZ..
ad60 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].j_...)..}.(
ad80 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c j....h'j....].(jf...)..}.(j.....
ada0 04 52 61 6e 64 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 04 52 61 6e 64 94 85 94 81 94 7d 94 28 .Rand.j....].j......Rand.....}.(
adc0 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 4e 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 j....h'j....jN...ubaj....}.(j@..
ade0 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 .].jB...].jD...].jF...].jH...].u
ae00 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 4b 0f 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f j....je...j....jK...ubj.......Mo
ae20 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 dule.....}.(j.......Module.j....
ae40 6a 4b 0f 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 jK...ubej....}.(j@...].jB...].jD
ae60 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c ...].jF...].jH...]...internal...
ae80 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 15 23 6d 6f 64 .refuri.jS.....anchorname...#mod
aea0 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 ule-M2Crypto.Rand.uj....j^...j..
aec0 00 00 6a 48 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 ..jH...ubaj....}.(j@...].jB...].
aee0 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 jD...].jF...].jH...].uj....jY...
af00 6a cd 02 00 00 6a 45 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 j....jE...ubaj....}.(j@...].jB..
af20 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 .].jD...].jF...].jH...].uj....jS
af40 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 ...j....j....ubjT...)..}.(j....h
af60 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 'j....].jZ...)..}.(j....h'j....]
af80 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 .j_...)..}.(j....h'j....].(jf...
afa0 29 81 94 7d 94 28 6a bf 02 00 00 8c 05 53 4d 49 4d 45 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c )..}.(j......SMIME.j....].j.....
afc0 05 53 4d 49 4d 45 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 80 0f 00 00 75 .SMIME.....}.(j....h'j....j....u
afe0 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a baj....}.(j@...].jB...].jD...].j
b000 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 7d 0f F...].jH...].uj....je...j....j}.
b020 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c ..ubj.......Module.....}.(j.....
b040 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 7d 0f 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 ..Module.j....j}...ubej....}.(j@
b060 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d ...].jB...].jD...].jF...].jH...]
b080 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 ...internal....refuri.jS.....anc
b0a0 68 6f 72 6e 61 6d 65 94 8c 16 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 horname...#module-M2Crypto.SMIME
b0c0 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 7a 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 .uj....j^...j....jz...ubaj....}.
b0e0 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 (j@...].jB...].jD...].jF...].jH.
b100 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 77 0f 00 00 75 62 61 6a ce 02 00 ..].uj....jY...j....jw...ubaj...
b120 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
b140 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 jH...].uj....jS...j....j....ubjT
b160 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jZ...)..}
b180 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 .(j....h'j....].j_...)..}.(j....
b1a0 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 04 58 35 30 39 h'j....].(jf...)..}.(j......X509
b1c0 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 04 58 35 30 39 94 85 94 81 94 7d 94 28 6a bf 02 00 00 .j....].j......X509.....}.(j....
b1e0 68 27 6a cd 02 00 00 6a b2 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 h'j....j....ubaj....}.(j@...].jB
b200 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 ...].jD...].jF...].jH...].uj....
b220 6a 65 0a 00 00 6a cd 02 00 00 6a af 0f 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 je...j....j....ubj.......Module.
b240 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a af 0f 00 00 ....}.(j.......Module.j....j....
b260 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 ubej....}.(j@...].jB...].jD...].
b280 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 jF...].jH...]...internal....refu
b2a0 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 15 23 6d 6f 64 75 6c 65 2d 4d ri.jS.....anchorname...#module-M
b2c0 32 43 72 79 70 74 6f 2e 58 35 30 39 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a ac 0f 2Crypto.X509.uj....j^...j....j..
b2e0 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 ..ubaj....}.(j@...].jB...].jD...
b300 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 ].jF...].jH...].uj....jY...j....
b320 6a a9 0f 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 j....ubaj....}.(j@...].jB...].jD
b340 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd ...].jF...].jH...].uj....jS...j.
b360 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 ...j....ubjT...)..}.(j....h'j...
b380 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 .].jZ...)..}.(j....h'j....].j_..
b3a0 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 .)..}.(j....h'j....].(jf...)..}.
b3c0 28 6a bf 02 00 00 8c 08 63 61 6c 6c 62 61 63 6b 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 08 63 (j......callback.j....].j......c
b3e0 61 6c 6c 62 61 63 6b 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a e4 0f 00 00 allback.....}.(j....h'j....j....
b400 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 ubaj....}.(j@...].jB...].jD...].
b420 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a e1 jF...].jH...].uj....je...j....j.
b440 0f 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 ...ubj.......Module.....}.(j....
b460 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a e1 0f 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a ...Module.j....j....ubej....}.(j
b480 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 @...].jB...].jD...].jF...].jH...
b4a0 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e ]...internal....refuri.jS.....an
b4c0 63 68 6f 72 6e 61 6d 65 94 8c 19 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 63 61 6c 6c chorname...#module-M2Crypto.call
b4e0 62 61 63 6b 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a de 0f 00 00 75 62 61 6a ce 02 back.uj....j^...j....j....ubaj..
b500 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d ..}.(j@...].jB...].jD...].jF...]
b520 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a db 0f 00 00 75 62 61 .jH...].uj....jY...j....j....uba
b540 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 j....}.(j@...].jB...].jD...].jF.
b560 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 ..].jH...].uj....jS...j....j....
b580 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 ubjT...)..}.(j....h'j....].jZ...
b5a0 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].j_...)..}.(j
b5c0 bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 07 ....h'j....].(jf...)..}.(j......
b5e0 66 74 70 73 6c 69 62 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 07 66 74 70 73 6c 69 62 94 85 94 ftpslib.j....].j......ftpslib...
b600 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 16 10 00 00 75 62 61 6a ce 02 00 00 7d 94 ..}.(j....h'j....j....ubaj....}.
b620 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 (j@...].jB...].jD...].jF...].jH.
b640 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 13 10 00 00 75 62 6a c8 02 00 00 ..].uj....je...j....j....ubj....
b660 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 ...Module.....}.(j.......Module.
b680 6a cd 02 00 00 6a 13 10 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 j....j....ubej....}.(j@...].jB..
b6a0 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e .].jD...].jF...].jH...]...intern
b6c0 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c al....refuri.jS.....anchorname..
b6e0 18 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 94 75 6a db 02 00 00 .#module-M2Crypto.ftpslib.uj....
b700 6a 5e 03 00 00 6a cd 02 00 00 6a 10 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d j^...j....j....ubaj....}.(j@...]
b720 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db .jB...].jD...].jF...].jH...].uj.
b740 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 0d 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 ...jY...j....j....ubaj....}.(j@.
b760 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 ..].jB...].jD...].jF...].jH...].
b780 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d uj....jS...j....j....ubjT...)..}
b7a0 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 .(j....h'j....].jZ...)..}.(j....
b7c0 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 h'j....].j_...)..}.(j....h'j....
b7e0 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 08 68 74 74 70 73 6c 69 62 94 6a c0 ].(jf...)..}.(j......httpslib.j.
b800 02 00 00 5d 94 6a c8 02 00 00 8c 08 68 74 74 70 73 6c 69 62 94 85 94 81 94 7d 94 28 6a bf 02 00 ...].j......httpslib.....}.(j...
b820 00 68 27 6a cd 02 00 00 6a 48 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a .h'j....jH...ubaj....}.(j@...].j
b840 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 B...].jD...].jF...].jH...].uj...
b860 00 6a 65 0a 00 00 6a cd 02 00 00 6a 45 10 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 .je...j....jE...ubj.......Module
b880 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 45 10 00 .....}.(j.......Module.j....jE..
b8a0 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d .ubej....}.(j@...].jB...].jD...]
b8c0 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 .jF...].jH...]...internal....ref
b8e0 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 19 23 6d 6f 64 75 6c 65 2d uri.jS.....anchorname...#module-
b900 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 M2Crypto.httpslib.uj....j^...j..
b920 00 00 6a 42 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 ..jB...ubaj....}.(j@...].jB...].
b940 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 jD...].jF...].jH...].uj....jY...
b960 6a cd 02 00 00 6a 3f 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 j....j?...ubaj....}.(j@...].jB..
b980 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 .].jD...].jF...].jH...].uj....jS
b9a0 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 ...j....j....ubjT...)..}.(j....h
b9c0 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 'j....].jZ...)..}.(j....h'j....]
b9e0 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 .j_...)..}.(j....h'j....].(jf...
ba00 29 81 94 7d 94 28 6a bf 02 00 00 8c 02 6d 32 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 02 6d 32 )..}.(j......m2.j....].j......m2
ba20 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 7a 10 00 00 75 62 61 6a ce 02 00 .....}.(j....h'j....jz...ubaj...
ba40 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
ba60 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 77 10 00 00 75 62 6a c8 jH...].uj....je...j....jw...ubj.
ba80 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 ......Module.....}.(j.......Modu
baa0 6c 65 94 6a cd 02 00 00 6a 77 10 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a le.j....jw...ubej....}.(j@...].j
bac0 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 B...].jD...].jF...].jH...]...int
bae0 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d ernal....refuri.jS.....anchornam
bb00 65 94 8c 13 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 94 75 6a db 02 00 00 6a 5e e...#module-M2Crypto.m2.uj....j^
bb20 03 00 00 6a cd 02 00 00 6a 74 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a ...j....jt...ubaj....}.(j@...].j
bb40 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 B...].jD...].jF...].jH...].uj...
bb60 00 6a 59 03 00 00 6a cd 02 00 00 6a 71 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 .jY...j....jq...ubaj....}.(j@...
bb80 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a ].jB...].jD...].jF...].jH...].uj
bba0 db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 ....jS...j....j....ubjT...)..}.(
bbc0 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 j....h'j....].jZ...)..}.(j....h'
bbe0 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 j....].j_...)..}.(j....h'j....].
bc00 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 08 6d 32 63 72 79 70 74 6f 94 6a c0 02 00 (jf...)..}.(j......m2crypto.j...
bc20 00 5d 94 6a c8 02 00 00 8c 08 6d 32 63 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 .].j......m2crypto.....}.(j....h
bc40 27 6a cd 02 00 00 6a ac 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 'j....j....ubaj....}.(j@...].jB.
bc60 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a ..].jD...].jF...].jH...].uj....j
bc80 65 0a 00 00 6a cd 02 00 00 6a a9 10 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 e...j....j....ubj.......Module..
bca0 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a a9 10 00 00 75 ...}.(j.......Module.j....j....u
bcc0 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a bej....}.(j@...].jB...].jD...].j
bce0 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 F...].jH...]...internal....refur
bd00 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 19 23 6d 6f 64 75 6c 65 2d 4d 32 i.jS.....anchorname...#module-M2
bd20 43 72 79 70 74 6f 2e 6d 32 63 72 79 70 74 6f 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 Crypto.m2crypto.uj....j^...j....
bd40 6a a6 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 j....ubaj....}.(j@...].jB...].jD
bd60 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd ...].jF...].jH...].uj....jY...j.
bd80 02 00 00 6a a3 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d ...j....ubaj....}.(j@...].jB...]
bda0 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 .jD...].jF...].jH...].uj....jS..
bdc0 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a .j....j....ubjT...)..}.(j....h'j
bde0 c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ....].jZ...)..}.(j....h'j....].j
be00 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 _...)..}.(j....h'j....].(jf...).
be20 94 7d 94 28 6a bf 02 00 00 8c 08 6d 32 75 72 6c 6c 69 62 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 .}.(j......m2urllib.j....].j....
be40 8c 08 6d 32 75 72 6c 6c 69 62 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a de ..m2urllib.....}.(j....h'j....j.
be60 10 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 ...ubaj....}.(j@...].jB...].jD..
be80 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 .].jF...].jH...].uj....je...j...
bea0 00 6a db 10 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf .j....ubj.......Module.....}.(j.
bec0 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a db 10 00 00 75 62 65 6a ce 02 00 00 7d ......Module.j....j....ubej....}
bee0 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 .(j@...].jB...].jD...].jF...].jH
bf00 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c ...]...internal....refuri.jS....
bf20 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 19 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d .anchorname...#module-M2Crypto.m
bf40 32 75 72 6c 6c 69 62 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a d8 10 00 00 75 62 61 2urllib.uj....j^...j....j....uba
bf60 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 j....}.(j@...].jB...].jD...].jF.
bf80 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a d5 10 00 00 ..].jH...].uj....jY...j....j....
bfa0 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 ubaj....}.(j@...].jB...].jD...].
bfc0 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 jF...].jH...].uj....jS...j....j.
bfe0 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a ...ubjT...)..}.(j....h'j....].jZ
c000 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d ...)..}.(j....h'j....].j_...)..}
c020 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 .(j....h'j....].(jf...)..}.(j...
c040 00 8c 09 6d 32 75 72 6c 6c 69 62 32 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 09 6d 32 75 72 6c ...m2urllib2.j....].j......m2url
c060 6c 69 62 32 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 10 11 00 00 75 62 61 lib2.....}.(j....h'j....j....uba
c080 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 j....}.(j@...].jB...].jD...].jF.
c0a0 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 0d 11 00 00 ..].jH...].uj....je...j....j....
c0c0 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 ubj.......Module.....}.(j.......
c0e0 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a 0d 11 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 Module.j....j....ubej....}.(j@..
c100 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c .].jB...].jD...].jF...].jH...]..
c120 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.jS.....ancho
c140 72 6e 61 6d 65 94 8c 1a 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 rname...#module-M2Crypto.m2urlli
c160 62 32 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 0a 11 00 00 75 62 61 6a ce 02 00 00 b2.uj....j^...j....j....ubaj....
c180 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a }.(j@...].jB...].jD...].jF...].j
c1a0 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 07 11 00 00 75 62 61 6a ce H...].uj....jY...j....j....ubaj.
c1c0 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 ...}.(j@...].jB...].jD...].jF...
c1e0 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 ].jH...].uj....jS...j....j....ub
c200 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 jT...)..}.(j....h'j....].jZ...).
c220 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 .}.(j....h'j....].j_...)..}.(j..
c240 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 0b 6d 32 ..h'j....].(jf...)..}.(j......m2
c260 78 6d 6c 72 70 63 6c 69 62 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0b 6d 32 78 6d 6c 72 70 63 xmlrpclib.j....].j......m2xmlrpc
c280 6c 69 62 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 42 11 00 00 75 62 61 6a lib.....}.(j....h'j....jB...ubaj
c2a0 ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 ....}.(j@...].jB...].jD...].jF..
c2c0 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 3f 11 00 00 75 .].jH...].uj....je...j....j?...u
c2e0 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d bj.......Module.....}.(j.......M
c300 6f 64 75 6c 65 94 6a cd 02 00 00 6a 3f 11 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 odule.j....j?...ubej....}.(j@...
c320 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 ].jB...].jD...].jF...].jH...]...
c340 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 internal....refuri.jS.....anchor
c360 6e 61 6d 65 94 8c 1c 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 name...#module-M2Crypto.m2xmlrpc
c380 6c 69 62 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 3c 11 00 00 75 62 61 6a ce 02 00 lib.uj....j^...j....j<...ubaj...
c3a0 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
c3c0 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 39 11 00 00 75 62 61 6a jH...].uj....jY...j....j9...ubaj
c3e0 ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 ....}.(j@...].jB...].jD...].jF..
c400 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 .].jH...].uj....jS...j....j....u
c420 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 bjT...)..}.(j....h'j....].jZ...)
c440 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf ..}.(j....h'j....].j_...)..}.(j.
c460 02 00 00 68 27 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 09 74 ...h'j....].(jf...)..}.(j......t
c480 68 72 65 61 64 69 6e 67 94 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 09 74 68 72 65 61 64 69 6e 67 hreading.j....].j......threading
c4a0 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 6a cd 02 00 00 6a 74 11 00 00 75 62 61 6a ce 02 00 .....}.(j....h'j....jt...ubaj...
c4c0 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 .}.(j@...].jB...].jD...].jF...].
c4e0 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 0a 00 00 6a cd 02 00 00 6a 71 11 00 00 75 62 6a c8 jH...].uj....je...j....jq...ubj.
c500 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 ......Module.....}.(j.......Modu
c520 6c 65 94 6a cd 02 00 00 6a 71 11 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a le.j....jq...ubej....}.(j@...].j
c540 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 B...].jD...].jF...].jH...]...int
c560 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d ernal....refuri.jS.....anchornam
c580 65 94 8c 1a 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 94 75 e...#module-M2Crypto.threading.u
c5a0 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a 6e 11 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a j....j^...j....jn...ubaj....}.(j
c5c0 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 @...].jB...].jD...].jF...].jH...
c5e0 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 6b 11 00 00 75 62 61 6a ce 02 00 00 7d ].uj....jY...j....jk...ubaj....}
c600 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 .(j@...].jB...].jD...].jF...].jH
c620 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 00 6a b8 0c 00 00 75 62 6a 54 03 00 ...].uj....jS...j....j....ubjT..
c640 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5a 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jZ...)..}.(
c660 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 j....h'j....].j_...)..}.(j....h'
c680 6a c0 02 00 00 5d 94 28 6a 66 0a 00 00 29 81 94 7d 94 28 6a bf 02 00 00 8c 04 75 74 69 6c 94 6a j....].(jf...)..}.(j......util.j
c6a0 c0 02 00 00 5d 94 6a c8 02 00 00 8c 04 75 74 69 6c 94 85 94 81 94 7d 94 28 6a bf 02 00 00 68 27 ....].j......util.....}.(j....h'
c6c0 6a cd 02 00 00 6a a6 11 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 j....j....ubaj....}.(j@...].jB..
c6e0 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 65 .].jD...].jF...].jH...].uj....je
c700 0a 00 00 6a cd 02 00 00 6a a3 11 00 00 75 62 6a c8 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 ...j....j....ubj.......Module...
c720 81 94 7d 94 28 6a bf 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a cd 02 00 00 6a a3 11 00 00 75 62 ..}.(j.......Module.j....j....ub
c740 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 ej....}.(j@...].jB...].jD...].jF
c760 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 ...].jH...]...internal....refuri
c780 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 15 23 6d 6f 64 75 6c 65 2d 4d 32 43 .jS.....anchorname...#module-M2C
c7a0 72 79 70 74 6f 2e 75 74 69 6c 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a a0 11 00 00 rypto.util.uj....j^...j....j....
c7c0 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 ubaj....}.(j@...].jB...].jD...].
c7e0 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 00 00 6a 9d jF...].jH...].uj....jY...j....j.
c800 11 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 ...ubaj....}.(j@...].jB...].jD..
c820 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd 02 00 .].jF...].jH...].uj....jS...j...
c840 00 6a b8 0c 00 00 75 62 6a 54 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d .j....ubjT...)..}.(j....h'j....]
c860 94 28 6a 5a 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a 5f 03 00 00 .(jZ...)..}.(j....h'j....].j_...
c880 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a c8 02 00 00 8c 0b 53 75 62 70 61 )..}.(j....h'j....].j......Subpa
c8a0 63 6b 61 67 65 73 94 85 94 81 94 7d 94 28 6a bf 02 00 00 8c 0b 53 75 62 70 61 63 6b 61 67 65 73 ckages.....}.(j......Subpackages
c8c0 94 6a cd 02 00 00 6a d5 11 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 .j....j....ubaj....}.(j@...].jB.
c8e0 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 8c 08 69 6e 74 65 72 ..].jD...].jF...].jH...]...inter
c900 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 53 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 nal....refuri.jS.....anchorname.
c920 8c 0c 23 73 75 62 70 61 63 6b 61 67 65 73 94 75 6a db 02 00 00 6a 5e 03 00 00 6a cd 02 00 00 6a ..#subpackages.uj....j^...j....j
c940 d2 11 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 ....ubaj....}.(j@...].jB...].jD.
c960 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 59 03 00 00 6a cd 02 ..].jF...].jH...].uj....jY...j..
c980 00 00 6a cf 11 00 00 75 62 6a 4f 03 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 ..j....ubjO...)..}.(j....h'j....
c9a0 5d 94 6a c4 09 00 00 29 81 94 7d 94 28 6a bf 02 00 00 68 27 6a c0 02 00 00 5d 94 6a ce 02 00 00 ].j....)..}.(j....h'j....].j....
c9c0 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a }.(j@...].jB...].jD...].jF...].j
c9e0 48 03 00 00 5d 94 8c 06 70 61 72 65 6e 74 94 6a 53 02 00 00 8c 07 65 6e 74 72 69 65 73 94 5d 94 H...]...parent.jS.....entries.].
ca00 4e 8c 0c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 86 94 61 8c 0c 69 6e 63 6c 75 64 65 66 69 6c 65 N..M2Crypto.SSL...a..includefile
ca20 73 94 5d 94 6a fc 11 00 00 61 8c 08 6d 61 78 64 65 70 74 68 94 4a ff ff ff ff 8c 07 63 61 70 74 s.].j....a..maxdepth.J......capt
ca40 69 6f 6e 94 4e 8c 04 67 6c 6f 62 94 89 8c 06 68 69 64 64 65 6e 94 89 8c 0d 69 6e 63 6c 75 64 65 ion.N..glob....hidden....include
ca60 68 69 64 64 65 6e 94 89 8c 08 6e 75 6d 62 65 72 65 64 94 4b 00 8c 0a 74 69 74 6c 65 73 6f 6e 6c hidden....numbered.K...titlesonl
ca80 79 94 89 75 6a db 02 00 00 6a c3 09 00 00 6a dd 02 00 00 8c 3b 2f 68 6f 6d 65 2f 6d 61 74 65 6a y..uj....j....j.....;/home/matej
caa0 2f 61 72 63 68 69 76 2f 6b 6e 69 68 6f 76 6e 61 2f 72 65 70 6f 73 2f 6d 32 63 72 79 70 74 6f 2f /archiv/knihovna/repos/m2crypto/
cac0 64 6f 63 2f 4d 32 43 72 79 70 74 6f 2e 72 73 74 94 6a de 02 00 00 4b d7 6a cd 02 00 00 6a ed 11 doc/M2Crypto.rst.j....K.j....j..
cae0 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 03 00 00 ..ubaj....}.(j@...].jB...].jD...
cb00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 4e 03 00 00 6a cd 02 00 00 ].jF...].jH...].uj....jN...j....
cb20 6a cf 11 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d 94 6a 44 j....ubej....}.(j@...].jB...].jD
cb40 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 53 03 00 00 6a cd ...].jF...].jH...].uj....jS...j.
cb60 02 00 00 6a b8 0c 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 00 00 5d ...j....ubej....}.(j@...].jB...]
cb80 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a 4e 03 00 .jD...].jF...].jH...].uj....jN..
cba0 00 6a cd 02 00 00 6a 9c 0c 00 00 75 62 65 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 6a 42 03 .j....j....ubej....}.(j@...].jB.
cbc0 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 00 00 6a ..].jD...].jF...].jH...].uj....j
cbe0 53 03 00 00 6a cd 02 00 00 6a 99 0c 00 00 75 62 61 6a ce 02 00 00 7d 94 28 6a 40 03 00 00 5d 94 S...j....j....ubaj....}.(j@...].
cc00 6a 42 03 00 00 5d 94 6a 44 03 00 00 5d 94 6a 46 03 00 00 5d 94 6a 48 03 00 00 5d 94 75 6a db 02 jB...].jD...].jF...].jH...].uj..
cc20 00 00 6a 4e 03 00 00 75 62 75 8c 0f 74 6f 63 5f 6e 75 6d 5f 65 6e 74 72 69 65 73 94 7d 94 28 6a ..jN...ubu..toc_num_entries.}.(j
cc40 57 02 00 00 4b 0c 6a 58 02 00 00 4b 04 6a 59 02 00 00 4b 11 6a 5a 02 00 00 4b 06 6a 5b 02 00 00 W...K.jX...K.jY...K.jZ...K.j[...
cc60 4b 03 6a 5c 02 00 00 4b 0c 6a 53 02 00 00 4b 1c 75 8c 0e 74 6f 63 5f 73 65 63 6e 75 6d 62 65 72 K.j\...K.jS...K.u..toc_secnumber
cc80 73 94 7d 94 8c 0e 74 6f 63 5f 66 69 67 6e 75 6d 62 65 72 73 94 7d 94 8c 10 74 6f 63 74 72 65 65 s.}...toc_fignumbers.}...toctree
cca0 5f 69 6e 63 6c 75 64 65 73 94 7d 94 28 6a 5b 02 00 00 5d 94 6a d1 09 00 00 61 6a 53 02 00 00 5d _includes.}.(j[...].j....ajS...]
ccc0 94 6a fc 11 00 00 61 75 8c 10 66 69 6c 65 73 5f 74 6f 5f 72 65 62 75 69 6c 64 94 7d 94 28 6a d1 .j....au..files_to_rebuild.}.(j.
cce0 09 00 00 8f 94 28 6a 5b 02 00 00 90 6a fc 11 00 00 8f 94 28 6a 53 02 00 00 90 75 8c 0d 67 6c 6f .....(j[....j......(jS....u..glo
cd00 62 5f 74 6f 63 74 72 65 65 73 94 8f 94 8c 11 6e 75 6d 62 65 72 65 64 5f 74 6f 63 74 72 65 65 73 b_toctrees.....numbered_toctrees
cd20 94 8f 94 8c 0a 64 6f 6d 61 69 6e 64 61 74 61 94 7d 94 28 8c 01 63 94 7d 94 28 8c 07 6f 62 6a 65 .....domaindata.}.(..c.}.(..obje
cd40 63 74 73 94 7d 94 6a 28 02 00 00 4b 00 75 8c 09 63 68 61 6e 67 65 73 65 74 94 7d 94 28 8c 07 63 cts.}.j(...K.u..changeset.}.(..c
cd60 68 61 6e 67 65 73 94 7d 94 6a 28 02 00 00 4b 00 75 8c 03 63 70 70 94 7d 94 28 8c 0b 72 6f 6f 74 hanges.}.j(...K.u..cpp.}.(..root
cd80 5f 73 79 6d 62 6f 6c 94 6a 2c 02 00 00 8c 06 53 79 6d 62 6f 6c 94 93 94 29 81 94 7d 94 28 6a cd _symbol.j,.....Symbol...)..}.(j.
cda0 02 00 00 4e 8c 09 69 64 65 6e 74 4f 72 4f 70 94 4e 8c 0e 74 65 6d 70 6c 61 74 65 50 61 72 61 6d ...N..identOrOp.N..templateParam
cdc0 73 94 4e 8c 0c 74 65 6d 70 6c 61 74 65 41 72 67 73 94 4e 8c 0b 64 65 63 6c 61 72 61 74 69 6f 6e s.N..templateArgs.N..declaration
cde0 94 4e 8c 07 64 6f 63 6e 61 6d 65 94 4e 8c 0f 69 73 52 65 64 65 63 6c 61 72 61 74 69 6f 6e 94 89 .N..docname.N..isRedeclaration..
ce00 8c 09 5f 63 68 69 6c 64 72 65 6e 94 5d 94 8c 0d 5f 61 6e 6f 6e 43 68 69 6c 64 72 65 6e 94 5d 94 .._children.]..._anonChildren.].
ce20 75 62 6a d5 02 00 00 7d 94 6a 28 02 00 00 4b 00 75 8c 02 6a 73 94 7d 94 28 6a 3c 12 00 00 7d 94 ubj....}.j(...K.u..js.}.(j<...}.
ce40 8c 07 6d 6f 64 75 6c 65 73 94 7d 94 6a 28 02 00 00 4b 00 75 8c 04 6d 61 74 68 94 7d 94 28 6a 3c ..modules.}.j(...K.u..math.}.(j<
ce60 12 00 00 7d 94 8c 0d 68 61 73 5f 65 71 75 61 74 69 6f 6e 73 94 7d 94 28 6a 57 02 00 00 89 6a 58 ...}...has_equations.}.(jW....jX
ce80 02 00 00 89 6a 59 02 00 00 89 6a 5a 02 00 00 89 6a 5b 02 00 00 89 6a 5c 02 00 00 89 6a 53 02 00 ....jY....jZ....j[....j\....jS..
cea0 00 89 75 6a 28 02 00 00 4b 00 75 8c 02 70 79 94 7d 94 28 6a 3c 12 00 00 7d 94 28 8c 0c 4d 32 43 ..uj(...K.u..py.}.(j<...}.(..M2C
cec0 72 79 70 74 6f 2e 53 53 4c 94 6a 5c 02 00 00 8c 06 6d 6f 64 75 6c 65 94 86 94 8c 15 4d 32 43 72 rypto.SSL.j\.....module.....M2Cr
cee0 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 45 72 72 6f 72 94 6a 5c 02 00 00 8c 09 65 78 63 65 70 74 69 ypto.SSL.SSLError.j\.....excepti
cf00 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 54 69 6d 65 6f 75 74 45 72 on.....M2Crypto.SSL.SSLTimeoutEr
cf20 72 6f 72 94 6a 5c 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 14 4d 32 43 72 79 70 74 ror.j\.....exception.....M2Crypt
cf40 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 29 4d 32 43 72 o.SSL.Checker.j\...jb......)M2Cr
cf60 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e ypto.SSL.Checker.SSLVerification
cf80 45 72 72 6f 72 94 6a 5c 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 22 4d 32 43 72 79 Error.j\.....exception...."M2Cry
cfa0 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 4e 6f 43 65 72 74 69 66 69 63 61 74 65 94 6a 5c pto.SSL.Checker.NoCertificate.j\
cfc0 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e .....exception....%M2Crypto.SSL.
cfe0 43 68 65 63 6b 65 72 2e 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 94 6a 5c 02 00 00 8c 09 Checker.WrongCertificate.j\.....
d000 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b exception.....M2Crypto.SSL.Check
d020 65 72 2e 57 72 6f 6e 67 48 6f 73 74 94 6a 5c 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 er.WrongHost.j\.....exception...
d040 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 43 68 65 63 6b 65 72 94 6a ..M2Crypto.SSL.Checker.Checker.j
d060 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 \.....class....+M2Crypto.SSL.Che
d080 63 6b 65 72 2e 43 68 65 63 6b 65 72 2e 6e 75 6d 65 72 69 63 49 70 4d 61 74 63 68 94 6a 5c 02 00 cker.Checker.numericIpMatch.j\..
d0a0 00 8c 09 61 74 74 72 69 62 75 74 65 94 86 94 8c 13 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 ...attribute.....M2Crypto.SSL.Ci
d0c0 70 68 65 72 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e pher.j\...jb.......M2Crypto.SSL.
d0e0 43 69 70 68 65 72 2e 43 69 70 68 65 72 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1f 4d Cipher.Cipher.j\.....class.....M
d100 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 2e 6e 61 6d 65 94 6a 2Crypto.SSL.Cipher.Cipher.name.j
d120 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 \.....method...."M2Crypto.SSL.Ci
d140 70 68 65 72 2e 43 69 70 68 65 72 2e 76 65 72 73 69 6f 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f pher.Cipher.version.j\.....metho
d160 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 d.....M2Crypto.SSL.Cipher.Cipher
d180 5f 53 74 61 63 6b 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 17 4d 32 43 72 79 70 74 6f _Stack.j\.....class.....M2Crypto
d1a0 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 22 4d 32 .SSL.Connection.j\...jb......"M2
d1c0 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e Crypto.SSL.Connection.Connection
d1e0 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 .j\.....class....)M2Crypto.SSL.C
d200 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 94 6a 5c 02 00 onnection.Connection.accept.j\..
d220 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ...method....-M2Crypto.SSL.Conne
d240 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 5f 73 73 6c 94 6a 5c 02 00 ction.Connection.accept_ssl.j\..
d260 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ...method....'M2Crypto.SSL.Conne
d280 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 62 69 6e 64 94 6a 5c 02 00 00 8c 06 6d 65 74 ction.Connection.bind.j\.....met
d2a0 68 6f 64 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e hod....(M2Crypto.SSL.Connection.
d2c0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 65 61 72 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 Connection.clear.j\.....method..
d2e0 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 ..<M2Crypto.SSL.Connection.Conne
d300 63 74 69 6f 6e 2e 63 6c 69 65 6e 74 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 94 ction.clientPostConnectionCheck.
d320 6a 5c 02 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 j\.....attribute....(M2Crypto.SS
d340 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 5c L.Connection.Connection.close.j\
d360 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e .....method....*M2Crypto.SSL.Con
d380 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 5c 02 00 00 nection.Connection.connect.j\...
d3a0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 ..method.....M2Crypto.SSL.Connec
d3c0 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 94 6a 5c 02 00 tion.Connection.connect_ssl.j\..
d3e0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ...method....)M2Crypto.SSL.Conne
d400 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 66 69 6c 65 6e 6f 94 6a 5c 02 00 00 8c 06 6d ction.Connection.fileno.j\.....m
d420 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f ethod....-M2Crypto.SSL.Connectio
d440 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 94 6a 5c 02 00 00 8c 06 6d n.Connection.get_cipher.j\.....m
d460 65 74 68 6f 64 94 86 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f ethod....2M2Crypto.SSL.Connectio
d480 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 5c 02 n.Connection.get_cipher_list.j\.
d4a0 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e ....method.....M2Crypto.SSL.Conn
d4c0 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 73 94 6a 5c ection.Connection.get_ciphers.j\
d4e0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e .....method.....M2Crypto.SSL.Con
d500 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 6f 6e 74 65 78 74 94 6a nection.Connection.get_context.j
d520 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f \.....method....>M2Crypto.SSL.Co
d540 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 64 65 66 61 75 6c 74 5f nnection.Connection.get_default_
d560 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 session_timeout.j\.....method...
d580 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 .0M2Crypto.SSL.Connection.Connec
d5a0 74 69 6f 6e 2e 67 65 74 5f 70 65 65 72 5f 63 65 72 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 tion.get_peer_cert.j\.....method
d5c0 94 86 94 8c 36 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e ....6M2Crypto.SSL.Connection.Con
d5e0 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 70 65 65 72 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 5c 02 00 nection.get_peer_cert_chain.j\..
d600 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ...method.....M2Crypto.SSL.Conne
d620 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 ction.Connection.get_session.j\.
d640 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e ....method..../M2Crypto.SSL.Conn
d660 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 68 75 74 64 6f 77 6e 94 6a ection.Connection.get_shutdown.j
d680 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f \.....method....:M2Crypto.SSL.Co
d6a0 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 6f 63 6b 65 74 5f 72 nnection.Connection.get_socket_r
d6c0 65 61 64 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3b 4d 32 ead_timeout.j\.....method....;M2
d6e0 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e Crypto.SSL.Connection.Connection
d700 2e 67 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c .get_socket_write_timeout.j\....
d720 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 .method....,M2Crypto.SSL.Connect
d740 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 74 61 74 65 94 6a 5c 02 00 00 8c 06 ion.Connection.get_state.j\.....
d760 6d 65 74 68 6f 64 94 86 94 8c 33 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 method....3M2Crypto.SSL.Connecti
d780 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 6a on.Connection.get_verify_depth.j
d7a0 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f \.....method....2M2Crypto.SSL.Co
d7c0 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f 6d nnection.Connection.get_verify_m
d7e0 6f 64 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 34 4d 32 43 72 79 70 74 6f 2e 53 ode.j\.....method....4M2Crypto.S
d800 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 SL.Connection.Connection.get_ver
d820 69 66 79 5f 72 65 73 75 6c 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 ify_result.j\.....method.....M2C
d840 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e rypto.SSL.Connection.Connection.
d860 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 get_version.j\.....method.....M2
d880 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e Crypto.SSL.Connection.Connection
d8a0 2e 67 65 74 70 65 65 72 6e 61 6d 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d .getpeername.j\.....method.....M
d8c0 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
d8e0 6e 2e 67 65 74 73 6f 63 6b 6e 61 6d 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d n.getsockname.j\.....method....-
d900 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
d920 6f 6e 2e 67 65 74 73 6f 63 6b 6f 70 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 29 on.getsockopt.j\.....method....)
d940 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
d960 6f 6e 2e 6c 69 73 74 65 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 on.listen.j\.....method.....M2Cr
d980 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6d ypto.SSL.Connection.Connection.m
d9a0 32 5f 62 69 6f 5f 66 72 65 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 31 4d 32 43 2_bio_free.j\.....method....1M2C
d9c0 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e rypto.SSL.Connection.Connection.
d9e0 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 94 6a 5c 02 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 m2_bio_noclose.j\.....attribute.
da00 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e ....M2Crypto.SSL.Connection.Conn
da20 65 63 74 69 6f 6e 2e 6d 32 5f 73 73 6c 5f 66 72 65 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 ection.m2_ssl_free.j\.....method
da40 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e ....+M2Crypto.SSL.Connection.Con
da60 6e 65 63 74 69 6f 6e 2e 6d 61 6b 65 66 69 6c 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 nection.makefile.j\.....method..
da80 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 ..*M2Crypto.SSL.Connection.Conne
daa0 63 74 69 6f 6e 2e 70 65 6e 64 69 6e 67 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 27 ction.pending.j\.....method....'
dac0 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
dae0 6f 6e 2e 72 65 61 64 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 27 4d 32 43 72 79 70 on.read.j\.....method....'M2Cryp
db00 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 63 to.SSL.Connection.Connection.rec
db20 76 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c v.j\.....method....,M2Crypto.SSL
db40 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 63 76 5f 69 6e 74 6f .Connection.Connection.recv_into
db60 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e .j\.....method.....M2Crypto.SSL.
db80 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 6e 65 67 6f 74 69 61 74 Connection.Connection.renegotiat
dba0 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c e.j\.....method....'M2Crypto.SSL
dbc0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 6e 64 94 6a 5c 02 00 .Connection.Connection.send.j\..
dbe0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ...method....*M2Crypto.SSL.Conne
dc00 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 6e 64 61 6c 6c 94 6a 5c 02 00 00 8c 06 ction.Connection.sendall.j\.....
dc20 6d 65 74 68 6f 64 94 86 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 method....<M2Crypto.SSL.Connecti
dc40 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e 65 63 74 69 on.Connection.serverPostConnecti
dc60 6f 6e 43 68 65 63 6b 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 onCheck.j\.....method....,M2Cryp
dc80 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 to.SSL.Connection.Connection.set
dca0 31 5f 68 6f 73 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 33 4d 32 43 72 79 70 74 1_host.j\.....method....3M2Crypt
dcc0 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f o.SSL.Connection.Connection.set_
dce0 61 63 63 65 70 74 5f 73 74 61 74 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2a 4d accept_state.j\.....method....*M
dd00 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
dd20 6e 2e 73 65 74 5f 62 69 6f 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 32 4d 32 43 72 n.set_bio.j\.....method....2M2Cr
dd40 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 ypto.SSL.Connection.Connection.s
dd60 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c et_cipher_list.j\.....method....
dd80 42 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 BM2Crypto.SSL.Connection.Connect
dda0 69 6f 6e 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 63 6f 6e 74 ion.set_client_CA_list_from_cont
ddc0 65 78 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3f 4d 32 43 72 79 70 74 6f 2e 53 ext.j\.....method....?M2Crypto.S
dde0 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 6c 69 SL.Connection.Connection.set_cli
de00 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 94 6a 5c 02 00 00 8c 06 6d 65 74 ent_CA_list_from_file.j\.....met
de20 68 6f 64 94 86 94 8c 34 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e hod....4M2Crypto.SSL.Connection.
de40 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 94 6a 5c 02 Connection.set_connect_state.j\.
de60 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e ....method....EM2Crypto.SSL.Conn
de80 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 70 6f 73 74 5f 63 6f 6e 6e 65 ection.Connection.set_post_conne
dea0 63 74 69 6f 6e 5f 63 68 65 63 6b 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 06 6d 65 74 68 ction_check_callback.j\.....meth
dec0 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 od.....M2Crypto.SSL.Connection.C
dee0 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 onnection.set_session.j\.....met
df00 68 6f 64 94 86 94 8c 35 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e hod....5M2Crypto.SSL.Connection.
df20 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 5c Connection.set_session_id_ctx.j\
df40 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e .....method..../M2Crypto.SSL.Con
df60 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 68 75 74 64 6f 77 6e 94 nection.Connection.set_shutdown.
df80 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 j\.....method....:M2Crypto.SSL.C
dfa0 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 6f 63 6b 65 74 5f onnection.Connection.set_socket_
dfc0 72 65 61 64 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3b 4d read_timeout.j\.....method....;M
dfe0 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
e000 6e 2e 73 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 n.set_socket_write_timeout.j\...
e020 8c 06 6d 65 74 68 6f 64 94 86 94 8c 35 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 ..method....5M2Crypto.SSL.Connec
e040 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c tion.Connection.set_ssl_close_fl
e060 61 67 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 37 4d 32 43 72 79 70 74 6f 2e 53 53 ag.j\.....method....7M2Crypto.SS
e080 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 74 6c 73 65 L.Connection.Connection.set_tlse
e0a0 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d xt_host_name.j\.....method.....M
e0c0 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
e0e0 6e 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d n.setblocking.j\.....method....-
e100 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
e120 6f 6e 2e 73 65 74 73 6f 63 6b 6f 70 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d on.setsockopt.j\.....method....-
e140 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
e160 6f 6e 2e 73 65 74 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d on.settimeout.j\.....method....-
e180 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
e1a0 6f 6e 2e 73 65 74 75 70 5f 61 64 64 72 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c on.setup_addr.j\.....method....,
e1c0 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
e1e0 6f 6e 2e 73 65 74 75 70 5f 73 73 6c 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2b 4d on.setup_ssl.j\.....method....+M
e200 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
e220 6e 2e 73 68 75 74 64 6f 77 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 30 4d 32 43 n.shutdown.j\.....method....0M2C
e240 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e rypto.SSL.Connection.Connection.
e260 73 73 6c 5f 67 65 74 5f 65 72 72 6f 72 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c ssl_get_error.j\.....method....,
e280 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 M2Crypto.SSL.Connection.Connecti
e2a0 6f 6e 2e 76 65 72 69 66 79 5f 6f 6b 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 28 4d on.verify_ok.j\.....method....(M
e2c0 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
e2e0 6e 2e 77 72 69 74 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 14 4d 32 43 72 79 70 n.write.j\.....method.....M2Cryp
e300 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 1b 4d 32 43 to.SSL.Context.j\...jb.......M2C
e320 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 63 74 78 6d 61 70 94 6a 5c 02 00 00 8c 08 rypto.SSL.Context.ctxmap.j\.....
e340 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 function.....M2Crypto.SSL.Contex
e360 74 2e 43 6f 6e 74 65 78 74 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 28 4d 32 43 72 79 t.Context.j\.....class....(M2Cry
e380 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 61 64 64 5f 73 65 73 73 pto.SSL.Context.Context.add_sess
e3a0 69 6f 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 53 ion.j\.....method...."M2Crypto.S
e3c0 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 63 6c 6f 73 65 94 6a 5c 02 00 00 8c 06 SL.Context.Context.close.j\.....
e3e0 6d 65 74 68 6f 64 94 86 94 8c 31 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e method....1M2Crypto.SSL.Context.
e400 43 6f 6e 74 65 78 74 2e 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 5c 02 Context.get_allow_unknown_ca.j\.
e420 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 ....method....+M2Crypto.SSL.Cont
e440 65 78 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 63 65 72 74 5f 73 74 6f 72 65 94 6a 5c 02 00 00 ext.Context.get_cert_store.j\...
e460 8c 06 6d 65 74 68 6f 64 94 86 94 8c 33 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 ..method....3M2Crypto.SSL.Contex
e480 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 t.Context.get_session_cache_mode
e4a0 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e .j\.....method....0M2Crypto.SSL.
e4c0 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 Context.Context.get_session_time
e4e0 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 out.j\.....method....-M2Crypto.S
e500 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 SL.Context.Context.get_verify_de
e520 70 74 68 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 pth.j\.....method....,M2Crypto.S
e540 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f SL.Context.Context.get_verify_mo
e560 64 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 53 53 de.j\.....method....&M2Crypto.SS
e580 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 94 6a 5c 02 00 L.Context.Context.load_cert.j\..
e5a0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 ...method....,M2Crypto.SSL.Conte
e5c0 78 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 5c 02 00 00 xt.Context.load_cert_chain.j\...
e5e0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 ..method....+M2Crypto.SSL.Contex
e600 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 43 41 94 6a 5c 02 00 00 8c 06 t.Context.load_client_CA.j\.....
e620 6d 65 74 68 6f 64 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e method....+M2Crypto.SSL.Context.
e640 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 63 61 94 6a 5c 02 00 00 8c 06 6d 65 Context.load_client_ca.j\.....me
e660 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f thod....-M2Crypto.SSL.Context.Co
e680 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 69 6e 66 6f 94 6a 5c 02 00 00 8c 06 6d 65 ntext.load_verify_info.j\.....me
e6a0 74 68 6f 64 94 86 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f thod....2M2Crypto.SSL.Context.Co
e6c0 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 94 6a 5c 02 00 ntext.load_verify_locations.j\..
e6e0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 ...method....,M2Crypto.SSL.Conte
e700 78 74 2e 43 6f 6e 74 65 78 74 2e 6d 32 5f 73 73 6c 5f 63 74 78 5f 66 72 65 65 94 6a 5c 02 00 00 xt.Context.m2_ssl_ctx_free.j\...
e720 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 ..method....+M2Crypto.SSL.Contex
e740 74 2e 43 6f 6e 74 65 78 74 2e 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 06 t.Context.remove_session.j\.....
e760 6d 65 74 68 6f 64 94 86 94 8c 31 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e method....1M2Crypto.SSL.Context.
e780 43 6f 6e 74 65 78 74 2e 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 5c 02 Context.set_allow_unknown_ca.j\.
e7a0 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 ....method....,M2Crypto.SSL.Cont
e7c0 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 5c 02 00 ext.Context.set_cipher_list.j\..
e7e0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 39 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 ...method....9M2Crypto.SSL.Conte
e800 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 xt.Context.set_client_CA_list_fr
e820 6f 6d 5f 66 69 6c 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 35 4d 32 43 72 79 70 om_file.j\.....method....5M2Cryp
e840 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 64 65 66 61 75 to.SSL.Context.Context.set_defau
e860 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 lt_verify_paths.j\.....method...
e880 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 ..M2Crypto.SSL.Context.Context.s
e8a0 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 et_info_callback.j\.....method..
e8c0 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e ..(M2Crypto.SSL.Context.Context.
e8e0 73 65 74 5f 6f 70 74 69 6f 6e 73 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 33 4d 32 set_options.j\.....method....3M2
e900 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 Crypto.SSL.Context.Context.set_s
e920 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 ession_cache_mode.j\.....method.
e940 86 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 .../M2Crypto.SSL.Context.Context
e960 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f .set_session_id_ctx.j\.....metho
e980 64 94 86 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 d....0M2Crypto.SSL.Context.Conte
e9a0 78 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 xt.set_session_timeout.j\.....me
e9c0 74 68 6f 64 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f thod....'M2Crypto.SSL.Context.Co
e9e0 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 68 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 ntext.set_tmp_dh.j\.....method..
ea00 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e ..0M2Crypto.SSL.Context.Context.
ea20 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f set_tmp_dh_callback.j\.....metho
ea40 64 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 d....(M2Crypto.SSL.Context.Conte
ea60 78 74 2e 73 65 74 5f 74 6d 70 5f 72 73 61 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c xt.set_tmp_rsa.j\.....method....
ea80 31 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 1M2Crypto.SSL.Context.Context.se
eaa0 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 t_tmp_rsa_callback.j\.....method
eac0 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 ....'M2Crypto.SSL.Context.Contex
eae0 74 2e 73 65 74 5f 76 65 72 69 66 79 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 4d t.set_verify.j\.....method.....M
eb00 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 6d 61 70 94 6a 5c 02 00 00 8c 08 66 2Crypto.SSL.Context.map.j\.....f
eb20 75 6e 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 unction.....M2Crypto.SSL.SSLServ
eb40 65 72 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 er.j\...jb.......M2Crypto.SSL.SS
eb60 4c 53 65 72 76 65 72 2e 53 53 4c 53 65 72 76 65 72 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 LServer.SSLServer.j\.....class..
eb80 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 53 53 4c 53 65 72 ..-M2Crypto.SSL.SSLServer.SSLSer
eba0 76 65 72 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 ver.handle_error.j\.....method..
ebc0 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 53 53 4c 53 65 72 ../M2Crypto.SSL.SSLServer.SSLSer
ebe0 76 65 72 2e 68 61 6e 64 6c 65 5f 72 65 71 75 65 73 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 ver.handle_request.j\.....method
ec00 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 46 6f 72 6b ....'M2Crypto.SSL.SSLServer.Fork
ec20 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 29 4d 32 ingSSLServer.j\.....class....)M2
ec40 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 54 68 72 65 61 64 69 6e 67 53 53 Crypto.SSL.SSLServer.ThreadingSS
ec60 4c 53 65 72 76 65 72 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 14 4d 32 43 72 79 70 74 LServer.j\.....class.....M2Crypt
ec80 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 1c 4d 32 43 72 o.SSL.Session.j\...jb.......M2Cr
eca0 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 05 ypto.SSL.Session.Session.j\.....
ecc0 63 6c 61 73 73 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 class....#M2Crypto.SSL.Session.S
ece0 65 73 73 69 6f 6e 2e 61 73 5f 64 65 72 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 24 ession.as_der.j\.....method....$
ed00 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 61 73 5f M2Crypto.SSL.Session.Session.as_
ed20 74 65 78 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e text.j\.....method....%M2Crypto.
ed40 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 6d 65 94 6a 5c 02 SSL.Session.Session.get_time.j\.
ed60 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 ....method....(M2Crypto.SSL.Sess
ed80 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d ion.Session.get_timeout.j\.....m
eda0 65 74 68 6f 64 94 86 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 ethod....0M2Crypto.SSL.Session.S
edc0 65 73 73 69 6f 6e 2e 6d 32 5f 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 66 72 65 65 94 6a 5c 02 00 00 ession.m2_ssl_session_free.j\...
ede0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f ..method....%M2Crypto.SSL.Sessio
ee00 6e 2e 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 n.Session.set_time.j\.....method
ee20 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f ....(M2Crypto.SSL.Session.Sessio
ee40 6e 2e 73 65 74 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 n.set_timeout.j\.....method....&
ee60 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 77 72 69 M2Crypto.SSL.Session.Session.wri
ee80 74 65 5f 62 69 6f 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 te_bio.j\.....method....!M2Crypt
eea0 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 6c 6f 61 64 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 o.SSL.Session.load_session.j\...
eec0 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 ..function....#M2Crypto.SSL.Twis
eee0 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c tedProtocolWrapper.j\...jb......
ef00 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 .M2Crypto.SSL.TwistedProtocolWra
ef20 70 70 65 72 2e 63 6f 6e 6e 65 63 74 53 53 4c 94 6a 5c 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 pper.connectSSL.j\.....function.
ef40 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c ....M2Crypto.SSL.TwistedProtocol
ef60 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 54 43 50 94 6a 5c 02 00 00 8c 08 66 75 6e 63 74 69 Wrapper.connectTCP.j\.....functi
ef80 6f 6e 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f on....-M2Crypto.SSL.TwistedProto
efa0 63 6f 6c 57 72 61 70 70 65 72 2e 6c 69 73 74 65 6e 53 53 4c 94 6a 5c 02 00 00 8c 08 66 75 6e 63 colWrapper.listenSSL.j\.....func
efc0 74 69 6f 6e 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f tion....-M2Crypto.SSL.TwistedPro
efe0 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c 69 73 74 65 6e 54 43 50 94 6a 5c 02 00 00 8c 08 66 75 tocolWrapper.listenTCP.j\.....fu
f000 6e 63 74 69 6f 6e 94 86 94 8c 36 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 nction....6M2Crypto.SSL.TwistedP
f020 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 rotocolWrapper.TLSProtocolWrappe
f040 72 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e r.j\.....class....<M2Crypto.SSL.
f060 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 TwistedProtocolWrapper.TLSProtoc
f080 6f 6c 57 72 61 70 70 65 72 2e 63 6c 65 61 72 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 olWrapper.clear.j\.....method...
f0a0 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 .EM2Crypto.SSL.TwistedProtocolWr
f0c0 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 apper.TLSProtocolWrapper.connect
f0e0 69 6f 6e 4c 6f 73 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 45 4d 32 43 72 79 70 ionLost.j\.....method....EM2Cryp
f100 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c to.SSL.TwistedProtocolWrapper.TL
f120 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4d 61 64 65 94 SProtocolWrapper.connectionMade.
f140 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 43 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 j\.....method....CM2Crypto.SSL.T
f160 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f wistedProtocolWrapper.TLSProtoco
f180 6c 57 72 61 70 70 65 72 2e 64 61 74 61 52 65 63 65 69 76 65 64 94 6a 5c 02 00 00 8c 06 6d 65 74 lWrapper.dataReceived.j\.....met
f1a0 68 6f 64 94 86 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 hod....EM2Crypto.SSL.TwistedProt
f1c0 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c ocolWrapper.TLSProtocolWrapper.l
f1e0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3f oseConnection.j\.....method....?
f200 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 M2Crypto.SSL.TwistedProtocolWrap
f220 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 73 74 61 72 74 54 4c 53 94 per.TLSProtocolWrapper.startTLS.
f240 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 j\.....method....<M2Crypto.SSL.T
f260 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f wistedProtocolWrapper.TLSProtoco
f280 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c lWrapper.write.j\.....method....
f2a0 44 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 DM2Crypto.SSL.TwistedProtocolWra
f2c0 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 53 65 71 pper.TLSProtocolWrapper.writeSeq
f2e0 75 65 6e 63 65 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 0f 4d 32 43 72 79 70 74 6f uence.j\.....method.....M2Crypto
f300 2e 53 53 4c 2e 63 62 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 .SSL.cb.j\...jb......(M2Crypto.S
f320 53 4c 2e 63 62 2e 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 73 74 75 62 94 6a SL.cb.ssl_verify_callback_stub.j
f340 5c 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e \.....function....#M2Crypto.SSL.
f360 63 62 2e 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 08 66 75 cb.ssl_verify_callback.j\.....fu
f380 6e 63 74 69 6f 6e 94 86 94 8c 34 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 2e 73 73 6c 5f 76 nction....4M2Crypto.SSL.cb.ssl_v
f3a0 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 erify_callback_allow_unknown_ca.
f3c0 6a 5c 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 53 4c j\.....function....!M2Crypto.SSL
f3e0 2e 63 62 2e 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 08 66 75 6e .cb.ssl_info_callback.j\.....fun
f400 63 74 69 6f 6e 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 ction.....M2Crypto.SSL.ssl_dispa
f420 74 63 68 65 72 94 6a 5c 02 00 00 6a 62 12 00 00 86 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c tcher.j\...jb......*M2Crypto.SSL
f440 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 6a .ssl_dispatcher.ssl_dispatcher.j
f460 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c \.....class....2M2Crypto.SSL.ssl
f480 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 6f 6e 6e 65 _dispatcher.ssl_dispatcher.conne
f4a0 63 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 38 4d 32 43 72 79 70 74 6f 2e 53 53 ct.j\.....method....8M2Crypto.SS
f4c0 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e L.ssl_dispatcher.ssl_dispatcher.
f4e0 63 72 65 61 74 65 5f 73 6f 63 6b 65 74 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2f create_socket.j\.....method..../
f500 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 6c 5f M2Crypto.SSL.ssl_dispatcher.ssl_
f520 64 69 73 70 61 74 63 68 65 72 2e 72 65 63 76 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 dispatcher.recv.j\.....method...
f540 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 ./M2Crypto.SSL.ssl_dispatcher.ss
f560 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 65 6e 64 94 6a 5c 02 00 00 8c 06 6d 65 74 68 6f 64 94 l_dispatcher.send.j\.....method.
f580 86 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 6a 62 ....M2Crypto.SSL.timeout.j\...jb
f5a0 12 00 00 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e 74 69 6d 65 .......M2Crypto.SSL.timeout.time
f5c0 6f 75 74 94 6a 5c 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 53 out.j\.....class....!M2Crypto.SS
f5e0 4c 2e 74 69 6d 65 6f 75 74 2e 74 69 6d 65 6f 75 74 2e 70 61 63 6b 94 6a 5c 02 00 00 8c 06 6d 65 L.timeout.timeout.pack.j\.....me
f600 74 68 6f 64 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e 73 74 thod....&M2Crypto.SSL.timeout.st
f620 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 ruct_to_timeout.j\.....function.
f640 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e 73 74 72 75 63 74 5f ....M2Crypto.SSL.timeout.struct_
f660 73 69 7a 65 94 6a 5c 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 11 4d 32 43 72 79 70 74 size.j\.....function.....M2Crypt
f680 6f 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 53 02 00 00 8c 06 6d 6f 64 75 6c 65 94 86 94 8c 0d 4d 32 43 o.__init__.jS.....module.....M2C
f6a0 72 79 70 74 6f 2e 41 53 4e 31 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 1a 4d 32 43 72 79 70 74 rypto.ASN1.jS...jA.......M2Crypt
f6c0 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 49 6e 74 65 67 65 72 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 o.ASN1.ASN1_Integer.jS.....class
f6e0 94 86 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e ..../M2Crypto.ASN1.ASN1_Integer.
f700 6d 32 5f 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 m2_asn1_integer_free.jS.....meth
f720 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 od.....M2Crypto.ASN1.ASN1_Object
f740 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e .jS.....class....-M2Crypto.ASN1.
f760 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 6d 32 5f 61 73 6e 31 5f 6f 62 6a 65 63 74 5f 66 72 65 65 94 ASN1_Object.m2_asn1_object_free.
f780 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e jS.....method.....M2Crypto.ASN1.
f7a0 41 53 4e 31 5f 53 74 72 69 6e 67 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 21 4d 32 43 ASN1_String.jS.....class....!M2C
f7c0 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 2e 61 73 5f 74 65 78 74 94 6a rypto.ASN1.ASN1_String.as_text.j
f7e0 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 S.....method....-M2Crypto.ASN1.A
f800 53 4e 31 5f 53 74 72 69 6e 67 2e 6d 32 5f 61 73 6e 31 5f 73 74 72 69 6e 67 5f 66 72 65 65 94 6a SN1_String.m2_asn1_string_free.j
f820 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 S.....method.....M2Crypto.ASN1.A
f840 53 4e 31 5f 54 49 4d 45 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 24 4d 32 43 72 79 70 SN1_TIME.jS.....class....$M2Cryp
f860 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 67 65 74 5f 64 61 74 65 74 69 6d 65 94 6a to.ASN1.ASN1_TIME.get_datetime.j
f880 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 29 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 S.....method....)M2Crypto.ASN1.A
f8a0 53 4e 31 5f 54 49 4d 45 2e 6d 32 5f 61 73 6e 31 5f 74 69 6d 65 5f 66 72 65 65 94 6a 53 02 00 00 SN1_TIME.m2_asn1_time_free.jS...
f8c0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f ..method....$M2Crypto.ASN1.ASN1_
f8e0 54 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 TIME.set_datetime.jS.....method.
f900 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f ..."M2Crypto.ASN1.ASN1_TIME.set_
f920 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 string.jS.....method.....M2Crypt
f940 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 74 69 6d 65 94 6a 53 02 00 00 8c o.ASN1.ASN1_TIME.set_time.jS....
f960 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 55 .method.....M2Crypto.ASN1.ASN1_U
f980 54 43 54 49 4d 45 94 6a 53 02 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 86 94 8c 1b 4d 32 43 72 TCTIME.jS.....attribute.....M2Cr
f9a0 79 70 74 6f 2e 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 94 6a 53 02 00 00 8c 05 63 ypto.ASN1.LocalTimezone.jS.....c
f9c0 6c 61 73 73 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 lass.....M2Crypto.ASN1.LocalTime
f9e0 7a 6f 6e 65 2e 64 73 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 zone.dst.jS.....method...."M2Cry
fa00 70 74 6f 2e 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 74 7a 6e 61 6d 65 94 6a 53 pto.ASN1.LocalTimezone.tzname.jS
fa20 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 4c 6f .....method....%M2Crypto.ASN1.Lo
fa40 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 75 74 63 6f 66 66 73 65 74 94 6a 53 02 00 00 8c 06 6d 65 74 calTimezone.utcoffset.jS.....met
fa60 68 6f 64 94 86 94 8c 13 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 94 6a 53 02 00 hod.....M2Crypto.AuthCookie.jS..
fa80 00 6a 41 14 00 00 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 .jA.......M2Crypto.AuthCookie.Au
faa0 74 68 43 6f 6f 6b 69 65 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 23 4d 32 43 72 79 70 thCookie.jS.....class....#M2Cryp
fac0 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 64 61 74 61 94 6a 53 to.AuthCookie.AuthCookie.data.jS
fae0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f .....method....%M2Crypto.AuthCoo
fb00 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 65 78 70 69 72 79 94 6a 53 02 00 00 8c 06 6d 65 74 kie.AuthCookie.expiry.jS.....met
fb20 68 6f 64 94 86 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 hod....*M2Crypto.AuthCookie.Auth
fb40 43 6f 6f 6b 69 65 2e 68 65 61 64 65 72 56 61 6c 75 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 Cookie.headerValue.jS.....method
fb60 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f ....(M2Crypto.AuthCookie.AuthCoo
fb80 6b 69 65 2e 69 73 45 78 70 69 72 65 64 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 kie.isExpired.jS.....method...."
fba0 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 6d M2Crypto.AuthCookie.AuthCookie.m
fbc0 61 63 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 41 75 ac.jS.....method....#M2Crypto.Au
fbe0 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 6e 61 6d 65 94 6a 53 02 00 00 8c 06 thCookie.AuthCookie.name.jS.....
fc00 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 method....%M2Crypto.AuthCookie.A
fc20 75 74 68 43 6f 6f 6b 69 65 2e 6f 75 74 70 75 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 uthCookie.output.jS.....method..
fc40 94 8c 24 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 ..$M2Crypto.AuthCookie.AuthCooki
fc60 65 2e 76 61 6c 75 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 e.value.jS.....method....!M2Cryp
fc80 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 94 6a 53 02 00 to.AuthCookie.AuthCookieJar.jS..
fca0 00 8c 05 63 6c 61 73 73 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 ...class.....M2Crypto.AuthCookie
fcc0 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 94 6a 53 02 00 .AuthCookieJar.isGoodCookie.jS..
fce0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 34 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 ...method....4M2Crypto.AuthCooki
fd00 65 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 53 74 72 69 e.AuthCookieJar.isGoodCookieStri
fd20 6e 67 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 41 75 ng.jS.....method....,M2Crypto.Au
fd40 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 6d 61 6b 65 43 6f 6f 6b 69 thCookie.AuthCookieJar.makeCooki
fd60 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 41 75 74 e.jS.....method.....M2Crypto.Aut
fd80 68 43 6f 6f 6b 69 65 2e 6d 69 78 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 19 hCookie.mix.jS.....function.....
fda0 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 75 6e 6d 69 78 94 6a 53 02 00 00 8c M2Crypto.AuthCookie.unmix.jS....
fdc0 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 .function.....M2Crypto.AuthCooki
fde0 65 2e 75 6e 6d 69 78 33 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0c 4d 32 43 e.unmix3.jS.....function.....M2C
fe00 72 79 70 74 6f 2e 42 49 4f 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 10 4d 32 43 72 79 70 74 6f rypto.BIO.jS...jA.......M2Crypto
fe20 2e 42 49 4f 2e 42 49 4f 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 18 4d 32 43 72 79 70 .BIO.BIO.jS.....class.....M2Cryp
fe40 74 6f 2e 42 49 4f 2e 42 49 4f 2e 62 69 6f 5f 70 74 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 to.BIO.BIO.bio_ptr.jS.....method
fe60 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 63 6c 6f 73 65 94 6a 53 02 00 .....M2Crypto.BIO.BIO.close.jS..
fe80 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 66 ...method.....M2Crypto.BIO.BIO.f
fea0 69 6c 65 6e 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 16 4d 32 43 72 79 70 74 6f ileno.jS.....method.....M2Crypto
fec0 2e 42 49 4f 2e 42 49 4f 2e 66 6c 75 73 68 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c .BIO.BIO.flush.jS.....method....
fee0 1c 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 94 6a 53 .M2Crypto.BIO.BIO.m2_bio_free.jS
ff00 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f .....method.....M2Crypto.BIO.BIO
ff20 2e 72 65 61 64 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f .read.jS.....method.....M2Crypto
ff40 2e 42 49 4f 2e 42 49 4f 2e 72 65 61 64 61 62 6c 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 .BIO.BIO.readable.jS.....method.
ff60 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 61 64 6c 69 6e 65 94 6a 53 ....M2Crypto.BIO.BIO.readline.jS
ff80 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f .....method.....M2Crypto.BIO.BIO
ffa0 2e 72 65 61 64 6c 69 6e 65 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 16 4d 32 43 .readlines.jS.....method.....M2C
ffc0 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 73 65 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f rypto.BIO.BIO.reset.jS.....metho
ffe0 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 73 65 65 6b 94 6a 53 02 00 d.....M2Crypto.BIO.BIO.seek.jS..
10000 00 8c 06 6d 65 74 68 6f 64 94 86 94 95 04 13 01 00 00 00 00 00 8c 1c 4d 32 43 72 79 70 74 6f 2e ...method..............M2Crypto.
10020 42 49 4f 2e 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 61 64 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f BIO.BIO.should_read.jS.....metho
10040 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 d.....M2Crypto.BIO.BIO.should_re
10060 74 72 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 42 try.jS.....method.....M2Crypto.B
10080 49 4f 2e 42 49 4f 2e 73 68 6f 75 6c 64 5f 77 72 69 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f IO.BIO.should_write.jS.....metho
100a0 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 74 65 6c 6c 94 6a 53 02 00 d.....M2Crypto.BIO.BIO.tell.jS..
100c0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 77 ...method.....M2Crypto.BIO.BIO.w
100e0 72 69 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e rite.jS.....method.....M2Crypto.
10100 42 49 4f 2e 42 49 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f BIO.BIO.write_close.jS.....metho
10120 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 77 72 69 74 65 61 62 6c 65 d.....M2Crypto.BIO.BIO.writeable
10140 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e .jS.....method.....M2Crypto.BIO.
10160 42 49 4f 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 19 4d 32 BIOError.jS.....exception.....M2
10180 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 94 6a 53 02 00 00 8c 05 63 Crypto.BIO.CipherStream.jS.....c
101a0 6c 61 73 73 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 lass...."M2Crypto.BIO.CipherStre
101c0 61 6d 2e 53 41 4c 54 5f 4c 45 4e 94 6a 53 02 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 86 94 8c am.SALT_LEN.jS.....attribute....
101e0 1f 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 2e 63 6c 6f 73 65 .M2Crypto.BIO.CipherStream.close
10200 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e .jS.....method....%M2Crypto.BIO.
10220 43 69 70 68 65 72 53 74 72 65 61 6d 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 CipherStream.m2_bio_free.jS.....
10240 6d 65 74 68 6f 64 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 method....$M2Crypto.BIO.CipherSt
10260 72 65 61 6d 2e 6d 32 5f 62 69 6f 5f 70 6f 70 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 ream.m2_bio_pop.jS.....method...
10280 8c 24 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 2e 73 65 74 5f .$M2Crypto.BIO.CipherStream.set_
102a0 63 69 70 68 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 cipher.jS.....method....%M2Crypt
102c0 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a o.BIO.CipherStream.write_close.j
102e0 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 11 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 S.....method.....M2Crypto.BIO.Fi
10300 6c 65 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f le.jS.....class.....M2Crypto.BIO
10320 2e 46 69 6c 65 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 .File.close.jS.....method.....M2
10340 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 2e 66 6c 75 73 68 94 6a 53 02 00 00 8c 06 6d 65 74 Crypto.BIO.File.flush.jS.....met
10360 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 2e 72 65 73 65 74 94 hod.....M2Crypto.BIO.File.reset.
10380 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 jS.....method.....M2Crypto.BIO.I
103a0 4f 42 75 66 66 65 72 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1b 4d 32 43 72 79 70 74 OBuffer.jS.....class.....M2Crypt
103c0 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 o.BIO.IOBuffer.close.jS.....meth
103e0 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 2e 6d 32 5f od....!M2Crypto.BIO.IOBuffer.m2_
10400 62 69 6f 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 bio_free.jS.....method.....M2Cry
10420 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 2e 6d 32 5f 62 69 6f 5f 70 6f 70 94 6a 53 02 00 pto.BIO.IOBuffer.m2_bio_pop.jS..
10440 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 ...method.....M2Crypto.BIO.Memor
10460 79 42 75 66 66 65 72 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1f 4d 32 43 72 79 70 74 yBuffer.jS.....class.....M2Crypt
10480 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 06 o.BIO.MemoryBuffer.close.jS.....
104a0 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 method...."M2Crypto.BIO.MemoryBu
104c0 66 66 65 72 2e 67 65 74 76 61 6c 75 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e ffer.getvalue.jS.....method.....
104e0 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 94 6a M2Crypto.BIO.MemoryBuffer.read.j
10500 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 S.....method...."M2Crypto.BIO.Me
10520 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 5f 61 6c 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f moryBuffer.read_all.jS.....metho
10540 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e d....%M2Crypto.BIO.MemoryBuffer.
10560 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 13 4d 32 write_close.jS.....method.....M2
10580 43 72 79 70 74 6f 2e 42 49 4f 2e 53 53 4c 42 69 6f 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 Crypto.BIO.SSLBio.jS.....class..
105a0 94 8c 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 53 53 4c 42 69 6f 2e 64 6f 5f 68 61 6e 64 73 68 ...M2Crypto.BIO.SSLBio.do_handsh
105c0 61 6b 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 42 ake.jS.....method.....M2Crypto.B
105e0 49 4f 2e 53 53 4c 42 69 6f 2e 73 65 74 5f 73 73 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 IO.SSLBio.set_ssl.jS.....method.
10600 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 94 6a 53 02 00 00 8c ....M2Crypto.BIO.openfile.jS....
10620 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 42 4e 94 6a 53 02 00 00 6a .function.....M2Crypto.BN.jS...j
10640 41 14 00 00 86 94 8c 10 4d 32 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 94 6a 53 02 00 00 8c 08 A.......M2Crypto.BN.rand.jS.....
10660 66 75 6e 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 5f 72 61 function.....M2Crypto.BN.rand_ra
10680 6e 67 65 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 15 4d 32 43 72 79 70 74 6f nge.jS.....function.....M2Crypto
106a0 2e 42 4e 2e 72 61 6e 64 66 6e 61 6d 65 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 .BN.randfname.jS.....function...
106c0 8c 0b 4d 32 43 72 79 70 74 6f 2e 44 48 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 0e 4d 32 43 72 ..M2Crypto.DH.jS...jA.......M2Cr
106e0 79 70 74 6f 2e 44 48 2e 44 48 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1b 4d 32 43 72 ypto.DH.DH.jS.....class.....M2Cr
10700 79 70 74 6f 2e 44 48 2e 44 48 2e 63 68 65 63 6b 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 06 6d ypto.DH.DH.check_params.jS.....m
10720 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 63 6f 6d 70 75 74 65 ethod.....M2Crypto.DH.DH.compute
10740 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e _key.jS.....method.....M2Crypto.
10760 44 48 2e 44 48 2e 67 65 6e 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 DH.DH.gen_key.jS.....method.....
10780 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 6d 32 5f 64 68 5f 66 72 65 65 94 6a 53 02 00 00 8c M2Crypto.DH.DH.m2_dh_free.jS....
107a0 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 70 72 69 6e 74 .method.....M2Crypto.DH.DH.print
107c0 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 13 4d 32 43 72 79 70 _params.jS.....method.....M2Cryp
107e0 74 6f 2e 44 48 2e 44 48 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 to.DH.DHError.jS.....exception..
10800 94 8c 16 4d 32 43 72 79 70 74 6f 2e 44 48 2e 67 65 6e 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c ...M2Crypto.DH.gen_params.jS....
10820 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 48 2e 6c 6f 61 64 5f 70 .function.....M2Crypto.DH.load_p
10840 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1b 4d 32 43 72 79 70 arams.jS.....function.....M2Cryp
10860 74 6f 2e 44 48 2e 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e to.DH.load_params_bio.jS.....fun
10880 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 44 48 2e 73 65 74 5f 70 61 72 61 6d 73 ction.....M2Crypto.DH.set_params
108a0 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 44 53 .jS.....function.....M2Crypto.DS
108c0 41 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 10 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 A.jS...jA.......M2Crypto.DSA.DSA
108e0 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 .jS.....class.....M2Crypto.DSA.D
10900 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 4d SA.check_key.jS.....method.....M
10920 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 67 65 6e 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 2Crypto.DSA.DSA.gen_key.jS.....m
10940 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 6d 32 5f 64 73 ethod.....M2Crypto.DSA.DSA.m2_ds
10960 61 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 a_free.jS.....method.....M2Crypt
10980 6f 2e 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 o.DSA.DSA.save_key.jS.....method
109a0 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 .....M2Crypto.DSA.DSA.save_key_b
109c0 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 io.jS.....method.....M2Crypto.DS
109e0 41 2e 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 A.DSA.save_params.jS.....method.
10a00 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 ....M2Crypto.DSA.DSA.save_params
10a20 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e _bio.jS.....method.....M2Crypto.
10a40 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 DSA.DSA.save_pub_key.jS.....meth
10a60 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 70 75 62 od....!M2Crypto.DSA.DSA.save_pub
10a80 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 _key_bio.jS.....method.....M2Cry
10aa0 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 65 74 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 06 6d 65 pto.DSA.DSA.set_params.jS.....me
10ac0 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 69 67 6e 94 6a thod.....M2Crypto.DSA.DSA.sign.j
10ae0 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 S.....method.....M2Crypto.DSA.DS
10b00 41 2e 73 69 67 6e 5f 61 73 6e 31 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 A.sign_asn1.jS.....method.....M2
10b20 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 76 65 72 69 66 79 94 6a 53 02 00 00 8c 06 6d 65 74 Crypto.DSA.DSA.verify.jS.....met
10b40 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 76 65 72 69 66 79 5f hod.....M2Crypto.DSA.DSA.verify_
10b60 61 73 6e 31 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e asn1.jS.....method.....M2Crypto.
10b80 44 53 41 2e 44 53 41 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 DSA.DSAError.jS.....exception...
10ba0 8c 14 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 94 6a 53 02 00 00 8c 05 63 6c ..M2Crypto.DSA.DSA_pub.jS.....cl
10bc0 61 73 73 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 63 68 65 ass.....M2Crypto.DSA.DSA_pub.che
10be0 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 ck_key.jS.....method.....M2Crypt
10c00 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 o.DSA.DSA_pub.save_key.jS.....me
10c20 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 61 thod....!M2Crypto.DSA.DSA_pub.sa
10c40 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 ve_key_bio.jS.....method.....M2C
10c60 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 69 67 6e 94 6a 53 02 00 00 8c 06 6d 65 rypto.DSA.DSA_pub.sign.jS.....me
10c80 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 69 thod.....M2Crypto.DSA.DSA_pub.si
10ca0 67 6e 5f 61 73 6e 31 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 gn_asn1.jS.....method.....M2Cryp
10cc0 74 6f 2e 44 53 41 2e 67 65 6e 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f to.DSA.gen_params.jS.....functio
10ce0 6e 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 n.....M2Crypto.DSA.load_key.jS..
10d00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 ...function.....M2Crypto.DSA.loa
10d20 64 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 18 4d 32 d_key_bio.jS.....function.....M2
10d40 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 66 75 Crypto.DSA.load_params.jS.....fu
10d60 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 61 72 nction.....M2Crypto.DSA.load_par
10d80 61 6d 73 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 ams_bio.jS.....function.....M2Cr
10da0 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 08 66 75 6e ypto.DSA.load_pub_key.jS.....fun
10dc0 63 74 69 6f 6e 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 75 62 5f ction.....M2Crypto.DSA.load_pub_
10de0 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 20 4d 32 43 72 key_bio.jS.....function.....M2Cr
10e00 79 70 74 6f 2e 44 53 41 2e 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 6a 53 02 ypto.DSA.pub_key_from_params.jS.
10e20 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 73 65 ....function.....M2Crypto.DSA.se
10e40 74 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0b 4d 32 43 t_params.jS.....function.....M2C
10e60 72 79 70 74 6f 2e 45 43 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 0e 4d 32 43 72 79 70 74 6f 2e rypto.EC.jS...jA.......M2Crypto.
10e80 45 43 2e 45 43 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e EC.EC.jS.....class.....M2Crypto.
10ea0 45 43 2e 45 43 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 4d EC.EC.as_pem.jS.....method.....M
10ec0 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 2Crypto.EC.EC.check_key.jS.....m
10ee0 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 63 6f 6d 70 75 74 65 ethod.....M2Crypto.EC.EC.compute
10f00 5f 64 68 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 16 4d 32 43 72 79 70 _dh_key.jS.....method.....M2Cryp
10f20 74 6f 2e 45 43 2e 45 43 2e 67 65 6e 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 to.EC.EC.gen_key.jS.....method..
10f40 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 6d 32 5f 65 63 5f 6b 65 79 5f 66 72 65 65 ...M2Crypto.EC.EC.m2_ec_key_free
10f60 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 12 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 .jS.....method.....M2Crypto.EC.E
10f80 43 2e 70 75 62 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f C.pub.jS.....method.....M2Crypto
10fa0 2e 45 43 2e 45 43 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 .EC.EC.save_key.jS.....method...
10fc0 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 ..M2Crypto.EC.EC.save_key_bio.jS
10fe0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 .....method.....M2Crypto.EC.EC.s
11000 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 ave_pub_key.jS.....method.....M2
11020 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 Crypto.EC.EC.save_pub_key_bio.jS
11040 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 .....method.....M2Crypto.EC.EC.s
11060 69 67 6e 5f 64 73 61 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 ign_dsa.jS.....method.....M2Cryp
11080 74 6f 2e 45 43 2e 45 43 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 94 6a 53 02 00 00 8c 06 6d 65 to.EC.EC.sign_dsa_asn1.jS.....me
110a0 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 76 65 72 69 66 79 5f 64 thod.....M2Crypto.EC.EC.verify_d
110c0 73 61 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 43 sa.jS.....method.....M2Crypto.EC
110e0 2e 45 43 2e 76 65 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f .EC.verify_dsa_asn1.jS.....metho
11100 64 94 86 94 8c 13 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 45 72 72 6f 72 94 6a 53 02 00 00 8c d.....M2Crypto.EC.ECError.jS....
11120 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 12 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 .exception.....M2Crypto.EC.EC_pu
11140 62 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 b.jS.....class.....M2Crypto.EC.E
11160 43 5f 70 75 62 2e 67 65 74 5f 64 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a C_pub.get_der.jS.....method.....
11180 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 2e 67 65 74 5f 6b 65 79 94 6a 53 02 00 00 M2Crypto.EC.EC_pub.get_key.jS...
111a0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 2e ..method.....M2Crypto.EC.EC_pub.
111c0 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 save_key.jS.....method.....M2Cry
111e0 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 pto.EC.EC_pub.save_key_bio.jS...
11200 8c 06 6d 65 74 68 6f 64 94 86 94 8c 14 4d 32 43 72 79 70 74 6f 2e 45 43 2e 65 63 5f 65 72 72 6f ..method.....M2Crypto.EC.ec_erro
11220 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 r.jS.....function.....M2Crypto.E
11240 43 2e 67 65 6e 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c C.gen_params.jS.....function....
11260 1e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 67 65 74 5f 62 75 69 6c 74 69 6e 5f 63 75 72 76 65 73 94 .M2Crypto.EC.get_builtin_curves.
11280 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 14 4d 32 43 72 79 70 74 6f 2e 45 43 2e jS.....function.....M2Crypto.EC.
112a0 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 18 4d 32 43 load_key.jS.....function.....M2C
112c0 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e rypto.EC.load_key_bio.jS.....fun
112e0 63 74 69 6f 6e 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 73 ction.....M2Crypto.EC.load_key_s
11300 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 22 4d 32 43 72 79 70 tring.jS.....function...."M2Cryp
11320 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 53 02 to.EC.load_key_string_pubkey.jS.
11340 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 ....function.....M2Crypto.EC.loa
11360 64 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 d_pub_key.jS.....function.....M2
11380 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 Crypto.EC.load_pub_key_bio.jS...
113a0 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 43 2e 70 75 62 5f 6b ..function.....M2Crypto.EC.pub_k
113c0 65 79 5f 66 72 6f 6d 5f 64 65 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1f ey_from_der.jS.....function.....
113e0 4d 32 43 72 79 70 74 6f 2e 45 43 2e 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 M2Crypto.EC.pub_key_from_params.
11400 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 56 50 jS.....function.....M2Crypto.EVP
11420 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 13 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 .jS...jA.......M2Crypto.EVP.Ciph
11440 65 72 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 er.jS.....class.....M2Crypto.EVP
11460 2e 43 69 70 68 65 72 2e 66 69 6e 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 .Cipher.final.jS.....method....&
11480 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 6d 32 5f 63 69 70 68 65 72 5f 63 74 M2Crypto.EVP.Cipher.m2_cipher_ct
114a0 78 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 x_free.jS.....method.....M2Crypt
114c0 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 73 65 74 5f 70 61 64 64 69 6e 67 94 6a 53 02 00 00 8c 06 o.EVP.Cipher.set_padding.jS.....
114e0 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 75 method.....M2Crypto.EVP.Cipher.u
11500 70 64 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f pdate.jS.....method.....M2Crypto
11520 2e 45 56 50 2e 45 56 50 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 .EVP.EVPError.jS.....exception..
11540 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 94 6a 53 02 00 00 8c 05 63 6c 61 73 ...M2Crypto.EVP.HMAC.jS.....clas
11560 73 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 64 69 67 65 73 74 94 6a s.....M2Crypto.EVP.HMAC.digest.j
11580 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d S.....method.....M2Crypto.EVP.HM
115a0 41 43 2e 66 69 6e 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 AC.final.jS.....method...."M2Cry
115c0 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 6d 32 5f 68 6d 61 63 5f 63 74 78 5f 66 72 65 65 94 6a 53 pto.EVP.HMAC.m2_hmac_ctx_free.jS
115e0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 .....method.....M2Crypto.EVP.HMA
11600 43 2e 72 65 73 65 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 4d 32 43 72 79 70 C.reset.jS.....method.....M2Cryp
11620 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 75 70 64 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 to.EVP.HMAC.update.jS.....method
11640 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 94 .....M2Crypto.EVP.MessageDigest.
11660 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 jS.....class....!M2Crypto.EVP.Me
11680 73 73 61 67 65 44 69 67 65 73 74 2e 64 69 67 65 73 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 ssageDigest.digest.jS.....method
116a0 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e .....M2Crypto.EVP.MessageDigest.
116c0 66 69 6e 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 29 4d 32 43 72 79 70 74 6f final.jS.....method....)M2Crypto
116e0 2e 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 .EVP.MessageDigest.m2_md_ctx_fre
11700 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 45 56 50 e.jS.....method....!M2Crypto.EVP
11720 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 75 70 64 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 .MessageDigest.update.jS.....met
11740 68 6f 64 94 86 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 94 6a 53 02 00 00 8c hod.....M2Crypto.EVP.PKey.jS....
11760 05 63 6c 61 73 73 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 73 5f .class.....M2Crypto.EVP.PKey.as_
11780 64 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 der.jS.....method.....M2Crypto.E
117a0 56 50 2e 50 4b 65 79 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c VP.PKey.as_pem.jS.....method....
117c0 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 73 73 69 67 6e 5f 72 73 61 94 6a 53 .M2Crypto.EVP.PKey.assign_rsa.jS
117e0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 .....method.....M2Crypto.EVP.PKe
11800 79 2e 66 69 6e 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 y.final.jS.....method.....M2Cryp
11820 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 67 65 74 5f 6d 6f 64 75 6c 75 73 94 6a 53 02 00 00 8c 06 6d to.EVP.PKey.get_modulus.jS.....m
11840 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 67 65 74 5f ethod.....M2Crypto.EVP.PKey.get_
11860 72 73 61 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 45 rsa.jS.....method.....M2Crypto.E
11880 56 50 2e 50 4b 65 79 2e 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 VP.PKey.m2_md_ctx_free.jS.....me
118a0 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 6d 32 5f 70 6b thod.....M2Crypto.EVP.PKey.m2_pk
118c0 65 79 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 ey_free.jS.....method.....M2Cryp
118e0 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 72 65 73 65 74 5f 63 6f 6e 74 65 78 74 94 6a 53 02 00 00 8c to.EVP.PKey.reset_context.jS....
11900 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 61 .method.....M2Crypto.EVP.PKey.sa
11920 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 ve_key.jS.....method.....M2Crypt
11940 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d o.EVP.PKey.save_key_bio.jS.....m
11960 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 69 67 6e ethod.....M2Crypto.EVP.PKey.sign
11980 5f 66 69 6e 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 70 74 _final.jS.....method.....M2Crypt
119a0 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 69 67 6e 5f 69 6e 69 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 o.EVP.PKey.sign_init.jS.....meth
119c0 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 69 67 6e 5f 75 70 od.....M2Crypto.EVP.PKey.sign_up
119e0 64 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e date.jS.....method.....M2Crypto.
11a00 45 56 50 2e 50 4b 65 79 2e 73 69 7a 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 EVP.PKey.size.jS.....method.....
11a20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 75 70 64 61 74 65 94 6a 53 02 00 00 8c 06 M2Crypto.EVP.PKey.update.jS.....
11a40 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 76 65 72 method.....M2Crypto.EVP.PKey.ver
11a60 69 66 79 5f 66 69 6e 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 ify_final.jS.....method.....M2Cr
11a80 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 76 65 72 69 66 79 5f 69 6e 69 74 94 6a 53 02 00 00 8c ypto.EVP.PKey.verify_init.jS....
11aa0 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 76 65 .method.....M2Crypto.EVP.PKey.ve
11ac0 72 69 66 79 5f 75 70 64 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 11 4d 32 rify_update.jS.....method.....M2
11ae0 43 72 79 70 74 6f 2e 45 56 50 2e 68 6d 61 63 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 Crypto.EVP.hmac.jS.....function.
11b00 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c ....M2Crypto.EVP.load_key.jS....
11b20 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f .function.....M2Crypto.EVP.load_
11b40 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 20 4d 32 43 72 key_bio.jS.....function.....M2Cr
11b60 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 6b 65 79 94 6a 53 02 ypto.EVP.load_key_bio_pubkey.jS.
11b80 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f ....function.....M2Crypto.EVP.lo
11ba0 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 ad_key_string.jS.....function...
11bc0 8c 23 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 .#M2Crypto.EVP.load_key_string_p
11be0 75 62 6b 65 79 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 13 4d 32 43 72 79 70 ubkey.jS.....function.....M2Cryp
11c00 74 6f 2e 45 56 50 2e 70 62 6b 64 66 32 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 to.EVP.pbkdf2.jS.....function...
11c20 8c 0f 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 16 ..M2Crypto.Engine.jS...jA.......
11c40 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 94 6a 53 02 00 00 8c 05 63 6c M2Crypto.Engine.Engine.jS.....cl
11c60 61 73 73 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 63 ass....&M2Crypto.Engine.Engine.c
11c80 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c trl_cmd_string.jS.....method....
11ca0 1d 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 66 69 6e 69 73 68 94 6a .M2Crypto.Engine.Engine.finish.j
11cc0 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 S.....method.....M2Crypto.Engine
11ce0 2e 45 6e 67 69 6e 65 2e 67 65 74 5f 69 64 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c .Engine.get_id.jS.....method....
11d00 1f 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 67 65 74 5f 6e 61 6d 65 .M2Crypto.Engine.Engine.get_name
11d20 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 .jS.....method.....M2Crypto.Engi
11d40 6e 65 2e 45 6e 67 69 6e 65 2e 69 6e 69 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c ne.Engine.init.jS.....method....
11d60 27 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 63 65 72 'M2Crypto.Engine.Engine.load_cer
11d80 74 69 66 69 63 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 27 4d 32 43 72 79 tificate.jS.....method....'M2Cry
11da0 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 70 72 69 76 61 74 65 5f 6b pto.Engine.Engine.load_private_k
11dc0 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 45 6e ey.jS.....method....&M2Crypto.En
11de0 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 70 75 62 6c 69 63 5f 6b 65 79 94 6a 53 02 00 gine.Engine.load_public_key.jS..
11e00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e ...method....%M2Crypto.Engine.En
11e20 67 69 6e 65 2e 6d 32 5f 65 6e 67 69 6e 65 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f gine.m2_engine_free.jS.....metho
11e40 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 73 65 74 d...."M2Crypto.Engine.Engine.set
11e60 5f 64 65 66 61 75 6c 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 79 _default.jS.....method.....M2Cry
11e80 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 pto.Engine.EngineError.jS.....ex
11ea0 63 65 70 74 69 6f 6e 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 63 6c 65 61 ception.....M2Crypto.Engine.clea
11ec0 6e 75 70 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f nup.jS.....function.....M2Crypto
11ee0 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 6a 53 02 00 00 8c 08 66 75 6e 63 .Engine.load_dynamic.jS.....func
11f00 74 69 6f 6e 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 64 79 tion....#M2Crypto.Engine.load_dy
11f20 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c namic_engine.jS.....function....
11f40 1c 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 94 6a 53 .M2Crypto.Engine.load_openssl.jS
11f60 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 6a .....function.....M2Crypto.Err.j
11f80 53 02 00 00 6a 41 14 00 00 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 4d 32 43 72 79 70 S...jA.......M2Crypto.Err.M2Cryp
11fa0 74 6f 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 15 4d 32 43 toError.jS.....exception.....M2C
11fc0 72 79 70 74 6f 2e 45 72 72 2e 53 53 4c 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 rypto.Err.SSLError.jS.....except
11fe0 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 94 6a ion.....M2Crypto.Err.get_error.j
12000 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e S.....function.....M2Crypto.Err.
12020 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 get_error_code.jS.....function..
12040 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 94 6a ...M2Crypto.Err.get_error_func.j
12060 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e S.....function.....M2Crypto.Err.
12080 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 get_error_lib.jS.....function...
120a0 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 ..M2Crypto.Err.get_error_message
120c0 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 72 .jS.....function.....M2Crypto.Er
120e0 72 2e 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 r.get_error_reason.jS.....functi
12100 6f 6e 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 78 35 30 39 5f 76 65 72 on...."M2Crypto.Err.get_x509_ver
12120 69 66 79 5f 65 72 72 6f 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 ify_error.jS.....function.....M2
12140 43 72 79 70 74 6f 2e 45 72 72 2e 70 65 65 6b 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 53 02 00 00 Crypto.Err.peek_error_code.jS...
12160 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 43 34 94 6a 53 02 00 ..function.....M2Crypto.RC4.jS..
12180 00 6a 41 14 00 00 86 94 8c 10 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 94 6a 53 02 00 00 .jA.......M2Crypto.RC4.RC4.jS...
121a0 8c 05 63 6c 61 73 73 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 66 69 6e ..class.....M2Crypto.RC4.RC4.fin
121c0 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 43 al.jS.....method.....M2Crypto.RC
121e0 34 2e 52 43 34 2e 72 63 34 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 4.RC4.rc4_free.jS.....method....
12200 18 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 73 65 74 5f 6b 65 79 94 6a 53 02 00 00 8c .M2Crypto.RC4.RC4.set_key.jS....
12220 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 75 70 64 .method.....M2Crypto.RC4.RC4.upd
12240 61 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 ate.jS.....method.....M2Crypto.R
12260 53 41 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 10 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 SA.jS...jA.......M2Crypto.RSA.RS
12280 41 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e A.jS.....class.....M2Crypto.RSA.
122a0 52 53 41 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 RSA.as_pem.jS.....method.....M2C
122c0 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d rypto.RSA.RSA.check_key.jS.....m
122e0 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 6d 32 5f 72 73 ethod.....M2Crypto.RSA.RSA.m2_rs
12300 61 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 a_free.jS.....method.....M2Crypt
12320 6f 2e 52 53 41 2e 52 53 41 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 53 02 00 00 8c o.RSA.RSA.private_decrypt.jS....
12340 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 72 69 .method.....M2Crypto.RSA.RSA.pri
12360 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 14 4d vate_encrypt.jS.....method.....M
12380 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 75 62 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 2Crypto.RSA.RSA.pub.jS.....metho
123a0 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 75 62 6c 69 63 5f 64 65 d.....M2Crypto.RSA.RSA.public_de
123c0 63 72 79 70 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f crypt.jS.....method.....M2Crypto
123e0 2e 52 53 41 2e 52 53 41 2e 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 94 6a 53 02 00 00 8c 06 6d .RSA.RSA.public_encrypt.jS.....m
12400 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f ethod.....M2Crypto.RSA.RSA.save_
12420 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 key.jS.....method.....M2Crypto.R
12440 53 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f SA.RSA.save_key_bio.jS.....metho
12460 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f d.....M2Crypto.RSA.RSA.save_key_
12480 64 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 52 der.jS.....method....!M2Crypto.R
124a0 53 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d SA.RSA.save_key_der_bio.jS.....m
124c0 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f ethod.....M2Crypto.RSA.RSA.save_
124e0 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 pem.jS.....method.....M2Crypto.R
12500 53 41 2e 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f SA.RSA.save_pub_key.jS.....metho
12520 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 70 75 62 5f d....!M2Crypto.RSA.RSA.save_pub_
12540 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 key_bio.jS.....method.....M2Cryp
12560 74 6f 2e 52 53 41 2e 52 53 41 2e 73 69 67 6e 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 to.RSA.RSA.sign.jS.....method...
12580 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 69 67 6e 5f 72 73 61 73 73 61 5f 70 ..M2Crypto.RSA.RSA.sign_rsassa_p
125a0 73 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 53 ss.jS.....method.....M2Crypto.RS
125c0 41 2e 52 53 41 2e 76 65 72 69 66 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d A.RSA.verify.jS.....method...."M
125e0 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 76 65 72 69 66 79 5f 72 73 61 73 73 61 5f 70 73 2Crypto.RSA.RSA.verify_rsassa_ps
12600 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 52 53 41 s.jS.....method.....M2Crypto.RSA
12620 2e 52 53 41 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 14 4d .RSAError.jS.....exception.....M
12640 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 2Crypto.RSA.RSA_pub.jS.....class
12660 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f .....M2Crypto.RSA.RSA_pub.check_
12680 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 52 key.jS.....method....$M2Crypto.R
126a0 53 41 2e 52 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 53 02 00 00 SA.RSA_pub.private_decrypt.jS...
126c0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 ..method....$M2Crypto.RSA.RSA_pu
126e0 62 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 b.private_encrypt.jS.....method.
12700 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 ....M2Crypto.RSA.RSA_pub.save_ke
12720 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 52 53 41 y.jS.....method....!M2Crypto.RSA
12740 2e 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 .RSA_pub.save_key_bio.jS.....met
12760 68 6f 64 94 86 94 8c 14 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 67 65 6e 5f 6b 65 79 94 6a 53 02 hod.....M2Crypto.RSA.gen_key.jS.
12780 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6b 65 ....function.....M2Crypto.RSA.ke
127a0 79 67 65 6e 5f 63 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 ygen_callback.jS.....function...
127c0 8c 15 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c 08 66 ..M2Crypto.RSA.load_key.jS.....f
127e0 75 6e 63 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 unction.....M2Crypto.RSA.load_ke
12800 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 y_bio.jS.....function.....M2Cryp
12820 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 to.RSA.load_key_string.jS.....fu
12840 6e 63 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 70 75 62 nction.....M2Crypto.RSA.load_pub
12860 5f 6b 65 79 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1d 4d 32 43 72 79 70 74 _key.jS.....function.....M2Crypt
12880 6f 2e 52 53 41 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 o.RSA.load_pub_key_bio.jS.....fu
128a0 6e 63 74 69 6f 6e 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6e 65 77 5f 70 75 62 5f nction.....M2Crypto.RSA.new_pub_
128c0 6b 65 79 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f key.jS.....function.....M2Crypto
128e0 2e 52 53 41 2e 72 73 61 5f 65 72 72 6f 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 .RSA.rsa_error.jS.....function..
12900 94 8c 0d 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 17 4d ...M2Crypto.Rand.jS...jA.......M
12920 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 73 65 65 64 94 6a 53 02 00 00 8c 08 66 75 2Crypto.Rand.rand_seed.jS.....fu
12940 6e 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 61 64 nction.....M2Crypto.Rand.rand_ad
12960 64 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 d.jS.....function.....M2Crypto.R
12980 61 6e 64 2e 6c 6f 61 64 5f 66 69 6c 65 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 and.load_file.jS.....function...
129a0 8c 17 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 73 61 76 65 5f 66 69 6c 65 94 6a 53 02 00 00 8c ..M2Crypto.Rand.save_file.jS....
129c0 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 .function.....M2Crypto.Rand.rand
129e0 5f 62 79 74 65 73 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1f 4d 32 43 72 79 _bytes.jS.....function.....M2Cry
12a00 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 94 6a 53 02 00 00 pto.Rand.rand_pseudo_bytes.jS...
12a20 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e ..function.....M2Crypto.Rand.ran
12a40 64 5f 66 69 6c 65 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 19 d_file_name.jS.....function.....
12a60 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 73 74 61 74 75 73 94 6a 53 02 00 00 8c M2Crypto.Rand.rand_status.jS....
12a80 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 6a 53 02 .function.....M2Crypto.SMIME.jS.
12aa0 00 00 6a 41 14 00 00 86 94 8c 15 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 43 69 70 68 65 72 ..jA.......M2Crypto.SMIME.Cipher
12ac0 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 .jS.....class.....M2Crypto.SMIME
12ae0 2e 50 4b 43 53 37 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 21 4d 32 43 72 79 70 74 6f .PKCS7.jS.....class....!M2Crypto
12b00 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 67 65 74 30 5f 73 69 67 6e 65 72 73 94 6a 53 02 00 00 8c .SMIME.PKCS7.get0_signers.jS....
12b20 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 .method...."M2Crypto.SMIME.PKCS7
12b40 2e 6d 32 5f 70 6b 63 73 37 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c .m2_pkcs7_free.jS.....method....
12b60 19 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 74 79 70 65 94 6a 53 02 00 00 .M2Crypto.SMIME.PKCS7.type.jS...
12b80 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 ..method.....M2Crypto.SMIME.PKCS
12ba0 37 2e 77 72 69 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 7.write.jS.....method.....M2Cryp
12bc0 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 77 72 69 74 65 5f 64 65 72 94 6a 53 02 00 00 8c 06 to.SMIME.PKCS7.write_der.jS.....
12be0 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 5f method.....M2Crypto.SMIME.PKCS7_
12c00 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 14 4d 32 43 72 79 Error.jS.....exception.....M2Cry
12c20 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c pto.SMIME.SMIME.jS.....class....
12c40 1c 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 64 65 63 72 79 70 74 94 6a 53 .M2Crypto.SMIME.SMIME.decrypt.jS
12c60 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 .....method.....M2Crypto.SMIME.S
12c80 4d 49 4d 45 2e 65 6e 63 72 79 70 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d MIME.encrypt.jS.....method.....M
12ca0 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 2Crypto.SMIME.SMIME.load_key.jS.
12cc0 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d ....method....!M2Crypto.SMIME.SM
12ce0 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 IME.load_key_bio.jS.....method..
12d00 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 73 65 74 5f 63 69 70 68 ...M2Crypto.SMIME.SMIME.set_ciph
12d20 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d er.jS.....method....#M2Crypto.SM
12d40 49 4d 45 2e 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 53 02 00 00 8c 06 IME.SMIME.set_x509_stack.jS.....
12d60 6d 65 74 68 6f 64 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e method....#M2Crypto.SMIME.SMIME.
12d80 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c set_x509_store.jS.....method....
12da0 19 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 73 69 67 6e 94 6a 53 02 00 00 .M2Crypto.SMIME.SMIME.sign.jS...
12dc0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d ..method....!M2Crypto.SMIME.SMIM
12de0 45 2e 75 6e 73 65 74 5f 63 69 70 68 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c E.unset_cipher.jS.....method....
12e00 1e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 6b 65 79 94 .M2Crypto.SMIME.SMIME.unset_key.
12e20 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 jS.....method....%M2Crypto.SMIME
12e40 2e 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 53 02 00 00 8c 06 6d .SMIME.unset_x509_stack.jS.....m
12e60 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 75 ethod....%M2Crypto.SMIME.SMIME.u
12e80 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 nset_x509_store.jS.....method...
12ea0 8c 1b 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 76 65 72 69 66 79 94 6a 53 ..M2Crypto.SMIME.SMIME.verify.jS
12ec0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 .....method.....M2Crypto.SMIME.S
12ee0 4d 49 4d 45 2e 77 72 69 74 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 MIME.write.jS.....method.....M2C
12f00 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 5f 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 rypto.SMIME.SMIME_Error.jS.....e
12f20 78 63 65 70 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 6c 6f 61 64 xception.....M2Crypto.SMIME.load
12f40 5f 70 6b 63 73 37 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1d 4d 32 43 72 79 _pkcs7.jS.....function.....M2Cry
12f60 70 74 6f 2e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 53 02 00 00 8c 08 pto.SMIME.load_pkcs7_bio.jS.....
12f80 66 75 6e 63 74 69 6f 6e 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 6c 6f 61 64 function....!M2Crypto.SMIME.load
12fa0 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 _pkcs7_bio_der.jS.....function..
12fc0 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 72 ...M2Crypto.SMIME.load_pkcs7_der
12fe0 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 53 4d .jS.....function.....M2Crypto.SM
13000 49 4d 45 2e 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 94 6a 53 02 00 00 8c 08 66 75 6e 63 IME.smime_load_pkcs7.jS.....func
13020 74 69 6f 6e 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 73 6d 69 6d 65 5f 6c 6f tion....#M2Crypto.SMIME.smime_lo
13040 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c ad_pkcs7_bio.jS.....function....
13060 18 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 74 65 78 74 5f 63 72 6c 66 94 6a 53 02 00 00 8c .M2Crypto.SMIME.text_crlf.jS....
13080 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 74 65 78 .function.....M2Crypto.SMIME.tex
130a0 74 5f 63 72 6c 66 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0d 4d t_crlf_bio.jS.....function.....M
130c0 32 43 72 79 70 74 6f 2e 58 35 30 39 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 11 4d 32 43 72 79 2Crypto.X509.jS...jA.......M2Cry
130e0 70 74 6f 2e 58 35 30 39 2e 43 52 4c 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 19 4d 32 pto.X509.CRL.jS.....class.....M2
13100 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 8c 06 6d Crypto.X509.CRL.as_text.jS.....m
13120 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 2e 6d 32 5f 78 ethod...."M2Crypto.X509.CRL.m2_x
13140 35 30 39 5f 63 72 6c 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 15 4d 509_crl_free.jS.....method.....M
13160 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 94 6a 53 02 00 00 8c 05 63 6c 61 73 2Crypto.X509.Request.jS.....clas
13180 73 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 61 64 64 5f s....$M2Crypto.X509.Request.add_
131a0 65 78 74 65 6e 73 69 6f 6e 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 extensions.jS.....method.....M2C
131c0 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c rypto.X509.Request.as_der.jS....
131e0 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 .method.....M2Crypto.X509.Reques
13200 74 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 t.as_pem.jS.....method.....M2Cry
13220 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 8c 06 pto.X509.Request.as_text.jS.....
13240 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 method.....M2Crypto.X509.Request
13260 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 .get_pubkey.jS.....method....!M2
13280 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 67 65 74 5f 73 75 62 6a 65 63 74 94 Crypto.X509.Request.get_subject.
132a0 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e jS.....method....!M2Crypto.X509.
132c0 52 65 71 75 65 73 74 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f Request.get_version.jS.....metho
132e0 64 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 6d 32 5f 78 d....&M2Crypto.X509.Request.m2_x
13300 35 30 39 5f 72 65 71 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 509_req_free.jS.....method.....M
13320 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 73 61 76 65 94 6a 53 02 00 00 8c 2Crypto.X509.Request.save.jS....
13340 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 .method.....M2Crypto.X509.Reques
13360 74 2e 73 61 76 65 5f 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 t.save_pem.jS.....method.....M2C
13380 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 53 rypto.X509.Request.set_pubkey.jS
133a0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 .....method....!M2Crypto.X509.Re
133c0 71 75 65 73 74 2e 73 65 74 5f 73 75 62 6a 65 63 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 quest.set_subject.jS.....method.
133e0 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 73 65 74 5f 73 75 ...&M2Crypto.X509.Request.set_su
13400 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 bject_name.jS.....method....!M2C
13420 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a rypto.X509.Request.set_version.j
13440 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 S.....method.....M2Crypto.X509.R
13460 65 71 75 65 73 74 2e 73 69 67 6e 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1c 4d 32 equest.sign.jS.....method.....M2
13480 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 76 65 72 69 66 79 94 6a 53 02 00 00 Crypto.X509.Request.verify.jS...
134a0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 12 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 94 ..method.....M2Crypto.X509.X509.
134c0 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 jS.....class.....M2Crypto.X509.X
134e0 35 30 39 2e 61 64 64 5f 65 78 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 19 4d 32 509.add_ext.jS.....method.....M2
13500 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 06 6d Crypto.X509.X509.as_der.jS.....m
13520 65 74 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 61 73 5f ethod.....M2Crypto.X509.X509.as_
13540 70 65 6d 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 pem.jS.....method.....M2Crypto.X
13560 35 30 39 2e 58 35 30 39 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 509.X509.as_text.jS.....method..
13580 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 63 68 65 63 6b 5f 63 61 94 6a ...M2Crypto.X509.X509.check_ca.j
135a0 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 S.....method.....M2Crypto.X509.X
135c0 35 30 39 2e 63 68 65 63 6b 5f 70 75 72 70 6f 73 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 509.check_purpose.jS.....method.
135e0 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 65 78 74 94 6a ....M2Crypto.X509.X509.get_ext.j
13600 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 S.....method.....M2Crypto.X509.X
13620 35 30 39 2e 67 65 74 5f 65 78 74 5f 61 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 509.get_ext_at.jS.....method....
13640 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 63 6f 75 6e .M2Crypto.X509.X509.get_ext_coun
13660 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 t.jS.....method...."M2Crypto.X50
13680 39 2e 58 35 30 39 2e 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 94 6a 53 02 00 00 8c 06 6d 65 9.X509.get_fingerprint.jS.....me
136a0 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f thod.....M2Crypto.X509.X509.get_
136c0 69 73 73 75 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 issuer.jS.....method.....M2Crypt
136e0 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 53 02 00 00 8c o.X509.X509.get_not_after.jS....
13700 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 .method....!M2Crypto.X509.X509.g
13720 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d et_not_before.jS.....method.....
13740 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 53 M2Crypto.X509.X509.get_pubkey.jS
13760 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .....method....$M2Crypto.X509.X5
13780 30 39 2e 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 09.get_serial_number.jS.....meth
137a0 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 73 75 od.....M2Crypto.X509.X509.get_su
137c0 62 6a 65 63 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f bject.jS.....method.....M2Crypto
137e0 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 53 02 00 00 8c 06 6d 65 .X509.X509.get_version.jS.....me
13800 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 6d 32 5f 78 thod.....M2Crypto.X509.X509.m2_x
13820 35 30 39 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 509_free.jS.....method.....M2Cry
13840 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 61 76 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 pto.X509.X509.save.jS.....method
13860 94 86 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 61 76 65 5f 70 65 6d .....M2Crypto.X509.X509.save_pem
13880 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 .jS.....method.....M2Crypto.X509
138a0 2e 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 .X509.set_issuer.jS.....method..
138c0 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 .."M2Crypto.X509.X509.set_issuer
138e0 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f _name.jS.....method.....M2Crypto
13900 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 53 02 00 00 8c 06 .X509.X509.set_not_after.jS.....
13920 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 method....!M2Crypto.X509.X509.se
13940 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d t_not_before.jS.....method.....M
13960 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 53 02 2Crypto.X509.X509.set_pubkey.jS.
13980 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 ....method....$M2Crypto.X509.X50
139a0 39 2e 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 9.set_serial_number.jS.....metho
139c0 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 73 75 62 d.....M2Crypto.X509.X509.set_sub
139e0 6a 65 63 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e ject.jS.....method....#M2Crypto.
13a00 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 53 02 00 00 X509.X509.set_subject_name.jS...
13a20 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e ..method.....M2Crypto.X509.X509.
13a40 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 set_version.jS.....method.....M2
13a60 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 69 67 6e 94 6a 53 02 00 00 8c 06 6d 65 74 Crypto.X509.X509.sign.jS.....met
13a80 68 6f 64 94 86 94 8c 19 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 76 65 72 69 66 hod.....M2Crypto.X509.X509.verif
13aa0 79 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 y.jS.....method.....M2Crypto.X50
13ac0 39 2e 58 35 30 39 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 9.X509Error.jS.....exception....
13ae0 1c 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 94 6a 53 .M2Crypto.X509.X509_Extension.jS
13b00 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 29 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 .....class....)M2Crypto.X509.X50
13b20 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 65 74 5f 63 72 69 74 69 63 61 6c 94 6a 53 02 00 00 8c 06 9_Extension.get_critical.jS.....
13b40 6d 65 74 68 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 method....%M2Crypto.X509.X509_Ex
13b60 74 65 6e 73 69 6f 6e 2e 67 65 74 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 tension.get_name.jS.....method..
13b80 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e ..&M2Crypto.X509.X509_Extension.
13ba0 67 65 74 5f 76 61 6c 75 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 33 4d 32 43 72 get_value.jS.....method....3M2Cr
13bc0 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 6d 32 5f 78 35 30 39 ypto.X509.X509_Extension.m2_x509
13be0 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 _extension_free.jS.....method...
13c00 8c 29 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 73 .)M2Crypto.X509.X509_Extension.s
13c20 65 74 5f 63 72 69 74 69 63 61 6c 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 et_critical.jS.....method...."M2
13c40 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b Crypto.X509.X509_Extension_Stack
13c60 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e .jS.....class....<M2Crypto.X509.
13c80 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 6d 32 5f 73 6b 5f 78 35 30 39 5f X509_Extension_Stack.m2_sk_x509_
13ca0 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c extension_free.jS.....method....
13cc0 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 &M2Crypto.X509.X509_Extension_St
13ce0 61 63 6b 2e 70 6f 70 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 27 4d 32 43 72 79 70 ack.pop.jS.....method....'M2Cryp
13d00 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 75 73 to.X509.X509_Extension_Stack.pus
13d20 68 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 h.jS.....method.....M2Crypto.X50
13d40 39 2e 58 35 30 39 5f 4e 61 6d 65 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 28 4d 32 43 9.X509_Name.jS.....class....(M2C
13d60 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 61 64 64 5f 65 6e 74 72 79 5f 62 rypto.X509.X509_Name.add_entry_b
13d80 79 5f 74 78 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f y_txt.jS.....method.....M2Crypto
13da0 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 06 6d 65 .X509.X509_Name.as_der.jS.....me
13dc0 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 thod.....M2Crypto.X509.X509_Name
13de0 2e 61 73 5f 68 61 73 68 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 .as_hash.jS.....method.....M2Cry
13e00 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 pto.X509.X509_Name.as_text.jS...
13e20 8c 06 6d 65 74 68 6f 64 94 86 94 8c 23 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f ..method....#M2Crypto.X509.X509_
13e40 4e 61 6d 65 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 Name.entry_count.jS.....method..
13e60 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 67 65 74 5f 65 ..*M2Crypto.X509.X509_Name.get_e
13e80 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 29 ntries_by_nid.jS.....method....)
13ea0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 6d 32 5f 78 35 30 39 5f M2Crypto.X509.X509_Name.m2_x509_
13ec0 6e 61 6d 65 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1b 4d 32 43 72 name_free.jS.....method.....M2Cr
13ee0 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 6e 69 64 94 6a 53 02 00 00 8c 09 61 ypto.X509.X509_Name.nid.jS.....a
13f00 74 74 72 69 62 75 74 65 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f ttribute.....M2Crypto.X509.X509_
13f20 4e 61 6d 65 5f 45 6e 74 72 79 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 2b 4d 32 43 72 Name_Entry.jS.....class....+M2Cr
13f40 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 63 72 65 61 74 65 ypto.X509.X509_Name_Entry.create
13f60 5f 62 79 5f 74 78 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 4d 32 43 72 79 70 _by_txt.jS.....method....&M2Cryp
13f80 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 64 61 74 61 to.X509.X509_Name_Entry.get_data
13fa0 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 .jS.....method....(M2Crypto.X509
13fc0 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 6f 62 6a 65 63 74 94 6a 53 02 00 .X509_Name_Entry.get_object.jS..
13fe0 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 35 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 ...method....5M2Crypto.X509.X509
14000 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 _Name_Entry.m2_x509_name_entry_f
14020 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 ree.jS.....method....&M2Crypto.X
14040 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 73 65 74 5f 64 61 74 61 94 6a 53 02 509.X509_Name_Entry.set_data.jS.
14060 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 ....method....(M2Crypto.X509.X50
14080 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 73 65 74 5f 6f 62 6a 65 63 74 94 6a 53 02 00 00 8c 06 6d 9_Name_Entry.set_object.jS.....m
140a0 65 74 68 6f 64 94 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 ethod.....M2Crypto.X509.X509_Sta
140c0 63 6b 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 ck.jS.....class.....M2Crypto.X50
140e0 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 9.X509_Stack.as_der.jS.....metho
14100 64 94 86 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 6d d....(M2Crypto.X509.X509_Stack.m
14120 32 5f 73 6b 5f 78 35 30 39 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2_sk_x509_free.jS.....method....
14140 1c 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 53 .M2Crypto.X509.X509_Stack.pop.jS
14160 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .....method.....M2Crypto.X509.X5
14180 30 39 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 18 09_Stack.push.jS.....method.....
141a0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 94 6a 53 02 00 00 8c 05 M2Crypto.X509.X509_Store.jS.....
141c0 63 6c 61 73 73 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f class....!M2Crypto.X509.X509_Sto
141e0 72 65 2e 61 64 64 5f 63 65 72 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 re.add_cert.jS.....method....!M2
14200 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 2e 61 64 64 5f 78 35 30 39 94 Crypto.X509.X509_Store.add_x509.
14220 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e jS.....method...."M2Crypto.X509.
14240 58 35 30 39 5f 53 74 6f 72 65 2e 6c 6f 61 64 5f 69 6e 66 6f 94 6a 53 02 00 00 8c 06 6d 65 74 68 X509_Store.load_info.jS.....meth
14260 6f 64 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 2e od....'M2Crypto.X509.X509_Store.
14280 6c 6f 61 64 5f 6c 6f 63 61 74 69 6f 6e 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c load_locations.jS.....method....
142a0 2b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 2e 6d 32 5f 78 35 30 +M2Crypto.X509.X509_Store.m2_x50
142c0 39 5f 73 74 6f 72 65 5f 66 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 4d 9_store_free.jS.....method....&M
142e0 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 5f 76 65 72 69 2Crypto.X509.X509_Store.set_veri
14300 66 79 5f 63 62 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 20 4d 32 43 72 79 70 74 6f fy_cb.jS.....method.....M2Crypto
14320 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 94 6a 53 02 00 00 8c 05 .X509.X509_Store_Context.jS.....
14340 63 6c 61 73 73 94 86 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f class....+M2Crypto.X509.X509_Sto
14360 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 31 5f 63 68 61 69 6e 94 6a 53 02 00 00 8c 06 6d 65 74 re_Context.get1_chain.jS.....met
14380 68 6f 64 94 86 94 8c 31 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 hod....1M2Crypto.X509.X509_Store
143a0 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 94 6a 53 02 00 00 8c _Context.get_current_cert.jS....
143c0 06 6d 65 74 68 6f 64 94 86 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 .method....*M2Crypto.X509.X509_S
143e0 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 65 72 72 6f 72 94 6a 53 02 00 00 8c 06 6d 65 tore_Context.get_error.jS.....me
14400 74 68 6f 64 94 86 94 8c 30 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 thod....0M2Crypto.X509.X509_Stor
14420 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 94 6a 53 02 00 00 8c e_Context.get_error_depth.jS....
14440 06 6d 65 74 68 6f 64 94 86 94 8c 37 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 .method....7M2Crypto.X509.X509_S
14460 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 66 tore_Context.m2_x509_store_ctx_f
14480 72 65 65 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 ree.jS.....method.....M2Crypto.X
144a0 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 509.load_cert.jS.....function...
144c0 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 94 6a 53 ..M2Crypto.X509.load_cert_bio.jS
144e0 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e .....function...."M2Crypto.X509.
14500 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 6e 63 load_cert_der_string.jS.....func
14520 74 69 6f 6e 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 tion.....M2Crypto.X509.load_cert
14540 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 16 4d 32 43 72 _string.jS.....function.....M2Cr
14560 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 72 6c 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 ypto.X509.load_crl.jS.....functi
14580 6f 6e 94 86 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 65 71 75 65 73 on.....M2Crypto.X509.load_reques
145a0 74 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 t.jS.....function.....M2Crypto.X
145c0 35 30 39 2e 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 94 6a 53 02 00 00 8c 08 66 75 6e 63 509.load_request_bio.jS.....func
145e0 74 69 6f 6e 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 65 71 75 tion....%M2Crypto.X509.load_requ
14600 65 73 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 est_der_string.jS.....function..
14620 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 74 ..!M2Crypto.X509.load_request_st
14640 72 69 6e 67 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 1b 4d 32 43 72 79 70 74 ring.jS.....function.....M2Crypt
14660 6f 2e 58 35 30 39 2e 6e 65 77 5f 65 78 74 65 6e 73 69 6f 6e 94 6a 53 02 00 00 8c 08 66 75 6e 63 o.X509.new_extension.jS.....func
14680 74 69 6f 6e 94 86 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6e 65 77 5f 73 74 61 63 6b tion.....M2Crypto.X509.new_stack
146a0 5f 66 72 6f 6d 5f 64 65 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 23 4d 32 _from_der.jS.....function....#M2
146c0 43 72 79 70 74 6f 2e 58 35 30 39 2e 78 35 30 39 5f 73 74 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 Crypto.X509.x509_store_default_c
146e0 62 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 11 4d 32 43 72 79 70 74 6f 2e 63 b.jS.....function.....M2Crypto.c
14700 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 10 4d 32 43 72 79 70 74 6f 2e 66 allback.jS...jA.......M2Crypto.f
14720 74 70 73 6c 69 62 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 18 4d 32 43 72 79 70 74 6f 2e 66 74 tpslib.jS...jA.......M2Crypto.ft
14740 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 21 4d pslib.FTP_TLS.jS.....class....!M
14760 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 2e 61 75 74 68 5f 73 73 6c 2Crypto.ftpslib.FTP_TLS.auth_ssl
14780 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 .jS.....method....!M2Crypto.ftps
147a0 6c 69 62 2e 46 54 50 5f 54 4c 53 2e 61 75 74 68 5f 74 6c 73 94 6a 53 02 00 00 8c 06 6d 65 74 68 lib.FTP_TLS.auth_tls.jS.....meth
147c0 6f 64 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 2e od....%M2Crypto.ftpslib.FTP_TLS.
147e0 6e 74 72 61 6e 73 66 65 72 63 6d 64 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d ntransfercmd.jS.....method.....M
14800 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 63 94 6a 2Crypto.ftpslib.FTP_TLS.prot_c.j
14820 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 S.....method.....M2Crypto.ftpsli
14840 62 2e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 70 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 b.FTP_TLS.prot_p.jS.....method..
14860 94 8c 11 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 6a 53 02 00 00 6a 41 14 00 00 86 ...M2Crypto.httpslib.jS...jA....
14880 94 8c 21 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 ..!M2Crypto.httpslib.HTTPSConnec
148a0 74 69 6f 6e 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 27 4d 32 43 72 79 70 74 6f 2e 68 tion.jS.....class....'M2Crypto.h
148c0 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 53 ttpslib.HTTPSConnection.close.jS
148e0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 29 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 .....method....)M2Crypto.httpsli
14900 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 53 02 00 00 8c b.HTTPSConnection.connect.jS....
14920 06 6d 65 74 68 6f 64 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 54 .method.....M2Crypto.httpslib.HT
14940 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 64 65 66 61 75 6c 74 5f 70 6f 72 74 94 6a 53 02 00 00 TPSConnection.default_port.jS...
14960 8c 09 61 74 74 72 69 62 75 74 65 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 ..attribute....-M2Crypto.httpsli
14980 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a 53 b.HTTPSConnection.get_session.jS
149a0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 .....method....-M2Crypto.httpsli
149c0 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 6a 53 b.HTTPSConnection.set_session.jS
149e0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 26 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 .....method....&M2Crypto.httpsli
14a00 62 2e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 53 02 00 00 8c 05 63 6c b.ProxyHTTPSConnection.jS.....cl
14a20 61 73 73 94 86 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 79 48 ass.....M2Crypto.httpslib.ProxyH
14a40 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 53 02 00 00 8c 06 6d 65 TTPSConnection.connect.jS.....me
14a60 74 68 6f 64 94 86 94 8c 31 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 79 thod....1M2Crypto.httpslib.Proxy
14a80 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 65 6e 64 68 65 61 64 65 72 73 94 6a 53 02 00 00 HTTPSConnection.endheaders.jS...
14aa0 8c 06 6d 65 74 68 6f 64 94 86 94 8c 30 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 ..method....0M2Crypto.httpslib.P
14ac0 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 68 65 61 64 65 72 94 6a 53 roxyHTTPSConnection.putheader.jS
14ae0 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 31 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 .....method....1M2Crypto.httpsli
14b00 62 2e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 72 65 71 75 65 73 b.ProxyHTTPSConnection.putreques
14b20 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 6d 32 94 t.jS.....method.....M2Crypto.m2.
14b40 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 11 4d 32 43 72 79 70 74 6f 2e 6d 32 63 72 79 70 74 6f 94 jS...jA.......M2Crypto.m2crypto.
14b60 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 11 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 94 jS...jA.......M2Crypto.m2urllib.
14b80 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 2e jS...jA.......M2Crypto.m2urllib.
14ba0 6f 70 65 6e 5f 68 74 74 70 73 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 12 4d open_https.jS.....function.....M
14bc0 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 1f 2Crypto.m2urllib2.jS...jA.......
14be0 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 2e 48 54 54 50 53 48 61 6e 64 6c 65 72 94 M2Crypto.m2urllib2.HTTPSHandler.
14c00 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c jS.....class....*M2Crypto.m2urll
14c20 69 62 32 2e 48 54 54 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 6f 70 65 6e 94 6a 53 02 00 ib2.HTTPSHandler.https_open.jS..
14c40 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 ...method....-M2Crypto.m2urllib2
14c60 2e 48 54 54 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 72 65 71 75 65 73 74 94 6a 53 02 00 .HTTPSHandler.https_request.jS..
14c80 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 ...method.....M2Crypto.m2urllib2
14ca0 2e 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 .build_opener.jS.....function...
14cc0 8c 14 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 94 6a 53 02 00 00 6a 41 14 00 ..M2Crypto.m2xmlrpclib.jS...jA..
14ce0 00 86 94 8c 22 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 2e 53 53 4c 5f 54 72 ...."M2Crypto.m2xmlrpclib.SSL_Tr
14d00 61 6e 73 70 6f 72 74 94 6a 53 02 00 00 8c 05 63 6c 61 73 73 94 86 94 8c 2a 4d 32 43 72 79 70 74 ansport.jS.....class....*M2Crypt
14d20 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 2e 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 2e 72 65 71 75 o.m2xmlrpclib.SSL_Transport.requ
14d40 65 73 74 94 6a 53 02 00 00 8c 06 6d 65 74 68 6f 64 94 86 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 6d est.jS.....method....-M2Crypto.m
14d60 32 78 6d 6c 72 70 63 6c 69 62 2e 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 2e 75 73 65 72 5f 61 67 2xmlrpclib.SSL_Transport.user_ag
14d80 65 6e 74 94 6a 53 02 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 86 94 8c 12 4d 32 43 72 79 70 74 ent.jS.....attribute.....M2Crypt
14da0 6f 2e 74 68 72 65 61 64 69 6e 67 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 1a 4d 32 43 72 79 70 o.threading.jS...jA.......M2Cryp
14dc0 74 6f 2e 74 68 72 65 61 64 69 6e 67 2e 63 6c 65 61 6e 75 70 94 6a 53 02 00 00 8c 08 66 75 6e 63 to.threading.cleanup.jS.....func
14de0 74 69 6f 6e 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 2e 69 6e 69 74 tion.....M2Crypto.threading.init
14e00 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 0d 4d 32 43 72 79 70 74 6f 2e 75 74 .jS.....function.....M2Crypto.ut
14e20 69 6c 94 6a 53 02 00 00 6a 41 14 00 00 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 55 il.jS...jA.......M2Crypto.util.U
14e40 74 69 6c 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 86 94 8c 18 4d 32 tilError.jS.....exception.....M2
14e60 43 72 79 70 74 6f 2e 75 74 69 6c 2e 62 69 6e 5f 74 6f 5f 68 65 78 94 6a 53 02 00 00 8c 08 66 75 Crypto.util.bin_to_hex.jS.....fu
14e80 6e 63 74 69 6f 6e 94 86 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 67 65 6e 70 61 72 61 nction.....M2Crypto.util.genpara
14ea0 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 24 4d m_callback.jS.....function....$M
14ec0 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 6e 6f 5f 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 2Crypto.util.no_passphrase_callb
14ee0 61 63 6b 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 19 4d 32 43 72 79 70 74 6f ack.jS.....function.....M2Crypto
14f00 2e 75 74 69 6c 2e 6f 63 74 78 5f 74 6f 5f 6e 75 6d 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f .util.octx_to_num.jS.....functio
14f20 6e 94 86 94 8c 21 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 n....!M2Crypto.util.passphrase_c
14f40 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 17 4d 32 43 72 allback.jS.....function.....M2Cr
14f60 79 70 74 6f 2e 75 74 69 6c 2e 70 6b 63 73 35 5f 70 61 64 94 6a 53 02 00 00 8c 08 66 75 6e 63 74 ypto.util.pkcs5_pad.jS.....funct
14f80 69 6f 6e 94 86 94 8c 17 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 70 6b 63 73 37 5f 70 61 64 94 ion.....M2Crypto.util.pkcs7_pad.
14fa0 6a 53 02 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 86 94 8c 25 4d 32 43 72 79 70 74 6f 2e 75 74 69 jS.....function....%M2Crypto.uti
14fc0 6c 2e 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 8c l.quiet_genparam_callback.jS....
14fe0 08 66 75 6e 63 74 69 6f 6e 94 86 94 75 6a 57 12 00 00 7d 94 28 6a 61 12 00 00 28 6a 5c 02 00 00 .function...ujW...}.(ja...(j\...
15000 68 27 68 27 89 74 94 6a 6a 12 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 94 6a 7e 12 00 00 28 6a h'h'.t.jj...(j\...h'h'.t.j~...(j
15020 5c 02 00 00 68 27 68 27 89 74 94 6a 8c 12 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 94 6a 54 13 \...h'h'.t.j....(j\...h'h'.t.jT.
15040 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 94 6a b9 13 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 ..(j\...h'h'.t.j....(j\...h'h'.t
15060 94 6a ca 13 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 94 6a ea 13 00 00 28 6a 5c 02 00 00 68 27 .j....(j\...h'h'.t.j....(j\...h'
15080 68 27 89 74 94 6a 13 14 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 94 6a 21 14 00 00 28 6a 5c 02 h'.t.j....(j\...h'h'.t.j!...(j\.
150a0 00 00 68 27 68 27 89 74 94 6a 32 14 00 00 28 6a 5c 02 00 00 68 27 68 27 89 74 94 6a 40 14 00 00 ..h'h'.t.j2...(j\...h'h'.t.j@...
150c0 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 43 14 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a (jS...h'h'.t.jC...(jS...h'h'.t.j
150e0 7b 14 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a ad 14 00 00 28 6a 53 02 00 00 68 27 68 27 {...(jS...h'h'.t.j....(jS...h'h'
15100 89 74 94 6a 36 15 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 41 15 00 00 28 6a 53 02 00 00 .t.j6...(jS...h'h'.t.jA...(jS...
15120 68 27 68 27 89 74 94 6a 64 15 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a c3 15 00 00 28 6a h'h'.t.jd...(jS...h'h'.t.j....(j
15140 53 02 00 00 68 27 68 27 89 74 94 6a 25 16 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a ab 16 S...h'h'.t.j%...(jS...h'h'.t.j..
15160 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a dd 16 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 ..(jS...h'h'.t.j....(jS...h'h'.t
15180 94 6a fd 16 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 0e 17 00 00 28 6a 53 02 00 00 68 27 .j....(jS...h'h'.t.j....(jS...h'
151a0 68 27 89 74 94 6a 7c 17 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 96 17 00 00 28 6a 53 02 h'.t.j|...(jS...h'h'.t.j....(jS.
151c0 00 00 68 27 68 27 89 74 94 6a f8 17 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 41 19 00 00 ..h'h'.t.j....(jS...h'h'.t.jA...
151e0 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 43 19 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a (jS...h'h'.t.jC...(jS...h'h'.t.j
15200 57 19 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 7a 19 00 00 28 6a 53 02 00 00 68 27 68 27 W...(jS...h'h'.t.jz...(jS...h'h'
15220 89 74 94 6a 7c 19 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 7e 19 00 00 28 6a 53 02 00 00 .t.j|...(jS...h'h'.t.j~...(jS...
15240 68 27 68 27 89 74 94 6a 83 19 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a 91 19 00 00 28 6a h'h'.t.j....(jS...h'h'.t.j....(j
15260 53 02 00 00 68 27 68 27 89 74 94 6a 9c 19 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 6a a4 19 S...h'h'.t.j....(jS...h'h'.t.j..
15280 00 00 28 6a 53 02 00 00 68 27 68 27 89 74 94 75 6a 28 02 00 00 4b 00 75 8c 03 72 73 74 94 7d 94 ..(jS...h'h'.t.uj(...K.u..rst.}.
152a0 28 6a 3c 12 00 00 7d 94 6a 28 02 00 00 4b 00 75 8c 03 73 74 64 94 7d 94 28 8c 0b 70 72 6f 67 6f (j<...}.j(...K.u..std.}.(..progo
152c0 70 74 69 6f 6e 73 94 7d 94 6a 3c 12 00 00 7d 94 8c 09 63 69 74 61 74 69 6f 6e 73 94 7d 94 8c 0d ptions.}.j<...}...citations.}...
152e0 63 69 74 61 74 69 6f 6e 5f 72 65 66 73 94 7d 94 8c 06 6c 61 62 65 6c 73 94 7d 94 28 8c 08 67 65 citation_refs.}...labels.}.(..ge
15300 6e 69 6e 64 65 78 94 6a f5 19 00 00 68 27 8c 0d 73 70 68 69 6e 78 2e 6c 6f 63 61 6c 65 94 8c 11 nindex.j....h'..sphinx.locale...
15320 5f 54 72 61 6e 73 6c 61 74 69 6f 6e 50 72 6f 78 79 94 93 94 28 6a f6 19 00 00 8c 0f 5f 6c 61 7a _TranslationProxy...(j......_laz
15340 79 5f 74 72 61 6e 73 6c 61 74 65 94 93 94 8c 06 73 70 68 69 6e 78 94 8c 07 67 65 6e 65 72 61 6c y_translate.....sphinx...general
15360 94 8c 05 49 6e 64 65 78 94 74 94 81 94 6a fa 19 00 00 6a fb 19 00 00 6a fc 19 00 00 6a fd 19 00 ...Index.t...j....j....j....j...
15380 00 87 94 86 94 62 87 94 8c 08 6d 6f 64 69 6e 64 65 78 94 8c 0b 70 79 2d 6d 6f 64 69 6e 64 65 78 .....b....modindex...py-modindex
153a0 94 68 27 6a f8 19 00 00 28 6a fa 19 00 00 6a fb 19 00 00 6a fc 19 00 00 8c 0c 4d 6f 64 75 6c 65 .h'j....(j....j....j......Module
153c0 20 49 6e 64 65 78 94 74 94 81 94 6a fa 19 00 00 6a fb 19 00 00 6a fc 19 00 00 6a 05 1a 00 00 87 .Index.t...j....j....j....j.....
153e0 94 86 94 62 87 94 8c 06 73 65 61 72 63 68 94 6a 0b 1a 00 00 68 27 6a f8 19 00 00 28 6a fa 19 00 ...b....search.j....h'j....(j...
15400 00 6a fb 19 00 00 6a fc 19 00 00 8c 0b 53 65 61 72 63 68 20 50 61 67 65 94 74 94 81 94 6a fa 19 .j....j......Search.Page.t...j..
15420 00 00 6a fb 19 00 00 6a fc 19 00 00 6a 0c 1a 00 00 87 94 86 94 62 87 94 8c 10 7a 73 65 72 76 65 ..j....j....j........b....zserve
15440 72 73 73 6c 2d 68 6f 77 74 6f 94 6a 57 02 00 00 8c 10 7a 73 65 72 76 65 72 73 73 6c 2d 68 6f 77 rssl-howto.jW.....zserverssl-how
15460 74 6f 94 8c 18 31 2e c2 a0 c2 a0 c2 a0 5a 53 65 72 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 87 94 to...1.......ZServerSSL-HOWTO...
15480 8c 08 68 6f 77 74 6f 2d 63 61 94 6a 58 02 00 00 8c 08 68 6f 77 74 6f 2d 63 61 94 8c 28 48 4f 57 ..howto-ca.jX.....howto-ca..(HOW
154a0 54 4f 3a 20 43 72 65 61 74 69 6e 67 20 79 6f 75 72 20 6f 77 6e 20 43 41 20 77 69 74 68 20 4f 70 TO:.Creating.your.own.CA.with.Op
154c0 65 6e 53 53 4c 94 87 94 8c 0b 68 6f 77 74 6f 2d 73 6d 69 6d 65 94 6a 59 02 00 00 8c 0b 68 6f 77 enSSL.....howto-smime.jY.....how
154e0 74 6f 2d 73 6d 69 6d 65 94 8c 31 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 2f to-smime..1HOWTO:.Programming.S/
15500 4d 49 4d 45 20 69 6e 20 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 74 6f 94 87 94 8c MIME.in.Python.with.M2Crypto....
15520 09 68 6f 77 74 6f 2d 73 73 6c 94 6a 5a 02 00 00 8c 09 68 6f 77 74 6f 2d 73 73 6c 94 8c 2e 48 4f .howto-ssl.jZ.....howto-ssl...HO
15540 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 53 4c 20 69 6e 20 50 79 74 68 6f 6e 20 77 WTO:.Programming.SSL.in.Python.w
15560 69 74 68 20 4d 32 43 72 79 70 74 6f 94 87 94 75 8c 0a 61 6e 6f 6e 6c 61 62 65 6c 73 94 7d 94 28 ith.M2Crypto...u..anonlabels.}.(
15580 6a f5 19 00 00 6a f5 19 00 00 68 27 86 94 6a 03 1a 00 00 8c 0b 70 79 2d 6d 6f 64 69 6e 64 65 78 j....j....h'..j......py-modindex
155a0 94 68 27 86 94 6a 0b 1a 00 00 6a 0b 1a 00 00 68 27 86 94 6a 12 1a 00 00 6a 57 02 00 00 6a 13 1a .h'..j....j....h'..j....jW...j..
155c0 00 00 86 94 6a 16 1a 00 00 6a 58 02 00 00 6a 17 1a 00 00 86 94 6a 1a 1a 00 00 6a 59 02 00 00 6a ....j....jX...j......j....jY...j
155e0 1b 1a 00 00 86 94 6a 1e 1a 00 00 6a 5a 02 00 00 6a 1f 1a 00 00 86 94 75 6a 28 02 00 00 4b 00 75 ......j....jZ...j......uj(...K.u
15600 75 8c 0c 69 6e 64 65 78 65 6e 74 72 69 65 73 94 7d 94 28 6a 57 02 00 00 5d 94 6a 58 02 00 00 5d u..indexentries.}.(jW...].jX...]
15620 94 6a 59 02 00 00 5d 94 6a 5a 02 00 00 5d 94 6a 5b 02 00 00 5d 94 6a 5c 02 00 00 5d 94 28 28 8c .jY...].jZ...].j[...].j\...].((.
15640 06 73 69 6e 67 6c 65 94 8c 15 4d 32 43 72 79 70 74 6f 2e 53 53 4c 20 28 6d 6f 64 75 6c 65 29 94 .single...M2Crypto.SSL.(module).
15660 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 68 27 4e 74 94 28 6a 34 1a 00 ..module-M2Crypto.SSL.h'Nt.(j4..
15680 00 8c 08 53 53 4c 45 72 72 6f 72 94 6a 64 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 0f 53 53 ...SSLError.jd...h'Nt.(j4.....SS
156a0 4c 54 69 6d 65 6f 75 74 45 72 72 6f 72 94 6a 67 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 1d LTimeoutError.jg...h'Nt.(j4.....
156c0 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 20 28 6d 6f 64 75 6c 65 29 94 8c 1b M2Crypto.SSL.Checker.(module)...
156e0 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 68 27 4e 74 module-M2Crypto.SSL.Checker.h'Nt
15700 94 28 6a 34 1a 00 00 8c 14 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 94 6a 6c .(j4.....SSLVerificationError.jl
15720 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 0d 4e 6f 43 65 72 74 69 66 69 63 61 74 65 94 6a 6f ...h'Nt.(j4.....NoCertificate.jo
15740 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 10 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 ...h'Nt.(j4.....WrongCertificate
15760 94 6a 72 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 09 57 72 6f 6e 67 48 6f 73 74 94 6a 75 12 .jr...h'Nt.(j4.....WrongHost.ju.
15780 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 27 43 68 65 63 6b 65 72 20 28 63 6c 61 73 73 20 69 6e ..h'Nt.(j4....'Checker.(class.in
157a0 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 29 94 6a 78 12 00 00 68 27 4e 74 .M2Crypto.SSL.Checker).jx...h'Nt
157c0 94 28 6a 34 1a 00 00 8c 37 6e 75 6d 65 72 69 63 49 70 4d 61 74 63 68 20 28 4d 32 43 72 79 70 74 .(j4....7numericIpMatch.(M2Crypt
157e0 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 43 68 65 63 6b 65 72 20 61 74 74 72 69 62 75 74 65 29 o.SSL.Checker.Checker.attribute)
15800 94 6a 7b 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e .j{...h'Nt.(j4.....M2Crypto.SSL.
15820 43 69 70 68 65 72 20 28 6d 6f 64 75 6c 65 29 94 8c 1a 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 Cipher.(module)...module-M2Crypt
15840 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 25 43 69 70 68 65 72 o.SSL.Cipher.h'Nt.(j4....%Cipher
15860 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 29 94 .(class.in.M2Crypto.SSL.Cipher).
15880 6a 80 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2a 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 j....h'Nt.(j4....*name().(M2Cryp
158a0 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 20 6d 65 74 68 6f 64 29 94 6a 83 12 to.SSL.Cipher.Cipher.method).j..
158c0 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2d 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 ..h'Nt.(j4....-version().(M2Cryp
158e0 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 20 6d 65 74 68 6f 64 29 94 6a 86 12 to.SSL.Cipher.Cipher.method).j..
15900 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2b 43 69 70 68 65 72 5f 53 74 61 63 6b 20 28 63 6c 61 ..h'Nt.(j4....+Cipher_Stack.(cla
15920 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 29 94 6a 89 12 00 00 ss.in.M2Crypto.SSL.Cipher).j....
15940 68 27 4e 74 94 28 6a 34 1a 00 00 8c 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 h'Nt.(j4.....M2Crypto.SSL.Connec
15960 74 69 6f 6e 20 28 6d 6f 64 75 6c 65 29 94 8c 1e 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e tion.(module)...module-M2Crypto.
15980 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2d 43 6f 6e 6e SSL.Connection.h'Nt.(j4....-Conn
159a0 65 63 74 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ection.(class.in.M2Crypto.SSL.Co
159c0 6e 6e 65 63 74 69 6f 6e 29 94 6a 8e 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 34 61 63 63 65 nnection).j....h'Nt.(j4....4acce
159e0 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f pt().(M2Crypto.SSL.Connection.Co
15a00 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 91 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 nnection.method).j....h'Nt.(j4..
15a20 00 8c 38 61 63 63 65 70 74 5f 73 73 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ..8accept_ssl().(M2Crypto.SSL.Co
15a40 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 94 12 00 nnection.Connection.method).j...
15a60 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 32 62 69 6e 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 .h'Nt.(j4....2bind().(M2Crypto.S
15a80 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 SL.Connection.Connection.method)
15aa0 94 6a 97 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 33 63 6c 65 61 72 28 29 20 28 4d 32 43 72 .j....h'Nt.(j4....3clear().(M2Cr
15ac0 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d ypto.SSL.Connection.Connection.m
15ae0 65 74 68 6f 64 29 94 6a 9a 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 48 63 6c 69 65 6e 74 50 ethod).j....h'Nt.(j4....HclientP
15b00 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c ostConnectionCheck.(M2Crypto.SSL
15b20 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 61 74 74 72 69 62 75 74 65 .Connection.Connection.attribute
15b40 29 94 6a 9d 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 33 63 6c 6f 73 65 28 29 20 28 4d 32 43 ).j....h'Nt.(j4....3close().(M2C
15b60 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 rypto.SSL.Connection.Connection.
15b80 6d 65 74 68 6f 64 29 94 6a a0 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 35 63 6f 6e 6e 65 63 method).j....h'Nt.(j4....5connec
15ba0 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e t().(M2Crypto.SSL.Connection.Con
15bc0 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a a3 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 nection.method).j....h'Nt.(j4...
15be0 8c 39 63 6f 6e 6e 65 63 74 5f 73 73 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f .9connect_ssl().(M2Crypto.SSL.Co
15c00 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a a6 12 00 nnection.Connection.method).j...
15c20 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 34 66 69 6c 65 6e 6f 28 29 20 28 4d 32 43 72 79 70 74 6f .h'Nt.(j4....4fileno().(M2Crypto
15c40 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f .SSL.Connection.Connection.metho
15c60 64 29 94 6a a9 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 38 67 65 74 5f 63 69 70 68 65 72 28 d).j....h'Nt.(j4....8get_cipher(
15c80 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 ).(M2Crypto.SSL.Connection.Conne
15ca0 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a ac 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3d ction.method).j....h'Nt.(j4....=
15cc0 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e get_cipher_list().(M2Crypto.SSL.
15ce0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a af Connection.Connection.method).j.
15d00 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 67 65 74 5f 63 69 70 68 65 72 73 28 29 20 28 4d ...h'Nt.(j4....9get_ciphers().(M
15d20 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
15d40 6e 20 6d 65 74 68 6f 64 29 94 6a b2 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 67 65 74 5f n.method).j....h'Nt.(j4....9get_
15d60 63 6f 6e 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 context().(M2Crypto.SSL.Connecti
15d80 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a b5 12 00 00 68 27 4e 74 94 on.Connection.method).j....h'Nt.
15da0 28 6a 34 1a 00 00 8c 49 67 65 74 5f 64 65 66 61 75 6c 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 (j4....Iget_default_session_time
15dc0 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 out().(M2Crypto.SSL.Connection.C
15de0 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a b8 12 00 00 68 27 4e 74 94 28 6a 34 1a onnection.method).j....h'Nt.(j4.
15e00 00 00 8c 3b 67 65 74 5f 70 65 65 72 5f 63 65 72 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 ...;get_peer_cert().(M2Crypto.SS
15e20 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 L.Connection.Connection.method).
15e40 6a bb 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 41 67 65 74 5f 70 65 65 72 5f 63 65 72 74 5f j....h'Nt.(j4....Aget_peer_cert_
15e60 63 68 61 69 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e chain().(M2Crypto.SSL.Connection
15e80 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a be 12 00 00 68 27 4e 74 94 28 6a .Connection.method).j....h'Nt.(j
15ea0 34 1a 00 00 8c 39 67 65 74 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4....9get_session().(M2Crypto.SS
15ec0 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 L.Connection.Connection.method).
15ee0 6a c1 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3a 67 65 74 5f 73 68 75 74 64 6f 77 6e 28 29 j....h'Nt.(j4....:get_shutdown()
15f00 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 .(M2Crypto.SSL.Connection.Connec
15f20 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a c4 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 45 67 tion.method).j....h'Nt.(j4....Eg
15f40 65 74 5f 73 6f 63 6b 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 et_socket_read_timeout().(M2Cryp
15f60 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 to.SSL.Connection.Connection.met
15f80 68 6f 64 29 94 6a c7 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 46 67 65 74 5f 73 6f 63 6b 65 hod).j....h'Nt.(j4....Fget_socke
15fa0 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e t_write_timeout().(M2Crypto.SSL.
15fc0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a ca Connection.Connection.method).j.
15fe0 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 67 65 74 5f 73 74 61 74 65 28 29 20 28 4d 32 43 ...h'Nt.(j4....7get_state().(M2C
16000 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 rypto.SSL.Connection.Connection.
16020 6d 65 74 68 6f 64 29 94 6a cd 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3e 67 65 74 5f 76 65 method).j....h'Nt.(j4....>get_ve
16040 72 69 66 79 5f 64 65 70 74 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 rify_depth().(M2Crypto.SSL.Conne
16060 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a d0 12 00 00 68 27 ction.Connection.method).j....h'
16080 4e 74 94 28 6a 34 1a 00 00 8c 3d 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 29 20 28 4d 32 Nt.(j4....=get_verify_mode().(M2
160a0 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e Crypto.SSL.Connection.Connection
160c0 20 6d 65 74 68 6f 64 29 94 6a d3 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3f 67 65 74 5f 76 .method).j....h'Nt.(j4....?get_v
160e0 65 72 69 66 79 5f 72 65 73 75 6c 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e erify_result().(M2Crypto.SSL.Con
16100 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a d6 12 00 00 nection.Connection.method).j....
16120 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 67 65 74 5f 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 h'Nt.(j4....9get_version().(M2Cr
16140 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d ypto.SSL.Connection.Connection.m
16160 65 74 68 6f 64 29 94 6a d9 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 67 65 74 70 65 65 72 ethod).j....h'Nt.(j4....9getpeer
16180 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e name().(M2Crypto.SSL.Connection.
161a0 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a dc 12 00 00 68 27 4e 74 94 28 6a 34 Connection.method).j....h'Nt.(j4
161c0 1a 00 00 8c 39 67 65 74 73 6f 63 6b 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c ....9getsockname().(M2Crypto.SSL
161e0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a .Connection.Connection.method).j
16200 df 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 38 67 65 74 73 6f 63 6b 6f 70 74 28 29 20 28 4d ....h'Nt.(j4....8getsockopt().(M
16220 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
16240 6e 20 6d 65 74 68 6f 64 29 94 6a e2 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 34 6c 69 73 74 n.method).j....h'Nt.(j4....4list
16260 65 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f en().(M2Crypto.SSL.Connection.Co
16280 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a e5 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 nnection.method).j....h'Nt.(j4..
162a0 00 8c 39 6d 32 5f 62 69 6f 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 ..9m2_bio_free().(M2Crypto.SSL.C
162c0 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a e8 12 onnection.Connection.method).j..
162e0 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3d 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 20 28 4d ..h'Nt.(j4....=m2_bio_noclose.(M
16300 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
16320 6e 20 61 74 74 72 69 62 75 74 65 29 94 6a eb 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 6d n.attribute).j....h'Nt.(j4....9m
16340 32 5f 73 73 6c 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 2_ssl_free().(M2Crypto.SSL.Conne
16360 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a ee 12 00 00 68 27 ction.Connection.method).j....h'
16380 4e 74 94 28 6a 34 1a 00 00 8c 36 6d 61 6b 65 66 69 6c 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e Nt.(j4....6makefile().(M2Crypto.
163a0 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 SSL.Connection.Connection.method
163c0 29 94 6a f1 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 35 70 65 6e 64 69 6e 67 28 29 20 28 4d ).j....h'Nt.(j4....5pending().(M
163e0 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
16400 6e 20 6d 65 74 68 6f 64 29 94 6a f4 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 32 72 65 61 64 n.method).j....h'Nt.(j4....2read
16420 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e ().(M2Crypto.SSL.Connection.Conn
16440 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a f7 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c ection.method).j....h'Nt.(j4....
16460 32 72 65 63 76 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2recv().(M2Crypto.SSL.Connection
16480 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a fa 12 00 00 68 27 4e 74 94 28 6a .Connection.method).j....h'Nt.(j
164a0 34 1a 00 00 8c 37 72 65 63 76 5f 69 6e 74 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 4....7recv_into().(M2Crypto.SSL.
164c0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a fd Connection.Connection.method).j.
164e0 12 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 72 65 6e 65 67 6f 74 69 61 74 65 28 29 20 28 4d ...h'Nt.(j4....9renegotiate().(M
16500 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 2Crypto.SSL.Connection.Connectio
16520 6e 20 6d 65 74 68 6f 64 29 94 6a 00 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 32 73 65 6e 64 n.method).j....h'Nt.(j4....2send
16540 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e ().(M2Crypto.SSL.Connection.Conn
16560 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 03 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c ection.method).j....h'Nt.(j4....
16580 35 73 65 6e 64 61 6c 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 5sendall().(M2Crypto.SSL.Connect
165a0 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 06 13 00 00 68 27 4e 74 ion.Connection.method).j....h'Nt
165c0 94 28 6a 34 1a 00 00 8c 47 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 .(j4....GserverPostConnectionChe
165e0 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f ck().(M2Crypto.SSL.Connection.Co
16600 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 09 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 nnection.method).j....h'Nt.(j4..
16620 00 8c 37 73 65 74 31 5f 68 6f 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ..7set1_host().(M2Crypto.SSL.Con
16640 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 0c 13 00 00 nection.Connection.method).j....
16660 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3e 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 28 29 20 h'Nt.(j4....>set_accept_state().
16680 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 (M2Crypto.SSL.Connection.Connect
166a0 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 0f 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 35 73 65 ion.method).j....h'Nt.(j4....5se
166c0 74 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e t_bio().(M2Crypto.SSL.Connection
166e0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 12 13 00 00 68 27 4e 74 94 28 6a .Connection.method).j....h'Nt.(j
16700 34 1a 00 00 8c 3d 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 29 20 28 4d 32 43 72 79 70 74 4....=set_cipher_list().(M2Crypt
16720 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 o.SSL.Connection.Connection.meth
16740 6f 64 29 94 6a 15 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 4d 73 65 74 5f 63 6c 69 65 6e 74 od).j....h'Nt.(j4....Mset_client
16760 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 63 6f 6e 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 _CA_list_from_context().(M2Crypt
16780 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 o.SSL.Connection.Connection.meth
167a0 6f 64 29 94 6a 18 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 4a 73 65 74 5f 63 6c 69 65 6e 74 od).j....h'Nt.(j4....Jset_client
167c0 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 _CA_list_from_file().(M2Crypto.S
167e0 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 SL.Connection.Connection.method)
16800 94 6a 1b 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3f 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 .j....h'Nt.(j4....?set_connect_s
16820 74 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e tate().(M2Crypto.SSL.Connection.
16840 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 1e 13 00 00 68 27 4e 74 94 28 6a 34 Connection.method).j....h'Nt.(j4
16860 1a 00 00 8c 50 73 65 74 5f 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 5f 63 ....Pset_post_connection_check_c
16880 61 6c 6c 62 61 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 allback().(M2Crypto.SSL.Connecti
168a0 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 21 13 00 00 68 27 4e 74 94 on.Connection.method).j!...h'Nt.
168c0 28 6a 34 1a 00 00 8c 39 73 65 74 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e (j4....9set_session().(M2Crypto.
168e0 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 SSL.Connection.Connection.method
16900 29 94 6a 24 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 40 73 65 74 5f 73 65 73 73 69 6f 6e 5f ).j$...h'Nt.(j4....@set_session_
16920 69 64 5f 63 74 78 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f id_ctx().(M2Crypto.SSL.Connectio
16940 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 27 13 00 00 68 27 4e 74 94 28 n.Connection.method).j'...h'Nt.(
16960 6a 34 1a 00 00 8c 3a 73 65 74 5f 73 68 75 74 64 6f 77 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e j4....:set_shutdown().(M2Crypto.
16980 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 SSL.Connection.Connection.method
169a0 29 94 6a 2a 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 45 73 65 74 5f 73 6f 63 6b 65 74 5f 72 ).j*...h'Nt.(j4....Eset_socket_r
169c0 65 61 64 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e ead_timeout().(M2Crypto.SSL.Conn
169e0 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 2d 13 00 00 68 ection.Connection.method).j-...h
16a00 27 4e 74 94 28 6a 34 1a 00 00 8c 46 73 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 'Nt.(j4....Fset_socket_write_tim
16a20 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e eout().(M2Crypto.SSL.Connection.
16a40 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 30 13 00 00 68 27 4e 74 94 28 6a 34 Connection.method).j0...h'Nt.(j4
16a60 1a 00 00 8c 40 73 65 74 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 28 29 20 28 4d 32 43 72 79 ....@set_ssl_close_flag().(M2Cry
16a80 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 pto.SSL.Connection.Connection.me
16aa0 74 68 6f 64 29 94 6a 33 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 42 73 65 74 5f 74 6c 73 65 thod).j3...h'Nt.(j4....Bset_tlse
16ac0 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e xt_host_name().(M2Crypto.SSL.Con
16ae0 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 36 13 00 00 nection.Connection.method).j6...
16b00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 73 65 74 62 6c 6f 63 6b 69 6e 67 28 29 20 28 4d 32 43 72 h'Nt.(j4....9setblocking().(M2Cr
16b20 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d ypto.SSL.Connection.Connection.m
16b40 65 74 68 6f 64 29 94 6a 39 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 38 73 65 74 73 6f 63 6b ethod).j9...h'Nt.(j4....8setsock
16b60 6f 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 opt().(M2Crypto.SSL.Connection.C
16b80 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 3c 13 00 00 68 27 4e 74 94 28 6a 34 1a onnection.method).j<...h'Nt.(j4.
16ba0 00 00 8c 38 73 65 74 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 ...8settimeout().(M2Crypto.SSL.C
16bc0 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 3f 13 onnection.Connection.method).j?.
16be0 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 38 73 65 74 75 70 5f 61 64 64 72 28 29 20 28 4d 32 43 ..h'Nt.(j4....8setup_addr().(M2C
16c00 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 rypto.SSL.Connection.Connection.
16c20 6d 65 74 68 6f 64 29 94 6a 42 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 73 65 74 75 70 5f method).jB...h'Nt.(j4....7setup_
16c40 73 73 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 ssl().(M2Crypto.SSL.Connection.C
16c60 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 45 13 00 00 68 27 4e 74 94 28 6a 34 1a onnection.method).jE...h'Nt.(j4.
16c80 00 00 8c 36 73 68 75 74 64 6f 77 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ...6shutdown().(M2Crypto.SSL.Con
16ca0 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 48 13 00 00 nection.Connection.method).jH...
16cc0 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 73 73 6c 5f 67 65 74 5f 65 72 72 6f 72 28 29 20 28 4d 32 h'Nt.(j4....;ssl_get_error().(M2
16ce0 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e Crypto.SSL.Connection.Connection
16d00 20 6d 65 74 68 6f 64 29 94 6a 4b 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 76 65 72 69 66 .method).jK...h'Nt.(j4....7verif
16d20 79 5f 6f 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e y_ok().(M2Crypto.SSL.Connection.
16d40 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 4e 13 00 00 68 27 4e 74 94 28 6a 34 Connection.method).jN...h'Nt.(j4
16d60 1a 00 00 8c 33 77 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ....3write().(M2Crypto.SSL.Conne
16d80 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 51 13 00 00 68 27 ction.Connection.method).jQ...h'
16da0 4e 74 94 28 6a 34 1a 00 00 8c 1d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 20 Nt.(j4.....M2Crypto.SSL.Context.
16dc0 28 6d 6f 64 75 6c 65 29 94 8c 1b 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 (module)...module-M2Crypto.SSL.C
16de0 6f 6e 74 65 78 74 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 29 63 74 78 6d 61 70 28 29 20 28 69 6e ontext.h'Nt.(j4....)ctxmap().(in
16e00 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 29 94 6a 56 .module.M2Crypto.SSL.Context).jV
16e20 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 27 43 6f 6e 74 65 78 74 20 28 63 6c 61 73 73 20 69 ...h'Nt.(j4....'Context.(class.i
16e40 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 29 94 6a 59 13 00 00 68 27 4e n.M2Crypto.SSL.Context).jY...h'N
16e60 74 94 28 6a 34 1a 00 00 8c 33 61 64 64 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 t.(j4....3add_session().(M2Crypt
16e80 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 5c o.SSL.Context.Context.method).j\
16ea0 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2d 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 ...h'Nt.(j4....-close().(M2Crypt
16ec0 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 5f o.SSL.Context.Context.method).j_
16ee0 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3c 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 ...h'Nt.(j4....<get_allow_unknow
16f00 6e 5f 63 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e n_ca().(M2Crypto.SSL.Context.Con
16f20 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 62 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 36 67 text.method).jb...h'Nt.(j4....6g
16f40 65 74 5f 63 65 72 74 5f 73 74 6f 72 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f et_cert_store().(M2Crypto.SSL.Co
16f60 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 65 13 00 00 68 27 4e 74 94 ntext.Context.method).je...h'Nt.
16f80 28 6a 34 1a 00 00 8c 3e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 29 (j4....>get_session_cache_mode()
16fa0 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d .(M2Crypto.SSL.Context.Context.m
16fc0 65 74 68 6f 64 29 94 6a 68 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 67 65 74 5f 73 65 73 ethod).jh...h'Nt.(j4....;get_ses
16fe0 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e sion_timeout().(M2Crypto.SSL.Con
17000 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 6b 13 00 00 68 27 4e 74 94 28 text.Context.method).jk...h'Nt.(
17020 6a 34 1a 00 00 8c 38 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 29 20 28 4d 32 43 72 79 j4....8get_verify_depth().(M2Cry
17040 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 pto.SSL.Context.Context.method).
17060 6a 6e 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 jn...h'Nt.(j4....7get_verify_mod
17080 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 e().(M2Crypto.SSL.Context.Contex
170a0 74 20 6d 65 74 68 6f 64 29 94 6a 71 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 31 6c 6f 61 64 t.method).jq...h'Nt.(j4....1load
170c0 5f 63 65 72 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f _cert().(M2Crypto.SSL.Context.Co
170e0 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 74 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 ntext.method).jt...h'Nt.(j4....7
17100 6c 6f 61 64 5f 63 65 72 74 5f 63 68 61 69 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e load_cert_chain().(M2Crypto.SSL.
17120 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 77 13 00 00 68 27 4e Context.Context.method).jw...h'N
17140 74 94 28 6a 34 1a 00 00 8c 36 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 43 41 28 29 20 28 4d 32 43 72 t.(j4....6load_client_CA().(M2Cr
17160 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 ypto.SSL.Context.Context.method)
17180 94 6a 7a 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 36 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 63 .jz...h'Nt.(j4....6load_client_c
171a0 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 a().(M2Crypto.SSL.Context.Contex
171c0 74 20 6d 65 74 68 6f 64 29 94 6a 7d 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 38 6c 6f 61 64 t.method).j}...h'Nt.(j4....8load
171e0 5f 76 65 72 69 66 79 5f 69 6e 66 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e _verify_info().(M2Crypto.SSL.Con
17200 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 80 13 00 00 68 27 4e 74 94 28 text.Context.method).j....h'Nt.(
17220 6a 34 1a 00 00 8c 3d 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 28 29 20 28 j4....=load_verify_locations().(
17240 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 M2Crypto.SSL.Context.Context.met
17260 68 6f 64 29 94 6a 83 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 6d 32 5f 73 73 6c 5f 63 74 hod).j....h'Nt.(j4....7m2_ssl_ct
17280 78 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 x_free().(M2Crypto.SSL.Context.C
172a0 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 86 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c ontext.method).j....h'Nt.(j4....
172c0 36 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 6remove_session().(M2Crypto.SSL.
172e0 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 89 13 00 00 68 27 4e Context.Context.method).j....h'N
17300 74 94 28 6a 34 1a 00 00 8c 3c 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 29 t.(j4....<set_allow_unknown_ca()
17320 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d .(M2Crypto.SSL.Context.Context.m
17340 65 74 68 6f 64 29 94 6a 8c 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 37 73 65 74 5f 63 69 70 ethod).j....h'Nt.(j4....7set_cip
17360 68 65 72 5f 6c 69 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 her_list().(M2Crypto.SSL.Context
17380 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 8f 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 .Context.method).j....h'Nt.(j4..
173a0 00 8c 44 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 28 ..Dset_client_CA_list_from_file(
173c0 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 ).(M2Crypto.SSL.Context.Context.
173e0 6d 65 74 68 6f 64 29 94 6a 92 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 40 73 65 74 5f 64 65 method).j....h'Nt.(j4....@set_de
17400 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 fault_verify_paths().(M2Crypto.S
17420 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 95 13 00 00 SL.Context.Context.method).j....
17440 68 27 4e 74 94 28 6a 34 1a 00 00 8c 39 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28 29 h'Nt.(j4....9set_info_callback()
17460 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d .(M2Crypto.SSL.Context.Context.m
17480 65 74 68 6f 64 29 94 6a 98 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 33 73 65 74 5f 6f 70 74 ethod).j....h'Nt.(j4....3set_opt
174a0 69 6f 6e 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e ions().(M2Crypto.SSL.Context.Con
174c0 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 9b 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3e 73 text.method).j....h'Nt.(j4....>s
174e0 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 29 20 28 4d 32 43 72 79 70 74 et_session_cache_mode().(M2Crypt
17500 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 9e o.SSL.Context.Context.method).j.
17520 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3a 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 ...h'Nt.(j4....:set_session_id_c
17540 74 78 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 tx().(M2Crypto.SSL.Context.Conte
17560 78 74 20 6d 65 74 68 6f 64 29 94 6a a1 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 73 65 74 xt.method).j....h'Nt.(j4....;set
17580 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c _session_timeout().(M2Crypto.SSL
175a0 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a a4 13 00 00 68 27 .Context.Context.method).j....h'
175c0 4e 74 94 28 6a 34 1a 00 00 8c 32 73 65 74 5f 74 6d 70 5f 64 68 28 29 20 28 4d 32 43 72 79 70 74 Nt.(j4....2set_tmp_dh().(M2Crypt
175e0 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a a7 o.SSL.Context.Context.method).j.
17600 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 ...h'Nt.(j4....;set_tmp_dh_callb
17620 61 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 ack().(M2Crypto.SSL.Context.Cont
17640 65 78 74 20 6d 65 74 68 6f 64 29 94 6a aa 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 33 73 65 ext.method).j....h'Nt.(j4....3se
17660 74 5f 74 6d 70 5f 72 73 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 t_tmp_rsa().(M2Crypto.SSL.Contex
17680 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a ad 13 00 00 68 27 4e 74 94 28 6a 34 1a t.Context.method).j....h'Nt.(j4.
176a0 00 00 8c 3c 73 65 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 4d 32 43 72 ...<set_tmp_rsa_callback().(M2Cr
176c0 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 ypto.SSL.Context.Context.method)
176e0 94 6a b0 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 32 73 65 74 5f 76 65 72 69 66 79 28 29 20 .j....h'Nt.(j4....2set_verify().
17700 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 (M2Crypto.SSL.Context.Context.me
17720 74 68 6f 64 29 94 6a b3 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 26 6d 61 70 28 29 20 28 69 thod).j....h'Nt.(j4....&map().(i
17740 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 29 94 6a n.module.M2Crypto.SSL.Context).j
17760 b6 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 1f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 ....h'Nt.(j4.....M2Crypto.SSL.SS
17780 4c 53 65 72 76 65 72 20 28 6d 6f 64 75 6c 65 29 94 8c 1d 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 LServer.(module)...module-M2Cryp
177a0 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2b 53 53 to.SSL.SSLServer.h'Nt.(j4....+SS
177c0 4c 53 65 72 76 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 LServer.(class.in.M2Crypto.SSL.S
177e0 53 4c 53 65 72 76 65 72 29 94 6a bb 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 38 68 61 6e 64 SLServer).j....h'Nt.(j4....8hand
17800 6c 65 5f 65 72 72 6f 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 le_error().(M2Crypto.SSL.SSLServ
17820 65 72 2e 53 53 4c 53 65 72 76 65 72 20 6d 65 74 68 6f 64 29 94 6a be 13 00 00 68 27 4e 74 94 28 er.SSLServer.method).j....h'Nt.(
17840 6a 34 1a 00 00 8c 3a 68 61 6e 64 6c 65 5f 72 65 71 75 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 j4....:handle_request().(M2Crypt
17860 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 53 53 4c 53 65 72 76 65 72 20 6d 65 74 68 6f 64 o.SSL.SSLServer.SSLServer.method
17880 29 94 6a c1 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 32 46 6f 72 6b 69 6e 67 53 53 4c 53 65 ).j....h'Nt.(j4....2ForkingSSLSe
178a0 72 76 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 rver.(class.in.M2Crypto.SSL.SSLS
178c0 65 72 76 65 72 29 94 6a c4 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 34 54 68 72 65 61 64 69 erver).j....h'Nt.(j4....4Threadi
178e0 6e 67 53 53 4c 53 65 72 76 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 ngSSLServer.(class.in.M2Crypto.S
17900 53 4c 2e 53 53 4c 53 65 72 76 65 72 29 94 6a c7 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 1d SL.SSLServer).j....h'Nt.(j4.....
17920 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 20 28 6d 6f 64 75 6c 65 29 94 8c 1b M2Crypto.SSL.Session.(module)...
17940 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 68 27 4e 74 module-M2Crypto.SSL.Session.h'Nt
17960 94 28 6a 34 1a 00 00 8c 27 53 65 73 73 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 .(j4....'Session.(class.in.M2Cry
17980 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 29 94 6a cc 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 pto.SSL.Session).j....h'Nt.(j4..
179a0 00 8c 2e 61 73 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f ...as_der().(M2Crypto.SSL.Sessio
179c0 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a cf 13 00 00 68 27 4e 74 94 28 6a 34 1a n.Session.method).j....h'Nt.(j4.
179e0 00 00 8c 2f 61 73 5f 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 .../as_text().(M2Crypto.SSL.Sess
17a00 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a d2 13 00 00 68 27 4e 74 94 28 6a ion.Session.method).j....h'Nt.(j
17a20 34 1a 00 00 8c 30 67 65 74 5f 74 69 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 4....0get_time().(M2Crypto.SSL.S
17a40 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a d5 13 00 00 68 27 4e 74 ession.Session.method).j....h'Nt
17a60 94 28 6a 34 1a 00 00 8c 33 67 65 74 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f .(j4....3get_timeout().(M2Crypto
17a80 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a d8 13 .SSL.Session.Session.method).j..
17aa0 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 6d 32 5f 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 66 72 ..h'Nt.(j4....;m2_ssl_session_fr
17ac0 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 ee().(M2Crypto.SSL.Session.Sessi
17ae0 6f 6e 20 6d 65 74 68 6f 64 29 94 6a db 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 30 73 65 74 on.method).j....h'Nt.(j4....0set
17b00 5f 74 69 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 _time().(M2Crypto.SSL.Session.Se
17b20 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a de 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 33 ssion.method).j....h'Nt.(j4....3
17b40 73 65 74 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 set_timeout().(M2Crypto.SSL.Sess
17b60 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a e1 13 00 00 68 27 4e 74 94 28 6a ion.Session.method).j....h'Nt.(j
17b80 34 1a 00 00 8c 31 77 72 69 74 65 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 4....1write_bio().(M2Crypto.SSL.
17ba0 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a e4 13 00 00 68 27 4e Session.Session.method).j....h'N
17bc0 74 94 28 6a 34 1a 00 00 8c 2f 6c 6f 61 64 5f 73 65 73 73 69 6f 6e 28 29 20 28 69 6e 20 6d 6f 64 t.(j4..../load_session().(in.mod
17be0 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 29 94 6a e7 13 00 00 68 ule.M2Crypto.SSL.Session).j....h
17c00 27 4e 74 94 28 6a 34 1a 00 00 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 'Nt.(j4....,M2Crypto.SSL.Twisted
17c20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 20 28 6d 6f 64 75 6c 65 29 94 8c 2a 6d 6f 64 75 6c ProtocolWrapper.(module)..*modul
17c40 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 e-M2Crypto.SSL.TwistedProtocolWr
17c60 61 70 70 65 72 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3c 63 6f 6e 6e 65 63 74 53 53 4c 28 29 20 apper.h'Nt.(j4....<connectSSL().
17c80 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 (in.module.M2Crypto.SSL.TwistedP
17ca0 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 6a ec 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 rotocolWrapper).j....h'Nt.(j4...
17cc0 8c 3c 63 6f 6e 6e 65 63 74 54 43 50 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 .<connectTCP().(in.module.M2Cryp
17ce0 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 6a to.SSL.TwistedProtocolWrapper).j
17d00 ef 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 6c 69 73 74 65 6e 53 53 4c 28 29 20 28 69 6e ....h'Nt.(j4....;listenSSL().(in
17d20 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 .module.M2Crypto.SSL.TwistedProt
17d40 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 6a f2 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3b 6c ocolWrapper).j....h'Nt.(j4....;l
17d60 69 73 74 65 6e 54 43 50 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 istenTCP().(in.module.M2Crypto.S
17d80 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 6a f5 13 00 00 SL.TwistedProtocolWrapper).j....
17da0 68 27 4e 74 94 28 6a 34 1a 00 00 8c 41 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 20 h'Nt.(j4....ATLSProtocolWrapper.
17dc0 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 (class.in.M2Crypto.SSL.TwistedPr
17de0 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 6a f8 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c otocolWrapper).j....h'Nt.(j4....
17e00 47 63 6c 65 61 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 Gclear().(M2Crypto.SSL.TwistedPr
17e20 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 otocolWrapper.TLSProtocolWrapper
17e40 20 6d 65 74 68 6f 64 29 94 6a fb 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 50 63 6f 6e 6e 65 .method).j....h'Nt.(j4....Pconne
17e60 63 74 69 6f 6e 4c 6f 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 ctionLost().(M2Crypto.SSL.Twiste
17e80 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 dProtocolWrapper.TLSProtocolWrap
17ea0 70 65 72 20 6d 65 74 68 6f 64 29 94 6a fe 13 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 50 63 6f per.method).j....h'Nt.(j4....Pco
17ec0 6e 6e 65 63 74 69 6f 6e 4d 61 64 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 nnectionMade().(M2Crypto.SSL.Twi
17ee0 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 stedProtocolWrapper.TLSProtocolW
17f00 72 61 70 70 65 72 20 6d 65 74 68 6f 64 29 94 6a 01 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c rapper.method).j....h'Nt.(j4....
17f20 4e 64 61 74 61 52 65 63 65 69 76 65 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 NdataReceived().(M2Crypto.SSL.Tw
17f40 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c istedProtocolWrapper.TLSProtocol
17f60 57 72 61 70 70 65 72 20 6d 65 74 68 6f 64 29 94 6a 04 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 Wrapper.method).j....h'Nt.(j4...
17f80 8c 50 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c .PloseConnection().(M2Crypto.SSL
17fa0 2e 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f .TwistedProtocolWrapper.TLSProto
17fc0 63 6f 6c 57 72 61 70 70 65 72 20 6d 65 74 68 6f 64 29 94 6a 07 14 00 00 68 27 4e 74 94 28 6a 34 colWrapper.method).j....h'Nt.(j4
17fe0 1a 00 00 8c 4a 73 74 61 72 74 54 4c 53 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 ....JstartTLS().(M2Crypto.SSL.Tw
18000 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c istedProtocolWrapper.TLSProtocol
18020 57 72 61 70 70 65 72 20 6d 65 74 68 6f 64 29 94 6a 0a 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 Wrapper.method).j....h'Nt.(j4...
18040 8c 47 77 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 .Gwrite().(M2Crypto.SSL.TwistedP
18060 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 rotocolWrapper.TLSProtocolWrappe
18080 72 20 6d 65 74 68 6f 64 29 94 6a 0d 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 4f 77 72 69 74 r.method).j....h'Nt.(j4....Owrit
180a0 65 53 65 71 75 65 6e 63 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 eSequence().(M2Crypto.SSL.Twiste
180c0 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 dProtocolWrapper.TLSProtocolWrap
180e0 70 65 72 20 6d 65 74 68 6f 64 29 94 6a 10 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 18 4d 32 per.method).j....h'Nt.(j4.....M2
18100 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 20 28 6d 6f 64 75 6c 65 29 94 8c 16 6d 6f 64 75 6c 65 2d Crypto.SSL.cb.(module)...module-
18120 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 36 73 73 6c M2Crypto.SSL.cb.h'Nt.(j4....6ssl
18140 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 73 74 75 62 28 29 20 28 69 6e 20 6d 6f 64 75 _verify_callback_stub().(in.modu
18160 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 29 94 6a 15 14 00 00 68 27 4e 74 94 28 6a le.M2Crypto.SSL.cb).j....h'Nt.(j
18180 34 1a 00 00 8c 31 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 69 6e 20 4....1ssl_verify_callback().(in.
181a0 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 29 94 6a 18 14 00 00 68 27 4e module.M2Crypto.SSL.cb).j....h'N
181c0 74 94 28 6a 34 1a 00 00 8c 42 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 61 6c t.(j4....Bssl_verify_callback_al
181e0 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 low_unknown_ca().(in.module.M2Cr
18200 79 70 74 6f 2e 53 53 4c 2e 63 62 29 94 6a 1b 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 2f 73 ypto.SSL.cb).j....h'Nt.(j4..../s
18220 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 sl_info_callback().(in.module.M2
18240 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 29 94 6a 1e 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c Crypto.SSL.cb).j....h'Nt.(j4....
18260 24 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 20 28 6d 6f $M2Crypto.SSL.ssl_dispatcher.(mo
18280 64 75 6c 65 29 94 8c 22 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f dule).."module-M2Crypto.SSL.ssl_
182a0 64 69 73 70 61 74 63 68 65 72 94 68 27 4e 74 94 28 6a 34 1a 00 00 8c 35 73 73 6c 5f 64 69 73 70 dispatcher.h'Nt.(j4....5ssl_disp
182c0 61 74 63 68 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 atcher.(class.in.M2Crypto.SSL.ss
182e0 6c 5f 64 69 73 70 61 74 63 68 65 72 29 94 6a 23 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3d l_dispatcher).j#...h'Nt.(j4....=
18300 63 6f 6e 6e 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 connect().(M2Crypto.SSL.ssl_disp
18320 61 74 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 20 6d 65 74 68 6f 64 29 94 6a 26 atcher.ssl_dispatcher.method).j&
18340 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 43 63 72 65 61 74 65 5f 73 6f 63 6b 65 74 28 29 20 ...h'Nt.(j4....Ccreate_socket().
18360 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 6c (M2Crypto.SSL.ssl_dispatcher.ssl
18380 5f 64 69 73 70 61 74 63 68 65 72 20 6d 65 74 68 6f 64 29 94 6a 29 14 00 00 68 27 4e 74 94 28 6a _dispatcher.method).j)...h'Nt.(j
183a0 34 1a 00 00 8c 3a 72 65 63 76 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 4....:recv().(M2Crypto.SSL.ssl_d
183c0 69 73 70 61 74 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 20 6d 65 74 68 6f 64 29 ispatcher.ssl_dispatcher.method)
183e0 94 6a 2c 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 3a 73 65 6e 64 28 29 20 28 4d 32 43 72 79 .j,...h'Nt.(j4....:send().(M2Cry
18400 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 pto.SSL.ssl_dispatcher.ssl_dispa
18420 74 63 68 65 72 20 6d 65 74 68 6f 64 29 94 6a 2f 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 8c 1d tcher.method).j/...h'Nt.(j4.....
18440 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 20 28 6d 6f 64 75 6c 65 29 94 8c 1b M2Crypto.SSL.timeout.(module)...
18460 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 68 27 4e 74 module-M2Crypto.SSL.timeout.h'Nt
18480 94 28 6a 34 1a 00 00 8c 27 74 69 6d 65 6f 75 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 .(j4....'timeout.(class.in.M2Cry
184a0 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 29 94 6a 34 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 pto.SSL.timeout).j4...h'Nt.(j4..
184c0 00 8c 2c 70 61 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e ..,pack().(M2Crypto.SSL.timeout.
184e0 74 69 6d 65 6f 75 74 20 6d 65 74 68 6f 64 29 94 6a 37 14 00 00 68 27 4e 74 94 28 6a 34 1a 00 00 timeout.method).j7...h'Nt.(j4...
18500 8c 34 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 .4struct_to_timeout().(in.module
18520 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 29 94 6a 3a 14 00 00 68 27 4e 74 .M2Crypto.SSL.timeout).j:...h'Nt
18540 94 28 6a 34 1a 00 00 8c 2e 73 74 72 75 63 74 5f 73 69 7a 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c .(j4.....struct_size().(in.modul
18560 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 29 94 6a 3d 14 00 00 68 27 4e e.M2Crypto.SSL.timeout).j=...h'N
18580 74 94 65 6a 53 02 00 00 5d 94 28 28 8c 06 73 69 6e 67 6c 65 94 8c 1a 4d 32 43 72 79 70 74 6f 2e t.ejS...].((..single...M2Crypto.
185a0 5f 5f 69 6e 69 74 5f 5f 20 28 6d 6f 64 75 6c 65 29 94 8c 18 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 __init__.(module)...module-M2Cry
185c0 70 74 6f 2e 5f 5f 69 6e 69 74 5f 5f 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 16 4d 32 43 72 79 70 pto.__init__.h'Nt.(j......M2Cryp
185e0 74 6f 2e 41 53 4e 31 20 28 6d 6f 64 75 6c 65 29 94 8c 14 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 to.ASN1.(module)...module-M2Cryp
18600 74 6f 2e 41 53 4e 31 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 41 53 4e 31 5f 49 6e 74 65 67 65 to.ASN1.h'Nt.(j.....%ASN1_Intege
18620 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 6a 45 14 00 00 r.(class.in.M2Crypto.ASN1).jE...
18640 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3a 6d 32 5f 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 66 72 65 h'Nt.(j.....:m2_asn1_integer_fre
18660 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 49 6e 74 65 67 65 72 20 e().(M2Crypto.ASN1.ASN1_Integer.
18680 6d 65 74 68 6f 64 29 94 6a 48 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 41 53 4e 31 5f 4f method).jH...h'Nt.(j.....$ASN1_O
186a0 62 6a 65 63 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 6a bject.(class.in.M2Crypto.ASN1).j
186c0 4b 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 38 6d 32 5f 61 73 6e 31 5f 6f 62 6a 65 63 74 5f K...h'Nt.(j.....8m2_asn1_object_
186e0 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 free().(M2Crypto.ASN1.ASN1_Objec
18700 74 20 6d 65 74 68 6f 64 29 94 6a 4e 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 41 53 4e 31 t.method).jN...h'Nt.(j.....$ASN1
18720 5f 53 74 72 69 6e 67 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 _String.(class.in.M2Crypto.ASN1)
18740 94 6a 51 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 61 73 5f 74 65 78 74 28 29 20 28 4d 32 .jQ...h'Nt.(j.....,as_text().(M2
18760 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 20 6d 65 74 68 6f 64 29 94 Crypto.ASN1.ASN1_String.method).
18780 6a 54 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 38 6d 32 5f 61 73 6e 31 5f 73 74 72 69 6e 67 jT...h'Nt.(j.....8m2_asn1_string
187a0 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 _free().(M2Crypto.ASN1.ASN1_Stri
187c0 6e 67 20 6d 65 74 68 6f 64 29 94 6a 57 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 41 53 4e ng.method).jW...h'Nt.(j....."ASN
187e0 31 5f 54 49 4d 45 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 1_TIME.(class.in.M2Crypto.ASN1).
18800 6a 5a 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 67 65 74 5f 64 61 74 65 74 69 6d 65 28 29 jZ...h'Nt.(j...../get_datetime()
18820 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 20 6d 65 74 68 6f 64 .(M2Crypto.ASN1.ASN1_TIME.method
18840 29 94 6a 5d 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 34 6d 32 5f 61 73 6e 31 5f 74 69 6d 65 ).j]...h'Nt.(j.....4m2_asn1_time
18860 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 _free().(M2Crypto.ASN1.ASN1_TIME
18880 20 6d 65 74 68 6f 64 29 94 6a 60 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 73 65 74 5f 64 .method).j`...h'Nt.(j...../set_d
188a0 61 74 65 74 69 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 atetime().(M2Crypto.ASN1.ASN1_TI
188c0 4d 45 20 6d 65 74 68 6f 64 29 94 6a 63 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 73 65 74 ME.method).jc...h'Nt.(j.....-set
188e0 5f 73 74 72 69 6e 67 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 _string().(M2Crypto.ASN1.ASN1_TI
18900 4d 45 20 6d 65 74 68 6f 64 29 94 6a 66 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 73 65 74 ME.method).jf...h'Nt.(j.....+set
18920 5f 74 69 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 _time().(M2Crypto.ASN1.ASN1_TIME
18940 20 6d 65 74 68 6f 64 29 94 6a 69 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 41 53 4e 31 5f .method).ji...h'Nt.(j.....&ASN1_
18960 55 54 43 54 49 4d 45 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 UTCTIME.(in.module.M2Crypto.ASN1
18980 29 94 6a 6c 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e ).jl...h'Nt.(j.....&LocalTimezon
189a0 65 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 6a 6f 14 00 00 e.(class.in.M2Crypto.ASN1).jo...
189c0 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 64 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e h'Nt.(j.....*dst().(M2Crypto.ASN
189e0 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 20 6d 65 74 68 6f 64 29 94 6a 72 14 00 00 68 27 4e 1.LocalTimezone.method).jr...h'N
18a00 74 94 28 6a 87 1b 00 00 8c 2d 74 7a 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e t.(j.....-tzname().(M2Crypto.ASN
18a20 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 20 6d 65 74 68 6f 64 29 94 6a 75 14 00 00 68 27 4e 1.LocalTimezone.method).ju...h'N
18a40 74 94 28 6a 87 1b 00 00 8c 30 75 74 63 6f 66 66 73 65 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e t.(j.....0utcoffset().(M2Crypto.
18a60 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 20 6d 65 74 68 6f 64 29 94 6a 78 14 00 00 ASN1.LocalTimezone.method).jx...
18a80 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1c 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 h'Nt.(j......M2Crypto.AuthCookie
18aa0 20 28 6d 6f 64 75 6c 65 29 94 8c 1a 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 .(module)...module-M2Crypto.Auth
18ac0 43 6f 6f 6b 69 65 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 41 75 74 68 43 6f 6f 6b 69 65 20 28 Cookie.h'Nt.(j.....)AuthCookie.(
18ae0 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 29 94 6a 7d class.in.M2Crypto.AuthCookie).j}
18b00 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2e 64 61 74 61 28 29 20 28 4d 32 43 72 79 70 74 6f ...h'Nt.(j......data().(M2Crypto
18b20 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 6a .AuthCookie.AuthCookie.method).j
18b40 80 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 65 78 70 69 72 79 28 29 20 28 4d 32 43 72 79 ....h'Nt.(j.....0expiry().(M2Cry
18b60 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 pto.AuthCookie.AuthCookie.method
18b80 29 94 6a 83 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 35 68 65 61 64 65 72 56 61 6c 75 65 28 ).j....h'Nt.(j.....5headerValue(
18ba0 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 ).(M2Crypto.AuthCookie.AuthCooki
18bc0 65 20 6d 65 74 68 6f 64 29 94 6a 86 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 69 73 45 78 e.method).j....h'Nt.(j.....3isEx
18be0 70 69 72 65 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 pired().(M2Crypto.AuthCookie.Aut
18c00 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 6a 89 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 hCookie.method).j....h'Nt.(j....
18c20 8c 2d 6d 61 63 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 .-mac().(M2Crypto.AuthCookie.Aut
18c40 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 6a 8c 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 hCookie.method).j....h'Nt.(j....
18c60 8c 2e 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 ..name().(M2Crypto.AuthCookie.Au
18c80 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 6a 8f 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 thCookie.method).j....h'Nt.(j...
18ca0 00 8c 30 6f 75 74 70 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 ..0output().(M2Crypto.AuthCookie
18cc0 2e 41 75 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 6a 92 14 00 00 68 27 4e 74 94 28 6a .AuthCookie.method).j....h'Nt.(j
18ce0 87 1b 00 00 8c 2f 76 61 6c 75 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b ...../value().(M2Crypto.AuthCook
18d00 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 6a 95 14 00 00 68 27 4e 74 94 ie.AuthCookie.method).j....h'Nt.
18d20 28 6a 87 1b 00 00 8c 2c 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 20 28 63 6c 61 73 73 20 69 6e 20 (j.....,AuthCookieJar.(class.in.
18d40 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 29 94 6a 98 14 00 00 68 27 4e 74 94 28 M2Crypto.AuthCookie).j....h'Nt.(
18d60 6a 87 1b 00 00 8c 39 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e j.....9isGoodCookie().(M2Crypto.
18d80 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 20 6d 65 74 68 6f 64 29 AuthCookie.AuthCookieJar.method)
18da0 94 6a 9b 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3f 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 53 .j....h'Nt.(j.....?isGoodCookieS
18dc0 74 72 69 6e 67 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 tring().(M2Crypto.AuthCookie.Aut
18de0 68 43 6f 6f 6b 69 65 4a 61 72 20 6d 65 74 68 6f 64 29 94 6a 9e 14 00 00 68 27 4e 74 94 28 6a 87 hCookieJar.method).j....h'Nt.(j.
18e00 1b 00 00 8c 37 6d 61 6b 65 43 6f 6f 6b 69 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 ....7makeCookie().(M2Crypto.Auth
18e20 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 20 6d 65 74 68 6f 64 29 94 6a a1 14 Cookie.AuthCookieJar.method).j..
18e40 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 6d 69 78 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 ..h'Nt.(j.....%mix().(in.module.
18e60 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 29 94 6a a4 14 00 00 68 27 4e 74 94 28 M2Crypto.AuthCookie).j....h'Nt.(
18e80 6a 87 1b 00 00 8c 27 75 6e 6d 69 78 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 j.....'unmix().(in.module.M2Cryp
18ea0 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 29 94 6a a7 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c to.AuthCookie).j....h'Nt.(j.....
18ec0 28 75 6e 6d 69 78 33 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 41 75 (unmix3().(in.module.M2Crypto.Au
18ee0 74 68 43 6f 6f 6b 69 65 29 94 6a aa 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 15 4d 32 43 72 thCookie).j....h'Nt.(j......M2Cr
18f00 79 70 74 6f 2e 42 49 4f 20 28 6d 6f 64 75 6c 65 29 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 ypto.BIO.(module)...module-M2Cry
18f20 70 74 6f 2e 42 49 4f 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1b 42 49 4f 20 28 63 6c 61 73 73 20 pto.BIO.h'Nt.(j......BIO.(class.
18f40 69 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 6a af 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 in.M2Crypto.BIO).j....h'Nt.(j...
18f60 00 8c 23 62 69 6f 5f 70 74 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d ..#bio_ptr().(M2Crypto.BIO.BIO.m
18f80 65 74 68 6f 64 29 94 6a b2 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 21 63 6c 6f 73 65 28 29 ethod).j....h'Nt.(j.....!close()
18fa0 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a b5 14 00 00 .(M2Crypto.BIO.BIO.method).j....
18fc0 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 66 69 6c 65 6e 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e h'Nt.(j....."fileno().(M2Crypto.
18fe0 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a b8 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 BIO.BIO.method).j....h'Nt.(j....
19000 8c 21 66 6c 75 73 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 .!flush().(M2Crypto.BIO.BIO.meth
19020 6f 64 29 94 6a bb 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6d 32 5f 62 69 6f 5f 66 72 65 od).j....h'Nt.(j.....'m2_bio_fre
19040 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a be e().(M2Crypto.BIO.BIO.method).j.
19060 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 20 72 65 61 64 28 29 20 28 4d 32 43 72 79 70 74 6f ...h'Nt.(j......read().(M2Crypto
19080 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a c1 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 .BIO.BIO.method).j....h'Nt.(j...
190a0 00 8c 24 72 65 61 64 61 62 6c 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 ..$readable().(M2Crypto.BIO.BIO.
190c0 6d 65 74 68 6f 64 29 94 6a c4 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 72 65 61 64 6c 69 method).j....h'Nt.(j.....$readli
190e0 6e 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a ne().(M2Crypto.BIO.BIO.method).j
19100 c7 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 72 65 61 64 6c 69 6e 65 73 28 29 20 28 4d 32 ....h'Nt.(j.....%readlines().(M2
19120 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a ca 14 00 00 68 27 4e 74 Crypto.BIO.BIO.method).j....h'Nt
19140 94 28 6a 87 1b 00 00 8c 21 72 65 73 65 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 .(j.....!reset().(M2Crypto.BIO.B
19160 49 4f 20 6d 65 74 68 6f 64 29 94 6a cd 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 20 73 65 65 IO.method).j....h'Nt.(j......see
19180 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a d0 k().(M2Crypto.BIO.BIO.method).j.
191a0 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 73 68 6f 75 6c 64 5f 72 65 61 64 28 29 20 28 4d ...h'Nt.(j.....'should_read().(M
191c0 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a d3 14 00 00 68 27 4e 2Crypto.BIO.BIO.method).j....h'N
191e0 74 94 28 6a 87 1b 00 00 8c 28 73 68 6f 75 6c 64 5f 72 65 74 72 79 28 29 20 28 4d 32 43 72 79 70 t.(j.....(should_retry().(M2Cryp
19200 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a d6 14 00 00 68 27 4e 74 94 28 6a 87 to.BIO.BIO.method).j....h'Nt.(j.
19220 1b 00 00 8c 28 73 68 6f 75 6c 64 5f 77 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 ....(should_write().(M2Crypto.BI
19240 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a d9 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 20 O.BIO.method).j....h'Nt.(j......
19260 74 65 6c 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 tell().(M2Crypto.BIO.BIO.method)
19280 94 6a dc 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 21 77 72 69 74 65 28 29 20 28 4d 32 43 72 .j....h'Nt.(j.....!write().(M2Cr
192a0 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a df 14 00 00 68 27 4e 74 94 28 ypto.BIO.BIO.method).j....h'Nt.(
192c0 6a 87 1b 00 00 8c 27 77 72 69 74 65 5f 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 j.....'write_close().(M2Crypto.B
192e0 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 6a e2 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c IO.BIO.method).j....h'Nt.(j.....
19300 25 77 72 69 74 65 61 62 6c 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d %writeable().(M2Crypto.BIO.BIO.m
19320 65 74 68 6f 64 29 94 6a e5 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 08 42 49 4f 45 72 72 6f ethod).j....h'Nt.(j......BIOErro
19340 72 94 6a e8 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 43 69 70 68 65 72 53 74 72 65 61 6d r.j....h'Nt.(j.....$CipherStream
19360 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 6a eb 14 00 00 68 27 .(class.in.M2Crypto.BIO).j....h'
19380 4e 74 94 28 6a 87 1b 00 00 8c 2e 53 41 4c 54 5f 4c 45 4e 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 Nt.(j......SALT_LEN.(M2Crypto.BI
193a0 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 61 74 74 72 69 62 75 74 65 29 94 6a ee 14 00 00 68 O.CipherStream.attribute).j....h
193c0 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 'Nt.(j.....*close().(M2Crypto.BI
193e0 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 6d 65 74 68 6f 64 29 94 6a f1 14 00 00 68 27 4e 74 O.CipherStream.method).j....h'Nt
19400 94 28 6a 87 1b 00 00 8c 30 6d 32 5f 62 69 6f 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f .(j.....0m2_bio_free().(M2Crypto
19420 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 6d 65 74 68 6f 64 29 94 6a f4 14 00 00 68 .BIO.CipherStream.method).j....h
19440 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 6d 32 5f 62 69 6f 5f 70 6f 70 28 29 20 28 4d 32 43 72 79 70 'Nt.(j...../m2_bio_pop().(M2Cryp
19460 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 6d 65 74 68 6f 64 29 94 6a f7 14 00 to.BIO.CipherStream.method).j...
19480 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 73 65 74 5f 63 69 70 68 65 72 28 29 20 28 4d 32 43 72 .h'Nt.(j...../set_cipher().(M2Cr
194a0 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 6d 65 74 68 6f 64 29 94 6a fa ypto.BIO.CipherStream.method).j.
194c0 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 77 72 69 74 65 5f 63 6c 6f 73 65 28 29 20 28 4d ...h'Nt.(j.....0write_close().(M
194e0 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 6d 65 74 68 6f 64 29 2Crypto.BIO.CipherStream.method)
19500 94 6a fd 14 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1c 46 69 6c 65 20 28 63 6c 61 73 73 20 69 .j....h'Nt.(j......File.(class.i
19520 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 6a 00 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 n.M2Crypto.BIO).j....h'Nt.(j....
19540 8c 22 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 20 6d 65 74 ."close().(M2Crypto.BIO.File.met
19560 68 6f 64 29 94 6a 03 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 66 6c 75 73 68 28 29 20 28 hod).j....h'Nt.(j....."flush().(
19580 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 20 6d 65 74 68 6f 64 29 94 6a 06 15 00 00 68 M2Crypto.BIO.File.method).j....h
195a0 27 4e 74 94 28 6a 87 1b 00 00 8c 22 72 65 73 65 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 'Nt.(j....."reset().(M2Crypto.BI
195c0 4f 2e 46 69 6c 65 20 6d 65 74 68 6f 64 29 94 6a 09 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c O.File.method).j....h'Nt.(j.....
195e0 20 49 4f 42 75 66 66 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f .IOBuffer.(class.in.M2Crypto.BIO
19600 29 94 6a 0c 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 63 6c 6f 73 65 28 29 20 28 4d 32 43 ).j....h'Nt.(j.....&close().(M2C
19620 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 20 6d 65 74 68 6f 64 29 94 6a 0f 15 00 00 rypto.BIO.IOBuffer.method).j....
19640 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 6d 32 5f 62 69 6f 5f 66 72 65 65 28 29 20 28 4d 32 43 72 h'Nt.(j.....,m2_bio_free().(M2Cr
19660 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 20 6d 65 74 68 6f 64 29 94 6a 12 15 00 00 68 ypto.BIO.IOBuffer.method).j....h
19680 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 6d 32 5f 62 69 6f 5f 70 6f 70 28 29 20 28 4d 32 43 72 79 70 'Nt.(j.....+m2_bio_pop().(M2Cryp
196a0 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 20 6d 65 74 68 6f 64 29 94 6a 15 15 00 00 68 27 4e to.BIO.IOBuffer.method).j....h'N
196c0 74 94 28 6a 87 1b 00 00 8c 24 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 28 63 6c 61 73 73 20 69 6e t.(j.....$MemoryBuffer.(class.in
196e0 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 6a 18 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c .M2Crypto.BIO).j....h'Nt.(j.....
19700 2a 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 *close().(M2Crypto.BIO.MemoryBuf
19720 66 65 72 20 6d 65 74 68 6f 64 29 94 6a 1b 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 67 65 fer.method).j....h'Nt.(j.....-ge
19740 74 76 61 6c 75 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 tvalue().(M2Crypto.BIO.MemoryBuf
19760 66 65 72 20 6d 65 74 68 6f 64 29 94 6a 1e 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 72 65 fer.method).j....h'Nt.(j.....)re
19780 61 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 ad().(M2Crypto.BIO.MemoryBuffer.
197a0 6d 65 74 68 6f 64 29 94 6a 21 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 72 65 61 64 5f 61 method).j!...h'Nt.(j.....-read_a
197c0 6c 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 ll().(M2Crypto.BIO.MemoryBuffer.
197e0 6d 65 74 68 6f 64 29 94 6a 24 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 77 72 69 74 65 5f method).j$...h'Nt.(j.....0write_
19800 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 close().(M2Crypto.BIO.MemoryBuff
19820 65 72 20 6d 65 74 68 6f 64 29 94 6a 27 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1e 53 53 4c er.method).j'...h'Nt.(j......SSL
19840 42 69 6f 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 6a 2a 15 00 Bio.(class.in.M2Crypto.BIO).j*..
19860 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 64 6f 5f 68 61 6e 64 73 68 61 6b 65 28 29 20 28 4d 32 .h'Nt.(j.....+do_handshake().(M2
19880 43 72 79 70 74 6f 2e 42 49 4f 2e 53 53 4c 42 69 6f 20 6d 65 74 68 6f 64 29 94 6a 2d 15 00 00 68 Crypto.BIO.SSLBio.method).j-...h
198a0 27 4e 74 94 28 6a 87 1b 00 00 8c 26 73 65 74 5f 73 73 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 'Nt.(j.....&set_ssl().(M2Crypto.
198c0 42 49 4f 2e 53 53 4c 42 69 6f 20 6d 65 74 68 6f 64 29 94 6a 30 15 00 00 68 27 4e 74 94 28 6a 87 BIO.SSLBio.method).j0...h'Nt.(j.
198e0 1b 00 00 8c 23 6f 70 65 6e 66 69 6c 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 ....#openfile().(in.module.M2Cry
19900 70 74 6f 2e 42 49 4f 29 94 6a 33 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 14 4d 32 43 72 79 pto.BIO).j3...h'Nt.(j......M2Cry
19920 70 74 6f 2e 42 4e 20 28 6d 6f 64 75 6c 65 29 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 pto.BN.(module)...module-M2Crypt
19940 6f 2e 42 4e 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1e 72 61 6e 64 28 29 20 28 69 6e 20 6d 6f 64 o.BN.h'Nt.(j......rand().(in.mod
19960 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 42 4e 29 94 6a 38 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 ule.M2Crypto.BN).j8...h'Nt.(j...
19980 00 8c 24 72 61 6e 64 5f 72 61 6e 67 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 ..$rand_range().(in.module.M2Cry
199a0 70 74 6f 2e 42 4e 29 94 6a 3b 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 72 61 6e 64 66 6e pto.BN).j;...h'Nt.(j.....#randfn
199c0 61 6d 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 42 4e 29 94 6a 3e ame().(in.module.M2Crypto.BN).j>
199e0 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 14 4d 32 43 72 79 70 74 6f 2e 44 48 20 28 6d 6f 64 ...h'Nt.(j......M2Crypto.DH.(mod
19a00 75 6c 65 29 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 44 48 94 68 27 4e 74 94 28 ule)...module-M2Crypto.DH.h'Nt.(
19a20 6a 87 1b 00 00 8c 19 44 48 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 44 48 29 j......DH.(class.in.M2Crypto.DH)
19a40 94 6a 43 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 63 68 65 63 6b 5f 70 61 72 61 6d 73 28 .jC...h'Nt.(j.....&check_params(
19a60 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 20 6d 65 74 68 6f 64 29 94 6a 46 15 00 00 68 ).(M2Crypto.DH.DH.method).jF...h
19a80 27 4e 74 94 28 6a 87 1b 00 00 8c 25 63 6f 6d 70 75 74 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 'Nt.(j.....%compute_key().(M2Cry
19aa0 70 74 6f 2e 44 48 2e 44 48 20 6d 65 74 68 6f 64 29 94 6a 49 15 00 00 68 27 4e 74 94 28 6a 87 1b pto.DH.DH.method).jI...h'Nt.(j..
19ac0 00 00 8c 21 67 65 6e 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 20 6d 65 ...!gen_key().(M2Crypto.DH.DH.me
19ae0 74 68 6f 64 29 94 6a 4c 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 6d 32 5f 64 68 5f 66 72 thod).jL...h'Nt.(j.....$m2_dh_fr
19b00 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 20 6d 65 74 68 6f 64 29 94 6a 4f 15 ee().(M2Crypto.DH.DH.method).jO.
19b20 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 70 72 69 6e 74 5f 70 61 72 61 6d 73 28 29 20 28 4d ..h'Nt.(j.....&print_params().(M
19b40 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 20 6d 65 74 68 6f 64 29 94 6a 52 15 00 00 68 27 4e 74 94 2Crypto.DH.DH.method).jR...h'Nt.
19b60 28 6a 87 1b 00 00 8c 07 44 48 45 72 72 6f 72 94 6a 55 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 (j......DHError.jU...h'Nt.(j....
19b80 8c 24 67 65 6e 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 .$gen_params().(in.module.M2Cryp
19ba0 74 6f 2e 44 48 29 94 6a 58 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 6c 6f 61 64 5f 70 61 to.DH).jX...h'Nt.(j.....%load_pa
19bc0 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 48 29 94 6a rams().(in.module.M2Crypto.DH).j
19be0 5b 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f [...h'Nt.(j.....)load_params_bio
19c00 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 48 29 94 6a 5e 15 00 00 ().(in.module.M2Crypto.DH).j^...
19c20 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 73 65 74 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f h'Nt.(j.....$set_params().(in.mo
19c40 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 48 29 94 6a 61 15 00 00 68 27 4e 74 94 28 6a 87 1b dule.M2Crypto.DH).ja...h'Nt.(j..
19c60 00 00 8c 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 20 28 6d 6f 64 75 6c 65 29 94 8c 13 6d 6f 64 75 ....M2Crypto.DSA.(module)...modu
19c80 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 44 53 41 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1b 44 53 41 le-M2Crypto.DSA.h'Nt.(j......DSA
19ca0 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 6a 66 15 00 00 68 27 .(class.in.M2Crypto.DSA).jf...h'
19cc0 4e 74 94 28 6a 87 1b 00 00 8c 25 63 68 65 63 6b 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f Nt.(j.....%check_key().(M2Crypto
19ce0 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 69 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 .DSA.DSA.method).ji...h'Nt.(j...
19d00 00 8c 23 67 65 6e 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d ..#gen_key().(M2Crypto.DSA.DSA.m
19d20 65 74 68 6f 64 29 94 6a 6c 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6d 32 5f 64 73 61 5f ethod).jl...h'Nt.(j.....'m2_dsa_
19d40 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 free().(M2Crypto.DSA.DSA.method)
19d60 94 6a 6f 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 73 61 76 65 5f 6b 65 79 28 29 20 28 4d .jo...h'Nt.(j.....$save_key().(M
19d80 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 72 15 00 00 68 27 4e 2Crypto.DSA.DSA.method).jr...h'N
19da0 74 94 28 6a 87 1b 00 00 8c 28 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 t.(j.....(save_key_bio().(M2Cryp
19dc0 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 75 15 00 00 68 27 4e 74 94 28 6a 87 to.DSA.DSA.method).ju...h'Nt.(j.
19de0 1b 00 00 8c 27 73 61 76 65 5f 70 61 72 61 6d 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 ....'save_params().(M2Crypto.DSA
19e00 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 78 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 73 .DSA.method).jx...h'Nt.(j.....+s
19e20 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 ave_params_bio().(M2Crypto.DSA.D
19e40 53 41 20 6d 65 74 68 6f 64 29 94 6a 7b 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 73 61 76 SA.method).j{...h'Nt.(j.....(sav
19e60 65 5f 70 75 62 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 e_pub_key().(M2Crypto.DSA.DSA.me
19e80 74 68 6f 64 29 94 6a 7e 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 73 61 76 65 5f 70 75 62 thod).j~...h'Nt.(j.....,save_pub
19ea0 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 _key_bio().(M2Crypto.DSA.DSA.met
19ec0 68 6f 64 29 94 6a 81 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 73 65 74 5f 70 61 72 61 6d hod).j....h'Nt.(j.....&set_param
19ee0 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 84 s().(M2Crypto.DSA.DSA.method).j.
19f00 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 20 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 6f ...h'Nt.(j......sign().(M2Crypto
19f20 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 87 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 .DSA.DSA.method).j....h'Nt.(j...
19f40 00 8c 25 73 69 67 6e 5f 61 73 6e 31 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 ..%sign_asn1().(M2Crypto.DSA.DSA
19f60 20 6d 65 74 68 6f 64 29 94 6a 8a 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 76 65 72 69 66 .method).j....h'Nt.(j....."verif
19f80 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 8d y().(M2Crypto.DSA.DSA.method).j.
19fa0 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 76 65 72 69 66 79 5f 61 73 6e 31 28 29 20 28 4d ...h'Nt.(j.....'verify_asn1().(M
19fc0 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 6a 90 15 00 00 68 27 4e 2Crypto.DSA.DSA.method).j....h'N
19fe0 74 94 28 6a 87 1b 00 00 8c 08 44 53 41 45 72 72 6f 72 94 6a 93 15 00 00 68 27 4e 74 94 28 6a 87 t.(j......DSAError.j....h'Nt.(j.
1a000 1b 00 00 8c 1f 44 53 41 5f 70 75 62 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e .....DSA_pub.(class.in.M2Crypto.
1a020 44 53 41 29 94 6a 96 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 63 68 65 63 6b 5f 6b 65 79 DSA).j....h'Nt.(j.....)check_key
1a040 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 ().(M2Crypto.DSA.DSA_pub.method)
1a060 94 6a 99 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 73 61 76 65 5f 6b 65 79 28 29 20 28 4d .j....h'Nt.(j.....(save_key().(M
1a080 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 6a 9c 15 00 2Crypto.DSA.DSA_pub.method).j...
1a0a0 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 .h'Nt.(j.....,save_key_bio().(M2
1a0c0 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 6a 9f 15 00 00 Crypto.DSA.DSA_pub.method).j....
1a0e0 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 h'Nt.(j.....$sign().(M2Crypto.DS
1a100 41 2e 44 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 6a a2 15 00 00 68 27 4e 74 94 28 6a 87 1b A.DSA_pub.method).j....h'Nt.(j..
1a120 00 00 8c 29 73 69 67 6e 5f 61 73 6e 31 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 ...)sign_asn1().(M2Crypto.DSA.DS
1a140 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 6a a5 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 A_pub.method).j....h'Nt.(j.....%
1a160 67 65 6e 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f gen_params().(in.module.M2Crypto
1a180 2e 44 53 41 29 94 6a a8 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 6c 6f 61 64 5f 6b 65 79 .DSA).j....h'Nt.(j.....#load_key
1a1a0 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 6a ab 15 00 ().(in.module.M2Crypto.DSA).j...
1a1c0 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e .h'Nt.(j.....'load_key_bio().(in
1a1e0 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 6a ae 15 00 00 68 27 4e 74 94 .module.M2Crypto.DSA).j....h'Nt.
1a200 28 6a 87 1b 00 00 8c 26 6c 6f 61 64 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 (j.....&load_params().(in.module
1a220 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 6a b1 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c .M2Crypto.DSA).j....h'Nt.(j.....
1a240 2a 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 *load_params_bio().(in.module.M2
1a260 43 72 79 70 74 6f 2e 44 53 41 29 94 6a b4 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6c 6f Crypto.DSA).j....h'Nt.(j.....'lo
1a280 61 64 5f 70 75 62 5f 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f ad_pub_key().(in.module.M2Crypto
1a2a0 2e 44 53 41 29 94 6a b7 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 6c 6f 61 64 5f 70 75 62 .DSA).j....h'Nt.(j.....+load_pub
1a2c0 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 _key_bio().(in.module.M2Crypto.D
1a2e0 53 41 29 94 6a ba 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2e 70 75 62 5f 6b 65 79 5f 66 72 SA).j....h'Nt.(j......pub_key_fr
1a300 6f 6d 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e om_params().(in.module.M2Crypto.
1a320 44 53 41 29 94 6a bd 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 73 65 74 5f 70 61 72 61 6d DSA).j....h'Nt.(j.....%set_param
1a340 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 6a c0 15 s().(in.module.M2Crypto.DSA).j..
1a360 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 14 4d 32 43 72 79 70 74 6f 2e 45 43 20 28 6d 6f 64 75 ..h'Nt.(j......M2Crypto.EC.(modu
1a380 6c 65 29 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 43 94 68 27 4e 74 94 28 6a le)...module-M2Crypto.EC.h'Nt.(j
1a3a0 87 1b 00 00 8c 19 45 43 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 ......EC.(class.in.M2Crypto.EC).
1a3c0 6a c5 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 20 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 72 j....h'Nt.(j......as_pem().(M2Cr
1a3e0 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a c8 15 00 00 68 27 4e 74 94 28 6a 87 ypto.EC.EC.method).j....h'Nt.(j.
1a400 1b 00 00 8c 23 63 68 65 63 6b 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 ....#check_key().(M2Crypto.EC.EC
1a420 20 6d 65 74 68 6f 64 29 94 6a cb 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 63 6f 6d 70 75 .method).j....h'Nt.(j.....(compu
1a440 74 65 5f 64 68 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 te_dh_key().(M2Crypto.EC.EC.meth
1a460 6f 64 29 94 6a ce 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 21 67 65 6e 5f 6b 65 79 28 29 20 od).j....h'Nt.(j.....!gen_key().
1a480 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a d1 15 00 00 68 27 4e (M2Crypto.EC.EC.method).j....h'N
1a4a0 74 94 28 6a 87 1b 00 00 8c 28 6d 32 5f 65 63 5f 6b 65 79 5f 66 72 65 65 28 29 20 28 4d 32 43 72 t.(j.....(m2_ec_key_free().(M2Cr
1a4c0 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a d4 15 00 00 68 27 4e 74 94 28 6a 87 ypto.EC.EC.method).j....h'Nt.(j.
1a4e0 1b 00 00 8c 1d 70 75 62 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f .....pub().(M2Crypto.EC.EC.metho
1a500 64 29 94 6a d7 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 73 61 76 65 5f 6b 65 79 28 29 20 d).j....h'Nt.(j....."save_key().
1a520 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a da 15 00 00 68 27 4e (M2Crypto.EC.EC.method).j....h'N
1a540 74 94 28 6a 87 1b 00 00 8c 26 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 t.(j.....&save_key_bio().(M2Cryp
1a560 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a dd 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 to.EC.EC.method).j....h'Nt.(j...
1a580 00 8c 26 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 ..&save_pub_key().(M2Crypto.EC.E
1a5a0 43 20 6d 65 74 68 6f 64 29 94 6a e0 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 73 61 76 65 C.method).j....h'Nt.(j.....*save
1a5c0 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d _pub_key_bio().(M2Crypto.EC.EC.m
1a5e0 65 74 68 6f 64 29 94 6a e3 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 73 69 67 6e 5f 64 73 ethod).j....h'Nt.(j....."sign_ds
1a600 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a e6 15 00 a().(M2Crypto.EC.EC.method).j...
1a620 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 28 29 20 28 4d .h'Nt.(j.....'sign_dsa_asn1().(M
1a640 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a e9 15 00 00 68 27 4e 74 94 2Crypto.EC.EC.method).j....h'Nt.
1a660 28 6a 87 1b 00 00 8c 24 76 65 72 69 66 79 5f 64 73 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 (j.....$verify_dsa().(M2Crypto.E
1a680 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 6a ec 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 76 C.EC.method).j....h'Nt.(j.....)v
1a6a0 65 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 erify_dsa_asn1().(M2Crypto.EC.EC
1a6c0 20 6d 65 74 68 6f 64 29 94 6a ef 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 07 45 43 45 72 72 .method).j....h'Nt.(j......ECErr
1a6e0 6f 72 94 6a f2 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1d 45 43 5f 70 75 62 20 28 63 6c 61 or.j....h'Nt.(j......EC_pub.(cla
1a700 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 6a f5 15 00 00 68 27 4e 74 94 28 6a 87 ss.in.M2Crypto.EC).j....h'Nt.(j.
1a720 1b 00 00 8c 25 67 65 74 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 ....%get_der().(M2Crypto.EC.EC_p
1a740 75 62 20 6d 65 74 68 6f 64 29 94 6a f8 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 67 65 74 ub.method).j....h'Nt.(j.....%get
1a760 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 20 6d 65 74 68 6f _key().(M2Crypto.EC.EC_pub.metho
1a780 64 29 94 6a fb 15 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 73 61 76 65 5f 6b 65 79 28 29 20 d).j....h'Nt.(j.....&save_key().
1a7a0 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 6a fe 15 00 (M2Crypto.EC.EC_pub.method).j...
1a7c0 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 .h'Nt.(j.....*save_key_bio().(M2
1a7e0 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 6a 01 16 00 00 68 27 Crypto.EC.EC_pub.method).j....h'
1a800 4e 74 94 28 6a 87 1b 00 00 8c 22 65 63 5f 65 72 72 6f 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 Nt.(j....."ec_error().(in.module
1a820 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 6a 04 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 .M2Crypto.EC).j....h'Nt.(j.....$
1a840 67 65 6e 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f gen_params().(in.module.M2Crypto
1a860 2e 45 43 29 94 6a 07 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 67 65 74 5f 62 75 69 6c 74 .EC).j....h'Nt.(j.....,get_built
1a880 69 6e 5f 63 75 72 76 65 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e in_curves().(in.module.M2Crypto.
1a8a0 45 43 29 94 6a 0a 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 6c 6f 61 64 5f 6b 65 79 28 29 EC).j....h'Nt.(j....."load_key()
1a8c0 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 6a 0d 16 00 00 68 27 .(in.module.M2Crypto.EC).j....h'
1a8e0 4e 74 94 28 6a 87 1b 00 00 8c 26 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f Nt.(j.....&load_key_bio().(in.mo
1a900 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 6a 10 16 00 00 68 27 4e 74 94 28 6a 87 1b dule.M2Crypto.EC).j....h'Nt.(j..
1a920 00 00 8c 29 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 ...)load_key_string().(in.module
1a940 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 6a 13 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 .M2Crypto.EC).j....h'Nt.(j.....0
1a960 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 load_key_string_pubkey().(in.mod
1a980 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 6a 16 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 ule.M2Crypto.EC).j....h'Nt.(j...
1a9a0 00 8c 26 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 ..&load_pub_key().(in.module.M2C
1a9c0 72 79 70 74 6f 2e 45 43 29 94 6a 19 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 6c 6f 61 64 rypto.EC).j....h'Nt.(j.....*load
1a9e0 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 _pub_key_bio().(in.module.M2Cryp
1aa00 74 6f 2e 45 43 29 94 6a 1c 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 70 75 62 5f 6b 65 79 to.EC).j....h'Nt.(j.....*pub_key
1aa20 5f 66 72 6f 6d 5f 64 65 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e _from_der().(in.module.M2Crypto.
1aa40 45 43 29 94 6a 1f 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 70 75 62 5f 6b 65 79 5f 66 72 EC).j....h'Nt.(j.....-pub_key_fr
1aa60 6f 6d 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e om_params().(in.module.M2Crypto.
1aa80 45 43 29 94 6a 22 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 15 4d 32 43 72 79 70 74 6f 2e 45 EC).j"...h'Nt.(j......M2Crypto.E
1aaa0 56 50 20 28 6d 6f 64 75 6c 65 29 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 56 VP.(module)...module-M2Crypto.EV
1aac0 50 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1e 43 69 70 68 65 72 20 28 63 6c 61 73 73 20 69 6e 20 P.h'Nt.(j......Cipher.(class.in.
1aae0 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a 27 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 M2Crypto.EVP).j'...h'Nt.(j.....$
1ab00 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 20 6d 65 74 final().(M2Crypto.EVP.Cipher.met
1ab20 68 6f 64 29 94 6a 2a 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 6d 32 5f 63 69 70 68 65 72 hod).j*...h'Nt.(j.....1m2_cipher
1ab40 5f 63 74 78 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 _ctx_free().(M2Crypto.EVP.Cipher
1ab60 20 6d 65 74 68 6f 64 29 94 6a 2d 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 73 65 74 5f 70 .method).j-...h'Nt.(j.....*set_p
1ab80 61 64 64 69 6e 67 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 20 6d 65 adding().(M2Crypto.EVP.Cipher.me
1aba0 74 68 6f 64 29 94 6a 30 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 75 70 64 61 74 65 28 29 thod).j0...h'Nt.(j.....%update()
1abc0 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 20 6d 65 74 68 6f 64 29 94 6a 33 .(M2Crypto.EVP.Cipher.method).j3
1abe0 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 08 45 56 50 45 72 72 6f 72 94 6a 36 16 00 00 68 27 ...h'Nt.(j......EVPError.j6...h'
1ac00 4e 74 94 28 6a 87 1b 00 00 8c 1c 48 4d 41 43 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 Nt.(j......HMAC.(class.in.M2Cryp
1ac20 74 6f 2e 45 56 50 29 94 6a 39 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 64 69 67 65 73 74 to.EVP).j9...h'Nt.(j.....#digest
1ac40 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 20 6d 65 74 68 6f 64 29 94 6a 3c ().(M2Crypto.EVP.HMAC.method).j<
1ac60 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 74 ...h'Nt.(j....."final().(M2Crypt
1ac80 6f 2e 45 56 50 2e 48 4d 41 43 20 6d 65 74 68 6f 64 29 94 6a 3f 16 00 00 68 27 4e 74 94 28 6a 87 o.EVP.HMAC.method).j?...h'Nt.(j.
1aca0 1b 00 00 8c 2d 6d 32 5f 68 6d 61 63 5f 63 74 78 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 ....-m2_hmac_ctx_free().(M2Crypt
1acc0 6f 2e 45 56 50 2e 48 4d 41 43 20 6d 65 74 68 6f 64 29 94 6a 42 16 00 00 68 27 4e 74 94 28 6a 87 o.EVP.HMAC.method).jB...h'Nt.(j.
1ace0 1b 00 00 8c 22 72 65 73 65 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 20 ...."reset().(M2Crypto.EVP.HMAC.
1ad00 6d 65 74 68 6f 64 29 94 6a 45 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 75 70 64 61 74 65 method).jE...h'Nt.(j.....#update
1ad20 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 20 6d 65 74 68 6f 64 29 94 6a 48 ().(M2Crypto.EVP.HMAC.method).jH
1ad40 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 4d 65 73 73 61 67 65 44 69 67 65 73 74 20 28 63 ...h'Nt.(j.....%MessageDigest.(c
1ad60 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a 4b 16 00 00 68 27 4e 74 94 lass.in.M2Crypto.EVP).jK...h'Nt.
1ad80 28 6a 87 1b 00 00 8c 2c 64 69 67 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d (j.....,digest().(M2Crypto.EVP.M
1ada0 65 73 73 61 67 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 4e 16 00 00 68 27 4e 74 94 28 essageDigest.method).jN...h'Nt.(
1adc0 6a 87 1b 00 00 8c 2b 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 j.....+final().(M2Crypto.EVP.Mes
1ade0 73 61 67 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 51 16 00 00 68 27 4e 74 94 28 6a 87 sageDigest.method).jQ...h'Nt.(j.
1ae00 1b 00 00 8c 34 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e ....4m2_md_ctx_free().(M2Crypto.
1ae20 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 54 16 00 00 68 EVP.MessageDigest.method).jT...h
1ae40 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 'Nt.(j.....,update().(M2Crypto.E
1ae60 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 57 16 00 00 68 27 VP.MessageDigest.method).jW...h'
1ae80 4e 74 94 28 6a 87 1b 00 00 8c 1c 50 4b 65 79 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 Nt.(j......PKey.(class.in.M2Cryp
1aea0 74 6f 2e 45 56 50 29 94 6a 5a 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 61 73 5f 64 65 72 to.EVP).jZ...h'Nt.(j.....#as_der
1aec0 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 5d ().(M2Crypto.EVP.PKey.method).j]
1aee0 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 ...h'Nt.(j.....#as_pem().(M2Cryp
1af00 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 60 16 00 00 68 27 4e 74 94 28 6a to.EVP.PKey.method).j`...h'Nt.(j
1af20 87 1b 00 00 8c 27 61 73 73 69 67 6e 5f 72 73 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 .....'assign_rsa().(M2Crypto.EVP
1af40 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 63 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 .PKey.method).jc...h'Nt.(j....."
1af60 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f final().(M2Crypto.EVP.PKey.metho
1af80 64 29 94 6a 66 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 67 65 74 5f 6d 6f 64 75 6c 75 73 d).jf...h'Nt.(j.....(get_modulus
1afa0 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 69 ().(M2Crypto.EVP.PKey.method).ji
1afc0 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 67 65 74 5f 72 73 61 28 29 20 28 4d 32 43 72 79 ...h'Nt.(j.....$get_rsa().(M2Cry
1afe0 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 6c 16 00 00 68 27 4e 74 94 28 pto.EVP.PKey.method).jl...h'Nt.(
1b000 6a 87 1b 00 00 8c 2b 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 j.....+m2_md_ctx_free().(M2Crypt
1b020 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 6f 16 00 00 68 27 4e 74 94 28 6a 87 o.EVP.PKey.method).jo...h'Nt.(j.
1b040 1b 00 00 8c 29 6d 32 5f 70 6b 65 79 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 ....)m2_pkey_free().(M2Crypto.EV
1b060 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 72 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c P.PKey.method).jr...h'Nt.(j.....
1b080 2a 72 65 73 65 74 5f 63 6f 6e 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 *reset_context().(M2Crypto.EVP.P
1b0a0 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 75 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 73 61 Key.method).ju...h'Nt.(j.....%sa
1b0c0 76 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 ve_key().(M2Crypto.EVP.PKey.meth
1b0e0 6f 64 29 94 6a 78 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 73 61 76 65 5f 6b 65 79 5f 62 od).jx...h'Nt.(j.....)save_key_b
1b100 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 io().(M2Crypto.EVP.PKey.method).
1b120 6a 7b 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 73 69 67 6e 5f 66 69 6e 61 6c 28 29 20 28 j{...h'Nt.(j.....'sign_final().(
1b140 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 7e 16 00 00 68 M2Crypto.EVP.PKey.method).j~...h
1b160 27 4e 74 94 28 6a 87 1b 00 00 8c 26 73 69 67 6e 5f 69 6e 69 74 28 29 20 28 4d 32 43 72 79 70 74 'Nt.(j.....&sign_init().(M2Crypt
1b180 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 81 16 00 00 68 27 4e 74 94 28 6a 87 o.EVP.PKey.method).j....h'Nt.(j.
1b1a0 1b 00 00 8c 28 73 69 67 6e 5f 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 ....(sign_update().(M2Crypto.EVP
1b1c0 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 84 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 21 .PKey.method).j....h'Nt.(j.....!
1b1e0 73 69 7a 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 size().(M2Crypto.EVP.PKey.method
1b200 29 94 6a 87 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 75 70 64 61 74 65 28 29 20 28 4d 32 ).j....h'Nt.(j.....#update().(M2
1b220 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 8a 16 00 00 68 27 4e Crypto.EVP.PKey.method).j....h'N
1b240 74 94 28 6a 87 1b 00 00 8c 29 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 t.(j.....)verify_final().(M2Cryp
1b260 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 8d 16 00 00 68 27 4e 74 94 28 6a to.EVP.PKey.method).j....h'Nt.(j
1b280 87 1b 00 00 8c 28 76 65 72 69 66 79 5f 69 6e 69 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 .....(verify_init().(M2Crypto.EV
1b2a0 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 90 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c P.PKey.method).j....h'Nt.(j.....
1b2c0 2a 76 65 72 69 66 79 5f 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 *verify_update().(M2Crypto.EVP.P
1b2e0 4b 65 79 20 6d 65 74 68 6f 64 29 94 6a 93 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1f 68 6d Key.method).j....h'Nt.(j......hm
1b300 61 63 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a 96 ac().(in.module.M2Crypto.EVP).j.
1b320 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 6c 6f 61 64 5f 6b 65 79 28 29 20 28 69 6e 20 6d ...h'Nt.(j.....#load_key().(in.m
1b340 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a 99 16 00 00 68 27 4e 74 94 28 6a odule.M2Crypto.EVP).j....h'Nt.(j
1b360 87 1b 00 00 8c 27 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 .....'load_key_bio().(in.module.
1b380 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a 9c 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2e M2Crypto.EVP).j....h'Nt.(j......
1b3a0 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 load_key_bio_pubkey().(in.module
1b3c0 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a 9f 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c .M2Crypto.EVP).j....h'Nt.(j.....
1b3e0 2a 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 *load_key_string().(in.module.M2
1b400 43 72 79 70 74 6f 2e 45 56 50 29 94 6a a2 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 6c 6f Crypto.EVP).j....h'Nt.(j.....1lo
1b420 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 75 6c ad_key_string_pubkey().(in.modul
1b440 65 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 6a a5 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 e.M2Crypto.EVP).j....h'Nt.(j....
1b460 8c 21 70 62 6b 64 66 32 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 .!pbkdf2().(in.module.M2Crypto.E
1b480 56 50 29 94 6a a8 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 18 4d 32 43 72 79 70 74 6f 2e 45 VP).j....h'Nt.(j......M2Crypto.E
1b4a0 6e 67 69 6e 65 20 28 6d 6f 64 75 6c 65 29 94 8c 16 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f ngine.(module)...module-M2Crypto
1b4c0 2e 45 6e 67 69 6e 65 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 21 45 6e 67 69 6e 65 20 28 63 6c 61 .Engine.h'Nt.(j.....!Engine.(cla
1b4e0 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 29 94 6a ad 16 00 00 68 27 4e 74 ss.in.M2Crypto.Engine).j....h'Nt
1b500 94 28 6a 87 1b 00 00 8c 31 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 29 20 28 4d 32 43 72 .(j.....1ctrl_cmd_string().(M2Cr
1b520 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a b0 16 00 00 ypto.Engine.Engine.method).j....
1b540 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 66 69 6e 69 73 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e h'Nt.(j.....(finish().(M2Crypto.
1b560 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a b3 16 00 00 68 27 4e 74 94 Engine.Engine.method).j....h'Nt.
1b580 28 6a 87 1b 00 00 8c 28 67 65 74 5f 69 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e (j.....(get_id().(M2Crypto.Engin
1b5a0 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a b6 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 e.Engine.method).j....h'Nt.(j...
1b5c0 00 8c 2a 67 65 74 5f 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 ..*get_name().(M2Crypto.Engine.E
1b5e0 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a b9 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 ngine.method).j....h'Nt.(j.....&
1b600 69 6e 69 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d init().(M2Crypto.Engine.Engine.m
1b620 65 74 68 6f 64 29 94 6a bc 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 32 6c 6f 61 64 5f 63 65 ethod).j....h'Nt.(j.....2load_ce
1b640 72 74 69 66 69 63 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 rtificate().(M2Crypto.Engine.Eng
1b660 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a bf 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 32 6c 6f ine.method).j....h'Nt.(j.....2lo
1b680 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e ad_private_key().(M2Crypto.Engin
1b6a0 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a c2 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 e.Engine.method).j....h'Nt.(j...
1b6c0 00 8c 31 6c 6f 61 64 5f 70 75 62 6c 69 63 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 ..1load_public_key().(M2Crypto.E
1b6e0 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a c5 16 00 00 68 27 4e 74 94 28 ngine.Engine.method).j....h'Nt.(
1b700 6a 87 1b 00 00 8c 30 6d 32 5f 65 6e 67 69 6e 65 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 j.....0m2_engine_free().(M2Crypt
1b720 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a c8 16 00 00 68 27 4e o.Engine.Engine.method).j....h'N
1b740 74 94 28 6a 87 1b 00 00 8c 2d 73 65 74 5f 64 65 66 61 75 6c 74 28 29 20 28 4d 32 43 72 79 70 74 t.(j.....-set_default().(M2Crypt
1b760 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 6a cb 16 00 00 68 27 4e o.Engine.Engine.method).j....h'N
1b780 74 94 28 6a 87 1b 00 00 8c 0b 45 6e 67 69 6e 65 45 72 72 6f 72 94 6a ce 16 00 00 68 27 4e 74 94 t.(j......EngineError.j....h'Nt.
1b7a0 28 6a 87 1b 00 00 8c 25 63 6c 65 61 6e 75 70 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 (j.....%cleanup().(in.module.M2C
1b7c0 72 79 70 74 6f 2e 45 6e 67 69 6e 65 29 94 6a d1 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a rypto.Engine).j....h'Nt.(j.....*
1b7e0 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 load_dynamic().(in.module.M2Cryp
1b800 74 6f 2e 45 6e 67 69 6e 65 29 94 6a d4 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 6c 6f 61 to.Engine).j....h'Nt.(j.....1loa
1b820 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 d_dynamic_engine().(in.module.M2
1b840 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 29 94 6a d7 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c Crypto.Engine).j....h'Nt.(j.....
1b860 2a 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 *load_openssl().(in.module.M2Cry
1b880 70 74 6f 2e 45 6e 67 69 6e 65 29 94 6a da 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 15 4d 32 pto.Engine).j....h'Nt.(j......M2
1b8a0 43 72 79 70 74 6f 2e 45 72 72 20 28 6d 6f 64 75 6c 65 29 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 Crypto.Err.(module)...module-M2C
1b8c0 72 79 70 74 6f 2e 45 72 72 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 0d 4d 32 43 72 79 70 74 6f 45 rypto.Err.h'Nt.(j......M2CryptoE
1b8e0 72 72 6f 72 94 6a df 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 08 53 53 4c 45 72 72 6f 72 94 rror.j....h'Nt.(j......SSLError.
1b900 6a e2 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 67 65 74 5f 65 72 72 6f 72 28 29 20 28 69 j....h'Nt.(j.....$get_error().(i
1b920 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 6a e5 16 00 00 68 27 4e 74 n.module.M2Crypto.Err).j....h'Nt
1b940 94 28 6a 87 1b 00 00 8c 29 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 29 20 28 69 6e 20 6d 6f .(j.....)get_error_code().(in.mo
1b960 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 6a e8 16 00 00 68 27 4e 74 94 28 6a 87 dule.M2Crypto.Err).j....h'Nt.(j.
1b980 1b 00 00 8c 29 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 ....)get_error_func().(in.module
1b9a0 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 6a eb 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c .M2Crypto.Err).j....h'Nt.(j.....
1b9c0 28 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 (get_error_lib().(in.module.M2Cr
1b9e0 79 70 74 6f 2e 45 72 72 29 94 6a ee 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 67 65 74 5f ypto.Err).j....h'Nt.(j.....,get_
1ba00 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 error_message().(in.module.M2Cry
1ba20 70 74 6f 2e 45 72 72 29 94 6a f1 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 67 65 74 5f 65 pto.Err).j....h'Nt.(j.....+get_e
1ba40 72 72 6f 72 5f 72 65 61 73 6f 6e 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 rror_reason().(in.module.M2Crypt
1ba60 6f 2e 45 72 72 29 94 6a f4 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 67 65 74 5f 78 35 30 o.Err).j....h'Nt.(j.....0get_x50
1ba80 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 9_verify_error().(in.module.M2Cr
1baa0 79 70 74 6f 2e 45 72 72 29 94 6a f7 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 70 65 65 6b ypto.Err).j....h'Nt.(j.....*peek
1bac0 5f 65 72 72 6f 72 5f 63 6f 64 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 _error_code().(in.module.M2Crypt
1bae0 6f 2e 45 72 72 29 94 6a fa 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 15 4d 32 43 72 79 70 74 o.Err).j....h'Nt.(j......M2Crypt
1bb00 6f 2e 52 43 34 20 28 6d 6f 64 75 6c 65 29 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f o.RC4.(module)...module-M2Crypto
1bb20 2e 52 43 34 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1b 52 43 34 20 28 63 6c 61 73 73 20 69 6e 20 .RC4.h'Nt.(j......RC4.(class.in.
1bb40 4d 32 43 72 79 70 74 6f 2e 52 43 34 29 94 6a ff 16 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 21 M2Crypto.RC4).j....h'Nt.(j.....!
1bb60 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 20 6d 65 74 68 6f 64 final().(M2Crypto.RC4.RC4.method
1bb80 29 94 6a 02 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 72 63 34 5f 66 72 65 65 28 29 20 28 ).j....h'Nt.(j.....$rc4_free().(
1bba0 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 20 6d 65 74 68 6f 64 29 94 6a 05 17 00 00 68 27 M2Crypto.RC4.RC4.method).j....h'
1bbc0 4e 74 94 28 6a 87 1b 00 00 8c 23 73 65 74 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 Nt.(j.....#set_key().(M2Crypto.R
1bbe0 43 34 2e 52 43 34 20 6d 65 74 68 6f 64 29 94 6a 08 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c C4.RC4.method).j....h'Nt.(j.....
1bc00 22 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 20 6d 65 74 68 "update().(M2Crypto.RC4.RC4.meth
1bc20 6f 64 29 94 6a 0b 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 15 4d 32 43 72 79 70 74 6f 2e 52 od).j....h'Nt.(j......M2Crypto.R
1bc40 53 41 20 28 6d 6f 64 75 6c 65 29 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 52 53 SA.(module)...module-M2Crypto.RS
1bc60 41 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1b 52 53 41 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 A.h'Nt.(j......RSA.(class.in.M2C
1bc80 72 79 70 74 6f 2e 52 53 41 29 94 6a 10 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 61 73 5f rypto.RSA).j....h'Nt.(j....."as_
1bca0 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 pem().(M2Crypto.RSA.RSA.method).
1bcc0 6a 13 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 63 68 65 63 6b 5f 6b 65 79 28 29 20 28 4d j....h'Nt.(j.....%check_key().(M
1bce0 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 16 17 00 00 68 27 4e 2Crypto.RSA.RSA.method).j....h'N
1bd00 74 94 28 6a 87 1b 00 00 8c 27 6d 32 5f 72 73 61 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 t.(j.....'m2_rsa_free().(M2Crypt
1bd20 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 19 17 00 00 68 27 4e 74 94 28 6a 87 1b o.RSA.RSA.method).j....h'Nt.(j..
1bd40 00 00 8c 2b 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e ...+private_decrypt().(M2Crypto.
1bd60 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 1c 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 RSA.RSA.method).j....h'Nt.(j....
1bd80 8c 2b 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 .+private_encrypt().(M2Crypto.RS
1bda0 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 1f 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1f A.RSA.method).j....h'Nt.(j......
1bdc0 70 75 62 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 pub().(M2Crypto.RSA.RSA.method).
1bde0 6a 22 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 70 75 62 6c 69 63 5f 64 65 63 72 79 70 74 j"...h'Nt.(j.....*public_decrypt
1be00 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 25 17 ().(M2Crypto.RSA.RSA.method).j%.
1be20 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 28 29 20 ..h'Nt.(j.....*public_encrypt().
1be40 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 28 17 00 00 68 (M2Crypto.RSA.RSA.method).j(...h
1be60 27 4e 74 94 28 6a 87 1b 00 00 8c 24 73 61 76 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 'Nt.(j.....$save_key().(M2Crypto
1be80 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 2b 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 .RSA.RSA.method).j+...h'Nt.(j...
1bea0 00 8c 28 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e ..(save_key_bio().(M2Crypto.RSA.
1bec0 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 2e 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 73 61 RSA.method).j....h'Nt.(j.....(sa
1bee0 76 65 5f 6b 65 79 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d ve_key_der().(M2Crypto.RSA.RSA.m
1bf00 65 74 68 6f 64 29 94 6a 31 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 73 61 76 65 5f 6b 65 ethod).j1...h'Nt.(j.....,save_ke
1bf20 79 5f 64 65 72 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 y_der_bio().(M2Crypto.RSA.RSA.me
1bf40 74 68 6f 64 29 94 6a 34 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 73 61 76 65 5f 70 65 6d thod).j4...h'Nt.(j.....$save_pem
1bf60 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 37 17 ().(M2Crypto.RSA.RSA.method).j7.
1bf80 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 29 20 28 4d ..h'Nt.(j.....(save_pub_key().(M
1bfa0 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 3a 17 00 00 68 27 4e 2Crypto.RSA.RSA.method).j:...h'N
1bfc0 74 94 28 6a 87 1b 00 00 8c 2c 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 t.(j.....,save_pub_key_bio().(M2
1bfe0 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 3d 17 00 00 68 27 4e 74 Crypto.RSA.RSA.method).j=...h'Nt
1c000 94 28 6a 87 1b 00 00 8c 20 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 .(j......sign().(M2Crypto.RSA.RS
1c020 41 20 6d 65 74 68 6f 64 29 94 6a 40 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 73 69 67 6e A.method).j@...h'Nt.(j.....+sign
1c040 5f 72 73 61 73 73 61 5f 70 73 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 _rsassa_pss().(M2Crypto.RSA.RSA.
1c060 6d 65 74 68 6f 64 29 94 6a 43 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 76 65 72 69 66 79 method).jC...h'Nt.(j....."verify
1c080 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 46 17 ().(M2Crypto.RSA.RSA.method).jF.
1c0a0 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 76 65 72 69 66 79 5f 72 73 61 73 73 61 5f 70 73 73 ..h'Nt.(j.....-verify_rsassa_pss
1c0c0 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 6a 49 17 ().(M2Crypto.RSA.RSA.method).jI.
1c0e0 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 08 52 53 41 45 72 72 6f 72 94 6a 4c 17 00 00 68 27 4e ..h'Nt.(j......RSAError.jL...h'N
1c100 74 94 28 6a 87 1b 00 00 8c 1f 52 53 41 5f 70 75 62 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 t.(j......RSA_pub.(class.in.M2Cr
1c120 79 70 74 6f 2e 52 53 41 29 94 6a 4f 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 63 68 65 63 ypto.RSA).jO...h'Nt.(j.....)chec
1c140 6b 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 6d 65 k_key().(M2Crypto.RSA.RSA_pub.me
1c160 74 68 6f 64 29 94 6a 52 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 70 72 69 76 61 74 65 5f thod).jR...h'Nt.(j...../private_
1c180 64 65 63 72 79 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 decrypt().(M2Crypto.RSA.RSA_pub.
1c1a0 6d 65 74 68 6f 64 29 94 6a 55 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 70 72 69 76 61 74 method).jU...h'Nt.(j...../privat
1c1c0 65 5f 65 6e 63 72 79 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 e_encrypt().(M2Crypto.RSA.RSA_pu
1c1e0 62 20 6d 65 74 68 6f 64 29 94 6a 58 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 73 61 76 65 b.method).jX...h'Nt.(j.....(save
1c200 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 6d 65 74 _key().(M2Crypto.RSA.RSA_pub.met
1c220 68 6f 64 29 94 6a 5b 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 73 61 76 65 5f 6b 65 79 5f hod).j[...h'Nt.(j.....,save_key_
1c240 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 6d 65 74 68 bio().(M2Crypto.RSA.RSA_pub.meth
1c260 6f 64 29 94 6a 5e 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 67 65 6e 5f 6b 65 79 28 29 20 od).j^...h'Nt.(j....."gen_key().
1c280 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 6a 61 17 00 00 68 27 (in.module.M2Crypto.RSA).ja...h'
1c2a0 4e 74 94 28 6a 87 1b 00 00 8c 2a 6b 65 79 67 65 6e 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 69 6e Nt.(j.....*keygen_callback().(in
1c2c0 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 6a 64 17 00 00 68 27 4e 74 94 .module.M2Crypto.RSA).jd...h'Nt.
1c2e0 28 6a 87 1b 00 00 8c 23 6c 6f 61 64 5f 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 (j.....#load_key().(in.module.M2
1c300 43 72 79 70 74 6f 2e 52 53 41 29 94 6a 67 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6c 6f Crypto.RSA).jg...h'Nt.(j.....'lo
1c320 61 64 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f ad_key_bio().(in.module.M2Crypto
1c340 2e 52 53 41 29 94 6a 6a 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 6c 6f 61 64 5f 6b 65 79 .RSA).jj...h'Nt.(j.....*load_key
1c360 5f 73 74 72 69 6e 67 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 _string().(in.module.M2Crypto.RS
1c380 41 29 94 6a 6d 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6c 6f 61 64 5f 70 75 62 5f 6b 65 A).jm...h'Nt.(j.....'load_pub_ke
1c3a0 79 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 6a 70 17 y().(in.module.M2Crypto.RSA).jp.
1c3c0 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 ..h'Nt.(j.....+load_pub_key_bio(
1c3e0 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 6a 73 17 00 00 ).(in.module.M2Crypto.RSA).js...
1c400 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 6e 65 77 5f 70 75 62 5f 6b 65 79 28 29 20 28 69 6e 20 6d h'Nt.(j.....&new_pub_key().(in.m
1c420 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 6a 76 17 00 00 68 27 4e 74 94 28 6a odule.M2Crypto.RSA).jv...h'Nt.(j
1c440 87 1b 00 00 8c 24 72 73 61 5f 65 72 72 6f 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 .....$rsa_error().(in.module.M2C
1c460 72 79 70 74 6f 2e 52 53 41 29 94 6a 79 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 16 4d 32 43 rypto.RSA).jy...h'Nt.(j......M2C
1c480 72 79 70 74 6f 2e 52 61 6e 64 20 28 6d 6f 64 75 6c 65 29 94 8c 14 6d 6f 64 75 6c 65 2d 4d 32 43 rypto.Rand.(module)...module-M2C
1c4a0 72 79 70 74 6f 2e 52 61 6e 64 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 72 61 6e 64 5f 73 65 65 rypto.Rand.h'Nt.(j.....%rand_see
1c4c0 64 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 7e d().(in.module.M2Crypto.Rand).j~
1c4e0 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 72 61 6e 64 5f 61 64 64 28 29 20 28 69 6e 20 6d ...h'Nt.(j.....$rand_add().(in.m
1c500 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 81 17 00 00 68 27 4e 74 94 28 odule.M2Crypto.Rand).j....h'Nt.(
1c520 6a 87 1b 00 00 8c 25 6c 6f 61 64 5f 66 69 6c 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 j.....%load_file().(in.module.M2
1c540 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 84 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 73 Crypto.Rand).j....h'Nt.(j.....%s
1c560 61 76 65 5f 66 69 6c 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 ave_file().(in.module.M2Crypto.R
1c580 61 6e 64 29 94 6a 87 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 72 61 6e 64 5f 62 79 74 65 and).j....h'Nt.(j.....&rand_byte
1c5a0 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 8a s().(in.module.M2Crypto.Rand).j.
1c5c0 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 ...h'Nt.(j.....-rand_pseudo_byte
1c5e0 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 8d s().(in.module.M2Crypto.Rand).j.
1c600 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 28 29 ...h'Nt.(j.....*rand_file_name()
1c620 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 90 17 00 00 .(in.module.M2Crypto.Rand).j....
1c640 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 72 61 6e 64 5f 73 74 61 74 75 73 28 29 20 28 69 6e 20 6d h'Nt.(j.....'rand_status().(in.m
1c660 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 6a 93 17 00 00 68 27 4e 74 94 28 odule.M2Crypto.Rand).j....h'Nt.(
1c680 6a 87 1b 00 00 8c 17 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 20 28 6d 6f 64 75 6c 65 29 94 8c j......M2Crypto.SMIME.(module)..
1c6a0 15 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 68 27 4e 74 94 28 6a 87 1b .module-M2Crypto.SMIME.h'Nt.(j..
1c6c0 00 00 8c 20 43 69 70 68 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 4d ....Cipher.(class.in.M2Crypto.SM
1c6e0 49 4d 45 29 94 6a 98 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1f 50 4b 43 53 37 20 28 63 6c IME).j....h'Nt.(j......PKCS7.(cl
1c700 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a 9b 17 00 00 68 27 4e 74 ass.in.M2Crypto.SMIME).j....h'Nt
1c720 94 28 6a 87 1b 00 00 8c 2c 67 65 74 30 5f 73 69 67 6e 65 72 73 28 29 20 28 4d 32 43 72 79 70 74 .(j.....,get0_signers().(M2Crypt
1c740 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 20 6d 65 74 68 6f 64 29 94 6a 9e 17 00 00 68 27 4e 74 94 o.SMIME.PKCS7.method).j....h'Nt.
1c760 28 6a 87 1b 00 00 8c 2d 6d 32 5f 70 6b 63 73 37 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 (j.....-m2_pkcs7_free().(M2Crypt
1c780 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 20 6d 65 74 68 6f 64 29 94 6a a1 17 00 00 68 27 4e 74 94 o.SMIME.PKCS7.method).j....h'Nt.
1c7a0 28 6a 87 1b 00 00 8c 24 74 79 70 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 (j.....$type().(M2Crypto.SMIME.P
1c7c0 4b 43 53 37 20 6d 65 74 68 6f 64 29 94 6a a4 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 77 KCS7.method).j....h'Nt.(j.....%w
1c7e0 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 20 6d 65 74 rite().(M2Crypto.SMIME.PKCS7.met
1c800 68 6f 64 29 94 6a a7 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 77 72 69 74 65 5f 64 65 72 hod).j....h'Nt.(j.....)write_der
1c820 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 20 6d 65 74 68 6f 64 29 ().(M2Crypto.SMIME.PKCS7.method)
1c840 94 6a aa 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 0b 50 4b 43 53 37 5f 45 72 72 6f 72 94 6a .j....h'Nt.(j......PKCS7_Error.j
1c860 ad 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1f 53 4d 49 4d 45 20 28 63 6c 61 73 73 20 69 6e ....h'Nt.(j......SMIME.(class.in
1c880 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a b0 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 .M2Crypto.SMIME).j....h'Nt.(j...
1c8a0 00 8c 27 64 65 63 72 79 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 ..'decrypt().(M2Crypto.SMIME.SMI
1c8c0 4d 45 20 6d 65 74 68 6f 64 29 94 6a b3 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 65 6e 63 ME.method).j....h'Nt.(j.....'enc
1c8e0 72 79 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 rypt().(M2Crypto.SMIME.SMIME.met
1c900 68 6f 64 29 94 6a b6 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 6c 6f 61 64 5f 6b 65 79 28 hod).j....h'Nt.(j.....(load_key(
1c920 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 ).(M2Crypto.SMIME.SMIME.method).
1c940 6a b9 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 29 j....h'Nt.(j.....,load_key_bio()
1c960 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a .(M2Crypto.SMIME.SMIME.method).j
1c980 bc 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 73 65 74 5f 63 69 70 68 65 72 28 29 20 28 4d ....h'Nt.(j.....*set_cipher().(M
1c9a0 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a bf 17 00 2Crypto.SMIME.SMIME.method).j...
1c9c0 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 29 20 28 .h'Nt.(j......set_x509_stack().(
1c9e0 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a c2 17 M2Crypto.SMIME.SMIME.method).j..
1ca00 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 28 29 20 ..h'Nt.(j......set_x509_store().
1ca20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a c5 (M2Crypto.SMIME.SMIME.method).j.
1ca40 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 6f ...h'Nt.(j.....$sign().(M2Crypto
1ca60 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a c8 17 00 00 68 27 4e 74 94 28 .SMIME.SMIME.method).j....h'Nt.(
1ca80 6a 87 1b 00 00 8c 2c 75 6e 73 65 74 5f 63 69 70 68 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e j.....,unset_cipher().(M2Crypto.
1caa0 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a cb 17 00 00 68 27 4e 74 94 28 6a SMIME.SMIME.method).j....h'Nt.(j
1cac0 87 1b 00 00 8c 29 75 6e 73 65 74 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d .....)unset_key().(M2Crypto.SMIM
1cae0 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a ce 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 E.SMIME.method).j....h'Nt.(j....
1cb00 8c 30 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 .0unset_x509_stack().(M2Crypto.S
1cb20 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a d1 17 00 00 68 27 4e 74 94 28 6a 87 MIME.SMIME.method).j....h'Nt.(j.
1cb40 1b 00 00 8c 30 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 28 29 20 28 4d 32 43 72 79 70 74 ....0unset_x509_store().(M2Crypt
1cb60 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a d4 17 00 00 68 27 4e 74 94 o.SMIME.SMIME.method).j....h'Nt.
1cb80 28 6a 87 1b 00 00 8c 26 76 65 72 69 66 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 (j.....&verify().(M2Crypto.SMIME
1cba0 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 6a d7 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c .SMIME.method).j....h'Nt.(j.....
1cbc0 25 77 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d %write().(M2Crypto.SMIME.SMIME.m
1cbe0 65 74 68 6f 64 29 94 6a da 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 0b 53 4d 49 4d 45 5f 45 ethod).j....h'Nt.(j......SMIME_E
1cc00 72 72 6f 72 94 6a dd 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6c 6f 61 64 5f 70 6b 63 73 rror.j....h'Nt.(j.....'load_pkcs
1cc20 37 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a 7().(in.module.M2Crypto.SMIME).j
1cc40 e0 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 28 ....h'Nt.(j.....+load_pkcs7_bio(
1cc60 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a e3 17 ).(in.module.M2Crypto.SMIME).j..
1cc80 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 ..h'Nt.(j...../load_pkcs7_bio_de
1cca0 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a r().(in.module.M2Crypto.SMIME).j
1ccc0 e6 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 72 28 ....h'Nt.(j.....+load_pkcs7_der(
1cce0 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a e9 17 ).(in.module.M2Crypto.SMIME).j..
1cd00 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 28 ..h'Nt.(j.....-smime_load_pkcs7(
1cd20 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a ec 17 ).(in.module.M2Crypto.SMIME).j..
1cd40 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f ..h'Nt.(j.....1smime_load_pkcs7_
1cd60 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 bio().(in.module.M2Crypto.SMIME)
1cd80 94 6a ef 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 26 74 65 78 74 5f 63 72 6c 66 28 29 20 28 .j....h'Nt.(j.....&text_crlf().(
1cda0 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a f2 17 00 00 68 in.module.M2Crypto.SMIME).j....h
1cdc0 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 74 65 78 74 5f 63 72 6c 66 5f 62 69 6f 28 29 20 28 69 6e 20 'Nt.(j.....*text_crlf_bio().(in.
1cde0 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 6a f5 17 00 00 68 27 4e 74 module.M2Crypto.SMIME).j....h'Nt
1ce00 94 28 6a 87 1b 00 00 8c 16 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 20 28 6d 6f 64 75 6c 65 29 94 .(j......M2Crypto.X509.(module).
1ce20 8c 14 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 94 68 27 4e 74 94 28 6a 87 1b ..module-M2Crypto.X509.h'Nt.(j..
1ce40 00 00 8c 1c 43 52 4c 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 ....CRL.(class.in.M2Crypto.X509)
1ce60 94 6a fa 17 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 61 73 5f 74 65 78 74 28 29 20 28 4d 32 .j....h'Nt.(j.....$as_text().(M2
1ce80 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 20 6d 65 74 68 6f 64 29 94 6a fd 17 00 00 68 27 4e Crypto.X509.CRL.method).j....h'N
1cea0 74 94 28 6a 87 1b 00 00 8c 2d 6d 32 5f 78 35 30 39 5f 63 72 6c 5f 66 72 65 65 28 29 20 28 4d 32 t.(j.....-m2_x509_crl_free().(M2
1cec0 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 20 6d 65 74 68 6f 64 29 94 6a 00 18 00 00 68 27 4e Crypto.X509.CRL.method).j....h'N
1cee0 74 94 28 6a 87 1b 00 00 8c 20 52 65 71 75 65 73 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 t.(j......Request.(class.in.M2Cr
1cf00 79 70 74 6f 2e 58 35 30 39 29 94 6a 03 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 61 64 64 ypto.X509).j....h'Nt.(j...../add
1cf20 5f 65 78 74 65 6e 73 69 6f 6e 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 _extensions().(M2Crypto.X509.Req
1cf40 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 06 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 61 uest.method).j....h'Nt.(j.....'a
1cf60 73 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d s_der().(M2Crypto.X509.Request.m
1cf80 65 74 68 6f 64 29 94 6a 09 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 61 73 5f 70 65 6d 28 ethod).j....h'Nt.(j.....'as_pem(
1cfa0 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 ).(M2Crypto.X509.Request.method)
1cfc0 94 6a 0c 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 61 73 5f 74 65 78 74 28 29 20 28 4d 32 .j....h'Nt.(j.....(as_text().(M2
1cfe0 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 0f 18 00 Crypto.X509.Request.method).j...
1d000 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 67 65 74 5f 70 75 62 6b 65 79 28 29 20 28 4d 32 43 72 .h'Nt.(j.....+get_pubkey().(M2Cr
1d020 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 12 18 00 00 68 ypto.X509.Request.method).j....h
1d040 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 67 65 74 5f 73 75 62 6a 65 63 74 28 29 20 28 4d 32 43 72 79 'Nt.(j.....,get_subject().(M2Cry
1d060 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 15 18 00 00 68 27 pto.X509.Request.method).j....h'
1d080 4e 74 94 28 6a 87 1b 00 00 8c 2c 67 65 74 5f 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 Nt.(j.....,get_version().(M2Cryp
1d0a0 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 18 18 00 00 68 27 4e to.X509.Request.method).j....h'N
1d0c0 74 94 28 6a 87 1b 00 00 8c 31 6d 32 5f 78 35 30 39 5f 72 65 71 5f 66 72 65 65 28 29 20 28 4d 32 t.(j.....1m2_x509_req_free().(M2
1d0e0 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 1b 18 00 Crypto.X509.Request.method).j...
1d100 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 73 61 76 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 .h'Nt.(j.....%save().(M2Crypto.X
1d120 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 1e 18 00 00 68 27 4e 74 94 28 6a 509.Request.method).j....h'Nt.(j
1d140 87 1b 00 00 8c 29 73 61 76 65 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e .....)save_pem().(M2Crypto.X509.
1d160 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 21 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 Request.method).j!...h'Nt.(j....
1d180 8c 2b 73 65 74 5f 70 75 62 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 .+set_pubkey().(M2Crypto.X509.Re
1d1a0 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 24 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c quest.method).j$...h'Nt.(j.....,
1d1c0 73 65 74 5f 73 75 62 6a 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 set_subject().(M2Crypto.X509.Req
1d1e0 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 27 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 73 uest.method).j'...h'Nt.(j.....1s
1d200 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 et_subject_name().(M2Crypto.X509
1d220 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 2a 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 .Request.method).j*...h'Nt.(j...
1d240 00 8c 2c 73 65 74 5f 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e ..,set_version().(M2Crypto.X509.
1d260 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 6a 2d 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 Request.method).j-...h'Nt.(j....
1d280 8c 25 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 .%sign().(M2Crypto.X509.Request.
1d2a0 6d 65 74 68 6f 64 29 94 6a 30 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 76 65 72 69 66 79 method).j0...h'Nt.(j.....'verify
1d2c0 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 ().(M2Crypto.X509.Request.method
1d2e0 29 94 6a 33 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1d 58 35 30 39 20 28 63 6c 61 73 73 20 ).j3...h'Nt.(j......X509.(class.
1d300 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 36 18 00 00 68 27 4e 74 94 28 6a 87 1b in.M2Crypto.X509).j6...h'Nt.(j..
1d320 00 00 8c 25 61 64 64 5f 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 ...%add_ext().(M2Crypto.X509.X50
1d340 39 20 6d 65 74 68 6f 64 29 94 6a 39 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 61 73 5f 64 9.method).j9...h'Nt.(j.....$as_d
1d360 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 er().(M2Crypto.X509.X509.method)
1d380 94 6a 3c 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 24 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 .j<...h'Nt.(j.....$as_pem().(M2C
1d3a0 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 3f 18 00 00 68 27 4e rypto.X509.X509.method).j?...h'N
1d3c0 74 94 28 6a 87 1b 00 00 8c 25 61 73 5f 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 t.(j.....%as_text().(M2Crypto.X5
1d3e0 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 42 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 09.X509.method).jB...h'Nt.(j....
1d400 8c 26 63 68 65 63 6b 5f 63 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 .&check_ca().(M2Crypto.X509.X509
1d420 20 6d 65 74 68 6f 64 29 94 6a 45 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 63 68 65 63 6b .method).jE...h'Nt.(j.....+check
1d440 5f 70 75 72 70 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d _purpose().(M2Crypto.X509.X509.m
1d460 65 74 68 6f 64 29 94 6a 48 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 67 65 74 5f 65 78 74 ethod).jH...h'Nt.(j.....%get_ext
1d480 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a ().(M2Crypto.X509.X509.method).j
1d4a0 4b 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 67 65 74 5f 65 78 74 5f 61 74 28 29 20 28 4d K...h'Nt.(j.....(get_ext_at().(M
1d4c0 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 4e 18 00 00 68 2Crypto.X509.X509.method).jN...h
1d4e0 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 29 20 28 4d 32 43 'Nt.(j.....+get_ext_count().(M2C
1d500 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 51 18 00 00 68 27 4e rypto.X509.X509.method).jQ...h'N
1d520 74 94 28 6a 87 1b 00 00 8c 2d 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 28 29 20 28 4d 32 43 t.(j.....-get_fingerprint().(M2C
1d540 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 54 18 00 00 68 27 4e rypto.X509.X509.method).jT...h'N
1d560 74 94 28 6a 87 1b 00 00 8c 28 67 65 74 5f 69 73 73 75 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f t.(j.....(get_issuer().(M2Crypto
1d580 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 57 18 00 00 68 27 4e 74 94 28 6a 87 .X509.X509.method).jW...h'Nt.(j.
1d5a0 1b 00 00 8c 2b 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 ....+get_not_after().(M2Crypto.X
1d5c0 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 5a 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 509.X509.method).jZ...h'Nt.(j...
1d5e0 00 8c 2c 67 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 ..,get_not_before().(M2Crypto.X5
1d600 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 5d 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 09.X509.method).j]...h'Nt.(j....
1d620 8c 28 67 65 74 5f 70 75 62 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .(get_pubkey().(M2Crypto.X509.X5
1d640 30 39 20 6d 65 74 68 6f 64 29 94 6a 60 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 67 65 74 09.method).j`...h'Nt.(j...../get
1d660 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e _serial_number().(M2Crypto.X509.
1d680 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 63 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 67 X509.method).jc...h'Nt.(j.....)g
1d6a0 65 74 5f 73 75 62 6a 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 et_subject().(M2Crypto.X509.X509
1d6c0 20 6d 65 74 68 6f 64 29 94 6a 66 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 67 65 74 5f 76 .method).jf...h'Nt.(j.....)get_v
1d6e0 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 ersion().(M2Crypto.X509.X509.met
1d700 68 6f 64 29 94 6a 69 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 6d 32 5f 78 35 30 39 5f 66 hod).ji...h'Nt.(j.....*m2_x509_f
1d720 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 ree().(M2Crypto.X509.X509.method
1d740 29 94 6a 6c 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 73 61 76 65 28 29 20 28 4d 32 43 72 ).jl...h'Nt.(j....."save().(M2Cr
1d760 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 6f 18 00 00 68 27 4e 74 ypto.X509.X509.method).jo...h'Nt
1d780 94 28 6a 87 1b 00 00 8c 26 73 61 76 65 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 .(j.....&save_pem().(M2Crypto.X5
1d7a0 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 72 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 09.X509.method).jr...h'Nt.(j....
1d7c0 8c 28 73 65 74 5f 69 73 73 75 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .(set_issuer().(M2Crypto.X509.X5
1d7e0 30 39 20 6d 65 74 68 6f 64 29 94 6a 75 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 73 65 74 09.method).ju...h'Nt.(j.....-set
1d800 5f 69 73 73 75 65 72 5f 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 _issuer_name().(M2Crypto.X509.X5
1d820 30 39 20 6d 65 74 68 6f 64 29 94 6a 78 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 73 65 74 09.method).jx...h'Nt.(j.....+set
1d840 5f 6e 6f 74 5f 61 66 74 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 _not_after().(M2Crypto.X509.X509
1d860 20 6d 65 74 68 6f 64 29 94 6a 7b 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 73 65 74 5f 6e .method).j{...h'Nt.(j.....,set_n
1d880 6f 74 5f 62 65 66 6f 72 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 ot_before().(M2Crypto.X509.X509.
1d8a0 6d 65 74 68 6f 64 29 94 6a 7e 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 73 65 74 5f 70 75 method).j~...h'Nt.(j.....(set_pu
1d8c0 62 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f bkey().(M2Crypto.X509.X509.metho
1d8e0 64 29 94 6a 81 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 73 65 74 5f 73 65 72 69 61 6c 5f d).j....h'Nt.(j...../set_serial_
1d900 6e 75 6d 62 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 number().(M2Crypto.X509.X509.met
1d920 68 6f 64 29 94 6a 84 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 73 65 74 5f 73 75 62 6a 65 hod).j....h'Nt.(j.....)set_subje
1d940 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 ct().(M2Crypto.X509.X509.method)
1d960 94 6a 87 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e .j....h'Nt.(j......set_subject_n
1d980 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 ame().(M2Crypto.X509.X509.method
1d9a0 29 94 6a 8a 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 73 65 74 5f 76 65 72 73 69 6f 6e 28 ).j....h'Nt.(j.....)set_version(
1d9c0 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 8d ).(M2Crypto.X509.X509.method).j.
1d9e0 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 6f ...h'Nt.(j....."sign().(M2Crypto
1da00 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 6a 90 18 00 00 68 27 4e 74 94 28 6a 87 .X509.X509.method).j....h'Nt.(j.
1da20 1b 00 00 8c 24 76 65 72 69 66 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 ....$verify().(M2Crypto.X509.X50
1da40 39 20 6d 65 74 68 6f 64 29 94 6a 93 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 09 58 35 30 39 9.method).j....h'Nt.(j......X509
1da60 45 72 72 6f 72 94 6a 96 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 58 35 30 39 5f 45 78 74 Error.j....h'Nt.(j.....'X509_Ext
1da80 65 6e 73 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 ension.(class.in.M2Crypto.X509).
1daa0 6a 99 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 34 67 65 74 5f 63 72 69 74 69 63 61 6c 28 29 j....h'Nt.(j.....4get_critical()
1dac0 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 6d .(M2Crypto.X509.X509_Extension.m
1dae0 65 74 68 6f 64 29 94 6a 9c 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 67 65 74 5f 6e 61 6d ethod).j....h'Nt.(j.....0get_nam
1db00 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f e().(M2Crypto.X509.X509_Extensio
1db20 6e 20 6d 65 74 68 6f 64 29 94 6a 9f 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 67 65 74 5f n.method).j....h'Nt.(j.....1get_
1db40 76 61 6c 75 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 value().(M2Crypto.X509.X509_Exte
1db60 6e 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a a2 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3e nsion.method).j....h'Nt.(j.....>
1db80 6d 32 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 m2_x509_extension_free().(M2Cryp
1dba0 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a to.X509.X509_Extension.method).j
1dbc0 a5 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 34 73 65 74 5f 63 72 69 74 69 63 61 6c 28 29 20 ....h'Nt.(j.....4set_critical().
1dbe0 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 6d 65 (M2Crypto.X509.X509_Extension.me
1dc00 74 68 6f 64 29 94 6a a8 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 58 35 30 39 5f 45 78 74 thod).j....h'Nt.(j.....-X509_Ext
1dc20 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e ension_Stack.(class.in.M2Crypto.
1dc40 58 35 30 39 29 94 6a ab 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 47 6d 32 5f 73 6b 5f 78 35 X509).j....h'Nt.(j.....Gm2_sk_x5
1dc60 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 09_extension_free().(M2Crypto.X5
1dc80 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 09.X509_Extension_Stack.method).
1dca0 6a ae 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 70 6f 70 28 29 20 28 4d 32 43 72 79 70 74 j....h'Nt.(j.....1pop().(M2Crypt
1dcc0 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 20 6d 65 74 68 o.X509.X509_Extension_Stack.meth
1dce0 6f 64 29 94 6a b1 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 32 70 75 73 68 28 29 20 28 4d 32 od).j....h'Nt.(j.....2push().(M2
1dd00 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b Crypto.X509.X509_Extension_Stack
1dd20 20 6d 65 74 68 6f 64 29 94 6a b4 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 22 58 35 30 39 5f .method).j....h'Nt.(j....."X509_
1dd40 4e 61 6d 65 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a b7 Name.(class.in.M2Crypto.X509).j.
1dd60 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 78 74 ...h'Nt.(j.....3add_entry_by_txt
1dd80 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 6d 65 74 68 ().(M2Crypto.X509.X509_Name.meth
1dda0 6f 64 29 94 6a ba 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 61 73 5f 64 65 72 28 29 20 28 od).j....h'Nt.(j.....)as_der().(
1ddc0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 6d 65 74 68 6f 64 29 94 M2Crypto.X509.X509_Name.method).
1dde0 6a bd 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 61 73 5f 68 61 73 68 28 29 20 28 4d 32 43 j....h'Nt.(j.....*as_hash().(M2C
1de00 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 6d 65 74 68 6f 64 29 94 6a c0 18 rypto.X509.X509_Name.method).j..
1de20 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 61 73 5f 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 ..h'Nt.(j.....*as_text().(M2Cryp
1de40 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 6d 65 74 68 6f 64 29 94 6a c3 18 00 00 68 to.X509.X509_Name.method).j....h
1de60 27 4e 74 94 28 6a 87 1b 00 00 8c 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 28 29 20 28 4d 32 43 72 79 'Nt.(j......entry_count().(M2Cry
1de80 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 6d 65 74 68 6f 64 29 94 6a c6 18 00 00 pto.X509.X509_Name.method).j....
1dea0 68 27 4e 74 94 28 6a 87 1b 00 00 8c 35 67 65 74 5f 65 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 28 h'Nt.(j.....5get_entries_by_nid(
1dec0 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 6d 65 74 68 6f ).(M2Crypto.X509.X509_Name.metho
1dee0 64 29 94 6a c9 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 34 6d 32 5f 78 35 30 39 5f 6e 61 6d d).j....h'Nt.(j.....4m2_x509_nam
1df00 65 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d e_free().(M2Crypto.X509.X509_Nam
1df20 65 20 6d 65 74 68 6f 64 29 94 6a cc 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 6e 69 64 20 e.method).j....h'Nt.(j.....'nid.
1df40 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 61 74 74 72 69 62 75 (M2Crypto.X509.X509_Name.attribu
1df60 74 65 29 94 6a cf 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 58 35 30 39 5f 4e 61 6d 65 5f te).j....h'Nt.(j.....(X509_Name_
1df80 45 6e 74 72 79 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a Entry.(class.in.M2Crypto.X509).j
1dfa0 d2 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 36 63 72 65 61 74 65 5f 62 79 5f 74 78 74 28 29 ....h'Nt.(j.....6create_by_txt()
1dfc0 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 20 .(M2Crypto.X509.X509_Name_Entry.
1dfe0 6d 65 74 68 6f 64 29 94 6a d5 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 67 65 74 5f 64 61 method).j....h'Nt.(j.....1get_da
1e000 74 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e ta().(M2Crypto.X509.X509_Name_En
1e020 74 72 79 20 6d 65 74 68 6f 64 29 94 6a d8 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 67 65 try.method).j....h'Nt.(j.....3ge
1e040 74 5f 6f 62 6a 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e t_object().(M2Crypto.X509.X509_N
1e060 61 6d 65 5f 45 6e 74 72 79 20 6d 65 74 68 6f 64 29 94 6a db 18 00 00 68 27 4e 74 94 28 6a 87 1b ame_Entry.method).j....h'Nt.(j..
1e080 00 00 8c 40 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 28 29 20 28 4d ...@m2_x509_name_entry_free().(M
1e0a0 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 20 6d 65 74 2Crypto.X509.X509_Name_Entry.met
1e0c0 68 6f 64 29 94 6a de 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 73 65 74 5f 64 61 74 61 28 hod).j....h'Nt.(j.....1set_data(
1e0e0 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 ).(M2Crypto.X509.X509_Name_Entry
1e100 20 6d 65 74 68 6f 64 29 94 6a e1 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 73 65 74 5f 6f .method).j....h'Nt.(j.....3set_o
1e120 62 6a 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 bject().(M2Crypto.X509.X509_Name
1e140 5f 45 6e 74 72 79 20 6d 65 74 68 6f 64 29 94 6a e4 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c _Entry.method).j....h'Nt.(j.....
1e160 23 58 35 30 39 5f 53 74 61 63 6b 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 #X509_Stack.(class.in.M2Crypto.X
1e180 35 30 39 29 94 6a e7 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 61 73 5f 64 65 72 28 29 20 509).j....h'Nt.(j.....*as_der().
1e1a0 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 (M2Crypto.X509.X509_Stack.method
1e1c0 29 94 6a ea 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 6d 32 5f 73 6b 5f 78 35 30 39 5f 66 ).j....h'Nt.(j.....3m2_sk_x509_f
1e1e0 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 20 ree().(M2Crypto.X509.X509_Stack.
1e200 6d 65 74 68 6f 64 29 94 6a ed 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 27 70 6f 70 28 29 20 method).j....h'Nt.(j.....'pop().
1e220 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 (M2Crypto.X509.X509_Stack.method
1e240 29 94 6a f0 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 70 75 73 68 28 29 20 28 4d 32 43 72 ).j....h'Nt.(j.....(push().(M2Cr
1e260 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 6a f3 18 ypto.X509.X509_Stack.method).j..
1e280 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 23 58 35 30 39 5f 53 74 6f 72 65 20 28 63 6c 61 73 73 ..h'Nt.(j.....#X509_Store.(class
1e2a0 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a f6 18 00 00 68 27 4e 74 94 28 6a 87 .in.M2Crypto.X509).j....h'Nt.(j.
1e2c0 1b 00 00 8c 2c 61 64 64 5f 63 65 72 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 ....,add_cert().(M2Crypto.X509.X
1e2e0 35 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 6a f9 18 00 00 68 27 4e 74 94 28 6a 87 1b 509_Store.method).j....h'Nt.(j..
1e300 00 00 8c 2c 61 64 64 5f 78 35 30 39 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ...,add_x509().(M2Crypto.X509.X5
1e320 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 6a fc 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 09_Store.method).j....h'Nt.(j...
1e340 00 8c 2d 6c 6f 61 64 5f 69 6e 66 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ..-load_info().(M2Crypto.X509.X5
1e360 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 6a ff 18 00 00 68 27 4e 74 94 28 6a 87 1b 00 09_Store.method).j....h'Nt.(j...
1e380 00 8c 32 6c 6f 61 64 5f 6c 6f 63 61 74 69 6f 6e 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 ..2load_locations().(M2Crypto.X5
1e3a0 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 6a 02 19 00 00 68 27 4e 74 94 09.X509_Store.method).j....h'Nt.
1e3c0 28 6a 87 1b 00 00 8c 36 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 66 72 65 65 28 29 20 28 4d 32 (j.....6m2_x509_store_free().(M2
1e3e0 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 6a Crypto.X509.X509_Store.method).j
1e400 05 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 31 73 65 74 5f 76 65 72 69 66 79 5f 63 62 28 29 ....h'Nt.(j.....1set_verify_cb()
1e420 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f .(M2Crypto.X509.X509_Store.metho
1e440 64 29 94 6a 08 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2b 58 35 30 39 5f 53 74 6f 72 65 5f d).j....h'Nt.(j.....+X509_Store_
1e460 43 6f 6e 74 65 78 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 Context.(class.in.M2Crypto.X509)
1e480 94 6a 0b 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 36 67 65 74 31 5f 63 68 61 69 6e 28 29 20 .j....h'Nt.(j.....6get1_chain().
1e4a0 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 (M2Crypto.X509.X509_Store_Contex
1e4c0 74 20 6d 65 74 68 6f 64 29 94 6a 0e 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3c 67 65 74 5f t.method).j....h'Nt.(j.....<get_
1e4e0 63 75 72 72 65 6e 74 5f 63 65 72 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 current_cert().(M2Crypto.X509.X5
1e500 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 11 19 00 00 68 27 09_Store_Context.method).j....h'
1e520 4e 74 94 28 6a 87 1b 00 00 8c 35 67 65 74 5f 65 72 72 6f 72 28 29 20 28 4d 32 43 72 79 70 74 6f Nt.(j.....5get_error().(M2Crypto
1e540 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 .X509.X509_Store_Context.method)
1e560 94 6a 14 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3b 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 .j....h'Nt.(j.....;get_error_dep
1e580 74 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 5f 43 th().(M2Crypto.X509.X509_Store_C
1e5a0 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 6a 17 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c ontext.method).j....h'Nt.(j.....
1e5c0 42 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 Bm2_x509_store_ctx_free().(M2Cry
1e5e0 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 20 6d 65 74 68 pto.X509.X509_Store_Context.meth
1e600 6f 64 29 94 6a 1a 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 6c 6f 61 64 5f 63 65 72 74 28 od).j....h'Nt.(j.....%load_cert(
1e620 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 1d 19 00 ).(in.module.M2Crypto.X509).j...
1e640 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 29 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 28 29 20 28 69 .h'Nt.(j.....)load_cert_bio().(i
1e660 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 20 19 00 00 68 27 4e n.module.M2Crypto.X509).j....h'N
1e680 74 94 28 6a 87 1b 00 00 8c 30 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 28 29 t.(j.....0load_cert_der_string()
1e6a0 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 23 19 00 00 .(in.module.M2Crypto.X509).j#...
1e6c0 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 28 29 20 h'Nt.(j.....,load_cert_string().
1e6e0 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 26 19 00 00 68 (in.module.M2Crypto.X509).j&...h
1e700 27 4e 74 94 28 6a 87 1b 00 00 8c 24 6c 6f 61 64 5f 63 72 6c 28 29 20 28 69 6e 20 6d 6f 64 75 6c 'Nt.(j.....$load_crl().(in.modul
1e720 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 29 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 e.M2Crypto.X509).j)...h'Nt.(j...
1e740 00 8c 28 6c 6f 61 64 5f 72 65 71 75 65 73 74 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 ..(load_request().(in.module.M2C
1e760 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 2c 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 6c 6f rypto.X509).j,...h'Nt.(j.....,lo
1e780 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 ad_request_bio().(in.module.M2Cr
1e7a0 79 70 74 6f 2e 58 35 30 39 29 94 6a 2f 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 6c 6f 61 ypto.X509).j/...h'Nt.(j.....3loa
1e7c0 64 5f 72 65 71 75 65 73 74 5f 64 65 72 5f 73 74 72 69 6e 67 28 29 20 28 69 6e 20 6d 6f 64 75 6c d_request_der_string().(in.modul
1e7e0 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 32 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 e.M2Crypto.X509).j2...h'Nt.(j...
1e800 00 8c 2f 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 74 72 69 6e 67 28 29 20 28 69 6e 20 6d 6f 64 ../load_request_string().(in.mod
1e820 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 35 19 00 00 68 27 4e 74 94 28 6a 87 ule.M2Crypto.X509).j5...h'Nt.(j.
1e840 1b 00 00 8c 29 6e 65 77 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 ....)new_extension().(in.module.
1e860 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 38 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c M2Crypto.X509).j8...h'Nt.(j.....
1e880 2e 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 .new_stack_from_der().(in.module
1e8a0 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 3b 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 .M2Crypto.X509).j;...h'Nt.(j....
1e8c0 8c 31 78 35 30 39 5f 73 74 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 28 29 20 28 69 6e 20 6d 6f .1x509_store_default_cb().(in.mo
1e8e0 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 6a 3e 19 00 00 68 27 4e 74 94 28 6a dule.M2Crypto.X509).j>...h'Nt.(j
1e900 87 1b 00 00 8c 1a 4d 32 43 72 79 70 74 6f 2e 63 61 6c 6c 62 61 63 6b 20 28 6d 6f 64 75 6c 65 29 ......M2Crypto.callback.(module)
1e920 94 8c 18 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 ...module-M2Crypto.callback.h'Nt
1e940 94 28 6a 87 1b 00 00 8c 19 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 20 28 6d 6f 64 75 6c .(j......M2Crypto.ftpslib.(modul
1e960 65 29 94 8c 17 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 94 68 27 4e e)...module-M2Crypto.ftpslib.h'N
1e980 74 94 28 6a 87 1b 00 00 8c 23 46 54 50 5f 54 4c 53 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 t.(j.....#FTP_TLS.(class.in.M2Cr
1e9a0 79 70 74 6f 2e 66 74 70 73 6c 69 62 29 94 6a 45 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c ypto.ftpslib).jE...h'Nt.(j.....,
1e9c0 61 75 74 68 5f 73 73 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 auth_ssl().(M2Crypto.ftpslib.FTP
1e9e0 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 6a 48 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 61 _TLS.method).jH...h'Nt.(j.....,a
1ea00 75 74 68 5f 74 6c 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f uth_tls().(M2Crypto.ftpslib.FTP_
1ea20 54 4c 53 20 6d 65 74 68 6f 64 29 94 6a 4b 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 30 6e 74 TLS.method).jK...h'Nt.(j.....0nt
1ea40 72 61 6e 73 66 65 72 63 6d 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 ransfercmd().(M2Crypto.ftpslib.F
1ea60 54 50 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 6a 4e 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c TP_TLS.method).jN...h'Nt.(j.....
1ea80 2a 70 72 6f 74 5f 63 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f *prot_c().(M2Crypto.ftpslib.FTP_
1eaa0 54 4c 53 20 6d 65 74 68 6f 64 29 94 6a 51 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2a 70 72 TLS.method).jQ...h'Nt.(j.....*pr
1eac0 6f 74 5f 70 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 ot_p().(M2Crypto.ftpslib.FTP_TLS
1eae0 20 6d 65 74 68 6f 64 29 94 6a 54 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1a 4d 32 43 72 79 .method).jT...h'Nt.(j......M2Cry
1eb00 70 74 6f 2e 68 74 74 70 73 6c 69 62 20 28 6d 6f 64 75 6c 65 29 94 8c 18 6d 6f 64 75 6c 65 2d 4d pto.httpslib.(module)...module-M
1eb20 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2c 48 54 2Crypto.httpslib.h'Nt.(j.....,HT
1eb40 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f TPSConnection.(class.in.M2Crypto
1eb60 2e 68 74 74 70 73 6c 69 62 29 94 6a 59 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 32 63 6c 6f .httpslib).jY...h'Nt.(j.....2clo
1eb80 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e se().(M2Crypto.httpslib.HTTPSCon
1eba0 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 5c 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 nection.method).j\...h'Nt.(j....
1ebc0 8c 34 63 6f 6e 6e 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 .4connect().(M2Crypto.httpslib.H
1ebe0 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 5f 19 00 00 68 27 4e 74 TTPSConnection.method).j_...h'Nt
1ec00 94 28 6a 87 1b 00 00 8c 3a 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 28 4d 32 43 72 79 70 74 6f 2e .(j.....:default_port.(M2Crypto.
1ec20 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 61 74 74 72 69 62 75 httpslib.HTTPSConnection.attribu
1ec40 74 65 29 94 6a 62 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 38 67 65 74 5f 73 65 73 73 69 6f te).jb...h'Nt.(j.....8get_sessio
1ec60 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e n().(M2Crypto.httpslib.HTTPSConn
1ec80 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 65 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c ection.method).je...h'Nt.(j.....
1eca0 38 73 65 74 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 8set_session().(M2Crypto.httpsli
1ecc0 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 68 19 00 00 68 b.HTTPSConnection.method).jh...h
1ece0 27 4e 74 94 28 6a 87 1b 00 00 8c 31 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 'Nt.(j.....1ProxyHTTPSConnection
1ed00 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 29 94 6a 6b .(class.in.M2Crypto.httpslib).jk
1ed20 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 39 63 6f 6e 6e 65 63 74 28 29 20 28 4d 32 43 72 79 ...h'Nt.(j.....9connect().(M2Cry
1ed40 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f pto.httpslib.ProxyHTTPSConnectio
1ed60 6e 20 6d 65 74 68 6f 64 29 94 6a 6e 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3c 65 6e 64 68 n.method).jn...h'Nt.(j.....<endh
1ed80 65 61 64 65 72 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 eaders().(M2Crypto.httpslib.Prox
1eda0 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 71 19 00 00 68 27 yHTTPSConnection.method).jq...h'
1edc0 4e 74 94 28 6a 87 1b 00 00 8c 3b 70 75 74 68 65 61 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f Nt.(j.....;putheader().(M2Crypto
1ede0 2e 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d .httpslib.ProxyHTTPSConnection.m
1ee00 65 74 68 6f 64 29 94 6a 74 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 3c 70 75 74 72 65 71 75 ethod).jt...h'Nt.(j.....<putrequ
1ee20 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 79 48 54 est().(M2Crypto.httpslib.ProxyHT
1ee40 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 6a 77 19 00 00 68 27 4e 74 94 TPSConnection.method).jw...h'Nt.
1ee60 28 6a 87 1b 00 00 8c 14 4d 32 43 72 79 70 74 6f 2e 6d 32 20 28 6d 6f 64 75 6c 65 29 94 8c 12 6d (j......M2Crypto.m2.(module)...m
1ee80 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1a 4d odule-M2Crypto.m2.h'Nt.(j......M
1eea0 32 43 72 79 70 74 6f 2e 6d 32 63 72 79 70 74 6f 20 28 6d 6f 64 75 6c 65 29 94 8c 18 6d 6f 64 75 2Crypto.m2crypto.(module)...modu
1eec0 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 63 72 79 70 74 6f 94 68 27 4e 74 94 28 6a 87 1b 00 00 le-M2Crypto.m2crypto.h'Nt.(j....
1eee0 8c 1a 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 20 28 6d 6f 64 75 6c 65 29 94 8c 18 6d ..M2Crypto.m2urllib.(module)...m
1ef00 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 94 68 27 4e 74 94 28 6a 87 odule-M2Crypto.m2urllib.h'Nt.(j.
1ef20 1b 00 00 8c 2a 6f 70 65 6e 5f 68 74 74 70 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 ....*open_https().(in.module.M2C
1ef40 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 29 94 6a 80 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 rypto.m2urllib).j....h'Nt.(j....
1ef60 8c 1b 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 20 28 6d 6f 64 75 6c 65 29 94 8c 19 ..M2Crypto.m2urllib2.(module)...
1ef80 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 94 68 27 4e 74 94 28 module-M2Crypto.m2urllib2.h'Nt.(
1efa0 6a 87 1b 00 00 8c 2a 48 54 54 50 53 48 61 6e 64 6c 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 j.....*HTTPSHandler.(class.in.M2
1efc0 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 29 94 6a 85 19 00 00 68 27 4e 74 94 28 6a 87 1b Crypto.m2urllib2).j....h'Nt.(j..
1efe0 00 00 8c 35 68 74 74 70 73 5f 6f 70 65 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c ...5https_open().(M2Crypto.m2url
1f000 6c 69 62 32 2e 48 54 54 50 53 48 61 6e 64 6c 65 72 20 6d 65 74 68 6f 64 29 94 6a 88 19 00 00 68 lib2.HTTPSHandler.method).j....h
1f020 27 4e 74 94 28 6a 87 1b 00 00 8c 38 68 74 74 70 73 5f 72 65 71 75 65 73 74 28 29 20 28 4d 32 43 'Nt.(j.....8https_request().(M2C
1f040 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 2e 48 54 54 50 53 48 61 6e 64 6c 65 72 20 6d 65 74 rypto.m2urllib2.HTTPSHandler.met
1f060 68 6f 64 29 94 6a 8b 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 62 75 69 6c 64 5f 6f 70 65 hod).j....h'Nt.(j.....-build_ope
1f080 6e 65 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c ner().(in.module.M2Crypto.m2urll
1f0a0 69 62 32 29 94 6a 8e 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1d 4d 32 43 72 79 70 74 6f 2e ib2).j....h'Nt.(j......M2Crypto.
1f0c0 6d 32 78 6d 6c 72 70 63 6c 69 62 20 28 6d 6f 64 75 6c 65 29 94 8c 1b 6d 6f 64 75 6c 65 2d 4d 32 m2xmlrpclib.(module)...module-M2
1f0e0 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d Crypto.m2xmlrpclib.h'Nt.(j.....-
1f100 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f SSL_Transport.(class.in.M2Crypto
1f120 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 29 94 6a 93 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 35 .m2xmlrpclib).j....h'Nt.(j.....5
1f140 72 65 71 75 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 2e request().(M2Crypto.m2xmlrpclib.
1f160 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 20 6d 65 74 68 6f 64 29 94 6a 96 19 00 00 68 27 4e 74 94 SSL_Transport.method).j....h'Nt.
1f180 28 6a 87 1b 00 00 8c 39 75 73 65 72 5f 61 67 65 6e 74 20 28 4d 32 43 72 79 70 74 6f 2e 6d 32 78 (j.....9user_agent.(M2Crypto.m2x
1f1a0 6d 6c 72 70 63 6c 69 62 2e 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 20 61 74 74 72 69 62 75 74 65 mlrpclib.SSL_Transport.attribute
1f1c0 29 94 6a 99 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 1b 4d 32 43 72 79 70 74 6f 2e 74 68 72 ).j....h'Nt.(j......M2Crypto.thr
1f1e0 65 61 64 69 6e 67 20 28 6d 6f 64 75 6c 65 29 94 8c 19 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 eading.(module)...module-M2Crypt
1f200 6f 2e 74 68 72 65 61 64 69 6e 67 94 68 27 4e 74 94 28 6a 87 1b 00 00 8c 28 63 6c 65 61 6e 75 70 o.threading.h'Nt.(j.....(cleanup
1f220 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 ().(in.module.M2Crypto.threading
1f240 29 94 6a 9e 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 69 6e 69 74 28 29 20 28 69 6e 20 6d ).j....h'Nt.(j.....%init().(in.m
1f260 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 29 94 6a a1 19 00 00 68 odule.M2Crypto.threading).j....h
1f280 27 4e 74 94 28 6a 87 1b 00 00 8c 16 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 20 28 6d 6f 64 75 6c 'Nt.(j......M2Crypto.util.(modul
1f2a0 65 29 94 8c 14 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 94 68 27 4e 74 94 28 e)...module-M2Crypto.util.h'Nt.(
1f2c0 6a 87 1b 00 00 8c 09 55 74 69 6c 45 72 72 6f 72 94 6a a6 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 j......UtilError.j....h'Nt.(j...
1f2e0 00 8c 26 62 69 6e 5f 74 6f 5f 68 65 78 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 ..&bin_to_hex().(in.module.M2Cry
1f300 70 74 6f 2e 75 74 69 6c 29 94 6a a9 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2d 67 65 6e 70 pto.util).j....h'Nt.(j.....-genp
1f320 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 aram_callback().(in.module.M2Cry
1f340 70 74 6f 2e 75 74 69 6c 29 94 6a ac 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 32 6e 6f 5f 70 pto.util).j....h'Nt.(j.....2no_p
1f360 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 assphrase_callback().(in.module.
1f380 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 29 94 6a af 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c M2Crypto.util).j....h'Nt.(j.....
1f3a0 27 6f 63 74 78 5f 74 6f 5f 6e 75 6d 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 'octx_to_num().(in.module.M2Cryp
1f3c0 74 6f 2e 75 74 69 6c 29 94 6a b2 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 2f 70 61 73 73 70 to.util).j....h'Nt.(j...../passp
1f3e0 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 hrase_callback().(in.module.M2Cr
1f400 79 70 74 6f 2e 75 74 69 6c 29 94 6a b5 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 70 6b 63 ypto.util).j....h'Nt.(j.....%pkc
1f420 73 35 5f 70 61 64 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 s5_pad().(in.module.M2Crypto.uti
1f440 6c 29 94 6a b8 19 00 00 68 27 4e 74 94 28 6a 87 1b 00 00 8c 25 70 6b 63 73 37 5f 70 61 64 28 29 l).j....h'Nt.(j.....%pkcs7_pad()
1f460 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 29 94 6a bb 19 00 00 .(in.module.M2Crypto.util).j....
1f480 68 27 4e 74 94 28 6a 87 1b 00 00 8c 33 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c h'Nt.(j.....3quiet_genparam_call
1f4a0 62 61 63 6b 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 29 back().(in.module.M2Crypto.util)
1f4c0 94 6a be 19 00 00 68 27 4e 74 94 65 75 8c 06 69 6d 61 67 65 73 94 8c 0b 73 70 68 69 6e 78 2e 75 .j....h'Nt.eu..images...sphinx.u
1f4e0 74 69 6c 94 8c 10 46 69 6c 65 6e 61 6d 65 55 6e 69 71 44 69 63 74 94 93 94 29 81 94 8f 94 62 8c til...FilenameUniqDict...)....b.
1f500 07 64 6c 66 69 6c 65 73 94 6a 5f 1f 00 00 8c 0d 44 6f 77 6e 6c 6f 61 64 46 69 6c 65 73 94 93 94 .dlfiles.j_.....DownloadFiles...
1f520 29 81 94 8c 12 6f 72 69 67 69 6e 61 6c 5f 69 6d 61 67 65 5f 75 72 69 94 7d 94 8c 09 74 65 6d 70 )....original_image_uri.}...temp
1f540 5f 64 61 74 61 94 7d 94 8c 0b 72 65 66 5f 63 6f 6e 74 65 78 74 94 7d 94 8c 11 5f 76 69 65 77 63 _data.}...ref_context.}..._viewc
1f560 6f 64 65 5f 6d 6f 64 75 6c 65 73 94 7d 94 28 8c 0d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 94 28 ode_modules.}.(..M2Crypto.ASN1.(
1f580 58 93 1d 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f X....from.__future__.import.abso
1f5a0 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 0a 4d 32 43 72 79 70 74 6f 20 77 72 61 70 70 65 lute_import..""".M2Crypto.wrappe
1f5c0 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 41 53 4e 31 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 r.for.OpenSSL.ASN1.API...Copyrig
1f5e0 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e ht.(c).1999-2004.Ng.Pheng.Siong.
1f600 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 50 6f 72 74 69 6f 6e 73 20 .All.rights.reserved...Portions.
1f620 63 72 65 61 74 65 64 20 62 79 20 4f 70 65 6e 20 53 6f 75 72 63 65 20 41 70 70 6c 69 63 61 74 69 created.by.Open.Source.Applicati
1f640 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 20 28 4f 53 41 46 29 20 61 72 65 0a 43 6f 70 79 72 69 ons.Foundation.(OSAF).are.Copyri
1f660 67 68 74 20 28 43 29 20 32 30 30 35 20 4f 53 41 46 2e 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 ght.(C).2005.OSAF..All.Rights.Re
1f680 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 64 61 74 65 74 69 6d 65 0a 69 6d 70 served.."""..import.datetime.imp
1f6a0 6f 72 74 20 74 69 6d 65 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 42 ort.time..from.M2Crypto.import.B
1f6c0 49 4f 2c 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 2c 20 73 69 78 0a 69 66 20 70 79 32 37 70 6c 75 IO,.m2,.py27plus,.six.if.py27plu
1f6e0 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 43 s:.....from.typing.import.Any,.C
1f700 61 6c 6c 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 20 20 23 20 6e 6f 71 61 allable,.Optional,.Tuple..#.noqa
1f720 0a 0a 4d 42 53 54 52 49 4e 47 5f 46 4c 41 47 20 3d 20 30 78 31 30 30 30 0a 4d 42 53 54 52 49 4e ..MBSTRING_FLAG.=.0x1000.MBSTRIN
1f740 47 5f 41 53 43 20 3d 20 4d 42 53 54 52 49 4e 47 5f 46 4c 41 47 20 7c 20 31 0a 4d 42 53 54 52 49 G_ASC.=.MBSTRING_FLAG.|.1.MBSTRI
1f760 4e 47 5f 42 4d 50 20 3d 20 4d 42 53 54 52 49 4e 47 5f 46 4c 41 47 20 7c 20 32 0a 0a 0a 63 6c 61 NG_BMP.=.MBSTRING_FLAG.|.2...cla
1f780 73 73 20 41 53 4e 31 5f 49 6e 74 65 67 65 72 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 6d 32 ss.ASN1_Integer(object):......m2
1f7a0 5f 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 66 72 65 65 20 3d 20 6d 32 2e 61 73 6e 31 5f 69 6e 74 _asn1_integer_free.=.m2.asn1_int
1f7c0 65 67 65 72 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 eger_free......def.__init__(self
1f7e0 2c 20 61 73 6e 31 69 6e 74 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 ,.asn1int,._pyfree=0):.........#
1f800 20 74 79 70 65 3a 20 28 41 53 4e 31 5f 49 6e 74 65 67 65 72 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f .type:.(ASN1_Integer,.int).->.No
1f820 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 73 6e 31 69 6e 74 20 3d 20 61 73 6e 31 69 6e ne.........self.asn1int.=.asn1in
1f840 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 t.........self._pyfree.=._pyfree
1f860 0a 0a 20 20 20 20 64 65 66 20 5f 5f 63 6d 70 5f 5f 28 73 65 6c 66 2c 20 6f 74 68 65 72 29 3a 0a ......def.__cmp__(self,.other):.
1f880 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 5f 49 6e 74 65 67 65 72 29 20 2d ........#.type:.(ASN1_Integer).-
1f8a0 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 >.int.........if.not.isinstance(
1f8c0 6f 74 68 65 72 2c 20 41 53 4e 31 5f 49 6e 74 65 67 65 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 other,.ASN1_Integer):...........
1f8e0 20 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..raise.TypeError(..............
1f900 20 20 20 22 43 6f 6d 70 61 72 69 73 6f 6e 73 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 62 ..."Comparisons.supported.only.b
1f920 65 74 77 65 65 6e 20 41 4e 53 31 5f 49 6e 74 65 67 65 72 20 6f 62 6a 65 63 74 73 22 29 0a 0a 20 etween.ANS1_Integer.objects")...
1f940 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 63 6d .......return.m2.asn1_integer_cm
1f960 70 28 73 65 6c 66 2e 61 73 6e 31 69 6e 74 2c 20 6f 74 68 65 72 2e 61 73 6e 31 69 6e 74 29 0a 0a p(self.asn1int,.other.asn1int)..
1f980 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 ....def.__del__(self):.........#
1f9a0 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c .type:.().->.None.........if.sel
1f9c0 66 2e 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 61 f._pyfree:.............self.m2_a
1f9e0 73 6e 31 5f 69 6e 74 65 67 65 72 5f 66 72 65 65 28 73 65 6c 66 2e 61 73 6e 31 69 6e 74 29 0a 0a sn1_integer_free(self.asn1int)..
1fa00 20 20 20 20 64 65 66 20 5f 5f 69 6e 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 ....def.__int__(self):.........#
1fa20 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .type:.().->.int.........return.
1fa40 6d 32 2e 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 67 65 74 28 73 65 6c 66 2e 61 73 6e 31 69 6e 74 m2.asn1_integer_get(self.asn1int
1fa60 29 0a 0a 0a 63 6c 61 73 73 20 41 53 4e 31 5f 53 74 72 69 6e 67 28 6f 62 6a 65 63 74 29 3a 0a 0a )...class.ASN1_String(object):..
1fa80 20 20 20 20 6d 32 5f 61 73 6e 31 5f 73 74 72 69 6e 67 5f 66 72 65 65 20 3d 20 6d 32 2e 61 73 6e ....m2_asn1_string_free.=.m2.asn
1faa0 31 5f 73 74 72 69 6e 67 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 1_string_free......def.__init__(
1fac0 73 65 6c 66 2c 20 61 73 6e 31 73 74 72 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 self,.asn1str,._pyfree=0):......
1fae0 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 5f 53 74 72 69 6e 67 2c 20 69 6e 74 29 20 2d 3e ...#.type:.(ASN1_String,.int).->
1fb00 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 73 6e 31 73 74 72 20 3d 20 61 73 6e .None.........self.asn1str.=.asn
1fb20 31 73 74 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 1str.........self._pyfree.=._pyf
1fb40 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 62 79 74 65 73 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 ree......def.__bytes__(self):...
1fb60 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 ......#.type:.().->.bytes.......
1fb80 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 ..buf.=.BIO.MemoryBuffer()......
1fba0 20 20 20 6d 32 2e 61 73 6e 31 5f 73 74 72 69 6e 67 5f 70 72 69 6e 74 28 62 75 66 2e 62 69 6f 5f ...m2.asn1_string_print(buf.bio_
1fbc0 70 74 72 28 29 2c 20 73 65 6c 66 2e 61 73 6e 31 73 74 72 29 0a 20 20 20 20 20 20 20 20 72 65 74 ptr(),.self.asn1str).........ret
1fbe0 75 72 6e 20 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 urn.buf.read_all()......def.__st
1fc00 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e r__(self):.........#.type:.().->
1fc20 20 73 74 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 .str.........return.six.ensure_t
1fc40 65 78 74 28 73 65 6c 66 2e 5f 5f 62 79 74 65 73 5f 5f 28 29 29 0a 0a 20 20 20 20 64 65 66 20 5f ext(self.__bytes__())......def._
1fc60 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 _del__(self):.........#.type:.()
1fc80 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 .->.None.........if.getattr(self
1fca0 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c ,.'_pyfree',.0):.............sel
1fcc0 66 2e 6d 32 5f 61 73 6e 31 5f 73 74 72 69 6e 67 5f 66 72 65 65 28 73 65 6c 66 2e 61 73 6e 31 73 f.m2_asn1_string_free(self.asn1s
1fce0 74 72 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 tr)......def._ptr(self):........
1fd00 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 61 73 6e 31 73 74 72 0a 0a 20 20 20 20 64 65 66 20 61 73 .return.self.asn1str......def.as
1fd20 5f 74 65 78 74 28 73 65 6c 66 2c 20 66 6c 61 67 73 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 _text(self,.flags=0):.........#.
1fd40 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 4f 75 type:.(int).->.str........."""Ou
1fd60 74 70 75 74 20 61 6e 20 41 53 4e 31 5f 53 54 52 49 4e 47 20 73 74 72 75 63 74 75 72 65 20 61 63 tput.an.ASN1_STRING.structure.ac
1fd80 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 73 65 74 20 66 6c 61 67 73 2e 0a 0a 20 20 20 20 20 cording.to.the.set.flags........
1fda0 20 20 20 3a 70 61 72 61 6d 20 66 6c 61 67 73 3a 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 66 ...:param.flags:.determine.the.f
1fdc0 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 6f 75 74 70 75 74 20 62 79 20 75 73 69 6e 67 0a 20 20 20 ormat.of.the.output.by.using....
1fde0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 64 65 74 65 72 6d 69 6e 65 64 20 63 6f 6e 73 74 61 ............predetermined.consta
1fe00 6e 74 73 2c 20 73 65 65 20 41 53 4e 31 5f 53 54 52 49 4e 47 5f 70 72 69 6e 74 5f 65 78 28 33 29 nts,.see.ASN1_STRING_print_ex(3)
1fe20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 6e 70 61 67 65 20 66 6f 72 20 74 68 65 69 ................manpage.for.thei
1fe40 72 20 6d 65 61 6e 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 6f 75 74 70 r.meaning..........:return:.outp
1fe60 75 74 20 61 6e 20 41 53 4e 31 5f 53 54 52 49 4e 47 20 73 74 72 75 63 74 75 72 65 2e 0a 20 20 20 ut.an.ASN1_STRING.structure.....
1fe80 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 .....""".........buf.=.BIO.Memor
1fea0 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 61 73 6e 31 5f 73 74 72 69 6e 67 yBuffer().........m2.asn1_string
1fec0 5f 70 72 69 6e 74 5f 65 78 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 61 73 _print_ex(buf.bio_ptr(),.self.as
1fee0 6e 31 73 74 72 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 n1str,.flags).........return.six
1ff00 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 0a 63 .ensure_text(buf.read_all())...c
1ff20 6c 61 73 73 20 41 53 4e 31 5f 4f 62 6a 65 63 74 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 6d lass.ASN1_Object(object):......m
1ff40 32 5f 61 73 6e 31 5f 6f 62 6a 65 63 74 5f 66 72 65 65 20 3d 20 6d 32 2e 61 73 6e 31 5f 6f 62 6a 2_asn1_object_free.=.m2.asn1_obj
1ff60 65 63 74 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c ect_free......def.__init__(self,
1ff80 20 61 73 6e 31 6f 62 6a 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 .asn1obj,._pyfree=0):.........#.
1ffa0 74 79 70 65 3a 20 28 41 53 4e 31 5f 4f 62 6a 65 63 74 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 type:.(ASN1_Object,.int).->.None
1ffc0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 73 6e 31 6f 62 6a 20 3d 20 61 73 6e 31 6f 62 6a 0a .........self.asn1obj.=.asn1obj.
1ffe0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a ........self._pyfree.=._pyfree..
20000 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 ....def.__del__(self):.........#
20020 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c .type:.().->.None.........if.sel
20040 66 2e 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 61 f._pyfree:.............self.m2_a
20060 73 6e 31 5f 6f 62 6a 65 63 74 5f 66 72 65 65 28 73 65 6c 66 2e 61 73 6e 31 6f 62 6a 29 0a 0a 20 sn1_object_free(self.asn1obj)...
20080 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ...def._ptr(self):.........retur
200a0 6e 20 73 65 6c 66 2e 61 73 6e 31 6f 62 6a 0a 0a 0a 63 6c 61 73 73 20 5f 55 54 43 28 64 61 74 65 n.self.asn1obj...class._UTC(date
200c0 74 69 6d 65 2e 74 7a 69 6e 66 6f 29 3a 0a 20 20 20 20 64 65 66 20 74 7a 6e 61 6d 65 28 73 65 6c time.tzinfo):.....def.tzname(sel
200e0 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 f,.dt):.........#.type:.(Optiona
20100 6c 5b 64 61 74 65 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 5d 29 20 2d 3e 20 73 74 72 0a 20 20 20 l[datetime.datetime]).->.str....
20120 20 20 20 20 20 72 65 74 75 72 6e 20 22 55 54 43 22 0a 0a 20 20 20 20 64 65 66 20 64 73 74 28 73 .....return."UTC"......def.dst(s
20140 65 6c 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f elf,.dt):.........#.type:.(Optio
20160 6e 61 6c 5b 64 61 74 65 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 5d 29 20 2d 3e 20 64 61 74 65 74 nal[datetime.datetime]).->.datet
20180 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 ime.timedelta.........return.dat
201a0 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 28 30 29 0a 0a 20 20 20 20 64 65 66 20 75 74 63 6f etime.timedelta(0)......def.utco
201c0 66 66 73 65 74 28 73 65 6c 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a ffset(self,.dt):.........#.type:
201e0 20 28 4f 70 74 69 6f 6e 61 6c 5b 64 61 74 65 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 5d 29 20 2d .(Optional[datetime.datetime]).-
20200 3e 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 0a 20 20 20 20 20 20 20 20 72 65 74 >.datetime.timedelta.........ret
20220 75 72 6e 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 28 30 29 0a 0a 20 20 20 20 64 urn.datetime.timedelta(0)......d
20240 65 66 20 5f 5f 72 65 70 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ef.__repr__(self):.........retur
20260 6e 20 22 3c 54 69 6d 65 7a 6f 6e 65 3a 20 25 73 3e 22 20 25 20 73 65 6c 66 2e 74 7a 6e 61 6d 65 n."<Timezone:.%s>".%.self.tzname
20280 28 4e 6f 6e 65 29 0a 0a 0a 55 54 43 20 3d 20 5f 55 54 43 28 29 20 20 23 20 74 79 70 65 3a 20 5f (None)...UTC.=._UTC()..#.type:._
202a0 55 54 43 0a 0a 0a 63 6c 61 73 73 20 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 28 64 61 74 65 74 69 UTC...class.LocalTimezone(dateti
202c0 6d 65 2e 74 7a 69 6e 66 6f 29 3a 0a 20 20 20 20 22 22 22 4c 6f 63 61 6c 74 69 6d 65 7a 6f 6e 65 me.tzinfo):....."""Localtimezone
202e0 20 66 72 6f 6d 20 64 61 74 65 74 69 6d 65 20 6d 61 6e 75 61 6c 2e 22 22 22 0a 0a 20 20 20 20 64 .from.datetime.manual."""......d
20300 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ef.__init__(self):.........#.typ
20320 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 74 64 6f e:.().->.None.........self._stdo
20340 66 66 73 65 74 20 3d 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 28 73 65 63 6f 6e ffset.=.datetime.timedelta(secon
20360 64 73 3d 2d 74 69 6d 65 2e 74 69 6d 65 7a 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 74 69 ds=-time.timezone).........if.ti
20380 6d 65 2e 64 61 79 6c 69 67 68 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 me.daylight:.............self._d
203a0 73 74 6f 66 66 73 65 74 20 3d 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 28 73 65 stoffset.=.datetime.timedelta(se
203c0 63 6f 6e 64 73 3d 2d 74 69 6d 65 2e 61 6c 74 7a 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 conds=-time.altzone).........els
203e0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 73 74 6f 66 66 73 65 74 20 3d e:.............self._dstoffset.=
20400 20 73 65 6c 66 2e 5f 73 74 64 6f 66 66 73 65 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 .self._stdoffset.........self._d
20420 73 74 64 69 66 66 20 3d 20 73 65 6c 66 2e 5f 64 73 74 6f 66 66 73 65 74 20 2d 20 73 65 6c 66 2e stdiff.=.self._dstoffset.-.self.
20440 5f 73 74 64 6f 66 66 73 65 74 0a 0a 20 20 20 20 64 65 66 20 75 74 63 6f 66 66 73 65 74 28 73 65 _stdoffset......def.utcoffset(se
20460 6c 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 64 61 74 65 74 69 lf,.dt):.........#.type:.(dateti
20480 6d 65 2e 64 61 74 65 74 69 6d 65 29 20 2d 3e 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c me.datetime).->.datetime.timedel
204a0 74 61 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 69 73 64 73 74 28 64 74 29 3a 0a 20 ta.........if.self._isdst(dt):..
204c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 64 73 74 6f 66 66 73 65 ...........return.self._dstoffse
204e0 74 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 t.........else:.............retu
20500 72 6e 20 73 65 6c 66 2e 5f 73 74 64 6f 66 66 73 65 74 0a 0a 20 20 20 20 64 65 66 20 64 73 74 28 rn.self._stdoffset......def.dst(
20520 73 65 6c 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 64 61 74 65 self,.dt):.........#.type:.(date
20540 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 29 20 2d 3e 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 time.datetime).->.datetime.timed
20560 65 6c 74 61 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 69 73 64 73 74 28 64 74 29 3a elta.........if.self._isdst(dt):
20580 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 64 73 74 64 69 66 .............return.self._dstdif
205a0 66 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 f.........else:.............retu
205c0 72 6e 20 64 61 74 65 74 69 6d 65 2e 74 69 6d 65 64 65 6c 74 61 28 30 29 0a 0a 20 20 20 20 64 65 rn.datetime.timedelta(0)......de
205e0 66 20 74 7a 6e 61 6d 65 28 73 65 6c 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 f.tzname(self,.dt):.........#.ty
20600 70 65 3a 20 28 64 61 74 65 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 29 20 2d 3e 20 73 74 72 0a 20 pe:.(datetime.datetime).->.str..
20620 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 69 6d 65 2e 74 7a 6e 61 6d 65 5b 73 65 6c 66 2e 5f .......return.time.tzname[self._
20640 69 73 64 73 74 28 64 74 29 2e 72 65 61 6c 5d 0a 0a 20 20 20 20 64 65 66 20 5f 69 73 64 73 74 28 isdst(dt).real]......def._isdst(
20660 73 65 6c 66 2c 20 64 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 64 61 74 65 self,.dt):.........#.type:.(date
20680 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 29 20 2d 3e 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 74 time.datetime).->.bool.........t
206a0 74 20 3d 20 28 64 74 2e 79 65 61 72 2c 20 64 74 2e 6d 6f 6e 74 68 2c 20 64 74 2e 64 61 79 2c 0a t.=.(dt.year,.dt.month,.dt.day,.
206c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 74 2e 68 6f 75 72 2c 20 64 74 2e 6d 69 6e 75 74 65 ..............dt.hour,.dt.minute
206e0 2c 20 64 74 2e 73 65 63 6f 6e 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 74 2e 77 65 ,.dt.second,...............dt.we
20700 65 6b 64 61 79 28 29 2c 20 30 2c 20 2d 31 29 0a 20 20 20 20 20 20 20 20 73 74 61 6d 70 20 3d 20 ekday(),.0,.-1).........stamp.=.
20720 74 69 6d 65 2e 6d 6b 74 69 6d 65 28 74 74 29 0a 20 20 20 20 20 20 20 20 74 74 20 3d 20 74 69 6d time.mktime(tt).........tt.=.tim
20740 65 2e 6c 6f 63 61 6c 74 69 6d 65 28 73 74 61 6d 70 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 e.localtime(stamp).........retur
20760 6e 20 74 74 2e 74 6d 5f 69 73 64 73 74 20 3e 20 30 0a 0a 0a 63 6c 61 73 73 20 41 53 4e 31 5f 54 n.tt.tm_isdst.>.0...class.ASN1_T
20780 49 4d 45 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 5f 73 73 6c 5f 6d 6f 6e 74 68 73 20 3d 20 5b IME(object):....._ssl_months.=.[
207a0 22 4a 61 6e 22 2c 20 22 46 65 62 22 2c 20 22 4d 61 72 22 2c 20 22 41 70 72 22 2c 20 22 4d 61 79 "Jan",."Feb",."Mar",."Apr",."May
207c0 22 2c 20 22 4a 75 6e 22 2c 20 22 4a 75 6c 22 2c 20 22 41 75 67 22 2c 0a 20 20 20 20 20 20 20 20 ",."Jun",."Jul",."Aug",.........
207e0 20 20 20 20 20 20 20 20 20 20 20 22 53 65 70 22 2c 20 22 4f 63 74 22 2c 20 22 4e 6f 76 22 2c 20 ..........."Sep",."Oct",."Nov",.
20800 22 44 65 63 22 5d 0a 20 20 20 20 6d 32 5f 61 73 6e 31 5f 74 69 6d 65 5f 66 72 65 65 20 3d 20 6d "Dec"].....m2_asn1_time_free.=.m
20820 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 2.asn1_time_free......def.__init
20840 5f 5f 28 73 65 6c 66 2c 20 61 73 6e 31 5f 74 69 6d 65 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 __(self,.asn1_time=None,._pyfree
20860 3d 30 2c 20 61 73 6e 31 5f 75 74 63 74 69 6d 65 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 =0,.asn1_utctime=None):.........
20880 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 41 53 4e 31 5f 54 49 4d 45 5d 2c 20 4f 70 #.type:.(Optional[ASN1_TIME],.Op
208a0 74 69 6f 6e 61 6c 5b 69 6e 74 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 53 4e 31 5f 54 49 4d 45 5d tional[int],.Optional[ASN1_TIME]
208c0 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 68 61 6e 64 6c 65 20 6f 6c 64 20 6b ).->.None.........#.handle.old.k
208e0 65 79 77 6f 72 64 20 70 61 72 61 6d 65 74 65 72 0a 20 20 20 20 20 20 20 20 69 66 20 61 73 6e 31 eyword.parameter.........if.asn1
20900 5f 74 69 6d 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 6e 31 5f _time.is.None:.............asn1_
20920 74 69 6d 65 20 3d 20 61 73 6e 31 5f 75 74 63 74 69 6d 65 0a 20 20 20 20 20 20 20 20 69 66 20 61 time.=.asn1_utctime.........if.a
20940 73 6e 31 5f 74 69 6d 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 sn1_time.is.not.None:...........
20960 20 20 61 73 73 65 72 74 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b ..assert.m2.asn1_time_type_check
20980 28 61 73 6e 31 5f 74 69 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 (asn1_time),.\................."
209a0 27 61 73 6e 31 5f 74 69 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 27 22 0a 20 20 20 20 20 20 20 'asn1_time'.type.error'"........
209c0 20 20 20 20 20 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 20 3d 20 61 73 6e 31 5f 74 69 6d 65 0a .....self.asn1_time.=.asn1_time.
209e0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 ............self._pyfree.=._pyfr
20a00 65 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c ee.........else:.............sel
20a20 66 2e 61 73 6e 31 5f 74 69 6d 65 20 3d 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 6e 65 77 28 29 f.asn1_time.=.m2.asn1_time_new()
20a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 0a 20 .............self._pyfree.=.1...
20a60 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ...def.__del__(self):.........#.
20a80 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 type:.().->.None.........if.geta
20aa0 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 ttr(self,.'_pyfree',.0):........
20ac0 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 61 73 6e 31 5f 74 69 6d 65 5f 66 72 65 65 28 73 65 6c 66 .....self.m2_asn1_time_free(self
20ae0 2e 61 73 6e 31 5f 74 69 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f 5f 28 73 65 6c .asn1_time)......def.__str__(sel
20b00 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 f):.........#.type:.().->.str...
20b20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 74 79 70 65 5f 63 ......assert.m2.asn1_time_type_c
20b40 68 65 63 6b 28 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 heck(self.asn1_time),.\.........
20b60 20 20 20 20 22 27 61 73 6e 31 5f 74 69 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 27 22 0a 20 20 ...."'asn1_time'.type.error'"...
20b80 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 ......buf.=.BIO.MemoryBuffer()..
20ba0 20 20 20 20 20 20 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 70 72 69 6e 74 28 62 75 66 2e 62 69 .......m2.asn1_time_print(buf.bi
20bc0 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 29 0a 20 20 20 20 20 20 20 o_ptr(),.self.asn1_time)........
20be0 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 62 75 66 2e 72 65 61 64 .return.six.ensure_text(buf.read
20c00 5f 61 6c 6c 28 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 _all())......def._ptr(self):....
20c20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 74 79 70 65 5f 63 68 .....assert.m2.asn1_time_type_ch
20c40 65 63 6b 28 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 eck(self.asn1_time),.\..........
20c60 20 20 20 22 27 61 73 6e 31 5f 74 69 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 27 22 0a 20 20 20 ..."'asn1_time'.type.error'"....
20c80 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 0a 0a 20 20 20 20 .....return.self.asn1_time......
20ca0 64 65 66 20 73 65 74 5f 73 74 72 69 6e 67 28 73 65 6c 66 2c 20 73 74 72 69 6e 67 29 3a 0a 20 20 def.set_string(self,.string):...
20cc0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 ......#.type:.(bytes).->.int....
20ce0 20 20 20 20 20 22 22 22 53 65 74 20 74 69 6d 65 20 66 72 6f 6d 20 55 54 43 20 73 74 72 69 6e 67 ....."""Set.time.from.UTC.string
20d00 2e 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 .""".........assert.m2.asn1_time
20d20 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 29 2c 20 5c 0a 20 _type_check(self.asn1_time),.\..
20d40 20 20 20 20 20 20 20 20 20 20 20 22 27 61 73 6e 31 5f 74 69 6d 65 27 20 74 79 70 65 20 65 72 72 ..........."'asn1_time'.type.err
20d60 6f 72 27 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 or'".........return.m2.asn1_time
20d80 5f 73 65 74 5f 73 74 72 69 6e 67 28 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 2c 20 73 74 72 69 _set_string(self.asn1_time,.stri
20da0 6e 67 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 69 6d 65 28 73 65 6c 66 2c 20 74 69 6d 65 ng)......def.set_time(self,.time
20dc0 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 41 53 4e 31 ):.........#.type:.(int).->.ASN1
20de0 5f 54 49 4d 45 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 69 6d 65 20 66 72 6f 6d 20 73 _TIME........."""Set.time.from.s
20e00 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 65 70 6f 63 68 20 28 69 6e 74 29 2e 22 22 22 0a 20 20 20 econds.since.epoch.(int)."""....
20e20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 74 79 70 65 5f 63 68 .....assert.m2.asn1_time_type_ch
20e40 65 63 6b 28 73 65 6c 66 2e 61 73 6e 31 5f 74 69 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 eck(self.asn1_time),.\..........
20e60 20 20 20 22 27 61 73 6e 31 5f 74 69 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 27 22 0a 20 20 20 ..."'asn1_time'.type.error'"....
20e80 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 61 73 6e 31 5f 74 69 6d 65 5f 73 65 74 28 73 65 6c .....return.m2.asn1_time_set(sel
20ea0 66 2e 61 73 6e 31 5f 74 69 6d 65 2c 20 74 69 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f f.asn1_time,.time)......def.get_
20ec0 64 61 74 65 74 69 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 datetime(self):.........#.type:.
20ee0 28 29 20 2d 3e 20 41 53 4e 31 5f 54 49 4d 45 0a 20 20 20 20 20 20 20 20 64 61 74 65 20 3d 20 73 ().->.ASN1_TIME.........date.=.s
20f00 74 72 28 73 65 6c 66 29 0a 0a 20 20 20 20 20 20 20 20 74 69 6d 65 7a 6f 6e 65 20 3d 20 4e 6f 6e tr(self)..........timezone.=.Non
20f20 65 0a 20 20 20 20 20 20 20 20 69 66 20 27 20 27 20 6e 6f 74 20 69 6e 20 64 61 74 65 3a 0a 20 20 e.........if.'.'.not.in.date:...
20f40 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 49 6e 76 61 ..........raise.ValueError("Inva
20f60 6c 69 64 20 64 61 74 65 3a 20 25 73 22 20 25 20 64 61 74 65 29 0a 20 20 20 20 20 20 20 20 6d 6f lid.date:.%s".%.date).........mo
20f80 6e 74 68 2c 20 72 65 73 74 20 3d 20 64 61 74 65 2e 73 70 6c 69 74 28 27 20 27 2c 20 31 29 0a 20 nth,.rest.=.date.split('.',.1)..
20fa0 20 20 20 20 20 20 20 69 66 20 6d 6f 6e 74 68 20 6e 6f 74 20 69 6e 20 73 65 6c 66 2e 5f 73 73 6c .......if.month.not.in.self._ssl
20fc0 5f 6d 6f 6e 74 68 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 _months:.............raise.Value
20fe0 45 72 72 6f 72 28 22 49 6e 76 61 6c 69 64 20 64 61 74 65 20 25 73 3a 20 49 6e 76 61 6c 69 64 20 Error("Invalid.date.%s:.Invalid.
21000 6d 6f 6e 74 68 3a 20 25 73 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 month:.%s".%....................
21020 20 20 20 20 20 20 20 20 20 20 28 64 61 74 65 2c 20 6d 6f 6e 74 68 29 29 0a 20 20 20 20 20 20 20 ..........(date,.month))........
21040 20 69 66 20 72 65 73 74 2e 65 6e 64 73 77 69 74 68 28 27 20 47 4d 54 27 29 3a 0a 20 20 20 20 20 .if.rest.endswith('.GMT'):......
21060 20 20 20 20 20 20 20 74 69 6d 65 7a 6f 6e 65 20 3d 20 55 54 43 0a 20 20 20 20 20 20 20 20 20 20 .......timezone.=.UTC...........
21080 20 20 72 65 73 74 20 3d 20 72 65 73 74 5b 3a 2d 34 5d 0a 20 20 20 20 20 20 20 20 69 66 20 27 2e ..rest.=.rest[:-4].........if.'.
210a0 27 20 69 6e 20 72 65 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 74 20 3d 20 64 61 74 65 '.in.rest:.............dt.=.date
210c0 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 2e 73 74 72 70 74 69 6d 65 28 72 65 73 74 2c 20 22 25 64 time.datetime.strptime(rest,."%d
210e0 20 25 48 3a 25 4d 3a 25 53 2e 25 66 20 25 59 22 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a .%H:%M:%S.%f.%Y").........else:.
21100 20 20 20 20 20 20 20 20 20 20 20 20 64 74 20 3d 20 64 61 74 65 74 69 6d 65 2e 64 61 74 65 74 69 ............dt.=.datetime.dateti
21120 6d 65 2e 73 74 72 70 74 69 6d 65 28 72 65 73 74 2c 20 22 25 64 20 25 48 3a 25 4d 3a 25 53 20 25 me.strptime(rest,."%d.%H:%M:%S.%
21140 59 22 29 0a 20 20 20 20 20 20 20 20 64 74 20 3d 20 64 74 2e 72 65 70 6c 61 63 65 28 6d 6f 6e 74 Y").........dt.=.dt.replace(mont
21160 68 3d 73 65 6c 66 2e 5f 73 73 6c 5f 6d 6f 6e 74 68 73 2e 69 6e 64 65 78 28 6d 6f 6e 74 68 29 20 h=self._ssl_months.index(month).
21180 2b 20 31 29 0a 20 20 20 20 20 20 20 20 69 66 20 74 69 6d 65 7a 6f 6e 65 3a 0a 20 20 20 20 20 20 +.1).........if.timezone:.......
211a0 20 20 20 20 20 20 64 74 20 3d 20 64 74 2e 72 65 70 6c 61 63 65 28 74 7a 69 6e 66 6f 3d 55 54 43 ......dt.=.dt.replace(tzinfo=UTC
211c0 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 74 0a 0a 20 20 20 20 64 65 66 20 73 65 74 ).........return.dt......def.set
211e0 5f 64 61 74 65 74 69 6d 65 28 73 65 6c 66 2c 20 64 61 74 65 29 3a 0a 20 20 20 20 20 20 20 20 23 _datetime(self,.date):.........#
21200 20 74 79 70 65 3a 20 28 64 61 74 65 74 69 6d 65 2e 64 61 74 65 74 69 6d 65 29 20 2d 3e 20 41 53 .type:.(datetime.datetime).->.AS
21220 4e 31 5f 54 49 4d 45 0a 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 20 3d 20 4c 6f 63 61 6c 54 69 6d N1_TIME.........local.=.LocalTim
21240 65 7a 6f 6e 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 65 2e 74 7a 69 6e 66 6f 20 69 ezone().........if.date.tzinfo.i
21260 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 20 3d 20 64 61 74 65 2e s.None:.............date.=.date.
21280 72 65 70 6c 61 63 65 28 74 7a 69 6e 66 6f 3d 6c 6f 63 61 6c 29 0a 20 20 20 20 20 20 20 20 64 61 replace(tzinfo=local).........da
212a0 74 65 20 3d 20 64 61 74 65 2e 61 73 74 69 6d 65 7a 6f 6e 65 28 6c 6f 63 61 6c 29 0a 20 20 20 20 te.=.date.astimezone(local).....
212c0 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 65 74 5f 74 69 6d 65 28 69 6e 74 28 74 69 6d ....return.self.set_time(int(tim
212e0 65 2e 6d 6b 74 69 6d 65 28 64 61 74 65 2e 74 69 6d 65 74 75 70 6c 65 28 29 29 29 29 0a 0a 0a 41 e.mktime(date.timetuple())))...A
21300 53 4e 31 5f 55 54 43 54 49 4d 45 20 3d 20 41 53 4e 31 5f 54 49 4d 45 0a 94 95 f2 1e 01 00 00 00 SN1_UTCTIME.=.ASN1_TIME.........
21320 00 00 7d 94 28 8c 15 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 8c 03 64 ..}.(..ASN1_Integer.__init__...d
21340 65 66 94 4b 1c 4b 1f 87 94 8c 14 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 63 6d 70 5f 5f 94 ef.K.K.....ASN1_Integer.__cmp__.
21360 6a 74 1f 00 00 4b 21 4b 27 87 94 8c 14 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 64 65 6c 5f jt...K!K'....ASN1_Integer.__del_
21380 5f 94 6a 74 1f 00 00 4b 29 4b 2c 87 94 8c 14 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 69 6e _.jt...K)K,....ASN1_Integer.__in
213a0 74 5f 5f 94 6a 74 1f 00 00 4b 2e 4b 30 87 94 8c 0c 41 53 4e 31 5f 49 6e 74 65 67 65 72 94 8c 05 t__.jt...K.K0....ASN1_Integer...
213c0 63 6c 61 73 73 94 4b 18 4b 30 87 94 8c 14 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 5f 69 6e 69 74 class.K.K0....ASN1_String.__init
213e0 5f 5f 94 6a 74 1f 00 00 4b 37 4b 3a 87 94 8c 15 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 5f 62 79 __.jt...K7K:....ASN1_String.__by
21400 74 65 73 5f 5f 94 6a 74 1f 00 00 4b 3c 4b 40 87 94 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f tes__.jt...K<K@....ASN1_String._
21420 5f 73 74 72 5f 5f 94 6a 74 1f 00 00 4b 42 4b 44 87 94 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e _str__.jt...KBKD....ASN1_String.
21440 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 46 4b 49 87 94 8c 10 41 53 4e 31 5f 53 74 72 69 6e 67 __del__.jt...KFKI....ASN1_String
21460 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 4b 4b 4c 87 94 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e 61 ._ptr.jt...KKKL....ASN1_String.a
21480 73 5f 74 65 78 74 94 6a 74 1f 00 00 4b 4e 4b 59 87 94 8c 0b 41 53 4e 31 5f 53 74 72 69 6e 67 94 s_text.jt...KNKY....ASN1_String.
214a0 6a 7d 1f 00 00 4b 33 4b 59 87 94 8c 14 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 5f 5f 69 6e 69 74 5f j}...K3KY....ASN1_Object.__init_
214c0 5f 94 6a 74 1f 00 00 4b 60 4b 63 87 94 8c 13 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 5f 5f 64 65 6c _.jt...K`Kc....ASN1_Object.__del
214e0 5f 5f 94 6a 74 1f 00 00 4b 65 4b 68 87 94 8c 10 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 5f 70 74 72 __.jt...KeKh....ASN1_Object._ptr
21500 94 6a 74 1f 00 00 4b 6a 4b 6b 87 94 8c 0b 41 53 4e 31 5f 4f 62 6a 65 63 74 94 6a 7d 1f 00 00 4b .jt...KjKk....ASN1_Object.j}...K
21520 5c 4b 6b 87 94 8c 0b 5f 55 54 43 2e 74 7a 6e 61 6d 65 94 6a 74 1f 00 00 4b 6f 4b 71 87 94 8c 08 \Kk...._UTC.tzname.jt...KoKq....
21540 5f 55 54 43 2e 64 73 74 94 6a 74 1f 00 00 4b 73 4b 75 87 94 8c 0e 5f 55 54 43 2e 75 74 63 6f 66 _UTC.dst.jt...KsKu...._UTC.utcof
21560 66 73 65 74 94 6a 74 1f 00 00 4b 77 4b 79 87 94 8c 0d 5f 55 54 43 2e 5f 5f 72 65 70 72 5f 5f 94 fset.jt...KwKy...._UTC.__repr__.
21580 6a 74 1f 00 00 4b 7b 4b 7c 87 94 8c 04 5f 55 54 43 94 6a 7d 1f 00 00 4b 6e 4b 7c 87 94 8c 16 4c jt...K{K|...._UTC.j}...KnK|....L
215a0 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 85 4b 8c 87 ocalTimezone.__init__.jt...K.K..
215c0 94 8c 17 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 75 74 63 6f 66 66 73 65 74 94 6a 74 1f 00 00 ...LocalTimezone.utcoffset.jt...
215e0 4b 8e 4b 93 87 94 8c 11 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 64 73 74 94 6a 74 1f 00 00 4b K.K.....LocalTimezone.dst.jt...K
21600 95 4b 9a 87 94 8c 14 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 74 7a 6e 61 6d 65 94 6a 74 1f 00 .K.....LocalTimezone.tzname.jt..
21620 00 4b 9c 4b 9e 87 94 8c 14 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 5f 69 73 64 73 74 94 6a 74 .K.K.....LocalTimezone._isdst.jt
21640 1f 00 00 4b a0 4b a7 87 94 8c 0d 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 94 6a 7d 1f 00 00 4b 82 ...K.K.....LocalTimezone.j}...K.
21660 4b a7 87 94 8c 12 41 53 4e 31 5f 54 49 4d 45 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b af K.....ASN1_TIME.__init__.jt...K.
21680 4b bb 87 94 8c 11 41 53 4e 31 5f 54 49 4d 45 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b bd 4b K.....ASN1_TIME.__del__.jt...K.K
216a0 c0 87 94 8c 11 41 53 4e 31 5f 54 49 4d 45 2e 5f 5f 73 74 72 5f 5f 94 6a 74 1f 00 00 4b c2 4b c8 .....ASN1_TIME.__str__.jt...K.K.
216c0 87 94 8c 0e 41 53 4e 31 5f 54 49 4d 45 2e 5f 70 74 72 94 6a 74 1f 00 00 4b ca 4b cd 87 94 8c 14 ....ASN1_TIME._ptr.jt...K.K.....
216e0 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 73 74 72 69 6e 67 94 6a 74 1f 00 00 4b cf 4b d4 87 94 ASN1_TIME.set_string.jt...K.K...
21700 8c 12 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 74 69 6d 65 94 6a 74 1f 00 00 4b d6 4b db 87 94 ..ASN1_TIME.set_time.jt...K.K...
21720 8c 16 41 53 4e 31 5f 54 49 4d 45 2e 67 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 74 1f 00 00 4b dd ..ASN1_TIME.get_datetime.jt...K.
21740 4b f2 87 94 8c 16 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 74 1f K.....ASN1_TIME.set_datetime.jt.
21760 00 00 4b f4 4b fa 87 94 8c 09 41 53 4e 31 5f 54 49 4d 45 94 6a 7d 1f 00 00 4b aa 4b fa 87 94 75 ..K.K.....ASN1_TIME.j}...K.K...u
21780 7d 94 28 8c 0c 41 53 4e 31 5f 49 6e 74 65 67 65 72 94 6a 53 02 00 00 8c 0b 41 53 4e 31 5f 4f 62 }.(..ASN1_Integer.jS.....ASN1_Ob
217a0 6a 65 63 74 94 6a 53 02 00 00 8c 0b 41 53 4e 31 5f 53 74 72 69 6e 67 94 6a 53 02 00 00 8c 13 41 ject.jS.....ASN1_String.jS.....A
217c0 53 4e 31 5f 53 74 72 69 6e 67 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 8c 09 41 53 4e 31 5f 54 SN1_String.as_text.jS.....ASN1_T
217e0 49 4d 45 94 6a 53 02 00 00 8c 16 41 53 4e 31 5f 54 49 4d 45 2e 67 65 74 5f 64 61 74 65 74 69 6d IME.jS.....ASN1_TIME.get_datetim
21800 65 94 6a 53 02 00 00 8c 16 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 e.jS.....ASN1_TIME.set_datetime.
21820 6a 53 02 00 00 8c 14 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 73 74 72 69 6e 67 94 6a 53 02 00 jS.....ASN1_TIME.set_string.jS..
21840 00 8c 12 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 74 69 6d 65 94 6a 53 02 00 00 8c 0d 4c 6f 63 ...ASN1_TIME.set_time.jS.....Loc
21860 61 6c 54 69 6d 65 7a 6f 6e 65 94 6a 53 02 00 00 8c 11 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e alTimezone.jS.....LocalTimezone.
21880 64 73 74 94 6a 53 02 00 00 8c 14 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 74 7a 6e 61 6d 65 94 dst.jS.....LocalTimezone.tzname.
218a0 6a 53 02 00 00 8c 17 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 75 74 63 6f 66 66 73 65 74 94 6a jS.....LocalTimezone.utcoffset.j
218c0 53 02 00 00 75 8c 0d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 94 74 94 8c 12 4d 32 43 72 79 70 74 S...u..M2Crypto.ASN1.t...M2Crypt
218e0 6f 2e 5f 6d 32 63 72 79 70 74 6f 94 89 8c 13 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b o._m2crypto....M2Crypto.AuthCook
21900 69 65 94 28 58 4e 14 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 ie.(XN...from.__future__.import.
21920 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 53 65 63 75 72 65 20 41 75 74 68 65 absolute_import.."""Secure.Authe
21940 6e 74 69 63 61 74 6f 72 20 43 6f 6f 6b 69 65 73 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 nticator.Cookies..Copyright.(c).
21960 31 39 39 39 2d 32 30 30 32 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 1999-2002.Ng.Pheng.Siong..All.ri
21980 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e ghts.reserved."""..import.loggin
219a0 67 0a 69 6d 70 6f 72 74 20 72 65 0a 69 6d 70 6f 72 74 20 74 69 6d 65 0a 0a 66 72 6f 6d 20 4d 32 g.import.re.import.time..from.M2
219c0 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 52 61 6e 64 2c 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 Crypto.import.Rand,.m2,.py27plus
219e0 2c 20 73 69 78 2c 20 75 74 69 6c 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f ,.six,.util.from.M2Crypto.six.mo
21a00 76 65 73 2e 68 74 74 70 5f 63 6f 6f 6b 69 65 73 20 69 6d 70 6f 72 74 20 53 69 6d 70 6c 65 43 6f ves.http_cookies.import.SimpleCo
21a20 6f 6b 69 65 20 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6e 61 6d 65 2d okie..#.pylint:.disable=no-name-
21a40 69 6e 2d 6d 6f 64 75 6c 65 2c 69 6d 70 6f 72 74 2d 65 72 72 6f 72 0a 0a 69 66 20 70 79 32 37 70 in-module,import-error..if.py27p
21a60 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 72 65 20 61 lus:.....from.typing.import.re.a
21a80 73 20 74 79 70 65 5f 72 65 2c 20 41 6e 79 53 74 72 2c 20 44 69 63 74 2c 20 4f 70 74 69 6f 6e 61 s.type_re,.AnyStr,.Dict,.Optiona
21aa0 6c 2c 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 0a 5f 4d 49 58 5f 46 4f 52 4d 41 54 20 3d 20 l,.Union..#.noqa.._MIX_FORMAT.=.
21ac0 27 65 78 70 3d 25 66 26 64 61 74 61 3d 25 73 26 64 69 67 65 73 74 3d 27 0a 5f 4d 49 58 5f 52 45 'exp=%f&data=%s&digest='._MIX_RE
21ae0 20 3d 20 72 65 2e 63 6f 6d 70 69 6c 65 28 72 27 65 78 70 3d 28 5c 64 2b 5c 2e 5c 64 2b 29 26 64 .=.re.compile(r'exp=(\d+\.\d+)&d
21b00 61 74 61 3d 28 2e 2b 29 26 64 69 67 65 73 74 3d 28 5c 53 2a 29 27 29 0a 0a 6c 6f 67 20 3d 20 6c ata=(.+)&digest=(\S*)')..log.=.l
21b20 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 65 72 28 5f 5f 6e 61 6d 65 5f 5f 29 0a 0a 0a 64 65 66 ogging.getLogger(__name__)...def
21b40 20 6d 69 78 28 65 78 70 69 72 79 2c 20 64 61 74 61 2c 20 66 6f 72 6d 61 74 3d 5f 4d 49 58 5f 46 .mix(expiry,.data,.format=_MIX_F
21b60 4f 52 4d 41 54 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 66 6c 6f 61 74 2c 20 41 6e 79 53 ORMAT):.....#.type:.(float,.AnyS
21b80 74 72 2c 20 73 74 72 29 20 2d 3e 20 41 6e 79 53 74 72 0a 20 20 20 20 72 65 74 75 72 6e 20 66 6f tr,.str).->.AnyStr.....return.fo
21ba0 72 6d 61 74 20 25 20 28 65 78 70 69 72 79 2c 20 64 61 74 61 29 0a 0a 0a 64 65 66 20 75 6e 6d 69 rmat.%.(expiry,.data)...def.unmi
21bc0 78 28 64 6f 75 67 68 2c 20 72 65 67 65 78 3d 5f 4d 49 58 5f 52 45 29 3a 0a 20 20 20 20 23 20 74 x(dough,.regex=_MIX_RE):.....#.t
21be0 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 74 79 70 65 5f 72 65 29 20 2d 3e 20 6f 62 6a 65 63 74 ype:.(AnyStr,.type_re).->.object
21c00 0a 20 20 20 20 6d 6f 20 3d 20 72 65 67 65 78 2e 6d 61 74 63 68 28 64 6f 75 67 68 29 0a 20 20 20 .....mo.=.regex.match(dough)....
21c20 20 69 66 20 6d 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 28 6d 6f 2e .if.mo:.........return.float(mo.
21c40 67 72 6f 75 70 28 31 29 29 2c 20 6d 6f 2e 67 72 6f 75 70 28 32 29 0a 20 20 20 20 65 6c 73 65 3a group(1)),.mo.group(2).....else:
21c60 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 0a 64 65 66 20 75 6e 6d 69 78 .........return.None...def.unmix
21c80 33 28 64 6f 75 67 68 2c 20 72 65 67 65 78 3d 5f 4d 49 58 5f 52 45 29 3a 0a 20 20 20 20 23 20 74 3(dough,.regex=_MIX_RE):.....#.t
21ca0 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 74 79 70 65 5f 72 65 29 20 2d 3e 20 4f 70 74 69 6f 6e ype:.(AnyStr,.type_re).->.Option
21cc0 61 6c 5b 74 75 70 6c 65 5b 66 6c 6f 61 74 2c 20 41 6e 79 53 74 72 2c 20 41 6e 79 53 74 72 5d 5d al[tuple[float,.AnyStr,.AnyStr]]
21ce0 0a 20 20 20 20 6d 6f 20 3d 20 72 65 67 65 78 2e 6d 61 74 63 68 28 64 6f 75 67 68 29 0a 20 20 20 .....mo.=.regex.match(dough)....
21d00 20 69 66 20 6d 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 28 6d 6f 2e .if.mo:.........return.float(mo.
21d20 67 72 6f 75 70 28 31 29 29 2c 20 6d 6f 2e 67 72 6f 75 70 28 32 29 2c 20 6d 6f 2e 67 72 6f 75 70 group(1)),.mo.group(2),.mo.group
21d40 28 33 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e (3).....else:.........return.Non
21d60 65 0a 0a 0a 5f 54 4f 4b 45 4e 20 3d 20 27 5f 4d 32 41 55 54 48 5f 27 20 20 23 20 74 79 70 65 3a e..._TOKEN.=.'_M2AUTH_'..#.type:
21d80 20 73 74 72 0a 0a 0a 63 6c 61 73 73 20 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 28 6f 62 6a 65 63 .str...class.AuthCookieJar(objec
21da0 74 29 3a 0a 0a 20 20 20 20 5f 6b 65 79 6c 65 6e 20 3d 20 32 30 20 20 23 20 74 79 70 65 3a 20 69 t):......_keylen.=.20..#.type:.i
21dc0 6e 74 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 nt......def.__init__(self):.....
21de0 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 ....#.type:.().->.None.........s
21e00 65 6c 66 2e 5f 6b 65 79 20 3d 20 52 61 6e 64 2e 72 61 6e 64 5f 62 79 74 65 73 28 73 65 6c 66 2e elf._key.=.Rand.rand_bytes(self.
21e20 5f 6b 65 79 6c 65 6e 29 0a 0a 20 20 20 20 64 65 66 20 5f 68 6d 61 63 28 73 65 6c 66 2c 20 6b 65 _keylen)......def._hmac(self,.ke
21e40 79 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 y,.data):.........#.type:.(bytes
21e60 2c 20 73 74 72 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 74 69 ,.str).->.str.........return.uti
21e80 6c 2e 62 69 6e 5f 74 6f 5f 68 65 78 28 6d 32 2e 68 6d 61 63 28 6b 65 79 2c 20 73 69 78 2e 65 6e l.bin_to_hex(m2.hmac(key,.six.en
21ea0 73 75 72 65 5f 62 69 6e 61 72 79 28 64 61 74 61 29 2c 20 6d 32 2e 73 68 61 31 28 29 29 29 0a 0a sure_binary(data),.m2.sha1()))..
21ec0 20 20 20 20 64 65 66 20 6d 61 6b 65 43 6f 6f 6b 69 65 28 73 65 6c 66 2c 20 65 78 70 69 72 79 2c ....def.makeCookie(self,.expiry,
21ee0 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 66 6c 6f 61 74 2c 20 .data):.........#.type:.(float,.
21f00 73 74 72 29 20 2d 3e 20 41 75 74 68 43 6f 6f 6b 69 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 str).->.AuthCookie........."""..
21f20 20 20 20 20 20 20 20 4d 61 6b 65 20 61 20 63 6f 6f 6b 69 65 0a 0a 20 20 20 20 20 20 20 20 3a 70 .......Make.a.cookie..........:p
21f40 61 72 61 6d 20 65 78 70 69 72 79 3a 20 65 78 70 69 72 61 74 69 6f 6e 20 74 69 6d 65 20 28 66 6c aram.expiry:.expiration.time.(fl
21f60 6f 61 74 20 69 6e 20 73 65 63 6f 6e 64 73 29 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 oat.in.seconds).........:param.d
21f80 61 74 61 3a 20 63 6f 6f 6b 69 65 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 3a 72 65 74 ata:.cookie.content.........:ret
21fa0 75 72 6e 3a 20 41 75 74 68 43 6f 6f 6b 69 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 22 urn:.AuthCookie.object........."
21fc0 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 65 78 70 "".........if.not.isinstance(exp
21fe0 69 72 79 2c 20 28 73 69 78 2e 69 6e 74 65 67 65 72 5f 74 79 70 65 73 2c 20 66 6c 6f 61 74 29 29 iry,.(six.integer_types,.float))
22000 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 :.............raise.ValueError('
22020 45 78 70 69 72 61 74 69 6f 6e 20 74 69 6d 65 20 6d 75 73 74 20 62 65 20 6e 75 6d 62 65 72 2c 20 Expiration.time.must.be.number,.
22040 6e 6f 74 20 22 25 73 27 20 25 20 65 78 70 69 72 79 29 0a 20 20 20 20 20 20 20 20 64 6f 75 67 68 not."%s'.%.expiry).........dough
22060 20 3d 20 6d 69 78 28 65 78 70 69 72 79 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 72 65 74 .=.mix(expiry,.data).........ret
22080 75 72 6e 20 41 75 74 68 43 6f 6f 6b 69 65 28 65 78 70 69 72 79 2c 20 64 61 74 61 2c 20 64 6f 75 urn.AuthCookie(expiry,.data,.dou
220a0 67 68 2c 20 73 65 6c 66 2e 5f 68 6d 61 63 28 73 65 6c 66 2e 5f 6b 65 79 2c 20 64 6f 75 67 68 29 gh,.self._hmac(self._key,.dough)
220c0 29 0a 0a 20 20 20 20 64 65 66 20 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 28 73 65 6c 66 2c 20 63 6f )......def.isGoodCookie(self,.co
220e0 6f 6b 69 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 75 74 68 43 6f 6f 6b okie):.........#.type:.(AuthCook
22100 69 65 29 20 2d 3e 20 55 6e 69 6f 6e 5b 62 6f 6f 6c 2c 20 69 6e 74 5d 0a 20 20 20 20 20 20 20 20 ie).->.Union[bool,.int].........
22120 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 63 6f 6f 6b 69 65 2c 20 41 75 74 68 43 6f assert.isinstance(cookie,.AuthCo
22140 6f 6b 69 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 6f 6f 6b 69 65 2e 69 73 45 78 70 69 72 65 okie).........if.cookie.isExpire
22160 64 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a 20 20 20 20 20 20 d():.............return.0.......
22180 20 20 63 20 3d 20 73 65 6c 66 2e 6d 61 6b 65 43 6f 6f 6b 69 65 28 63 6f 6f 6b 69 65 2e 5f 65 78 ..c.=.self.makeCookie(cookie._ex
221a0 70 69 72 79 2c 20 63 6f 6f 6b 69 65 2e 5f 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 piry,.cookie._data).........retu
221c0 72 6e 20 28 63 2e 5f 65 78 70 69 72 79 20 3d 3d 20 63 6f 6f 6b 69 65 2e 5f 65 78 70 69 72 79 29 rn.(c._expiry.==.cookie._expiry)
221e0 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 28 63 2e 5f 64 61 74 61 20 3d 3d 20 63 .\.............and.(c._data.==.c
22200 6f 6f 6b 69 65 2e 5f 64 61 74 61 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 28 ookie._data).\.............and.(
22220 63 2e 5f 6d 61 63 20 3d 3d 20 63 6f 6f 6b 69 65 2e 5f 6d 61 63 29 20 5c 0a 20 20 20 20 20 20 20 c._mac.==.cookie._mac).\........
22240 20 20 20 20 20 61 6e 64 20 28 63 2e 6f 75 74 70 75 74 28 29 20 3d 3d 20 63 6f 6f 6b 69 65 2e 6f .....and.(c.output().==.cookie.o
22260 75 74 70 75 74 28 29 29 0a 0a 20 20 20 20 64 65 66 20 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 53 74 utput())......def.isGoodCookieSt
22280 72 69 6e 67 28 73 65 6c 66 2c 20 63 6f 6f 6b 69 65 5f 73 74 72 2c 20 5f 64 65 62 75 67 3d 46 61 ring(self,.cookie_str,._debug=Fa
222a0 6c 73 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 55 6e 69 6f 6e 5b 64 69 63 lse):.........#.type:.(Union[dic
222c0 74 2c 20 62 79 74 65 73 5d 2c 20 62 6f 6f 6c 29 20 2d 3e 20 55 6e 69 6f 6e 5b 62 6f 6f 6c 2c 20 t,.bytes],.bool).->.Union[bool,.
222e0 69 6e 74 5d 0a 20 20 20 20 20 20 20 20 63 20 3d 20 53 69 6d 70 6c 65 43 6f 6f 6b 69 65 28 29 0a int].........c.=.SimpleCookie().
22300 20 20 20 20 20 20 20 20 63 2e 6c 6f 61 64 28 63 6f 6f 6b 69 65 5f 73 74 72 29 0a 20 20 20 20 20 ........c.load(cookie_str)......
22320 20 20 20 69 66 20 5f 54 4f 4b 45 4e 20 6e 6f 74 20 69 6e 20 63 3a 0a 20 20 20 20 20 20 20 20 20 ...if._TOKEN.not.in.c:..........
22340 20 20 20 6c 6f 67 2e 64 65 62 75 67 28 27 5f 54 4f 4b 45 4e 20 6e 6f 74 20 69 6e 20 63 20 28 6b ...log.debug('_TOKEN.not.in.c.(k
22360 65 79 73 20 3d 20 25 73 29 27 2c 20 64 69 72 28 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 eys.=.%s)',.dir(c)).............
22380 72 65 74 75 72 6e 20 30 0a 20 20 20 20 20 20 20 20 75 6e 64 6f 75 67 68 20 3d 20 75 6e 6d 69 78 return.0.........undough.=.unmix
223a0 33 28 63 5b 5f 54 4f 4b 45 4e 5d 2e 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 75 6e 3(c[_TOKEN].value).........if.un
223c0 64 6f 75 67 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 2e 64 dough.is.None:.............log.d
223e0 65 62 75 67 28 27 75 6e 64 6f 75 67 68 20 69 73 20 4e 6f 6e 65 27 29 0a 20 20 20 20 20 20 20 20 ebug('undough.is.None').........
22400 20 20 20 20 72 65 74 75 72 6e 20 30 0a 20 20 20 20 20 20 20 20 65 78 70 2c 20 64 61 74 61 2c 20 ....return.0.........exp,.data,.
22420 6d 61 63 20 3d 20 75 6e 64 6f 75 67 68 0a 20 20 20 20 20 20 20 20 63 32 20 3d 20 73 65 6c 66 2e mac.=.undough.........c2.=.self.
22440 6d 61 6b 65 43 6f 6f 6b 69 65 28 65 78 70 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 69 66 makeCookie(exp,.data).........if
22460 20 5f 64 65 62 75 67 20 61 6e 64 20 28 63 32 2e 5f 6d 61 63 20 3d 3d 20 6d 61 63 29 3a 0a 20 20 ._debug.and.(c2._mac.==.mac):...
22480 20 20 20 20 20 20 20 20 20 20 6c 6f 67 2e 65 72 72 6f 72 28 27 63 6f 6f 6b 69 65 5f 73 74 72 20 ..........log.error('cookie_str.
224a0 3d 20 25 73 27 2c 20 63 6f 6f 6b 69 65 5f 73 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c =.%s',.cookie_str).............l
224c0 6f 67 2e 65 72 72 6f 72 28 27 63 32 2e 69 73 45 78 70 69 72 65 64 20 3d 20 25 73 27 2c 20 63 32 og.error('c2.isExpired.=.%s',.c2
224e0 2e 69 73 45 78 70 69 72 65 64 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 2e 65 72 .isExpired()).............log.er
22500 72 6f 72 28 27 6d 61 63 20 3d 20 25 73 27 2c 20 6d 61 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 ror('mac.=.%s',.mac)............
22520 20 6c 6f 67 2e 65 72 72 6f 72 28 27 63 32 2e 5f 6d 61 63 20 3d 20 25 73 27 2c 20 63 32 2e 5f 6d .log.error('c2._mac.=.%s',.c2._m
22540 61 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 2e 65 72 72 6f 72 28 27 63 32 2e 5f 6d ac).............log.error('c2._m
22560 61 63 20 3d 3d 20 6d 61 63 3a 20 25 73 27 2c 20 73 74 72 28 63 32 2e 5f 6d 61 63 20 3d 3d 20 6d ac.==.mac:.%s',.str(c2._mac.==.m
22580 61 63 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 6f 74 20 63 32 2e 69 73 45 78 ac)).........return.(not.c2.isEx
225a0 70 69 72 65 64 28 29 29 20 61 6e 64 20 28 63 32 2e 5f 6d 61 63 20 3d 3d 20 6d 61 63 29 0a 0a 0a pired()).and.(c2._mac.==.mac)...
225c0 63 6c 61 73 73 20 41 75 74 68 43 6f 6f 6b 69 65 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 64 class.AuthCookie(object):......d
225e0 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 65 78 70 69 72 79 2c 20 64 61 74 61 2c 20 ef.__init__(self,.expiry,.data,.
22600 64 6f 75 67 68 2c 20 6d 61 63 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 66 6c dough,.mac):.........#.type:.(fl
22620 6f 61 74 2c 20 73 74 72 2c 20 73 74 72 2c 20 73 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 oat,.str,.str,.str).->.None.....
22640 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 43 72 65 61 74 65 20 6e 65 77 20 61 75 74 68 65 ....""".........Create.new.authe
22660 6e 74 69 63 61 74 69 6f 6e 20 63 6f 6f 6b 69 65 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d ntication.cookie..........:param
22680 20 65 78 70 69 72 79 3a 20 65 78 70 69 72 61 74 69 6f 6e 20 74 69 6d 65 20 28 69 6e 20 73 65 63 .expiry:.expiration.time.(in.sec
226a0 6f 6e 64 73 29 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 3a 20 63 6f 6f 6b 69 onds).........:param.data:.cooki
226c0 65 20 70 61 79 6c 6f 61 64 20 28 61 73 20 61 20 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 e.payload.(as.a.string).........
226e0 3a 70 61 72 61 6d 20 64 6f 75 67 68 3a 20 65 78 70 69 72 79 20 26 20 64 61 74 61 20 63 6f 6e 63 :param.dough:.expiry.&.data.conc
22700 61 74 65 6e 61 74 65 64 20 74 6f 20 55 52 4c 20 63 6f 6d 70 6c 69 61 6e 74 0a 20 20 20 20 20 20 atenated.to.URL.compliant.......
22720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 3a ................string.........:
22740 70 61 72 61 6d 20 6d 61 63 3a 20 53 48 41 31 2d 62 61 73 65 64 20 48 4d 41 43 20 6f 66 20 64 6f param.mac:.SHA1-based.HMAC.of.do
22760 75 67 68 20 61 6e 64 20 72 61 6e 64 6f 6d 20 6b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 ugh.and.random.key........."""..
22780 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 65 78 70 69 72 79 20 3d 20 65 78 70 69 72 79 0a 20 20 20 .......self._expiry.=.expiry....
227a0 20 20 20 20 20 73 65 6c 66 2e 5f 64 61 74 61 20 3d 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 73 .....self._data.=.data.........s
227c0 65 6c 66 2e 5f 6d 61 63 20 3d 20 6d 61 63 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 6f 6f elf._mac.=.mac.........self._coo
227e0 6b 69 65 20 3d 20 53 69 6d 70 6c 65 43 6f 6f 6b 69 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c kie.=.SimpleCookie().........sel
22800 66 2e 5f 63 6f 6f 6b 69 65 5b 5f 54 4f 4b 45 4e 5d 20 3d 20 27 25 73 25 73 27 20 25 20 28 64 6f f._cookie[_TOKEN].=.'%s%s'.%.(do
22820 75 67 68 2c 20 6d 61 63 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6e 61 6d 65 20 3d 20 27 ugh,.mac).........self._name.=.'
22840 25 73 25 73 27 20 25 20 28 64 6f 75 67 68 2c 20 6d 61 63 29 20 20 23 20 57 65 62 4b 69 74 20 6f %s%s'.%.(dough,.mac)..#.WebKit.o
22860 6e 6c 79 2e 0a 0a 20 20 20 20 64 65 66 20 65 78 70 69 72 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 nly.......def.expiry(self):.....
22880 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 66 6c 6f 61 74 0a 20 20 20 20 20 20 20 20 ....#.type:.().->.float.........
228a0 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 6f 6b 69 65 27 73 20 65 78 70 69 72 79 20 74 69 """Return.the.cookie's.expiry.ti
228c0 6d 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 65 78 70 69 me.""".........return.self._expi
228e0 72 79 0a 0a 20 20 20 20 64 65 66 20 64 61 74 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 ry......def.data(self):.........
22900 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 #.type:.().->.str........."""Ret
22920 75 72 6e 20 74 68 65 20 64 61 74 61 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6f 6b urn.the.data.portion.of.the.cook
22940 69 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 64 61 74 61 ie.""".........return.self._data
22960 0a 0a 20 20 20 20 64 65 66 20 6d 61 63 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 ......def.mac(self):.........#.t
22980 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e ype:.().->.str........."""Return
229a0 20 74 68 65 20 63 6f 6f 6b 69 65 27 73 20 4d 41 43 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 .the.cookie's.MAC.""".........re
229c0 74 75 72 6e 20 73 65 6c 66 2e 5f 6d 61 63 0a 0a 20 20 20 20 64 65 66 20 6f 75 74 70 75 74 28 73 turn.self._mac......def.output(s
229e0 65 6c 66 2c 20 68 65 61 64 65 72 3d 22 53 65 74 2d 43 6f 6f 6b 69 65 3a 22 29 3a 0a 20 20 20 20 elf,.header="Set-Cookie:"):.....
22a00 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 29 20 2d 3e 20 73 ....#.type:.(Optional[str]).->.s
22a20 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 6f 6b 69 65 27 tr........."""Return.the.cookie'
22a40 73 20 6f 75 74 70 75 74 20 69 6e 20 22 53 65 74 2d 43 6f 6f 6b 69 65 22 20 66 6f 72 6d 61 74 2e s.output.in."Set-Cookie".format.
22a60 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 63 6f 6f 6b 69 65 2e """.........return.self._cookie.
22a80 6f 75 74 70 75 74 28 68 65 61 64 65 72 3d 68 65 61 64 65 72 29 0a 0a 20 20 20 20 64 65 66 20 76 output(header=header)......def.v
22aa0 61 6c 75 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d alue(self):.........#.type:.().-
22ac0 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 6f 6b >.str........."""Return.the.cook
22ae0 69 65 27 73 20 6f 75 74 70 75 74 20 6d 69 6e 75 73 20 74 68 65 20 22 53 65 74 2d 43 6f 6f 6b 69 ie's.output.minus.the."Set-Cooki
22b00 65 3a 20 22 20 70 6f 72 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 e:.".portion..........""".......
22b20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 63 6f 6f 6b 69 65 5b 5f 54 4f 4b 45 4e 5d 2e 76 61 ..return.self._cookie[_TOKEN].va
22b40 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 69 73 45 78 70 69 72 65 64 28 73 65 6c 66 29 3a 0a 20 20 lue......def.isExpired(self):...
22b60 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 ......#.type:.().->.bool........
22b80 20 22 22 22 52 65 74 75 72 6e 20 31 20 69 66 20 74 68 65 20 63 6f 6f 6b 69 65 20 68 61 73 20 65 ."""Return.1.if.the.cookie.has.e
22ba0 78 70 69 72 65 64 2c 20 30 20 6f 74 68 65 72 77 69 73 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 xpired,.0.otherwise.""".........
22bc0 72 65 74 75 72 6e 20 69 73 69 6e 73 74 61 6e 63 65 28 73 65 6c 66 2e 5f 65 78 70 69 72 79 2c 20 return.isinstance(self._expiry,.
22be0 28 66 6c 6f 61 74 2c 20 73 69 78 2e 69 6e 74 65 67 65 72 5f 74 79 70 65 73 29 29 20 61 6e 64 20 (float,.six.integer_types)).and.
22c00 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 74 69 6d 65 2e 74 69 6d 65 28 29 20 3e 20 73 65 6c \.............(time.time().>.sel
22c20 66 2e 5f 65 78 70 69 72 79 29 0a 0a 20 20 20 20 23 20 46 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 f._expiry)......#.Following.two.
22c40 6d 65 74 68 6f 64 73 20 61 72 65 20 66 6f 72 20 57 65 62 4b 69 74 20 6f 6e 6c 79 2e 0a 20 20 20 methods.are.for.WebKit.only.....
22c60 20 23 20 49 20 6d 61 79 20 77 69 73 68 20 74 6f 20 70 75 73 68 20 74 68 65 6d 20 74 6f 20 57 4b .#.I.may.wish.to.push.them.to.WK
22c80 41 75 74 68 43 6f 6f 6b 69 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 70 61 72 74 0a 20 20 AuthCookie,.but.they.are.part...
22ca0 20 20 23 20 6f 66 20 74 68 65 20 41 50 49 20 6e 6f 77 2e 20 4f 68 20 77 65 6c 6c 2e 0a 20 20 20 ..#.of.the.API.now..Oh.well.....
22cc0 20 64 65 66 20 6e 61 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a .def.name(self):.........#.type:
22ce0 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f .().->.str.........return.self._
22d00 6e 61 6d 65 0a 0a 20 20 20 20 64 65 66 20 68 65 61 64 65 72 56 61 6c 75 65 28 73 65 6c 66 29 3a name......def.headerValue(self):
22d20 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 .........#.type:.().->.str......
22d40 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 76 61 6c 75 65 28 29 0a 94 7d 94 28 8c 03 6d 69 78 ...return.self.value()..}.(..mix
22d60 94 6a 74 1f 00 00 4b 17 4b 19 87 94 8c 05 75 6e 6d 69 78 94 6a 74 1f 00 00 4b 1c 4b 22 87 94 8c .jt...K.K.....unmix.jt...K.K"...
22d80 06 75 6e 6d 69 78 33 94 6a 74 1f 00 00 4b 25 4b 2b 87 94 8c 16 41 75 74 68 43 6f 6f 6b 69 65 4a .unmix3.jt...K%K+....AuthCookieJ
22da0 61 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 35 4b 37 87 94 8c 13 41 75 74 68 43 6f 6f ar.__init__.jt...K5K7....AuthCoo
22dc0 6b 69 65 4a 61 72 2e 5f 68 6d 61 63 94 6a 74 1f 00 00 4b 39 4b 3b 87 94 8c 18 41 75 74 68 43 6f kieJar._hmac.jt...K9K;....AuthCo
22de0 6f 6b 69 65 4a 61 72 2e 6d 61 6b 65 43 6f 6f 6b 69 65 94 6a 74 1f 00 00 4b 3d 4b 49 87 94 8c 1a okieJar.makeCookie.jt...K=KI....
22e00 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 94 6a 74 1f 00 00 AuthCookieJar.isGoodCookie.jt...
22e20 4b 4b 4b 54 87 94 8c 20 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b KKKT....AuthCookieJar.isGoodCook
22e40 69 65 53 74 72 69 6e 67 94 6a 74 1f 00 00 4b 56 4b 69 87 94 8c 0d 41 75 74 68 43 6f 6f 6b 69 65 ieString.jt...KVKi....AuthCookie
22e60 4a 61 72 94 6a 7d 1f 00 00 4b 31 4b 69 87 94 8c 13 41 75 74 68 43 6f 6f 6b 69 65 2e 5f 5f 69 6e Jar.j}...K1Ki....AuthCookie.__in
22e80 69 74 5f 5f 94 6a 74 1f 00 00 4b 6e 4b 7e 87 94 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 65 78 70 it__.jt...KnK~....AuthCookie.exp
22ea0 69 72 79 94 6a 74 1f 00 00 4b 80 4b 83 87 94 8c 0f 41 75 74 68 43 6f 6f 6b 69 65 2e 64 61 74 61 iry.jt...K.K.....AuthCookie.data
22ec0 94 6a 74 1f 00 00 4b 85 4b 88 87 94 8c 0e 41 75 74 68 43 6f 6f 6b 69 65 2e 6d 61 63 94 6a 74 1f .jt...K.K.....AuthCookie.mac.jt.
22ee0 00 00 4b 8a 4b 8d 87 94 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 6f 75 74 70 75 74 94 6a 74 1f 00 ..K.K.....AuthCookie.output.jt..
22f00 00 4b 8f 4b 92 87 94 8c 10 41 75 74 68 43 6f 6f 6b 69 65 2e 76 61 6c 75 65 94 6a 74 1f 00 00 4b .K.K.....AuthCookie.value.jt...K
22f20 94 4b 98 87 94 8c 14 41 75 74 68 43 6f 6f 6b 69 65 2e 69 73 45 78 70 69 72 65 64 94 6a 74 1f 00 .K.....AuthCookie.isExpired.jt..
22f40 00 4b 9a 4b 9e 87 94 8c 0f 41 75 74 68 43 6f 6f 6b 69 65 2e 6e 61 6d 65 94 6a 74 1f 00 00 4b a3 .K.K.....AuthCookie.name.jt...K.
22f60 4b a5 87 94 8c 16 41 75 74 68 43 6f 6f 6b 69 65 2e 68 65 61 64 65 72 56 61 6c 75 65 94 6a 74 1f K.....AuthCookie.headerValue.jt.
22f80 00 00 4b a7 4b a9 87 94 8c 0a 41 75 74 68 43 6f 6f 6b 69 65 94 6a 7d 1f 00 00 4b 6c 4b a9 87 94 ..K.K.....AuthCookie.j}...KlK...
22fa0 75 7d 94 28 8c 0a 41 75 74 68 43 6f 6f 6b 69 65 94 6a 53 02 00 00 8c 0f 41 75 74 68 43 6f 6f 6b u}.(..AuthCookie.jS.....AuthCook
22fc0 69 65 2e 64 61 74 61 94 6a 53 02 00 00 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 65 78 70 69 72 79 ie.data.jS.....AuthCookie.expiry
22fe0 94 6a 53 02 00 00 8c 16 41 75 74 68 43 6f 6f 6b 69 65 2e 68 65 61 64 65 72 56 61 6c 75 65 94 6a .jS.....AuthCookie.headerValue.j
23000 53 02 00 00 8c 14 41 75 74 68 43 6f 6f 6b 69 65 2e 69 73 45 78 70 69 72 65 64 94 6a 53 02 00 00 S.....AuthCookie.isExpired.jS...
23020 8c 0e 41 75 74 68 43 6f 6f 6b 69 65 2e 6d 61 63 94 6a 53 02 00 00 8c 0f 41 75 74 68 43 6f 6f 6b ..AuthCookie.mac.jS.....AuthCook
23040 69 65 2e 6e 61 6d 65 94 6a 53 02 00 00 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 6f 75 74 70 75 74 ie.name.jS.....AuthCookie.output
23060 94 6a 53 02 00 00 8c 10 41 75 74 68 43 6f 6f 6b 69 65 2e 76 61 6c 75 65 94 6a 53 02 00 00 8c 0d .jS.....AuthCookie.value.jS.....
23080 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 94 6a 53 02 00 00 8c 1a 41 75 74 68 43 6f 6f 6b 69 65 4a AuthCookieJar.jS.....AuthCookieJ
230a0 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 94 6a 53 02 00 00 8c 20 41 75 74 68 43 6f 6f 6b 69 ar.isGoodCookie.jS.....AuthCooki
230c0 65 4a 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 53 74 72 69 6e 67 94 6a 53 02 00 00 8c 18 41 eJar.isGoodCookieString.jS.....A
230e0 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 6d 61 6b 65 43 6f 6f 6b 69 65 94 6a 53 02 00 00 8c 03 6d uthCookieJar.makeCookie.jS.....m
23100 69 78 94 6a 53 02 00 00 8c 05 75 6e 6d 69 78 94 6a 53 02 00 00 8c 06 75 6e 6d 69 78 33 94 6a 53 ix.jS.....unmix.jS.....unmix3.jS
23120 02 00 00 75 8c 13 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 94 74 94 8c 0c 4d 32 ...u..M2Crypto.AuthCookie.t...M2
23140 43 72 79 70 74 6f 2e 42 49 4f 94 28 58 aa 2a 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f Crypto.BIO.(X.*..from.__future__
23160 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 72 .import.absolute_import.."""M2Cr
23180 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 42 49 4f 20 41 50 49 ypto.wrapper.for.OpenSSL.BIO.API
231a0 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 ...Copyright.(c).1999-2004.Ng.Ph
231c0 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 eng.Siong..All.rights.reserved."
231e0 22 22 0a 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 ""..import.logging..from.M2Crypt
23200 6f 20 69 6d 70 6f 72 74 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 2c 20 73 69 78 0a 69 66 20 70 79 o.import.m2,.py27plus,.six.if.py
23220 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 27plus:.....from.typing.import.A
23240 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 49 74 65 72 61 62 6c 65 2c 20 4f 70 74 69 6f nyStr,.Callable,.Iterable,.Optio
23260 6e 61 6c 2c 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e nal,.Union..#.noqa..log.=.loggin
23280 67 2e 67 65 74 4c 6f 67 67 65 72 28 27 42 49 4f 27 29 0a 0a 0a 63 6c 61 73 73 20 42 49 4f 45 72 g.getLogger('BIO')...class.BIOEr
232a0 72 6f 72 28 56 61 6c 75 65 45 72 72 6f 72 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 6d 32 2e 62 ror(ValueError):.....pass...m2.b
232c0 69 6f 5f 69 6e 69 74 28 42 49 4f 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 42 49 4f 28 6f 62 io_init(BIOError)...class.BIO(ob
232e0 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 41 62 73 74 72 61 63 74 20 6f 62 6a 65 63 74 20 69 6e ject):....."""Abstract.object.in
23300 74 65 72 66 61 63 65 20 74 6f 20 74 68 65 20 42 49 4f 20 41 50 49 2e 22 22 22 0a 0a 20 20 20 20 terface.to.the.BIO.API."""......
23320 6d 32 5f 62 69 6f 5f 66 72 65 65 20 3d 20 6d 32 2e 62 69 6f 5f 66 72 65 65 0a 0a 20 20 20 20 64 m2_bio_free.=.m2.bio_free......d
23340 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 69 6f 3d 4e 6f 6e 65 2c 20 5f 70 79 66 ef.__init__(self,.bio=None,._pyf
23360 72 65 65 3d 30 2c 20 5f 63 6c 6f 73 65 5f 63 62 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 ree=0,._close_cb=None):.........
23380 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 42 49 4f 5d 2c 20 69 6e 74 2c 20 4f 70 74 #.type:.(Optional[BIO],.int,.Opt
233a0 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 ional[Callable]).->.None........
233c0 20 73 65 6c 66 2e 62 69 6f 20 3d 20 62 69 6f 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 .self.bio.=.bio.........self._py
233e0 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 6c 6f free.=._pyfree.........self._clo
23400 73 65 5f 63 62 20 3d 20 5f 63 6c 6f 73 65 5f 63 62 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 se_cb.=._close_cb.........self.c
23420 6c 6f 73 65 64 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 77 72 69 74 65 5f 63 6c 6f losed.=.0.........self.write_clo
23440 73 65 64 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a sed.=.0......def.__del__(self):.
23460 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 20 20 20 ........if.self._pyfree:........
23480 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 62 69 6f 29 0a .....self.m2_bio_free(self.bio).
234a0 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 .....def._ptr(self):.........ret
234c0 75 72 6e 20 73 65 6c 66 2e 62 69 6f 0a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 74 65 64 2e 0a urn.self.bio......#.Deprecated..
234e0 20 20 20 20 62 69 6f 5f 70 74 72 20 3d 20 5f 70 74 72 0a 0a 20 20 20 20 64 65 66 20 66 69 6c 65 ....bio_ptr.=._ptr......def.file
23500 6e 6f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 no(self):.........#.type:.().->.
23520 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 67 65 74 5f 66 64 int.........return.m2.bio_get_fd
23540 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 61 62 6c 65 28 73 65 6c (self.bio)......def.readable(sel
23560 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 6f 6f 6c 0a 20 f):.........#.type:.().->.bool..
23580 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 74 20 73 65 6c 66 2e 63 6c 6f 73 65 64 0a 0a 20 .......return.not.self.closed...
235a0 20 20 20 64 65 66 20 72 65 61 64 28 73 65 6c 66 2c 20 73 69 7a 65 3d 4e 6f 6e 65 29 3a 0a 20 20 ...def.read(self,.size=None):...
235c0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 55 6e 69 6f 6e 5b 62 79 74 ......#.type:.(int).->.Union[byt
235e0 65 73 2c 20 62 79 74 65 61 72 72 61 79 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 es,.bytearray].........if.not.se
23600 6c 66 2e 72 65 61 64 61 62 6c 65 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 lf.readable():.............raise
23620 20 49 4f 45 72 72 6f 72 28 27 63 61 6e 6e 6f 74 20 72 65 61 64 27 29 0a 20 20 20 20 20 20 20 20 .IOError('cannot.read').........
23640 69 66 20 73 69 7a 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 if.size.is.None:.............buf
23660 20 3d 20 62 79 74 65 61 72 72 61 79 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 .=.bytearray().............while
23680 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 6d 32 2e 62 69 .1:.................data.=.m2.bi
236a0 6f 5f 72 65 61 64 28 73 65 6c 66 2e 62 69 6f 2c 20 34 30 39 36 29 0a 20 20 20 20 20 20 20 20 20 o_read(self.bio,.4096)..........
236c0 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 61 74 61 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .......if.not.data:.............
236e0 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 ........break.................bu
23700 66 20 2b 3d 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 f.+=.data.............return.buf
23720 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 69 7a 65 20 3d 3d 20 30 3a 0a 20 20 20 20 20 20 20 .........elif.size.==.0:........
23740 20 20 20 20 20 72 65 74 75 72 6e 20 62 27 27 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 69 7a .....return.b''.........elif.siz
23760 65 20 3c 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 e.<.0:.............raise.ValueEr
23780 72 6f 72 28 27 72 65 61 64 20 63 6f 75 6e 74 20 69 73 20 6e 65 67 61 74 69 76 65 27 29 0a 20 20 ror('read.count.is.negative')...
237a0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 ......else:.............return.b
237c0 79 74 65 73 28 6d 32 2e 62 69 6f 5f 72 65 61 64 28 73 65 6c 66 2e 62 69 6f 2c 20 73 69 7a 65 29 ytes(m2.bio_read(self.bio,.size)
237e0 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 6c 69 6e 65 28 73 65 6c 66 2c 20 73 69 7a 65 3d 34 )......def.readline(self,.size=4
23800 30 39 36 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 62 096):.........#.type:.(int).->.b
23820 79 74 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 72 65 61 64 61 62 6c ytes.........if.not.self.readabl
23840 65 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 72 72 6f 72 28 27 e():.............raise.IOError('
23860 63 61 6e 6e 6f 74 20 72 65 61 64 27 29 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 6d 32 2e 62 cannot.read').........buf.=.m2.b
23880 69 6f 5f 67 65 74 73 28 73 65 6c 66 2e 62 69 6f 2c 20 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 io_gets(self.bio,.size).........
238a0 62 75 66 20 3d 20 27 27 20 69 66 20 62 75 66 20 69 73 20 4e 6f 6e 65 20 65 6c 73 65 20 62 75 66 buf.=.''.if.buf.is.None.else.buf
238c0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 .........return.six.ensure_binar
238e0 79 28 62 75 66 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 6c 69 6e 65 73 28 73 65 6c 66 2c 20 y(buf)......def.readlines(self,.
23900 73 69 7a 65 68 69 6e 74 3d 27 69 67 6e 6f 72 65 64 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 sizehint='ignored'):.........#.t
23920 79 70 65 3a 20 28 55 6e 69 6f 6e 5b 41 6e 79 53 74 72 2c 20 69 6e 74 5d 29 20 2d 3e 20 49 74 65 ype:.(Union[AnyStr,.int]).->.Ite
23940 72 61 62 6c 65 5b 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 rable[bytes].........if.not.self
23960 2e 72 65 61 64 61 62 6c 65 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 .readable():.............raise.I
23980 4f 45 72 72 6f 72 28 27 63 61 6e 6e 6f 74 20 72 65 61 64 27 29 0a 20 20 20 20 20 20 20 20 6c 69 OError('cannot.read').........li
239a0 6e 65 73 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 nes.=.[].........while.1:.......
239c0 20 20 20 20 20 20 62 75 66 20 3d 20 6d 32 2e 62 69 6f 5f 67 65 74 73 28 73 65 6c 66 2e 62 69 6f ......buf.=.m2.bio_gets(self.bio
239e0 2c 20 34 30 39 36 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 62 75 66 20 69 73 20 4e 6f ,.4096).............if.buf.is.No
23a00 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 ne:.................break.......
23a20 20 20 20 20 20 20 6c 69 6e 65 73 2e 61 70 70 65 6e 64 28 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 ......lines.append(six.ensure_bi
23a40 6e 61 72 79 28 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69 6e 65 73 0a nary(buf)).........return.lines.
23a60 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 61 62 6c 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 .....def.writeable(self):.......
23a80 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 72 65 74 ..#.type:.().->.bool.........ret
23aa0 75 72 6e 20 28 6e 6f 74 20 73 65 6c 66 2e 63 6c 6f 73 65 64 29 20 61 6e 64 20 28 6e 6f 74 20 73 urn.(not.self.closed).and.(not.s
23ac0 65 6c 66 2e 77 72 69 74 65 5f 63 6c 6f 73 65 64 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 elf.write_closed)......def.write
23ae0 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 (self,.data):.........#.type:.(A
23b00 6e 79 53 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 57 72 69 74 65 20 64 nyStr).->.int........."""Write.d
23b20 61 74 61 20 74 6f 20 42 49 4f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 65 69 ata.to.BIO...........:return:.ei
23b40 74 68 65 72 20 64 61 74 61 20 77 72 69 74 74 65 6e 2c 20 6f 72 20 5b 30 2c 20 2d 31 5d 20 66 6f ther.data.written,.or.[0,.-1].fo
23b60 72 20 6e 6f 74 68 69 6e 67 20 77 72 69 74 74 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r.nothing.written,..............
23b80 20 20 20 20 2d 32 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 0a 20 20 20 20 20 20 20 20 22 ....-2.not.implemented........."
23ba0 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 77 72 69 74 65 61 62 6c 65 "".........if.not.self.writeable
23bc0 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 72 72 6f 72 28 27 63 ():.............raise.IOError('c
23be0 61 6e 6e 6f 74 20 77 72 69 74 65 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 annot.write').........if.isinsta
23c00 6e 63 65 28 64 61 74 61 2c 20 73 69 78 2e 74 65 78 74 5f 74 79 70 65 29 3a 0a 20 20 20 20 20 20 nce(data,.six.text_type):.......
23c20 20 20 20 20 20 20 64 61 74 61 20 3d 20 64 61 74 61 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 ......data.=.data.encode('utf8')
23c40 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 77 72 69 74 65 28 73 65 6c .........return.m2.bio_write(sel
23c60 66 2e 62 69 6f 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 63 6c 6f 73 f.bio,.data)......def.write_clos
23c80 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e e(self):.........#.type:.().->.N
23ca0 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 77 72 69 74 65 5f 63 6c 6f 73 65 64 20 3d 20 one.........self.write_closed.=.
23cc0 31 0a 0a 20 20 20 20 64 65 66 20 66 6c 75 73 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 1......def.flush(self):.........
23ce0 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 46 6c #.type:.().->.None........."""Fl
23d00 75 73 68 20 74 68 65 20 62 75 66 66 65 72 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 ush.the.buffers...........:retur
23d20 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20 61 6e 64 20 30 20 6f 72 20 2d 31 20 66 6f n:.1.for.success,.and.0.or.-1.fo
23d40 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 r.failure.........""".........m2
23d60 2e 62 69 6f 5f 66 6c 75 73 68 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 72 65 .bio_flush(self.bio)......def.re
23d80 73 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e set(self):.........#.type:.().->
23da0 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 68 65 20 62 69 6f 20 74 6f 20 69 .int........."""Set.the.bio.to.i
23dc0 74 73 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 ts.initial.state...........:retu
23de0 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20 61 6e 64 20 30 20 6f 72 20 2d 31 20 66 rn:.1.for.success,.and.0.or.-1.f
23e00 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 or.failure.........""".........r
23e20 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 72 65 73 65 74 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 eturn.m2.bio_reset(self.bio)....
23e40 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ..def.close(self):.........#.typ
23e60 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 e:.().->.None.........self.close
23e80 64 20 3d 20 31 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 63 6c 6f 73 65 5f 63 62 3a d.=.1.........if.self._close_cb:
23ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 6c 6f 73 65 5f 63 62 28 29 0a 0a 20 .............self._close_cb()...
23ec0 20 20 20 64 65 66 20 73 68 6f 75 6c 64 5f 72 65 74 72 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 ...def.should_retry(self):......
23ee0 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 ...#.type:.().->.int........."""
23f00 0a 20 20 20 20 20 20 20 20 43 61 6e 20 74 68 65 20 63 61 6c 6c 20 62 65 20 61 74 74 65 6d 70 74 .........Can.the.call.be.attempt
23f20 65 64 20 61 67 61 69 6e 2c 20 6f 72 20 77 61 73 20 74 68 65 72 65 20 61 6e 20 65 72 72 6f 72 0a ed.again,.or.was.there.an.error.
23f40 20 20 20 20 20 20 20 20 69 65 20 64 6f 5f 68 61 6e 64 73 68 61 6b 65 0a 0a 20 20 20 20 20 20 20 ........ie.do_handshake.........
23f60 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 73 68 6f 75 6c .""".........return.m2.bio_shoul
23f80 64 5f 72 65 74 72 79 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 68 6f 75 6c d_retry(self.bio)......def.shoul
23fa0 64 5f 72 65 61 64 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 d_read(self):.........#.type:.()
23fc0 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 68 6f 75 6c 64 20 77 65 20 72 65 61 .->.int........."""Should.we.rea
23fe0 64 20 6d 6f 72 65 20 64 61 74 61 3f 22 22 22 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 d.more.data?"""..........return.
24000 6d 32 2e 62 69 6f 5f 73 68 6f 75 6c 64 5f 72 65 61 64 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 m2.bio_should_read(self.bio)....
24020 20 20 64 65 66 20 73 68 6f 75 6c 64 5f 77 72 69 74 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 ..def.should_write(self):.......
24040 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 ..#.type:.().->.int........."""S
24060 68 6f 75 6c 64 20 77 65 20 77 72 69 74 65 20 6d 6f 72 65 20 64 61 74 61 3f 22 22 22 0a 20 20 20 hould.we.write.more.data?"""....
24080 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 73 68 6f 75 6c 64 5f 77 72 69 74 65 28 .....return.m2.bio_should_write(
240a0 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 74 65 6c 6c 28 73 65 6c 66 29 3a 0a 20 self.bio)......def.tell(self):..
240c0 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 66 66 ......."""Return.the.current.off
240e0 73 65 74 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 74 65 set.""".........return.m2.bio_te
24100 6c 6c 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 65 65 6b 28 73 65 6c 66 2c ll(self.bio)......def.seek(self,
24120 20 6f 66 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 65 6b 20 74 6f 20 74 68 65 20 73 70 .off):........."""Seek.to.the.sp
24140 65 63 69 66 69 65 64 20 61 62 73 6f 6c 75 74 65 20 6f 66 66 73 65 74 2e 22 22 22 0a 20 20 20 20 ecified.absolute.offset.""".....
24160 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 73 65 65 6b 28 73 65 6c 66 2e 62 69 6f 2c ....return.m2.bio_seek(self.bio,
24180 20 6f 66 66 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 65 6e 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a .off)......def.__enter__(self):.
241a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 0a 0a 20 20 20 20 64 65 66 20 5f 5f 65 ........return.self......def.__e
241c0 78 69 74 5f 5f 28 73 65 6c 66 2c 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 xit__(self,.*args):.........#.ty
241e0 70 65 3a 20 28 2a 41 6e 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 pe:.(*Any).->.int.........self.c
24200 6c 6f 73 65 28 29 0a 0a 0a 63 6c 61 73 73 20 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 42 49 4f 29 lose()...class.MemoryBuffer(BIO)
24220 3a 0a 20 20 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 4f :....."""Object.interface.to.BIO
24240 5f 73 5f 6d 65 6d 2e 0a 0a 20 20 20 20 45 6d 70 69 72 69 63 61 6c 20 74 65 73 74 69 6e 67 20 73 _s_mem.......Empirical.testing.s
24260 75 67 67 65 73 74 73 20 74 68 61 74 20 74 68 69 73 20 63 6c 61 73 73 20 70 65 72 66 6f 72 6d 73 uggests.that.this.class.performs
24280 20 6c 65 73 73 20 77 65 6c 6c 20 74 68 61 6e 0a 20 20 20 20 63 53 74 72 69 6e 67 49 4f 2c 20 62 .less.well.than.....cStringIO,.b
242a0 65 63 61 75 73 65 20 63 53 74 72 69 6e 67 49 4f 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 ecause.cStringIO.is.implemented.
242c0 69 6e 20 43 2c 20 77 68 65 72 65 61 73 20 74 68 69 73 20 63 6c 61 73 73 0a 20 20 20 20 69 73 20 in.C,.whereas.this.class.....is.
242e0 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 50 79 74 68 6f 6e 2e 20 54 68 75 73 2c 20 74 68 65 implemented.in.Python..Thus,.the
24300 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 70 72 61 63 74 69 63 65 20 69 73 20 74 6f 20 75 73 65 0a .recommended.practice.is.to.use.
24320 20 20 20 20 63 53 74 72 69 6e 67 49 4f 20 66 6f 72 20 72 65 67 75 6c 61 72 20 77 6f 72 6b 20 61 ....cStringIO.for.regular.work.a
24340 6e 64 20 63 6f 6e 76 65 72 74 20 73 61 69 64 20 63 53 74 72 69 6e 67 49 4f 20 6f 62 6a 65 63 74 nd.convert.said.cStringIO.object
24360 20 74 6f 0a 20 20 20 20 61 20 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 6f 62 6a 65 63 74 20 6f 6e .to.....a.MemoryBuffer.object.on
24380 6c 79 20 77 68 65 6e 20 6e 65 63 65 73 73 61 72 79 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 ly.when.necessary......"""......
243a0 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 def.__init__(self,.data=None):..
243c0 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 29 .......#.type:.(Optional[bytes])
243e0 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 4d 65 6d 6f 72 79 42 75 66 .->.None.........super(MemoryBuf
24400 66 65 72 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 fer,.self).__init__(self).......
24420 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 20 61 6e 64 20 6e 6f 74 20 69 73 ..if.data.is.not.None.and.not.is
24440 69 6e 73 74 61 6e 63 65 28 64 61 74 61 2c 20 62 79 74 65 73 29 3a 0a 20 20 20 20 20 20 20 20 20 instance(data,.bytes):..........
24460 20 20 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...raise.TypeError(.............
24480 20 20 20 20 22 64 61 74 61 20 6d 75 73 74 20 62 65 20 62 79 74 65 73 20 6f 72 20 4e 6f 6e 65 2c ...."data.must.be.bytes.or.None,
244a0 20 6e 6f 74 20 25 73 22 20 25 20 28 74 79 70 65 28 64 61 74 61 29 2e 5f 5f 6e 61 6d 65 5f 5f 2c .not.%s".%.(type(data).__name__,
244c0 20 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 .)).........self.bio.=.m2.bio_ne
244e0 77 28 6d 32 2e 62 69 6f 5f 73 5f 6d 65 6d 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f w(m2.bio_s_mem()).........self._
24500 70 79 66 72 65 65 20 3d 20 31 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f pyfree.=.1.........if.data.is.no
24520 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 77 72 69 74 65 t.None:.............m2.bio_write
24540 28 73 65 6c 66 2e 62 69 6f 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f (self.bio,.data)......def.__len_
24560 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 _(self):.........#.type:.().->.i
24580 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 63 74 72 6c 5f 70 65 nt.........return.m2.bio_ctrl_pe
245a0 6e 64 69 6e 67 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 28 73 65 nding(self.bio)......def.read(se
245c0 6c 66 2c 20 73 69 7a 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e lf,.size=0):.........#.type:.(in
245e0 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e t).->.bytes.........if.not.self.
24600 72 65 61 64 61 62 6c 65 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f readable():.............raise.IO
24620 45 72 72 6f 72 28 27 63 61 6e 6e 6f 74 20 72 65 61 64 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 Error('cannot.read').........if.
24640 73 69 7a 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f size:.............return.m2.bio_
24660 72 65 61 64 28 73 65 6c 66 2e 62 69 6f 2c 20 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 read(self.bio,.size).........els
24680 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 72 65 61 e:.............return.m2.bio_rea
246a0 64 28 73 65 6c 66 2e 62 69 6f 2c 20 6d 32 2e 62 69 6f 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 28 d(self.bio,.m2.bio_ctrl_pending(
246c0 73 65 6c 66 2e 62 69 6f 29 29 0a 0a 20 20 20 20 23 20 42 61 63 6b 77 61 72 64 73 2d 63 6f 6d 70 self.bio))......#.Backwards-comp
246e0 61 74 69 62 69 6c 69 74 79 2e 0a 20 20 20 20 67 65 74 76 61 6c 75 65 20 3d 20 72 65 61 64 5f 61 atibility......getvalue.=.read_a
24700 6c 6c 20 3d 20 72 65 61 64 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 63 6c 6f 73 65 28 73 ll.=.read......def.write_close(s
24720 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 elf):.........#.type:.().->.None
24740 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 4d 65 6d 6f 72 79 42 75 66 66 65 72 2c 20 73 65 6c .........super(MemoryBuffer,.sel
24760 66 29 2e 77 72 69 74 65 5f 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f f).write_close().........m2.bio_
24780 73 65 74 5f 6d 65 6d 5f 65 6f 66 5f 72 65 74 75 72 6e 28 73 65 6c 66 2e 62 69 6f 2c 20 30 29 0a set_mem_eof_return(self.bio,.0).
247a0 0a 20 20 20 20 63 6c 6f 73 65 20 3d 20 77 72 69 74 65 5f 63 6c 6f 73 65 0a 0a 0a 63 6c 61 73 73 .....close.=.write_close...class
247c0 20 46 69 6c 65 28 42 49 4f 29 3a 0a 20 20 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 .File(BIO):....."""Object.interf
247e0 61 63 65 20 74 6f 20 42 49 4f 5f 73 5f 70 79 66 64 2e 0a 0a 20 20 20 20 54 68 69 73 20 63 6c 61 ace.to.BIO_s_pyfd.......This.cla
24800 73 73 20 69 6e 74 65 72 66 61 63 65 73 20 50 79 74 68 6f 6e 20 74 6f 20 4f 70 65 6e 53 53 4c 20 ss.interfaces.Python.to.OpenSSL.
24820 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 65 78 70 65 63 74 20 42 49 4f 2e 20 46 6f 72 0a 20 functions.that.expect.BIO..For..
24840 20 20 20 67 65 6e 65 72 61 6c 20 66 69 6c 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 69 6e 20 ...general.file.manipulation.in.
24860 50 79 74 68 6f 6e 2c 20 75 73 65 20 50 79 74 68 6f 6e 27 73 20 62 75 69 6c 74 69 6e 20 66 69 6c Python,.use.Python's.builtin.fil
24880 65 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 e.object......"""......def.__ini
248a0 74 5f 5f 28 73 65 6c 66 2c 20 70 79 66 69 6c 65 2c 20 63 6c 6f 73 65 5f 70 79 66 69 6c 65 3d 31 t__(self,.pyfile,.close_pyfile=1
248c0 2c 20 6d 6f 64 65 3d 27 72 62 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 55 ,.mode='rb'):.........#.type:.(U
248e0 6e 69 6f 6e 5b 69 6f 2e 42 79 74 65 73 49 4f 2c 20 41 6e 79 53 74 72 5d 2c 20 69 6e 74 2c 20 41 nion[io.BytesIO,.AnyStr],.int,.A
24900 6e 79 53 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 46 69 6c nyStr).->.None.........super(Fil
24920 65 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 5f 70 79 66 72 65 65 3d e,.self).__init__(self,._pyfree=
24940 31 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 70 79 66 69 6c 65 1)..........if.isinstance(pyfile
24960 2c 20 73 69 78 2e 73 74 72 69 6e 67 5f 74 79 70 65 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ,.six.string_types):............
24980 20 70 79 66 69 6c 65 20 3d 20 6f 70 65 6e 28 70 79 66 69 6c 65 2c 20 6d 6f 64 65 29 0a 0a 20 20 .pyfile.=.open(pyfile,.mode)....
249a0 20 20 20 20 20 20 23 20 54 68 69 73 20 69 73 20 66 6f 72 20 64 6f 77 6e 77 61 72 64 20 63 6f 6d ......#.This.is.for.downward.com
249c0 70 61 74 69 62 69 6c 69 74 79 2c 20 62 75 74 20 49 20 64 6f 6e 27 74 20 74 68 69 6e 6b 2c 20 74 patibility,.but.I.don't.think,.t
249e0 68 61 74 20 69 74 20 69 73 0a 20 20 20 20 20 20 20 20 23 20 67 6f 6f 64 20 70 72 61 63 74 69 63 hat.it.is.........#.good.practic
24a00 65 20 74 6f 20 68 61 76 65 20 74 77 6f 20 68 61 6e 64 6c 65 73 20 66 6f 72 20 74 68 65 20 73 61 e.to.have.two.handles.for.the.sa
24a20 6d 65 20 66 69 6c 65 2e 20 57 68 61 74 73 20 61 62 6f 75 74 0a 20 20 20 20 20 20 20 20 23 20 63 me.file..Whats.about.........#.c
24a40 6f 6e 63 75 72 72 65 6e 74 20 77 72 69 74 65 20 61 63 63 65 73 73 3f 20 4c 61 73 74 20 77 72 69 oncurrent.write.access?.Last.wri
24a60 74 65 2c 20 6c 61 73 74 20 77 69 6e 73 3f 20 45 73 70 65 63 69 61 6c 6c 79 20 73 69 6e 63 65 20 te,.last.wins?.Especially.since.
24a80 50 79 33 0a 20 20 20 20 20 20 20 20 23 20 68 61 73 20 69 74 73 20 6f 77 6e 20 62 75 66 66 65 72 Py3.........#.has.its.own.buffer
24aa0 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 20 53 65 65 3a 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 .management..See:.........#.....
24ac0 20 20 20 20 23 20 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 33 ....#..https://docs.python.org/3
24ae0 2e 33 2f 63 2d 61 70 69 2f 66 69 6c 65 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 .3/c-api/file.html.........#....
24b00 20 20 20 20 20 70 79 66 69 6c 65 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 .....pyfile.flush().........self
24b20 2e 66 6e 61 6d 65 20 3d 20 70 79 66 69 6c 65 2e 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 73 65 6c .fname.=.pyfile.name.........sel
24b40 66 2e 70 79 66 69 6c 65 20 3d 20 70 79 66 69 6c 65 0a 20 20 20 20 20 20 20 20 23 20 42 65 20 77 f.pyfile.=.pyfile.........#.Be.w
24b60 61 72 79 20 6f 66 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6f 70 65 6e 73 73 ary.of.https://github.com/openss
24b80 6c 2f 6f 70 65 6e 73 73 6c 2f 70 75 6c 6c 2f 31 39 32 35 0a 20 20 20 20 20 20 20 20 23 20 42 49 l/openssl/pull/1925.........#.BI
24ba0 4f 5f 6e 65 77 5f 66 64 20 69 73 20 4e 45 56 45 52 20 74 6f 20 62 65 20 75 73 65 64 20 62 65 66 O_new_fd.is.NEVER.to.be.used.bef
24bc0 6f 72 65 20 4f 70 65 6e 53 53 4c 20 31 2e 31 2e 31 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 ore.OpenSSL.1.1.1.........if.has
24be0 61 74 74 72 28 6d 32 2c 20 22 62 69 6f 5f 6e 65 77 5f 70 79 66 64 22 29 3a 0a 20 20 20 20 20 20 attr(m2,."bio_new_pyfd"):.......
24c00 20 20 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 5f 70 79 66 64 ......self.bio.=.m2.bio_new_pyfd
24c20 28 70 79 66 69 6c 65 2e 66 69 6c 65 6e 6f 28 29 2c 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 (pyfile.fileno(),.m2.bio_noclose
24c40 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ).........else:.............self
24c60 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 5f 70 79 66 69 6c 65 28 70 79 66 69 6c 65 2c .bio.=.m2.bio_new_pyfile(pyfile,
24c80 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 .m2.bio_noclose)..........self.c
24ca0 6c 6f 73 65 5f 70 79 66 69 6c 65 20 3d 20 63 6c 6f 73 65 5f 70 79 66 69 6c 65 0a 20 20 20 20 20 lose_pyfile.=.close_pyfile......
24cc0 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 64 20 3d 20 46 61 6c 73 65 0a 0a 20 20 20 20 64 65 66 20 ...self.closed.=.False......def.
24ce0 66 6c 75 73 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 flush(self):.........#.type:.().
24d00 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 46 69 6c 65 2c 20 73 65 6c 66 ->.None.........super(File,.self
24d20 29 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 66 69 6c 65 2e 66 6c ).flush().........self.pyfile.fl
24d40 75 73 68 28 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 ush()......def.close(self):.....
24d60 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 ....#.type:.().->.None.........s
24d80 65 6c 66 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 46 69 6c 65 2c 20 elf.flush().........super(File,.
24da0 73 65 6c 66 29 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 63 6c self).close().........if.self.cl
24dc0 6f 73 65 5f 70 79 66 69 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 66 ose_pyfile:.............self.pyf
24de0 69 6c 65 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 64 65 66 20 72 65 73 65 74 28 73 65 6c 66 29 ile.close()......def.reset(self)
24e00 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 :.........#.type:.().->.int.....
24e20 20 20 20 20 22 22 22 53 65 74 20 74 68 65 20 62 69 6f 20 74 6f 20 69 74 73 20 69 6e 69 74 69 61 ...."""Set.the.bio.to.its.initia
24e40 6c 20 73 74 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 66 6f 72 l.state...........:return:.0.for
24e60 20 73 75 63 63 65 73 73 2c 20 61 6e 64 20 2d 31 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 .success,.and.-1.for.failure....
24e80 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 70 65 72 28 46 69 .....""".........return.super(Fi
24ea0 6c 65 2c 20 73 65 6c 66 29 2e 72 65 73 65 74 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c le,.self).reset()......def.__del
24ec0 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 63 6c __(self):.........if.not.self.cl
24ee0 6f 73 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 66 72 65 65 28 73 65 osed:.............m2.bio_free(se
24f00 6c 66 2e 62 69 6f 29 0a 0a 0a 64 65 66 20 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c lf.bio)...def.openfile(filename,
24f20 20 6d 6f 64 65 3d 27 72 62 27 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 .mode='rb'):.....#.type:.(AnyStr
24f40 2c 20 41 6e 79 53 74 72 29 20 2d 3e 20 46 69 6c 65 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 ,.AnyStr).->.File.....try:......
24f60 20 20 20 66 20 3d 20 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 6d 6f 64 65 29 0a 20 20 20 20 ...f.=.open(filename,.mode).....
24f80 65 78 63 65 70 74 20 49 4f 45 72 72 6f 72 20 61 73 20 65 78 3a 0a 20 20 20 20 20 20 20 20 72 61 except.IOError.as.ex:.........ra
24fa0 69 73 65 20 42 49 4f 45 72 72 6f 72 28 65 78 2e 61 72 67 73 29 0a 0a 20 20 20 20 72 65 74 75 72 ise.BIOError(ex.args)......retur
24fc0 6e 20 46 69 6c 65 28 66 29 0a 0a 0a 63 6c 61 73 73 20 49 4f 42 75 66 66 65 72 28 42 49 4f 29 3a n.File(f)...class.IOBuffer(BIO):
24fe0 0a 20 20 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 4f 5f ....."""Object.interface.to.BIO_
25000 66 5f 62 75 66 66 65 72 2e 0a 0a 20 20 20 20 49 74 73 20 70 72 69 6e 63 69 70 61 6c 20 66 75 6e f_buffer.......Its.principal.fun
25020 63 74 69 6f 6e 20 69 73 20 74 6f 20 62 65 20 42 49 4f 5f 70 75 73 68 28 29 27 65 64 20 6f 6e 20 ction.is.to.be.BIO_push()'ed.on.
25040 74 6f 70 20 6f 66 20 61 20 42 49 4f 5f 66 5f 73 73 6c 2c 20 73 6f 0a 20 20 20 20 74 68 61 74 20 top.of.a.BIO_f_ssl,.so.....that.
25060 6d 61 6b 65 66 69 6c 65 28 29 20 6f 66 20 73 61 69 64 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 53 makefile().of.said.underlying.SS
25080 4c 20 73 6f 63 6b 65 74 20 77 6f 72 6b 73 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f L.socket.works......"""......m2_
250a0 62 69 6f 5f 70 6f 70 20 3d 20 6d 32 2e 62 69 6f 5f 70 6f 70 0a 20 20 20 20 6d 32 5f 62 69 6f 5f bio_pop.=.m2.bio_pop.....m2_bio_
250c0 66 72 65 65 20 3d 20 6d 32 2e 62 69 6f 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e free.=.m2.bio_free......def.__in
250e0 69 74 5f 5f 28 73 65 6c 66 2c 20 75 6e 64 65 72 5f 62 69 6f 2c 20 6d 6f 64 65 3d 27 72 77 62 27 it__(self,.under_bio,.mode='rwb'
25100 2c 20 5f 70 79 66 72 65 65 3d 31 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 ,._pyfree=1):.........#.type:.(B
25120 49 4f 2c 20 73 74 72 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 75 IO,.str,.int).->.None.........su
25140 70 65 72 28 49 4f 42 75 66 66 65 72 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c per(IOBuffer,.self).__init__(sel
25160 66 2c 20 5f 70 79 66 72 65 65 3d 5f 70 79 66 72 65 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 f,._pyfree=_pyfree).........self
25180 2e 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f 5f 66 5f 62 75 66 66 65 72 .io.=.m2.bio_new(m2.bio_f_buffer
251a0 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 70 75 ()).........self.bio.=.m2.bio_pu
251c0 73 68 28 73 65 6c 66 2e 69 6f 2c 20 75 6e 64 65 72 5f 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 sh(self.io,.under_bio._ptr())...
251e0 20 20 20 20 20 20 23 20 54 68 69 73 20 72 65 66 65 72 65 6e 63 65 20 6b 65 65 70 73 20 74 68 65 ......#.This.reference.keeps.the
25200 20 75 6e 64 65 72 6c 79 69 6e 67 20 42 49 4f 20 61 6c 69 76 65 20 77 68 69 6c 65 20 77 65 27 72 .underlying.BIO.alive.while.we'r
25220 65 20 6e 6f 74 20 63 6c 6f 73 65 64 2e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 75 6e 64 65 e.not.closed..........self._unde
25240 72 5f 62 69 6f 20 3d 20 75 6e 64 65 72 5f 62 69 6f 0a 20 20 20 20 20 20 20 20 69 66 20 27 77 27 r_bio.=.under_bio.........if.'w'
25260 20 69 6e 20 6d 6f 64 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 77 72 69 74 65 .in.mode:.............self.write
25280 5f 63 6c 6f 73 65 64 20 3d 20 30 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 _closed.=.0.........else:.......
252a0 20 20 20 20 20 20 73 65 6c 66 2e 77 72 69 74 65 5f 63 6c 6f 73 65 64 20 3d 20 31 0a 0a 20 20 20 ......self.write_closed.=.1.....
252c0 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 .def.__del__(self):.........#.ty
252e0 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 pe:.().->.None.........if.getatt
25300 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 r(self,.'_pyfree',.0):..........
25320 20 20 20 73 65 6c 66 2e 6d 32 5f 62 69 6f 5f 70 6f 70 28 73 65 6c 66 2e 62 69 6f 29 0a 20 20 20 ...self.m2_bio_pop(self.bio)....
25340 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 69 6f 29 0a 0a .....self.m2_bio_free(self.io)..
25360 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 ....def.close(self):.........#.t
25380 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 42 49 4f 2e 63 6c 6f 73 ype:.().->.None.........BIO.clos
253a0 65 28 73 65 6c 66 29 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 65 72 53 74 72 65 61 6d 28 42 49 4f e(self)...class.CipherStream(BIO
253c0 29 3a 0a 20 20 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 ):....."""Object.interface.to.BI
253e0 4f 5f 66 5f 63 69 70 68 65 72 2e 22 22 22 0a 0a 20 20 20 20 53 41 4c 54 5f 4c 45 4e 20 3d 20 6d O_f_cipher."""......SALT_LEN.=.m
25400 32 2e 50 4b 43 53 35 5f 53 41 4c 54 5f 4c 45 4e 0a 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 70 6f 70 2.PKCS5_SALT_LEN......m2_bio_pop
25420 20 3d 20 6d 32 2e 62 69 6f 5f 70 6f 70 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 66 72 65 65 20 3d 20 .=.m2.bio_pop.....m2_bio_free.=.
25440 6d 32 2e 62 69 6f 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 m2.bio_free......def.__init__(se
25460 6c 66 2c 20 6f 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 29 lf,.obio):.........#.type:.(BIO)
25480 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 43 69 70 68 65 72 53 74 72 .->.None.........super(CipherStr
254a0 65 61 6d 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 5f 70 79 66 72 65 eam,.self).__init__(self,._pyfre
254c0 65 3d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6f 62 69 6f 20 3d 20 6f 62 69 6f 0a 20 20 e=1).........self.obio.=.obio...
254e0 20 20 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 ......self.bio.=.m2.bio_new(m2.b
25500 69 6f 5f 66 5f 63 69 70 68 65 72 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 io_f_cipher()).........self.clos
25520 65 64 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 ed.=.0......def.__del__(self):..
25540 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 .......#.type:.().->.None.......
25560 20 20 69 66 20 6e 6f 74 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 63 6c 6f 73 65 64 27 2c ..if.not.getattr(self,.'closed',
25580 20 31 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 28 29 0a 0a 20 .1):.............self.close()...
255a0 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 ...def.close(self):.........#.ty
255c0 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 62 pe:.().->.None.........self.m2_b
255e0 69 6f 5f 70 6f 70 28 73 65 6c 66 2e 62 69 6f 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 io_pop(self.bio).........self.m2
25600 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 62 69 6f 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 _bio_free(self.bio).........self
25620 2e 63 6c 6f 73 65 64 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 63 6c 6f 73 65 .closed.=.1......def.write_close
25640 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f (self):.........#.type:.().->.No
25660 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6f 62 69 6f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 ne.........self.obio.write_close
25680 28 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 69 70 68 65 72 28 73 65 6c 66 2c 20 61 6c 67 ()......def.set_cipher(self,.alg
256a0 6f 2c 20 6b 65 79 2c 20 69 76 2c 20 6f 70 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a o,.key,.iv,.op):.........#.type:
256c0 20 28 73 74 72 2c 20 41 6e 79 53 74 72 2c 20 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 4e .(str,.AnyStr,.AnyStr,.int).->.N
256e0 6f 6e 65 0a 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c one.........cipher.=.getattr(m2,
25700 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 65 72 20 69 .algo,.None).........if.cipher.i
25720 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 s.None:.............raise.ValueE
25740 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 63 69 70 68 65 72 27 2c 20 61 6c 67 6f 29 0a 20 20 20 rror('unknown.cipher',.algo)....
25760 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 .....else:.............if.not.is
25780 69 6e 73 74 61 6e 63 65 28 6b 65 79 2c 20 62 79 74 65 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 instance(key,.bytes):...........
257a0 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 0a 20 ......key.=.key.encode('utf8')..
257c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 69 76 2c ...........if.not.isinstance(iv,
257e0 20 62 79 74 65 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 76 20 3d 20 69 76 .bytes):.................iv.=.iv
25800 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 73 .encode('utf8').........m2.bio_s
25820 65 74 5f 63 69 70 68 65 72 28 73 65 6c 66 2e 62 69 6f 2c 20 63 69 70 68 65 72 28 29 2c 20 6b 65 et_cipher(self.bio,.cipher(),.ke
25840 79 2c 20 69 76 2c 20 69 6e 74 28 6f 70 29 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 70 y,.iv,.int(op)).........m2.bio_p
25860 75 73 68 28 73 65 6c 66 2e 62 69 6f 2c 20 73 65 6c 66 2e 6f 62 69 6f 2e 5f 70 74 72 28 29 29 0a ush(self.bio,.self.obio._ptr()).
25880 0a 0a 63 6c 61 73 73 20 53 53 4c 42 69 6f 28 42 49 4f 29 3a 0a 20 20 20 20 22 22 22 4f 62 6a 65 ..class.SSLBio(BIO):....."""Obje
258a0 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 4f 5f 66 5f 73 73 6c 2e 22 22 22 0a 0a 20 ct.interface.to.BIO_f_ssl."""...
258c0 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 5f 70 79 66 72 65 65 3d 31 29 ...def.__init__(self,._pyfree=1)
258e0 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a :.........#.type:.(int).->.None.
25900 20 20 20 20 20 20 20 20 73 75 70 65 72 28 53 53 4c 42 69 6f 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e ........super(SSLBio,.self).__in
25920 69 74 5f 5f 28 73 65 6c 66 2c 20 5f 70 79 66 72 65 65 3d 5f 70 79 66 72 65 65 29 0a 20 20 20 20 it__(self,._pyfree=_pyfree).....
25940 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f ....self.bio.=.m2.bio_new(m2.bio
25960 5f 66 5f 73 73 6c 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 64 20 3d 20 _f_ssl()).........self.closed.=.
25980 30 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 73 6c 28 73 65 6c 66 2c 20 63 6f 6e 6e 2c 20 63 0......def.set_ssl(self,.conn,.c
259a0 6c 6f 73 65 5f 66 6c 61 67 3d 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 29 3a 0a 20 20 20 20 20 lose_flag=m2.bio_noclose):......
259c0 20 20 20 23 20 74 79 70 65 3a 20 28 43 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 6e 74 29 20 2d 3e 20 ...#.type:.(Connection,.int).->.
259e0 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 73 20 74 68 None.........""".........Sets.th
25a00 65 20 62 69 6f 20 74 6f 20 74 68 65 20 53 53 4c 20 70 6f 69 6e 74 65 72 20 77 68 69 63 68 20 69 e.bio.to.the.SSL.pointer.which.i
25a20 73 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 63 6f 6e 6e 65 s.........contained.in.the.conne
25a40 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 ction.object..........""".......
25a60 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 30 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 ..self._pyfree.=.0.........m2.bi
25a80 6f 5f 73 65 74 5f 73 73 6c 28 73 65 6c 66 2e 62 69 6f 2c 20 63 6f 6e 6e 2e 73 73 6c 2c 20 63 6c o_set_ssl(self.bio,.conn.ssl,.cl
25aa0 6f 73 65 5f 66 6c 61 67 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 6c 6f 73 65 5f 66 6c 61 67 20 ose_flag).........if.close_flag.
25ac0 3d 3d 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 ==.m2.bio_noclose:.............c
25ae0 6f 6e 6e 2e 73 65 74 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 28 6d 32 2e 62 69 6f 5f 63 6c onn.set_ssl_close_flag(m2.bio_cl
25b00 6f 73 65 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 68 61 6e 64 73 68 61 6b 65 28 73 65 6c 66 29 ose)......def.do_handshake(self)
25b20 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 :.........#.type:.().->.int.....
25b40 20 20 20 20 22 22 22 44 6f 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65 2e 0a 0a 20 20 20 20 20 20 ...."""Do.the.handshake.........
25b60 20 20 52 65 74 75 72 6e 20 31 20 69 66 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65 20 63 6f 6d 70 ..Return.1.if.the.handshake.comp
25b80 6c 65 74 65 73 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 30 20 6f 72 20 61 20 6e 65 67 61 letes.........Return.0.or.a.nega
25ba0 74 69 76 65 20 6e 75 6d 62 65 72 20 69 66 20 74 68 65 72 65 20 69 73 20 61 20 70 72 6f 62 6c 65 tive.number.if.there.is.a.proble
25bc0 6d 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e m.........""".........return.m2.
25be0 62 69 6f 5f 64 6f 5f 68 61 6e 64 73 68 61 6b 65 28 73 65 6c 66 2e 62 69 6f 29 0a 94 7d 94 28 8c bio_do_handshake(self.bio)..}.(.
25c00 08 42 49 4f 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 10 4b 11 87 94 8c 0c 42 49 4f 2e 5f 5f 69 6e 69 .BIOError.j}...K.K.....BIO.__ini
25c20 74 5f 5f 94 6a 74 1f 00 00 4b 1c 4b 22 87 94 8c 0b 42 49 4f 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f t__.jt...K.K"....BIO.__del__.jt.
25c40 00 00 4b 24 4b 26 87 94 8c 08 42 49 4f 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 28 4b 29 87 94 8c 0a ..K$K&....BIO._ptr.jt...K(K)....
25c60 42 49 4f 2e 66 69 6c 65 6e 6f 94 6a 74 1f 00 00 4b 2e 4b 30 87 94 8c 0c 42 49 4f 2e 72 65 61 64 BIO.fileno.jt...K.K0....BIO.read
25c80 61 62 6c 65 94 6a 74 1f 00 00 4b 32 4b 34 87 94 8c 08 42 49 4f 2e 72 65 61 64 94 6a 74 1f 00 00 able.jt...K2K4....BIO.read.jt...
25ca0 4b 36 4b 47 87 94 8c 0c 42 49 4f 2e 72 65 61 64 6c 69 6e 65 94 6a 74 1f 00 00 4b 49 4b 4f 87 94 K6KG....BIO.readline.jt...KIKO..
25cc0 8c 0d 42 49 4f 2e 72 65 61 64 6c 69 6e 65 73 94 6a 74 1f 00 00 4b 51 4b 5b 87 94 8c 0d 42 49 4f ..BIO.readlines.jt...KQK[....BIO
25ce0 2e 77 72 69 74 65 61 62 6c 65 94 6a 74 1f 00 00 4b 5d 4b 5f 87 94 8c 09 42 49 4f 2e 77 72 69 74 .writeable.jt...K]K_....BIO.writ
25d00 65 94 6a 74 1f 00 00 4b 61 4b 6c 87 94 8c 0f 42 49 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a e.jt...KaKl....BIO.write_close.j
25d20 74 1f 00 00 4b 6e 4b 70 87 94 8c 09 42 49 4f 2e 66 6c 75 73 68 94 6a 74 1f 00 00 4b 72 4b 78 87 t...KnKp....BIO.flush.jt...KrKx.
25d40 94 8c 09 42 49 4f 2e 72 65 73 65 74 94 6a 74 1f 00 00 4b 7a 4b 80 87 94 8c 09 42 49 4f 2e 63 6c ...BIO.reset.jt...KzK.....BIO.cl
25d60 6f 73 65 94 6a 74 1f 00 00 4b 82 4b 86 87 94 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 74 72 ose.jt...K.K.....BIO.should_retr
25d80 79 94 6a 74 1f 00 00 4b 88 4b 8f 87 94 8c 0f 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 61 64 94 6a y.jt...K.K.....BIO.should_read.j
25da0 74 1f 00 00 4b 91 4b 95 87 94 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 77 72 69 74 65 94 6a 74 1f t...K.K.....BIO.should_write.jt.
25dc0 00 00 4b 97 4b 9a 87 94 8c 08 42 49 4f 2e 74 65 6c 6c 94 6a 74 1f 00 00 4b 9c 4b 9e 87 94 8c 08 ..K.K.....BIO.tell.jt...K.K.....
25de0 42 49 4f 2e 73 65 65 6b 94 6a 74 1f 00 00 4b a0 4b a2 87 94 8c 0d 42 49 4f 2e 5f 5f 65 6e 74 65 BIO.seek.jt...K.K.....BIO.__ente
25e00 72 5f 5f 94 6a 74 1f 00 00 4b a4 4b a5 87 94 8c 0c 42 49 4f 2e 5f 5f 65 78 69 74 5f 5f 94 6a 74 r__.jt...K.K.....BIO.__exit__.jt
25e20 1f 00 00 4b a7 4b a9 87 94 8c 03 42 49 4f 94 6a 7d 1f 00 00 4b 17 4b a9 87 94 8c 15 4d 65 6d 6f ...K.K.....BIO.j}...K.K.....Memo
25e40 72 79 42 75 66 66 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b b6 4b bf 87 94 8c 14 4d ryBuffer.__init__.jt...K.K.....M
25e60 65 6d 6f 72 79 42 75 66 66 65 72 2e 5f 5f 6c 65 6e 5f 5f 94 6a 74 1f 00 00 4b c1 4b c3 87 94 8c emoryBuffer.__len__.jt...K.K....
25e80 11 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 94 6a 74 1f 00 00 4b c5 4b cc 87 94 8c 18 .MemoryBuffer.read.jt...K.K.....
25ea0 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 74 1f 00 00 4b d1 MemoryBuffer.write_close.jt...K.
25ec0 4b d4 87 94 8c 0c 4d 65 6d 6f 72 79 42 75 66 66 65 72 94 6a 7d 1f 00 00 4b ac 4b d6 87 94 8c 0d K.....MemoryBuffer.j}...K.K.....
25ee0 46 69 6c 65 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b e0 4b f9 87 94 8c 0a 46 69 6c 65 2e File.__init__.jt...K.K.....File.
25f00 66 6c 75 73 68 94 6a 74 1f 00 00 4b fb 4b fe 87 94 8c 0a 46 69 6c 65 2e 63 6c 6f 73 65 94 6a 74 flush.jt...K.K.....File.close.jt
25f20 1f 00 00 4d 00 01 4d 05 01 87 94 8c 0a 46 69 6c 65 2e 72 65 73 65 74 94 6a 74 1f 00 00 4d 07 01 ...M..M......File.reset.jt...M..
25f40 4d 0d 01 87 94 8c 0c 46 69 6c 65 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d 0f 01 4d 11 01 87 M......File.__del__.jt...M..M...
25f60 94 8c 04 46 69 6c 65 94 6a 7d 1f 00 00 4b d9 4d 11 01 87 94 8c 08 6f 70 65 6e 66 69 6c 65 94 6a ...File.j}...K.M......openfile.j
25f80 74 1f 00 00 4d 14 01 4d 1b 01 87 94 8c 11 49 4f 42 75 66 66 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 t...M..M......IOBuffer.__init__.
25fa0 6a 74 1f 00 00 4d 28 01 4d 32 01 87 94 8c 10 49 4f 42 75 66 66 65 72 2e 5f 5f 64 65 6c 5f 5f 94 jt...M(.M2.....IOBuffer.__del__.
25fc0 6a 74 1f 00 00 4d 34 01 4d 38 01 87 94 8c 0e 49 4f 42 75 66 66 65 72 2e 63 6c 6f 73 65 94 6a 74 jt...M4.M8.....IOBuffer.close.jt
25fe0 1f 00 00 4d 3a 01 4d 3c 01 87 94 8c 08 49 4f 42 75 66 66 65 72 94 6a 7d 1f 00 00 4d 1e 01 4d 3c ...M:.M<.....IOBuffer.j}...M..M<
26000 01 87 94 8c 15 43 69 70 68 65 72 53 74 72 65 61 6d 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 .....CipherStream.__init__.jt...
26020 4d 47 01 4d 4c 01 87 94 8c 14 43 69 70 68 65 72 53 74 72 65 61 6d 2e 5f 5f 64 65 6c 5f 5f 94 6a MG.ML.....CipherStream.__del__.j
26040 74 1f 00 00 4d 4e 01 4d 51 01 87 94 8c 12 43 69 70 68 65 72 53 74 72 65 61 6d 2e 63 6c 6f 73 65 t...MN.MQ.....CipherStream.close
26060 94 6a 74 1f 00 00 4d 53 01 4d 57 01 87 94 8c 18 43 69 70 68 65 72 53 74 72 65 61 6d 2e 77 72 69 .jt...MS.MW.....CipherStream.wri
26080 74 65 5f 63 6c 6f 73 65 94 6a 74 1f 00 00 4d 59 01 4d 5b 01 87 94 8c 17 43 69 70 68 65 72 53 74 te_close.jt...MY.M[.....CipherSt
260a0 72 65 61 6d 2e 73 65 74 5f 63 69 70 68 65 72 94 6a 74 1f 00 00 4d 5d 01 4d 68 01 87 94 8c 0c 43 ream.set_cipher.jt...M].Mh.....C
260c0 69 70 68 65 72 53 74 72 65 61 6d 94 6a 7d 1f 00 00 4d 3f 01 4d 68 01 87 94 8c 0f 53 53 4c 42 69 ipherStream.j}...M?.Mh.....SSLBi
260e0 6f 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 6e 01 4d 72 01 87 94 8c 0e 53 53 4c 42 69 6f o.__init__.jt...Mn.Mr.....SSLBio
26100 2e 73 65 74 5f 73 73 6c 94 6a 74 1f 00 00 4d 74 01 4d 7d 01 87 94 8c 13 53 53 4c 42 69 6f 2e 64 .set_ssl.jt...Mt.M}.....SSLBio.d
26120 6f 5f 68 61 6e 64 73 68 61 6b 65 94 6a 74 1f 00 00 4d 7f 01 4d 86 01 87 94 8c 06 53 53 4c 42 69 o_handshake.jt...M..M......SSLBi
26140 6f 94 6a 7d 1f 00 00 4d 6b 01 4d 86 01 87 94 75 7d 94 28 8c 03 42 49 4f 94 6a 53 02 00 00 8c 09 o.j}...Mk.M....u}.(..BIO.jS.....
26160 42 49 4f 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 0a 42 49 4f 2e 66 69 6c 65 6e 6f 94 6a 53 02 00 BIO.close.jS.....BIO.fileno.jS..
26180 00 8c 09 42 49 4f 2e 66 6c 75 73 68 94 6a 53 02 00 00 8c 08 42 49 4f 2e 72 65 61 64 94 6a 53 02 ...BIO.flush.jS.....BIO.read.jS.
261a0 00 00 8c 0c 42 49 4f 2e 72 65 61 64 61 62 6c 65 94 6a 53 02 00 00 8c 0c 42 49 4f 2e 72 65 61 64 ....BIO.readable.jS.....BIO.read
261c0 6c 69 6e 65 94 6a 53 02 00 00 8c 0d 42 49 4f 2e 72 65 61 64 6c 69 6e 65 73 94 6a 53 02 00 00 8c line.jS.....BIO.readlines.jS....
261e0 09 42 49 4f 2e 72 65 73 65 74 94 6a 53 02 00 00 8c 08 42 49 4f 2e 73 65 65 6b 94 6a 53 02 00 00 .BIO.reset.jS.....BIO.seek.jS...
26200 8c 0f 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 61 64 94 6a 53 02 00 00 8c 10 42 49 4f 2e 73 68 6f ..BIO.should_read.jS.....BIO.sho
26220 75 6c 64 5f 72 65 74 72 79 94 6a 53 02 00 00 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 77 72 69 74 uld_retry.jS.....BIO.should_writ
26240 65 94 6a 53 02 00 00 8c 08 42 49 4f 2e 74 65 6c 6c 94 6a 53 02 00 00 8c 09 42 49 4f 2e 77 72 69 e.jS.....BIO.tell.jS.....BIO.wri
26260 74 65 94 6a 53 02 00 00 8c 0f 42 49 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 53 02 00 00 8c te.jS.....BIO.write_close.jS....
26280 0d 42 49 4f 2e 77 72 69 74 65 61 62 6c 65 94 6a 53 02 00 00 8c 08 42 49 4f 45 72 72 6f 72 94 6a .BIO.writeable.jS.....BIOError.j
262a0 53 02 00 00 8c 0c 43 69 70 68 65 72 53 74 72 65 61 6d 94 6a 53 02 00 00 8c 12 43 69 70 68 65 72 S.....CipherStream.jS.....Cipher
262c0 53 74 72 65 61 6d 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 17 43 69 70 68 65 72 53 74 72 65 61 6d Stream.close.jS.....CipherStream
262e0 2e 73 65 74 5f 63 69 70 68 65 72 94 6a 53 02 00 00 8c 18 43 69 70 68 65 72 53 74 72 65 61 6d 2e .set_cipher.jS.....CipherStream.
26300 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 53 02 00 00 8c 04 46 69 6c 65 94 6a 53 02 00 00 8c 0a 46 write_close.jS.....File.jS.....F
26320 69 6c 65 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 0a 46 69 6c 65 2e 66 6c 75 73 68 94 6a 53 02 00 ile.close.jS.....File.flush.jS..
26340 00 8c 0a 46 69 6c 65 2e 72 65 73 65 74 94 6a 53 02 00 00 8c 08 49 4f 42 75 66 66 65 72 94 6a 53 ...File.reset.jS.....IOBuffer.jS
26360 02 00 00 8c 0e 49 4f 42 75 66 66 65 72 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 0c 4d 65 6d 6f 72 .....IOBuffer.close.jS.....Memor
26380 79 42 75 66 66 65 72 94 6a 53 02 00 00 8c 11 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 yBuffer.jS.....MemoryBuffer.read
263a0 94 6a 53 02 00 00 8c 18 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 77 72 69 74 65 5f 63 6c 6f 73 65 .jS.....MemoryBuffer.write_close
263c0 94 6a 53 02 00 00 8c 06 53 53 4c 42 69 6f 94 6a 53 02 00 00 8c 13 53 53 4c 42 69 6f 2e 64 6f 5f .jS.....SSLBio.jS.....SSLBio.do_
263e0 68 61 6e 64 73 68 61 6b 65 94 6a 53 02 00 00 8c 0e 53 53 4c 42 69 6f 2e 73 65 74 5f 73 73 6c 94 handshake.jS.....SSLBio.set_ssl.
26400 6a 53 02 00 00 8c 08 6f 70 65 6e 66 69 6c 65 94 6a 53 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f jS.....openfile.jS...u..M2Crypto
26420 2e 42 49 4f 94 74 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 42 4e 94 28 58 83 06 00 00 66 72 6f 6d 20 .BIO.t...M2Crypto.BN.(X....from.
26440 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 __future__.import.absolute_impor
26460 74 0a 0a 22 22 22 0a 4d 32 43 72 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e t..""".M2Crypto.wrapper.for.Open
26480 53 53 4c 20 42 4e 20 28 42 49 47 4e 55 4d 29 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 SSL.BN.(BIGNUM).API...Copyright.
264a0 28 63 29 20 32 30 30 35 20 4f 70 65 6e 20 53 6f 75 72 63 65 20 41 70 70 6c 69 63 61 74 69 6f 6e (c).2005.Open.Source.Application
264c0 73 20 46 6f 75 6e 64 61 74 69 6f 6e 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 s.Foundation..All.rights.reserve
264e0 64 2e 0a 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 6d 32 2c d.."""..from.M2Crypto.import.m2,
26500 20 75 74 69 6c 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d .util.if.util.py27plus:.....from
26520 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a .typing.import.Optional..#.noqa.
26540 0a 0a 64 65 66 20 72 61 6e 64 28 62 69 74 73 2c 20 74 6f 70 3d 2d 31 2c 20 62 6f 74 74 6f 6d 3d ..def.rand(bits,.top=-1,.bottom=
26560 30 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 69 6e 74 29 20 0):.....#.type:.(int,.int,.int).
26580 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 0a 20 20 20 20 22 22 22 0a 20 20 20 20 47 65 6e ->.Optional[int].....""".....Gen
265a0 65 72 61 74 65 20 63 72 79 70 74 6f 67 72 61 70 68 69 63 61 6c 6c 79 20 73 74 72 6f 6e 67 20 72 erate.cryptographically.strong.r
265c0 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 74 73 3a 20 andom.number.......:param.bits:.
265e0 20 20 4c 65 6e 67 74 68 20 6f 66 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 69 6e 20 62 69 74 ..Length.of.random.number.in.bit
26600 73 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 74 6f 70 3a 20 20 20 20 49 66 20 2d 31 2c 20 74 68 65 s......:param.top:....If.-1,.the
26620 20 6d 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74 20 63 61 6e 20 62 65 20 30 2e 20 .most.significant.bit.can.be.0..
26640 49 66 20 30 2c 20 74 68 65 20 6d 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 If.0,.the.most..................
26660 20 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74 20 69 73 20 31 2c 20 61 6e 64 20 69 66 20 31 ..significant.bit.is.1,.and.if.1
26680 2c 20 74 68 65 20 74 77 6f 20 6d 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 0a 20 20 20 20 20 ,.the.two.most.significant......
266a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 74 73 20 77 69 6c 6c 20 62 65 20 31 2e 0a 20 20 ..............bits.will.be.1....
266c0 20 20 3a 70 61 72 61 6d 20 62 6f 74 74 6f 6d 3a 20 49 66 20 62 6f 74 74 6f 6d 20 69 73 20 74 72 ..:param.bottom:.If.bottom.is.tr
266e0 75 65 2c 20 74 68 65 20 6e 75 6d 62 65 72 20 77 69 6c 6c 20 62 65 20 6f 64 64 2e 0a 20 20 20 20 ue,.the.number.will.be.odd......
26700 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 6e 5f 72 61 6e 64 28 62 69 74 73 2c 20 """.....return.m2.bn_rand(bits,.
26720 74 6f 70 2c 20 62 6f 74 74 6f 6d 29 0a 0a 0a 64 65 66 20 72 61 6e 64 5f 72 61 6e 67 65 28 72 61 top,.bottom)...def.rand_range(ra
26740 6e 67 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 nge):.....#.type:.(int).->.int..
26760 20 20 20 22 22 22 0a 20 20 20 20 47 65 6e 65 72 61 74 65 20 61 20 72 61 6e 64 6f 6d 20 6e 75 6d ...""".....Generate.a.random.num
26780 62 65 72 20 69 6e 20 61 20 72 61 6e 67 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 72 61 6e 67 ber.in.a.range.......:param.rang
267a0 65 3a 20 55 70 70 65 72 20 6c 69 6d 69 74 20 66 6f 72 20 72 61 6e 67 65 2e 0a 20 20 20 20 3a 72 e:.Upper.limit.for.range......:r
267c0 65 74 75 72 6e 3a 20 20 20 20 20 20 41 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 69 6e 20 74 eturn:......A.random.number.in.t
267e0 68 65 20 72 61 6e 67 65 20 5b 30 2c 20 72 61 6e 67 65 29 0a 20 20 20 20 22 22 22 0a 20 20 20 20 he.range.[0,.range).....""".....
26800 72 65 74 75 72 6e 20 6d 32 2e 62 6e 5f 72 61 6e 64 5f 72 61 6e 67 65 28 72 61 6e 67 65 29 0a 0a return.m2.bn_rand_range(range)..
26820 0a 64 65 66 20 72 61 6e 64 66 6e 61 6d 65 28 6c 65 6e 67 74 68 29 3a 0a 20 20 20 20 23 20 74 79 .def.randfname(length):.....#.ty
26840 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 65 74 pe:.(int).->.str.....""".....Ret
26860 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20 66 69 6c 65 6e 61 6d 65 2c 20 77 68 69 63 68 20 69 73 20 urn.a.random.filename,.which.is.
26880 73 69 6d 70 6c 79 20 61 20 73 74 72 69 6e 67 20 77 68 65 72 65 20 61 6c 6c 0a 20 20 20 20 74 68 simply.a.string.where.all.....th
268a0 65 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 66 72 6f 6d 20 74 68 65 20 73 65 74 20 5b 61 e.characters.are.from.the.set.[a
268c0 2d 7a 41 2d 5a 30 2d 39 5d 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 6c 65 6e 67 74 68 3a 20 4c -zA-Z0-9].......:param.length:.L
268e0 65 6e 67 74 68 20 6f 66 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 72 65 74 75 72 6e 2e 0a 20 20 20 ength.of.filename.to.return.....
26900 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 72 61 6e 64 6f 6d 20 66 69 6c 65 6e 61 6d 65 20 .:return:.......random.filename.
26920 73 74 72 69 6e 67 0a 20 20 20 20 22 22 22 0a 20 20 20 20 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e string.....""".....import.warnin
26940 67 73 0a 20 20 20 20 77 61 72 6e 69 6e 67 73 2e 77 61 72 6e 28 0a 20 20 20 20 20 20 20 20 22 44 gs.....warnings.warn(........."D
26960 6f 6e 27 74 20 75 73 65 20 42 4e 2e 72 61 6e 64 66 6e 61 6d 65 28 29 2c 20 75 73 65 20 74 65 6d on't.use.BN.randfname(),.use.tem
26980 70 66 69 6c 65 20 6d 65 74 68 6f 64 73 20 69 6e 73 74 65 61 64 2e 22 2c 0a 20 20 20 20 20 20 20 pfile.methods.instead.",........
269a0 20 44 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e 67 2c 20 73 74 61 63 6b 6c 65 76 65 6c 3d .DeprecationWarning,.stacklevel=
269c0 32 29 0a 20 20 20 20 6c 65 74 74 65 72 73 20 3d 20 27 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 2).....letters.=.'abcdefghijklmn
269e0 6f 70 71 72 73 74 75 76 77 78 79 7a 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 opqrstuvwxyzABCDEFGHIJKLMNOPQRST
26a00 55 56 57 58 59 5a 30 31 32 33 34 35 36 37 38 39 30 27 0a 20 20 20 20 6c 65 74 74 65 72 73 4c 65 UVWXYZ01234567890'.....lettersLe
26a20 6e 20 3d 20 6c 65 6e 28 6c 65 74 74 65 72 73 29 0a 20 20 20 20 66 6e 61 6d 65 20 3d 20 5b 5d 20 n.=.len(letters).....fname.=.[].
26a40 20 23 20 74 79 70 65 3a 20 6c 69 73 74 0a 20 20 20 20 66 6f 72 20 78 20 69 6e 20 72 61 6e 67 65 .#.type:.list.....for.x.in.range
26a60 28 6c 65 6e 67 74 68 29 3a 0a 20 20 20 20 20 20 20 20 66 6e 61 6d 65 20 2b 3d 20 5b 6c 65 74 74 (length):.........fname.+=.[lett
26a80 65 72 73 5b 6d 32 2e 62 6e 5f 72 61 6e 64 5f 72 61 6e 67 65 28 6c 65 74 74 65 72 73 4c 65 6e 29 ers[m2.bn_rand_range(lettersLen)
26aa0 5d 5d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 27 27 2e 6a 6f 69 6e 28 66 6e 61 6d 65 29 0a 94 7d ]]......return.''.join(fname)..}
26ac0 94 28 8c 04 72 61 6e 64 94 6a 74 1f 00 00 4b 0e 4b 19 87 94 8c 0a 72 61 6e 64 5f 72 61 6e 67 65 .(..rand.jt...K.K.....rand_range
26ae0 94 6a 74 1f 00 00 4b 1c 4b 24 87 94 8c 09 72 61 6e 64 66 6e 61 6d 65 94 6a 74 1f 00 00 4b 27 4b .jt...K.K$....randfname.jt...K'K
26b00 3a 87 94 75 7d 94 28 8c 04 72 61 6e 64 94 6a 53 02 00 00 8c 0a 72 61 6e 64 5f 72 61 6e 67 65 94 :..u}.(..rand.jS.....rand_range.
26b20 6a 53 02 00 00 8c 09 72 61 6e 64 66 6e 61 6d 65 94 6a 53 02 00 00 75 8c 0b 4d 32 43 72 79 70 74 jS.....randfname.jS...u..M2Crypt
26b40 6f 2e 42 4e 94 74 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 44 48 94 28 58 82 0b 00 00 66 72 6f 6d 20 o.BN.t...M2Crypto.DH.(X....from.
26b60 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 __future__.import.absolute_impor
26b80 74 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 t.."""M2Crypto.wrapper.for.OpenS
26ba0 53 4c 20 44 48 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 SL.DH.API...Copyright.(c).1999-2
26bc0 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 003.Ng.Pheng.Siong..All.rights.r
26be0 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 eserved."""..from.M2Crypto.impor
26c00 74 20 42 49 4f 2c 20 6d 32 2c 20 75 74 69 6c 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 75 74 t.BIO,.m2,.util.from.M2Crypto.ut
26c20 69 6c 20 69 6d 70 6f 72 74 20 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 0a 69 66 20 75 il.import.genparam_callback.if.u
26c40 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d til.py27plus:.....from.typing.im
26c60 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 20 20 23 20 6e 6f 71 61 0a 0a 0a port.AnyStr,.Callable..#.noqa...
26c80 63 6c 61 73 73 20 44 48 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 class.DHError(Exception):.....pa
26ca0 73 73 0a 0a 6d 32 2e 64 68 5f 69 6e 69 74 28 44 48 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 ss..m2.dh_init(DHError)...class.
26cc0 44 48 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 DH(object):....."""Object.interf
26ce0 61 63 65 20 74 6f 20 74 68 65 20 44 69 66 66 69 65 2d 48 65 6c 6c 6d 61 6e 20 6b 65 79 20 65 78 ace.to.the.Diffie-Hellman.key.ex
26d00 63 68 61 6e 67 65 20 70 72 6f 74 6f 63 6f 6c 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 change.protocol......"""......m2
26d20 5f 64 68 5f 66 72 65 65 20 3d 20 6d 32 2e 64 68 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f _dh_free.=.m2.dh_free......def._
26d40 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 68 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 _init__(self,.dh,._pyfree=0):...
26d60 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f ......#.type:.(bytes,.int).->.No
26d80 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 68 5f 74 79 70 65 5f 63 68 65 ne.........assert.m2.dh_type_che
26da0 63 6b 28 64 68 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 68 20 3d 20 64 68 0a 20 20 20 20 ck(dh).........self.dh.=.dh.....
26dc0 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 ....self._pyfree.=._pyfree......
26de0 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 def.__del__(self):.........#.typ
26e00 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 e:.().->.None.........if.getattr
26e20 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 (self,.'_pyfree',.0):...........
26e40 20 20 73 65 6c 66 2e 6d 32 5f 64 68 5f 66 72 65 65 28 73 65 6c 66 2e 64 68 29 0a 0a 20 20 20 20 ..self.m2_dh_free(self.dh)......
26e60 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 def.__len__(self):.........#.typ
26e80 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 e:.().->.int.........assert.m2.d
26ea0 68 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 68 29 2c 20 22 27 64 68 27 20 74 79 70 h_type_check(self.dh),."'dh'.typ
26ec0 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 6e 74 28 6d 32 2e 64 e.error".........return.int(m2.d
26ee0 68 5f 73 69 7a 65 28 73 65 6c 66 2e 64 68 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 61 h_size(self.dh))......def.__geta
26f00 74 74 72 5f 5f 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ttr__(self,.name):.........#.typ
26f20 65 3a 20 28 73 74 72 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d e:.(str).->.bytes.........if.nam
26f40 65 20 69 6e 20 28 27 70 27 2c 20 27 67 27 2c 20 27 70 75 62 27 2c 20 27 70 72 69 76 27 29 3a 0a e.in.('p',.'g',.'pub',.'priv'):.
26f60 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c ............method.=.getattr(m2,
26f80 20 27 64 68 5f 67 65 74 5f 25 73 27 20 25 20 28 6e 61 6d 65 2c 29 29 0a 20 20 20 20 20 20 20 20 .'dh_get_%s'.%.(name,)).........
26fa0 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 68 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 ....assert.m2.dh_type_check(self
26fc0 2e 64 68 29 2c 20 22 27 64 68 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 .dh),."'dh'.type.error".........
26fe0 20 20 20 20 72 65 74 75 72 6e 20 6d 65 74 68 6f 64 28 73 65 6c 66 2e 64 68 29 0a 20 20 20 20 20 ....return.method(self.dh)......
27000 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 41 74 74 72 69 ...else:.............raise.Attri
27020 62 75 74 65 45 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 65 74 61 74 74 72 5f 5f 28 73 buteError......def.__setattr__(s
27040 65 6c 66 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 elf,.name,.value):.........#.typ
27060 65 3a 20 28 73 74 72 2c 20 62 79 74 65 73 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 e:.(str,.bytes).->.bytes........
27080 20 69 66 20 6e 61 6d 65 20 69 6e 20 28 27 70 27 2c 20 27 67 27 29 3a 0a 20 20 20 20 20 20 20 20 .if.name.in.('p',.'g'):.........
270a0 20 20 20 20 72 61 69 73 65 20 44 48 45 72 72 6f 72 28 27 73 65 74 20 28 70 2c 20 67 29 20 76 69 ....raise.DHError('set.(p,.g).vi
270c0 61 20 73 65 74 5f 70 61 72 61 6d 73 28 29 27 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 6e 61 a.set_params()').........elif.na
270e0 6d 65 20 69 6e 20 28 27 70 75 62 27 2c 20 27 70 72 69 76 27 29 3a 0a 20 20 20 20 20 20 20 20 20 me.in.('pub',.'priv'):..........
27100 20 20 20 72 61 69 73 65 20 44 48 45 72 72 6f 72 28 27 67 65 6e 65 72 61 74 65 20 28 70 75 62 2c ...raise.DHError('generate.(pub,
27120 20 70 72 69 76 29 20 76 69 61 20 67 65 6e 5f 6b 65 79 28 29 27 29 0a 20 20 20 20 20 20 20 20 65 .priv).via.gen_key()').........e
27140 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 5f 64 69 63 74 5f 5f 5b 6e lse:.............self.__dict__[n
27160 61 6d 65 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 ame].=.value......def._ptr(self)
27180 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 68 0a 0a 20 20 20 20 64 65 :.........return.self.dh......de
271a0 66 20 63 68 65 63 6b 5f 70 61 72 61 6d 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 f.check_params(self):.........#.
271c0 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d type:.().->.int.........assert.m
271e0 32 2e 64 68 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 68 29 2c 20 22 27 64 68 27 20 2.dh_type_check(self.dh),."'dh'.
27200 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 68 type.error".........return.m2.dh
27220 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 68 29 0a 0a 20 20 20 20 64 65 66 20 67 65 6e 5f 6b 65 79 _check(self.dh)......def.gen_key
27240 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f (self):.........#.type:.().->.No
27260 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 68 5f 74 79 70 65 5f 63 68 65 ne.........assert.m2.dh_type_che
27280 63 6b 28 73 65 6c 66 2e 64 68 29 2c 20 22 27 64 68 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 ck(self.dh),."'dh'.type.error"..
272a0 20 20 20 20 20 20 20 6d 32 2e 64 68 5f 67 65 6e 65 72 61 74 65 5f 6b 65 79 28 73 65 6c 66 2e 64 .......m2.dh_generate_key(self.d
272c0 68 29 0a 0a 20 20 20 20 64 65 66 20 63 6f 6d 70 75 74 65 5f 6b 65 79 28 73 65 6c 66 2c 20 70 75 h)......def.compute_key(self,.pu
272e0 62 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d bkey):.........#.type:.(bytes).-
27300 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 68 5f 74 79 70 >.bytes.........assert.m2.dh_typ
27320 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 68 29 2c 20 22 27 64 68 27 20 74 79 70 65 20 65 72 72 e_check(self.dh),."'dh'.type.err
27340 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 68 5f 63 6f 6d 70 75 74 65 or".........return.m2.dh_compute
27360 5f 6b 65 79 28 73 65 6c 66 2e 64 68 2c 20 70 75 62 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 20 70 _key(self.dh,.pubkey)......def.p
27380 72 69 6e 74 5f 70 61 72 61 6d 73 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 rint_params(self,.bio):.........
273a0 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 #.type:.(BIO.BIO).->.int........
273c0 20 61 73 73 65 72 74 20 6d 32 2e 64 68 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 68 .assert.m2.dh_type_check(self.dh
273e0 29 2c 20 22 27 64 68 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 ),."'dh'.type.error".........ret
27400 75 72 6e 20 6d 32 2e 64 68 70 61 72 61 6d 73 5f 70 72 69 6e 74 28 62 69 6f 2e 5f 70 74 72 28 29 urn.m2.dhparams_print(bio._ptr()
27420 2c 20 73 65 6c 66 2e 64 68 29 0a 0a 0a 64 65 66 20 67 65 6e 5f 70 61 72 61 6d 73 28 70 6c 65 6e ,.self.dh)...def.gen_params(plen
27440 2c 20 67 2c 20 63 61 6c 6c 62 61 63 6b 3d 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 29 ,.g,.callback=genparam_callback)
27460 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 :.....#.type:.(int,.int,.Optiona
27480 6c 5b 43 61 6c 6c 61 62 6c 65 5d 29 20 2d 3e 20 44 48 0a 20 20 20 20 64 68 5f 70 61 72 6d 73 20 l[Callable]).->.DH.....dh_parms.
274a0 3d 20 6d 32 2e 64 68 5f 67 65 6e 65 72 61 74 65 5f 70 61 72 61 6d 65 74 65 72 73 28 70 6c 65 6e =.m2.dh_generate_parameters(plen
274c0 2c 20 67 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 64 68 5f 6f 62 6a 20 3d 20 44 48 28 64 ,.g,.callback).....dh_obj.=.DH(d
274e0 68 5f 70 61 72 6d 73 2c 20 31 29 0a 20 20 20 20 72 65 74 75 72 6e 20 64 68 5f 6f 62 6a 0a 0a 0a h_parms,.1).....return.dh_obj...
27500 64 65 66 20 6c 6f 61 64 5f 70 61 72 61 6d 73 28 66 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 79 70 def.load_params(file):.....#.typ
27520 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 44 48 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f e:.(AnyStr).->.DH.....with.BIO.o
27540 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 penfile(file).as.bio:.........re
27560 74 75 72 6e 20 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 28 62 69 6f 29 0a 0a 0a 64 65 66 20 turn.load_params_bio(bio)...def.
27580 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 28 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 load_params_bio(bio):.....#.type
275a0 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 44 48 0a 20 20 20 20 72 65 74 75 72 6e 20 44 48 28 :.(BIO.BIO).->.DH.....return.DH(
275c0 6d 32 2e 64 68 5f 72 65 61 64 5f 70 61 72 61 6d 65 74 65 72 73 28 62 69 6f 2e 5f 70 74 72 28 29 m2.dh_read_parameters(bio._ptr()
275e0 29 2c 20 31 29 0a 0a 0a 64 65 66 20 73 65 74 5f 70 61 72 61 6d 73 28 70 2c 20 67 29 3a 0a 20 20 ),.1)...def.set_params(p,.g):...
27600 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 74 65 73 29 20 2d 3e 20 44 48 0a 20 ..#.type:.(bytes,.bytes).->.DH..
27620 20 20 20 64 68 20 3d 20 6d 32 2e 64 68 5f 6e 65 77 28 29 0a 20 20 20 20 6d 32 2e 64 68 5f 73 65 ...dh.=.m2.dh_new().....m2.dh_se
27640 74 5f 70 67 28 64 68 2c 20 70 2c 20 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 44 48 28 64 68 2c t_pg(dh,.p,.g).....return.DH(dh,
27660 20 31 29 0a 0a 0a 23 20 64 65 66 20 66 72 65 65 5f 70 61 72 61 6d 73 28 63 70 74 72 29 3a 0a 23 .1)...#.def.free_params(cptr):.#
27680 20 20 20 20 6d 32 2e 64 68 5f 66 72 65 65 28 63 70 74 72 29 0a 0a 0a 44 48 5f 47 45 4e 45 52 41 ....m2.dh_free(cptr)...DH_GENERA
276a0 54 4f 52 5f 32 20 3d 20 6d 32 2e 44 48 5f 47 45 4e 45 52 41 54 4f 52 5f 32 0a 44 48 5f 47 45 4e TOR_2.=.m2.DH_GENERATOR_2.DH_GEN
276c0 45 52 41 54 4f 52 5f 35 20 3d 20 6d 32 2e 44 48 5f 47 45 4e 45 52 41 54 4f 52 5f 35 0a 94 7d 94 ERATOR_5.=.m2.DH_GENERATOR_5..}.
276e0 28 8c 07 44 48 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 0d 4b 0e 87 94 8c 0b 44 48 2e 5f 5f 69 6e 69 (..DHError.j}...K.K.....DH.__ini
27700 74 5f 5f 94 6a 74 1f 00 00 4b 19 4b 1d 87 94 8c 0a 44 48 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 t__.jt...K.K.....DH.__del__.jt..
27720 00 4b 1f 4b 22 87 94 8c 0a 44 48 2e 5f 5f 6c 65 6e 5f 5f 94 6a 74 1f 00 00 4b 24 4b 27 87 94 8c .K.K"....DH.__len__.jt...K$K'...
27740 0e 44 48 2e 5f 5f 67 65 74 61 74 74 72 5f 5f 94 6a 74 1f 00 00 4b 29 4b 30 87 94 8c 0e 44 48 2e .DH.__getattr__.jt...K)K0....DH.
27760 5f 5f 73 65 74 61 74 74 72 5f 5f 94 6a 74 1f 00 00 4b 32 4b 39 87 94 8c 07 44 48 2e 5f 70 74 72 __setattr__.jt...K2K9....DH._ptr
27780 94 6a 74 1f 00 00 4b 3b 4b 3c 87 94 8c 0f 44 48 2e 63 68 65 63 6b 5f 70 61 72 61 6d 73 94 6a 74 .jt...K;K<....DH.check_params.jt
277a0 1f 00 00 4b 3e 4b 41 87 94 8c 0a 44 48 2e 67 65 6e 5f 6b 65 79 94 6a 74 1f 00 00 4b 43 4b 46 87 ...K>KA....DH.gen_key.jt...KCKF.
277c0 94 8c 0e 44 48 2e 63 6f 6d 70 75 74 65 5f 6b 65 79 94 6a 74 1f 00 00 4b 48 4b 4b 87 94 8c 0f 44 ...DH.compute_key.jt...KHKK....D
277e0 48 2e 70 72 69 6e 74 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4b 4d 4b 50 87 94 8c 02 44 48 94 6a H.print_params.jt...KMKP....DH.j
27800 7d 1f 00 00 4b 13 4b 50 87 94 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4b 53 4b 57 }...K.KP....gen_params.jt...KSKW
27820 87 94 8c 0b 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4b 5a 4b 5d 87 94 8c 0f 6c 6f 61 ....load_params.jt...KZK]....loa
27840 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 74 1f 00 00 4b 60 4b 62 87 94 8c 0a 73 65 74 5f 70 61 d_params_bio.jt...K`Kb....set_pa
27860 72 61 6d 73 94 6a 74 1f 00 00 4b 65 4b 69 87 94 75 7d 94 28 8c 02 44 48 94 6a 53 02 00 00 8c 0f rams.jt...KeKi..u}.(..DH.jS.....
27880 44 48 2e 63 68 65 63 6b 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 0e 44 48 2e 63 6f 6d 70 75 74 DH.check_params.jS.....DH.comput
278a0 65 5f 6b 65 79 94 6a 53 02 00 00 8c 0a 44 48 2e 67 65 6e 5f 6b 65 79 94 6a 53 02 00 00 8c 0f 44 e_key.jS.....DH.gen_key.jS.....D
278c0 48 2e 70 72 69 6e 74 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 07 44 48 45 72 72 6f 72 94 6a 53 H.print_params.jS.....DHError.jS
278e0 02 00 00 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 0b 6c 6f 61 64 5f 70 61 72 61 .....gen_params.jS.....load_para
27900 6d 73 94 6a 53 02 00 00 8c 0f 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 53 02 00 00 8c ms.jS.....load_params_bio.jS....
27920 0a 73 65 74 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 75 8c 0b 4d 32 43 72 79 70 74 6f 2e 44 48 94 .set_params.jS...u..M2Crypto.DH.
27940 74 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 44 53 41 94 28 58 e3 37 00 00 66 72 6f 6d 20 5f 5f 66 75 t...M2Crypto.DSA.(X.7..from.__fu
27960 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 2c 20 70 ture__.import.absolute_import,.p
27980 72 69 6e 74 5f 66 75 6e 63 74 69 6f 6e 0a 0a 22 22 22 0a 20 20 20 20 4d 32 43 72 79 70 74 6f 20 rint_function..""".....M2Crypto.
279a0 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 44 53 41 20 41 50 49 2e 0a 0a 20 20 wrapper.for.OpenSSL.DSA.API.....
279c0 20 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 65 ..Copyright.(c).1999-2003.Ng.Phe
279e0 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a ng.Siong..All.rights.reserved...
27a00 20 20 20 20 50 6f 72 74 69 6f 6e 73 20 63 72 65 61 74 65 64 20 62 79 20 4f 70 65 6e 20 53 6f 75 ....Portions.created.by.Open.Sou
27a20 72 63 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 20 28 4f 53 41 rce.Applications.Foundation.(OSA
27a40 46 29 20 61 72 65 0a 20 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 30 34 20 4f 53 F).are.....Copyright.(C).2004.OS
27a60 41 46 2e 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 66 72 AF..All.Rights.Reserved.."""..fr
27a80 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 42 49 4f 2c 20 6d 32 2c 20 75 74 69 6c om.M2Crypto.import.BIO,.m2,.util
27aa0 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 .if.util.py27plus:.....from.typi
27ac0 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 54 75 70 6c ng.import.AnyStr,.Callable,.Tupl
27ae0 65 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 44 53 41 45 72 72 6f 72 28 45 78 63 65 70 e..#.noqa...class.DSAError(Excep
27b00 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 64 73 61 5f 69 6e 69 74 28 44 53 41 tion):.....pass..m2.dsa_init(DSA
27b20 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 44 53 41 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 Error)...class.DSA(object):.....
27b40 20 22 22 22 0a 20 20 20 20 54 68 69 73 20 63 6c 61 73 73 20 69 73 20 61 20 63 6f 6e 74 65 78 74 .""".....This.class.is.a.context
27b60 20 73 75 70 70 6f 72 74 69 6e 67 20 44 53 41 20 6b 65 79 20 61 6e 64 20 70 61 72 61 6d 65 74 65 .supporting.DSA.key.and.paramete
27b80 72 0a 20 20 20 20 76 61 6c 75 65 73 2c 20 73 69 67 6e 69 6e 67 20 61 6e 64 20 76 65 72 69 66 79 r.....values,.signing.and.verify
27ba0 69 6e 67 2e 0a 0a 20 20 20 20 53 69 6d 70 6c 65 20 65 78 61 6d 70 6c 65 3a 3a 0a 0a 20 20 20 20 ing.......Simple.example::......
27bc0 20 20 20 20 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 45 56 50 2c 20 44 53 ....from.M2Crypto.import.EVP,.DS
27be0 41 2c 20 75 74 69 6c 0a 0a 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3d 20 27 4b 69 6c 72 A,.util..........message.=.'Kilr
27c00 6f 79 20 77 61 73 20 68 65 72 65 21 27 0a 20 20 20 20 20 20 20 20 6d 64 20 3d 20 45 56 50 2e 4d oy.was.here!'.........md.=.EVP.M
27c20 65 73 73 61 67 65 44 69 67 65 73 74 28 27 73 68 61 31 27 29 0a 20 20 20 20 20 20 20 20 6d 64 2e essageDigest('sha1').........md.
27c40 75 70 64 61 74 65 28 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 64 69 67 65 73 74 20 3d update(message).........digest.=
27c60 20 6d 64 2e 66 69 6e 61 6c 28 29 0a 0a 20 20 20 20 20 20 20 20 64 73 61 20 3d 20 44 53 41 2e 67 .md.final()..........dsa.=.DSA.g
27c80 65 6e 5f 70 61 72 61 6d 73 28 31 30 32 34 29 0a 20 20 20 20 20 20 20 20 64 73 61 2e 67 65 6e 5f en_params(1024).........dsa.gen_
27ca0 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 72 2c 20 73 20 3d 20 64 73 61 2e 73 69 67 6e 28 64 69 key().........r,.s.=.dsa.sign(di
27cc0 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 67 6f 6f 64 20 3d 20 64 73 61 2e 76 65 72 69 66 79 28 gest).........good.=.dsa.verify(
27ce0 64 69 67 65 73 74 2c 20 72 2c 20 73 29 0a 20 20 20 20 20 20 20 20 69 66 20 67 6f 6f 64 3a 0a 20 digest,.r,.s).........if.good:..
27d00 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 20 20 2a 2a 20 73 75 63 63 65 73 73 20 2a ...........print('..**.success.*
27d20 2a 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 *').........else:.............pr
27d40 69 6e 74 28 27 20 20 2a 2a 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 2a 2a int('..**.verification.failed.**
27d60 27 29 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 64 73 61 5f 66 72 65 65 20 3d 20 6d 32 ')....."""......m2_dsa_free.=.m2
27d80 2e 64 73 61 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 .dsa_free......def.__init__(self
27da0 2c 20 64 73 61 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ,.dsa,._pyfree=0):.........#.typ
27dc0 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 e:.(bytes,.int).->.None.........
27de0 22 22 22 0a 20 20 20 20 20 20 20 20 55 73 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 61 63 74 6f """.........Use.one.of.the.facto
27e00 72 79 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 20 63 72 65 61 74 65 20 61 6e 20 69 6e 73 74 61 6e ry.functions.to.create.an.instan
27e20 63 65 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 73 61 3a 20 62 69 6e 61 72 79 20 72 ce..........:param.dsa:.binary.r
27e40 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 4f 70 65 6e 53 53 4c 20 44 53 41 20 74 79 70 epresentation.of.OpenSSL.DSA.typ
27e60 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e e.........""".........assert.m2.
27e80 64 73 61 5f 74 79 70 65 5f 63 68 65 63 6b 28 64 73 61 29 2c 20 22 27 64 73 61 27 20 74 79 70 65 dsa_type_check(dsa),."'dsa'.type
27ea0 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 73 61 20 3d 20 64 73 61 0a 20 .error".........self.dsa.=.dsa..
27ec0 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 .......self._pyfree.=._pyfree...
27ee0 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ...def.__del__(self):.........#.
27f00 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 type:.().->.None.........if.geta
27f20 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 ttr(self,.'_pyfree',.0):........
27f40 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 64 73 61 5f 66 72 65 65 28 73 65 6c 66 2e 64 73 61 29 0a .....self.m2_dsa_free(self.dsa).
27f60 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 .....def.__len__(self):.........
27f80 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 #.type:.().->.int........."""...
27fa0 20 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 6b 65 79 20 6c 65 6e 67 74 68 2e 0a 0a 20 20 ......Return.the.key.length.....
27fc0 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 74 68 65 20 44 53 41 20 6b 65 79 20 6c 65 6e 67 ......:return:..the.DSA.key.leng
27fe0 74 68 20 69 6e 20 62 69 74 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 th.in.bits.........""".........a
28000 73 73 65 72 74 20 6d 32 2e 64 73 61 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 73 61 ssert.m2.dsa_type_check(self.dsa
28020 29 2c 20 22 27 64 73 61 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 ),."'dsa'.type.error".........re
28040 74 75 72 6e 20 6d 32 2e 64 73 61 5f 6b 65 79 6c 65 6e 28 73 65 6c 66 2e 64 73 61 29 0a 0a 20 20 turn.m2.dsa_keylen(self.dsa)....
28060 20 20 64 65 66 20 5f 5f 67 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 ..def.__getattr__(self,.name):..
28080 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 .......#.type:.(str).->.bytes...
280a0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 73 70 65 63 69 66 69 ......""".........Return.specifi
280c0 65 64 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 6b 65 79 20 76 61 6c 75 65 73 ed.DSA.parameters.and.key.values
280e0 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6e 61 6d 65 3a 20 6e 61 6d 65 20 6f 66 20 ...........:param.name:.name.of.
28100 76 61 72 69 61 62 6c 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20 4d 75 73 74 20 62 variable.to.be.returned...Must.b
28120 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6e 65 20 6f 66 20 27 70 e......................one.of.'p
28140 27 2c 20 27 71 27 2c 20 27 67 27 2c 20 27 70 75 62 27 2c 20 27 70 72 69 76 27 2e 0a 20 20 20 20 ',.'q',.'g',.'pub',.'priv'......
28160 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 76 61 6c 75 65 20 6f 66 20 73 70 65 63 69 66 ....:return:.....value.of.specif
28180 69 65 64 20 76 61 72 69 61 62 6c 65 20 28 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 29 0a 20 ied.variable.(a."byte.string")..
281a0 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 20 69 6e 20 5b 27 .......""".........if.name.in.['
281c0 70 27 2c 20 27 71 27 2c 20 27 67 27 2c 20 27 70 75 62 27 2c 20 27 70 72 69 76 27 5d 3a 0a 20 20 p',.'q',.'g',.'pub',.'priv']:...
281e0 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 27 ..........method.=.getattr(m2,.'
28200 64 73 61 5f 67 65 74 5f 25 73 27 20 25 20 28 6e 61 6d 65 2c 29 29 0a 20 20 20 20 20 20 20 20 20 dsa_get_%s'.%.(name,))..........
28220 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 73 61 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 ...assert.m2.dsa_type_check(self
28240 2e 64 73 61 29 2c 20 22 27 64 73 61 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 .dsa),."'dsa'.type.error".......
28260 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 65 74 68 6f 64 28 73 65 6c 66 2e 64 73 61 29 0a 20 20 ......return.method(self.dsa)...
28280 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 41 74 ......else:.............raise.At
282a0 74 72 69 62 75 74 65 45 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 65 74 61 74 74 72 5f tributeError......def.__setattr_
282c0 5f 28 73 65 6c 66 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 _(self,.name,.value):.........#.
282e0 74 79 70 65 3a 20 28 73 74 72 2c 20 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 type:.(str,.bytes).->.None......
28300 20 20 20 69 66 20 6e 61 6d 65 20 69 6e 20 5b 27 70 27 2c 20 27 71 27 2c 20 27 67 27 5d 3a 0a 20 ...if.name.in.['p',.'q',.'g']:..
28320 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 44 53 41 45 72 72 6f 72 28 27 73 65 74 20 28 ...........raise.DSAError('set.(
28340 70 2c 20 71 2c 20 67 29 20 76 69 61 20 73 65 74 5f 70 61 72 61 6d 73 28 29 27 29 0a 20 20 20 20 p,.q,.g).via.set_params()').....
28360 20 20 20 20 65 6c 69 66 20 6e 61 6d 65 20 69 6e 20 5b 27 70 75 62 27 2c 20 27 70 72 69 76 27 5d ....elif.name.in.['pub',.'priv']
28380 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 44 53 41 45 72 72 6f 72 28 27 67 65 :.............raise.DSAError('ge
283a0 6e 65 72 61 74 65 20 28 70 75 62 2c 20 70 72 69 76 29 20 76 69 61 20 67 65 6e 5f 6b 65 79 28 29 nerate.(pub,.priv).via.gen_key()
283c0 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c ').........else:.............sel
283e0 66 2e 5f 5f 64 69 63 74 5f 5f 5b 6e 61 6d 65 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 f.__dict__[name].=.value......de
28400 66 20 73 65 74 5f 70 61 72 61 6d 73 28 73 65 6c 66 2c 20 70 2c 20 71 2c 20 67 29 3a 0a 20 20 20 f.set_params(self,.p,.q,.g):....
28420 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 74 65 73 2c 20 62 79 74 65 .....#.type:.(bytes,.bytes,.byte
28440 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 s).->.None.........""".........S
28460 65 74 20 6e 65 77 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 et.new.parameters...........:par
28480 61 6d 20 70 3a 20 4d 50 49 20 62 69 6e 61 72 79 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 am.p:.MPI.binary.representation.
284a0 2e 2e 2e 20 66 6f 72 6d 61 74 20 74 68 61 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 0a 20 20 20 20 ....format.that.consists.of.....
284c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6e 75 6d 62 65 72 27 73 20 6c 65 6e 67 74 ..............the.number's.lengt
284e0 68 20 69 6e 20 62 79 74 65 73 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 61 20 34 2d 62 79 h.in.bytes.represented.as.a.4-by
28500 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 te...................big-endian.
28520 6e 75 6d 62 65 72 2c 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 69 74 73 65 6c 66 20 69 6e number,.and.the.number.itself.in
28540 20 62 69 67 2d 65 6e 64 69 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f .big-endian...................fo
28560 72 6d 61 74 2c 20 77 68 65 72 65 20 74 68 65 20 6d 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 rmat,.where.the.most.significant
28580 20 62 69 74 20 73 69 67 6e 61 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 .bit.signals...................a
285a0 20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 20 28 74 68 65 20 72 65 70 72 65 73 65 6e 74 61 .negative.number.(the.representa
285c0 74 69 6f 6e 20 6f 66 20 6e 75 6d 62 65 72 73 20 77 69 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 tion.of.numbers.with............
285e0 20 20 20 20 20 20 20 74 68 65 20 4d 53 42 20 73 65 74 20 69 73 20 70 72 65 66 69 78 65 64 20 77 .......the.MSB.set.is.prefixed.w
28600 69 74 68 20 6e 75 6c 6c 20 62 79 74 65 29 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 71 ith.null.byte)..........:param.q
28620 3a 20 64 69 74 74 6f 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 67 3a 20 64 69 74 74 6f 0a :.ditto.........:param.g:.ditto.
28640 0a 20 20 20 20 20 20 20 20 40 77 61 72 6e 69 6e 67 3a 20 54 68 69 73 20 64 6f 65 73 20 6e 6f 74 .........@warning:.This.does.not
28660 20 63 68 61 6e 67 65 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 2c 20 73 6f 20 69 74 20 6d .change.the.private.key,.so.it.m
28680 61 79 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 73 61 66 65 20 74 ay.be...................unsafe.t
286a0 6f 20 75 73 65 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 20 49 74 20 69 73 20 62 65 74 74 65 72 20 o.use.this.method..It.is.better.
286c0 74 6f 20 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6e 5f 70 61 72 to.use...................gen_par
286e0 61 6d 73 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 44 53 41 ams.function.to.create.a.new.DSA
28700 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e .object..........""".........m2.
28720 64 73 61 5f 73 65 74 5f 70 71 67 28 73 65 6c 66 2e 64 73 61 2c 20 70 2c 20 71 2c 20 67 29 0a 0a dsa_set_pqg(self.dsa,.p,.q,.g)..
28740 20 20 20 20 64 65 66 20 67 65 6e 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 ....def.gen_key(self):.........#
28760 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 .type:.().->.None........."""...
28780 20 20 20 20 20 20 47 65 6e 65 72 61 74 65 20 61 20 6b 65 79 20 70 61 69 72 2e 0a 20 20 20 20 20 ......Generate.a.key.pair.......
287a0 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 73 61 5f 74 79 70 ...""".........assert.m2.dsa_typ
287c0 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 64 73 61 29 2c 20 22 27 64 73 61 27 20 74 79 70 65 20 65 e_check(self.dsa),."'dsa'.type.e
287e0 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 64 73 61 5f 67 65 6e 5f 6b 65 79 28 73 65 6c rror".........m2.dsa_gen_key(sel
28800 66 2e 64 73 61 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 61 72 61 6d 73 28 73 65 6c 66 f.dsa)......def.save_params(self
28820 2c 20 66 69 6c 65 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e ,.filename):.........#.type:.(An
28840 79 53 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 yStr).->.int........."""........
28860 20 53 61 76 65 20 74 68 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 61 20 66 69 .Save.the.DSA.parameters.to.a.fi
28880 6c 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 53 61 le...........:param.filename:.Sa
288a0 76 65 20 74 68 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 69 73 20 66 69 ve.the.DSA.parameters.to.this.fi
288c0 6c 65 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 20 31 20 28 le..........:return:.........1.(
288e0 74 72 75 65 29 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a true).if.successful.........""".
28900 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 ........with.BIO.openfile(filena
28920 6d 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 me,.'wb').as.bio:.............re
28940 74 20 3d 20 6d 32 2e 64 73 61 5f 77 72 69 74 65 5f 70 61 72 61 6d 73 5f 62 69 6f 28 73 65 6c 66 t.=.m2.dsa_write_params_bio(self
28960 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .dsa,.bio._ptr())..........retur
28980 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 28 73 n.ret......def.save_params_bio(s
289a0 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e elf,.bio):.........#.type:.(BIO.
289c0 42 49 4f 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 BIO).->.int.........""".........
289e0 53 61 76 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 61 20 42 49 4f 20 6f 62 6a Save.DSA.parameters.to.a.BIO.obj
28a00 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 53 61 76 65 20 44 ect...........:param.bio:.Save.D
28a20 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 20 20 SA.parameters.to.this.object....
28a40 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 31 20 28 74 72 75 65 29 20 69 66 20 73 75 ......:return:....1.(true).if.su
28a60 63 63 65 73 73 66 75 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 ccessful.........""".........ret
28a80 75 72 6e 20 6d 32 2e 64 73 61 5f 77 72 69 74 65 5f 70 61 72 61 6d 73 5f 62 69 6f 28 73 65 6c 66 urn.m2.dsa_write_params_bio(self
28aa0 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f .dsa,.bio._ptr())......def.save_
28ac0 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 63 69 70 68 65 72 3d 27 61 65 73 5f key(self,.filename,.cipher='aes_
28ae0 31 32 38 5f 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 128_cbc',..................callb
28b00 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 ack=util.passphrase_callback):..
28b20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 73 74 72 2c 20 43 61 6c .......#.type:.(AnyStr,.str,.Cal
28b40 6c 61 62 6c 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 lable).->.int.........""".......
28b60 20 20 53 61 76 65 20 74 68 65 20 44 53 41 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 20 66 69 6c ..Save.the.DSA.key.pair.to.a.fil
28b80 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 53 61 76 e...........:param.filename:.Sav
28ba0 65 20 74 68 65 20 44 53 41 20 6b 65 79 20 70 61 69 72 20 74 6f 20 74 68 69 73 20 66 69 6c 65 2e e.the.DSA.key.pair.to.this.file.
28bc0 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 20 20 6e 61 6d 65 20 6f .........:param.cipher:...name.o
28be0 66 20 73 79 6d 6d 65 74 72 69 63 20 6b 65 79 20 61 6c 67 6f 72 69 74 68 6d 20 61 6e 64 20 6d 6f f.symmetric.key.algorithm.and.mo
28c00 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 65 de..........................to.e
28c20 6e 63 72 79 70 74 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 2e 0a 20 20 20 20 20 20 20 20 ncrypt.the.private.key..........
28c40 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 20 31 20 28 74 72 75 65 29 20 69 66 20 73 75 63 :return:.........1.(true).if.suc
28c60 63 65 73 73 66 75 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 cessful.........""".........with
28c80 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 20 61 73 .BIO.openfile(filename,.'wb').as
28ca0 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 73 65 6c 66 2e 73 61 76 .bio:.............ret.=.self.sav
28cc0 65 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 69 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 e_key_bio(bio,.cipher,.callback)
28ce0 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 73 61 ..........return.ret......def.sa
28d00 76 65 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 2c 20 63 69 70 68 65 72 3d 27 61 65 ve_key_bio(self,.bio,.cipher='ae
28d20 73 5f 31 32 38 5f 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s_128_cbc',.....................
28d40 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 .callback=util.passphrase_callba
28d60 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 73 ck):.........#.type:.(BIO.BIO,.s
28d80 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 tr,.Callable).->.int........."""
28da0 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 44 53 41 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 20 .........Save.DSA.key.pair.to.a.
28dc0 42 49 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a BIO.object...........:param.bio:
28de0 20 20 20 20 53 61 76 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 69 73 20 ....Save.DSA.parameters.to.this.
28e00 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 6e object..........:param.cipher:.n
28e20 61 6d 65 20 6f 66 20 73 79 6d 6d 65 74 72 69 63 20 6b 65 79 20 61 6c 67 6f 72 69 74 68 6d 20 61 ame.of.symmetric.key.algorithm.a
28e40 6e 64 20 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 nd.mode........................t
28e60 6f 20 65 6e 63 72 79 70 74 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 2e 0a 20 20 20 20 20 o.encrypt.the.private.key.......
28e80 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 31 20 28 74 72 75 65 29 20 69 66 20 73 75 ...:return:.......1.(true).if.su
28ea0 63 63 65 73 73 66 75 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 ccessful.........""".........if.
28ec0 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 cipher.is.None:.............retu
28ee0 72 6e 20 6d 32 2e 64 73 61 5f 77 72 69 74 65 5f 6b 65 79 5f 62 69 6f 5f 6e 6f 5f 63 69 70 68 65 rn.m2.dsa_write_key_bio_no_ciphe
28f00 72 28 73 65 6c 66 2e 64 73 61 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r(self.dsa,.....................
28f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 ..............................bi
28f40 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 o._ptr(),.callback).........else
28f60 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c :.............ciph.=.getattr(m2,
28f80 20 63 69 70 68 65 72 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 69 .cipher,.None).............if.ci
28fa0 70 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 ph.is.None:.................rais
28fc0 65 20 44 53 41 45 72 72 6f 72 28 27 6e 6f 20 73 75 63 68 20 63 69 70 68 65 72 3a 20 25 73 27 20 e.DSAError('no.such.cipher:.%s'.
28fe0 25 20 63 69 70 68 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 %.cipher).............else:.....
29000 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 20 3d 20 63 69 70 68 28 29 0a 20 20 20 20 20 20 ............ciph.=.ciph().......
29020 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 77 72 69 74 65 5f 6b 65 79 5f 62 69 ......return.m2.dsa_write_key_bi
29040 6f 28 73 65 6c 66 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 69 70 68 2c 20 63 61 o(self.dsa,.bio._ptr(),.ciph,.ca
29060 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 73 65 llback)......def.save_pub_key(se
29080 6c 66 2c 20 66 69 6c 65 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 lf,.filename):.........#.type:.(
290a0 41 6e 79 53 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 AnyStr).->.int........."""......
290c0 20 20 20 53 61 76 65 20 74 68 65 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 28 77 69 74 68 ...Save.the.DSA.public.key.(with
290e0 20 70 61 72 61 6d 65 74 65 72 73 29 20 74 6f 20 61 20 66 69 6c 65 2e 0a 0a 20 20 20 20 20 20 20 .parameters).to.a.file..........
29100 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 53 61 76 65 20 44 53 41 20 70 75 62 6c 69 .:param.filename:.Save.DSA.publi
29120 63 20 6b 65 79 20 28 77 69 74 68 20 70 61 72 61 6d 65 74 65 72 73 29 0a 20 20 20 20 20 20 20 20 c.key.(with.parameters).........
29140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 .................to.this.file...
29160 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 20 31 20 28 74 72 75 65 29 .......:return:.........1.(true)
29180 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .if.successful........."""......
291a0 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c 20 27 ...with.BIO.openfile(filename,.'
291c0 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 73 wb').as.bio:.............ret.=.s
291e0 65 6c 66 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 29 0a 0a 20 20 20 20 20 elf.save_pub_key_bio(bio).......
29200 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 75 62 5f ...return.ret......def.save_pub_
29220 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 key_bio(self,.bio):.........#.ty
29240 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 pe:.(BIO.BIO).->.int........."""
29260 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 28 77 69 .........Save.DSA.public.key.(wi
29280 74 68 20 70 61 72 61 6d 65 74 65 72 73 29 20 74 6f 20 61 20 42 49 4f 20 6f 62 6a 65 63 74 2e 0a th.parameters).to.a.BIO.object..
292a0 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 53 61 76 65 20 44 53 41 20 70 75 .........:param.bio:.Save.DSA.pu
292c0 62 6c 69 63 20 6b 65 79 20 28 77 69 74 68 20 70 61 72 61 6d 65 74 65 72 73 29 0a 20 20 20 20 20 blic.key.(with.parameters)......
292e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 20 ...............to.this.object...
29300 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 31 20 28 74 72 75 65 29 20 69 66 20 73 75 63 .......:return:..1.(true).if.suc
29320 63 65 73 73 66 75 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 cessful.........""".........retu
29340 72 6e 20 6d 32 2e 64 73 61 5f 77 72 69 74 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 rn.m2.dsa_write_pub_key_bio(self
29360 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 28 .dsa,.bio._ptr())......def.sign(
29380 73 65 6c 66 2c 20 64 69 67 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 self,.digest):.........#.type:.(
293a0 62 79 74 65 73 29 20 2d 3e 20 54 75 70 6c 65 5b 62 79 74 65 73 2c 20 62 79 74 65 73 5d 0a 20 20 bytes).->.Tuple[bytes,.bytes]...
293c0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 69 67 6e 20 74 68 65 20 64 69 67 65 73 ......""".........Sign.the.diges
293e0 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 69 67 65 73 74 3a 20 53 48 41 2d 31 t...........:param.digest:.SHA-1
29400 20 68 61 73 68 20 6f 66 20 6d 65 73 73 61 67 65 20 28 73 61 6d 65 20 61 73 20 6f 75 74 70 75 74 .hash.of.message.(same.as.output
29420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 20 4d 65 73 ........................from.Mes
29440 73 61 67 65 44 69 67 65 73 74 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 29 0a 20 20 20 sageDigest,.a."byte.string")....
29460 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 44 53 41 20 73 69 67 6e 61 74 75 72 .....:return:.......DSA.signatur
29480 65 2c 20 61 20 74 75 70 6c 65 20 6f 66 20 74 77 6f 20 76 61 6c 75 65 73 2c 20 72 20 61 6e 64 20 e,.a.tuple.of.two.values,.r.and.
294a0 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 74 68 20 22 s,........................both."
294c0 62 79 74 65 20 73 74 72 69 6e 67 73 22 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 byte.strings".........."""......
294e0 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 ...assert.self.check_key(),.'key
29500 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 .is.not.initialised'.........ret
29520 75 72 6e 20 6d 32 2e 64 73 61 5f 73 69 67 6e 28 73 65 6c 66 2e 64 73 61 2c 20 64 69 67 65 73 74 urn.m2.dsa_sign(self.dsa,.digest
29540 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 28 73 65 6c 66 2c 20 64 69 67 65 73 74 2c 20 )......def.verify(self,.digest,.
29560 72 2c 20 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 r,.s):.........#.type:.(bytes,.b
29580 79 74 65 73 2c 20 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a ytes,.bytes).->.int.........""".
295a0 20 20 20 20 20 20 20 20 56 65 72 69 66 79 20 61 20 6e 65 77 6c 79 20 63 61 6c 63 75 6c 61 74 65 ........Verify.a.newly.calculate
295c0 64 20 64 69 67 65 73 74 20 61 67 61 69 6e 73 74 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 0a 20 d.digest.against.the.signature..
295e0 20 20 20 20 20 20 20 76 61 6c 75 65 73 20 72 20 61 6e 64 20 73 2e 0a 0a 20 20 20 20 20 20 20 20 .......values.r.and.s...........
29600 3a 70 61 72 61 6d 20 64 69 67 65 73 74 3a 20 53 48 41 2d 31 20 68 61 73 68 20 6f 66 20 6d 65 73 :param.digest:.SHA-1.hash.of.mes
29620 73 61 67 65 20 28 73 61 6d 65 20 61 73 20 6f 75 74 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 sage.(same.as.output............
29640 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 20 4d 65 73 73 61 67 65 44 69 67 65 73 74 2c 20 ............from.MessageDigest,.
29660 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 a."byte.string").........:param.
29680 72 3a 20 20 20 20 20 20 72 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 r:......r.value.of.the.signature
296a0 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d ,.a."byte.string".........:param
296c0 20 73 3a 20 20 20 20 20 20 73 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 69 67 6e 61 74 75 72 .s:......s.value.of.the.signatur
296e0 65 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 e,.a."byte.string".........:retu
29700 72 6e 3a 20 20 20 20 20 20 20 31 20 28 74 72 75 65 29 20 69 66 20 76 65 72 69 66 79 20 73 75 63 rn:.......1.(true).if.verify.suc
29720 63 65 65 64 65 64 2c 20 30 20 69 66 20 66 61 69 6c 65 64 0a 20 20 20 20 20 20 20 20 22 22 22 0a ceeded,.0.if.failed.........""".
29740 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c ........assert.self.check_key(),
29760 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 .'key.is.not.initialised'.......
29780 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 64 73 61 2c ..return.m2.dsa_verify(self.dsa,
297a0 20 64 69 67 65 73 74 2c 20 72 2c 20 73 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 5f 61 73 6e .digest,.r,.s)......def.sign_asn
297c0 31 28 73 65 6c 66 2c 20 64 69 67 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 1(self,.digest):.........assert.
297e0 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e self.check_key(),.'key.is.not.in
29800 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 itialised'.........return.m2.dsa
29820 5f 73 69 67 6e 5f 61 73 6e 31 28 73 65 6c 66 2e 64 73 61 2c 20 64 69 67 65 73 74 29 0a 0a 20 20 _sign_asn1(self.dsa,.digest)....
29840 20 20 64 65 66 20 76 65 72 69 66 79 5f 61 73 6e 31 28 73 65 6c 66 2c 20 64 69 67 65 73 74 2c 20 ..def.verify_asn1(self,.digest,.
29860 62 6c 6f 62 29 3a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 63 68 65 63 6b blob):.........assert.self.check
29880 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 64 27 _key(),.'key.is.not.initialised'
298a0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 76 65 72 69 66 79 5f 61 73 .........return.m2.dsa_verify_as
298c0 6e 31 28 73 65 6c 66 2e 64 73 61 2c 20 64 69 67 65 73 74 2c 20 62 6c 6f 62 29 0a 0a 20 20 20 20 n1(self.dsa,.digest,.blob)......
298e0 64 65 66 20 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 def.check_key(self):........."""
29900 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 20 74 6f 20 62 65 20 73 75 72 65 20 74 68 65 20 44 53 .........Check.to.be.sure.the.DS
29920 41 20 6f 62 6a 65 63 74 20 68 61 73 20 61 20 76 61 6c 69 64 20 70 72 69 76 61 74 65 20 6b 65 79 A.object.has.a.valid.private.key
29940 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 31 20 28 74 72 75 65 29 20 69 66 ...........:return:..1.(true).if
29960 20 61 20 76 61 6c 69 64 20 70 72 69 76 61 74 65 20 6b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 .a.valid.private.key........."""
29980 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 73 61 5f 74 79 70 65 5f 63 68 65 63 .........assert.m2.dsa_type_chec
299a0 6b 28 73 65 6c 66 2e 64 73 61 29 2c 20 22 27 64 73 61 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a k(self.dsa),."'dsa'.type.error".
299c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 63 68 65 63 6b 5f 6b 65 79 28 ........return.m2.dsa_check_key(
299e0 73 65 6c 66 2e 64 73 61 29 0a 0a 0a 63 6c 61 73 73 20 44 53 41 5f 70 75 62 28 44 53 41 29 3a 0a self.dsa)...class.DSA_pub(DSA):.
29a00 0a 20 20 20 20 22 22 22 0a 20 20 20 20 54 68 69 73 20 63 6c 61 73 73 20 69 73 20 61 20 44 53 41 .....""".....This.class.is.a.DSA
29a20 20 63 6f 6e 74 65 78 74 20 74 68 61 74 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73 20 61 20 70 75 .context.that.only.supports.a.pu
29a40 62 6c 69 63 20 6b 65 79 0a 20 20 20 20 61 6e 64 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2e 20 20 blic.key.....and.verification...
29a60 49 74 20 64 6f 65 73 20 4e 4f 54 20 73 75 70 70 6f 72 74 20 61 20 70 72 69 76 61 74 65 20 6b 65 It.does.NOT.support.a.private.ke
29a80 79 20 6f 72 0a 20 20 20 20 73 69 67 6e 69 6e 67 2e 0a 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 y.or.....signing......."""......
29aa0 64 65 66 20 73 69 67 6e 28 73 65 6c 66 2c 20 2a 61 72 67 76 29 3a 0a 20 20 20 20 20 20 20 20 23 def.sign(self,.*argv):.........#
29ac0 20 74 79 70 65 3a 20 28 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 72 61 .type:.(*Any).->.None.........ra
29ae0 69 73 65 20 44 53 41 45 72 72 6f 72 28 27 44 53 41 5f 70 75 62 20 6f 62 6a 65 63 74 20 68 61 73 ise.DSAError('DSA_pub.object.has
29b00 20 6e 6f 20 70 72 69 76 61 74 65 20 6b 65 79 27 29 0a 0a 20 20 20 20 73 69 67 6e 5f 61 73 6e 31 .no.private.key')......sign_asn1
29b20 20 3d 20 73 69 67 6e 0a 0a 20 20 20 20 64 65 66 20 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 29 .=.sign......def.check_key(self)
29b40 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 :.........#.type:.().->.int.....
29b60 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 64 6f 65 73 20 44 53 ....""".........:return:.does.DS
29b80 41 5f 70 75 62 20 63 6f 6e 74 61 69 6e 20 61 20 70 75 62 20 6b 65 79 3f 0a 20 20 20 20 20 20 20 A_pub.contain.a.pub.key?........
29ba0 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 63 68 65 63 6b .""".........return.m2.dsa_check
29bc0 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2e 64 73 61 29 0a 0a 20 20 20 20 73 61 76 65 5f 6b 65 79 _pub_key(self.dsa)......save_key
29be0 20 3d 20 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 0a 0a 20 20 20 20 73 61 76 65 5f 6b 65 .=.DSA.save_pub_key......save_ke
29c00 79 5f 62 69 6f 20 3d 20 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 0a 0a 23 20 y_bio.=.DSA.save_pub_key_bio..#.
29c20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
29c40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 ------------------------------.#
29c60 20 66 61 63 74 6f 72 69 65 73 20 61 6e 64 20 6f 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 0a .factories.and.other.functions..
29c80 0a 64 65 66 20 67 65 6e 5f 70 61 72 61 6d 73 28 62 69 74 73 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 .def.gen_params(bits,.callback=u
29ca0 74 69 6c 2e 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 til.genparam_callback):.....#.ty
29cc0 70 65 3a 20 28 69 6e 74 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 53 41 0a 20 20 20 20 22 pe:.(int,.Callable).->.DSA....."
29ce0 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 67 65 6e "".....Factory.function.that.gen
29d00 65 72 61 74 65 73 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 0a 20 20 20 20 69 6e erates.DSA.parameters.and.....in
29d20 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 stantiates.a.DSA.object.from.the
29d40 20 6f 75 74 70 75 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 74 73 3a 20 54 68 65 20 6c .output.......:param.bits:.The.l
29d60 65 6e 67 74 68 20 6f 66 20 74 68 65 20 70 72 69 6d 65 20 74 6f 20 62 65 20 67 65 6e 65 72 61 74 ength.of.the.prime.to.be.generat
29d80 65 64 2e 20 49 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 62 69 74 73 27 20 3c ed..If..................'bits'.<
29da0 20 35 31 32 2c 20 69 74 20 69 73 20 73 65 74 20 74 6f 20 35 31 32 2e 0a 20 20 20 20 3a 70 61 72 .512,.it.is.set.to.512......:par
29dc0 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f am.callback:.A.Python.callback.o
29de0 62 6a 65 63 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 bject.that.will.be..............
29e00 20 20 20 20 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 67 65 6e ....invoked.during.parameter.gen
29e20 65 72 61 74 69 6f 6e 3b 20 69 74 20 75 73 75 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eration;.it.usual...............
29e40 20 20 20 70 75 72 70 6f 73 65 20 69 73 20 74 6f 20 70 72 6f 76 69 64 65 20 76 69 73 75 61 6c 20 ...purpose.is.to.provide.visual.
29e60 66 65 65 64 62 61 63 6b 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 69 6e 73 74 61 6e 63 65 feedback......:return:..instance
29e80 20 6f 66 20 44 53 41 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 64 73 61 20 3d 20 6d 32 2e 64 73 .of.DSA......""".....dsa.=.m2.ds
29ea0 61 5f 67 65 6e 65 72 61 74 65 5f 70 61 72 61 6d 65 74 65 72 73 28 62 69 74 73 2c 20 63 61 6c 6c a_generate_parameters(bits,.call
29ec0 62 61 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 44 53 41 28 64 73 61 2c 20 31 29 0a 0a 0a 64 back).....return.DSA(dsa,.1)...d
29ee0 65 66 20 73 65 74 5f 70 61 72 61 6d 73 28 70 2c 20 71 2c 20 67 29 3a 0a 20 20 20 20 23 20 74 79 ef.set_params(p,.q,.g):.....#.ty
29f00 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73 29 20 2d 3e 20 44 53 41 pe:.(bytes,.bytes,.bytes).->.DSA
29f20 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 74 68 .....""".....Factory.function.th
29f40 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 20 6f 62 6a 65 63 74 20 77 69 74 at.instantiates.a.DSA.object.wit
29f60 68 20 44 53 41 0a 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 0a 20 20 20 20 3a 70 61 72 61 h.DSA.....parameters.......:para
29f80 6d 20 70 3a 20 76 61 6c 75 65 20 6f 66 20 70 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 m.p:.value.of.p,.a."byte.string"
29fa0 0a 20 20 20 20 3a 70 61 72 61 6d 20 71 3a 20 76 61 6c 75 65 20 6f 66 20 71 2c 20 61 20 22 62 79 .....:param.q:.value.of.q,.a."by
29fc0 74 65 20 73 74 72 69 6e 67 22 0a 20 20 20 20 3a 70 61 72 61 6d 20 67 3a 20 76 61 6c 75 65 20 6f te.string".....:param.g:.value.o
29fe0 66 20 67 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 0a 20 20 20 20 3a 72 65 74 75 72 6e f.g,.a."byte.string".....:return
2a000 3a 20 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 44 53 41 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 :..instance.of.DSA......""".....
2a020 64 73 61 20 3d 20 6d 32 2e 64 73 61 5f 6e 65 77 28 29 0a 20 20 20 20 6d 32 2e 64 73 61 5f 73 65 dsa.=.m2.dsa_new().....m2.dsa_se
2a040 74 5f 70 71 67 28 64 73 61 2c 20 70 2c 20 71 2c 20 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 44 t_pqg(dsa,.p,.q,.g).....return.D
2a060 53 41 28 64 73 61 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 61 72 61 6d 73 28 66 69 6c SA(dsa,.1)...def.load_params(fil
2a080 65 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c e,.callback=util.passphrase_call
2a0a0 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c back):.....#.type:.(AnyStr,.Call
2a0c0 61 62 6c 65 29 20 2d 3e 20 44 53 41 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 able).->.DSA.....""".....Factory
2a0e0 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 .function.that.instantiates.a.DS
2a100 41 20 6f 62 6a 65 63 74 20 77 69 74 68 20 44 53 41 0a 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 A.object.with.DSA.....parameters
2a120 20 66 72 6f 6d 20 61 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 .from.a.file.......:param.file:.
2a140 20 20 20 20 4e 61 6d 65 73 20 74 68 65 20 66 69 6c 65 20 28 61 20 70 61 74 68 29 20 74 68 61 74 ....Names.the.file.(a.path).that
2a160 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .contains.the.PEM...............
2a180 20 20 20 20 20 20 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 .......representation.of.the.DSA
2a1a0 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b .parameters......:param.callback
2a1c0 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 63 74 20 74 68 61 74 20 :.A.Python.callback.object.that.
2a1e0 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 76 will.be......................inv
2a200 6f 6b 65 64 20 69 66 20 74 68 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 66 69 6c 65 20 oked.if.the.DSA.parameters.file.
2a220 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 70 68 72 61 is......................passphra
2a240 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 se-protected......:return:......
2a260 20 20 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 44 53 41 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 ...instance.of.DSA......""".....
2a280 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a with.BIO.openfile(file).as.bio:.
2a2a0 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 28 62 69 ........ret.=.load_params_bio(bi
2a2c0 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 0a 64 o,.callback)......return.ret...d
2a2e0 65 66 20 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b ef.load_params_bio(bio,.callback
2a300 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 =util.passphrase_callback):.....
2a320 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 #.type:.(BIO.BIO,.Callable).->.D
2a340 53 41 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 SA.....""".....Factory.function.
2a360 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 20 6f 62 6a 65 63 74 20 77 that.instantiates.a.DSA.object.w
2a380 69 74 68 20 44 53 41 0a 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 61 20 4d 32 ith.DSA.....parameters.from.a.M2
2a3a0 43 72 79 70 74 6f 2e 42 49 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 Crypto.BIO.object.......:param.b
2a3c0 69 6f 3a 20 20 20 20 20 20 43 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 20 72 65 70 72 65 73 io:......Contains.the.PEM.repres
2a3e0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 0a 20 20 20 20 20 20 20 20 20 20 20 20 entation.of.the.DSA.............
2a400 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 .........parameters......:param.
2a420 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 callback:.A.Python.callback.obje
2a440 63 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ct.that.will.be.................
2a460 20 20 20 20 20 69 6e 76 6f 6b 65 64 20 69 66 20 74 68 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 .....invoked.if.the.DSA.paramete
2a480 72 73 20 66 69 6c 65 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rs.file.is......................
2a4a0 70 61 73 73 70 68 72 61 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 0a 20 20 20 20 3a 72 65 74 75 72 passphrase-protected......:retur
2a4c0 6e 3a 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 44 53 41 2e 0a 20 20 20 20 n:.........instance.of.DSA......
2a4e0 22 22 22 0a 20 20 20 20 64 73 61 20 3d 20 6d 32 2e 64 73 61 5f 72 65 61 64 5f 70 61 72 61 6d 73 """.....dsa.=.m2.dsa_read_params
2a500 28 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 72 65 74 75 72 (bio._ptr(),.callback).....retur
2a520 6e 20 44 53 41 28 64 73 61 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 28 66 69 6c n.DSA(dsa,.1)...def.load_key(fil
2a540 65 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c e,.callback=util.passphrase_call
2a560 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c back):.....#.type:.(AnyStr,.Call
2a580 61 62 6c 65 29 20 2d 3e 20 44 53 41 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 able).->.DSA.....""".....Factory
2a5a0 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 .function.that.instantiates.a.DS
2a5c0 41 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 61 0a 20 20 20 20 50 45 4d 20 65 6e 63 6f 64 65 64 20 A.object.from.a.....PEM.encoded.
2a5e0 44 53 41 20 6b 65 79 20 70 61 69 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 DSA.key.pair.......:param.file:.
2a600 20 20 20 20 4e 61 6d 65 73 20 74 68 65 20 66 69 6c 65 20 28 61 20 70 61 74 68 29 20 74 68 61 74 ....Names.the.file.(a.path).that
2a620 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .contains.the.PEM...............
2a640 20 20 20 20 20 20 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 .......representation.of.the.DSA
2a660 20 6b 65 79 20 70 61 69 72 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 .key.pair......:param.callback:.
2a680 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 63 74 20 74 68 61 74 20 77 69 A.Python.callback.object.that.wi
2a6a0 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 76 6f 6b ll.be......................invok
2a6c0 65 64 20 69 66 20 74 68 65 20 44 53 41 20 6b 65 79 20 70 61 69 72 20 69 73 0a 20 20 20 20 20 20 ed.if.the.DSA.key.pair.is.......
2a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 70 68 72 61 73 65 2d 70 72 6f 74 65 63 ...............passphrase-protec
2a700 74 65 64 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e ted......:return:.........instan
2a720 63 65 20 6f 66 20 44 53 41 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e ce.of.DSA......""".....with.BIO.
2a740 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 72 openfile(file).as.bio:.........r
2a760 65 74 20 3d 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 et.=.load_key_bio(bio,.callback)
2a780 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f ......return.ret...def.load_key_
2a7a0 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 bio(bio,.callback=util.passphras
2a7c0 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 e_callback):.....#.type:.(BIO.BI
2a7e0 4f 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 53 41 0a 20 20 20 20 22 22 22 0a 20 20 20 20 O,.Callable).->.DSA.....""".....
2a800 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 Factory.function.that.instantiat
2a820 65 73 20 61 20 44 53 41 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 61 0a 20 20 20 20 50 45 4d 20 65 es.a.DSA.object.from.a.....PEM.e
2a840 6e 63 6f 64 65 64 20 44 53 41 20 6b 65 79 20 70 61 69 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d ncoded.DSA.key.pair.......:param
2a860 20 62 69 6f 3a 20 20 20 20 20 20 43 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 20 72 65 70 72 .bio:......Contains.the.PEM.repr
2a880 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 0a 20 20 20 20 20 20 20 20 20 20 esentation.of.the.DSA...........
2a8a0 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 70 61 69 72 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 ...........key.pair......:param.
2a8c0 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 callback:.A.Python.callback.obje
2a8e0 63 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ct.that.will.be.................
2a900 20 20 20 20 20 69 6e 76 6f 6b 65 64 20 69 66 20 74 68 65 20 44 53 41 20 6b 65 79 20 70 61 69 72 .....invoked.if.the.DSA.key.pair
2a920 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 70 68 72 .is......................passphr
2a940 61 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 ase-protected......:return:.....
2a960 20 20 20 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 44 53 41 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 ....instance.of.DSA......"""....
2a980 20 64 73 61 20 3d 20 6d 32 2e 64 73 61 5f 72 65 61 64 5f 6b 65 79 28 62 69 6f 2e 5f 70 74 72 28 .dsa.=.m2.dsa_read_key(bio._ptr(
2a9a0 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 44 53 41 28 64 73 61 2c ),.callback).....return.DSA(dsa,
2a9c0 20 31 29 0a 0a 0a 64 65 66 20 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 28 70 2c .1)...def.pub_key_from_params(p,
2a9e0 20 71 2c 20 67 2c 20 70 75 62 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c .q,.g,.pub):.....#.type:.(bytes,
2aa00 20 62 79 74 65 73 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73 29 20 2d 3e 20 44 53 41 5f 70 75 62 .bytes,.bytes,.bytes).->.DSA_pub
2aa20 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 74 68 .....""".....Factory.function.th
2aa40 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 5f 70 75 62 20 6f 62 6a 65 63 74 at.instantiates.a.DSA_pub.object
2aa60 20 75 73 69 6e 67 0a 20 20 20 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 70 75 .using.....the.parameters.and.pu
2aa80 62 6c 69 63 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 blic.key.specified.......:param.
2aaa0 70 3a 20 76 61 6c 75 65 20 6f 66 20 70 0a 20 20 20 20 3a 70 61 72 61 6d 20 71 3a 20 76 61 6c 75 p:.value.of.p.....:param.q:.valu
2aac0 65 20 6f 66 20 71 0a 20 20 20 20 3a 70 61 72 61 6d 20 67 3a 20 76 61 6c 75 65 20 6f 66 20 67 0a e.of.q.....:param.g:.value.of.g.
2aae0 20 20 20 20 3a 70 61 72 61 6d 20 70 75 62 3a 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 70 75 62 ....:param.pub:.value.of.the.pub
2ab00 6c 69 63 20 6b 65 79 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 69 6e 73 74 61 6e 63 65 20 6f lic.key.....:return:..instance.o
2ab20 66 20 44 53 41 5f 70 75 62 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 64 73 61 20 3d 20 6d 32 2e f.DSA_pub......""".....dsa.=.m2.
2ab40 64 73 61 5f 6e 65 77 28 29 0a 20 20 20 20 6d 32 2e 64 73 61 5f 73 65 74 5f 70 71 67 28 64 73 61 dsa_new().....m2.dsa_set_pqg(dsa
2ab60 2c 20 70 2c 20 71 2c 20 67 29 0a 20 20 20 20 6d 32 2e 64 73 61 5f 73 65 74 5f 70 75 62 28 64 73 ,.p,.q,.g).....m2.dsa_set_pub(ds
2ab80 61 2c 20 70 75 62 29 0a 20 20 20 20 72 65 74 75 72 6e 20 44 53 41 5f 70 75 62 28 64 73 61 2c 20 a,.pub).....return.DSA_pub(dsa,.
2aba0 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 28 66 69 6c 65 2c 20 63 61 6c 6c 1)...def.load_pub_key(file,.call
2abc0 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a back=util.passphrase_callback):.
2abe0 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d ....#.type:.(AnyStr,.Callable).-
2ac00 3e 20 44 53 41 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 >.DSA_pub.....""".....Factory.fu
2ac20 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 5f 70 nction.that.instantiates.a.DSA_p
2ac40 75 62 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 0a 20 20 20 20 61 20 44 53 41 20 70 75 62 6c 69 63 ub.object.using.....a.DSA.public
2ac60 20 6b 65 79 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 50 45 4d 20 66 69 6c 65 2e 20 20 54 68 65 .key.contained.in.PEM.file...The
2ac80 20 50 45 4d 20 66 69 6c 65 0a 20 20 20 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 70 .PEM.file.....must.contain.the.p
2aca0 61 72 61 6d 65 74 65 72 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 70 75 62 arameters.in.addition.to.the.pub
2acc0 6c 69 63 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 20 20 20 20 4e lic.key.......:param.file:.....N
2ace0 61 6d 65 73 20 74 68 65 20 66 69 6c 65 20 28 61 20 70 61 74 68 29 20 74 68 61 74 20 63 6f 6e 74 ames.the.file.(a.path).that.cont
2ad00 61 69 6e 73 20 74 68 65 20 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ains.the.PEM....................
2ad20 20 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 20 70 75 62 6c ..representation.of.the.DSA.publ
2ad40 69 63 20 6b 65 79 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 ic.key......:param.callback:.A.P
2ad60 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 63 74 20 74 68 61 74 20 77 69 6c 6c 20 ython.callback.object.that.will.
2ad80 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 76 6f 6b 65 64 20 be......................invoked.
2ada0 73 68 6f 75 6c 64 20 74 68 65 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 62 65 0a 20 20 20 should.the.DSA.public.key.be....
2adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 70 68 72 61 73 65 2d 70 72 6f ..................passphrase-pro
2ade0 74 65 63 74 65 64 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 20 69 6e 73 tected......:return:.........ins
2ae00 74 61 6e 63 65 20 6f 66 20 44 53 41 5f 70 75 62 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 tance.of.DSA_pub......""".....wi
2ae20 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 th.BIO.openfile(file).as.bio:...
2ae40 20 20 20 20 20 20 72 65 74 20 3d 20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f ......ret.=.load_pub_key_bio(bio
2ae60 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 0a 64 65 ,.callback)......return.ret...de
2ae80 66 20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b f.load_pub_key_bio(bio,.callback
2aea0 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 =util.passphrase_callback):.....
2aec0 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 #.type:.(BIO.BIO,.Callable).->.D
2aee0 53 41 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 SA_pub.....""".....Factory.funct
2af00 69 6f 6e 20 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 5f 70 75 62 20 ion.that.instantiates.a.DSA_pub.
2af20 6f 62 6a 65 63 74 20 75 73 69 6e 67 0a 20 20 20 20 61 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 object.using.....a.DSA.public.ke
2af40 79 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 20 20 54 68 65 20 y.contained.in.PEM.format...The.
2af60 50 45 4d 0a 20 20 20 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 70 61 72 61 6d 65 74 PEM.....must.contain.the.paramet
2af80 65 72 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 ers.in.addition.to.the.public.ke
2afa0 79 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 20 20 20 20 20 43 6f 6e 74 61 69 6e y.......:param.bio:......Contain
2afc0 73 20 74 68 65 20 50 45 4d 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 s.the.PEM.representation.of.the.
2afe0 44 53 41 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 DSA......................public.
2b000 6b 65 79 20 28 77 69 74 68 20 70 61 72 61 6d 73 29 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 key.(with.params)......:param.ca
2b020 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 63 74 llback:.A.Python.callback.object
2b040 20 74 68 61 74 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .that.will.be...................
2b060 20 20 20 69 6e 76 6f 6b 65 64 20 73 68 6f 75 6c 64 20 74 68 65 20 44 53 41 20 70 75 62 6c 69 63 ...invoked.should.the.DSA.public
2b080 20 6b 65 79 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 .key.be......................pas
2b0a0 73 70 68 72 61 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 sphrase-protected......:return:.
2b0c0 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 44 53 41 5f 70 75 62 2e 0a 20 20 20 ........instance.of.DSA_pub.....
2b0e0 20 22 22 22 0a 20 20 20 20 64 73 61 70 75 62 20 3d 20 6d 32 2e 64 73 61 5f 72 65 61 64 5f 70 75 .""".....dsapub.=.m2.dsa_read_pu
2b100 62 5f 6b 65 79 28 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 b_key(bio._ptr(),.callback).....
2b120 72 65 74 75 72 6e 20 44 53 41 5f 70 75 62 28 64 73 61 70 75 62 2c 20 31 29 0a 94 7d 94 28 8c 08 return.DSA_pub(dsapub,.1)..}.(..
2b140 44 53 41 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 11 4b 12 87 94 8c 0c 44 53 41 2e 5f 5f 69 6e 69 74 DSAError.j}...K.K.....DSA.__init
2b160 5f 5f 94 6a 74 1f 00 00 4b 32 4b 3a 87 94 8c 0b 44 53 41 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 __.jt...K2K:....DSA.__del__.jt..
2b180 00 4b 3c 4b 3f 87 94 8c 0b 44 53 41 2e 5f 5f 6c 65 6e 5f 5f 94 6a 74 1f 00 00 4b 41 4b 49 87 94 .K<K?....DSA.__len__.jt...KAKI..
2b1a0 8c 0f 44 53 41 2e 5f 5f 67 65 74 61 74 74 72 5f 5f 94 6a 74 1f 00 00 4b 4b 4b 59 87 94 8c 0f 44 ..DSA.__getattr__.jt...KKKY....D
2b1c0 53 41 2e 5f 5f 73 65 74 61 74 74 72 5f 5f 94 6a 74 1f 00 00 4b 5b 4b 62 87 94 8c 0e 44 53 41 2e SA.__setattr__.jt...K[Kb....DSA.
2b1e0 73 65 74 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4b 64 4b 76 87 94 8c 0b 44 53 41 2e 67 65 6e 5f set_params.jt...KdKv....DSA.gen_
2b200 6b 65 79 94 6a 74 1f 00 00 4b 78 4b 7e 87 94 8c 0f 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 key.jt...KxK~....DSA.save_params
2b220 94 6a 74 1f 00 00 4b 80 4b 8b 87 94 8c 13 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 .jt...K.K.....DSA.save_params_bi
2b240 6f 94 6a 74 1f 00 00 4b 8d 4b 95 87 94 8c 0c 44 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 74 1f 00 o.jt...K.K.....DSA.save_key.jt..
2b260 00 4b 97 4b a5 87 94 8c 10 44 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 00 4b .K.K.....DSA.save_key_bio.jt...K
2b280 a7 4b bb 87 94 8c 10 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 74 1f 00 00 4b bd 4b .K.....DSA.save_pub_key.jt...K.K
2b2a0 c9 87 94 8c 14 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 00 4b .....DSA.save_pub_key_bio.jt...K
2b2c0 cb 4b d4 87 94 8c 08 44 53 41 2e 73 69 67 6e 94 6a 74 1f 00 00 4b d6 4b e1 87 94 8c 0a 44 53 41 .K.....DSA.sign.jt...K.K.....DSA
2b2e0 2e 76 65 72 69 66 79 94 6a 74 1f 00 00 4b e3 4b f0 87 94 8c 0d 44 53 41 2e 73 69 67 6e 5f 61 73 .verify.jt...K.K.....DSA.sign_as
2b300 6e 31 94 6a 74 1f 00 00 4b f2 4b f4 87 94 8c 0f 44 53 41 2e 76 65 72 69 66 79 5f 61 73 6e 31 94 n1.jt...K.K.....DSA.verify_asn1.
2b320 6a 74 1f 00 00 4b f6 4b f8 87 94 8c 0d 44 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 74 1f 00 00 jt...K.K.....DSA.check_key.jt...
2b340 4b fa 4d 01 01 87 94 8c 03 44 53 41 94 6a 7d 1f 00 00 4b 17 4d 01 01 87 94 8c 0c 44 53 41 5f 70 K.M......DSA.j}...K.M......DSA_p
2b360 75 62 2e 73 69 67 6e 94 6a 74 1f 00 00 4d 0d 01 4d 0f 01 87 94 8c 11 44 53 41 5f 70 75 62 2e 63 ub.sign.jt...M..M......DSA_pub.c
2b380 68 65 63 6b 5f 6b 65 79 94 6a 74 1f 00 00 4d 13 01 4d 18 01 87 94 8c 07 44 53 41 5f 70 75 62 94 heck_key.jt...M..M......DSA_pub.
2b3a0 6a 7d 1f 00 00 4d 04 01 4d 1c 01 87 94 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4d j}...M..M......gen_params.jt...M
2b3c0 22 01 4d 30 01 87 94 8c 0a 73 65 74 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4d 33 01 4d 40 01 87 ".M0.....set_params.jt...M3.M@..
2b3e0 94 8c 0b 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4d 43 01 4d 53 01 87 94 8c 0f 6c 6f ...load_params.jt...MC.MS.....lo
2b400 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 74 1f 00 00 4d 56 01 4d 64 01 87 94 8c 08 6c 6f 61 ad_params_bio.jt...MV.Md.....loa
2b420 64 5f 6b 65 79 94 6a 74 1f 00 00 4d 67 01 4d 77 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 d_key.jt...Mg.Mw.....load_key_bi
2b440 6f 94 6a 74 1f 00 00 4d 7a 01 4d 88 01 87 94 8c 13 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 o.jt...Mz.M......pub_key_from_pa
2b460 72 61 6d 73 94 6a 74 1f 00 00 4d 8b 01 4d 9a 01 87 94 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 rams.jt...M..M......load_pub_key
2b480 94 6a 74 1f 00 00 4d 9d 01 4d ae 01 87 94 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f .jt...M..M......load_pub_key_bio
2b4a0 94 6a 74 1f 00 00 4d b1 01 4d c0 01 87 94 75 7d 94 28 8c 03 44 53 41 94 6a 53 02 00 00 8c 0d 44 .jt...M..M....u}.(..DSA.jS.....D
2b4c0 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 0b 44 53 41 2e 67 65 6e 5f 6b 65 79 94 SA.check_key.jS.....DSA.gen_key.
2b4e0 6a 53 02 00 00 8c 0c 44 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 10 44 53 41 2e 73 jS.....DSA.save_key.jS.....DSA.s
2b500 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0f 44 53 41 2e 73 61 76 65 5f 70 61 72 61 ave_key_bio.jS.....DSA.save_para
2b520 6d 73 94 6a 53 02 00 00 8c 13 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 53 ms.jS.....DSA.save_params_bio.jS
2b540 02 00 00 8c 10 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 14 44 53 41 .....DSA.save_pub_key.jS.....DSA
2b560 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0e 44 53 41 2e 73 65 74 .save_pub_key_bio.jS.....DSA.set
2b580 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 44 53 41 2e 73 69 67 6e 94 6a 53 02 00 00 8c 0d 44 _params.jS.....DSA.sign.jS.....D
2b5a0 53 41 2e 73 69 67 6e 5f 61 73 6e 31 94 6a 53 02 00 00 8c 0a 44 53 41 2e 76 65 72 69 66 79 94 6a SA.sign_asn1.jS.....DSA.verify.j
2b5c0 53 02 00 00 8c 0f 44 53 41 2e 76 65 72 69 66 79 5f 61 73 6e 31 94 6a 53 02 00 00 8c 08 44 53 41 S.....DSA.verify_asn1.jS.....DSA
2b5e0 45 72 72 6f 72 94 6a 53 02 00 00 8c 07 44 53 41 5f 70 75 62 94 6a 53 02 00 00 8c 11 44 53 41 5f Error.jS.....DSA_pub.jS.....DSA_
2b600 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 0c 44 53 41 5f 70 75 62 2e 73 69 67 pub.check_key.jS.....DSA_pub.sig
2b620 6e 94 6a 53 02 00 00 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 08 6c 6f 61 64 5f n.jS.....gen_params.jS.....load_
2b640 6b 65 79 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0b 6c key.jS.....load_key_bio.jS.....l
2b660 6f 61 64 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 0f 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 oad_params.jS.....load_params_bi
2b680 6f 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 10 6c 6f 61 o.jS.....load_pub_key.jS.....loa
2b6a0 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 13 70 75 62 5f 6b 65 79 5f 66 72 6f d_pub_key_bio.jS.....pub_key_fro
2b6c0 6d 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 0a 73 65 74 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 m_params.jS.....set_params.jS...
2b6e0 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 44 53 41 94 74 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 45 43 94 u..M2Crypto.DSA.t...M2Crypto.EC.
2b700 28 58 64 3e 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 (Xd>..from.__future__.import.abs
2b720 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 0a 4d 32 43 72 79 70 74 6f 20 77 72 61 70 70 olute_import..""".M2Crypto.wrapp
2b740 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 45 43 44 48 2f 45 43 44 53 41 20 41 50 49 2e 0a 0a er.for.OpenSSL.ECDH/ECDSA.API...
2b760 40 72 65 71 75 69 72 65 73 3a 20 4f 70 65 6e 53 53 4c 20 30 2e 39 2e 38 20 6f 72 20 6e 65 77 65 @requires:.OpenSSL.0.9.8.or.newe
2b780 72 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 r..Copyright.(c).1999-2003.Ng.Ph
2b7a0 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a eng.Siong..All.rights.reserved..
2b7c0 0a 50 6f 72 74 69 6f 6e 73 20 63 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 35 2d 32 30 30 .Portions.copyright.(c).2005-200
2b7e0 36 20 56 72 69 6a 65 20 55 6e 69 76 65 72 73 69 74 65 69 74 20 41 6d 73 74 65 72 64 61 6d 2e 0a 6.Vrije.Universiteit.Amsterdam..
2b800 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 All.rights.reserved."""..from.M2
2b820 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 42 49 4f 2c 20 45 72 72 2c 20 45 56 50 2c 20 6d 32 2c Crypto.import.BIO,.Err,.EVP,.m2,
2b840 20 75 74 69 6c 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d .util.if.util.py27plus:.....from
2b860 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c .typing.import.AnyStr,.Callable,
2b880 20 44 69 63 74 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 2c 20 55 6e 69 6f 6e 20 20 23 .Dict,.Optional,.Tuple,.Union..#
2b8a0 20 6e 6f 71 61 0a 0a 45 43 5f 4b 65 79 20 3d 20 62 79 74 65 73 0a 0a 0a 63 6c 61 73 73 20 45 43 .noqa..EC_Key.=.bytes...class.EC
2b8c0 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 65 Error(Exception):.....pass..m2.e
2b8e0 63 5f 69 6e 69 74 28 45 43 45 72 72 6f 72 29 0a 0a 23 20 43 75 72 76 65 20 69 64 65 6e 74 69 66 c_init(ECError)..#.Curve.identif
2b900 69 65 72 20 63 6f 6e 73 74 61 6e 74 73 0a 4e 49 44 5f 73 65 63 70 31 31 32 72 31 20 3d 20 6d 32 ier.constants.NID_secp112r1.=.m2
2b920 2e 4e 49 44 5f 73 65 63 70 31 31 32 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f .NID_secp112r1..#.type:.int.NID_
2b940 73 65 63 70 31 31 32 72 32 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 31 31 32 72 32 20 20 23 20 secp112r2.=.m2.NID_secp112r2..#.
2b960 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 31 32 38 72 31 20 3d 20 6d 32 2e 4e 49 44 type:.int.NID_secp128r1.=.m2.NID
2b980 5f 73 65 63 70 31 32 38 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 _secp128r1..#.type:.int.NID_secp
2b9a0 31 32 38 72 32 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 31 32 38 72 32 20 20 23 20 74 79 70 65 128r2.=.m2.NID_secp128r2..#.type
2b9c0 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 31 36 30 6b 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 :.int.NID_secp160k1.=.m2.NID_sec
2b9e0 70 31 36 30 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 31 36 30 72 p160k1..#.type:.int.NID_secp160r
2ba00 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 31 36 30 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 1.=.m2.NID_secp160r1..#.type:.in
2ba20 74 0a 4e 49 44 5f 73 65 63 70 31 36 30 72 32 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 31 36 30 t.NID_secp160r2.=.m2.NID_secp160
2ba40 72 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 31 39 32 6b 31 20 3d 20 r2..#.type:.int.NID_secp192k1.=.
2ba60 6d 32 2e 4e 49 44 5f 73 65 63 70 31 39 32 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 m2.NID_secp192k1..#.type:.int.NI
2ba80 44 5f 73 65 63 70 32 32 34 6b 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 32 32 34 6b 31 20 20 D_secp224k1.=.m2.NID_secp224k1..
2baa0 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 32 32 34 72 31 20 3d 20 6d 32 2e 4e #.type:.int.NID_secp224r1.=.m2.N
2bac0 49 44 5f 73 65 63 70 32 32 34 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 ID_secp224r1..#.type:.int.NID_se
2bae0 63 70 32 35 36 6b 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 32 35 36 6b 31 20 20 23 20 74 79 cp256k1.=.m2.NID_secp256k1..#.ty
2bb00 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 33 38 34 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 pe:.int.NID_secp384r1.=.m2.NID_s
2bb20 65 63 70 33 38 34 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 70 35 32 ecp384r1..#.type:.int.NID_secp52
2bb40 31 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 70 35 32 31 72 31 20 20 23 20 74 79 70 65 3a 20 1r1.=.m2.NID_secp521r1..#.type:.
2bb60 69 6e 74 0a 4e 49 44 5f 73 65 63 74 31 31 33 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 31 int.NID_sect113r1.=.m2.NID_sect1
2bb80 31 33 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 31 31 33 72 32 20 13r1..#.type:.int.NID_sect113r2.
2bba0 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 31 31 33 72 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a =.m2.NID_sect113r2..#.type:.int.
2bbc0 4e 49 44 5f 73 65 63 74 31 33 31 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 31 33 31 72 31 NID_sect131r1.=.m2.NID_sect131r1
2bbe0 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 31 33 31 72 32 20 3d 20 6d 32 ..#.type:.int.NID_sect131r2.=.m2
2bc00 2e 4e 49 44 5f 73 65 63 74 31 33 31 72 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f .NID_sect131r2..#.type:.int.NID_
2bc20 73 65 63 74 31 36 33 6b 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 31 36 33 6b 31 20 20 23 20 sect163k1.=.m2.NID_sect163k1..#.
2bc40 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 31 36 33 72 31 20 3d 20 6d 32 2e 4e 49 44 type:.int.NID_sect163r1.=.m2.NID
2bc60 5f 73 65 63 74 31 36 33 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 _sect163r1..#.type:.int.NID_sect
2bc80 31 36 33 72 32 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 31 36 33 72 32 20 20 23 20 74 79 70 65 163r2.=.m2.NID_sect163r2..#.type
2bca0 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 31 39 33 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 :.int.NID_sect193r1.=.m2.NID_sec
2bcc0 74 31 39 33 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 31 39 33 72 t193r1..#.type:.int.NID_sect193r
2bce0 32 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 31 39 33 72 32 20 20 23 20 74 79 70 65 3a 20 69 6e 2.=.m2.NID_sect193r2..#.type:.in
2bd00 74 0a 23 20 64 65 66 61 75 6c 74 20 66 6f 72 20 73 65 63 67 2e 6f 72 67 20 54 4c 53 20 74 65 73 t.#.default.for.secg.org.TLS.tes
2bd20 74 20 73 65 72 76 65 72 0a 4e 49 44 5f 73 65 63 74 32 33 33 6b 31 20 3d 20 6d 32 2e 4e 49 44 5f t.server.NID_sect233k1.=.m2.NID_
2bd40 73 65 63 74 32 33 33 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 32 sect233k1..#.type:.int.NID_sect2
2bd60 33 33 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 32 33 33 72 31 20 20 23 20 74 79 70 65 3a 33r1.=.m2.NID_sect233r1..#.type:
2bd80 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 32 33 39 6b 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 .int.NID_sect239k1.=.m2.NID_sect
2bda0 32 33 39 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 32 38 33 6b 31 239k1..#.type:.int.NID_sect283k1
2bdc0 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 32 38 33 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 .=.m2.NID_sect283k1..#.type:.int
2bde0 0a 4e 49 44 5f 73 65 63 74 32 38 33 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 32 38 33 72 .NID_sect283r1.=.m2.NID_sect283r
2be00 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 34 30 39 6b 31 20 3d 20 6d 1..#.type:.int.NID_sect409k1.=.m
2be20 32 2e 4e 49 44 5f 73 65 63 74 34 30 39 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 2.NID_sect409k1..#.type:.int.NID
2be40 5f 73 65 63 74 34 30 39 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 34 30 39 72 31 20 20 23 _sect409r1.=.m2.NID_sect409r1..#
2be60 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 74 35 37 31 6b 31 20 3d 20 6d 32 2e 4e 49 .type:.int.NID_sect571k1.=.m2.NI
2be80 44 5f 73 65 63 74 35 37 31 6b 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 73 65 63 D_sect571k1..#.type:.int.NID_sec
2bea0 74 35 37 31 72 31 20 3d 20 6d 32 2e 4e 49 44 5f 73 65 63 74 35 37 31 72 31 20 20 23 20 74 79 70 t571r1.=.m2.NID_sect571r1..#.typ
2bec0 65 3a 20 69 6e 74 0a 0a 4e 49 44 5f 70 72 69 6d 65 31 39 32 76 31 20 3d 20 6d 32 2e 4e 49 44 5f e:.int..NID_prime192v1.=.m2.NID_
2bee0 58 39 5f 36 32 5f 70 72 69 6d 65 31 39 32 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 X9_62_prime192v1..#.type:.int.NI
2bf00 44 5f 70 72 69 6d 65 31 39 32 76 32 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d D_prime192v2.=.m2.NID_X9_62_prim
2bf20 65 31 39 32 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 70 72 69 6d 65 31 39 32 e192v2..#.type:.int.NID_prime192
2bf40 76 33 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 31 39 32 76 33 20 20 23 20 v3.=.m2.NID_X9_62_prime192v3..#.
2bf60 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 70 72 69 6d 65 32 33 39 76 31 20 3d 20 6d 32 2e 4e 49 type:.int.NID_prime239v1.=.m2.NI
2bf80 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 32 33 39 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a D_X9_62_prime239v1..#.type:.int.
2bfa0 4e 49 44 5f 70 72 69 6d 65 32 33 39 76 32 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 70 72 NID_prime239v2.=.m2.NID_X9_62_pr
2bfc0 69 6d 65 32 33 39 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 70 72 69 6d 65 32 ime239v2..#.type:.int.NID_prime2
2bfe0 33 39 76 33 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 32 33 39 76 33 20 20 39v3.=.m2.NID_X9_62_prime239v3..
2c000 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 70 72 69 6d 65 32 35 36 76 31 20 3d 20 6d 32 2e #.type:.int.NID_prime256v1.=.m2.
2c020 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 32 35 36 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e NID_X9_62_prime256v1..#.type:.in
2c040 74 0a 4e 49 44 5f 63 32 70 6e 62 31 36 33 76 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f t.NID_c2pnb163v1.=.m2.NID_X9_62_
2c060 63 32 70 6e 62 31 36 33 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 70 6e c2pnb163v1..#.type:.int.NID_c2pn
2c080 62 31 36 33 76 32 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 31 36 33 76 32 b163v2.=.m2.NID_X9_62_c2pnb163v2
2c0a0 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 70 6e 62 31 36 33 76 33 20 3d 20 6d ..#.type:.int.NID_c2pnb163v3.=.m
2c0c0 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 31 36 33 76 33 20 20 23 20 74 79 70 65 3a 20 2.NID_X9_62_c2pnb163v3..#.type:.
2c0e0 69 6e 74 0a 4e 49 44 5f 63 32 70 6e 62 31 37 36 76 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 int.NID_c2pnb176v1.=.m2.NID_X9_6
2c100 32 5f 63 32 70 6e 62 31 37 36 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 2_c2pnb176v1..#.type:.int.NID_c2
2c120 74 6e 62 31 39 31 76 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 31 39 31 tnb191v1.=.m2.NID_X9_62_c2tnb191
2c140 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 74 6e 62 31 39 31 76 32 20 3d v1..#.type:.int.NID_c2tnb191v2.=
2c160 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 31 39 31 76 32 20 20 23 20 74 79 70 65 .m2.NID_X9_62_c2tnb191v2..#.type
2c180 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 74 6e 62 31 39 31 76 33 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 :.int.NID_c2tnb191v3.=.m2.NID_X9
2c1a0 5f 36 32 5f 63 32 74 6e 62 31 39 31 76 33 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f _62_c2tnb191v3..#.type:.int.NID_
2c1c0 63 32 70 6e 62 32 30 38 77 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 32 c2pnb208w1.=.m2.NID_X9_62_c2pnb2
2c1e0 30 38 77 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 74 6e 62 32 33 39 76 31 08w1..#.type:.int.NID_c2tnb239v1
2c200 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 32 33 39 76 31 20 20 23 20 74 79 .=.m2.NID_X9_62_c2tnb239v1..#.ty
2c220 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 74 6e 62 32 33 39 76 32 20 3d 20 6d 32 2e 4e 49 44 5f pe:.int.NID_c2tnb239v2.=.m2.NID_
2c240 58 39 5f 36 32 5f 63 32 74 6e 62 32 33 39 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 X9_62_c2tnb239v2..#.type:.int.NI
2c260 44 5f 63 32 74 6e 62 32 33 39 76 33 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e D_c2tnb239v3.=.m2.NID_X9_62_c2tn
2c280 62 32 33 39 76 33 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 70 6e 62 32 37 32 b239v3..#.type:.int.NID_c2pnb272
2c2a0 77 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 32 37 32 77 31 20 20 23 20 w1.=.m2.NID_X9_62_c2pnb272w1..#.
2c2c0 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 70 6e 62 33 30 34 77 31 20 3d 20 6d 32 2e 4e 49 type:.int.NID_c2pnb304w1.=.m2.NI
2c2e0 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 33 30 34 77 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a D_X9_62_c2pnb304w1..#.type:.int.
2c300 4e 49 44 5f 63 32 74 6e 62 33 35 39 76 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 NID_c2tnb359v1.=.m2.NID_X9_62_c2
2c320 74 6e 62 33 35 39 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 70 6e 62 33 tnb359v1..#.type:.int.NID_c2pnb3
2c340 36 38 77 31 20 3d 20 6d 32 2e 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 33 36 38 77 31 20 20 68w1.=.m2.NID_X9_62_c2pnb368w1..
2c360 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 63 32 74 6e 62 34 33 31 72 31 20 3d 20 6d 32 2e #.type:.int.NID_c2tnb431r1.=.m2.
2c380 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 34 33 31 72 31 20 20 23 20 74 79 70 65 3a 20 69 6e NID_X9_62_c2tnb431r1..#.type:.in
2c3a0 74 0a 0a 23 20 54 6f 20 70 72 65 73 65 72 76 65 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 t..#.To.preserve.compatibility.w
2c3c0 69 74 68 20 6f 6c 64 65 72 20 6e 61 6d 65 73 0a 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 31 ith.older.names.NID_X9_62_prime1
2c3e0 39 32 76 31 20 3d 20 4e 49 44 5f 70 72 69 6d 65 31 39 32 76 31 20 20 23 20 74 79 70 65 3a 20 69 92v1.=.NID_prime192v1..#.type:.i
2c400 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 31 39 32 76 32 20 3d 20 4e 49 44 5f 70 72 nt.NID_X9_62_prime192v2.=.NID_pr
2c420 69 6d 65 31 39 32 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f ime192v2..#.type:.int.NID_X9_62_
2c440 70 72 69 6d 65 31 39 32 76 33 20 3d 20 4e 49 44 5f 70 72 69 6d 65 31 39 32 76 33 20 20 23 20 74 prime192v3.=.NID_prime192v3..#.t
2c460 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 32 33 39 76 31 20 3d 20 ype:.int.NID_X9_62_prime239v1.=.
2c480 4e 49 44 5f 70 72 69 6d 65 32 33 39 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f NID_prime239v1..#.type:.int.NID_
2c4a0 58 39 5f 36 32 5f 70 72 69 6d 65 32 33 39 76 32 20 3d 20 4e 49 44 5f 70 72 69 6d 65 32 33 39 76 X9_62_prime239v2.=.NID_prime239v
2c4c0 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 32 33 2..#.type:.int.NID_X9_62_prime23
2c4e0 39 76 33 20 3d 20 4e 49 44 5f 70 72 69 6d 65 32 33 39 76 33 20 20 23 20 74 79 70 65 3a 20 69 6e 9v3.=.NID_prime239v3..#.type:.in
2c500 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 70 72 69 6d 65 32 35 36 76 31 20 3d 20 4e 49 44 5f 70 72 69 t.NID_X9_62_prime256v1.=.NID_pri
2c520 6d 65 32 35 36 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 me256v1..#.type:.int.NID_X9_62_c
2c540 32 70 6e 62 31 36 33 76 31 20 3d 20 4e 49 44 5f 63 32 70 6e 62 31 36 33 76 31 20 20 23 20 74 79 2pnb163v1.=.NID_c2pnb163v1..#.ty
2c560 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 31 36 33 76 32 20 3d 20 4e pe:.int.NID_X9_62_c2pnb163v2.=.N
2c580 49 44 5f 63 32 70 6e 62 31 36 33 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 ID_c2pnb163v2..#.type:.int.NID_X
2c5a0 39 5f 36 32 5f 63 32 70 6e 62 31 36 33 76 33 20 3d 20 4e 49 44 5f 63 32 70 6e 62 31 36 33 76 33 9_62_c2pnb163v3.=.NID_c2pnb163v3
2c5c0 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 31 37 36 ..#.type:.int.NID_X9_62_c2pnb176
2c5e0 76 31 20 3d 20 4e 49 44 5f 63 32 70 6e 62 31 37 36 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 v1.=.NID_c2pnb176v1..#.type:.int
2c600 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 31 39 31 76 31 20 3d 20 4e 49 44 5f 63 32 74 6e .NID_X9_62_c2tnb191v1.=.NID_c2tn
2c620 62 31 39 31 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 b191v1..#.type:.int.NID_X9_62_c2
2c640 74 6e 62 31 39 31 76 32 20 3d 20 4e 49 44 5f 63 32 74 6e 62 31 39 31 76 32 20 20 23 20 74 79 70 tnb191v2.=.NID_c2tnb191v2..#.typ
2c660 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 31 39 31 76 33 20 3d 20 4e 49 e:.int.NID_X9_62_c2tnb191v3.=.NI
2c680 44 5f 63 32 74 6e 62 31 39 31 76 33 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 D_c2tnb191v3..#.type:.int.NID_X9
2c6a0 5f 36 32 5f 63 32 70 6e 62 32 30 38 77 31 20 3d 20 4e 49 44 5f 63 32 70 6e 62 32 30 38 77 31 20 _62_c2pnb208w1.=.NID_c2pnb208w1.
2c6c0 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 32 33 39 76 .#.type:.int.NID_X9_62_c2tnb239v
2c6e0 31 20 3d 20 4e 49 44 5f 63 32 74 6e 62 32 33 39 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 1.=.NID_c2tnb239v1..#.type:.int.
2c700 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 32 33 39 76 32 20 3d 20 4e 49 44 5f 63 32 74 6e 62 NID_X9_62_c2tnb239v2.=.NID_c2tnb
2c720 32 33 39 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 239v2..#.type:.int.NID_X9_62_c2t
2c740 6e 62 32 33 39 76 33 20 3d 20 4e 49 44 5f 63 32 74 6e 62 32 33 39 76 33 20 20 23 20 74 79 70 65 nb239v3.=.NID_c2tnb239v3..#.type
2c760 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 32 37 32 77 31 20 3d 20 4e 49 44 :.int.NID_X9_62_c2pnb272w1.=.NID
2c780 5f 63 32 70 6e 62 32 37 32 77 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f _c2pnb272w1..#.type:.int.NID_X9_
2c7a0 36 32 5f 63 32 70 6e 62 33 30 34 77 31 20 3d 20 4e 49 44 5f 63 32 70 6e 62 33 30 34 77 31 20 20 62_c2pnb304w1.=.NID_c2pnb304w1..
2c7c0 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 62 33 35 39 76 31 #.type:.int.NID_X9_62_c2tnb359v1
2c7e0 20 3d 20 4e 49 44 5f 63 32 74 6e 62 33 35 39 76 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e .=.NID_c2tnb359v1..#.type:.int.N
2c800 49 44 5f 58 39 5f 36 32 5f 63 32 70 6e 62 33 36 38 77 31 20 3d 20 4e 49 44 5f 63 32 70 6e 62 33 ID_X9_62_c2pnb368w1.=.NID_c2pnb3
2c820 36 38 77 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 58 39 5f 36 32 5f 63 32 74 6e 68w1..#.type:.int.NID_X9_62_c2tn
2c840 62 34 33 31 72 31 20 3d 20 4e 49 44 5f 63 32 74 6e 62 34 33 31 72 31 20 20 23 20 74 79 70 65 3a b431r1.=.NID_c2tnb431r1..#.type:
2c860 20 69 6e 74 0a 0a 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 31 .int..NID_wap_wsg_idm_ecid_wtls1
2c880 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 31 .=.m2.NID_wap_wsg_idm_ecid_wtls1
2c8a0 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 ..#.type:.int.NID_wap_wsg_idm_ec
2c8c0 69 64 5f 77 74 6c 73 33 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 id_wtls3.=.m2.NID_wap_wsg_idm_ec
2c8e0 69 64 5f 77 74 6c 73 33 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 id_wtls3..#.type:.int.NID_wap_ws
2c900 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 34 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 g_idm_ecid_wtls4.=.m2.NID_wap_ws
2c920 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 34 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 g_idm_ecid_wtls4..#.type:.int.NI
2c940 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 35 20 3d 20 6d 32 2e 4e 49 D_wap_wsg_idm_ecid_wtls5.=.m2.NI
2c960 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 35 20 20 23 20 74 79 70 65 D_wap_wsg_idm_ecid_wtls5..#.type
2c980 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 36 :.int.NID_wap_wsg_idm_ecid_wtls6
2c9a0 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 36 .=.m2.NID_wap_wsg_idm_ecid_wtls6
2c9c0 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 ..#.type:.int.NID_wap_wsg_idm_ec
2c9e0 69 64 5f 77 74 6c 73 37 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 id_wtls7.=.m2.NID_wap_wsg_idm_ec
2ca00 69 64 5f 77 74 6c 73 37 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 id_wtls7..#.type:.int.NID_wap_ws
2ca20 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 38 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 g_idm_ecid_wtls8.=.m2.NID_wap_ws
2ca40 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 38 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 g_idm_ecid_wtls8..#.type:.int.NI
2ca60 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 39 20 3d 20 6d 32 2e 4e 49 D_wap_wsg_idm_ecid_wtls9.=.m2.NI
2ca80 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 39 20 20 23 20 74 79 70 65 D_wap_wsg_idm_ecid_wtls9..#.type
2caa0 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 31 :.int.NID_wap_wsg_idm_ecid_wtls1
2cac0 30 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 0.=.m2.NID_wap_wsg_idm_ecid_wtls
2cae0 31 30 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d 5f 10..#.type:.int.NID_wap_wsg_idm_
2cb00 65 63 69 64 5f 77 74 6c 73 31 31 20 3d 20 6d 32 2e 4e 49 44 5f 77 61 70 5f 77 73 67 5f 69 64 6d ecid_wtls11.=.m2.NID_wap_wsg_idm
2cb20 5f 65 63 69 64 5f 77 74 6c 73 31 31 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 4e 49 44 5f 77 61 _ecid_wtls11..#.type:.int.NID_wa
2cb40 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 31 32 20 3d 20 6d 32 2e 4e 49 44 5f 77 p_wsg_idm_ecid_wtls12.=.m2.NID_w
2cb60 61 70 5f 77 73 67 5f 69 64 6d 5f 65 63 69 64 5f 77 74 6c 73 31 32 20 20 23 20 74 79 70 65 3a 20 ap_wsg_idm_ecid_wtls12..#.type:.
2cb80 69 6e 74 0a 0a 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 63 75 72 76 65 73 2c int..#.The.following.two.curves,
2cba0 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 4f 70 65 6e 53 53 4c 2c 20 68 61 76 65 20 61 0a 23 20 .according.to.OpenSSL,.have.a.#.
2cbc0 22 51 75 65 73 74 69 6f 6e 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 69 65 6c 64 21 22 20 "Questionable.extension.field!".
2cbe0 61 6e 64 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 0a 23 20 74 68 65 20 4f and.are.not.supported.by.#.the.O
2cc00 70 65 6e 53 53 4c 20 69 6e 76 65 72 73 65 20 66 75 6e 63 74 69 6f 6e 2e 20 20 45 43 45 72 72 6f penSSL.inverse.function...ECErro
2cc20 72 3a 20 6e 6f 20 69 6e 76 65 72 73 65 2e 0a 23 20 41 73 20 73 75 63 68 20 74 68 65 79 20 63 61 r:.no.inverse..#.As.such.they.ca
2cc40 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 66 6f 72 20 73 69 67 6e 69 6e 67 2e 20 20 54 68 65 79 20 nnot.be.used.for.signing...They.
2cc60 6d 69 67 68 74 2c 0a 23 20 68 6f 77 65 76 65 72 2c 20 62 65 20 75 73 61 62 6c 65 20 66 6f 72 20 might,.#.however,.be.usable.for.
2cc80 65 6e 63 72 79 70 74 69 6f 6e 20 62 75 74 20 74 68 61 74 20 68 61 73 20 6e 6f 74 0a 23 20 62 65 encryption.but.that.has.not.#.be
2cca0 65 6e 20 74 65 73 74 65 64 2e 20 20 55 6e 74 69 6c 20 74 68 69 72 20 75 73 65 66 75 6c 6e 65 73 en.tested...Until.thir.usefulnes
2ccc0 73 20 63 61 6e 20 62 65 20 65 73 74 61 62 6c 69 73 68 65 64 2c 0a 23 20 74 68 65 79 20 61 72 65 s.can.be.established,.#.they.are
2cce0 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 61 74 20 74 68 69 73 20 74 69 6d 65 2e 0a 23 20 4e .not.supported.at.this.time..#.N
2cd00 49 44 5f 69 70 73 65 63 33 20 3d 20 6d 32 2e 4e 49 44 5f 69 70 73 65 63 33 0a 23 20 4e 49 44 5f ID_ipsec3.=.m2.NID_ipsec3.#.NID_
2cd20 69 70 73 65 63 34 20 3d 20 6d 32 2e 4e 49 44 5f 69 70 73 65 63 34 0a 0a 0a 63 6c 61 73 73 20 45 ipsec4.=.m2.NID_ipsec4...class.E
2cd40 43 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4f 62 6a 65 63 74 20 69 C(object):......""".....Object.i
2cd60 6e 74 65 72 66 61 63 65 20 74 6f 20 61 20 45 43 20 6b 65 79 20 70 61 69 72 2e 0a 20 20 20 20 22 nterface.to.a.EC.key.pair......"
2cd80 22 22 0a 0a 20 20 20 20 6d 32 5f 65 63 5f 6b 65 79 5f 66 72 65 65 20 3d 20 6d 32 2e 65 63 5f 6b ""......m2_ec_key_free.=.m2.ec_k
2cda0 65 79 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 ey_free......def.__init__(self,.
2cdc0 65 63 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 ec,._pyfree=0):.........#.type:.
2cde0 28 45 43 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 (EC,.int).->.None.........assert
2ce00 20 6d 32 2e 65 63 5f 6b 65 79 5f 74 79 70 65 5f 63 68 65 63 6b 28 65 63 29 2c 20 22 27 65 63 27 .m2.ec_key_type_check(ec),."'ec'
2ce20 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 63 20 3d 20 65 .type.error".........self.ec.=.e
2ce40 63 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 c.........self._pyfree.=._pyfree
2ce60 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 ......def.__del__(self):........
2ce80 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 .#.type:.().->.None.........if.g
2cea0 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 etattr(self,.'_pyfree',.0):.....
2cec0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 65 63 5f 6b 65 79 5f 66 72 65 65 28 73 65 6c 66 ........self.m2_ec_key_free(self
2cee0 2e 65 63 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 .ec)......def.__len__(self):....
2cf00 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 .....#.type:.().->.int.........a
2cf20 73 73 65 72 74 20 6d 32 2e 65 63 5f 6b 65 79 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e ssert.m2.ec_key_type_check(self.
2cf40 65 63 29 2c 20 22 27 65 63 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 ec),."'ec'.type.error".........r
2cf60 65 74 75 72 6e 20 6d 32 2e 65 63 5f 6b 65 79 5f 6b 65 79 6c 65 6e 28 73 65 6c 66 2e 65 63 29 0a eturn.m2.ec_key_keylen(self.ec).
2cf80 0a 20 20 20 20 64 65 66 20 67 65 6e 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 .....def.gen_key(self):.........
2cfa0 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 #.type:.().->.int........."""...
2cfc0 20 20 20 20 20 20 47 65 6e 65 72 61 74 65 73 20 74 68 65 20 6b 65 79 20 70 61 69 72 20 66 72 6f ......Generates.the.key.pair.fro
2cfe0 6d 20 69 74 73 20 70 61 72 61 6d 65 74 65 72 73 2e 20 55 73 65 3a 3a 0a 0a 20 20 20 20 20 20 20 m.its.parameters..Use::.........
2d000 20 20 20 20 20 6b 65 79 70 61 69 72 20 3d 20 45 43 2e 67 65 6e 5f 70 61 72 61 6d 73 28 63 75 72 .....keypair.=.EC.gen_params(cur
2d020 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 70 61 69 72 2e 67 65 6e 5f 6b 65 79 28 ve).............keypair.gen_key(
2d040 29 0a 0a 20 20 20 20 20 20 20 20 74 6f 20 63 72 65 61 74 65 20 61 6e 20 45 43 20 6b 65 79 20 70 )..........to.create.an.EC.key.p
2d060 61 69 72 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 air..........""".........assert.
2d080 6d 32 2e 65 63 5f 6b 65 79 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 65 63 29 2c 20 22 m2.ec_key_type_check(self.ec),."
2d0a0 27 65 63 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 65 63 5f 6b 'ec'.type.error".........m2.ec_k
2d0c0 65 79 5f 67 65 6e 5f 6b 65 79 28 73 65 6c 66 2e 65 63 29 0a 0a 20 20 20 20 64 65 66 20 70 75 62 ey_gen_key(self.ec)......def.pub
2d0e0 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 45 43 (self):.........#.type:.().->.EC
2d100 5f 70 75 62 0a 20 20 20 20 20 20 20 20 23 20 44 6f 6e 27 74 20 6c 65 74 20 70 79 74 68 6f 6e 20 _pub.........#.Don't.let.python.
2d120 66 72 65 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 45 43 5f 70 75 62 28 73 65 6c 66 2e free.........return.EC_pub(self.
2d140 65 63 2c 20 30 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 5f 64 73 61 28 73 65 6c 66 2c 20 64 ec,.0)......def.sign_dsa(self,.d
2d160 69 67 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 igest):.........#.type:.(bytes).
2d180 2d 3e 20 54 75 70 6c 65 5b 62 79 74 65 73 2c 20 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 22 ->.Tuple[bytes,.bytes]........."
2d1a0 22 22 0a 20 20 20 20 20 20 20 20 53 69 67 6e 20 74 68 65 20 67 69 76 65 6e 20 64 69 67 65 73 74 "".........Sign.the.given.digest
2d1c0 20 75 73 69 6e 67 20 45 43 44 53 41 2e 20 52 65 74 75 72 6e 73 20 61 20 74 75 70 6c 65 20 28 72 .using.ECDSA..Returns.a.tuple.(r
2d1e0 2c 73 29 2c 20 74 68 65 20 74 77 6f 0a 20 20 20 20 20 20 20 20 45 43 44 53 41 20 73 69 67 6e 61 ,s),.the.two.........ECDSA.signa
2d200 74 75 72 65 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 ture.parameters.........."""....
2d220 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 5f 63 68 65 63 6b 5f 6b 65 79 5f 74 79 70 65 .....assert.self._check_key_type
2d240 28 29 2c 20 22 27 65 63 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 (),."'ec'.type.error".........re
2d260 74 75 72 6e 20 6d 32 2e 65 63 64 73 61 5f 73 69 67 6e 28 73 65 6c 66 2e 65 63 2c 20 64 69 67 65 turn.m2.ecdsa_sign(self.ec,.dige
2d280 73 74 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 5f 64 73 61 28 73 65 6c 66 2c 20 64 69 st)......def.verify_dsa(self,.di
2d2a0 67 65 73 74 2c 20 72 2c 20 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 gest,.r,.s):.........#.type:.(by
2d2c0 74 65 73 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 tes,.bytes,.bytes).->.int.......
2d2e0 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 56 65 72 69 66 79 20 74 68 65 20 67 69 76 65 6e 20 64 ..""".........Verify.the.given.d
2d300 69 67 65 73 74 20 75 73 69 6e 67 20 45 43 44 53 41 2e 20 72 20 61 6e 64 20 73 20 61 72 65 20 74 igest.using.ECDSA..r.and.s.are.t
2d320 68 65 20 45 43 44 53 41 0a 20 20 20 20 20 20 20 20 73 69 67 6e 61 74 75 72 65 20 70 61 72 61 6d he.ECDSA.........signature.param
2d340 65 74 65 72 73 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 eters..........""".........asser
2d360 74 20 73 65 6c 66 2e 5f 63 68 65 63 6b 5f 6b 65 79 5f 74 79 70 65 28 29 2c 20 22 27 65 63 27 20 t.self._check_key_type(),."'ec'.
2d380 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 type.error".........return.m2.ec
2d3a0 64 73 61 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 65 63 2c 20 64 69 67 65 73 74 2c 20 72 2c 20 73 dsa_verify(self.ec,.digest,.r,.s
2d3c0 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 28 73 65 6c 66 2c 20 64 )......def.sign_dsa_asn1(self,.d
2d3e0 69 67 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 igest):.........#.type:.(bytes).
2d400 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 5f 63 68 ->.bytes.........assert.self._ch
2d420 65 63 6b 5f 6b 65 79 5f 74 79 70 65 28 29 2c 20 22 27 65 63 27 20 74 79 70 65 20 65 72 72 6f 72 eck_key_type(),."'ec'.type.error
2d440 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 64 73 61 5f 73 69 67 6e 5f 61 ".........return.m2.ecdsa_sign_a
2d460 73 6e 31 28 73 65 6c 66 2e 65 63 2c 20 64 69 67 65 73 74 29 0a 0a 20 20 20 20 64 65 66 20 76 65 sn1(self.ec,.digest)......def.ve
2d480 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 28 73 65 6c 66 2c 20 64 69 67 65 73 74 2c 20 62 6c 6f 62 rify_dsa_asn1(self,.digest,.blob
2d4a0 29 3a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 5f 63 68 65 63 6b 5f 6b 65 ):.........assert.self._check_ke
2d4c0 79 5f 74 79 70 65 28 29 2c 20 22 27 65 63 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 y_type(),."'ec'.type.error".....
2d4e0 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 64 73 61 5f 76 65 72 69 66 79 5f 61 73 6e 31 28 ....return.m2.ecdsa_verify_asn1(
2d500 73 65 6c 66 2e 65 63 2c 20 64 69 67 65 73 74 2c 20 62 6c 6f 62 29 0a 0a 20 20 20 20 64 65 66 20 self.ec,.digest,.blob)......def.
2d520 63 6f 6d 70 75 74 65 5f 64 68 5f 6b 65 79 28 73 65 6c 66 2c 20 70 75 62 5f 6b 65 79 29 3a 0a 20 compute_dh_key(self,.pub_key):..
2d540 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 45 43 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b .......#.type:.(EC).->.Optional[
2d560 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 43 6f 6d 70 75 bytes].........""".........Compu
2d580 74 65 20 74 68 65 20 45 43 44 48 20 73 68 61 72 65 64 20 6b 65 79 20 6f 66 20 74 68 69 73 20 6b te.the.ECDH.shared.key.of.this.k
2d5a0 65 79 20 70 61 69 72 20 61 6e 64 20 74 68 65 20 67 69 76 65 6e 20 70 75 62 6c 69 63 0a 20 20 20 ey.pair.and.the.given.public....
2d5c0 20 20 20 20 20 6b 65 79 20 6f 62 6a 65 63 74 2e 20 54 68 65 79 20 6d 75 73 74 20 62 6f 74 68 20 .....key.object..They.must.both.
2d5e0 75 73 65 20 74 68 65 20 73 61 6d 65 20 63 75 72 76 65 2e 20 52 65 74 75 72 6e 73 20 74 68 65 0a use.the.same.curve..Returns.the.
2d600 20 20 20 20 20 20 20 20 73 68 61 72 65 64 20 6b 65 79 20 69 6e 20 62 69 6e 61 72 79 20 61 73 20 ........shared.key.in.binary.as.
2d620 61 20 62 75 66 66 65 72 20 6f 62 6a 65 63 74 2e 20 4e 6f 20 4b 65 79 20 44 65 72 69 76 61 74 69 a.buffer.object..No.Key.Derivati
2d640 6f 6e 20 46 75 6e 63 74 69 6f 6e 20 69 73 0a 20 20 20 20 20 20 20 20 61 70 70 6c 69 65 64 2e 0a on.Function.is.........applied..
2d660 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e ........""".........assert.self.
2d680 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c check_key(),.'key.is.not.initial
2d6a0 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 64 68 5f 63 6f 6d ised'.........return.m2.ecdh_com
2d6c0 70 75 74 65 5f 6b 65 79 28 73 65 6c 66 2e 65 63 2c 20 70 75 62 5f 6b 65 79 2e 65 63 29 0a 0a 20 pute_key(self.ec,.pub_key.ec)...
2d6e0 20 20 20 64 65 66 20 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 2c 20 63 ...def.save_key_bio(self,.bio,.c
2d700 69 70 68 65 72 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ipher='aes_128_cbc',............
2d720 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 ..........callback=util.passphra
2d740 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 se_callback):.........#.type:.(B
2d760 49 4f 2e 42 49 4f 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 IO.BIO,.Optional[str],.Callable)
2d780 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 .->.int.........""".........Save
2d7a0 20 74 68 65 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f .the.key.pair.to.an.M2Crypto.BIO
2d7c0 2e 42 49 4f 20 6f 62 6a 65 63 74 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 .BIO.object.in.PEM.format.......
2d7e0 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f ....:param.bio:.M2Crypto.BIO.BIO
2d800 20 6f 62 6a 65 63 74 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 0a 20 20 20 20 20 20 20 .object.to.save.key.to..........
2d820 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 53 79 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 .:param.cipher:.Symmetric.cipher
2d840 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 .to.protect.the.key..The.default
2d860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 69 ........................cipher.i
2d880 73 20 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2e 20 49 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f s.'aes_128_cbc'..If.cipher.is.No
2d8a0 6e 65 2c 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ne,.then........................
2d8c0 74 68 65 20 6b 65 79 20 69 73 20 73 61 76 65 64 20 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a 0a the.key.is.saved.in.the.clear...
2d8e0 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f ........:param.callback:.A.Pytho
2d900 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 n.callable.object.that.is.invoke
2d920 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 d..........................to.ac
2d940 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f quire.a.passphrase.with.which.to
2d960 20 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .protect........................
2d980 20 20 74 68 65 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 0a 20 20 20 20 20 20 ..the.key..The.default.is.......
2d9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 ...................util.passphra
2d9c0 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 se_callback.........."""........
2d9e0 20 69 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .if.cipher.is.None:.............
2da00 72 65 74 75 72 6e 20 6d 32 2e 65 63 5f 6b 65 79 5f 77 72 69 74 65 5f 62 69 6f 5f 6e 6f 5f 63 69 return.m2.ec_key_write_bio_no_ci
2da20 70 68 65 72 28 73 65 6c 66 2e 65 63 2c 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 pher(self.ec,.bio._ptr(),.callba
2da40 63 6b 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 69 ck).........else:.............ci
2da60 70 68 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 63 69 70 68 65 72 2c 20 4e 6f 6e 65 29 0a 20 ph.=.getattr(m2,.cipher,.None)..
2da80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 ...........if.ciph.is.None:.....
2daa0 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 6e 6f ............raise.ValueError('no
2dac0 74 20 73 75 63 68 20 63 69 70 68 65 72 20 25 73 27 20 25 20 63 69 70 68 65 72 29 0a 20 20 20 20 t.such.cipher.%s'.%.cipher).....
2dae0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 5f 6b 65 79 5f 77 72 69 74 65 5f 62 ........return.m2.ec_key_write_b
2db00 69 6f 28 73 65 6c 66 2e 65 63 2c 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 69 70 68 28 29 2c 20 io(self.ec,.bio._ptr(),.ciph(),.
2db20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 6b 65 79 28 73 65 6c 66 callback)......def.save_key(self
2db40 2c 20 66 69 6c 65 2c 20 63 69 70 68 65 72 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 0a 20 20 ,.file,.cipher='aes_128_cbc',...
2db60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 ...............callback=util.pas
2db80 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 sphrase_callback):.........#.typ
2dba0 65 3a 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 e:.(AnyStr,.Optional[str],.Calla
2dbc0 62 6c 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 ble).->.int.........""".........
2dbe0 53 61 76 65 20 74 68 65 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 20 66 69 6c 65 20 69 6e 20 50 Save.the.key.pair.to.a.file.in.P
2dc00 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a EM.format...........:param.file:
2dc20 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f .Name.of.filename.to.save.key.to
2dc40 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 53 79 6d 6d 65 74 ...........:param.cipher:.Symmet
2dc60 72 69 63 20 63 69 70 68 65 72 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 6b 65 79 2e 20 54 ric.cipher.to.protect.the.key..T
2dc80 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 he.default......................
2dca0 20 20 63 69 70 68 65 72 20 69 73 20 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2e 20 49 66 20 63 69 ..cipher.is.'aes_128_cbc'..If.ci
2dcc0 70 68 65 72 20 69 73 20 4e 6f 6e 65 2c 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 pher.is.None,.then..............
2dce0 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 20 69 73 20 73 61 76 65 64 20 69 6e 20 74 68 ..........the.key.is.saved.in.th
2dd00 65 20 63 6c 65 61 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 e.clear...........:param.callbac
2dd20 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 k:.A.Python.callable.object.that
2dd40 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .is.invoked.....................
2dd60 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 .....to.acquire.a.passphrase.wit
2dd80 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 h.which.to.protect..............
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 2e 20 20 54 68 65 20 64 65 66 61 75 6c ............the.key...The.defaul
2ddc0 74 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 t.is..........................ut
2dde0 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 il.passphrase_callback..........
2de00 22 22 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 """.........with.BIO.openfile(fi
2de20 6c 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 le,.'wb').as.bio:.............re
2de40 74 75 72 6e 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 69 70 68 turn.self.save_key_bio(bio,.ciph
2de60 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 75 62 5f er,.callback)......def.save_pub_
2de80 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 key_bio(self,.bio):.........#.ty
2dea0 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 pe:.(BIO.BIO).->.int........."""
2dec0 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 74 6f 20 .........Save.the.public.key.to.
2dee0 61 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 69 6e 20 50 45 an.M2Crypto.BIO.BIO.object.in.PE
2df00 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d M.format...........:param.bio:.M
2df20 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 74 6f 20 73 61 76 65 20 6b 2Crypto.BIO.BIO.object.to.save.k
2df40 65 79 20 74 6f 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ey.to..........""".........retur
2df60 6e 20 6d 32 2e 65 63 5f 6b 65 79 5f 77 72 69 74 65 5f 70 75 62 6b 65 79 28 73 65 6c 66 2e 65 63 n.m2.ec_key_write_pubkey(self.ec
2df80 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 75 62 5f ,.bio._ptr())......def.save_pub_
2dfa0 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a key(self,.file):.........#.type:
2dfc0 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 .(AnyStr).->.int........."""....
2dfe0 20 20 20 20 20 53 61 76 65 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 74 6f 20 61 20 66 69 .....Save.the.public.key.to.a.fi
2e000 6c 65 6e 61 6d 65 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a lename.in.PEM.format...........:
2e020 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 param.file:.Name.of.filename.to.
2e040 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 save.key.to.........."""........
2e060 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 2c 20 27 77 62 27 29 20 61 .with.BIO.openfile(file,.'wb').a
2e080 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 5f s.bio:.............return.m2.ec_
2e0a0 6b 65 79 5f 77 72 69 74 65 5f 70 75 62 6b 65 79 28 73 65 6c 66 2e 65 63 2c 20 62 69 6f 2e 5f 70 key_write_pubkey(self.ec,.bio._p
2e0c0 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 70 65 6d 28 73 65 6c 66 2c 20 63 69 70 68 tr())......def.as_pem(self,.ciph
2e0e0 65 72 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e er='aes_128_cbc',.callback=util.
2e100 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 22 22 passphrase_callback):.........""
2e120 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 28 70 61 69 72 29 20 ".........Returns.the.key(pair).
2e140 61 73 20 61 20 73 74 72 69 6e 67 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 20 as.a.string.in.PEM.format.......
2e160 20 20 20 49 66 20 6e 6f 20 70 61 73 73 77 6f 72 64 20 69 73 20 70 61 73 73 65 64 20 61 6e 64 20 ...If.no.password.is.passed.and.
2e180 74 68 65 20 63 69 70 68 65 72 20 69 73 20 73 65 74 0a 20 20 20 20 20 20 20 20 69 74 20 65 78 69 the.cipher.is.set.........it.exi
2e1a0 74 73 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 ts.with.error.........""".......
2e1c0 20 20 77 69 74 68 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 20 61 73 20 62 69 6f ..with.BIO.MemoryBuffer().as.bio
2e1e0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 :.............self.save_key_bio(
2e200 62 69 6f 2c 20 63 69 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 bio,.cipher,.callback)..........
2e220 20 20 20 72 65 74 75 72 6e 20 62 69 6f 2e 72 65 61 64 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 63 ...return.bio.read()......def._c
2e240 68 65 63 6b 5f 6b 65 79 5f 74 79 70 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 heck_key_type(self):.........#.t
2e260 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 ype:.().->.int.........return.m2
2e280 2e 65 63 5f 6b 65 79 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 65 63 29 0a 0a 20 20 20 .ec_key_type_check(self.ec).....
2e2a0 20 64 65 66 20 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 .def.check_key(self):.........#.
2e2c0 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d type:.().->.int.........assert.m
2e2e0 32 2e 65 63 5f 6b 65 79 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 65 63 29 2c 20 22 27 2.ec_key_type_check(self.ec),."'
2e300 65 63 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d ec'.type.error".........return.m
2e320 32 2e 65 63 5f 6b 65 79 5f 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 2e 65 63 29 0a 0a 0a 63 6c 2.ec_key_check_key(self.ec)...cl
2e340 61 73 73 20 45 43 5f 70 75 62 28 45 43 29 3a 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4f 62 6a ass.EC_pub(EC):......""".....Obj
2e360 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 61 6e 20 45 43 20 70 75 62 6c 69 63 20 6b 65 ect.interface.to.an.EC.public.ke
2e380 79 2e 0a 20 20 20 20 28 28 64 6f 6e 27 74 20 6c 69 6b 65 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 y......((don't.like.this.impleme
2e3a0 6e 74 61 74 69 6f 6e 20 69 6e 68 65 72 69 74 61 6e 63 65 29 29 0a 20 20 20 20 22 22 22 0a 20 20 ntation.inheritance))....."""...
2e3c0 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 65 63 2c 20 5f 70 79 66 72 65 65 ..def.__init__(self,.ec,._pyfree
2e3e0 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 45 43 2c 20 69 6e 74 29 20 2d =0):.........#.type:.(EC,.int).-
2e400 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 45 43 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c >.None.........EC.__init__(self,
2e420 20 65 63 2c 20 5f 70 79 66 72 65 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 72 20 3d .ec,._pyfree).........self.der.=
2e440 20 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 0a 0a .None..#.type:.Optional[bytes]..
2e460 20 20 20 20 64 65 66 20 67 65 74 5f 64 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 ....def.get_der(self):.........#
2e480 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 .type:.().->.bytes........."""..
2e4a0 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 69 6e .......Returns.the.public.key.in
2e4c0 20 44 45 52 20 66 6f 72 6d 61 74 20 61 73 20 61 20 62 75 66 66 65 72 20 6f 62 6a 65 63 74 2e 0a .DER.format.as.a.buffer.object..
2e4e0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e ........""".........assert.self.
2e500 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c check_key(),.'key.is.not.initial
2e520 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 64 65 72 20 69 73 20 4e 6f 6e ised'.........if.self.der.is.Non
2e540 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 72 20 3d 20 6d 32 2e 65 63 5f e:.............self.der.=.m2.ec_
2e560 6b 65 79 5f 67 65 74 5f 70 75 62 6c 69 63 5f 64 65 72 28 73 65 6c 66 2e 65 63 29 0a 20 20 20 20 key_get_public_der(self.ec).....
2e580 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 65 72 0a 0a 20 20 20 20 64 65 66 20 67 65 74 ....return.self.der......def.get
2e5a0 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d _key(self):.........#.type:.().-
2e5c0 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 >.bytes.........""".........Retu
2e5e0 72 6e 73 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20 61 20 62 79 74 65 20 73 74 72 rns.the.public.key.as.a.byte.str
2e600 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 ing..........""".........assert.
2e620 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e self.check_key(),.'key.is.not.in
2e640 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 5f itialised'.........return.m2.ec_
2e660 6b 65 79 5f 67 65 74 5f 70 75 62 6c 69 63 5f 6b 65 79 28 73 65 6c 66 2e 65 63 29 0a 0a 20 20 20 key_get_public_key(self.ec).....
2e680 20 73 61 76 65 5f 6b 65 79 20 3d 20 45 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 0a 0a 20 20 20 .save_key.=.EC.save_pub_key.....
2e6a0 20 73 61 76 65 5f 6b 65 79 5f 62 69 6f 20 3d 20 45 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f .save_key_bio.=.EC.save_pub_key_
2e6c0 62 69 6f 0a 0a 0a 64 65 66 20 67 65 6e 5f 70 61 72 61 6d 73 28 63 75 72 76 65 29 3a 0a 20 20 20 bio...def.gen_params(curve):....
2e6e0 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 45 43 0a 20 20 20 20 22 22 22 0a 20 20 20 .#.type:.(int).->.EC....."""....
2e700 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 67 65 6e 65 72 61 74 65 73 .Factory.function.that.generates
2e720 20 45 43 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 0a 20 20 20 20 69 6e 73 74 61 6e 74 69 61 .EC.parameters.and.....instantia
2e740 74 65 73 20 61 20 45 43 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 6f 75 74 70 75 74 2e tes.a.EC.object.from.the.output.
2e760 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 75 72 76 65 3a 20 54 68 69 73 20 69 73 20 74 68 65 20 ......:param.curve:.This.is.the.
2e780 4f 70 65 6e 53 53 4c 20 6e 69 64 20 6f 66 20 74 68 65 20 63 75 72 76 65 20 74 6f 20 75 73 65 2e OpenSSL.nid.of.the.curve.to.use.
2e7a0 0a 20 20 20 20 22 22 22 0a 20 20 20 20 61 73 73 65 72 74 20 63 75 72 76 65 20 69 6e 20 5b 78 5b .....""".....assert.curve.in.[x[
2e7c0 27 4e 49 44 27 5d 20 66 6f 72 20 78 20 69 6e 20 6d 32 2e 65 63 5f 67 65 74 5f 62 75 69 6c 74 69 'NID'].for.x.in.m2.ec_get_builti
2e7e0 6e 5f 63 75 72 76 65 73 28 29 5d 2c 20 5c 0a 20 20 20 20 20 20 20 20 27 45 6c 6c 69 70 74 69 63 n_curves()],.\.........'Elliptic
2e800 20 63 75 72 76 65 20 25 73 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68 .curve.%s.is.not.available.on.th
2e820 69 73 20 73 79 73 74 65 6d 2e 27 20 25 20 5c 0a 20 20 20 20 20 20 20 20 6d 32 2e 6f 62 6a 5f 6e is.system.'.%.\.........m2.obj_n
2e840 69 64 32 73 6e 28 63 75 72 76 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 45 43 28 6d 32 2e 65 63 id2sn(curve).....return.EC(m2.ec
2e860 5f 6b 65 79 5f 6e 65 77 5f 62 79 5f 63 75 72 76 65 5f 6e 61 6d 65 28 63 75 72 76 65 29 2c 20 31 _key_new_by_curve_name(curve),.1
2e880 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 28 66 69 6c 65 2c 20 63 61 6c 6c 62 61 63 6b 3d )...def.load_key(file,.callback=
2e8a0 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 util.passphrase_callback):.....#
2e8c0 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 45 43 0a .type:.(AnyStr,.Callable).->.EC.
2e8e0 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 ....""".....Factory.function.tha
2e900 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 45 43 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 t.instantiates.a.EC.object......
2e920 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 73 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 .:param.file:.Names.the.filename
2e940 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 20 72 65 70 72 65 73 65 6e 74 .that.contains.the.PEM.represent
2e960 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 45 43 ation..................of.the.EC
2e980 20 6b 65 79 20 70 61 69 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a .key.pair.......:param.callback:
2e9a0 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 63 74 20 74 68 61 74 20 77 69 6c .Python.callback.object.that.wil
2e9c0 6c 20 62 65 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.be.invoked....................
2e9e0 20 20 69 66 20 74 68 65 20 45 43 20 6b 65 79 20 70 61 69 72 20 69 73 20 70 61 73 73 70 68 72 61 ..if.the.EC.key.pair.is.passphra
2ea00 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 se-protected......""".....with.B
2ea20 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 IO.openfile(file).as.bio:.......
2ea40 20 20 72 65 74 75 72 6e 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 ..return.load_key_bio(bio,.callb
2ea60 61 63 6b 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 28 73 74 72 69 6e ack)...def.load_key_string(strin
2ea80 67 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c g,.callback=util.passphrase_call
2eaa0 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 43 61 6c 6c 61 62 6c back):.....#.type:.(str,.Callabl
2eac0 65 29 20 2d 3e 20 45 43 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 45 43 20 e).->.EC.....""".....Load.an.EC.
2eae0 6b 65 79 20 70 61 69 72 20 66 72 6f 6d 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 key.pair.from.a.string.......:pa
2eb00 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 45 43 ram.string:.String.containing.EC
2eb20 20 6b 65 79 20 70 61 69 72 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 .key.pair.in.PEM.format.......:p
2eb40 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 aram.callback:.A.Python.callable
2eb60 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 .object.that.is.invoked.........
2eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 .............to.acquire.a.passph
2eba0 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68 65 0a 20 20 rase.with.which.to.unlock.the...
2ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 ...................key..The.defa
2ebe0 75 6c 74 20 69 73 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 2e ult.is.util.passphrase_callback.
2ec00 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6f 62 ......:return:.M2Crypto.EC.EC.ob
2ec20 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 4d 65 6d 6f 72 ject......""".....with.BIO.Memor
2ec40 79 42 75 66 66 65 72 28 73 74 72 69 6e 67 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 yBuffer(string).as.bio:.........
2ec60 72 65 74 75 72 6e 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 return.load_key_bio(bio,.callbac
2ec80 6b 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 k)...def.load_key_bio(bio,.callb
2eca0 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 ack=util.passphrase_callback):..
2ecc0 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d ...#.type:.(BIO.BIO,.Callable).-
2ece0 3e 20 45 43 0a 20 20 20 20 22 22 22 0a 20 20 20 20 46 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f >.EC.....""".....Factory.functio
2ed00 6e 20 74 68 61 74 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 45 43 20 6f 62 6a 65 63 74 2e n.that.instantiates.a.EC.object.
2ed20 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 20 6f ......:param.bio:.M2Crypto.BIO.o
2ed40 62 6a 65 63 74 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 0a 20 20 20 20 bject.that.contains.the.PEM.....
2ed60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 ............representation.of.th
2ed80 65 20 45 43 20 6b 65 79 20 70 61 69 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 e.EC.key.pair.......:param.callb
2eda0 61 63 6b 3a 20 50 79 74 68 6f 6e 20 63 61 6c 6c 62 61 63 6b 20 6f 62 6a 65 63 74 20 74 68 61 74 ack:.Python.callback.object.that
2edc0 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .will.be.invoked................
2ede0 20 20 20 20 20 20 69 66 20 74 68 65 20 45 43 20 6b 65 79 20 70 61 69 72 20 69 73 20 70 61 73 73 ......if.the.EC.key.pair.is.pass
2ee00 70 68 72 61 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 phrase-protected......""".....re
2ee20 74 75 72 6e 20 45 43 28 6d 32 2e 65 63 5f 6b 65 79 5f 72 65 61 64 5f 62 69 6f 28 62 69 6f 2e 5f turn.EC(m2.ec_key_read_bio(bio._
2ee40 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f ptr(),.callback),.1)...def.load_
2ee60 70 75 62 5f 6b 65 79 28 66 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 pub_key(file):.....#.type:.(AnyS
2ee80 74 72 29 20 2d 3e 20 45 43 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 tr).->.EC_pub.....""".....Load.a
2eea0 6e 20 45 43 20 70 75 62 6c 69 63 20 6b 65 79 20 66 72 6f 6d 20 66 69 6c 65 6e 61 6d 65 2e 0a 0a n.EC.public.key.from.filename...
2eec0 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 6e 61 6d ....:param.file:.Name.of.filenam
2eee0 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 45 43 20 70 75 62 6c 69 63 20 6b 65 79 20 69 6e 20 50 45 e.containing.EC.public.key.in.PE
2ef00 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 M..................format.......
2ef20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 20 6f 62 6a 65 :return:.M2Crypto.EC.EC_pub.obje
2ef40 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c ct......""".....with.BIO.openfil
2ef60 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c e(file).as.bio:.........return.l
2ef80 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f oad_pub_key_bio(bio)...def.load_
2efa0 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 28 73 74 72 69 6e 67 2c 20 63 61 6c 6c 62 61 key_string_pubkey(string,.callba
2efc0 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 ck=util.passphrase_callback):...
2efe0 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 50 4b 65 ..#.type:.(str,.Callable).->.PKe
2f000 79 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 45 y.....""".....Load.an.M2Crypto.E
2f020 43 2e 50 4b 65 79 20 66 72 6f 6d 20 61 20 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20 61 20 73 74 C.PKey.from.a.public.key.as.a.st
2f040 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 69 6e 67 ring.......:param.string:.String
2f060 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6b 65 79 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 .containing.the.key.in.PEM.forma
2f080 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f t.......:param.callback:.A.Pytho
2f0a0 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 n.callable.object.that.is.invoke
2f0c0 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 d......................to.acquir
2f0e0 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f e.a.passphrase.with.which.to.pro
2f100 74 65 63 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 tect.the......................ke
2f120 79 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 45 43 2e 50 4b 65 y.......:return:.M2Crypto.EC.PKe
2f140 79 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 4d y.object......""".....with.BIO.M
2f160 65 6d 6f 72 79 42 75 66 66 65 72 28 73 74 72 69 6e 67 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 emoryBuffer(string).as.bio:.....
2f180 20 20 20 20 72 65 74 75 72 6e 20 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 6b ....return.EVP.load_key_bio_pubk
2f1a0 65 79 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 75 62 ey(bio,.callback)...def.load_pub
2f1c0 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e _key_bio(bio):.....#.type:.(BIO.
2f1e0 42 49 4f 29 20 2d 3e 20 45 43 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 BIO).->.EC_pub.....""".....Load.
2f200 61 6e 20 45 43 20 70 75 62 6c 69 63 20 6b 65 79 20 66 72 6f 6d 20 61 6e 20 4d 32 43 72 79 70 74 an.EC.public.key.from.an.M2Crypt
2f220 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 o.BIO.BIO.object.......:param.bi
2f240 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 o:.M2Crypto.BIO.BIO.object.conta
2f260 69 6e 69 6e 67 20 45 43 20 70 75 62 6c 69 63 20 6b 65 79 20 69 6e 20 50 45 4d 0a 20 20 20 20 20 ining.EC.public.key.in.PEM......
2f280 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a ...........format.......:return:
2f2a0 20 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 .M2Crypto.EC.EC_pub.object......
2f2c0 22 22 22 0a 20 20 20 20 65 63 20 3d 20 6d 32 2e 65 63 5f 6b 65 79 5f 72 65 61 64 5f 70 75 62 6b """.....ec.=.m2.ec_key_read_pubk
2f2e0 65 79 28 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 69 66 20 65 63 20 69 73 20 4e 6f 6e 65 ey(bio._ptr()).....if.ec.is.None
2f300 3a 0a 20 20 20 20 20 20 20 20 65 63 5f 65 72 72 6f 72 28 29 0a 20 20 20 20 72 65 74 75 72 6e 20 :.........ec_error().....return.
2f320 45 43 5f 70 75 62 28 65 63 2c 20 31 29 0a 0a 0a 64 65 66 20 65 63 5f 65 72 72 6f 72 28 29 3a 0a EC_pub(ec,.1)...def.ec_error():.
2f340 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 45 43 45 72 72 6f 72 0a 20 20 20 20 72 61 ....#.type:.().->.ECError.....ra
2f360 69 73 65 20 45 43 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 ise.ECError(Err.get_error_messag
2f380 65 28 29 29 0a 0a 0a 64 65 66 20 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 64 65 72 28 64 65 72 29 e())...def.pub_key_from_der(der)
2f3a0 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 45 43 5f 70 75 62 0a :.....#.type:.(bytes).->.EC_pub.
2f3c0 20 20 20 20 22 22 22 0a 20 20 20 20 43 72 65 61 74 65 20 45 43 5f 70 75 62 20 66 72 6f 6d 20 44 ....""".....Create.EC_pub.from.D
2f3e0 45 52 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 45 43 5f 70 75 62 28 6d 32 ER......""".....return.EC_pub(m2
2f400 2e 65 63 5f 6b 65 79 5f 66 72 6f 6d 5f 70 75 62 6b 65 79 5f 64 65 72 28 64 65 72 29 2c 20 31 29 .ec_key_from_pubkey_der(der),.1)
2f420 0a 0a 0a 64 65 66 20 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 28 63 75 72 76 65 ...def.pub_key_from_params(curve
2f440 2c 20 62 79 74 65 73 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 ,.bytes):.....#.type:.(bytes,.by
2f460 74 65 73 29 20 2d 3e 20 45 43 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 20 20 43 72 65 61 74 tes).->.EC_pub.....""".....Creat
2f480 65 20 45 43 5f 70 75 62 20 66 72 6f 6d 20 63 75 72 76 65 20 6e 61 6d 65 20 61 6e 64 20 6f 63 74 e.EC_pub.from.curve.name.and.oct
2f4a0 65 74 20 73 74 72 69 6e 67 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 45 43 et.string......""".....return.EC
2f4c0 5f 70 75 62 28 6d 32 2e 65 63 5f 6b 65 79 5f 66 72 6f 6d 5f 70 75 62 6b 65 79 5f 70 61 72 61 6d _pub(m2.ec_key_from_pubkey_param
2f4e0 73 28 63 75 72 76 65 2c 20 62 79 74 65 73 29 2c 20 31 29 0a 0a 0a 64 65 66 20 67 65 74 5f 62 75 s(curve,.bytes),.1)...def.get_bu
2f500 69 6c 74 69 6e 5f 63 75 72 76 65 73 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d iltin_curves():.....#.type:.().-
2f520 3e 20 54 75 70 6c 65 5b 44 69 63 74 5b 73 74 72 2c 20 55 6e 69 6f 6e 5b 69 6e 74 2c 20 73 74 72 >.Tuple[Dict[str,.Union[int,.str
2f540 5d 5d 5d 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 63 5f 67 65 74 5f 62 75 69 6c 74 69 6e ]]].....return.m2.ec_get_builtin
2f560 5f 63 75 72 76 65 73 28 29 0a 94 7d 94 28 8c 07 45 43 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 14 4b _curves()..}.(..ECError.j}...K.K
2f580 15 87 94 8c 0b 45 43 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 8b 4b 8f 87 94 8c 0a 45 43 .....EC.__init__.jt...K.K.....EC
2f5a0 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 91 4b 94 87 94 8c 0a 45 43 2e 5f 5f 6c 65 6e 5f 5f .__del__.jt...K.K.....EC.__len__
2f5c0 94 6a 74 1f 00 00 4b 96 4b 99 87 94 8c 0a 45 43 2e 67 65 6e 5f 6b 65 79 94 6a 74 1f 00 00 4b 9b .jt...K.K.....EC.gen_key.jt...K.
2f5e0 4b a6 87 94 8c 06 45 43 2e 70 75 62 94 6a 74 1f 00 00 4b a8 4b ab 87 94 8c 0b 45 43 2e 73 69 67 K.....EC.pub.jt...K.K.....EC.sig
2f600 6e 5f 64 73 61 94 6a 74 1f 00 00 4b ad 4b b4 87 94 8c 0d 45 43 2e 76 65 72 69 66 79 5f 64 73 61 n_dsa.jt...K.K.....EC.verify_dsa
2f620 94 6a 74 1f 00 00 4b b6 4b bd 87 94 8c 10 45 43 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 94 6a .jt...K.K.....EC.sign_dsa_asn1.j
2f640 74 1f 00 00 4b bf 4b c2 87 94 8c 12 45 43 2e 76 65 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 94 6a t...K.K.....EC.verify_dsa_asn1.j
2f660 74 1f 00 00 4b c4 4b c6 87 94 8c 11 45 43 2e 63 6f 6d 70 75 74 65 5f 64 68 5f 6b 65 79 94 6a 74 t...K.K.....EC.compute_dh_key.jt
2f680 1f 00 00 4b c8 4b d1 87 94 8c 0f 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 00 ...K.K.....EC.save_key_bio.jt...
2f6a0 4b d3 4b ea 87 94 8c 0b 45 43 2e 73 61 76 65 5f 6b 65 79 94 6a 74 1f 00 00 4b ec 4b fe 87 94 8c K.K.....EC.save_key.jt...K.K....
2f6c0 13 45 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 00 4d 00 01 4d 07 01 .EC.save_pub_key_bio.jt...M..M..
2f6e0 87 94 8c 0f 45 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 74 1f 00 00 4d 09 01 4d 11 01 87 ....EC.save_pub_key.jt...M..M...
2f700 94 8c 09 45 43 2e 61 73 5f 70 65 6d 94 6a 74 1f 00 00 4d 13 01 4d 1b 01 87 94 8c 12 45 43 2e 5f ...EC.as_pem.jt...M..M......EC._
2f720 63 68 65 63 6b 5f 6b 65 79 5f 74 79 70 65 94 6a 74 1f 00 00 4d 1d 01 4d 1f 01 87 94 8c 0c 45 43 check_key_type.jt...M..M......EC
2f740 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 74 1f 00 00 4d 21 01 4d 24 01 87 94 8c 02 45 43 94 6a 7d 1f .check_key.jt...M!.M$.....EC.j}.
2f760 00 00 4b 83 4d 24 01 87 94 8c 0f 45 43 5f 70 75 62 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 ..K.M$.....EC_pub.__init__.jt...
2f780 4d 2d 01 4d 30 01 87 94 8c 0e 45 43 5f 70 75 62 2e 67 65 74 5f 64 65 72 94 6a 74 1f 00 00 4d 32 M-.M0.....EC_pub.get_der.jt...M2
2f7a0 01 4d 3a 01 87 94 8c 0e 45 43 5f 70 75 62 2e 67 65 74 5f 6b 65 79 94 6a 74 1f 00 00 4d 3c 01 4d .M:.....EC_pub.get_key.jt...M<.M
2f7c0 42 01 87 94 8c 06 45 43 5f 70 75 62 94 6a 7d 1f 00 00 4d 27 01 4d 46 01 87 94 8c 0a 67 65 6e 5f B.....EC_pub.j}...M'.MF.....gen_
2f7e0 70 61 72 61 6d 73 94 6a 74 1f 00 00 4d 49 01 4d 54 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a params.jt...MI.MT.....load_key.j
2f800 74 1f 00 00 4d 57 01 4d 63 01 87 94 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 74 t...MW.Mc.....load_key_string.jt
2f820 1f 00 00 4d 66 01 4d 74 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 00 4d ...Mf.Mt.....load_key_bio.jt...M
2f840 77 01 4d 82 01 87 94 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 74 1f 00 00 4d 85 01 4d 90 w.M......load_pub_key.jt...M..M.
2f860 01 87 94 8c 16 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 74 1f 00 .....load_key_string_pubkey.jt..
2f880 00 4d 93 01 4d a1 01 87 94 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 .M..M......load_pub_key_bio.jt..
2f8a0 00 4d a4 01 4d b1 01 87 94 8c 08 65 63 5f 65 72 72 6f 72 94 6a 74 1f 00 00 4d b4 01 4d b6 01 87 .M..M......ec_error.jt...M..M...
2f8c0 94 8c 10 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 64 65 72 94 6a 74 1f 00 00 4d b9 01 4d be 01 87 ...pub_key_from_der.jt...M..M...
2f8e0 94 8c 13 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 6a 74 1f 00 00 4d c1 01 4d ...pub_key_from_params.jt...M..M
2f900 c6 01 87 94 8c 12 67 65 74 5f 62 75 69 6c 74 69 6e 5f 63 75 72 76 65 73 94 6a 74 1f 00 00 4d c9 ......get_builtin_curves.jt...M.
2f920 01 4d cb 01 87 94 75 7d 94 28 8c 02 45 43 94 6a 53 02 00 00 8c 09 45 43 2e 61 73 5f 70 65 6d 94 .M....u}.(..EC.jS.....EC.as_pem.
2f940 6a 53 02 00 00 8c 0c 45 43 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 11 45 43 2e 63 6f jS.....EC.check_key.jS.....EC.co
2f960 6d 70 75 74 65 5f 64 68 5f 6b 65 79 94 6a 53 02 00 00 8c 0a 45 43 2e 67 65 6e 5f 6b 65 79 94 6a mpute_dh_key.jS.....EC.gen_key.j
2f980 53 02 00 00 8c 06 45 43 2e 70 75 62 94 6a 53 02 00 00 8c 0b 45 43 2e 73 61 76 65 5f 6b 65 79 94 S.....EC.pub.jS.....EC.save_key.
2f9a0 6a 53 02 00 00 8c 0f 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0f 45 43 jS.....EC.save_key_bio.jS.....EC
2f9c0 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 13 45 43 2e 73 61 76 65 5f 70 75 62 .save_pub_key.jS.....EC.save_pub
2f9e0 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0b 45 43 2e 73 69 67 6e 5f 64 73 61 94 6a 53 02 00 _key_bio.jS.....EC.sign_dsa.jS..
2fa00 00 8c 10 45 43 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 94 6a 53 02 00 00 8c 0d 45 43 2e 76 65 ...EC.sign_dsa_asn1.jS.....EC.ve
2fa20 72 69 66 79 5f 64 73 61 94 6a 53 02 00 00 8c 12 45 43 2e 76 65 72 69 66 79 5f 64 73 61 5f 61 73 rify_dsa.jS.....EC.verify_dsa_as
2fa40 6e 31 94 6a 53 02 00 00 8c 07 45 43 45 72 72 6f 72 94 6a 53 02 00 00 8c 06 45 43 5f 70 75 62 94 n1.jS.....ECError.jS.....EC_pub.
2fa60 6a 53 02 00 00 8c 0e 45 43 5f 70 75 62 2e 67 65 74 5f 64 65 72 94 6a 53 02 00 00 8c 0e 45 43 5f jS.....EC_pub.get_der.jS.....EC_
2fa80 70 75 62 2e 67 65 74 5f 6b 65 79 94 6a 53 02 00 00 8c 08 65 63 5f 65 72 72 6f 72 94 6a 53 02 00 pub.get_key.jS.....ec_error.jS..
2faa0 00 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 53 02 00 00 8c 12 67 65 74 5f 62 75 69 6c 74 69 6e ...gen_params.jS.....get_builtin
2fac0 5f 63 75 72 76 65 73 94 6a 53 02 00 00 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c 0c 6c _curves.jS.....load_key.jS.....l
2fae0 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 oad_key_bio.jS.....load_key_stri
2fb00 6e 67 94 6a 53 02 00 00 8c 16 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 ng.jS.....load_key_string_pubkey
2fb20 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 10 6c 6f 61 64 .jS.....load_pub_key.jS.....load
2fb40 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 10 70 75 62 5f 6b 65 79 5f 66 72 6f 6d _pub_key_bio.jS.....pub_key_from
2fb60 5f 64 65 72 94 6a 53 02 00 00 8c 13 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 _der.jS.....pub_key_from_params.
2fb80 6a 53 02 00 00 75 8c 0b 4d 32 43 72 79 70 74 6f 2e 45 43 94 74 94 8c 0c 4d 32 43 72 79 70 74 6f jS...u..M2Crypto.EC.t...M2Crypto
2fba0 2e 45 56 50 94 28 58 68 36 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 .EVP.(Xh6..from.__future__.impor
2fbc0 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 77 t.absolute_import.."""M2Crypto.w
2fbe0 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 45 56 50 20 41 50 49 2e 0a 0a 43 6f 70 rapper.for.OpenSSL.EVP.API...Cop
2fc00 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 65 6e 67 20 53 69 yright.(c).1999-2004.Ng.Pheng.Si
2fc20 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 50 6f 72 74 69 ong..All.rights.reserved...Porti
2fc40 6f 6e 73 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 34 2d 32 30 30 37 20 4f 70 65 6e ons.Copyright.(c).2004-2007.Open
2fc60 20 53 6f 75 72 63 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 2e .Source.Applications.Foundation.
2fc80 0a 41 75 74 68 6f 72 3a 20 48 65 69 6b 6b 69 20 54 6f 69 76 6f 6e 65 6e 0a 22 22 22 0a 0a 69 6d .Author:.Heikki.Toivonen."""..im
2fca0 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 port.logging.from.M2Crypto.impor
2fcc0 74 20 42 49 4f 2c 20 45 72 72 2c 20 52 53 41 2c 20 6d 32 2c 20 75 74 69 6c 0a 69 66 20 75 74 69 t.BIO,.Err,.RSA,.m2,.util.if.uti
2fce0 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f l.py27plus:.....from.typing.impo
2fd00 72 74 20 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 43 61 6c 6c 61 62 6c 65 20 20 23 rt.AnyStr,.Optional,.Callable..#
2fd20 20 6e 6f 71 61 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 65 72 28 27 .noqa..log.=.logging.getLogger('
2fd40 45 56 50 27 29 0a 0a 63 6c 61 73 73 20 45 56 50 45 72 72 6f 72 28 56 61 6c 75 65 45 72 72 6f 72 EVP')..class.EVPError(ValueError
2fd60 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 65 76 70 5f 69 6e 69 74 28 45 56 50 45 72 72 6f ):.....pass..m2.evp_init(EVPErro
2fd80 72 29 0a 0a 0a 64 65 66 20 70 62 6b 64 66 32 28 70 61 73 73 77 6f 72 64 2c 20 73 61 6c 74 2c 20 r)...def.pbkdf2(password,.salt,.
2fda0 69 74 65 72 2c 20 6b 65 79 6c 65 6e 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 iter,.keylen):.....#.type:.(byte
2fdc0 73 2c 20 62 79 74 65 73 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 s,.bytes,.int,.int).->.bytes....
2fde0 20 22 22 22 0a 20 20 20 20 44 65 72 69 76 65 20 61 20 6b 65 79 20 66 72 6f 6d 20 70 61 73 73 77 .""".....Derive.a.key.from.passw
2fe00 6f 72 64 20 75 73 69 6e 67 20 50 42 4b 44 46 32 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 ord.using.PBKDF2.algorithm.speci
2fe20 66 69 65 64 20 69 6e 20 52 46 43 20 32 38 39 38 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 70 61 fied.in.RFC.2898.......:param.pa
2fe40 73 73 77 6f 72 64 3a 20 44 65 72 69 76 65 20 74 68 65 20 6b 65 79 20 66 72 6f 6d 20 74 68 69 73 ssword:.Derive.the.key.from.this
2fe60 20 70 61 73 73 77 6f 72 64 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 61 6c 74 3a 20 20 20 20 20 .password......:param.salt:.....
2fe80 53 61 6c 74 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 69 74 65 72 3a 20 20 20 20 20 4e 75 6d 62 65 Salt......:param.iter:.....Numbe
2fea0 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 20 74 6f 20 70 65 72 66 6f 72 6d 2e 0a 20 20 20 20 r.of.iterations.to.perform......
2fec0 3a 70 61 72 61 6d 20 6b 65 79 6c 65 6e 3a 20 20 20 4c 65 6e 67 74 68 20 6f 66 20 6b 65 79 20 74 :param.keylen:...Length.of.key.t
2fee0 6f 20 70 72 6f 64 75 63 65 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 20 o.produce......:return:.........
2ff00 4b 65 79 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 35 Key......""".....return.m2.pkcs5
2ff20 5f 70 62 6b 64 66 32 5f 68 6d 61 63 5f 73 68 61 31 28 70 61 73 73 77 6f 72 64 2c 20 73 61 6c 74 _pbkdf2_hmac_sha1(password,.salt
2ff40 2c 20 69 74 65 72 2c 20 6b 65 79 6c 65 6e 29 0a 0a 0a 63 6c 61 73 73 20 4d 65 73 73 61 67 65 44 ,.iter,.keylen)...class.MessageD
2ff60 69 67 65 73 74 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4d 65 73 73 61 igest(object):.....""".....Messa
2ff80 67 65 20 44 69 67 65 73 74 0a 20 20 20 20 22 22 22 0a 20 20 20 20 6d 32 5f 6d 64 5f 63 74 78 5f ge.Digest.....""".....m2_md_ctx_
2ffa0 66 72 65 65 20 3d 20 6d 32 2e 6d 64 5f 63 74 78 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f free.=.m2.md_ctx_free......def._
2ffc0 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 61 6c 67 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 _init__(self,.algo):.........#.t
2ffe0 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 6d 64 20 3d 20 ype:.(str).->.None.........md.=.
30000 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 20 20 23 20 74 79 70 65 3a getattr(m2,.algo,.None)..#.type:
30020 20 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6d .Optional[Callable].........if.m
30040 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 66 20 74 68 65 20 d.is.None:.............#.if.the.
30060 64 69 67 65 73 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 6e 27 74 20 66 6f 75 6e 64 20 61 73 20 digest.algorithm.isn't.found.as.
30080 61 6e 20 61 74 74 72 69 62 75 74 65 20 6f 66 20 74 68 65 20 6d 32 0a 20 20 20 20 20 20 20 20 20 an.attribute.of.the.m2..........
300a0 20 20 20 23 20 6d 6f 64 75 6c 65 2c 20 74 72 79 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 74 68 65 20 ...#.module,.try.to.look.up.the.
300c0 64 69 67 65 73 74 20 75 73 69 6e 67 20 67 65 74 5f 64 69 67 65 73 74 62 79 6e 61 6d 65 28 29 0a digest.using.get_digestbyname().
300e0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 64 20 3d 20 6d 32 2e 67 65 74 5f 64 69 67 ............self.md.=.m2.get_dig
30100 65 73 74 62 79 6e 61 6d 65 28 61 6c 67 6f 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 estbyname(algo).........else:...
30120 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 64 20 3d 20 6d 64 28 29 0a 20 20 20 20 20 20 20 ..........self.md.=.md()........
30140 20 73 65 6c 66 2e 63 74 78 20 3d 20 6d 32 2e 6d 64 5f 63 74 78 5f 6e 65 77 28 29 0a 20 20 20 20 .self.ctx.=.m2.md_ctx_new().....
30160 20 20 20 20 6d 32 2e 64 69 67 65 73 74 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 6c ....m2.digest_init(self.ctx,.sel
30180 66 2e 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 f.md)......def.__del__(self):...
301a0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 ......#.type:.().->.None........
301c0 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 63 74 78 27 2c 20 4e 6f 6e 65 29 3a 0a .if.getattr(self,.'ctx',.None):.
301e0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 28 ............self.m2_md_ctx_free(
30200 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 28 73 65 6c 66 2c 20 self.ctx)......def.update(self,.
30220 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d data):.........#.type:.(bytes).-
30240 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 41 64 64 20 64 61 >.int.........""".........Add.da
30260 74 61 20 74 6f 20 62 65 20 64 69 67 65 73 74 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 ta.to.be.digested...........:ret
30280 75 72 6e 3a 20 2d 31 20 66 6f 72 20 50 79 74 68 6f 6e 20 65 72 72 6f 72 2c 20 31 20 66 6f 72 20 urn:.-1.for.Python.error,.1.for.
302a0 73 75 63 63 65 73 73 2c 20 30 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 66 61 69 6c 75 72 65 2e 0a success,.0.for.OpenSSL.failure..
302c0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 69 ........""".........return.m2.di
302e0 67 65 73 74 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 gest_update(self.ctx,.data).....
30300 20 64 65 66 20 66 69 6e 61 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .def.final(self):.........return
30320 20 6d 32 2e 64 69 67 65 73 74 5f 66 69 6e 61 6c 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 .m2.digest_final(self.ctx)......
30340 23 20 44 65 70 72 65 63 61 74 65 64 2e 0a 20 20 20 20 64 69 67 65 73 74 20 3d 20 66 69 6e 61 6c #.Deprecated......digest.=.final
30360 0a 0a 0a 63 6c 61 73 73 20 48 4d 41 43 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 6d 32 5f 68 ...class.HMAC(object):......m2_h
30380 6d 61 63 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d 32 2e 68 6d 61 63 5f 63 74 78 5f 66 72 65 65 0a mac_ctx_free.=.m2.hmac_ctx_free.
303a0 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 2c 20 61 6c 67 .....def.__init__(self,.key,.alg
303c0 6f 3d 27 73 68 61 31 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 o='sha1'):.........#.type:.(byte
303e0 73 2c 20 73 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 6d 64 20 3d 20 67 65 74 s,.str).->.None.........md.=.get
30400 61 74 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 attr(m2,.algo,.None).........if.
30420 6d 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 md.is.None:.............raise.Va
30440 6c 75 65 45 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 61 6c 67 6f 72 69 74 68 6d 27 2c 20 61 6c lueError('unknown.algorithm',.al
30460 67 6f 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 64 20 3d 20 6d 64 28 29 0a 20 20 20 20 20 go).........self.md.=.md()......
30480 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 6d 32 2e 68 6d 61 63 5f 63 74 78 5f 6e 65 77 28 29 0a ...self.ctx.=.m2.hmac_ctx_new().
304a0 20 20 20 20 20 20 20 20 6d 32 2e 68 6d 61 63 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 6b ........m2.hmac_init(self.ctx,.k
304c0 65 79 2c 20 73 65 6c 66 2e 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 ey,.self.md)......def.__del__(se
304e0 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a lf):.........#.type:.().->.None.
30500 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 63 74 78 27 2c 20 ........if.getattr(self,.'ctx',.
30520 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 68 6d 61 63 5f None):.............self.m2_hmac_
30540 63 74 78 5f 66 72 65 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 72 65 73 65 ctx_free(self.ctx)......def.rese
30560 74 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 t(self,.key):.........#.type:.(b
30580 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 6d 32 2e 68 6d 61 63 5f 69 6e ytes).->.None.........m2.hmac_in
305a0 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 6b 65 79 2c 20 73 65 6c 66 2e 6d 64 29 0a 0a 20 20 20 20 it(self.ctx,.key,.self.md)......
305c0 64 65 66 20 75 70 64 61 74 65 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 def.update(self,.data):.........
305e0 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 #.type:.(bytes).->.None.........
30600 6d 32 2e 68 6d 61 63 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 74 78 2c 20 64 61 74 61 29 0a 0a m2.hmac_update(self.ctx,.data)..
30620 20 20 20 20 64 65 66 20 66 69 6e 61 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 ....def.final(self):.........#.t
30640 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ype:.().->.bytes.........return.
30660 6d 32 2e 68 6d 61 63 5f 66 69 6e 61 6c 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 69 67 m2.hmac_final(self.ctx)......dig
30680 65 73 74 20 3d 20 66 69 6e 61 6c 0a 0a 0a 64 65 66 20 68 6d 61 63 28 6b 65 79 2c 20 64 61 74 61 est.=.final...def.hmac(key,.data
306a0 2c 20 61 6c 67 6f 3d 27 73 68 61 31 27 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 ,.algo='sha1'):.....#.type:.(byt
306c0 65 73 2c 20 62 79 74 65 73 2c 20 73 74 72 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 6d 64 20 es,.bytes,.str).->.bytes.....md.
306e0 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 69 66 =.getattr(m2,.algo,.None).....if
30700 20 6d 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 .md.is.None:.........raise.Value
30720 45 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 61 6c 67 6f 72 69 74 68 6d 27 2c 20 61 6c 67 6f 29 Error('unknown.algorithm',.algo)
30740 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 68 6d 61 63 28 6b 65 79 2c 20 64 61 74 61 2c 20 6d .....return.m2.hmac(key,.data,.m
30760 64 28 29 29 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 65 72 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 d())...class.Cipher(object):....
30780 20 20 6d 32 5f 63 69 70 68 65 72 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d 32 2e 63 69 70 68 65 72 ..m2_cipher_ctx_free.=.m2.cipher
307a0 5f 63 74 78 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 _ctx_free......def.__init__(self
307c0 2c 20 61 6c 67 2c 20 6b 65 79 2c 20 69 76 2c 20 6f 70 2c 20 6b 65 79 5f 61 73 5f 62 79 74 65 73 ,.alg,.key,.iv,.op,.key_as_bytes
307e0 3d 30 2c 20 64 3d 27 6d 64 35 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 61 =0,.d='md5',..................sa
30800 6c 74 3d 62 27 31 32 33 34 35 36 37 38 27 2c 20 69 3d 31 2c 20 70 61 64 64 69 6e 67 3d 31 29 3a lt=b'12345678',.i=1,.padding=1):
30820 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 62 79 74 65 73 2c 20 62 79 .........#.type:.(str,.bytes,.by
30840 74 65 73 2c 20 6f 62 6a 65 63 74 2c 20 69 6e 74 2c 20 73 74 72 2c 20 62 79 74 65 73 2c 20 69 6e tes,.object,.int,.str,.bytes,.in
30860 74 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 3d t,.int).->.None.........cipher.=
30880 20 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 .getattr(m2,.alg,.None).........
308a0 69 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 if.cipher.is.None:.............r
308c0 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 63 69 70 68 65 72 27 aise.ValueError('unknown.cipher'
308e0 2c 20 61 6c 67 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 69 70 68 65 72 20 3d 20 63 69 70 ,.alg).........self.cipher.=.cip
30900 68 65 72 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 5f 61 73 5f 62 79 74 65 73 3a 0a 20 her().........if.key_as_bytes:..
30920 20 20 20 20 20 20 20 20 20 20 20 6b 6d 64 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 64 2c 20 ...........kmd.=.getattr(m2,.d,.
30940 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 6d 64 20 69 73 20 4e 6f 6e 65 None).............if.kmd.is.None
30960 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 :.................raise.ValueErr
30980 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 27 2c 20 64 29 0a or('unknown.message.digest',.d).
309a0 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6d 32 2e 62 79 74 65 73 5f 74 6f 5f 6b 65 ............key.=.m2.bytes_to_ke
309c0 79 28 73 65 6c 66 2e 63 69 70 68 65 72 2c 20 6b 6d 64 28 29 2c 20 6b 65 79 2c 20 73 61 6c 74 2c y(self.cipher,.kmd(),.key,.salt,
309e0 20 69 76 2c 20 69 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 6d 32 2e 63 69 .iv,.i).........self.ctx.=.m2.ci
30a00 70 68 65 72 5f 63 74 78 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 63 69 70 68 65 72 pher_ctx_new().........m2.cipher
30a20 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 6c 66 2e 63 69 70 68 65 72 2c 20 6b 65 79 _init(self.ctx,.self.cipher,.key
30a40 2c 20 69 76 2c 20 6f 70 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 70 61 64 64 69 ,.iv,.op).........self.set_paddi
30a60 6e 67 28 70 61 64 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 64 65 6c 20 6b 65 79 0a 0a 20 20 20 ng(padding).........del.key.....
30a80 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 .def.__del__(self):.........#.ty
30aa0 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 pe:.().->.None.........if.getatt
30ac0 72 28 73 65 6c 66 2c 20 27 63 74 78 27 2c 20 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 r(self,.'ctx',.None):...........
30ae0 20 20 73 65 6c 66 2e 6d 32 5f 63 69 70 68 65 72 5f 63 74 78 5f 66 72 65 65 28 73 65 6c 66 2e 63 ..self.m2_cipher_ctx_free(self.c
30b00 74 78 29 0a 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 28 73 65 6c 66 2c 20 64 61 74 61 29 3a tx)......def.update(self,.data):
30b20 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 62 79 74 65 .........#.type:.(bytes).->.byte
30b40 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 63 69 70 68 65 72 5f 75 70 64 61 74 s.........return.m2.cipher_updat
30b60 65 28 73 65 6c 66 2e 63 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 66 69 6e 61 6c e(self.ctx,.data)......def.final
30b80 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 (self):.........#.type:.().->.by
30ba0 74 65 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 63 69 70 68 65 72 5f 66 69 6e tes.........return.m2.cipher_fin
30bc0 61 6c 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 70 61 64 64 69 6e al(self.ctx)......def.set_paddin
30be0 67 28 73 65 6c 66 2c 20 70 61 64 64 69 6e 67 3d 31 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 g(self,.padding=1):.........#.ty
30c00 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 pe:.(int).->.int........."""....
30c20 20 20 20 20 20 41 63 74 75 61 6c 6c 79 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 20 31 0a 20 20 .....Actually.always.return.1...
30c40 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 63 69 70 68 ......""".........return.m2.ciph
30c60 65 72 5f 73 65 74 5f 70 61 64 64 69 6e 67 28 73 65 6c 66 2e 63 74 78 2c 20 70 61 64 64 69 6e 67 er_set_padding(self.ctx,.padding
30c80 29 0a 0a 0a 63 6c 61 73 73 20 50 4b 65 79 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a )...class.PKey(object):.....""".
30ca0 20 20 20 20 50 75 62 6c 69 63 20 4b 65 79 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 70 ....Public.Key....."""......m2_p
30cc0 6b 65 79 5f 66 72 65 65 20 3d 20 6d 32 2e 70 6b 65 79 5f 66 72 65 65 0a 20 20 20 20 6d 32 5f 6d key_free.=.m2.pkey_free.....m2_m
30ce0 64 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d 32 2e 6d 64 5f 63 74 78 5f 66 72 65 65 0a 0a 20 20 20 d_ctx_free.=.m2.md_ctx_free.....
30d00 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 6b 65 79 3d 4e 6f 6e 65 2c 20 5f .def.__init__(self,.pkey=None,._
30d20 70 79 66 72 65 65 3d 30 2c 20 6d 64 3d 27 73 68 61 31 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 pyfree=0,.md='sha1'):.........#.
30d40 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 2c 20 73 74 72 type:.(Optional[bytes],.int,.str
30d60 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 70 6b 65 79 20 69 73 20 6e 6f 74 ).->.None.........if.pkey.is.not
30d80 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 65 79 20 3d 20 70 .None:.............self.pkey.=.p
30da0 6b 65 79 20 20 23 20 74 79 70 65 3a 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 key..#.type:.bytes.............s
30dc0 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 65 6c elf._pyfree.=._pyfree.........el
30de0 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 65 79 20 3d 20 6d 32 2e 70 se:.............self.pkey.=.m2.p
30e00 6b 65 79 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 key_new().............self._pyfr
30e20 65 65 20 3d 20 31 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 65 74 5f 63 6f 6e 74 65 78 74 ee.=.1.........self._set_context
30e40 28 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 (md)......def.__del__(self):....
30e60 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 .....#.type:.().->.None.........
30e80 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a if.getattr(self,.'_pyfree',.0):.
30ea0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 70 6b 65 79 5f 66 72 65 65 28 73 65 ............self.m2_pkey_free(se
30ec0 6c 66 2e 70 6b 65 79 29 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 lf.pkey).........if.getattr(self
30ee0 2c 20 27 63 74 78 27 2c 20 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ,.'ctx',.None):.............self
30f00 2e 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 .m2_md_ctx_free(self.ctx)......d
30f20 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 ef._ptr(self):.........return.se
30f40 6c 66 2e 70 6b 65 79 0a 0a 20 20 20 20 64 65 66 20 5f 73 65 74 5f 63 6f 6e 74 65 78 74 28 73 65 lf.pkey......def._set_context(se
30f60 6c 66 2c 20 6d 64 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d lf,.md):.........#.type:.(str).-
30f80 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 6d 64 61 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c >.None.........mda.=.getattr(m2,
30fa0 20 6d 64 2c 20 4e 6f 6e 65 29 20 20 23 20 74 79 70 65 3a 20 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c .md,.None)..#.type:.Optional[Cal
30fc0 6c 61 62 6c 65 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6d 64 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 lable].........if.mda.is.None:..
30fe0 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 75 6e 6b ...........raise.ValueError('unk
31000 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 27 2c 20 6d 64 29 0a 20 20 20 20 20 20 nown.message.digest',.md).......
31020 20 20 73 65 6c 66 2e 6d 64 20 3d 20 6d 64 61 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 ..self.md.=.mda().........self.c
31040 74 78 20 3d 20 6d 32 2e 6d 64 5f 63 74 78 5f 6e 65 77 28 29 20 20 23 20 74 79 70 65 3a 20 43 6f tx.=.m2.md_ctx_new()..#.type:.Co
31060 6e 74 65 78 74 0a 0a 20 20 20 20 64 65 66 20 72 65 73 65 74 5f 63 6f 6e 74 65 78 74 28 73 65 6c ntext......def.reset_context(sel
31080 66 2c 20 6d 64 3d 27 73 68 61 31 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 f,.md='sha1'):.........#.type:.(
310a0 73 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 str).->.None........."""........
310c0 20 52 65 73 65 74 20 69 6e 74 65 72 6e 61 6c 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 63 .Reset.internal.message.digest.c
310e0 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 64 3a 20 54 68 65 20 ontext...........:param.md:.The.
31100 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 20 20 20 20 20 20 message.digest.algorithm........
31120 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 65 74 5f 63 6f 6e 74 65 78 74 28 ..""".........self._set_context(
31140 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 5f 69 6e 69 74 28 73 65 6c 66 29 3a 0a 20 20 md)......def.sign_init(self):...
31160 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 ......#.type:.().->.None........
31180 20 22 22 22 0a 20 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69 73 65 20 73 69 67 6e 69 6e 67 20 .""".........Initialise.signing.
311a0 6f 70 65 72 61 74 69 6f 6e 20 77 69 74 68 20 73 65 6c 66 2e 0a 20 20 20 20 20 20 20 20 22 22 22 operation.with.self.........."""
311c0 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 69 67 6e 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 .........m2.sign_init(self.ctx,.
311e0 73 65 6c 66 2e 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 5f 75 70 64 61 74 65 28 73 65 self.md)......def.sign_update(se
31200 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 lf,.data):.........#.type:.(byte
31220 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 46 s).->.None.........""".........F
31240 65 65 64 20 64 61 74 61 20 74 6f 20 73 69 67 6e 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 2e 0a 0a eed.data.to.signing.operation...
31260 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 3a 20 44 61 74 61 20 74 6f 20 62 65 20 ........:param.data:.Data.to.be.
31280 73 69 67 6e 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 signed..........""".........m2.s
312a0 69 67 6e 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 ign_update(self.ctx,.data)......
312c0 64 65 66 20 73 69 67 6e 5f 66 69 6e 61 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 def.sign_final(self):.........#.
312e0 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 type:.().->.bytes........."""...
31300 20 20 20 20 20 20 52 65 74 75 72 6e 20 73 69 67 6e 61 74 75 72 65 2e 0a 0a 20 20 20 20 20 20 20 ......Return.signature..........
31320 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 73 69 67 6e 61 74 75 72 65 2e 0a 20 20 20 20 20 20 20 .:return:.The.signature.........
31340 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 69 67 6e 5f 66 69 6e 61 .""".........return.m2.sign_fina
31360 6c 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 6c 66 2e 70 6b 65 79 29 0a 0a 20 20 20 20 23 20 44 65 l(self.ctx,.self.pkey)......#.De
31380 70 72 65 63 61 74 65 64 0a 20 20 20 20 75 70 64 61 74 65 20 3d 20 73 69 67 6e 5f 75 70 64 61 74 precated.....update.=.sign_updat
313a0 65 0a 20 20 20 20 66 69 6e 61 6c 20 3d 20 73 69 67 6e 5f 66 69 6e 61 6c 0a 0a 20 20 20 20 64 65 e.....final.=.sign_final......de
313c0 66 20 76 65 72 69 66 79 5f 69 6e 69 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 f.verify_init(self):.........#.t
313e0 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 ype:.().->.None.........""".....
31400 20 20 20 20 49 6e 69 74 69 61 6c 69 73 65 20 73 69 67 6e 61 74 75 72 65 20 76 65 72 69 66 69 63 ....Initialise.signature.verific
31420 61 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 74 68 20 73 65 6c 66 2e 0a 20 20 20 20 20 ation.operation.with.self.......
31440 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 76 65 72 69 66 79 5f 69 6e 69 74 28 73 65 ...""".........m2.verify_init(se
31460 6c 66 2e 63 74 78 2c 20 73 65 6c 66 2e 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 lf.ctx,.self.md)......def.verify
31480 5f 75 70 64 61 74 65 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 _update(self,.data):.........#.t
314a0 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a ype:.(bytes).->.int.........""".
314c0 20 20 20 20 20 20 20 20 46 65 65 64 20 64 61 74 61 20 74 6f 20 76 65 72 69 66 69 63 61 74 69 6f ........Feed.data.to.verificatio
314e0 6e 20 6f 70 65 72 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 n.operation...........:param.dat
31500 61 3a 20 44 61 74 61 20 74 6f 20 62 65 20 76 65 72 69 66 69 65 64 2e 0a 20 20 20 20 20 20 20 20 a:.Data.to.be.verified..........
31520 3a 72 65 74 75 72 6e 3a 20 2d 31 20 6f 6e 20 50 79 74 68 6f 6e 20 65 72 72 6f 72 2c 20 31 20 66 :return:.-1.on.Python.error,.1.f
31540 6f 72 20 73 75 63 63 65 73 73 2c 20 30 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 65 72 72 6f 72 0a or.success,.0.for.OpenSSL.error.
31560 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 76 65 ........""".........return.m2.ve
31580 72 69 66 79 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 rify_update(self.ctx,.data).....
315a0 20 64 65 66 20 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 73 65 6c 66 2c 20 73 69 67 6e 29 3a 0a 20 .def.verify_final(self,.sign):..
315c0 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 .......#.type:.(bytes).->.int...
315e0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 72 65 73 75 6c 74 20 ......""".........Return.result.
31600 6f 66 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d of.verification...........:param
31620 20 73 69 67 6e 3a 20 53 69 67 6e 61 74 75 72 65 20 74 6f 20 75 73 65 20 66 6f 72 20 76 65 72 69 .sign:.Signature.to.use.for.veri
31640 66 69 63 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 65 73 75 6c 74 fication.........:return:.Result
31660 20 6f 66 20 76 65 72 69 66 69 63 61 74 69 6f 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 2c .of.verification:.1.for.success,
31680 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 2c 20 2d 31 20 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 .0.for.failure,.-1.on...........
316a0 20 20 20 20 20 20 20 6f 74 68 65 72 20 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a .......other.error..........""".
316c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 73 ........return.m2.verify_final(s
316e0 65 6c 66 2e 63 74 78 2c 20 73 69 67 6e 2c 20 73 65 6c 66 2e 70 6b 65 79 29 0a 0a 20 20 20 20 64 elf.ctx,.sign,.self.pkey)......d
31700 65 66 20 61 73 73 69 67 6e 5f 72 73 61 28 73 65 6c 66 2c 20 72 73 61 2c 20 63 61 70 74 75 72 65 ef.assign_rsa(self,.rsa,.capture
31720 3d 31 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 52 53 41 2e 52 53 41 2c 20 69 =1):.........#.type:.(RSA.RSA,.i
31740 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 41 nt).->.int.........""".........A
31760 73 73 69 67 6e 20 74 68 65 20 52 53 41 20 6b 65 79 20 70 61 69 72 20 74 6f 20 73 65 6c 66 2e 0a ssign.the.RSA.key.pair.to.self..
31780 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 72 73 61 3a 20 4d 32 43 72 79 70 74 6f 2e 52 53 .........:param.rsa:.M2Crypto.RS
317a0 41 2e 52 53 41 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 6f 20 73 A.RSA.object.to.be.assigned.to.s
317c0 65 6c 66 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 70 74 75 72 65 3a 20 49 66 elf...........:param.capture:.If
317e0 20 74 72 75 65 20 28 64 65 66 61 75 6c 74 29 2c 20 74 68 69 73 20 50 4b 65 79 20 6f 62 6a 65 63 .true.(default),.this.PKey.objec
31800 74 20 77 69 6c 6c 20 6f 77 6e 20 74 68 65 20 52 53 41 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.will.own.the.RSA..............
31820 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 2c 20 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 ...........object,.meaning.that.
31840 6f 6e 63 65 20 74 68 65 20 50 4b 65 79 20 6f 62 6a 65 63 74 20 67 65 74 73 0a 20 20 20 20 20 20 once.the.PKey.object.gets.......
31860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 64 20 69 74 20 69 73 20 ..................deleted.it.is.
31880 6e 6f 20 6c 6f 6e 67 65 72 20 73 61 66 65 20 74 6f 20 75 73 65 20 74 68 65 20 52 53 41 20 6f 62 no.longer.safe.to.use.the.RSA.ob
318a0 6a 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 65 74 75 72 6e 20 31 ject...........:return:.Return.1
318c0 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 2e 0a .for.success.and.0.for.failure..
318e0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 63 61 70 74 75 72 65 3a 0a ........""".........if.capture:.
31900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 70 6b 65 79 5f 61 73 73 69 67 6e ............ret.=.m2.pkey_assign
31920 5f 72 73 61 28 73 65 6c 66 2e 70 6b 65 79 2c 20 72 73 61 2e 72 73 61 29 0a 20 20 20 20 20 20 20 _rsa(self.pkey,.rsa.rsa)........
31940 20 20 20 20 20 69 66 20 72 65 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 73 61 .....if.ret:.................rsa
31960 2e 5f 70 79 66 72 65 65 20 3d 20 30 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 ._pyfree.=.0.........else:......
31980 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 70 6b 65 79 5f 73 65 74 31 5f 72 73 61 28 73 65 .......ret.=.m2.pkey_set1_rsa(se
319a0 6c 66 2e 70 6b 65 79 2c 20 72 73 61 2e 72 73 61 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e lf.pkey,.rsa.rsa).........return
319c0 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 72 73 61 28 73 65 6c 66 29 3a 0a 20 20 20 .ret......def.get_rsa(self):....
319e0 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 52 53 41 2e 52 53 41 5f 70 75 62 0a 20 .....#.type:.().->.RSA.RSA_pub..
31a00 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 75 6e .......""".........Return.the.un
31a20 64 65 72 6c 79 69 6e 67 20 52 53 41 20 6b 65 79 20 69 66 20 74 68 61 74 20 69 73 20 77 68 61 74 derlying.RSA.key.if.that.is.what
31a40 20 74 68 65 20 45 56 50 0a 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 20 69 73 20 68 6f 6c .the.EVP.........instance.is.hol
31a60 64 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 73 61 5f 70 74 ding..........""".........rsa_pt
31a80 72 20 3d 20 6d 32 2e 70 6b 65 79 5f 67 65 74 31 5f 72 73 61 28 73 65 6c 66 2e 70 6b 65 79 29 0a r.=.m2.pkey_get1_rsa(self.pkey).
31aa0 0a 20 20 20 20 20 20 20 20 72 73 61 20 3d 20 52 53 41 2e 52 53 41 5f 70 75 62 28 72 73 61 5f 70 .........rsa.=.RSA.RSA_pub(rsa_p
31ac0 74 72 2c 20 31 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 61 0a 0a 20 20 20 20 64 tr,.1).........return.rsa......d
31ae0 65 66 20 73 61 76 65 5f 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 2c 20 63 69 70 68 65 72 3d 27 ef.save_key(self,.file,.cipher='
31b00 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 aes_128_cbc',..................c
31b20 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b allback=util.passphrase_callback
31b40 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 ):.........#.type:.(AnyStr,.Opti
31b60 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 onal[str],.Callable).->.int.....
31b80 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 74 68 65 20 6b 65 79 20 70 61 69 ....""".........Save.the.key.pai
31ba0 72 20 74 6f 20 61 20 66 69 6c 65 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 r.to.a.file.in.PEM.format.......
31bc0 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 20 74 6f ....:param.file:.Name.of.file.to
31be0 20 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 .save.key.to...........:param.ci
31c00 70 68 65 72 3a 20 53 79 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 20 74 6f 20 70 72 6f 74 65 63 pher:.Symmetric.cipher.to.protec
31c20 74 20 74 68 65 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 t.the.key..The.default..........
31c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 69 73 20 27 61 65 73 5f 31 32 38 ..............cipher.is.'aes_128
31c60 5f 63 62 63 27 2e 20 49 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 2c 20 74 68 65 6e 0a 20 _cbc'..If.cipher.is.None,.then..
31c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 20 69 73 ......................the.key.is
31ca0 20 73 61 76 65 64 20 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 .saved.in.the.clear...........:p
31cc0 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 aram.callback:.A.Python.callable
31ce0 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 .object.that.is.invoked.........
31d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 .................to.acquire.a.pa
31d20 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 0a 20 ssphrase.with.which.to.protect..
31d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 2e ........................the.key.
31d60 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .The.default.is.................
31d80 20 20 20 20 20 20 20 20 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 .........util.passphrase_callbac
31da0 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e k..........""".........with.BIO.
31dc0 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 openfile(file,.'wb').as.bio:....
31de0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 62 69 .........return.self.save_key_bi
31e00 6f 28 62 69 6f 2c 20 63 69 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 o(bio,.cipher,.callback)......de
31e20 66 20 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 2c 20 63 69 70 68 65 72 f.save_key_bio(self,.bio,.cipher
31e40 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ='aes_128_cbc',.................
31e60 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 .....callback=util.passphrase_ca
31e80 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 llback):.........#.type:.(BIO.BI
31ea0 4f 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 69 O,.Optional[str],.Callable).->.i
31ec0 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 74 68 65 20 nt.........""".........Save.the.
31ee0 6b 65 79 20 70 61 69 72 20 74 6f 20 74 68 65 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 20 6f 62 6a key.pair.to.the.M2Crypto.BIO.obj
31f00 65 63 74 20 27 62 69 6f 27 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 20 ect.'bio'.in.PEM.format.........
31f20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 20 6f 62 6a 65 63 ..:param.bio:.M2Crypto.BIO.objec
31f40 74 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 t.to.save.key.to...........:para
31f60 6d 20 63 69 70 68 65 72 3a 20 53 79 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 20 74 6f 20 70 72 m.cipher:.Symmetric.cipher.to.pr
31f80 6f 74 65 63 74 20 74 68 65 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 otect.the.key..The.default......
31fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 69 73 20 27 61 65 73 ..................cipher.is.'aes
31fc0 5f 31 32 38 5f 63 62 63 27 2e 20 49 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 2c 20 74 68 _128_cbc'..If.cipher.is.None,.th
31fe0 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 en........................the.ke
32000 79 20 69 73 20 73 61 76 65 64 20 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a 0a 20 20 20 20 20 20 y.is.saved.in.the.clear.........
32020 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c ..:param.callback:.A.Python.call
32040 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 able.object.that.is.invoked.....
32060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 .....................to.acquire.
32080 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 a.passphrase.with.which.to.prote
320a0 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 ct..........................the.
320c0 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 key..The.default.is.............
320e0 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c .............util.passphrase_cal
32100 6c 62 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 63 69 lback..........""".........if.ci
32120 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e pher.is.None:.............return
32140 20 6d 32 2e 70 6b 65 79 5f 77 72 69 74 65 5f 70 65 6d 5f 6e 6f 5f 63 69 70 68 65 72 28 73 65 6c .m2.pkey_write_pem_no_cipher(sel
32160 66 2e 70 6b 65 79 2c 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 f.pkey,.bio._ptr(),.callback)...
32180 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 20 3d 20 ......else:.............proto.=.
321a0 67 65 74 61 74 74 72 28 6d 32 2c 20 63 69 70 68 65 72 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 getattr(m2,.cipher,.None).......
321c0 20 20 20 20 20 20 69 66 20 70 72 6f 74 6f 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 ......if.proto.is.None:.........
321e0 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 6e 6f 20 73 75 63 ........raise.ValueError('no.suc
32200 68 20 63 69 70 68 65 72 20 25 73 27 20 25 20 63 69 70 68 65 72 29 0a 20 20 20 20 20 20 20 20 20 h.cipher.%s'.%.cipher)..........
32220 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 65 79 5f 77 72 69 74 65 5f 70 65 6d 28 73 65 6c 66 ...return.m2.pkey_write_pem(self
32240 2e 70 6b 65 79 2c 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 70 72 6f 74 6f 28 29 2c 20 63 61 6c 6c .pkey,.bio._ptr(),.proto(),.call
32260 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 70 65 6d 28 73 65 6c 66 2c 20 63 69 70 68 back)......def.as_pem(self,.ciph
32280 65 72 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e er='aes_128_cbc',.callback=util.
322a0 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 passphrase_callback):.........#.
322c0 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 type:.(Optional[str],.Callable).
322e0 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 ->.bytes.........""".........Ret
32300 75 72 6e 20 6b 65 79 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 20 69 6e 20 61 20 73 74 72 69 6e urn.key.in.PEM.format.in.a.strin
32320 67 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 53 79 6d 6d 65 g...........:param.cipher:.Symme
32340 74 72 69 63 20 63 69 70 68 65 72 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 6b 65 79 2e 20 tric.cipher.to.protect.the.key..
32360 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 The.default.....................
32380 20 20 20 63 69 70 68 65 72 20 69 73 20 60 60 27 61 65 73 5f 31 32 38 5f 63 62 63 27 60 60 2e 20 ...cipher.is.``'aes_128_cbc'``..
323a0 49 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 If.cipher.is.None,..............
323c0 20 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 74 68 65 20 6b 65 79 20 69 73 20 73 61 76 65 64 20 ..........then.the.key.is.saved.
323e0 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 in.the.clear...........:param.ca
32400 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 llback:.A.Python.callable.object
32420 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .that.is.invoked................
32440 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 ..........to.acquire.a.passphras
32460 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 e.with.which.to.protect.........
32480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 2e 20 54 68 65 20 64 65 .................the.key..The.de
324a0 66 61 75 6c 74 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fault.is........................
324c0 20 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 20 20 20 20 ..util.passphrase_callback......
324e0 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 ....""".........bio.=.BIO.Memory
32500 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 62 Buffer().........self.save_key_b
32520 69 6f 28 62 69 6f 2c 20 63 69 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 io(bio,.cipher,.callback).......
32540 20 20 72 65 74 75 72 6e 20 62 69 6f 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 20 64 65 66 ..return.bio.read_all()......def
32560 20 61 73 5f 64 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 .as_der(self):.........#.type:.(
32580 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 ).->.bytes.........""".........R
325a0 65 74 75 72 6e 20 6b 65 79 20 69 6e 20 44 45 52 20 66 6f 72 6d 61 74 20 69 6e 20 61 20 73 74 72 eturn.key.in.DER.format.in.a.str
325c0 69 6e 67 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 6d 32 ing.........""".........buf.=.m2
325e0 2e 70 6b 65 79 5f 61 73 5f 64 65 72 28 73 65 6c 66 2e 70 6b 65 79 29 0a 20 20 20 20 20 20 20 20 .pkey_as_der(self.pkey).........
32600 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 62 75 66 29 0a 20 20 20 20 bio.=.BIO.MemoryBuffer(buf).....
32620 20 20 20 20 72 65 74 75 72 6e 20 62 69 6f 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 20 64 ....return.bio.read_all()......d
32640 65 66 20 73 69 7a 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 ef.size(self):.........#.type:.(
32660 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 ).->.int.........""".........Ret
32680 75 72 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6b 65 79 20 69 6e 20 62 79 74 65 73 urn.the.size.of.the.key.in.bytes
326a0 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e ..........""".........return.m2.
326c0 70 6b 65 79 5f 73 69 7a 65 28 73 65 6c 66 2e 70 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 20 67 65 pkey_size(self.pkey)......def.ge
326e0 74 5f 6d 6f 64 75 6c 75 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a t_modulus(self):.........#.type:
32700 20 28 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 22 .().->.Optional[bytes]........."
32720 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 6d 6f 64 75 6c 75 73 20 69 6e "".........Return.the.modulus.in
32740 20 68 65 78 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 .hex.format.........."""........
32760 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 65 79 5f 67 65 74 5f 6d 6f 64 75 6c 75 73 28 73 65 6c 66 .return.m2.pkey_get_modulus(self
32780 2e 70 6b 65 79 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 28 66 69 6c 65 2c 20 63 61 6c 6c .pkey)...def.load_key(file,.call
327a0 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a back=util.passphrase_callback):.
327c0 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d ....#.type:.(AnyStr,.Callable).-
327e0 3e 20 50 4b 65 79 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 4d 32 43 72 79 >.PKey.....""".....Load.an.M2Cry
32800 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 66 72 6f 6d 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 pto.EVP.PKey.from.file.......:pa
32820 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e ram.file:.Name.of.file.containin
32840 67 20 74 68 65 20 6b 65 79 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 g.the.key.in.PEM.format.......:p
32860 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 aram.callback:.A.Python.callable
32880 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 .object.that.is.invoked.........
328a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 .............to.acquire.a.passph
328c0 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 0a 20 rase.with.which.to.protect.the..
328e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 72 ....................key.......:r
32900 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6f 62 6a 65 63 74 2e eturn:.M2Crypto.EVP.PKey.object.
32920 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 .....""".....with.BIO.openfile(f
32940 69 6c 65 2c 20 27 72 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d ile,.'r').as.bio:.........cptr.=
32960 20 6d 32 2e 70 6b 65 79 5f 72 65 61 64 5f 70 65 6d 28 62 69 6f 2e 62 69 6f 2c 20 63 61 6c 6c 62 .m2.pkey_read_pem(bio.bio,.callb
32980 61 63 6b 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 65 79 28 63 70 74 72 2c 20 31 29 0a 0a ack)......return.PKey(cptr,.1)..
329a0 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 3d .def.load_key_bio(bio,.callback=
329c0 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 util.passphrase_callback):.....#
329e0 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 50 4b .type:.(BIO.BIO,.Callable).->.PK
32a00 65 79 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e ey.....""".....Load.an.M2Crypto.
32a20 45 56 50 2e 50 4b 65 79 20 66 72 6f 6d 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 20 6f 62 EVP.PKey.from.an.M2Crypto.BIO.ob
32a40 6a 65 63 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e ject.......:param.bio:.M2Crypto.
32a60 42 49 4f 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6b 65 79 20 69 6e BIO.object.containing.the.key.in
32a80 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 .PEM.format.......:param.callbac
32aa0 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 k:.A.Python.callable.object.that
32ac0 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .is.invoked.....................
32ae0 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 .to.acquire.a.passphrase.with.wh
32b00 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ich.to.protect.the..............
32b20 20 20 20 20 20 20 20 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 ........key.......:return:.M2Cry
32b40 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 pto.EVP.PKey.object......"""....
32b60 20 63 70 74 72 20 3d 20 6d 32 2e 70 6b 65 79 5f 72 65 61 64 5f 70 65 6d 28 62 69 6f 2e 5f 70 74 .cptr.=.m2.pkey_read_pem(bio._pt
32b80 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 65 79 28 63 r(),.callback).....return.PKey(c
32ba0 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 6b 65 ptr,.1)...def.load_key_bio_pubke
32bc0 79 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f y(bio,.callback=util.passphrase_
32be0 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c callback):.....#.type:.(BIO.BIO,
32c00 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 50 4b 65 79 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c .Callable).->.PKey.....""".....L
32c20 6f 61 64 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 66 72 6f 6d 20 61 20 oad.an.M2Crypto.EVP.PKey.from.a.
32c40 70 75 62 6c 69 63 20 6b 65 79 20 61 73 20 61 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 20 6f 62 6a public.key.as.a.M2Crypto.BIO.obj
32c60 65 63 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 ect.......:param.bio:.M2Crypto.B
32c80 49 4f 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6b 65 79 20 69 6e 20 IO.object.containing.the.key.in.
32ca0 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b PEM.format.......:param.callback
32cc0 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 :.A.Python.callable.object.that.
32ce0 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 is.invoked......................
32d00 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 to.acquire.a.passphrase.with.whi
32d20 63 68 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch.to.protect.the...............
32d40 20 20 20 20 20 20 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 .......key.......:return:.M2Cryp
32d60 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 to.EVP.PKey.object......""".....
32d80 63 70 74 72 20 3d 20 6d 32 2e 70 6b 65 79 5f 72 65 61 64 5f 70 65 6d 5f 70 75 62 6b 65 79 28 62 cptr.=.m2.pkey_read_pem_pubkey(b
32da0 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 69 66 20 63 70 74 72 io._ptr(),.callback).....if.cptr
32dc0 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 56 50 45 72 72 6f 72 .is.None:.........raise.EVPError
32de0 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 29 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 65 (Err.get_error()).....return.PKe
32e00 79 28 63 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 y(cptr,.1)...def.load_key_string
32e20 28 73 74 72 69 6e 67 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 (string,.callback=util.passphras
32e40 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 e_callback):.....#.type:.(AnyStr
32e60 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 50 4b 65 79 0a 20 20 20 20 22 22 22 0a 20 20 20 20 ,.Callable).->.PKey.....""".....
32e80 4c 6f 61 64 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 66 72 6f 6d 20 61 Load.an.M2Crypto.EVP.PKey.from.a
32ea0 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 .string.......:param.string:.Str
32ec0 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6b 65 79 20 69 6e 20 50 45 4d 20 66 6f ing.containing.the.key.in.PEM.fo
32ee0 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 rmat.......:param.callback:.A.Py
32f00 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 thon.callable.object.that.is.inv
32f20 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 oked......................to.acq
32f40 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 uire.a.passphrase.with.which.to.
32f60 70 72 6f 74 65 63 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 protect.the.....................
32f80 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 .key.......:return:.M2Crypto.EVP
32fa0 2e 50 4b 65 79 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 62 69 6f 20 3d 20 .PKey.object......""".....bio.=.
32fc0 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 73 74 72 69 6e 67 29 0a 20 20 20 20 72 65 74 BIO.MemoryBuffer(string).....ret
32fe0 75 72 6e 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 0a urn.load_key_bio(bio,.callback).
33000 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 28 73 74 72 ..def.load_key_string_pubkey(str
33020 69 6e 67 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 ing,.callback=util.passphrase_ca
33040 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 llback):.....#.type:.(AnyStr,.Ca
33060 6c 6c 61 62 6c 65 29 20 2d 3e 20 50 4b 65 79 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 llable).->.PKey.....""".....Load
33080 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 66 72 6f 6d 20 61 20 70 75 62 .an.M2Crypto.EVP.PKey.from.a.pub
330a0 6c 69 63 20 6b 65 79 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d lic.key.as.a.string.......:param
330c0 20 73 74 72 69 6e 67 3a 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6b .string:.String.containing.the.k
330e0 65 79 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 ey.in.PEM.format.......:param.ca
33100 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 llback:.A.Python.callable.object
33120 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .that.is.invoked................
33140 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 ......to.acquire.a.passphrase.wi
33160 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 th.which.to.protect.the.........
33180 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 .............key.......:return:.
331a0 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 M2Crypto.EVP.PKey.object......""
331c0 22 0a 20 20 20 20 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 73 74 72 ".....bio.=.BIO.MemoryBuffer(str
331e0 69 6e 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 ing).....return.load_key_bio_pub
33200 6b 65 79 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 94 95 12 50 01 00 00 00 00 00 7d 94 28 key(bio,.callback)....P......}.(
33220 8c 08 45 56 50 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 12 4b 13 87 94 8c 06 70 62 6b 64 66 32 94 6a ..EVPError.j}...K.K.....pbkdf2.j
33240 74 1f 00 00 4b 18 4b 23 87 94 8c 16 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 5f 5f 69 6e 69 74 t...K.K#....MessageDigest.__init
33260 5f 5f 94 6a 74 1f 00 00 4b 2c 4b 36 87 94 8c 15 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 5f 5f __.jt...K,K6....MessageDigest.__
33280 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 38 4b 3b 87 94 8c 14 4d 65 73 73 61 67 65 44 69 67 65 73 74 del__.jt...K8K;....MessageDigest
332a0 2e 75 70 64 61 74 65 94 6a 74 1f 00 00 4b 3d 4b 44 87 94 8c 13 4d 65 73 73 61 67 65 44 69 67 65 .update.jt...K=KD....MessageDige
332c0 73 74 2e 66 69 6e 61 6c 94 6a 74 1f 00 00 4b 46 4b 47 87 94 8c 0d 4d 65 73 73 61 67 65 44 69 67 st.final.jt...KFKG....MessageDig
332e0 65 73 74 94 6a 7d 1f 00 00 4b 26 4b 4a 87 94 8c 0d 48 4d 41 43 2e 5f 5f 69 6e 69 74 5f 5f 94 6a est.j}...K&KJ....HMAC.__init__.j
33300 74 1f 00 00 4b 51 4b 58 87 94 8c 0c 48 4d 41 43 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 5a t...KQKX....HMAC.__del__.jt...KZ
33320 4b 5d 87 94 8c 0a 48 4d 41 43 2e 72 65 73 65 74 94 6a 74 1f 00 00 4b 5f 4b 61 87 94 8c 0b 48 4d K]....HMAC.reset.jt...K_Ka....HM
33340 41 43 2e 75 70 64 61 74 65 94 6a 74 1f 00 00 4b 63 4b 65 87 94 8c 0a 48 4d 41 43 2e 66 69 6e 61 AC.update.jt...KcKe....HMAC.fina
33360 6c 94 6a 74 1f 00 00 4b 67 4b 69 87 94 8c 04 48 4d 41 43 94 6a 7d 1f 00 00 4b 4d 4b 6b 87 94 8c l.jt...KgKi....HMAC.j}...KMKk...
33380 04 68 6d 61 63 94 6a 74 1f 00 00 4b 6e 4b 73 87 94 8c 0f 43 69 70 68 65 72 2e 5f 5f 69 6e 69 74 .hmac.jt...KnKs....Cipher.__init
333a0 5f 5f 94 6a 74 1f 00 00 4b 7a 4b 89 87 94 8c 0e 43 69 70 68 65 72 2e 5f 5f 64 65 6c 5f 5f 94 6a __.jt...KzK.....Cipher.__del__.j
333c0 74 1f 00 00 4b 8b 4b 8e 87 94 8c 0d 43 69 70 68 65 72 2e 75 70 64 61 74 65 94 6a 74 1f 00 00 4b t...K.K.....Cipher.update.jt...K
333e0 90 4b 92 87 94 8c 0c 43 69 70 68 65 72 2e 66 69 6e 61 6c 94 6a 74 1f 00 00 4b 94 4b 96 87 94 8c .K.....Cipher.final.jt...K.K....
33400 12 43 69 70 68 65 72 2e 73 65 74 5f 70 61 64 64 69 6e 67 94 6a 74 1f 00 00 4b 98 4b 9d 87 94 8c .Cipher.set_padding.jt...K.K....
33420 06 43 69 70 68 65 72 94 6a 7d 1f 00 00 4b 76 4b 9d 87 94 8c 0d 50 4b 65 79 2e 5f 5f 69 6e 69 74 .Cipher.j}...KvK.....PKey.__init
33440 5f 5f 94 6a 74 1f 00 00 4b a8 4b b0 87 94 8c 0c 50 4b 65 79 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f __.jt...K.K.....PKey.__del__.jt.
33460 00 00 4b b2 4b b7 87 94 8c 09 50 4b 65 79 2e 5f 70 74 72 94 6a 74 1f 00 00 4b b9 4b ba 87 94 8c ..K.K.....PKey._ptr.jt...K.K....
33480 11 50 4b 65 79 2e 5f 73 65 74 5f 63 6f 6e 74 65 78 74 94 6a 74 1f 00 00 4b bc 4b c2 87 94 8c 12 .PKey._set_context.jt...K.K.....
334a0 50 4b 65 79 2e 72 65 73 65 74 5f 63 6f 6e 74 65 78 74 94 6a 74 1f 00 00 4b c4 4b cb 87 94 8c 0e PKey.reset_context.jt...K.K.....
334c0 50 4b 65 79 2e 73 69 67 6e 5f 69 6e 69 74 94 6a 74 1f 00 00 4b cd 4b d2 87 94 8c 10 50 4b 65 79 PKey.sign_init.jt...K.K.....PKey
334e0 2e 73 69 67 6e 5f 75 70 64 61 74 65 94 6a 74 1f 00 00 4b d4 4b db 87 94 8c 0f 50 4b 65 79 2e 73 .sign_update.jt...K.K.....PKey.s
33500 69 67 6e 5f 66 69 6e 61 6c 94 6a 74 1f 00 00 4b dd 4b e4 87 94 8c 10 50 4b 65 79 2e 76 65 72 69 ign_final.jt...K.K.....PKey.veri
33520 66 79 5f 69 6e 69 74 94 6a 74 1f 00 00 4b ea 4b ef 87 94 8c 12 50 4b 65 79 2e 76 65 72 69 66 79 fy_init.jt...K.K.....PKey.verify
33540 5f 75 70 64 61 74 65 94 6a 74 1f 00 00 4b f1 4b f9 87 94 8c 11 50 4b 65 79 2e 76 65 72 69 66 79 _update.jt...K.K.....PKey.verify
33560 5f 66 69 6e 61 6c 94 6a 74 1f 00 00 4b fb 4d 04 01 87 94 8c 0f 50 4b 65 79 2e 61 73 73 69 67 6e _final.jt...K.M......PKey.assign
33580 5f 72 73 61 94 6a 74 1f 00 00 4d 06 01 4d 19 01 87 94 8c 0c 50 4b 65 79 2e 67 65 74 5f 72 73 61 _rsa.jt...M..M......PKey.get_rsa
335a0 94 6a 74 1f 00 00 4d 1b 01 4d 24 01 87 94 8c 0d 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 94 6a 74 .jt...M..M$.....PKey.save_key.jt
335c0 1f 00 00 4d 26 01 4d 38 01 87 94 8c 11 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a ...M&.M8.....PKey.save_key_bio.j
335e0 74 1f 00 00 4d 3a 01 4d 51 01 87 94 8c 0b 50 4b 65 79 2e 61 73 5f 70 65 6d 94 6a 74 1f 00 00 4d t...M:.MQ.....PKey.as_pem.jt...M
33600 53 01 4d 63 01 87 94 8c 0b 50 4b 65 79 2e 61 73 5f 64 65 72 94 6a 74 1f 00 00 4d 65 01 4d 6c 01 S.Mc.....PKey.as_der.jt...Me.Ml.
33620 87 94 8c 09 50 4b 65 79 2e 73 69 7a 65 94 6a 74 1f 00 00 4d 6e 01 4d 73 01 87 94 8c 10 50 4b 65 ....PKey.size.jt...Mn.Ms.....PKe
33640 79 2e 67 65 74 5f 6d 6f 64 75 6c 75 73 94 6a 74 1f 00 00 4d 75 01 4d 7a 01 87 94 8c 04 50 4b 65 y.get_modulus.jt...Mu.Mz.....PKe
33660 79 94 6a 7d 1f 00 00 4b a0 4d 7a 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 74 1f 00 00 4d 7d y.j}...K.Mz.....load_key.jt...M}
33680 01 4d 8d 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f 00 00 4d 90 01 4d 9e 01 .M......load_key_bio.jt...M..M..
336a0 87 94 8c 13 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 6b 65 79 94 6a 74 1f 00 00 4d a1 01 ....load_key_bio_pubkey.jt...M..
336c0 4d b1 01 87 94 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 74 1f 00 00 4d b4 01 4d M......load_key_string.jt...M..M
336e0 c2 01 87 94 8c 16 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 74 1f ......load_key_string_pubkey.jt.
33700 00 00 4d c5 01 4d d3 01 87 94 75 7d 94 28 8c 06 43 69 70 68 65 72 94 6a 53 02 00 00 8c 0c 43 69 ..M..M....u}.(..Cipher.jS.....Ci
33720 70 68 65 72 2e 66 69 6e 61 6c 94 6a 53 02 00 00 8c 12 43 69 70 68 65 72 2e 73 65 74 5f 70 61 64 pher.final.jS.....Cipher.set_pad
33740 64 69 6e 67 94 6a 53 02 00 00 8c 0d 43 69 70 68 65 72 2e 75 70 64 61 74 65 94 6a 53 02 00 00 8c ding.jS.....Cipher.update.jS....
33760 08 45 56 50 45 72 72 6f 72 94 6a 53 02 00 00 8c 04 48 4d 41 43 94 6a 53 02 00 00 8c 0a 48 4d 41 .EVPError.jS.....HMAC.jS.....HMA
33780 43 2e 66 69 6e 61 6c 94 6a 53 02 00 00 8c 0a 48 4d 41 43 2e 72 65 73 65 74 94 6a 53 02 00 00 8c C.final.jS.....HMAC.reset.jS....
337a0 0b 48 4d 41 43 2e 75 70 64 61 74 65 94 6a 53 02 00 00 8c 0d 4d 65 73 73 61 67 65 44 69 67 65 73 .HMAC.update.jS.....MessageDiges
337c0 74 94 6a 53 02 00 00 8c 13 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 66 69 6e 61 6c 94 6a 53 02 t.jS.....MessageDigest.final.jS.
337e0 00 00 8c 14 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 75 70 64 61 74 65 94 6a 53 02 00 00 8c 04 ....MessageDigest.update.jS.....
33800 50 4b 65 79 94 6a 53 02 00 00 8c 0b 50 4b 65 79 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 0b 50 PKey.jS.....PKey.as_der.jS.....P
33820 4b 65 79 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 0f 50 4b 65 79 2e 61 73 73 69 67 6e 5f 72 73 Key.as_pem.jS.....PKey.assign_rs
33840 61 94 6a 53 02 00 00 8c 10 50 4b 65 79 2e 67 65 74 5f 6d 6f 64 75 6c 75 73 94 6a 53 02 00 00 8c a.jS.....PKey.get_modulus.jS....
33860 0c 50 4b 65 79 2e 67 65 74 5f 72 73 61 94 6a 53 02 00 00 8c 12 50 4b 65 79 2e 72 65 73 65 74 5f .PKey.get_rsa.jS.....PKey.reset_
33880 63 6f 6e 74 65 78 74 94 6a 53 02 00 00 8c 0d 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 context.jS.....PKey.save_key.jS.
338a0 00 00 8c 11 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 0f 50 4b 65 ....PKey.save_key_bio.jS.....PKe
338c0 79 2e 73 69 67 6e 5f 66 69 6e 61 6c 94 6a 53 02 00 00 8c 0e 50 4b 65 79 2e 73 69 67 6e 5f 69 6e y.sign_final.jS.....PKey.sign_in
338e0 69 74 94 6a 53 02 00 00 8c 10 50 4b 65 79 2e 73 69 67 6e 5f 75 70 64 61 74 65 94 6a 53 02 00 00 it.jS.....PKey.sign_update.jS...
33900 8c 09 50 4b 65 79 2e 73 69 7a 65 94 6a 53 02 00 00 8c 11 50 4b 65 79 2e 76 65 72 69 66 79 5f 66 ..PKey.size.jS.....PKey.verify_f
33920 69 6e 61 6c 94 6a 53 02 00 00 8c 10 50 4b 65 79 2e 76 65 72 69 66 79 5f 69 6e 69 74 94 6a 53 02 inal.jS.....PKey.verify_init.jS.
33940 00 00 8c 12 50 4b 65 79 2e 76 65 72 69 66 79 5f 75 70 64 61 74 65 94 6a 53 02 00 00 8c 04 68 6d ....PKey.verify_update.jS.....hm
33960 61 63 94 6a 53 02 00 00 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 6b ac.jS.....load_key.jS.....load_k
33980 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 13 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 75 62 6b 65 ey_bio.jS.....load_key_bio_pubke
339a0 79 94 6a 53 02 00 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 16 y.jS.....load_key_string.jS.....
339c0 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 53 02 00 00 8c 06 70 62 load_key_string_pubkey.jS.....pb
339e0 6b 64 66 32 94 6a 53 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 56 50 94 74 94 8c 0f 4d 32 kdf2.jS...u..M2Crypto.EVP.t...M2
33a00 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 94 28 58 27 12 00 00 23 20 76 69 6d 3a 20 73 74 73 3d 34 Crypto.Engine.(X'...#.vim:.sts=4
33a20 20 73 77 3d 34 20 65 74 0a 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 .sw=4.et.from.__future__.import.
33a40 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 0a 4d 32 43 72 79 70 74 6f 20 77 72 absolute_import..""".M2Crypto.wr
33a60 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 45 4e 47 49 4e 45 20 41 50 49 2e 0a 0a 50 apper.for.OpenSSL.ENGINE.API...P
33a80 61 76 65 6c 20 53 68 72 61 6d 6f 76 0a 49 4d 45 43 20 4d 53 55 0a 22 22 22 0a 0a 66 72 6f 6d 20 avel.Shramov.IMEC.MSU."""..from.
33aa0 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 45 56 50 2c 20 45 72 72 2c 20 58 35 30 39 2c 20 M2Crypto.import.EVP,.Err,.X509,.
33ac0 6d 32 2c 20 73 69 78 2c 20 75 74 69 6c 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a m2,.six,.util.if.util.py27plus:.
33ae0 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 43 ....from.typing.import.AnyStr,.C
33b00 61 6c 6c 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 allable,.Optional..#.noqa...clas
33b20 73 20 45 6e 67 69 6e 65 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 s.EngineError(Exception):.....pa
33b40 73 73 0a 0a 6d 32 2e 65 6e 67 69 6e 65 5f 69 6e 69 74 5f 65 72 72 6f 72 28 45 6e 67 69 6e 65 45 ss..m2.engine_init_error(EngineE
33b60 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 45 6e 67 69 6e 65 28 6f 62 6a 65 63 74 29 3a 0a 20 20 rror)...class.Engine(object):...
33b80 20 20 22 22 22 57 72 61 70 70 65 72 20 66 6f 72 20 45 4e 47 49 4e 45 20 6f 62 6a 65 63 74 2e 22 .."""Wrapper.for.ENGINE.object."
33ba0 22 22 0a 0a 20 20 20 20 6d 32 5f 65 6e 67 69 6e 65 5f 66 72 65 65 20 3d 20 6d 32 2e 65 6e 67 69 ""......m2_engine_free.=.m2.engi
33bc0 6e 65 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 ne_free......def.__init__(self,.
33be0 69 64 3d 4e 6f 6e 65 2c 20 5f 70 74 72 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 31 29 3a 0a id=None,._ptr=None,._pyfree=1):.
33c00 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d ........#.type:.(Optional[bytes]
33c20 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a ,.Optional[bytes],.int).->.None.
33c40 20 20 20 20 20 20 20 20 22 22 22 43 72 65 61 74 65 20 6e 65 77 20 45 6e 67 69 6e 65 20 66 72 6f ........"""Create.new.Engine.fro
33c60 6d 20 45 4e 47 49 4e 45 20 70 6f 69 6e 74 65 72 20 6f 72 20 6f 62 74 61 69 6e 20 62 79 20 69 64 m.ENGINE.pointer.or.obtain.by.id
33c80 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 5f 70 74 72 20 61 6e 64 20 6e 6f 74 20 """.........if.not._ptr.and.not.
33ca0 69 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 id:.............raise.ValueError
33cc0 28 22 4e 6f 20 65 6e 67 69 6e 65 20 69 64 20 73 70 65 63 69 66 69 65 64 22 29 0a 20 20 20 20 20 ("No.engine.id.specified")......
33ce0 20 20 20 73 65 6c 66 2e 5f 70 74 72 20 3d 20 5f 70 74 72 0a 20 20 20 20 20 20 20 20 69 66 20 6e ...self._ptr.=._ptr.........if.n
33d00 6f 74 20 73 65 6c 66 2e 5f 70 74 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f ot.self._ptr:.............self._
33d20 70 74 72 20 3d 20 6d 32 2e 65 6e 67 69 6e 65 5f 62 79 5f 69 64 28 69 64 29 0a 20 20 20 20 20 20 ptr.=.m2.engine_by_id(id).......
33d40 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 5f 70 74 72 3a 0a 20 20 20 20 20 20 20 20 ......if.not.self._ptr:.........
33d60 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 55 6e 6b 6e 6f 77 ........raise.ValueError("Unknow
33d80 6e 20 65 6e 67 69 6e 65 3a 20 25 73 22 20 25 20 69 64 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 n.engine:.%s".%.id).........self
33da0 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 ._pyfree.=._pyfree......def.__de
33dc0 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e l__(self):.........#.type:.().->
33de0 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 .None.........if.getattr(self,.'
33e00 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d _pyfree',.0):.............self.m
33e20 32 5f 65 6e 67 69 6e 65 5f 66 72 65 65 28 73 65 6c 66 2e 5f 70 74 72 29 0a 0a 20 20 20 20 64 65 2_engine_free(self._ptr)......de
33e40 66 20 69 6e 69 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 f.init(self):.........#.type:.()
33e60 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 4f 62 74 61 69 6e 20 61 20 66 75 6e 63 .->.int........."""Obtain.a.func
33e80 74 69 6f 6e 61 6c 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 65 6e 67 69 6e 65 2e 0a tional.reference.to.the.engine..
33ea0 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 6f 6e 20 65 72 72 6f 72 2c 20 6e 6f .........:return:.0.on.error,.no
33ec0 6e 2d 7a 65 72 6f 20 6f 6e 20 73 75 63 63 65 73 73 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 n-zero.on.success.""".........re
33ee0 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 69 6e 69 74 28 73 65 6c 66 2e 5f 70 74 72 29 0a 0a turn.m2.engine_init(self._ptr)..
33f00 20 20 20 20 64 65 66 20 66 69 6e 69 73 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ....def.finish(self):.........#.
33f20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 6c 65 61 type:.().->.int........."""Relea
33f40 73 65 20 61 20 66 75 6e 63 74 69 6f 6e 61 6c 20 61 6e 64 20 73 74 72 75 63 74 75 72 61 6c 20 72 se.a.functional.and.structural.r
33f60 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 65 6e 67 69 6e 65 2e 22 22 22 0a 20 20 20 20 20 eference.to.the.engine."""......
33f80 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 66 69 6e 69 73 68 28 73 65 6c 66 2e ...return.m2.engine_finish(self.
33fa0 5f 70 74 72 29 0a 0a 20 20 20 20 64 65 66 20 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 73 _ptr)......def.ctrl_cmd_string(s
33fc0 65 6c 66 2c 20 63 6d 64 2c 20 61 72 67 2c 20 6f 70 74 69 6f 6e 61 6c 3d 30 29 3a 0a 20 20 20 20 elf,.cmd,.arg,.optional=0):.....
33fe0 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e ....#.type:.(AnyStr,.Optional[An
34000 79 53 74 72 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 43 yStr],.int).->.None........."""C
34020 61 6c 6c 20 45 4e 47 49 4e 45 5f 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 22 22 22 0a 20 20 all.ENGINE_ctrl_cmd_string"""...
34040 20 20 20 20 20 20 63 6d 64 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 73 74 72 28 63 6d 64 29 0a ......cmd.=.six.ensure_str(cmd).
34060 20 20 20 20 20 20 20 20 69 66 20 61 72 67 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 ........if.arg.is.not.None:.....
34080 20 20 20 20 20 20 20 20 61 72 67 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 73 74 72 28 61 72 67 ........arg.=.six.ensure_str(arg
340a0 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 32 2e 65 6e 67 69 6e 65 5f 63 74 72 6c 5f ).........if.not.m2.engine_ctrl_
340c0 63 6d 64 5f 73 74 72 69 6e 67 28 73 65 6c 66 2e 5f 70 74 72 2c 20 63 6d 64 2c 20 61 72 67 2c 20 cmd_string(self._ptr,.cmd,.arg,.
340e0 6f 70 74 69 6f 6e 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 6e 67 optional):.............raise.Eng
34100 69 6e 65 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 29 0a 0a 20 20 20 20 64 ineError(Err.get_error())......d
34120 65 66 20 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ef.get_name(self):.........#.typ
34140 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e e:.().->.bytes........."""Return
34160 20 65 6e 67 69 6e 65 20 6e 61 6d 65 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d .engine.name""".........return.m
34180 32 2e 65 6e 67 69 6e 65 5f 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 5f 70 74 72 29 0a 0a 20 20 2.engine_get_name(self._ptr)....
341a0 20 20 64 65 66 20 67 65 74 5f 69 64 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 ..def.get_id(self):.........#.ty
341c0 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 pe:.().->.bytes........."""Retur
341e0 6e 20 65 6e 67 69 6e 65 20 69 64 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 n.engine.id""".........return.m2
34200 2e 65 6e 67 69 6e 65 5f 67 65 74 5f 69 64 28 73 65 6c 66 2e 5f 70 74 72 29 0a 0a 20 20 20 20 64 .engine_get_id(self._ptr)......d
34220 65 66 20 73 65 74 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 6d 65 74 68 6f 64 73 3d 6d 32 2e ef.set_default(self,.methods=m2.
34240 45 4e 47 49 4e 45 5f 4d 45 54 48 4f 44 5f 41 4c 4c 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 ENGINE_METHOD_ALL):.........#.ty
34260 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 pe:.(int).->.int........."""....
34280 20 20 20 20 20 55 73 65 20 74 68 69 73 20 65 6e 67 69 6e 65 20 61 73 20 64 65 66 61 75 6c 74 20 .....Use.this.engine.as.default.
342a0 66 6f 72 20 6d 65 74 68 6f 64 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 72 67 75 6d 65 6e for.methods.specified.in.argumen
342c0 74 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 65 74 68 6f 64 73 3a 20 50 6f 73 73 69 t..........:param.methods:.Possi
342e0 62 6c 65 20 76 61 6c 75 65 73 20 61 72 65 20 62 69 74 77 69 73 65 20 4f 52 20 6f 66 20 6d 32 2e ble.values.are.bitwise.OR.of.m2.
34300 45 4e 47 49 4e 45 5f 4d 45 54 48 4f 44 5f 2a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 ENGINE_METHOD_*.........""".....
34320 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 73 65 74 5f 64 65 66 61 75 6c 74 ....return.m2.engine_set_default
34340 28 73 65 6c 66 2e 5f 70 74 72 2c 20 6d 65 74 68 6f 64 73 29 0a 0a 20 20 20 20 64 65 66 20 5f 65 (self._ptr,.methods)......def._e
34360 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b 65 79 28 73 65 6c 66 2c 20 66 75 6e 63 2c 20 6e 61 6d 65 2c ngine_load_key(self,.func,.name,
34380 20 70 69 6e 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 43 61 6c .pin=None):.........#.type:.(Cal
343a0 6c 61 62 6c 65 2c 20 62 79 74 65 73 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 29 20 2d lable,.bytes,.Optional[bytes]).-
343c0 3e 20 45 56 50 2e 50 4b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 48 65 6c 70 65 72 20 66 75 6e >.EVP.PKey........."""Helper.fun
343e0 63 74 69 6f 6e 20 66 6f 72 20 6c 6f 61 64 69 6e 67 20 6b 65 79 73 22 22 22 0a 20 20 20 20 20 20 ction.for.loading.keys""".......
34400 20 20 75 69 20 3d 20 6d 32 2e 75 69 5f 6f 70 65 6e 73 73 6c 28 29 0a 20 20 20 20 20 20 20 20 63 ..ui.=.m2.ui_openssl().........c
34420 62 64 20 3d 20 6d 32 2e 65 6e 67 69 6e 65 5f 70 6b 63 73 31 31 5f 64 61 74 61 5f 6e 65 77 28 70 bd.=.m2.engine_pkcs11_data_new(p
34440 69 6e 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 70 74 in).........try:.............kpt
34460 72 20 3d 20 66 75 6e 63 28 73 65 6c 66 2e 5f 70 74 72 2c 20 6e 61 6d 65 2c 20 75 69 2c 20 63 62 r.=.func(self._ptr,.name,.ui,.cb
34480 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6b 70 74 72 3a 0a 20 20 20 20 d).............if.not.kptr:.....
344a0 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 6e 67 69 6e 65 45 72 72 6f 72 28 45 72 ............raise.EngineError(Er
344c0 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d r.get_error()).............key.=
344e0 20 45 56 50 2e 50 4b 65 79 28 6b 70 74 72 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 20 20 20 20 20 .EVP.PKey(kptr,._pyfree=1)......
34500 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 65 6e 67 69 6e ...finally:.............m2.engin
34520 65 5f 70 6b 63 73 31 31 5f 64 61 74 61 5f 66 72 65 65 28 63 62 64 29 0a 20 20 20 20 20 20 20 20 e_pkcs11_data_free(cbd).........
34540 72 65 74 75 72 6e 20 6b 65 79 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 70 72 69 76 61 74 65 return.key......def.load_private
34560 5f 6b 65 79 28 73 65 6c 66 2c 20 6e 61 6d 65 2c 20 70 69 6e 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 _key(self,.name,.pin=None):.....
34580 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 ....#.type:.(bytes,.Optional[byt
345a0 65 73 5d 29 20 2d 3e 20 58 35 30 39 2e 58 35 30 39 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 es]).->.X509.X509........."""Loa
345c0 64 20 70 72 69 76 61 74 65 20 6b 65 79 20 77 69 74 68 20 65 6e 67 69 6e 65 20 6d 65 74 68 6f 64 d.private.key.with.engine.method
345e0 73 20 28 65 2e 67 20 66 72 6f 6d 20 73 6d 61 72 74 63 61 72 64 29 2e 0a 20 20 20 20 20 20 20 20 s.(e.g.from.smartcard)..........
34600 20 20 20 20 49 66 20 70 69 6e 20 69 73 20 6e 6f 74 20 73 65 74 20 69 74 20 77 69 6c 6c 20 62 65 ....If.pin.is.not.set.it.will.be
34620 20 61 73 6b 65 64 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .asked.........""".........retur
34640 6e 20 73 65 6c 66 2e 5f 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b 65 79 28 6d 32 2e 65 6e 67 69 6e n.self._engine_load_key(m2.engin
34660 65 5f 6c 6f 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 2c 20 6e 61 6d 65 2c 20 70 69 6e 29 0a 0a e_load_private_key,.name,.pin)..
34680 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 70 75 62 6c 69 63 5f 6b 65 79 28 73 65 6c 66 2c 20 6e 61 ....def.load_public_key(self,.na
346a0 6d 65 2c 20 70 69 6e 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 me,.pin=None):.........#.type:.(
346c0 62 79 74 65 73 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 29 20 2d 3e 20 45 56 50 2e 50 bytes,.Optional[bytes]).->.EVP.P
346e0 4b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 70 75 62 6c 69 63 20 6b 65 79 20 77 Key........."""Load.public.key.w
34700 69 74 68 20 65 6e 67 69 6e 65 20 6d 65 74 68 6f 64 73 20 28 65 2e 67 20 66 72 6f 6d 20 73 6d 61 ith.engine.methods.(e.g.from.sma
34720 72 74 63 61 72 64 29 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e rtcard).""".........return.self.
34740 5f 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b 65 79 28 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f _engine_load_key(m2.engine_load_
34760 70 75 62 6c 69 63 5f 6b 65 79 2c 20 6e 61 6d 65 2c 20 70 69 6e 29 0a 0a 20 20 20 20 64 65 66 20 public_key,.name,.pin)......def.
34780 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 load_certificate(self,.name):...
347a0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 58 35 30 39 2e 58 35 ......#.type:.(bytes).->.X509.X5
347c0 30 39 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 66 09........."""Load.certificate.f
347e0 72 6f 6d 20 65 6e 67 69 6e 65 20 28 65 2e 67 20 66 72 6f 6d 20 73 6d 61 72 74 63 61 72 64 29 2e rom.engine.(e.g.from.smartcard).
34800 0a 20 20 20 20 20 20 20 20 4e 4f 54 45 3a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 .........NOTE:.This.function.may
34820 20 62 65 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 65 6e 67 69 6e 65 21 22 22 .be.not.implemented.by.engine!""
34840 22 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f ".........cptr.=.m2.engine_load_
34860 63 65 72 74 69 66 69 63 61 74 65 28 73 65 6c 66 2e 5f 70 74 72 2c 20 6e 61 6d 65 29 0a 20 20 20 certificate(self._ptr,.name)....
34880 20 20 20 20 20 69 66 20 6e 6f 74 20 63 70 74 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 .....if.not.cptr:.............ra
348a0 69 73 65 20 45 6e 67 69 6e 65 45 72 72 6f 72 28 22 43 65 72 74 69 66 69 63 61 74 65 20 6f 72 20 ise.EngineError("Certificate.or.
348c0 63 61 72 64 20 6e 6f 74 20 66 6f 75 6e 64 22 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 card.not.found").........return.
348e0 58 35 30 39 2e 58 35 30 39 28 63 70 74 72 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 0a 64 65 66 X509.X509(cptr,._pyfree=1)...def
34900 20 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 28 69 64 2c 20 73 6f 70 61 74 68 29 .load_dynamic_engine(id,.sopath)
34920 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 41 6e 79 53 74 72 29 20 2d 3e :.....#.type:.(bytes,.AnyStr).->
34940 20 45 6e 67 69 6e 65 0a 20 20 20 20 22 22 22 4c 6f 61 64 20 61 6e 64 20 72 65 74 75 72 6e 20 64 .Engine....."""Load.and.return.d
34960 79 6d 61 6e 69 63 20 65 6e 67 69 6e 65 20 66 72 6f 6d 20 73 6f 70 61 74 68 20 61 6e 64 20 61 73 ymanic.engine.from.sopath.and.as
34980 73 69 67 6e 20 69 64 20 74 6f 20 69 74 22 22 22 0a 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e sign.id.to.it""".....if.isinstan
349a0 63 65 28 73 6f 70 61 74 68 2c 20 73 69 78 2e 74 65 78 74 5f 74 79 70 65 29 3a 0a 20 20 20 20 20 ce(sopath,.six.text_type):......
349c0 20 20 20 73 6f 70 61 74 68 20 3d 20 73 6f 70 61 74 68 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 ...sopath.=.sopath.encode('utf8'
349e0 29 0a 20 20 20 20 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 28 29 0a 20 ).....m2.engine_load_dynamic()..
34a00 20 20 20 65 20 3d 20 45 6e 67 69 6e 65 28 27 64 79 6e 61 6d 69 63 27 29 0a 20 20 20 20 65 2e 63 ...e.=.Engine('dynamic').....e.c
34a20 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 27 53 4f 5f 50 41 54 48 27 2c 20 73 6f 70 61 74 68 trl_cmd_string('SO_PATH',.sopath
34a40 29 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 27 49 44 27 2c 20 69 64 ).....e.ctrl_cmd_string('ID',.id
34a60 29 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 27 4c 49 53 54 5f 41 44 ).....e.ctrl_cmd_string('LIST_AD
34a80 44 27 2c 20 27 31 27 29 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 27 D',.'1').....e.ctrl_cmd_string('
34aa0 4c 4f 41 44 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 65 0a 0a 0a 64 65 66 20 LOAD',.None).....return.e...def.
34ac0 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d load_dynamic():.....#.type:.().-
34ae0 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 4c 6f 61 64 20 64 79 6e 61 6d 69 63 20 65 6e 67 69 6e >.None....."""Load.dynamic.engin
34b00 65 22 22 22 0a 20 20 20 20 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 28 e""".....m2.engine_load_dynamic(
34b20 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 28 29 3a 0a 20 20 20 20 23 20 74 79 )...def.load_openssl():.....#.ty
34b40 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 4c 6f 61 64 20 6f 70 65 6e 73 pe:.().->.None....."""Load.opens
34b60 73 6c 20 65 6e 67 69 6e 65 22 22 22 0a 20 20 20 20 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f sl.engine""".....m2.engine_load_
34b80 6f 70 65 6e 73 73 6c 28 29 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 75 70 28 29 3a 0a 20 20 20 20 23 openssl()...def.cleanup():.....#
34ba0 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 49 66 20 79 6f 75 20 .type:.().->.None....."""If.you.
34bc0 6c 6f 61 64 20 61 6e 79 20 65 6e 67 69 6e 65 73 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 63 6c load.any.engines,.you.need.to.cl
34be0 65 61 6e 20 75 70 20 61 66 74 65 72 20 79 6f 75 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 20 20 ean.up.after.your.application...
34c00 20 20 69 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 67 69 6e 65 73 2e 22 ..is.finished.with.the.engines."
34c20 22 22 0a 20 20 20 20 6d 32 2e 65 6e 67 69 6e 65 5f 63 6c 65 61 6e 75 70 28 29 0a 94 7d 94 28 8c "".....m2.engine_cleanup()..}.(.
34c40 0b 45 6e 67 69 6e 65 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 10 4b 11 87 94 8c 0f 45 6e 67 69 6e 65 .EngineError.j}...K.K.....Engine
34c60 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 1b 4b 25 87 94 8c 0e 45 6e 67 69 6e 65 2e 5f 5f .__init__.jt...K.K%....Engine.__
34c80 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 27 4b 2a 87 94 8c 0b 45 6e 67 69 6e 65 2e 69 6e 69 74 94 6a del__.jt...K'K*....Engine.init.j
34ca0 74 1f 00 00 4b 2c 4b 31 87 94 8c 0d 45 6e 67 69 6e 65 2e 66 69 6e 69 73 68 94 6a 74 1f 00 00 4b t...K,K1....Engine.finish.jt...K
34cc0 33 4b 36 87 94 8c 16 45 6e 67 69 6e 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 94 6a 74 3K6....Engine.ctrl_cmd_string.jt
34ce0 1f 00 00 4b 38 4b 3f 87 94 8c 0f 45 6e 67 69 6e 65 2e 67 65 74 5f 6e 61 6d 65 94 6a 74 1f 00 00 ...K8K?....Engine.get_name.jt...
34d00 4b 41 4b 44 87 94 8c 0d 45 6e 67 69 6e 65 2e 67 65 74 5f 69 64 94 6a 74 1f 00 00 4b 46 4b 49 87 KAKD....Engine.get_id.jt...KFKI.
34d20 94 8c 12 45 6e 67 69 6e 65 2e 73 65 74 5f 64 65 66 61 75 6c 74 94 6a 74 1f 00 00 4b 4b 4b 52 87 ...Engine.set_default.jt...KKKR.
34d40 94 8c 17 45 6e 67 69 6e 65 2e 5f 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b 65 79 94 6a 74 1f 00 00 ...Engine._engine_load_key.jt...
34d60 4b 54 4b 60 87 94 8c 17 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 94 KTK`....Engine.load_private_key.
34d80 6a 74 1f 00 00 4b 62 4b 67 87 94 8c 16 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 70 75 62 6c 69 63 5f jt...KbKg....Engine.load_public_
34da0 6b 65 79 94 6a 74 1f 00 00 4b 69 4b 6c 87 94 8c 17 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 63 65 72 key.jt...KiKl....Engine.load_cer
34dc0 74 69 66 69 63 61 74 65 94 6a 74 1f 00 00 4b 6e 4b 75 87 94 8c 06 45 6e 67 69 6e 65 94 6a 7d 1f tificate.jt...KnKu....Engine.j}.
34de0 00 00 4b 16 4b 75 87 94 8c 13 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 94 6a 74 ..K.Ku....load_dynamic_engine.jt
34e00 1f 00 00 4b 78 4b 83 87 94 8c 0c 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 6a 74 1f 00 00 4b 86 4b ...KxK.....load_dynamic.jt...K.K
34e20 89 87 94 8c 0c 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 94 6a 74 1f 00 00 4b 8c 4b 8f 87 94 8c 07 63 .....load_openssl.jt...K.K.....c
34e40 6c 65 61 6e 75 70 94 6a 74 1f 00 00 4b 92 4b 96 87 94 75 7d 94 28 8c 06 45 6e 67 69 6e 65 94 6a leanup.jt...K.K...u}.(..Engine.j
34e60 53 02 00 00 8c 16 45 6e 67 69 6e 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 94 6a 53 02 S.....Engine.ctrl_cmd_string.jS.
34e80 00 00 8c 0d 45 6e 67 69 6e 65 2e 66 69 6e 69 73 68 94 6a 53 02 00 00 8c 0d 45 6e 67 69 6e 65 2e ....Engine.finish.jS.....Engine.
34ea0 67 65 74 5f 69 64 94 6a 53 02 00 00 8c 0f 45 6e 67 69 6e 65 2e 67 65 74 5f 6e 61 6d 65 94 6a 53 get_id.jS.....Engine.get_name.jS
34ec0 02 00 00 8c 0b 45 6e 67 69 6e 65 2e 69 6e 69 74 94 6a 53 02 00 00 8c 17 45 6e 67 69 6e 65 2e 6c .....Engine.init.jS.....Engine.l
34ee0 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 94 6a 53 02 00 00 8c 17 45 6e 67 69 6e 65 2e 6c 6f oad_certificate.jS.....Engine.lo
34f00 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 94 6a 53 02 00 00 8c 16 45 6e 67 69 6e 65 2e 6c 6f 61 ad_private_key.jS.....Engine.loa
34f20 64 5f 70 75 62 6c 69 63 5f 6b 65 79 94 6a 53 02 00 00 8c 12 45 6e 67 69 6e 65 2e 73 65 74 5f 64 d_public_key.jS.....Engine.set_d
34f40 65 66 61 75 6c 74 94 6a 53 02 00 00 8c 0b 45 6e 67 69 6e 65 45 72 72 6f 72 94 6a 53 02 00 00 8c efault.jS.....EngineError.jS....
34f60 07 63 6c 65 61 6e 75 70 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 6a 53 02 .cleanup.jS.....load_dynamic.jS.
34f80 00 00 8c 13 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 94 6a 53 02 00 00 8c 0c 6c ....load_dynamic_engine.jS.....l
34fa0 6f 61 64 5f 6f 70 65 6e 73 73 6c 94 6a 53 02 00 00 75 8c 0f 4d 32 43 72 79 70 74 6f 2e 45 6e 67 oad_openssl.jS...u..M2Crypto.Eng
34fc0 69 6e 65 94 74 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 28 58 b8 06 00 00 66 72 6f 6d 20 ine.t...M2Crypto.Err.(X....from.
34fe0 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 __future__.import.absolute_impor
35000 74 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 t.."""M2Crypto.wrapper.for.OpenS
35020 53 4c 20 45 72 72 6f 72 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 SL.Error.API...Copyright.(c).199
35040 39 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 9-2003.Ng.Pheng.Siong..All.right
35060 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d s.reserved."""..from.M2Crypto.im
35080 70 6f 72 74 20 42 49 4f 2c 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 2c 20 75 74 69 6c 2c 20 73 69 port.BIO,.m2,.py27plus,.util,.si
350a0 78 20 20 23 20 6e 6f 71 61 0a 69 66 20 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 x..#.noqa.if.py27plus:.....from.
350c0 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a typing.import.Optional..#.noqa..
350e0 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 .def.get_error():.....#.type:.()
35100 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 0a 20 20 20 20 65 72 72 20 3d 20 42 49 4f 2e .->.Optional[str].....err.=.BIO.
35120 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 6d 32 2e 65 72 72 5f 70 72 69 6e 74 5f MemoryBuffer().....m2.err_print_
35140 65 72 72 6f 72 73 28 65 72 72 2e 62 69 6f 5f 70 74 72 28 29 29 0a 20 20 20 20 65 72 72 5f 6d 73 errors(err.bio_ptr()).....err_ms
35160 67 20 3d 20 65 72 72 2e 72 65 61 64 28 29 0a 20 20 20 20 69 66 20 65 72 72 5f 6d 73 67 3a 0a 20 g.=.err.read().....if.err_msg:..
35180 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 65 72 .......return.six.ensure_text(er
351a0 72 5f 6d 73 67 29 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 29 3a 0a 20 r_msg)...def.get_error_code():..
351c0 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 72 65 74 75 72 6e 20 ...#.type:.().->.int.....return.
351e0 6d 32 2e 65 72 72 5f 67 65 74 5f 65 72 72 6f 72 28 29 0a 0a 0a 64 65 66 20 70 65 65 6b 5f 65 72 m2.err_get_error()...def.peek_er
35200 72 6f 72 5f 63 6f 64 65 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e ror_code():.....#.type:.().->.in
35220 74 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 72 72 5f 70 65 65 6b 5f 65 72 72 6f 72 28 29 t.....return.m2.err_peek_error()
35240 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 28 65 72 72 29 3a 0a 20 20 20 20 23 ...def.get_error_lib(err):.....#
35260 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 72 6e 20 73 .type:.(int).->.str.....return.s
35280 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 65 72 72 5f 6c 69 62 5f 65 72 72 6f 72 5f ix.ensure_text(m2.err_lib_error_
352a0 73 74 72 69 6e 67 28 65 72 72 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e string(err))...def.get_error_fun
352c0 63 28 65 72 72 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 73 74 72 c(err):.....#.type:.(int).->.str
352e0 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 65 .....return.six.ensure_text(m2.e
35300 72 72 5f 66 75 6e 63 5f 65 72 72 6f 72 5f 73 74 72 69 6e 67 28 65 72 72 29 29 0a 0a 0a 64 65 66 rr_func_error_string(err))...def
35320 20 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 28 65 72 72 29 3a 0a 20 20 20 20 23 20 74 79 .get_error_reason(err):.....#.ty
35340 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e pe:.(int).->.str.....return.six.
35360 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 65 72 72 5f 72 65 61 73 6f 6e 5f 65 72 72 6f 72 5f ensure_text(m2.err_reason_error_
35380 73 74 72 69 6e 67 28 65 72 72 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 string(err))...def.get_error_mes
353a0 73 61 67 65 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 sage():.....#.type:.().->.str...
353c0 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 67 65 74 5f 65 72 72 ..return.six.ensure_text(get_err
353e0 6f 72 5f 72 65 61 73 6f 6e 28 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 29 29 29 0a 0a 0a 64 or_reason(get_error_code()))...d
35400 65 66 20 67 65 74 5f 78 35 30 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 28 65 72 72 29 3a 0a 20 ef.get_x509_verify_error(err):..
35420 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 ...#.type:.(int).->.str.....retu
35440 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 76 rn.six.ensure_text(m2.x509_get_v
35460 65 72 69 66 79 5f 65 72 72 6f 72 28 65 72 72 29 29 0a 0a 0a 63 6c 61 73 73 20 53 53 4c 45 72 72 erify_error(err))...class.SSLErr
35480 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 or(Exception):.....def.__init__(
354a0 73 65 6c 66 2c 20 65 72 72 2c 20 63 6c 69 65 6e 74 5f 61 64 64 72 29 3a 0a 20 20 20 20 20 20 20 self,.err,.client_addr):........
354c0 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 75 74 69 6c 2e 41 64 64 72 54 79 70 65 29 20 2d 3e .#.type:.(int,.util.AddrType).->
354e0 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 72 72 20 3d 20 65 72 72 0a 20 20 20 .None.........self.err.=.err....
35500 20 20 20 20 20 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 64 72 20 3d 20 63 6c 69 65 6e 74 5f 61 .....self.client_addr.=.client_a
35520 64 64 72 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 ddr......def.__str__(self):.....
35540 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 69 66 ....#.type:.().->.str.........if
35560 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 64 72 .not.isinstance(self.client_addr
35580 2c 20 73 69 78 2e 74 65 78 74 5f 74 79 70 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 20 ,.six.text_type):.............s.
355a0 3d 20 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 64 72 2e 64 65 63 6f 64 65 28 27 75 74 66 38 27 =.self.client_addr.decode('utf8'
355c0 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 ).........else:.............s.=.
355e0 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 64 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 self.client_addr.........return.
35600 22 25 73 3a 20 25 73 3a 20 25 73 22 20 25 20 28 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 28 73 "%s:.%s:.%s".%.(get_error_func(s
35620 65 6c 66 2e 65 72 72 29 2c 20 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elf.err),.s,....................
35640 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 28 73 65 6c ............get_error_reason(sel
35660 66 2e 65 72 72 29 29 0a 0a 0a 63 6c 61 73 73 20 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 28 45 78 f.err))...class.M2CryptoError(Ex
35680 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 94 7d 94 28 8c 09 67 65 74 5f 65 72 72 ception):.....pass..}.(..get_err
356a0 6f 72 94 6a 74 1f 00 00 4b 0c 4b 12 87 94 8c 0e 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a or.jt...K.K.....get_error_code.j
356c0 74 1f 00 00 4b 15 4b 17 87 94 8c 0f 70 65 65 6b 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 74 1f 00 t...K.K.....peek_error_code.jt..
356e0 00 4b 1a 4b 1c 87 94 8c 0d 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 94 6a 74 1f 00 00 4b 1f 4b 21 .K.K.....get_error_lib.jt...K.K!
35700 87 94 8c 0e 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 94 6a 74 1f 00 00 4b 24 4b 26 87 94 8c 10 ....get_error_func.jt...K$K&....
35720 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 94 6a 74 1f 00 00 4b 29 4b 2b 87 94 8c 11 67 65 get_error_reason.jt...K)K+....ge
35740 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 94 6a 74 1f 00 00 4b 2e 4b 30 87 94 8c 15 67 65 74 t_error_message.jt...K.K0....get
35760 5f 78 35 30 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 94 6a 74 1f 00 00 4b 33 4b 35 87 94 8c 11 _x509_verify_error.jt...K3K5....
35780 53 53 4c 45 72 72 6f 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 39 4b 3c 87 94 8c 10 53 SSLError.__init__.jt...K9K<....S
357a0 53 4c 45 72 72 6f 72 2e 5f 5f 73 74 72 5f 5f 94 6a 74 1f 00 00 4b 3e 4b 45 87 94 8c 08 53 53 4c SLError.__str__.jt...K>KE....SSL
357c0 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 38 4b 45 87 94 8c 0d 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 Error.j}...K8KE....M2CryptoError
357e0 94 6a 7d 1f 00 00 4b 48 4b 49 87 94 75 7d 94 28 8c 0d 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 94 .j}...KHKI..u}.(..M2CryptoError.
35800 6a 53 02 00 00 8c 08 53 53 4c 45 72 72 6f 72 94 6a 53 02 00 00 8c 09 67 65 74 5f 65 72 72 6f 72 jS.....SSLError.jS.....get_error
35820 94 6a 53 02 00 00 8c 0e 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 53 02 00 00 8c 0e 67 65 .jS.....get_error_code.jS.....ge
35840 74 5f 65 72 72 6f 72 5f 66 75 6e 63 94 6a 53 02 00 00 8c 0d 67 65 74 5f 65 72 72 6f 72 5f 6c 69 t_error_func.jS.....get_error_li
35860 62 94 6a 53 02 00 00 8c 11 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 94 6a 53 02 00 00 b.jS.....get_error_message.jS...
35880 8c 10 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 94 6a 53 02 00 00 8c 15 67 65 74 5f 78 35 ..get_error_reason.jS.....get_x5
358a0 30 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 94 6a 53 02 00 00 8c 0f 70 65 65 6b 5f 65 72 72 6f 09_verify_error.jS.....peek_erro
358c0 72 5f 63 6f 64 65 94 6a 53 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 74 94 8c 0c r_code.jS...u..M2Crypto.Err.t...
358e0 4d 32 43 72 79 70 74 6f 2e 52 43 34 94 28 58 6a 03 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 M2Crypto.RC4.(Xj...from.__future
35900 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 __.import.absolute_import.."""M2
35920 43 72 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 52 43 34 20 41 Crypto.wrapper.for.OpenSSL.RC4.A
35940 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 PI...Copyright.(c).1999-2003.Ng.
35960 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 Pheng.Siong..All.rights.reserved
35980 2e 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 6d 32 20 69 6d 70 6f 72 74 20 72 63 ."""..from.M2Crypto.m2.import.rc
359a0 34 5f 66 72 65 65 2c 20 72 63 34 5f 6e 65 77 2c 20 72 63 34 5f 73 65 74 5f 6b 65 79 2c 20 72 63 4_free,.rc4_new,.rc4_set_key,.rc
359c0 34 5f 75 70 64 61 74 65 0a 0a 0a 63 6c 61 73 73 20 52 43 34 28 6f 62 6a 65 63 74 29 3a 0a 20 20 4_update...class.RC4(object):...
359e0 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 74 68 65 20 73 74 72 .."""Object.interface.to.the.str
35a00 65 61 6d 20 63 69 70 68 65 72 20 52 43 34 2e 22 22 22 0a 0a 20 20 20 20 72 63 34 5f 66 72 65 65 eam.cipher.RC4."""......rc4_free
35a20 20 3d 20 72 63 34 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 .=.rc4_free......def.__init__(se
35a40 6c 66 2c 20 6b 65 79 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 lf,.key=None):.........#.type:.(
35a60 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 69 70 68 bytes).->.None.........self.ciph
35a80 65 72 20 3d 20 72 63 34 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 3a 0a 20 er.=.rc4_new().........if.key:..
35aa0 20 20 20 20 20 20 20 20 20 20 20 72 63 34 5f 73 65 74 5f 6b 65 79 28 73 65 6c 66 2e 63 69 70 68 ...........rc4_set_key(self.ciph
35ac0 65 72 2c 20 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a er,.key)......def.__del__(self):
35ae0 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 .........#.type:.().->.None.....
35b00 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 63 69 70 68 65 72 27 2c 20 4e ....if.getattr(self,.'cipher',.N
35b20 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 63 34 5f 66 72 65 65 28 one):.............self.rc4_free(
35b40 73 65 6c 66 2e 63 69 70 68 65 72 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 6b 65 79 28 73 65 self.cipher)......def.set_key(se
35b60 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 lf,.key):.........#.type:.(bytes
35b80 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 72 63 34 5f 73 65 74 5f 6b 65 79 28 73 65 ).->.None.........rc4_set_key(se
35ba0 6c 66 2e 63 69 70 68 65 72 2c 20 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 28 lf.cipher,.key)......def.update(
35bc0 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 self,.data):.........#.type:.(by
35be0 74 65 73 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 63 34 tes).->.bytes.........return.rc4
35c00 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 69 70 68 65 72 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 _update(self.cipher,.data)......
35c20 64 65 66 20 66 69 6e 61 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a def.final(self):.........#.type:
35c40 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 0a 94 7d 94 .().->.str.........return.''..}.
35c60 28 8c 0c 52 43 34 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 0f 4b 13 87 94 8c 0b 52 43 34 (..RC4.__init__.jt...K.K.....RC4
35c80 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 15 4b 18 87 94 8c 0b 52 43 34 2e 73 65 74 5f 6b 65 .__del__.jt...K.K.....RC4.set_ke
35ca0 79 94 6a 74 1f 00 00 4b 1a 4b 1c 87 94 8c 0a 52 43 34 2e 75 70 64 61 74 65 94 6a 74 1f 00 00 4b y.jt...K.K.....RC4.update.jt...K
35cc0 1e 4b 20 87 94 8c 09 52 43 34 2e 66 69 6e 61 6c 94 6a 74 1f 00 00 4b 22 4b 24 87 94 8c 03 52 43 .K.....RC4.final.jt...K"K$....RC
35ce0 34 94 6a 7d 1f 00 00 4b 0a 4b 24 87 94 75 7d 94 28 8c 03 52 43 34 94 6a 53 02 00 00 8c 09 52 43 4.j}...K.K$..u}.(..RC4.jS.....RC
35d00 34 2e 66 69 6e 61 6c 94 6a 53 02 00 00 8c 0b 52 43 34 2e 73 65 74 5f 6b 65 79 94 6a 53 02 00 00 4.final.jS.....RC4.set_key.jS...
35d20 8c 0a 52 43 34 2e 75 70 64 61 74 65 94 6a 53 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 43 ..RC4.update.jS...u..M2Crypto.RC
35d40 34 94 74 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 53 41 94 28 58 8d 38 00 00 66 72 6f 6d 20 5f 5f 4.t...M2Crypto.RSA.(X.8..from.__
35d60 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a future__.import.absolute_import.
35d80 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c ."""M2Crypto.wrapper.for.OpenSSL
35da0 20 52 53 41 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 .RSA.API...Copyright.(c).1999-20
35dc0 30 34 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 04.Ng.Pheng.Siong..All.rights.re
35de0 73 65 72 76 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 73 79 73 0a 0a 66 72 6f 6d 20 4d 32 43 served."""..import.sys..from.M2C
35e00 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 42 49 4f 2c 20 45 72 72 2c 20 6d 32 2c 20 75 74 69 6c 0a rypto.import.BIO,.Err,.m2,.util.
35e20 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e if.util.py27plus:.....from.typin
35e40 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 g.import.Any,.AnyStr,.Callable,.
35e60 44 69 63 74 2c 20 4c 69 73 74 2c 20 49 4f 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 20 Dict,.List,.IO,.Optional,.Tuple.
35e80 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 52 53 41 45 72 72 6f 72 28 45 78 63 65 70 74 69 .#.noqa...class.RSAError(Excepti
35ea0 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 72 73 61 5f 69 6e 69 74 28 52 53 41 45 72 on):.....pass..m2.rsa_init(RSAEr
35ec0 72 6f 72 29 0a 0a 6e 6f 5f 70 61 64 64 69 6e 67 20 3d 20 6d 32 2e 6e 6f 5f 70 61 64 64 69 6e 67 ror)..no_padding.=.m2.no_padding
35ee0 0a 70 6b 63 73 31 5f 70 61 64 64 69 6e 67 20 3d 20 6d 32 2e 70 6b 63 73 31 5f 70 61 64 64 69 6e .pkcs1_padding.=.m2.pkcs1_paddin
35f00 67 0a 73 73 6c 76 32 33 5f 70 61 64 64 69 6e 67 20 3d 20 6d 32 2e 73 73 6c 76 32 33 5f 70 61 64 g.sslv23_padding.=.m2.sslv23_pad
35f20 64 69 6e 67 0a 70 6b 63 73 31 5f 6f 61 65 70 5f 70 61 64 64 69 6e 67 20 3d 20 6d 32 2e 70 6b 63 ding.pkcs1_oaep_padding.=.m2.pkc
35f40 73 31 5f 6f 61 65 70 5f 70 61 64 64 69 6e 67 0a 0a 0a 63 6c 61 73 73 20 52 53 41 28 6f 62 6a 65 s1_oaep_padding...class.RSA(obje
35f60 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 53 41 20 4b 65 79 20 50 61 69 72 2e 0a 20 ct):.....""".....RSA.Key.Pair...
35f80 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 72 73 61 5f 66 72 65 65 20 3d 20 6d 32 2e 72 73 61 ..."""......m2_rsa_free.=.m2.rsa
35fa0 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 72 73 _free......def.__init__(self,.rs
35fc0 61 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 a,._pyfree=0):.........#.type:.(
35fe0 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a bytes,.int).->.None.........""".
36000 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 72 73 61 3a 20 62 69 6e 61 72 79 20 72 65 70 72 65 ........:param.rsa:.binary.repre
36020 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 4f 70 65 6e 53 53 4c 20 52 53 41 20 74 79 70 65 0a 20 20 sentation.of.OpenSSL.RSA.type...
36040 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 72 73 61 5f ......""".........assert.m2.rsa_
36060 74 79 70 65 5f 63 68 65 63 6b 28 72 73 61 29 2c 20 22 27 72 73 61 27 20 74 79 70 65 20 65 72 72 type_check(rsa),."'rsa'.type.err
36080 6f 72 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 73 61 20 3d 20 72 73 61 0a 20 20 20 20 20 or".........self.rsa.=.rsa......
360a0 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 64 ...self._pyfree.=._pyfree......d
360c0 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 ef.__del__(self):.........#.type
360e0 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 :.().->.None.........if.getattr(
36100 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 self,.'_pyfree',.0):............
36120 20 73 65 6c 66 2e 6d 32 5f 72 73 61 5f 66 72 65 65 28 73 65 6c 66 2e 72 73 61 29 0a 0a 20 20 20 .self.m2_rsa_free(self.rsa).....
36140 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 .def.__len__(self):.........#.ty
36160 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 6e 74 pe:.().->.int.........return.int
36180 28 6d 32 2e 72 73 61 5f 73 69 7a 65 28 73 65 6c 66 2e 72 73 61 29 20 3c 3c 20 33 29 0a 0a 20 20 (m2.rsa_size(self.rsa).<<.3)....
361a0 20 20 64 65 66 20 5f 5f 67 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 ..def.__getattr__(self,.name):..
361c0 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 .......#.type:.(str).->.bytes...
361e0 20 20 20 20 20 20 69 66 20 6e 61 6d 65 20 3d 3d 20 27 65 27 3a 0a 20 20 20 20 20 20 20 20 20 20 ......if.name.==.'e':...........
36200 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 67 65 74 5f 65 28 73 65 6c 66 2e 72 73 61 29 0a ..return.m2.rsa_get_e(self.rsa).
36220 20 20 20 20 20 20 20 20 65 6c 69 66 20 6e 61 6d 65 20 3d 3d 20 27 6e 27 3a 0a 20 20 20 20 20 20 ........elif.name.==.'n':.......
36240 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 67 65 74 5f 6e 28 73 65 6c 66 2e 72 ......return.m2.rsa_get_n(self.r
36260 73 61 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 sa).........else:.............ra
36280 69 73 65 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 70 75 62 28 ise.AttributeError......def.pub(
362a0 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 54 75 70 self):.........#.type:.().->.Tup
362c0 6c 65 5b 62 79 74 65 73 2c 20 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 le[bytes,.bytes].........assert.
362e0 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e self.check_key(),.'key.is.not.in
36300 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 itialised'.........return.m2.rsa
36320 5f 67 65 74 5f 65 28 73 65 6c 66 2e 72 73 61 29 2c 20 6d 32 2e 72 73 61 5f 67 65 74 5f 6e 28 73 _get_e(self.rsa),.m2.rsa_get_n(s
36340 65 6c 66 2e 72 73 61 29 0a 0a 20 20 20 20 64 65 66 20 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 elf.rsa)......def.public_encrypt
36360 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 3a 0a 20 20 20 20 20 20 20 20 23 (self,.data,.padding):.........#
36380 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 .type:.(bytes,.int).->.bytes....
363a0 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b .....assert.self.check_key(),.'k
363c0 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 ey.is.not.initialised'.........r
363e0 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 eturn.m2.rsa_public_encrypt(self
36400 2e 72 73 61 2c 20 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 0a 0a 20 20 20 20 64 65 66 20 70 75 .rsa,.data,.padding)......def.pu
36420 62 6c 69 63 5f 64 65 63 72 79 70 74 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 70 61 64 64 69 6e 67 blic_decrypt(self,.data,.padding
36440 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 ):.........#.type:.(bytes,.int).
36460 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 63 68 65 ->.bytes.........assert.self.che
36480 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 ck_key(),.'key.is.not.initialise
364a0 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 70 75 62 6c 69 63 5f d'.........return.m2.rsa_public_
364c0 64 65 63 72 79 70 74 28 73 65 6c 66 2e 72 73 61 2c 20 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 decrypt(self.rsa,.data,.padding)
364e0 0a 0a 20 20 20 20 64 65 66 20 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 2c 20 ......def.private_encrypt(self,.
36500 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 data,.padding):.........#.type:.
36520 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 (bytes,.int).->.bytes.........as
36540 73 65 72 74 20 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e sert.self.check_key(),.'key.is.n
36560 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 64 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d ot.initialised'.........return.m
36580 32 2e 72 73 61 5f 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 2e 72 73 61 2c 20 2.rsa_private_encrypt(self.rsa,.
365a0 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 0a 0a 20 20 20 20 64 65 66 20 70 72 69 76 61 74 65 5f data,.padding)......def.private_
365c0 64 65 63 72 79 70 74 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 3a 0a 20 20 decrypt(self,.data,.padding):...
365e0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 62 79 ......#.type:.(bytes,.int).->.by
36600 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 65 6c 66 2e 63 68 65 63 6b 5f 6b 65 tes.........assert.self.check_ke
36620 79 28 29 2c 20 27 6b 65 79 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 73 65 64 27 0a 20 20 y(),.'key.is.not.initialised'...
36640 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 70 72 69 76 61 74 65 5f 64 65 63 72 ......return.m2.rsa_private_decr
36660 79 70 74 28 73 65 6c 66 2e 72 73 61 2c 20 64 61 74 61 2c 20 70 61 64 64 69 6e 67 29 0a 0a 20 20 ypt(self.rsa,.data,.padding)....
36680 20 20 64 65 66 20 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 2c 20 63 69 ..def.save_key_bio(self,.bio,.ci
366a0 70 68 65 72 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 pher='aes_128_cbc',.............
366c0 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 .........callback=util.passphras
366e0 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 e_callback):.........#.type:.(BI
36700 4f 2e 42 49 4f 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 O.BIO,.Optional[str],.Callable).
36720 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 ->.int.........""".........Save.
36740 74 68 65 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e the.key.pair.to.an.M2Crypto.BIO.
36760 42 49 4f 20 6f 62 6a 65 63 74 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 BIO.object.in.PEM.format........
36780 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 ...:param.bio:.M2Crypto.BIO.BIO.
367a0 6f 62 6a 65 63 74 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 0a 20 20 20 20 20 20 20 20 object.to.save.key.to...........
367c0 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 53 79 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 20 :param.cipher:.Symmetric.cipher.
367e0 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a to.protect.the.key..The.default.
36800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 69 73 .......................cipher.is
36820 20 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2e 20 49 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e .'aes_128_cbc'..If.cipher.is.Non
36840 65 2c 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 e,.then........................t
36860 68 65 20 6b 65 79 20 69 73 20 73 61 76 65 64 20 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a 0a 20 he.key.is.saved.in.the.clear....
36880 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e .......:param.callback:.A.Python
368a0 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 .callable.object.that.is.invoked
368c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 ..........................to.acq
368e0 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 uire.a.passphrase.with.which.to.
36900 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 protect.........................
36920 20 74 68 65 20 6b 65 79 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 0a 20 20 20 20 20 20 .the.key...The.default.is.......
36940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 ...................util.passphra
36960 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 se_callback.........."""........
36980 20 69 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .if.cipher.is.None:.............
369a0 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 77 72 69 74 65 5f 6b 65 79 5f 6e 6f 5f 63 69 70 68 65 return.m2.rsa_write_key_no_ciphe
369c0 72 28 73 65 6c 66 2e 72 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b r(self.rsa,.bio._ptr(),.callback
369e0 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 ).........else:.............ciph
36a00 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 63 69 70 68 65 72 2c 20 4e 6f 6e 65 29 0a 20 20 20 .=.getattr(m2,.cipher,.None)....
36a20 20 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 .........if.ciph.is.None:.......
36a40 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 52 53 41 45 72 72 6f 72 28 27 6e 6f 74 20 73 75 ..........raise.RSAError('not.su
36a60 63 68 20 63 69 70 68 65 72 20 25 73 27 20 25 20 63 69 70 68 65 72 29 0a 20 20 20 20 20 20 20 20 ch.cipher.%s'.%.cipher).........
36a80 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 20 3d ....else:.................ciph.=
36aa0 20 63 69 70 68 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 .ciph().............return.m2.rs
36ac0 61 5f 77 72 69 74 65 5f 6b 65 79 28 73 65 6c 66 2e 72 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 a_write_key(self.rsa,.bio._ptr()
36ae0 2c 20 63 69 70 68 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f ,.ciph,.callback)......def.save_
36b00 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 2c 20 63 69 70 68 65 72 3d 27 61 65 73 5f 31 32 38 5f key(self,.file,.cipher='aes_128_
36b20 63 62 63 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d cbc',..................callback=
36b40 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 util.passphrase_callback):......
36b60 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 ...#.type:.(AnyStr,.Optional[str
36b80 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a ],.Callable).->.int.........""".
36ba0 20 20 20 20 20 20 20 20 53 61 76 65 20 74 68 65 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 20 66 ........Save.the.key.pair.to.a.f
36bc0 69 6c 65 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 ile.in.PEM.format...........:par
36be0 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 20 74 6f 20 73 61 76 65 20 6b 65 am.file:.Name.of.file.to.save.ke
36c00 79 20 74 6f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 53 79 y.to...........:param.cipher:.Sy
36c20 6d 6d 65 74 72 69 63 20 63 69 70 68 65 72 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 6b 65 mmetric.cipher.to.protect.the.ke
36c40 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y..The.default..................
36c60 20 20 20 20 20 20 63 69 70 68 65 72 20 69 73 20 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2e 20 49 ......cipher.is.'aes_128_cbc'..I
36c80 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 2c 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 f.cipher.is.None,.then..........
36ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 20 69 73 20 73 61 76 65 64 20 69 ..............the.key.is.saved.i
36cc0 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c n.the.clear...........:param.cal
36ce0 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 lback:.A.Python.callable.object.
36d00 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 that.is.invoked.................
36d20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 .........to.acquire.a.passphrase
36d40 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 20 .with.which.to.protect..........
36d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6b 65 79 2e 20 20 54 68 65 20 64 65 ................the.key...The.de
36d80 66 61 75 6c 74 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fault.is........................
36da0 20 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 20 20 20 20 ..util.passphrase_callback......
36dc0 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c ....""".........with.BIO.openfil
36de0 65 28 66 69 6c 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 e(file,.'wb').as.bio:...........
36e00 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 ..return.self.save_key_bio(bio,.
36e20 63 69 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 73 61 76 65 5f 70 65 6d 20 cipher,.callback)......save_pem.
36e40 3d 20 73 61 76 65 5f 6b 65 79 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 70 65 6d 28 73 65 6c 66 2c =.save_key......def.as_pem(self,
36e60 20 63 69 70 68 65 72 3d 27 61 65 73 5f 31 32 38 5f 63 62 63 27 2c 20 63 61 6c 6c 62 61 63 6b 3d .cipher='aes_128_cbc',.callback=
36e80 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 util.passphrase_callback):......
36ea0 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 43 61 6c 6c 61 ...#.type:.(Optional[str],.Calla
36ec0 62 6c 65 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 ble).->.bytes.........""".......
36ee0 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 28 70 61 69 72 29 20 61 73 20 61 20 73 74 72 ..Returns.the.key(pair).as.a.str
36f00 69 6e 67 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 ing.in.PEM.format.........."""..
36f20 20 20 20 20 20 20 20 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a .......bio.=.BIO.MemoryBuffer().
36f40 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 ........self.save_key_bio(bio,.c
36f60 69 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ipher,.callback).........return.
36f80 62 69 6f 2e 72 65 61 64 28 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 6b 65 79 5f 64 65 72 bio.read()......def.save_key_der
36fa0 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a _bio(self,.bio):.........#.type:
36fc0 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 .(BIO.BIO).->.int........."""...
36fe0 20 20 20 20 20 20 53 61 76 65 20 74 68 65 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 6e 20 4d 32 ......Save.the.key.pair.to.an.M2
37000 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 69 6e 20 44 45 52 20 66 6f 72 Crypto.BIO.BIO.object.in.DER.for
37020 6d 61 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 mat...........:param.bio:.M2Cryp
37040 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f to.BIO.BIO.object.to.save.key.to
37060 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e ..........""".........return.m2.
37080 72 73 61 5f 77 72 69 74 65 5f 6b 65 79 5f 64 65 72 28 73 65 6c 66 2e 72 73 61 2c 20 62 69 6f 2e rsa_write_key_der(self.rsa,.bio.
370a0 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 6b 65 79 5f 64 65 72 28 73 65 _ptr())......def.save_key_der(se
370c0 6c 66 2c 20 66 69 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 lf,.file):.........#.type:.(AnyS
370e0 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 tr).->.int.........""".........S
37100 61 76 65 20 74 68 65 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 20 66 69 6c 65 20 69 6e 20 44 45 ave.the.key.pair.to.a.file.in.DE
37120 52 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 R.format...........:param.file:.
37140 46 69 6c 65 6e 61 6d 65 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f 0a 20 20 20 20 20 20 20 20 Filename.to.save.key.to.........
37160 22 22 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 """.........with.BIO.openfile(fi
37180 6c 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 le,.'wb').as.bio:.............re
371a0 74 75 72 6e 20 73 65 6c 66 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 69 6f 28 62 69 6f 29 0a turn.self.save_key_der_bio(bio).
371c0 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 .....def.save_pub_key_bio(self,.
371e0 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 bio):.........#.type:.(BIO.BIO).
37200 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 ->.int.........""".........Save.
37220 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 74 6f 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 the.public.key.to.an.M2Crypto.BI
37240 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 O.BIO.object.in.PEM.format......
37260 20 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 .....:param.bio:.M2Crypto.BIO.BI
37280 4f 20 6f 62 6a 65 63 74 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 20 20 20 20 20 20 20 O.object.to.save.key.to.........
372a0 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 77 72 69 74 65 .""".........return.m2.rsa_write
372c0 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2e 72 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a _pub_key(self.rsa,.bio._ptr())..
372e0 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 29 ....def.save_pub_key(self,.file)
37300 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 69 6e :.........#.type:.(AnyStr).->.in
37320 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 74 68 65 20 70 t.........""".........Save.the.p
37340 75 62 6c 69 63 20 6b 65 79 20 74 6f 20 61 20 66 69 6c 65 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 ublic.key.to.a.file.in.PEM.forma
37360 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 t...........:param.file:.Name.of
37380 20 66 69 6c 65 20 74 6f 20 73 61 76 65 20 6b 65 79 20 74 6f 2e 0a 20 20 20 20 20 20 20 20 22 22 .file.to.save.key.to..........""
373a0 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 ".........with.BIO.openfile(file
373c0 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ,.'wb').as.bio:.............retu
373e0 72 6e 20 6d 32 2e 72 73 61 5f 77 72 69 74 65 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2e 72 73 61 rn.m2.rsa_write_pub_key(self.rsa
37400 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 63 68 65 63 6b 5f 6b 65 79 ,.bio._ptr())......def.check_key
37420 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e (self):.........#.type:.().->.in
37440 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 56 61 6c 69 64 61 74 65 20 52 t.........""".........Validate.R
37460 53 41 20 6b 65 79 73 2e 0a 0a 20 20 20 20 20 20 20 20 49 74 20 63 68 65 63 6b 73 20 74 68 61 74 SA.keys...........It.checks.that
37480 20 70 20 61 6e 64 20 71 20 61 72 65 20 69 6e 20 66 61 63 74 20 70 72 69 6d 65 2c 20 61 6e 64 20 .p.and.q.are.in.fact.prime,.and.
374a0 74 68 61 74 20 6e 20 3d 20 70 2a 71 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 that.n.=.p*q...........:return:.
374c0 72 65 74 75 72 6e 73 20 31 20 69 66 20 72 73 61 20 69 73 20 61 20 76 61 6c 69 64 20 52 53 41 20 returns.1.if.rsa.is.a.valid.RSA.
374e0 6b 65 79 2c 20 61 6e 64 20 30 20 6f 74 68 65 72 77 69 73 65 2e 0a 20 20 20 20 20 20 20 20 20 20 key,.and.0.otherwise............
37500 20 20 20 20 20 20 20 2d 31 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 61 6e 20 65 72 72 6f .......-1.is.returned.if.an.erro
37520 72 20 6f 63 63 75 72 73 20 77 68 69 6c 65 20 63 68 65 63 6b 69 6e 67 20 74 68 65 20 6b 65 79 2e r.occurs.while.checking.the.key.
37540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 74 68 65 20 6b 65 79 20 69 73 20 ..................If.the.key.is.
37560 69 6e 76 61 6c 69 64 20 6f 72 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 2c 20 74 68 invalid.or.an.error.occurred,.th
37580 65 20 72 65 61 73 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 20 63 e.reason..................code.c
375a0 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64 20 75 73 69 6e 67 20 45 52 52 5f 67 65 74 5f 65 72 72 an.be.obtained.using.ERR_get_err
375c0 6f 72 28 33 29 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 or(3)..........""".........retur
375e0 6e 20 6d 32 2e 72 73 61 5f 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 2e 72 73 61 29 0a 0a 20 20 n.m2.rsa_check_key(self.rsa)....
37600 20 20 64 65 66 20 73 69 67 6e 5f 72 73 61 73 73 61 5f 70 73 73 28 73 65 6c 66 2c 20 64 69 67 65 ..def.sign_rsassa_pss(self,.dige
37620 73 74 2c 20 61 6c 67 6f 3d 27 73 68 61 31 27 2c 20 73 61 6c 74 5f 6c 65 6e 67 74 68 3d 32 30 29 st,.algo='sha1',.salt_length=20)
37640 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 73 74 72 2c 20 69 :.........#.type:.(bytes,.str,.i
37660 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 nt).->.bytes........."""........
37680 20 53 69 67 6e 73 20 61 20 64 69 67 65 73 74 20 77 69 74 68 20 74 68 65 20 70 72 69 76 61 74 65 .Signs.a.digest.with.the.private
376a0 20 6b 65 79 20 75 73 69 6e 67 20 52 53 41 53 53 41 2d 50 53 53 0a 0a 20 20 20 20 20 20 20 20 3a .key.using.RSASSA-PSS..........:
376c0 70 61 72 61 6d 20 64 69 67 65 73 74 3a 20 41 20 64 69 67 65 73 74 20 63 72 65 61 74 65 64 20 62 param.digest:.A.digest.created.b
376e0 79 20 75 73 69 6e 67 20 74 68 65 20 64 69 67 65 73 74 20 6d 65 74 68 6f 64 0a 0a 20 20 20 20 20 y.using.the.digest.method.......
37700 20 20 20 3a 70 61 72 61 6d 20 73 61 6c 74 5f 6c 65 6e 67 74 68 3a 20 54 68 65 20 6c 65 6e 67 74 ...:param.salt_length:.The.lengt
37720 68 20 6f 66 20 74 68 65 20 73 61 6c 74 20 74 6f 20 75 73 65 0a 0a 20 20 20 20 20 20 20 20 3a 70 h.of.the.salt.to.use..........:p
37740 61 72 61 6d 20 61 6c 67 6f 3a 20 54 68 65 20 68 61 73 68 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f aram.algo:.The.hash.algorithm.to
37760 20 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 65 67 61 6c 20 .use......................Legal.
37780 76 61 6c 75 65 73 20 6c 69 6b 65 20 27 73 68 61 31 27 2c 27 73 68 61 32 32 34 27 2c 20 27 73 68 values.like.'sha1','sha224',.'sh
377a0 61 32 35 36 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 69 70 a256',......................'rip
377c0 65 6d 64 31 36 30 27 2c 20 61 6e 64 20 27 6d 64 35 27 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 emd160',.and.'md5'...........:re
377e0 74 75 72 6e 3a 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65 20 73 69 67 6e turn:.a.string.which.is.the.sign
37800 61 74 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 68 61 73 68 20 3d ature.........""".........hash.=
37820 20 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 20 20 .getattr(m2,.algo,.None)........
37840 20 20 69 66 20 68 61 73 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ..if.hash.is.None:.............r
37860 61 69 73 65 20 52 53 41 45 72 72 6f 72 28 27 6e 6f 74 20 73 75 63 68 20 68 61 73 68 20 61 6c 67 aise.RSAError('not.such.hash.alg
37880 6f 72 69 74 68 6d 20 25 73 27 20 25 20 61 6c 67 6f 29 0a 0a 20 20 20 20 20 20 20 20 73 69 67 6e orithm.%s'.%.algo)..........sign
378a0 61 74 75 72 65 20 3d 20 6d 32 2e 72 73 61 5f 70 61 64 64 69 6e 67 5f 61 64 64 5f 70 6b 63 73 31 ature.=.m2.rsa_padding_add_pkcs1
378c0 5f 70 73 73 28 73 65 6c 66 2e 72 73 61 2c 20 64 69 67 65 73 74 2c 20 68 61 73 68 28 29 2c 20 73 _pss(self.rsa,.digest,.hash(),.s
378e0 61 6c 74 5f 6c 65 6e 67 74 68 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 alt_length)..........return.self
37900 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 28 73 69 67 6e 61 74 75 72 65 2c 20 6d 32 2e 6e .private_encrypt(signature,.m2.n
37920 6f 5f 70 61 64 64 69 6e 67 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 5f 72 73 61 73 73 o_padding)......def.verify_rsass
37940 61 5f 70 73 73 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 73 69 67 6e 61 74 75 72 65 2c 20 61 6c 67 a_pss(self,.data,.signature,.alg
37960 6f 3d 27 73 68 61 31 27 2c 20 73 61 6c 74 5f 6c 65 6e 67 74 68 3d 32 30 29 3a 0a 20 20 20 20 20 o='sha1',.salt_length=20):......
37980 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 74 65 73 2c 20 73 74 72 2c 20 69 ...#.type:.(bytes,.bytes,.str,.i
379a0 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 56 nt).->.int.........""".........V
379c0 65 72 69 66 69 65 73 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 20 52 53 41 53 53 41 2d 50 53 53 erifies.the.signature.RSASSA-PSS
379e0 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 3a 20 44 61 74 61 20 74 68 61 74 ..........:param.data:.Data.that
37a00 20 68 61 73 20 62 65 65 6e 20 73 69 67 6e 65 64 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d .has.been.signed..........:param
37a20 20 73 69 67 6e 61 74 75 72 65 3a 20 54 68 65 20 73 69 67 6e 61 74 75 72 65 20 73 69 67 6e 65 64 .signature:.The.signature.signed
37a40 20 77 69 74 68 20 52 53 41 53 53 41 2d 50 53 53 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d .with.RSASSA-PSS..........:param
37a60 20 73 61 6c 74 5f 6c 65 6e 67 74 68 3a 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 .salt_length:.The.length.of.the.
37a80 73 61 6c 74 20 74 68 61 74 20 77 61 73 20 75 73 65 64 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 salt.that.was.used..........:par
37aa0 61 6d 20 61 6c 67 6f 3a 20 54 68 65 20 68 61 73 68 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 am.algo:.The.hash.algorithm.to.u
37ac0 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 65 67 61 6c 20 76 61 se......................Legal.va
37ae0 6c 75 65 73 20 61 72 65 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 73 68 61 31 27 2c 27 73 68 61 lues.are.for.example.'sha1','sha
37b00 32 32 34 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 73 68 61 32 224',......................'sha2
37b20 35 36 27 2c 20 27 72 69 70 65 6d 64 31 36 30 27 2c 20 61 6e 64 20 27 6d 64 35 27 2e 0a 0a 20 20 56',.'ripemd160',.and.'md5'.....
37b40 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 6f 72 20 30 2c 20 64 65 70 65 6e 64 69 6e 67 ......:return:.1.or.0,.depending
37b60 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 20 77 61 73 0a 20 20 .on.whether.the.signature.was...
37b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 65 72 69 66 69 65 64 20 6f 72 20 6e 6f 74 2e 0a ...............verified.or.not..
37ba0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 68 61 73 68 20 3d 20 67 65 74 61 74 ........""".........hash.=.getat
37bc0 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 68 tr(m2,.algo,.None)..........if.h
37be0 61 73 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 52 ash.is.None:.............raise.R
37c00 53 41 45 72 72 6f 72 28 27 6e 6f 74 20 73 75 63 68 20 68 61 73 68 20 61 6c 67 6f 72 69 74 68 6d SAError('not.such.hash.algorithm
37c20 20 25 73 27 20 25 20 61 6c 67 6f 29 0a 0a 20 20 20 20 20 20 20 20 70 6c 61 69 6e 5f 73 69 67 6e .%s'.%.algo)..........plain_sign
37c40 61 74 75 72 65 20 3d 20 73 65 6c 66 2e 70 75 62 6c 69 63 5f 64 65 63 72 79 70 74 28 73 69 67 6e ature.=.self.public_decrypt(sign
37c60 61 74 75 72 65 2c 20 6d 32 2e 6e 6f 5f 70 61 64 64 69 6e 67 29 0a 0a 20 20 20 20 20 20 20 20 72 ature,.m2.no_padding)..........r
37c80 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 76 65 72 69 66 79 5f 70 6b 63 73 31 5f 70 73 73 28 73 65 eturn.m2.rsa_verify_pkcs1_pss(se
37ca0 6c 66 2e 72 73 61 2c 20 64 61 74 61 2c 20 70 6c 61 69 6e 5f 73 69 67 6e 61 74 75 72 65 2c 20 68 lf.rsa,.data,.plain_signature,.h
37cc0 61 73 68 28 29 2c 20 73 61 6c 74 5f 6c 65 6e 67 74 68 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 ash(),.salt_length)......def.sig
37ce0 6e 28 73 65 6c 66 2c 20 64 69 67 65 73 74 2c 20 61 6c 67 6f 3d 27 73 68 61 31 27 29 3a 0a 20 20 n(self,.digest,.algo='sha1'):...
37d00 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 73 74 72 29 20 2d 3e 20 62 79 ......#.type:.(bytes,.str).->.by
37d20 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 69 67 6e 73 20 61 20 tes.........""".........Signs.a.
37d40 64 69 67 65 73 74 20 77 69 74 68 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 0a 0a 20 20 20 digest.with.the.private.key.....
37d60 20 20 20 20 20 3a 70 61 72 61 6d 20 64 69 67 65 73 74 3a 20 41 20 64 69 67 65 73 74 20 63 72 65 .....:param.digest:.A.digest.cre
37d80 61 74 65 64 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 64 69 67 65 73 74 20 6d 65 74 68 6f 64 0a ated.by.using.the.digest.method.
37da0 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 61 6c 67 6f 3a 20 54 68 65 20 6d 65 74 68 6f 64 .........:param.algo:.The.method
37dc0 20 74 68 61 74 20 63 72 65 61 74 65 64 20 74 68 65 20 64 69 67 65 73 74 2e 0a 20 20 20 20 20 20 .that.created.the.digest........
37de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 65 67 61 6c 20 76 61 6c 75 65 73 20 6c 69 6b 65 ...............Legal.values.like
37e00 20 27 73 68 61 31 27 2c 27 73 68 61 32 32 34 27 2c 20 27 73 68 61 32 35 36 27 2c 0a 20 20 20 20 .'sha1','sha224',.'sha256',.....
37e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 69 70 65 6d 64 31 36 30 27 2c 20 61 6e .................'ripemd160',.an
37e40 64 20 27 6d 64 35 27 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 61 20 73 74 72 d.'md5'...........:return:.a.str
37e60 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 0a 20 20 20 20 20 ing.which.is.the.signature......
37e80 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 64 69 67 65 73 74 5f 74 79 70 65 20 3d 20 67 65 74 ...""".........digest_type.=.get
37ea0 61 74 74 72 28 6d 32 2c 20 27 4e 49 44 5f 27 20 2b 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 20 20 attr(m2,.'NID_'.+.algo,.None)...
37ec0 20 20 20 20 20 20 69 66 20 64 69 67 65 73 74 5f 74 79 70 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 ......if.digest_type.is.None:...
37ee0 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 75 6e 6b 6e ..........raise.ValueError('unkn
37f00 6f 77 6e 20 61 6c 67 6f 72 69 74 68 6d 27 2c 20 61 6c 67 6f 29 0a 0a 20 20 20 20 20 20 20 20 72 own.algorithm',.algo)..........r
37f20 65 74 75 72 6e 20 6d 32 2e 72 73 61 5f 73 69 67 6e 28 73 65 6c 66 2e 72 73 61 2c 20 64 69 67 65 eturn.m2.rsa_sign(self.rsa,.dige
37f40 73 74 2c 20 64 69 67 65 73 74 5f 74 79 70 65 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 st,.digest_type)......def.verify
37f60 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 73 69 67 6e 61 74 75 72 65 2c 20 61 6c 67 6f 3d 27 73 68 (self,.data,.signature,.algo='sh
37f80 61 31 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 a1'):.........#.type:.(bytes,.by
37fa0 74 65 73 2c 20 73 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 tes,.str).->.int........."""....
37fc0 20 20 20 20 20 56 65 72 69 66 69 65 73 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 20 77 69 74 68 .....Verifies.the.signature.with
37fe0 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 .the.public.key..........:param.
38000 64 61 74 61 3a 20 44 61 74 61 20 74 68 61 74 20 68 61 73 20 62 65 65 6e 20 73 69 67 6e 65 64 0a data:.Data.that.has.been.signed.
38020 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 69 67 6e 61 74 75 72 65 3a 20 54 68 65 20 73 .........:param.signature:.The.s
38040 69 67 6e 61 74 75 72 65 20 73 69 67 6e 65 64 20 77 69 74 68 20 74 68 65 20 70 72 69 76 61 74 65 ignature.signed.with.the.private
38060 20 6b 65 79 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 61 6c 67 6f 3a 20 54 68 65 20 6d .key..........:param.algo:.The.m
38080 65 74 68 6f 64 20 75 73 65 20 74 6f 20 63 72 65 61 74 65 20 64 69 67 65 73 74 20 66 72 6f 6d 20 ethod.use.to.create.digest.from.
380a0 74 68 65 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 the.data......................be
380c0 66 6f 72 65 20 69 74 20 77 61 73 20 73 69 67 6e 65 64 2e 20 20 4c 65 67 61 6c 20 76 61 6c 75 65 fore.it.was.signed...Legal.value
380e0 73 20 6c 69 6b 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 73 68 61 s.like......................'sha
38100 31 27 2c 27 73 68 61 32 32 34 27 2c 20 27 73 68 61 32 35 36 27 2c 20 27 72 69 70 65 6d 64 31 36 1','sha224',.'sha256',.'ripemd16
38120 30 27 2c 20 61 6e 64 20 27 6d 64 35 27 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 0',.and.'md5'...........:return:
38140 20 31 20 6f 72 20 30 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 .1.or.0,.depending.on.whether.th
38160 65 20 73 69 67 6e 61 74 75 72 65 20 77 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.signature.was.................
38180 20 76 65 72 69 66 69 65 64 20 6f 72 20 6e 6f 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 .verified.or.not.........."""...
381a0 20 20 20 20 20 20 64 69 67 65 73 74 5f 74 79 70 65 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 ......digest_type.=.getattr(m2,.
381c0 27 4e 49 44 5f 27 20 2b 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 'NID_'.+.algo,.None).........if.
381e0 64 69 67 65 73 74 5f 74 79 70 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 digest_type.is.None:............
38200 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 61 6c 67 6f 72 .raise.ValueError('unknown.algor
38220 69 74 68 6d 27 2c 20 61 6c 67 6f 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e ithm',.algo)..........return.m2.
38240 72 73 61 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 72 73 61 2c 20 64 61 74 61 2c 20 73 69 67 6e 61 rsa_verify(self.rsa,.data,.signa
38260 74 75 72 65 2c 20 64 69 67 65 73 74 5f 74 79 70 65 29 0a 0a 0a 63 6c 61 73 73 20 52 53 41 5f 70 ture,.digest_type)...class.RSA_p
38280 75 62 28 52 53 41 29 3a 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4f 62 6a 65 63 74 20 69 6e 74 ub(RSA):......""".....Object.int
382a0 65 72 66 61 63 65 20 74 6f 20 61 6e 20 52 53 41 20 70 75 62 6c 69 63 20 6b 65 79 2e 0a 20 20 20 erface.to.an.RSA.public.key.....
382c0 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 ."""......def.__setattr__(self,.
382e0 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 name,.value):.........#.type:.(s
38300 74 72 2c 20 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 tr,.bytes).->.None.........if.na
38320 6d 65 20 69 6e 20 5b 27 65 27 2c 20 27 6e 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 me.in.['e',.'n']:.............ra
38340 69 73 65 20 52 53 41 45 72 72 6f 72 28 27 75 73 65 20 66 61 63 74 6f 72 79 20 66 75 6e 63 74 69 ise.RSAError('use.factory.functi
38360 6f 6e 20 6e 65 77 5f 70 75 62 5f 6b 65 79 28 29 20 74 6f 20 73 65 74 20 28 65 2c 20 6e 29 27 29 on.new_pub_key().to.set.(e,.n)')
38380 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e .........else:.............self.
383a0 5f 5f 64 69 63 74 5f 5f 5b 6e 61 6d 65 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 __dict__[name].=.value......def.
383c0 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 2c 20 2a 61 72 67 76 29 3a 0a 20 20 private_encrypt(self,.*argv):...
383e0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 ......#.type:.(*Any).->.None....
38400 20 20 20 20 20 72 61 69 73 65 20 52 53 41 45 72 72 6f 72 28 27 52 53 41 5f 70 75 62 20 6f 62 6a .....raise.RSAError('RSA_pub.obj
38420 65 63 74 20 68 61 73 20 6e 6f 20 70 72 69 76 61 74 65 20 6b 65 79 27 29 0a 0a 20 20 20 20 64 65 ect.has.no.private.key')......de
38440 66 20 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 28 73 65 6c 66 2c 20 2a 61 72 67 76 29 3a 0a f.private_decrypt(self,.*argv):.
38460 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 ........#.type:.(*Any).->.None..
38480 20 20 20 20 20 20 20 72 61 69 73 65 20 52 53 41 45 72 72 6f 72 28 27 52 53 41 5f 70 75 62 20 6f .......raise.RSAError('RSA_pub.o
384a0 62 6a 65 63 74 20 68 61 73 20 6e 6f 20 70 72 69 76 61 74 65 20 6b 65 79 27 29 0a 0a 20 20 20 20 bject.has.no.private.key')......
384c0 64 65 66 20 73 61 76 65 5f 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 2c 20 2a 61 72 67 73 2c 20 def.save_key(self,.file,.*args,.
384e0 2a 2a 6b 77 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 **kw):.........#.type:.(AnyStr,.
38500 2a 41 6e 79 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a *Any,.**Any).->.int.........""".
38520 20 20 20 20 20 20 20 20 53 61 76 65 20 70 75 62 6c 69 63 20 6b 65 79 20 74 6f 20 66 69 6c 65 2e ........Save.public.key.to.file.
38540 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 .........""".........return.self
38560 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 66 69 6c 65 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 .save_pub_key(file)......def.sav
38580 65 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 e_key_bio(self,.bio,.*args,.**kw
385a0 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 2a 41 6e ):.........#.type:.(BIO.BIO,.*An
385c0 79 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 y,.**Any).->.int........."""....
385e0 20 20 20 20 20 53 61 76 65 20 70 75 62 6c 69 63 20 6b 65 79 20 74 6f 20 42 49 4f 2e 0a 20 20 20 .....Save.public.key.to.BIO.....
38600 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 61 76 .....""".........return.self.sav
38620 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 29 0a 0a 20 20 20 20 23 20 73 61 76 65 5f 6b e_pub_key_bio(bio)......#.save_k
38640 65 79 5f 64 65 72 0a 0a 20 20 20 20 23 20 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 69 6f 0a 0a ey_der......#.save_key_der_bio..
38660 20 20 20 20 64 65 66 20 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 ....def.check_key(self):........
38680 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .#.type:.().->.int.........retur
386a0 6e 20 6d 32 2e 72 73 61 5f 63 68 65 63 6b 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2e 72 73 61 29 n.m2.rsa_check_pub_key(self.rsa)
386c0 0a 0a 0a 64 65 66 20 72 73 61 5f 65 72 72 6f 72 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 ...def.rsa_error():.....#.type:.
386e0 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 72 61 69 73 65 20 52 53 41 45 72 72 6f 72 28 45 72 ().->.None.....raise.RSAError(Er
38700 72 2e 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 28 29 29 0a 0a 0a 64 65 66 20 6b 65 79 r.get_error_message())...def.key
38720 67 65 6e 5f 63 61 6c 6c 62 61 63 6b 28 70 2c 20 6e 2c 20 6f 75 74 3d 73 79 73 2e 73 74 64 6f 75 gen_callback(p,.n,.out=sys.stdou
38740 74 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 41 6e 79 2c 20 49 4f 5b 73 74 t):.....#.type:.(int,.Any,.IO[st
38760 72 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 0a 20 20 20 20 44 65 66 61 75 6c 74 20 r]).->.None.....""".....Default.
38780 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 67 65 6e 5f 6b 65 79 28 29 2e 0a 20 20 20 20 22 22 22 0a callback.for.gen_key()......""".
387a0 20 20 20 20 63 68 20 3d 20 5b 27 2e 27 2c 20 27 2b 27 2c 20 27 2a 27 2c 20 27 5c 6e 27 5d 0a 20 ....ch.=.['.',.'+',.'*',.'\n']..
387c0 20 20 20 6f 75 74 2e 77 72 69 74 65 28 63 68 5b 70 5d 29 0a 20 20 20 20 6f 75 74 2e 66 6c 75 73 ...out.write(ch[p]).....out.flus
387e0 68 28 29 0a 0a 0a 64 65 66 20 67 65 6e 5f 6b 65 79 28 62 69 74 73 2c 20 65 2c 20 63 61 6c 6c 62 h()...def.gen_key(bits,.e,.callb
38800 61 63 6b 3d 6b 65 79 67 65 6e 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 ack=keygen_callback):.....#.type
38820 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 52 53 41 0a 20 20 :.(int,.int,.Callable).->.RSA...
38840 20 20 22 22 22 0a 20 20 20 20 47 65 6e 65 72 61 74 65 20 61 6e 20 52 53 41 20 6b 65 79 20 70 61 ..""".....Generate.an.RSA.key.pa
38860 69 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 74 73 3a 20 4b 65 79 20 6c 65 6e 67 74 68 ir.......:param.bits:.Key.length
38880 2c 20 69 6e 20 62 69 74 73 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 65 3a 20 54 68 65 20 52 53 ,.in.bits.......:param.e:.The.RS
388a0 41 20 70 75 62 6c 69 63 20 65 78 70 6f 6e 65 6e 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 A.public.exponent.......:param.c
388c0 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 allback:.A.Python.callable.objec
388e0 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.that.is.invoked...............
38900 20 20 20 20 20 20 20 64 75 72 69 6e 67 20 6b 65 79 20 67 65 6e 65 72 61 74 69 6f 6e 3b 20 69 74 .......during.key.generation;.it
38920 73 20 75 73 75 61 6c 20 70 75 72 70 6f 73 65 20 69 73 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 s.usual.purpose.is.to...........
38940 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 20 76 69 73 75 61 6c 20 66 65 65 64 62 61 ...........provide.visual.feedba
38960 63 6b 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 20 69 73 0a 20 20 20 20 ck..The.default.callback.is.....
38980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 67 65 6e 5f 63 61 6c 6c 62 61 63 6b .................keygen_callback
389a0 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 .......:return:.M2Crypto.RSA.RSA
389c0 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 52 53 41 28 .object......""".....return.RSA(
389e0 6d 32 2e 72 73 61 5f 67 65 6e 65 72 61 74 65 5f 6b 65 79 28 62 69 74 73 2c 20 65 2c 20 63 61 6c m2.rsa_generate_key(bits,.e,.cal
38a00 6c 62 61 63 6b 29 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 28 66 69 6c 65 2c 20 lback),.1)...def.load_key(file,.
38a20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 callback=util.passphrase_callbac
38a40 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c k):.....#.type:.(AnyStr,.Callabl
38a60 65 29 20 2d 3e 20 52 53 41 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 52 53 e).->.RSA.....""".....Load.an.RS
38a80 41 20 6b 65 79 20 70 61 69 72 20 66 72 6f 6d 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 A.key.pair.from.file.......:para
38aa0 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 m.file:.Name.of.file.containing.
38ac0 52 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 RSA.public.key.in.PEM.format....
38ae0 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 41 20 50 79 74 68 6f 6e 20 63 61 6c ...:param.callback:.A.Python.cal
38b00 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 lable.object.that.is.invoked....
38b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 61 63 71 75 69 72 65 20 61 20 70 ..................to.acquire.a.p
38b40 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 assphrase.with.which.to.unlock.t
38b60 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 20 20 54 68 he......................key...Th
38b80 65 20 64 65 66 61 75 6c 74 20 69 73 20 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c e.default.is.util.passphrase_cal
38ba0 6c 62 61 63 6b 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 52 53 lback.......:return:.M2Crypto.RS
38bc0 41 2e 52 53 41 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 A.RSA.object......""".....with.B
38be0 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 IO.openfile(file).as.bio:.......
38c00 20 20 72 65 74 75 72 6e 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c 6c 62 ..return.load_key_bio(bio,.callb
38c20 61 63 6b 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 2c 20 63 61 6c ack)...def.load_key_bio(bio,.cal
38c40 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a lback=util.passphrase_callback):
38c60 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 43 61 6c 6c 61 62 6c 65 29 .....#.type:.(BIO.BIO,.Callable)
38c80 20 2d 3e 20 52 53 41 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 52 53 41 20 .->.RSA.....""".....Load.an.RSA.
38ca0 6b 65 79 20 70 61 69 72 20 66 72 6f 6d 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 key.pair.from.an.M2Crypto.BIO.BI
38cc0 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 O.object.......:param.bio:.M2Cry
38ce0 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 52 53 pto.BIO.BIO.object.containing.RS
38d00 41 20 6b 65 79 20 70 61 69 72 20 69 6e 20 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 A.key.pair.in.PEM...............
38d20 20 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 ..format.......:param.callback:.
38d40 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 73 A.Python.callable.object.that.is
38d60 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f .invoked......................to
38d80 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 68 .acquire.a.passphrase.with.which
38da0 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .to.unlock.the..................
38dc0 20 20 20 20 6b 65 79 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 75 74 69 6c 2e 70 61 ....key...The.default.is.util.pa
38de0 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a ssphrase_callback.......:return:
38e00 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 .M2Crypto.RSA.RSA.object......""
38e20 22 0a 20 20 20 20 72 73 61 20 3d 20 6d 32 2e 72 73 61 5f 72 65 61 64 5f 6b 65 79 28 62 69 6f 2e ".....rsa.=.m2.rsa_read_key(bio.
38e40 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 69 66 20 72 73 61 20 69 73 20 _ptr(),.callback).....if.rsa.is.
38e60 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 73 61 5f 65 72 72 6f 72 28 29 0a 20 20 20 20 72 65 None:.........rsa_error().....re
38e80 74 75 72 6e 20 52 53 41 28 72 73 61 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f turn.RSA(rsa,.1)...def.load_key_
38ea0 73 74 72 69 6e 67 28 73 74 72 69 6e 67 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 string(string,.callback=util.pas
38ec0 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 sphrase_callback):.....#.type:.(
38ee0 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 52 53 41 0a 20 20 20 20 22 22 22 AnyStr,.Callable).->.RSA....."""
38f00 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 52 53 41 20 6b 65 79 20 70 61 69 72 20 66 72 6f 6d 20 61 .....Load.an.RSA.key.pair.from.a
38f20 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 .string.......:param.string:.Str
38f40 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 52 53 41 20 6b 65 79 20 70 61 69 72 20 69 6e 20 50 ing.containing.RSA.key.pair.in.P
38f60 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a EM.format.......:param.callback:
38f80 20 41 20 50 79 74 68 6f 6e 20 63 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 .A.Python.callable.object.that.i
38fa0 73 20 69 6e 76 6f 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 s.invoked......................t
38fc0 6f 20 61 63 71 75 69 72 65 20 61 20 70 61 73 73 70 68 72 61 73 65 20 77 69 74 68 20 77 68 69 63 o.acquire.a.passphrase.with.whic
38fe0 68 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h.to.unlock.the.................
39000 20 20 20 20 20 6b 65 79 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 75 74 69 6c 2e 70 61 .....key..The.default.is.util.pa
39020 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a ssphrase_callback.......:return:
39040 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 .M2Crypto.RSA.RSA.object......""
39060 22 0a 20 20 20 20 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 73 74 72 ".....bio.=.BIO.MemoryBuffer(str
39080 69 6e 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 62 69 6f ing).....return.load_key_bio(bio
390a0 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 28 66 ,.callback)...def.load_pub_key(f
390c0 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 52 53 ile):.....#.type:.(AnyStr).->.RS
390e0 41 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 61 6e 20 52 53 41 20 70 75 A_pub.....""".....Load.an.RSA.pu
39100 62 6c 69 63 20 6b 65 79 20 66 72 6f 6d 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 blic.key.from.file.......:param.
39120 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 52 53 file:.Name.of.file.containing.RS
39140 41 20 70 75 62 6c 69 63 20 6b 65 79 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 A.public.key.in.PEM.format......
39160 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 6f .:return:.M2Crypto.RSA.RSA_pub.o
39180 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e bject......""".....with.BIO.open
391a0 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 file(file).as.bio:.........retur
391c0 6e 20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 29 0a 0a 0a 64 65 66 20 6c 6f n.load_pub_key_bio(bio)...def.lo
391e0 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a ad_pub_key_bio(bio):.....#.type:
39200 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 52 53 41 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 .(BIO.BIO).->.RSA_pub....."""...
39220 20 20 4c 6f 61 64 20 61 6e 20 52 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 66 72 6f 6d 20 61 6e ..Load.an.RSA.public.key.from.an
39240 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 3a .M2Crypto.BIO.BIO.object.......:
39260 70 61 72 61 6d 20 62 69 6f 3a 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6f 62 6a 65 param.bio:.M2Crypto.BIO.BIO.obje
39280 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 52 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 69 6e 20 ct.containing.RSA.public.key.in.
392a0 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 PEM.................format......
392c0 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 6f .:return:.M2Crypto.RSA.RSA_pub.o
392e0 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 73 61 20 3d 20 6d 32 2e 72 73 61 5f bject......""".....rsa.=.m2.rsa_
39300 72 65 61 64 5f 70 75 62 5f 6b 65 79 28 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 69 66 20 read_pub_key(bio._ptr()).....if.
39320 72 73 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 73 61 5f 65 72 72 6f 72 28 29 rsa.is.None:.........rsa_error()
39340 0a 20 20 20 20 72 65 74 75 72 6e 20 52 53 41 5f 70 75 62 28 72 73 61 2c 20 31 29 0a 0a 0a 64 65 .....return.RSA_pub(rsa,.1)...de
39360 66 20 6e 65 77 5f 70 75 62 5f 6b 65 79 28 65 5f 6e 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 f.new_pub_key(e_n):.....#.type:.
39380 28 54 75 70 6c 65 5b 62 79 74 65 73 2c 20 62 79 74 65 73 5d 29 20 2d 3e 20 52 53 41 5f 70 75 62 (Tuple[bytes,.bytes]).->.RSA_pub
393a0 0a 20 20 20 20 22 22 22 0a 20 20 20 20 49 6e 73 74 61 6e 74 69 61 74 65 20 61 6e 20 52 53 41 5f .....""".....Instantiate.an.RSA_
393c0 70 75 62 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 61 6e 20 28 65 2c 20 6e 29 20 74 75 70 6c 65 2e pub.object.from.an.(e,.n).tuple.
393e0 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 65 3a 20 54 68 65 20 52 53 41 20 70 75 62 6c 69 63 20 65 ......:param.e:.The.RSA.public.e
39400 78 70 6f 6e 65 6e 74 3b 20 69 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 69 6e 20 4f 70 65 6e 53 xponent;.it.is.a.string.in.OpenS
39420 53 4c 27 73 20 4d 50 49 4e 54 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 20 SL's.MPINT...............format.
39440 2d 20 34 2d 62 79 74 65 20 62 69 67 2d 65 6e 64 69 61 6e 20 62 69 74 2d 63 6f 75 6e 74 20 66 6f -.4-byte.big-endian.bit-count.fo
39460 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 72 llowed.by.the...............appr
39480 6f 70 72 69 61 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 2e 0a 0a 20 20 20 20 3a 70 61 opriate.number.of.bits.......:pa
394a0 72 61 6d 20 6e 3a 20 54 68 65 20 52 53 41 20 63 6f 6d 70 6f 73 69 74 65 20 6f 66 20 70 72 69 6d ram.n:.The.RSA.composite.of.prim
394c0 65 73 3b 20 69 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 69 6e 20 4f 70 65 6e 53 53 4c 27 73 0a es;.it.is.a.string.in.OpenSSL's.
394e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 50 49 4e 54 20 66 6f 72 6d 61 74 20 2d 20 34 2d 62 ..............MPINT.format.-.4-b
39500 79 74 65 20 62 69 67 2d 65 6e 64 69 61 6e 20 62 69 74 2d 63 6f 75 6e 74 20 66 6f 6c 6c 6f 77 65 yte.big-endian.bit-count.followe
39520 64 20 62 79 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 72 6f 70 72 69 61 d.by.the...............appropria
39540 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a te.number.of.bits.......:return:
39560 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 20 6f 62 6a 65 63 74 2e 0a 20 20 .M2Crypto.RSA.RSA_pub.object....
39580 20 20 22 22 22 0a 20 20 20 20 28 65 2c 20 6e 29 20 3d 20 65 5f 6e 0a 20 20 20 20 72 73 61 20 3d ..""".....(e,.n).=.e_n.....rsa.=
395a0 20 6d 32 2e 72 73 61 5f 6e 65 77 28 29 0a 20 20 20 20 6d 32 2e 72 73 61 5f 73 65 74 5f 65 6e 28 .m2.rsa_new().....m2.rsa_set_en(
395c0 72 73 61 2c 20 65 2c 20 6e 29 0a 20 20 20 20 72 65 74 75 72 6e 20 52 53 41 5f 70 75 62 28 72 73 rsa,.e,.n).....return.RSA_pub(rs
395e0 61 2c 20 31 29 0a 94 7d 94 28 8c 08 52 53 41 45 72 72 6f 72 94 6a 0d 02 00 00 4b 0e 4b 0f 87 94 a,.1)..}.(..RSAError.j....K.K...
39600 8c 0c 52 53 41 2e 5f 5f 69 6e 69 74 5f 5f 94 8c 03 64 65 66 94 4b 20 4b 27 87 94 8c 0b 52 53 41 ..RSA.__init__...def.K.K'....RSA
39620 2e 5f 5f 64 65 6c 5f 5f 94 6a 9c 22 00 00 4b 29 4b 2c 87 94 8c 0b 52 53 41 2e 5f 5f 6c 65 6e 5f .__del__.j."..K)K,....RSA.__len_
39640 5f 94 6a 9c 22 00 00 4b 2e 4b 30 87 94 8c 0f 52 53 41 2e 5f 5f 67 65 74 61 74 74 72 5f 5f 94 6a _.j."..K.K0....RSA.__getattr__.j
39660 9c 22 00 00 4b 32 4b 39 87 94 8c 07 52 53 41 2e 70 75 62 94 6a 9c 22 00 00 4b 3b 4b 3e 87 94 8c ."..K2K9....RSA.pub.j."..K;K>...
39680 12 52 53 41 2e 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 94 6a 9c 22 00 00 4b 40 4b 43 87 94 8c .RSA.public_encrypt.j."..K@KC...
396a0 12 52 53 41 2e 70 75 62 6c 69 63 5f 64 65 63 72 79 70 74 94 6a 9c 22 00 00 4b 45 4b 48 87 94 8c .RSA.public_decrypt.j."..KEKH...
396c0 13 52 53 41 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 9c 22 00 00 4b 4a 4b 4d 87 94 .RSA.private_encrypt.j."..KJKM..
396e0 8c 13 52 53 41 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 9c 22 00 00 4b 4f 4b 52 87 ..RSA.private_decrypt.j."..KOKR.
39700 94 8c 10 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 9c 22 00 00 4b 54 4b 6d 87 94 8c ...RSA.save_key_bio.j."..KTKm...
39720 0c 52 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 9c 22 00 00 4b 6f 4b 81 87 94 8c 0a 52 53 41 2e 61 .RSA.save_key.j."..KoK.....RSA.a
39740 73 5f 70 65 6d 94 6a 9c 22 00 00 4b 85 4b 8c 87 94 8c 14 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f s_pem.j."..K.K.....RSA.save_key_
39760 64 65 72 5f 62 69 6f 94 6a 9c 22 00 00 4b 8e 4b 95 87 94 8c 10 52 53 41 2e 73 61 76 65 5f 6b 65 der_bio.j."..K.K.....RSA.save_ke
39780 79 5f 64 65 72 94 6a 9c 22 00 00 4b 97 4b 9f 87 94 8c 14 52 53 41 2e 73 61 76 65 5f 70 75 62 5f y_der.j."..K.K.....RSA.save_pub_
397a0 6b 65 79 5f 62 69 6f 94 6a 9c 22 00 00 4b a1 4b a8 87 94 8c 10 52 53 41 2e 73 61 76 65 5f 70 75 key_bio.j."..K.K.....RSA.save_pu
397c0 62 5f 6b 65 79 94 6a 9c 22 00 00 4b aa 4b b2 87 94 8c 0d 52 53 41 2e 63 68 65 63 6b 5f 6b 65 79 b_key.j."..K.K.....RSA.check_key
397e0 94 6a 9c 22 00 00 4b b4 4b c0 87 94 8c 13 52 53 41 2e 73 69 67 6e 5f 72 73 61 73 73 61 5f 70 73 .j."..K.K.....RSA.sign_rsassa_ps
39800 73 94 6a 9c 22 00 00 4b c2 4b d8 87 94 8c 15 52 53 41 2e 76 65 72 69 66 79 5f 72 73 61 73 73 61 s.j."..K.K.....RSA.verify_rsassa
39820 5f 70 73 73 94 6a 9c 22 00 00 4b da 4b f3 87 94 8c 08 52 53 41 2e 73 69 67 6e 94 6a 9c 22 00 00 _pss.j."..K.K.....RSA.sign.j."..
39840 4b f5 4d 06 01 87 94 8c 0a 52 53 41 2e 76 65 72 69 66 79 94 6a 9c 22 00 00 4d 08 01 4d 1c 01 87 K.M......RSA.verify.j."..M..M...
39860 94 8c 03 52 53 41 94 6a 0d 02 00 00 4b 19 4d 1c 01 87 94 8c 13 52 53 41 5f 70 75 62 2e 5f 5f 73 ...RSA.j....K.M......RSA_pub.__s
39880 65 74 61 74 74 72 5f 5f 94 6a 9c 22 00 00 4d 25 01 4d 2a 01 87 94 8c 17 52 53 41 5f 70 75 62 2e etattr__.j."..M%.M*.....RSA_pub.
398a0 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 9c 22 00 00 4d 2c 01 4d 2e 01 87 94 8c 17 52 private_encrypt.j."..M,.M......R
398c0 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 9c 22 00 00 4d 30 01 4d SA_pub.private_decrypt.j."..M0.M
398e0 32 01 87 94 8c 10 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 6a 9c 22 00 00 4d 34 01 4d 2.....RSA_pub.save_key.j."..M4.M
39900 39 01 87 94 8c 14 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 9c 22 00 00 9.....RSA_pub.save_key_bio.j."..
39920 4d 3b 01 4d 40 01 87 94 8c 11 52 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 9c 22 00 M;.M@.....RSA_pub.check_key.j.".
39940 00 4d 46 01 4d 48 01 87 94 8c 07 52 53 41 5f 70 75 62 94 6a 0d 02 00 00 4d 1f 01 4d 48 01 87 94 .MF.MH.....RSA_pub.j....M..MH...
39960 8c 09 72 73 61 5f 65 72 72 6f 72 94 6a 9c 22 00 00 4d 4b 01 4d 4d 01 87 94 8c 0f 6b 65 79 67 65 ..rsa_error.j."..MK.MM.....keyge
39980 6e 5f 63 61 6c 6c 62 61 63 6b 94 6a 9c 22 00 00 4d 50 01 4d 57 01 87 94 8c 07 67 65 6e 5f 6b 65 n_callback.j."..MP.MW.....gen_ke
399a0 79 94 6a 9c 22 00 00 4d 5a 01 4d 6a 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 9c 22 00 00 4d y.j."..MZ.Mj.....load_key.j."..M
399c0 6d 01 4d 7b 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 9c 22 00 00 4d 7e 01 4d 8f m.M{.....load_key_bio.j."..M~.M.
399e0 01 87 94 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 9c 22 00 00 4d 92 01 4d a0 01 .....load_key_string.j."..M..M..
39a00 87 94 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 9c 22 00 00 4d a3 01 4d ad 01 87 94 8c 10 ....load_pub_key.j."..M..M......
39a20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 9c 22 00 00 4d b0 01 4d bd 01 87 94 8c 0b load_pub_key_bio.j."..M..M......
39a40 6e 65 77 5f 70 75 62 5f 6b 65 79 94 6a 9c 22 00 00 4d c0 01 4d d2 01 87 94 75 7d 94 28 8c 03 52 new_pub_key.j."..M..M....u}.(..R
39a60 53 41 94 6a 53 02 00 00 8c 0a 52 53 41 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 0d 52 53 41 2e SA.jS.....RSA.as_pem.jS.....RSA.
39a80 63 68 65 63 6b 5f 6b 65 79 94 6a 53 02 00 00 8c 13 52 53 41 2e 70 72 69 76 61 74 65 5f 64 65 63 check_key.jS.....RSA.private_dec
39aa0 72 79 70 74 94 6a 53 02 00 00 8c 13 52 53 41 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 rypt.jS.....RSA.private_encrypt.
39ac0 6a 53 02 00 00 8c 07 52 53 41 2e 70 75 62 94 6a 53 02 00 00 8c 12 52 53 41 2e 70 75 62 6c 69 63 jS.....RSA.pub.jS.....RSA.public
39ae0 5f 64 65 63 72 79 70 74 94 6a 53 02 00 00 8c 12 52 53 41 2e 70 75 62 6c 69 63 5f 65 6e 63 72 79 _decrypt.jS.....RSA.public_encry
39b00 70 74 94 6a 53 02 00 00 8c 0c 52 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 10 52 53 pt.jS.....RSA.save_key.jS.....RS
39b20 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 10 52 53 41 2e 73 61 76 65 5f 6b A.save_key_bio.jS.....RSA.save_k
39b40 65 79 5f 64 65 72 94 6a 53 02 00 00 8c 14 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 ey_der.jS.....RSA.save_key_der_b
39b60 69 6f 94 6a 53 02 00 00 8c 10 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 io.jS.....RSA.save_pub_key.jS...
39b80 8c 14 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 08 52 53 ..RSA.save_pub_key_bio.jS.....RS
39ba0 41 2e 73 69 67 6e 94 6a 53 02 00 00 8c 13 52 53 41 2e 73 69 67 6e 5f 72 73 61 73 73 61 5f 70 73 A.sign.jS.....RSA.sign_rsassa_ps
39bc0 73 94 6a 53 02 00 00 8c 0a 52 53 41 2e 76 65 72 69 66 79 94 6a 53 02 00 00 8c 15 52 53 41 2e 76 s.jS.....RSA.verify.jS.....RSA.v
39be0 65 72 69 66 79 5f 72 73 61 73 73 61 5f 70 73 73 94 6a 53 02 00 00 6a a5 1d 00 00 6a 53 02 00 00 erify_rsassa_pss.jS...j....jS...
39c00 8c 07 52 53 41 5f 70 75 62 94 6a 53 02 00 00 8c 11 52 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b ..RSA_pub.jS.....RSA_pub.check_k
39c20 65 79 94 6a 53 02 00 00 8c 17 52 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 ey.jS.....RSA_pub.private_decryp
39c40 74 94 6a 53 02 00 00 8c 17 52 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 t.jS.....RSA_pub.private_encrypt
39c60 94 6a 53 02 00 00 8c 10 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 6a 53 02 00 00 8c 14 .jS.....RSA_pub.save_key.jS.....
39c80 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 07 67 65 6e 5f RSA_pub.save_key_bio.jS.....gen_
39ca0 6b 65 79 94 6a 53 02 00 00 8c 0f 6b 65 79 67 65 6e 5f 63 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 key.jS.....keygen_callback.jS...
39cc0 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a ..load_key.jS.....load_key_bio.j
39ce0 53 02 00 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 0c 6c 6f 61 S.....load_key_string.jS.....loa
39d00 64 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 d_pub_key.jS.....load_pub_key_bi
39d20 6f 94 6a 53 02 00 00 8c 0b 6e 65 77 5f 70 75 62 5f 6b 65 79 94 6a 53 02 00 00 8c 09 72 73 61 5f o.jS.....new_pub_key.jS.....rsa_
39d40 65 72 72 6f 72 94 6a 53 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 53 41 94 74 94 8c 0d 4d error.jS...u..M2Crypto.RSA.t...M
39d60 32 43 72 79 70 74 6f 2e 52 61 6e 64 94 28 58 78 11 00 00 22 22 22 4d 32 43 72 79 70 74 6f 20 77 2Crypto.Rand.(Xx..."""M2Crypto.w
39d80 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 50 52 4e 47 2e 20 52 65 71 75 69 72 65 rapper.for.OpenSSL.PRNG..Require
39da0 73 20 4f 70 65 6e 53 53 4c 20 30 2e 39 2e 35 20 61 6e 64 20 61 62 6f 76 65 2e 0a 0a 43 6f 70 79 s.OpenSSL.0.9.5.and.above...Copy
39dc0 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f right.(c).1999-2003.Ng.Pheng.Sio
39de0 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 43 6f 70 79 72 69 67 ng..All.rights.reserved..Copyrig
39e00 68 74 20 28 63 29 20 32 30 31 34 2d 32 30 31 37 20 4d 61 74 65 6a 20 43 65 70 6c 2e 20 41 6c 6c ht.(c).2014-2017.Matej.Cepl..All
39e20 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 53 65 65 20 4c 49 43 45 4e 43 45 20 66 .rights.reserved...See.LICENCE.f
39e40 6f 72 20 74 68 65 20 6c 69 63 65 6e 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 22 22 22 0a or.the.license.information..""".
39e60 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f from.__future__.import.absolute_
39e80 69 6d 70 6f 72 74 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 6d 32 2c import..from.M2Crypto.import.m2,
39ea0 20 70 79 32 37 70 6c 75 73 2c 20 73 69 78 0a 69 66 20 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 .py27plus,.six.if.py27plus:.....
39ec0 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 54 75 70 6c 65 from.typing.import.AnyStr,.Tuple
39ee0 20 20 23 20 6e 6f 71 61 0a 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 72 61 6e 64 5f 73 65 65 64 ..#.noqa...__all__.=.['rand_seed
39f00 27 2c 20 27 72 61 6e 64 5f 61 64 64 27 2c 20 27 6c 6f 61 64 5f 66 69 6c 65 27 2c 20 27 73 61 76 ',.'rand_add',.'load_file',.'sav
39f20 65 5f 66 69 6c 65 27 2c 20 27 72 61 6e 64 5f 62 79 74 65 73 27 2c 0a 20 20 20 20 20 20 20 20 20 e_file',.'rand_bytes',..........
39f40 20 20 27 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 27 2c 20 27 72 61 6e 64 5f 66 69 6c ..'rand_pseudo_bytes',.'rand_fil
39f60 65 5f 6e 61 6d 65 27 2c 20 27 72 61 6e 64 5f 73 74 61 74 75 73 27 5d 0a 0a 0a 63 6c 61 73 73 20 e_name',.'rand_status']...class.
39f80 52 61 6e 64 45 72 72 6f 72 28 56 61 6c 75 65 45 72 72 6f 72 29 3a 0a 20 20 20 20 70 61 73 73 0a RandError(ValueError):.....pass.
39fa0 0a 6d 32 2e 72 61 6e 64 5f 69 6e 69 74 28 52 61 6e 64 45 72 72 6f 72 29 0a 0a 0a 64 65 66 20 72 .m2.rand_init(RandError)...def.r
39fc0 61 6e 64 5f 61 64 64 28 62 6c 6f 62 2c 20 65 6e 74 72 6f 70 79 29 3a 0a 20 20 20 20 23 20 74 79 and_add(blob,.entropy):.....#.ty
39fe0 70 65 3a 20 28 62 79 74 65 73 2c 20 66 6c 6f 61 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 pe:.(bytes,.float).->.None....."
3a000 22 22 0a 20 20 20 20 4d 69 78 65 73 20 62 6c 6f 62 20 69 6e 74 6f 20 74 68 65 20 50 52 4e 47 20 "".....Mixes.blob.into.the.PRNG.
3a020 73 74 61 74 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 6c 6f 62 3a 20 61 64 64 65 64 20 64 state.......:param.blob:.added.d
3a040 61 74 61 0a 20 20 20 20 3a 70 61 72 61 6d 20 65 6e 74 72 6f 70 79 3a 20 28 74 68 65 20 6c 6f 77 ata.....:param.entropy:.(the.low
3a060 65 72 20 62 6f 75 6e 64 20 6f 66 29 20 61 6e 20 65 73 74 69 6d 61 74 65 20 6f 66 20 68 6f 77 20 er.bound.of).an.estimate.of.how.
3a080 6d 75 63 68 20 72 61 6e 64 6f 6d 6e 65 73 73 0a 20 20 20 20 20 20 20 20 69 73 20 63 6f 6e 74 61 much.randomness.........is.conta
3a0a0 69 6e 65 64 20 69 6e 20 62 6c 6f 62 2c 20 6d 65 61 73 75 72 65 64 20 69 6e 20 62 79 74 65 73 2e ined.in.blob,.measured.in.bytes.
3a0c0 0a 0a 20 20 20 20 54 68 75 73 2c 20 69 66 20 74 68 65 20 64 61 74 61 20 61 74 20 62 75 66 20 61 ......Thus,.if.the.data.at.buf.a
3a0e0 72 65 20 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 74 6f 20 61 6e 20 61 64 76 65 72 73 61 72 79 re.unpredictable.to.an.adversary
3a100 2c 20 74 68 69 73 0a 20 20 20 20 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 75 6e 63 65 72 74 61 ,.this.....increases.the.uncerta
3a120 69 6e 74 79 20 61 62 6f 75 74 20 74 68 65 20 73 74 61 74 65 20 61 6e 64 20 6d 61 6b 65 73 20 74 inty.about.the.state.and.makes.t
3a140 68 65 20 50 52 4e 47 20 6f 75 74 70 75 74 20 6c 65 73 73 0a 20 20 20 20 70 72 65 64 69 63 74 61 he.PRNG.output.less.....predicta
3a160 62 6c 65 2e 20 53 75 69 74 61 62 6c 65 20 69 6e 70 75 74 20 63 6f 6d 65 73 20 66 72 6f 6d 20 75 ble..Suitable.input.comes.from.u
3a180 73 65 72 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 28 72 61 6e 64 6f 6d 20 6b 65 79 0a 20 20 20 20 ser.interaction.(random.key.....
3a1a0 70 72 65 73 73 65 73 2c 20 6d 6f 75 73 65 20 6d 6f 76 65 6d 65 6e 74 73 29 20 61 6e 64 20 63 65 presses,.mouse.movements).and.ce
3a1c0 72 74 61 69 6e 20 68 61 72 64 77 61 72 65 20 65 76 65 6e 74 73 2e 0a 0a 20 20 20 20 44 65 74 61 rtain.hardware.events.......Deta
3a1e0 69 6c 73 20 61 62 6f 75 74 20 73 6f 75 72 63 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e 65 73 73 20 ils.about.sources.of.randomness.
3a200 61 6e 64 20 68 6f 77 20 74 6f 20 65 73 74 69 6d 61 74 65 20 74 68 65 69 72 20 65 6e 74 72 6f 70 and.how.to.estimate.their.entrop
3a220 79 0a 20 20 20 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 6c 69 74 65 72 61 y.....can.be.found.in.the.litera
3a240 74 75 72 65 2c 20 65 2e 67 2e 20 52 46 43 20 31 37 35 30 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 ture,.e.g..RFC.1750......"""....
3a260 20 6d 32 2e 72 61 6e 64 5f 61 64 64 28 62 6c 6f 62 2c 20 65 6e 74 72 6f 70 79 29 20 20 23 20 70 .m2.rand_add(blob,.entropy)..#.p
3a280 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 0a 0a 64 65 66 20 72 ylint:.disable=no-member...def.r
3a2a0 61 6e 64 5f 73 65 65 64 28 73 65 65 64 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 and_seed(seed):.....#.type:.(byt
3a2c0 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 0a 20 20 20 20 45 71 75 69 76 61 6c 65 es).->.None.....""".....Equivale
3a2e0 6e 74 20 74 6f 20 72 61 6e 64 5f 61 64 64 28 29 20 77 68 65 6e 20 6c 65 6e 28 73 65 65 64 29 20 nt.to.rand_add().when.len(seed).
3a300 3d 3d 20 65 6e 74 72 6f 70 79 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 65 65 64 3a 20 61 64 ==.entropy.......:param.seed:.ad
3a320 64 65 64 20 64 61 74 61 20 28 73 65 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 61 74 20 72 61 6e ded.data.(see.description.at.ran
3a340 64 5f 61 64 64 29 0a 20 20 20 20 22 22 22 0a 20 20 20 20 6d 32 2e 72 61 6e 64 5f 73 65 65 64 28 d_add).....""".....m2.rand_seed(
3a360 73 65 65 64 29 20 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 seed)..#.pylint:.disable=no-memb
3a380 65 72 0a 0a 0a 64 65 66 20 72 61 6e 64 5f 73 74 61 74 75 73 28 29 3a 0a 20 20 20 20 23 20 74 79 er...def.rand_status():.....#.ty
3a3a0 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 22 22 22 0a 20 20 20 20 43 68 65 63 6b 20 pe:.().->.int.....""".....Check.
3a3c0 77 68 65 74 68 65 72 20 74 68 65 72 65 20 69 73 20 65 6e 6f 75 67 68 20 65 6e 74 72 6f 70 79 20 whether.there.is.enough.entropy.
3a3e0 69 6e 20 50 52 4e 47 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 69 66 20 74 68 65 20 in.PRNG.......:return:.1.if.the.
3a400 50 52 4e 47 20 68 61 73 20 62 65 65 6e 20 73 65 65 64 65 64 20 77 69 74 68 20 65 6e 6f 75 67 68 PRNG.has.been.seeded.with.enough
3a420 0a 20 20 20 20 20 20 20 64 61 74 61 2c 20 30 20 6f 74 68 65 72 77 69 73 65 2e 0a 20 20 20 20 22 ........data,.0.otherwise......"
3a440 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 61 6e 64 5f 73 74 61 74 75 73 28 29 20 20 "".....return.m2.rand_status()..
3a460 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 0a 0a 64 65 #.pylint:.disable=no-member...de
3a480 66 20 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 f.rand_file_name():.....#.type:.
3a4a0 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 22 22 22 0a 20 20 20 20 47 65 6e 65 72 61 74 65 20 61 ().->.str.....""".....Generate.a
3a4c0 20 64 65 66 61 75 6c 74 20 70 61 74 68 20 66 6f 72 20 74 68 65 20 72 61 6e 64 6f 6d 20 73 65 65 .default.path.for.the.random.see
3a4e0 64 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 73 74 72 69 6e 67 20 77 69 74 d.file.......:return:.string.wit
3a500 68 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 2e 0a 20 20 20 20 20 20 20 54 68 65 20 73 65 65 64 20 h.the.filename.........The.seed.
3a520 66 69 6c 65 20 69 73 20 24 52 41 4e 44 46 49 4c 45 20 69 66 20 74 68 61 74 20 65 6e 76 69 72 6f file.is.$RANDFILE.if.that.enviro
3a540 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0a 20 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 24 48 nment.variable........is.set,.$H
3a560 4f 4d 45 2f 2e 72 6e 64 20 6f 74 68 65 72 77 69 73 65 2e 20 49 66 20 24 48 4f 4d 45 20 69 73 20 OME/.rnd.otherwise..If.$HOME.is.
3a580 6e 6f 74 20 73 65 74 20 65 69 74 68 65 72 2c 0a 20 20 20 20 20 20 20 61 6e 20 65 72 72 6f 72 20 not.set.either,........an.error.
3a5a0 6f 63 63 75 72 73 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 occurs......""".....return.six.e
3a5c0 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 28 29 29 20 nsure_text(m2.rand_file_name()).
3a5e0 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 0a 0a 64 .#.pylint:.disable=no-member...d
3a600 65 66 20 6c 6f 61 64 5f 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c 20 6d 61 78 5f 62 79 74 65 73 ef.load_file(filename,.max_bytes
3a620 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 ):.....#.type:.(AnyStr,.int).->.
3a640 69 6e 74 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 65 61 64 20 61 20 6e 75 6d 62 65 72 20 6f 66 int.....""".....Read.a.number.of
3a660 20 62 79 74 65 73 20 66 72 6f 6d 20 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 61 6e 64 20 61 64 .bytes.from.file.filename.and.ad
3a680 64 73 20 74 68 65 6d 20 74 6f 20 74 68 65 20 50 52 4e 47 2e 0a 0a 20 20 20 20 49 66 20 6d 61 78 ds.them.to.the.PRNG.......If.max
3a6a0 5f 62 79 74 65 73 20 69 73 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 2c 20 75 70 20 74 6f 20 74 6f _bytes.is.non-negative,.up.to.to
3a6c0 20 6d 61 78 5f 62 79 74 65 73 20 61 72 65 20 72 65 61 64 3b 20 73 74 61 72 74 69 6e 67 20 77 69 .max_bytes.are.read;.starting.wi
3a6e0 74 68 0a 20 20 20 20 4f 70 65 6e 53 53 4c 20 30 2e 39 2e 35 2c 20 69 66 20 6d 61 78 5f 62 79 74 th.....OpenSSL.0.9.5,.if.max_byt
3a700 65 73 20 69 73 20 2d 31 2c 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 66 69 6c 65 20 69 73 20 72 es.is.-1,.the.complete.file.is.r
3a720 65 61 64 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 0a 20 20 20 20 3a ead.......:param.filename:.....:
3a740 70 61 72 61 6d 20 6d 61 78 5f 62 79 74 65 73 3a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 68 param.max_bytes:.....:return:.th
3a760 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 72 65 61 64 2e 0a 20 20 20 20 22 22 22 0a e.number.of.bytes.read......""".
3a780 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 61 6e 64 5f 6c 6f 61 64 5f 66 69 6c 65 28 73 69 78 ....return.m2.rand_load_file(six
3a7a0 2e 65 6e 73 75 72 65 5f 73 74 72 28 66 69 6c 65 6e 61 6d 65 29 2c 20 6d 61 78 5f 62 79 74 65 73 .ensure_str(filename),.max_bytes
3a7c0 29 20 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 0a )..#.pylint:.disable=no-member..
3a7e0 0a 64 65 66 20 73 61 76 65 5f 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 29 3a 0a 20 20 20 20 23 20 .def.save_file(filename):.....#.
3a800 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 22 22 22 0a 20 20 type:.(AnyStr).->.int....."""...
3a820 20 20 57 72 69 74 65 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 72 61 6e 64 6f 6d 20 62 79 74 65 73 ..Write.a.number.of.random.bytes
3a840 20 28 63 75 72 72 65 6e 74 6c 79 20 31 30 32 34 29 20 74 6f 20 66 69 6c 65 2e 0a 0a 20 20 20 20 .(currently.1024).to.file.......
3a860 54 68 65 20 66 69 6c 65 20 74 68 65 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 69 6e 69 The.file.then.can.be.used.to.ini
3a880 74 69 61 6c 69 7a 65 20 74 68 65 20 50 52 4e 47 20 62 79 20 63 61 6c 6c 69 6e 67 20 6c 6f 61 64 tialize.the.PRNG.by.calling.load
3a8a0 5f 66 69 6c 65 28 29 20 69 6e 0a 20 20 20 20 61 20 6c 61 74 65 72 20 73 65 73 73 69 6f 6e 2e 0a _file().in.....a.later.session..
3a8c0 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 0a 20 20 20 20 3a 72 65 74 75 72 .....:param.filename:.....:retur
3a8e0 6e 3a 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 77 n:.returns.the.number.of.bytes.w
3a900 72 69 74 74 65 6e 2c 20 61 6e 64 20 2d 31 20 69 66 20 74 68 65 20 62 79 74 65 73 0a 20 20 20 20 ritten,.and.-1.if.the.bytes.....
3a920 20 20 20 20 20 77 72 69 74 74 65 6e 20 77 65 72 65 20 67 65 6e 65 72 61 74 65 64 20 77 69 74 68 .....written.were.generated.with
3a940 6f 75 74 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 65 65 64 2e 0a 20 20 20 20 22 22 22 0a 20 20 out.appropriate.seed......"""...
3a960 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 61 6e 64 5f 73 61 76 65 5f 66 69 6c 65 28 66 69 6c 65 6e ..return.m2.rand_save_file(filen
3a980 61 6d 65 29 20 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 ame)..#.pylint:.disable=no-membe
3a9a0 72 0a 0a 0a 64 65 66 20 72 61 6e 64 5f 62 79 74 65 73 28 6e 75 6d 29 3a 0a 20 20 20 20 23 20 74 r...def.rand_bytes(num):.....#.t
3a9c0 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 22 22 22 0a 20 20 20 20 ype:.(int).->.bytes.....""".....
3a9e0 52 65 74 75 72 6e 20 6e 20 63 72 79 70 74 6f 67 72 61 70 68 69 63 61 6c 6c 79 20 73 74 72 6f 6e Return.n.cryptographically.stron
3aa00 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 62 79 74 65 73 2e 0a 0a 20 20 20 20 41 6e 20 65 g.pseudo-random.bytes.......An.e
3aa20 72 72 6f 72 20 6f 63 63 75 72 73 20 69 66 20 74 68 65 20 50 52 4e 47 20 68 61 73 20 6e 6f 74 20 rror.occurs.if.the.PRNG.has.not.
3aa40 62 65 65 6e 20 73 65 65 64 65 64 20 77 69 74 68 20 65 6e 6f 75 67 68 20 72 61 6e 64 6f 6d 6e 65 been.seeded.with.enough.randomne
3aa60 73 73 0a 20 20 20 20 74 6f 20 65 6e 73 75 72 65 20 61 6e 20 75 6e 70 72 65 64 69 63 74 61 62 6c ss.....to.ensure.an.unpredictabl
3aa80 65 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 6e 75 6d e.byte.sequence.......:param.num
3aaa0 3a 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 :.number.of.bytes.to.be.returned
3aac0 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 72 61 6e 64 6f 6d 20 62 79 74 65 73 0a 20 20 20 20 22 .....:return:.random.bytes....."
3aae0 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 61 6e 64 5f 62 79 74 65 73 28 6e 75 6d 29 "".....return.m2.rand_bytes(num)
3ab00 20 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 0a 0a ..#.pylint:.disable=no-member...
3ab20 64 65 66 20 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 28 6e 75 6d 29 3a 0a 20 20 20 20 def.rand_pseudo_bytes(num):.....
3ab40 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 54 75 70 6c 65 5b 62 79 74 65 73 2c 20 69 6e #.type:.(int).->.Tuple[bytes,.in
3ab60 74 5d 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 65 74 75 72 6e 20 6e 75 6d 20 70 73 65 75 64 6f t].....""".....Return.num.pseudo
3ab80 2d 72 61 6e 64 6f 6d 20 62 79 74 65 73 20 69 6e 74 6f 20 62 75 66 2e 0a 0a 20 20 20 20 50 73 65 -random.bytes.into.buf.......Pse
3aba0 75 64 6f 2d 72 61 6e 64 6f 6d 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 73 20 67 65 6e 65 72 61 udo-random.byte.sequences.genera
3abc0 74 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 75 6e 69 71 75 ted.by.this.method.will.be.uniqu
3abe0 65 0a 20 20 20 20 69 66 20 74 68 65 79 20 61 72 65 20 6f 66 20 73 75 66 66 69 63 69 65 6e 74 20 e.....if.they.are.of.sufficient.
3ac00 6c 65 6e 67 74 68 2c 20 62 75 74 20 61 72 65 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 0a length,.but.are.not.necessarily.
3ac20 20 20 20 20 75 6e 70 72 65 64 69 63 74 61 62 6c 65 2e 20 54 68 65 79 20 63 61 6e 20 62 65 20 75 ....unpredictable..They.can.be.u
3ac40 73 65 64 20 66 6f 72 20 6e 6f 6e 2d 63 72 79 70 74 6f 67 72 61 70 68 69 63 20 70 75 72 70 6f 73 sed.for.non-cryptographic.purpos
3ac60 65 73 20 61 6e 64 20 66 6f 72 0a 20 20 20 20 63 65 72 74 61 69 6e 20 70 75 72 70 6f 73 65 73 20 es.and.for.....certain.purposes.
3ac80 69 6e 20 63 72 79 70 74 6f 67 72 61 70 68 69 63 20 70 72 6f 74 6f 63 6f 6c 73 2c 20 62 75 74 20 in.cryptographic.protocols,.but.
3aca0 75 73 75 61 6c 6c 79 20 6e 6f 74 20 66 6f 72 20 6b 65 79 0a 20 20 20 20 67 65 6e 65 72 61 74 69 usually.not.for.key.....generati
3acc0 6f 6e 20 65 74 63 2e 0a 0a 20 20 20 20 4f 75 74 70 75 74 20 6f 66 20 74 68 65 20 66 75 6e 63 74 on.etc.......Output.of.the.funct
3ace0 69 6f 6e 20 69 73 20 6d 69 78 65 64 20 69 6e 74 6f 20 74 68 65 20 65 6e 74 72 6f 70 79 20 70 6f ion.is.mixed.into.the.entropy.po
3ad00 6f 6c 20 62 65 66 6f 72 65 0a 20 20 20 20 72 65 74 72 69 65 76 69 6e 67 20 74 68 65 20 6e 65 77 ol.before.....retrieving.the.new
3ad20 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 62 79 74 65 73 20 75 6e 6c 65 73 73 20 64 69 73 61 .pseudo-random.bytes.unless.disa
3ad40 62 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 0a 20 20 20 20 74 69 6d 65 20 28 73 65 65 20 46 41 bled.at.compile.....time.(see.FA
3ad60 51 29 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 6e 75 6d 3a 20 6e 75 6d 62 65 72 20 6f 66 20 62 Q).......:param.num:.number.of.b
3ad80 79 74 65 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a ytes.to.be.returned.....:return:
3ada0 20 72 61 6e 64 6f 6d 20 62 79 74 65 73 0a 20 20 20 20 22 22 22 0a 20 20 20 20 69 6d 70 6f 72 74 .random.bytes.....""".....import
3adc0 20 77 61 72 6e 69 6e 67 73 0a 20 20 20 20 69 66 20 6d 32 2e 4f 50 45 4e 53 53 4c 5f 56 45 52 53 .warnings.....if.m2.OPENSSL_VERS
3ade0 49 4f 4e 5f 4e 55 4d 42 45 52 20 3e 3d 20 30 78 31 30 31 30 30 30 30 30 3a 0a 20 20 20 20 20 20 ION_NUMBER.>=.0x10100000:.......
3ae00 20 20 77 61 72 6e 69 6e 67 73 2e 77 61 72 6e 28 27 54 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 ..warnings.warn('The.underlying.
3ae20 4f 70 65 6e 53 53 4c 20 6d 65 74 68 6f 64 20 68 61 73 20 62 65 65 6e 20 27 20 2b 0a 20 20 20 20 OpenSSL.method.has.been.'.+.....
3ae40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 70 72 65 63 61 74 65 64 2e 20 55 ..................'deprecated..U
3ae60 73 65 20 52 61 6e 64 2e 72 61 6e 64 5f 62 79 74 65 73 20 69 6e 73 74 65 61 64 2e 27 2c 0a 20 20 se.Rand.rand_bytes.instead.',...
3ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 70 72 65 63 61 74 69 6f 6e 57 ....................DeprecationW
3aea0 61 72 6e 69 6e 67 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 72 61 6e 64 5f 70 73 65 75 arning)......return.m2.rand_pseu
3aec0 64 6f 5f 62 79 74 65 73 28 6e 75 6d 29 20 20 23 20 70 79 6c 69 6e 74 3a 20 64 69 73 61 62 6c 65 do_bytes(num)..#.pylint:.disable
3aee0 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 94 7d 94 28 8c 09 52 61 6e 64 45 72 72 6f 72 94 6a 7d 1f 00 00 =no-member..}.(..RandError.j}...
3af00 4b 13 4b 14 87 94 8c 08 72 61 6e 64 5f 61 64 64 94 6a 74 1f 00 00 4b 19 4b 2a 87 94 8c 09 72 61 K.K.....rand_add.jt...K.K*....ra
3af20 6e 64 5f 73 65 65 64 94 6a 74 1f 00 00 4b 2d 4b 34 87 94 8c 0b 72 61 6e 64 5f 73 74 61 74 75 73 nd_seed.jt...K-K4....rand_status
3af40 94 6a 74 1f 00 00 4b 37 4b 3f 87 94 8c 0e 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 94 6a 74 1f .jt...K7K?....rand_file_name.jt.
3af60 00 00 4b 42 4b 4c 87 94 8c 09 6c 6f 61 64 5f 66 69 6c 65 94 6a 74 1f 00 00 4b 4f 4b 5b 87 94 8c ..KBKL....load_file.jt...KOK[...
3af80 09 73 61 76 65 5f 66 69 6c 65 94 6a 74 1f 00 00 4b 5e 4b 6a 87 94 8c 0a 72 61 6e 64 5f 62 79 74 .save_file.jt...K^Kj....rand_byt
3afa0 65 73 94 6a 74 1f 00 00 4b 6d 4b 78 87 94 8c 11 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 es.jt...KmKx....rand_pseudo_byte
3afc0 73 94 6a 74 1f 00 00 4b 7b 4b 93 87 94 75 7d 94 28 8c 09 72 61 6e 64 5f 73 65 65 64 94 6a 53 02 s.jt...K{K...u}.(..rand_seed.jS.
3afe0 00 00 8c 08 72 61 6e 64 5f 61 64 64 94 6a 53 02 00 00 8c 09 6c 6f 61 64 5f 66 69 6c 65 94 6a 53 ....rand_add.jS.....load_file.jS
3b000 02 00 00 8c 09 73 61 76 65 5f 66 69 6c 65 94 6a 53 02 00 00 8c 0a 72 61 6e 64 5f 62 79 74 65 73 .....save_file.jS.....rand_bytes
3b020 94 6a 53 02 00 00 8c 11 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 94 6a 53 02 00 00 8c .jS.....rand_pseudo_bytes.jS....
3b040 0e 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 0b 72 61 6e 64 5f 73 74 61 74 .rand_file_name.jS.....rand_stat
3b060 75 73 94 6a 53 02 00 00 75 8c 0d 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 94 74 94 8c 0e 4d 32 43 us.jS...u..M2Crypto.Rand.t...M2C
3b080 72 79 70 74 6f 2e 53 4d 49 4d 45 94 28 58 1a 23 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f rypto.SMIME.(X.#..from.__future_
3b0a0 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 _.import.absolute_import.."""M2C
3b0c0 72 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 53 2f 4d 49 4d 45 rypto.wrapper.for.OpenSSL.S/MIME
3b0e0 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e .API...Copyright.(c).1999-2003.N
3b100 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 g.Pheng.Siong..All.rights.reserv
3b120 65 64 2e 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 42 49 4f ed."""..from.M2Crypto.import.BIO
3b140 2c 20 45 56 50 2c 20 45 72 72 2c 20 58 35 30 39 2c 20 6d 32 2c 20 75 74 69 6c 0a 69 66 20 75 74 ,.EVP,.Err,.X509,.m2,.util.if.ut
3b160 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 il.py27plus:.....from.typing.imp
3b180 6f 72 74 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 ort.AnyStr,.Callable,.Optional..
3b1a0 23 20 6e 6f 71 61 0a 0a 50 4b 43 53 37 5f 54 45 58 54 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 54 45 #.noqa..PKCS7_TEXT.=.m2.PKCS7_TE
3b1c0 58 54 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 43 45 52 54 53 20 3d 20 XT..#.type:.int.PKCS7_NOCERTS.=.
3b1e0 6d 32 2e 50 4b 43 53 37 5f 4e 4f 43 45 52 54 53 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b m2.PKCS7_NOCERTS..#.type:.int.PK
3b200 43 53 37 5f 4e 4f 53 49 47 53 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f 53 49 47 53 20 20 23 20 CS7_NOSIGS.=.m2.PKCS7_NOSIGS..#.
3b220 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 43 48 41 49 4e 20 3d 20 6d 32 2e 50 4b 43 type:.int.PKCS7_NOCHAIN.=.m2.PKC
3b240 53 37 5f 4e 4f 43 48 41 49 4e 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f S7_NOCHAIN..#.type:.int.PKCS7_NO
3b260 49 4e 54 45 52 4e 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f 49 4e 54 45 52 4e 20 20 23 20 74 79 INTERN.=.m2.PKCS7_NOINTERN..#.ty
3b280 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 56 45 52 49 46 59 20 3d 20 6d 32 2e 50 4b 43 53 pe:.int.PKCS7_NOVERIFY.=.m2.PKCS
3b2a0 37 5f 4e 4f 56 45 52 49 46 59 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 44 45 7_NOVERIFY..#.type:.int.PKCS7_DE
3b2c0 54 41 43 48 45 44 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 44 45 54 41 43 48 45 44 20 20 23 20 74 79 TACHED.=.m2.PKCS7_DETACHED..#.ty
3b2e0 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 42 49 4e 41 52 59 20 3d 20 6d 32 2e 50 4b 43 53 37 5f pe:.int.PKCS7_BINARY.=.m2.PKCS7_
3b300 42 49 4e 41 52 59 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 41 54 54 52 BINARY..#.type:.int.PKCS7_NOATTR
3b320 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f 41 54 54 52 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a .=.m2.PKCS7_NOATTR..#.type:.int.
3b340 0a 50 4b 43 53 37 5f 53 49 47 4e 45 44 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 53 49 47 4e 45 44 20 .PKCS7_SIGNED.=.m2.PKCS7_SIGNED.
3b360 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 45 4e 56 45 4c 4f 50 45 44 20 3d 20 6d .#.type:.int.PKCS7_ENVELOPED.=.m
3b380 32 2e 50 4b 43 53 37 5f 45 4e 56 45 4c 4f 50 45 44 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 2.PKCS7_ENVELOPED..#.type:.int.P
3b3a0 4b 43 53 37 5f 53 49 47 4e 45 44 5f 45 4e 56 45 4c 4f 50 45 44 20 3d 20 6d 32 2e 50 4b 43 53 37 KCS7_SIGNED_ENVELOPED.=.m2.PKCS7
3b3c0 5f 53 49 47 4e 45 44 5f 45 4e 56 45 4c 4f 50 45 44 20 20 23 20 44 65 70 72 65 63 61 74 65 64 0a _SIGNED_ENVELOPED..#.Deprecated.
3b3e0 50 4b 43 53 37 5f 44 41 54 41 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 44 41 54 41 20 20 23 20 74 79 PKCS7_DATA.=.m2.PKCS7_DATA..#.ty
3b400 70 65 3a 20 69 6e 74 0a 0a 0a 63 6c 61 73 73 20 50 4b 43 53 37 5f 45 72 72 6f 72 28 45 78 63 65 pe:.int...class.PKCS7_Error(Exce
3b420 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 70 6b 63 73 37 5f 69 6e 69 74 28 ption):.....pass..m2.pkcs7_init(
3b440 50 4b 43 53 37 5f 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 50 4b 43 53 37 28 6f 62 6a 65 63 PKCS7_Error)...class.PKCS7(objec
3b460 74 29 3a 0a 0a 20 20 20 20 6d 32 5f 70 6b 63 73 37 5f 66 72 65 65 20 3d 20 6d 32 2e 70 6b 63 73 t):......m2_pkcs7_free.=.m2.pkcs
3b480 37 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 7_free......def.__init__(self,.p
3b4a0 6b 63 73 37 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 kcs7=None,._pyfree=0):.........#
3b4c0 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 2d 3e .type:.(Optional[bytes],.int).->
3b4e0 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 50 4b 43 53 37 20 6f 62 6a 65 63 74 2e 0a 0a .None........."""PKCS7.object...
3b500 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6b 63 73 37 3a 20 62 69 6e 61 72 79 20 72 65 70 ........:param.pkcs7:.binary.rep
3b520 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 resentation.of................th
3b540 65 20 4f 70 65 6e 53 53 4c 20 74 79 70 65 20 50 4b 43 53 37 0a 20 20 20 20 20 20 20 20 22 22 22 e.OpenSSL.type.PKCS7........."""
3b560 0a 20 20 20 20 20 20 20 20 69 66 20 70 6b 63 73 37 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 .........if.pkcs7.is.not.None:..
3b580 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 63 73 37 20 3d 20 70 6b 63 73 37 0a 20 20 ...........self.pkcs7.=.pkcs7...
3b5a0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 ..........self._pyfree.=._pyfree
3b5c0 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e .........else:.............self.
3b5e0 70 6b 63 73 37 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 pkcs7.=.m2.pkcs7_new()..........
3b600 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 ...self._pyfree.=.1......def.__d
3b620 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d el__(self):.........#.type:.().-
3b640 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 >.None.........if.getattr(self,.
3b660 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e '_pyfree',.0):.............self.
3b680 6d 32 5f 70 6b 63 73 37 5f 66 72 65 65 28 73 65 6c 66 2e 70 6b 63 73 37 29 0a 0a 20 20 20 20 64 m2_pkcs7_free(self.pkcs7)......d
3b6a0 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 ef._ptr(self):.........return.se
3b6c0 6c 66 2e 70 6b 63 73 37 0a 0a 20 20 20 20 64 65 66 20 74 79 70 65 28 73 65 6c 66 2c 20 74 65 78 lf.pkcs7......def.type(self,.tex
3b6e0 74 5f 6e 61 6d 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 t_name=0):.........#.type:.(int)
3b700 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 5f 6e 61 6d 65 3a 0a 20 20 .->.int.........if.text_name:...
3b720 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 5f 74 79 70 65 5f 73 ..........return.m2.pkcs7_type_s
3b740 6e 28 73 65 6c 66 2e 70 6b 63 73 37 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 n(self.pkcs7).........else:.....
3b760 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 5f 74 79 70 65 5f 6e 69 64 ........return.m2.pkcs7_type_nid
3b780 28 73 65 6c 66 2e 70 6b 63 73 37 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 28 73 65 6c 66 (self.pkcs7)......def.write(self
3b7a0 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f ,.bio):.........#.type:.(BIO.BIO
3b7c0 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 ).->.int.........return.m2.pkcs7
3b7e0 5f 77 72 69 74 65 5f 62 69 6f 28 73 65 6c 66 2e 70 6b 63 73 37 2c 20 62 69 6f 2e 5f 70 74 72 28 _write_bio(self.pkcs7,.bio._ptr(
3b800 29 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 64 65 72 28 73 65 6c 66 2c 20 62 69 6f 29 ))......def.write_der(self,.bio)
3b820 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 69 :.........#.type:.(BIO.BIO).->.i
3b840 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 5f 77 72 69 74 65 nt.........return.m2.pkcs7_write
3b860 5f 62 69 6f 5f 64 65 72 28 73 65 6c 66 2e 70 6b 63 73 37 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 _bio_der(self.pkcs7,.bio._ptr())
3b880 0a 0a 20 20 20 20 64 65 66 20 67 65 74 30 5f 73 69 67 6e 65 72 73 28 73 65 6c 66 2c 20 63 65 72 ......def.get0_signers(self,.cer
3b8a0 74 73 2c 20 66 6c 61 67 73 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 ts,.flags=0):.........#.type:.(X
3b8c0 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 2c 20 69 6e 74 29 20 2d 3e 20 58 35 30 39 2e 58 35 30 509.X509_Stack,.int).->.X509.X50
3b8e0 39 5f 53 74 61 63 6b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 2e 58 35 30 39 9_Stack.........return.X509.X509
3b900 5f 53 74 61 63 6b 28 6d 32 2e 70 6b 63 73 37 5f 67 65 74 30 5f 73 69 67 6e 65 72 73 28 73 65 6c _Stack(m2.pkcs7_get0_signers(sel
3b920 66 2e 70 6b 63 73 37 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.pkcs7,........................
3b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 ..............................ce
3b960 72 74 73 2e 73 74 61 63 6b 2c 20 66 6c 61 67 73 29 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 rts.stack,.flags),.1)...def.load
3b980 5f 70 6b 63 73 37 28 70 37 66 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 _pkcs7(p7file):.....#.type:.(Any
3b9a0 53 74 72 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 Str).->.PKCS7.....with.BIO.openf
3b9c0 69 6c 65 28 70 37 66 69 6c 65 2c 20 27 72 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 ile(p7file,.'r').as.bio:........
3b9e0 20 70 37 5f 70 74 72 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 72 65 61 64 5f 62 69 6f 28 62 69 6f 2e .p7_ptr.=.m2.pkcs7_read_bio(bio.
3ba00 62 69 6f 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 37 5f 70 74 72 2c 20 31 bio)......return.PKCS7(p7_ptr,.1
3ba20 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 72 28 70 37 66 69 6c 65 29 3a 0a )...def.load_pkcs7_der(p7file):.
3ba40 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 ....#.type:.(AnyStr).->.PKCS7...
3ba60 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 70 37 66 69 6c 65 2c 20 27 72 62 27 ..with.BIO.openfile(p7file,.'rb'
3ba80 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 70 37 5f 70 74 72 20 3d 20 6d 32 2e 70 6b ).as.bio:.........p7_ptr.=.m2.pk
3baa0 63 73 37 5f 72 65 61 64 5f 62 69 6f 5f 64 65 72 28 62 69 6f 2e 62 69 6f 29 0a 0a 20 20 20 20 72 cs7_read_bio_der(bio.bio)......r
3bac0 65 74 75 72 6e 20 50 4b 43 53 37 28 70 37 5f 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 eturn.PKCS7(p7_ptr,.1)...def.loa
3bae0 64 5f 70 6b 63 73 37 5f 62 69 6f 28 70 37 5f 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a d_pkcs7_bio(p7_bio):.....#.type:
3bb00 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 70 37 5f 70 74 72 20 3d .(BIO.BIO).->.PKCS7.....p7_ptr.=
3bb20 20 6d 32 2e 70 6b 63 73 37 5f 72 65 61 64 5f 62 69 6f 28 70 37 5f 62 69 6f 2e 5f 70 74 72 28 29 .m2.pkcs7_read_bio(p7_bio._ptr()
3bb40 29 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 37 5f 70 74 72 2c 20 31 29 0a 0a 0a ).....return.PKCS7(p7_ptr,.1)...
3bb60 64 65 66 20 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 28 70 37 5f 62 69 6f 29 3a 0a def.load_pkcs7_bio_der(p7_bio):.
3bb80 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 50 4b 43 53 37 0a 20 ....#.type:.(BIO.BIO).->.PKCS7..
3bba0 20 20 20 70 37 5f 70 74 72 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 72 65 61 64 5f 62 69 6f 5f 64 65 ...p7_ptr.=.m2.pkcs7_read_bio_de
3bbc0 72 28 70 37 5f 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 r(p7_bio._ptr()).....return.PKCS
3bbe0 37 28 70 37 5f 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 7(p7_ptr,.1)...def.smime_load_pk
3bc00 63 73 37 28 70 37 66 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 cs7(p7file):.....#.type:.(AnyStr
3bc20 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 5f ).->.PKCS7.....bio.=.m2.bio_new_
3bc40 66 69 6c 65 28 70 37 66 69 6c 65 2c 20 27 72 27 29 0a 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 file(p7file,.'r')......try:.....
3bc60 20 20 20 20 70 37 5f 70 74 72 2c 20 62 69 6f 5f 70 74 72 20 3d 20 6d 32 2e 73 6d 69 6d 65 5f 72 ....p7_ptr,.bio_ptr.=.m2.smime_r
3bc80 65 61 64 5f 70 6b 63 73 37 28 62 69 6f 29 0a 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 ead_pkcs7(bio).....finally:.....
3bca0 20 20 20 20 6d 32 2e 62 69 6f 5f 66 72 65 65 28 62 69 6f 29 0a 0a 20 20 20 20 69 66 20 62 69 6f ....m2.bio_free(bio)......if.bio
3bcc0 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 _ptr.is.None:.........return.PKC
3bce0 53 37 28 70 37 5f 70 74 72 2c 20 31 29 2c 20 4e 6f 6e 65 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 S7(p7_ptr,.1),.None.....else:...
3bd00 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 37 5f 70 74 72 2c 20 31 29 2c 20 42 ......return.PKCS7(p7_ptr,.1),.B
3bd20 49 4f 2e 42 49 4f 28 62 69 6f 5f 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 73 6d 69 6d 65 5f 6c IO.BIO(bio_ptr,.1)...def.smime_l
3bd40 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 28 70 37 5f 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 oad_pkcs7_bio(p7_bio):.....#.typ
3bd60 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 70 37 5f 70 74 72 e:.(BIO.BIO).->.PKCS7.....p7_ptr
3bd80 2c 20 62 69 6f 5f 70 74 72 20 3d 20 6d 32 2e 73 6d 69 6d 65 5f 72 65 61 64 5f 70 6b 63 73 37 28 ,.bio_ptr.=.m2.smime_read_pkcs7(
3bda0 70 37 5f 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 69 66 20 70 37 5f 70 74 72 20 69 73 20 p7_bio._ptr()).....if.p7_ptr.is.
3bdc0 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 None:.........raise.SMIME_Error(
3bde0 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 29 0a 20 20 20 20 69 66 20 62 69 6f 5f 70 74 72 20 Err.get_error()).....if.bio_ptr.
3be00 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 37 is.None:.........return.PKCS7(p7
3be20 5f 70 74 72 2c 20 31 29 2c 20 4e 6f 6e 65 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 _ptr,.1),.None.....else:........
3be40 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 37 5f 70 74 72 2c 20 31 29 2c 20 42 49 4f 2e 42 49 .return.PKCS7(p7_ptr,.1),.BIO.BI
3be60 4f 28 62 69 6f 5f 70 74 72 2c 20 31 29 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 65 72 28 6f 62 6a O(bio_ptr,.1)...class.Cipher(obj
3be80 65 63 74 29 3a 0a 20 20 20 20 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f ect):....."""Object.interface.to
3bea0 20 45 56 50 5f 43 49 50 48 45 52 20 77 69 74 68 6f 75 74 20 61 6c 6c 20 74 68 65 20 66 72 69 6c .EVP_CIPHER.without.all.the.fril
3bec0 6c 73 20 6f 66 0a 20 20 20 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 0a 20 ls.of.....M2Crypto.EVP.Cipher...
3bee0 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 61 ..."""......def.__init__(self,.a
3bf00 6c 67 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 4e lgo):.........#.type:.(str).->.N
3bf20 6f 6e 65 0a 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c one.........cipher.=.getattr(m2,
3bf40 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 65 72 20 69 .algo,.None).........if.cipher.i
3bf60 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 s.None:.............raise.ValueE
3bf80 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 63 69 70 68 65 72 27 2c 20 61 6c 67 6f 29 0a 20 20 20 rror('unknown.cipher',.algo)....
3bfa0 20 20 20 20 20 73 65 6c 66 2e 63 69 70 68 65 72 20 3d 20 63 69 70 68 65 72 28 29 0a 0a 20 20 20 .....self.cipher.=.cipher().....
3bfc0 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .def._ptr(self):.........return.
3bfe0 73 65 6c 66 2e 63 69 70 68 65 72 0a 0a 0a 63 6c 61 73 73 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 self.cipher...class.SMIME_Error(
3c000 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 73 6d 69 6d 65 5f 69 Exception):.....pass..m2.smime_i
3c020 6e 69 74 28 53 4d 49 4d 45 5f 45 72 72 6f 72 29 0a 0a 0a 23 20 46 49 58 4d 45 20 63 6c 61 73 73 nit(SMIME_Error)...#.FIXME.class
3c040 20 68 61 73 20 6e 6f 20 5f 5f 69 6e 69 74 5f 5f 20 6d 65 74 68 6f 64 0a 63 6c 61 73 73 20 53 4d .has.no.__init__.method.class.SM
3c060 49 4d 45 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 6b 65 79 28 73 65 IME(object):.....def.load_key(se
3c080 6c 66 2c 20 6b 65 79 66 69 6c 65 2c 20 63 65 72 74 66 69 6c 65 3d 4e 6f 6e 65 2c 0a 20 20 20 20 lf,.keyfile,.certfile=None,.....
3c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 .............callback=util.passp
3c0c0 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a hrase_callback):.........#.type:
3c0e0 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 43 61 6c 6c .(AnyStr,.Optional[AnyStr],.Call
3c100 61 62 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 63 65 72 74 66 69 6c able).->.None.........if.certfil
3c120 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 66 69 6c 65 20 e.is.None:.............certfile.
3c140 3d 20 6b 65 79 66 69 6c 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 65 79 20 3d 20 45 56 =.keyfile.........self.pkey.=.EV
3c160 50 2e 6c 6f 61 64 5f 6b 65 79 28 6b 65 79 66 69 6c 65 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 P.load_key(keyfile,.callback)...
3c180 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 20 3d 20 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 ......self.x509.=.X509.load_cert
3c1a0 28 63 65 72 74 66 69 6c 65 29 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f (certfile)......def.load_key_bio
3c1c0 28 73 65 6c 66 2c 20 6b 65 79 62 69 6f 2c 20 63 65 72 74 62 69 6f 3d 4e 6f 6e 65 2c 0a 20 20 20 (self,.keybio,.certbio=None,....
3c1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e ..................callback=util.
3c200 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 passphrase_callback):.........#.
3c220 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 4f 70 74 69 6f 6e 61 6c 5b 42 49 4f 2e 42 49 4f type:.(BIO.BIO,.Optional[BIO.BIO
3c240 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 ],.Callable).->.None.........if.
3c260 63 65 72 74 62 69 6f 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 certbio.is.None:.............cer
3c280 74 62 69 6f 20 3d 20 6b 65 79 62 69 6f 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 65 79 20 tbio.=.keybio.........self.pkey.
3c2a0 3d 20 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 6b 65 79 62 69 6f 2c 20 63 61 6c 6c 62 =.EVP.load_key_bio(keybio,.callb
3c2c0 61 63 6b 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 20 3d 20 58 35 30 39 2e 6c 6f ack).........self.x509.=.X509.lo
3c2e0 61 64 5f 63 65 72 74 5f 62 69 6f 28 63 65 72 74 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 65 ad_cert_bio(certbio)......def.se
3c300 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 73 65 6c 66 2c 20 73 74 61 63 6b 29 3a 0a 20 20 20 20 20 t_x509_stack(self,.stack):......
3c320 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 29 20 2d 3e 20 ...#.type:.(X509.X509_Stack).->.
3c340 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 73 None.........assert.isinstance(s
3c360 74 61 63 6b 2c 20 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 73 tack,.X509.X509_Stack).........s
3c380 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 6b 20 3d 20 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 elf.x509_stack.=.stack......def.
3c3a0 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 28 73 65 6c 66 2c 20 73 74 6f 72 65 29 3a 0a 20 20 20 set_x509_store(self,.store):....
3c3c0 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 29 20 2d .....#.type:.(X509.X509_Store).-
3c3e0 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 >.None.........assert.isinstance
3c400 28 73 74 6f 72 65 2c 20 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 29 0a 20 20 20 20 20 20 20 (store,.X509.X509_Store)........
3c420 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 6f 72 65 20 3d 20 73 74 6f 72 65 0a 0a 20 20 20 20 64 65 .self.x509_store.=.store......de
3c440 66 20 73 65 74 5f 63 69 70 68 65 72 28 73 65 6c 66 2c 20 63 69 70 68 65 72 29 3a 0a 20 20 20 20 f.set_cipher(self,.cipher):.....
3c460 20 20 20 20 23 20 74 79 70 65 3a 20 28 43 69 70 68 65 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 ....#.type:.(Cipher).->.None....
3c480 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 63 69 70 68 65 72 2c 20 43 .....assert.isinstance(cipher,.C
3c4a0 69 70 68 65 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 69 70 68 65 72 20 3d 20 63 69 70 ipher).........self.cipher.=.cip
3c4c0 68 65 72 0a 0a 20 20 20 20 64 65 66 20 75 6e 73 65 74 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 her......def.unset_key(self):...
3c4e0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 ......#.type:.().->.None........
3c500 20 64 65 6c 20 73 65 6c 66 2e 70 6b 65 79 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e .del.self.pkey.........del.self.
3c520 78 35 30 39 0a 0a 20 20 20 20 64 65 66 20 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 73 x509......def.unset_x509_stack(s
3c540 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 elf):.........#.type:.().->.None
3c560 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 6b 0a 0a 20 20 .........del.self.x509_stack....
3c580 20 20 64 65 66 20 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 28 73 65 6c 66 29 3a 0a 20 20 ..def.unset_x509_store(self):...
3c5a0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 ......#.type:.().->.None........
3c5c0 20 64 65 6c 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 6f 72 65 0a 0a 20 20 20 20 64 65 66 20 75 6e .del.self.x509_store......def.un
3c5e0 73 65 74 5f 63 69 70 68 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 set_cipher(self):.........#.type
3c600 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 63 69 :.().->.None.........del.self.ci
3c620 70 68 65 72 0a 0a 20 20 20 20 64 65 66 20 65 6e 63 72 79 70 74 28 73 65 6c 66 2c 20 64 61 74 61 pher......def.encrypt(self,.data
3c640 5f 62 69 6f 2c 20 66 6c 61 67 73 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 _bio,.flags=0):.........#.type:.
3c660 28 42 49 4f 2e 42 49 4f 2c 20 69 6e 74 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 20 20 20 20 (BIO.BIO,.int).->.PKCS7.........
3c680 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 63 69 70 68 65 72 27 29 3a 0a if.not.hasattr(self,.'cipher'):.
3c6a0 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e ............raise.SMIME_Error('n
3c6c0 6f 20 63 69 70 68 65 72 3a 20 75 73 65 20 73 65 74 5f 63 69 70 68 65 72 28 29 27 29 0a 20 20 20 o.cipher:.use.set_cipher()')....
3c6e0 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 78 35 30 39 5f .....if.not.hasattr(self,.'x509_
3c700 73 74 61 63 6b 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 stack'):.............raise.SMIME
3c720 5f 45 72 72 6f 72 28 27 6e 6f 20 72 65 63 69 70 69 65 6e 74 20 63 65 72 74 73 3a 20 75 73 65 20 _Error('no.recipient.certs:.use.
3c740 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 29 27 29 0a 0a 20 20 20 20 20 20 20 20 70 6b 63 73 set_x509_stack()')..........pkcs
3c760 37 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 2e 78 35 30 39 5f 73 7.=.m2.pkcs7_encrypt(self.x509_s
3c780 74 61 63 6b 2e 5f 70 74 72 28 29 2c 20 64 61 74 61 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 0a 20 20 tack._ptr(),.data_bio._ptr(),...
3c7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 ...............................s
3c7c0 65 6c 66 2e 63 69 70 68 65 72 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 0a 20 20 20 20 20 elf.cipher._ptr(),.flags).......
3c7e0 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 6b 63 73 37 2c 20 31 29 0a 0a 20 20 20 20 64 ...return.PKCS7(pkcs7,.1)......d
3c800 65 66 20 64 65 63 72 79 70 74 28 73 65 6c 66 2c 20 70 6b 63 73 37 2c 20 66 6c 61 67 73 3d 30 29 ef.decrypt(self,.pkcs7,.flags=0)
3c820 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 50 4b 43 53 37 2c 20 69 6e 74 29 20 2d :.........#.type:.(PKCS7,.int).-
3c840 3e 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 >.Optional[bytes].........if.not
3c860 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 70 6b 65 79 27 29 3a 0a 20 20 20 20 20 20 20 20 .hasattr(self,.'pkey'):.........
3c880 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 70 72 69 76 61 74 ....raise.SMIME_Error('no.privat
3c8a0 65 20 6b 65 79 3a 20 75 73 65 20 6c 6f 61 64 5f 6b 65 79 28 29 27 29 0a 20 20 20 20 20 20 20 20 e.key:.use.load_key()').........
3c8c0 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 78 35 30 39 27 29 3a 0a 20 20 if.not.hasattr(self,.'x509'):...
3c8e0 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 ..........raise.SMIME_Error('no.
3c900 63 65 72 74 69 66 69 63 61 74 65 3a 20 6c 6f 61 64 5f 6b 65 79 28 29 20 75 73 65 64 20 69 6e 63 certificate:.load_key().used.inc
3c920 6f 72 72 65 63 74 6c 79 3f 27 29 0a 20 20 20 20 20 20 20 20 62 6c 6f 62 20 3d 20 6d 32 2e 70 6b orrectly?').........blob.=.m2.pk
3c940 63 73 37 5f 64 65 63 72 79 70 74 28 70 6b 63 73 37 2e 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 70 cs7_decrypt(pkcs7._ptr(),.self.p
3c960 6b 65 79 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 key._ptr(),.....................
3c980 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 2e 5f 70 74 72 28 29 2c 20 66 6c ............self.x509._ptr(),.fl
3c9a0 61 67 73 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 0a 0a 20 20 20 20 64 65 ags).........return.blob......de
3c9c0 66 20 73 69 67 6e 28 73 65 6c 66 2c 20 64 61 74 61 5f 62 69 6f 2c 20 66 6c 61 67 73 3d 30 2c 20 f.sign(self,.data_bio,.flags=0,.
3c9e0 61 6c 67 6f 3d 27 73 68 61 31 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 algo='sha1'):.........#.type:.(B
3ca00 49 4f 2e 42 49 4f 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 29 20 2d 3e 20 50 IO.BIO,.int,.Optional[str]).->.P
3ca20 4b 43 53 37 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 KCS7.........if.not.hasattr(self
3ca40 2c 20 27 70 6b 65 79 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 ,.'pkey'):.............raise.SMI
3ca60 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 70 72 69 76 61 74 65 20 6b 65 79 3a 20 75 73 65 20 6c 6f ME_Error('no.private.key:.use.lo
3ca80 61 64 5f 6b 65 79 28 29 27 29 0a 0a 20 20 20 20 20 20 20 20 68 61 73 68 20 3d 20 67 65 74 61 74 ad_key()')..........hash.=.getat
3caa0 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 68 tr(m2,.algo,.None)..........if.h
3cac0 61 73 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 ash.is.None:.............raise.S
3cae0 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 73 75 63 68 20 68 61 73 68 20 61 6c 67 6f 72 69 74 MIME_Error('no.such.hash.algorit
3cb00 68 6d 20 25 73 27 20 25 20 61 6c 67 6f 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 hm.%s'.%.algo)..........if.hasat
3cb20 74 72 28 73 65 6c 66 2c 20 27 78 35 30 39 5f 73 74 61 63 6b 27 29 3a 0a 20 20 20 20 20 20 20 20 tr(self,.'x509_stack'):.........
3cb40 20 20 20 20 70 6b 63 73 37 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 73 69 67 6e 31 28 73 65 6c 66 2e ....pkcs7.=.m2.pkcs7_sign1(self.
3cb60 78 35 30 39 2e 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 70 6b 65 79 2e 5f 70 74 72 28 29 2c 0a 20 x509._ptr(),.self.pkey._ptr(),..
3cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3cba0 20 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 6b 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 ..self.x509_stack._ptr(),.......
3cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 .............................dat
3cbe0 61 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 20 68 61 73 68 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 a_bio._ptr(),.hash(),.flags)....
3cc00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 6b 63 73 37 2c 20 31 29 0a .........return.PKCS7(pkcs7,.1).
3cc20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6b 63 73 37 20 ........else:.............pkcs7.
3cc40 3d 20 6d 32 2e 70 6b 63 73 37 5f 73 69 67 6e 30 28 73 65 6c 66 2e 78 35 30 39 2e 5f 70 74 72 28 =.m2.pkcs7_sign0(self.x509._ptr(
3cc60 29 2c 20 73 65 6c 66 2e 70 6b 65 79 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ),.self.pkey._ptr(),............
3cc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5f 62 69 6f ........................data_bio
3cca0 2e 5f 70 74 72 28 29 2c 20 68 61 73 68 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 ._ptr(),.hash(),.flags).........
3ccc0 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 37 28 70 6b 63 73 37 2c 20 31 29 0a 0a 20 20 20 20 ....return.PKCS7(pkcs7,.1)......
3cce0 64 65 66 20 76 65 72 69 66 79 28 73 65 6c 66 2c 20 70 6b 63 73 37 2c 20 64 61 74 61 5f 62 69 6f def.verify(self,.pkcs7,.data_bio
3cd00 3d 4e 6f 6e 65 2c 20 66 6c 61 67 73 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a =None,.flags=0):.........#.type:
3cd20 20 28 50 4b 43 53 37 2c 20 42 49 4f 2e 42 49 4f 2c 20 69 6e 74 29 20 2d 3e 20 4f 70 74 69 6f 6e .(PKCS7,.BIO.BIO,.int).->.Option
3cd40 61 6c 5b 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 al[bytes].........if.not.hasattr
3cd60 28 73 65 6c 66 2c 20 27 78 35 30 39 5f 73 74 61 63 6b 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 (self,.'x509_stack'):...........
3cd80 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 73 69 67 6e 65 72 20 63 ..raise.SMIME_Error('no.signer.c
3cda0 65 72 74 73 3a 20 75 73 65 20 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 29 27 29 0a 20 20 20 erts:.use.set_x509_stack()')....
3cdc0 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 78 35 30 39 5f .....if.not.hasattr(self,.'x509_
3cde0 73 74 6f 72 65 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 store'):.............raise.SMIME
3ce00 5f 45 72 72 6f 72 28 27 6e 6f 20 78 35 30 39 20 63 65 72 74 20 73 74 6f 72 65 3a 20 75 73 65 20 _Error('no.x509.cert.store:.use.
3ce20 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 28 29 27 29 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 set_x509_store()').........asser
3ce40 74 20 69 73 69 6e 73 74 61 6e 63 65 28 70 6b 63 73 37 2c 20 50 4b 43 53 37 29 2c 20 27 70 6b 63 t.isinstance(pkcs7,.PKCS7),.'pkc
3ce60 73 37 20 6e 6f 74 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 50 4b 43 53 37 27 0a 20 20 20 s7.not.an.instance.of.PKCS7'....
3ce80 20 20 20 20 20 70 37 20 3d 20 70 6b 63 73 37 2e 5f 70 74 72 28 29 0a 20 20 20 20 20 20 20 20 69 .....p7.=.pkcs7._ptr().........i
3cea0 66 20 64 61 74 61 5f 62 69 6f 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 f.data_bio.is.None:.............
3cec0 62 6c 6f 62 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 76 65 72 69 66 79 30 28 70 37 2c 20 73 65 6c 66 blob.=.m2.pkcs7_verify0(p7,.self
3cee0 2e 78 35 30 39 5f 73 74 61 63 6b 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 .x509_stack._ptr(),.............
3cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 ........................self.x50
3cf20 39 5f 73 74 6f 72 65 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 65 9_store._ptr(),.flags).........e
3cf40 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 62 20 3d 20 6d 32 2e 70 6b 63 73 37 lse:.............blob.=.m2.pkcs7
3cf60 5f 76 65 72 69 66 79 31 28 70 37 2c 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 6b 2e 5f 70 74 _verify1(p7,.self.x509_stack._pt
3cf80 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r(),............................
3cfa0 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 6f 72 65 2e 5f 70 74 72 28 29 2c .........self.x509_store._ptr(),
3cfc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3cfe0 20 20 20 20 20 64 61 74 61 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 .....data_bio._ptr(),.flags)....
3d000 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 28 .....return.blob......def.write(
3d020 73 65 6c 66 2c 20 6f 75 74 5f 62 69 6f 2c 20 70 6b 63 73 37 2c 20 64 61 74 61 5f 62 69 6f 3d 4e self,.out_bio,.pkcs7,.data_bio=N
3d040 6f 6e 65 2c 20 66 6c 61 67 73 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 one,.flags=0):.........#.type:.(
3d060 42 49 4f 2e 42 49 4f 2c 20 50 4b 43 53 37 2c 20 4f 70 74 69 6f 6e 61 6c 5b 42 49 4f 2e 42 49 4f BIO.BIO,.PKCS7,.Optional[BIO.BIO
3d080 5d 2c 20 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 ],.int).->.int.........assert.is
3d0a0 69 6e 73 74 61 6e 63 65 28 70 6b 63 73 37 2c 20 50 4b 43 53 37 29 0a 20 20 20 20 20 20 20 20 69 instance(pkcs7,.PKCS7).........i
3d0c0 66 20 64 61 74 61 5f 62 69 6f 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 f.data_bio.is.None:.............
3d0e0 72 65 74 75 72 6e 20 6d 32 2e 73 6d 69 6d 65 5f 77 72 69 74 65 5f 70 6b 63 73 37 28 6f 75 74 5f return.m2.smime_write_pkcs7(out_
3d100 62 69 6f 2e 5f 70 74 72 28 29 2c 20 70 6b 63 73 37 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 bio._ptr(),.pkcs7._ptr(),.flags)
3d120 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 .........else:.............retur
3d140 6e 20 6d 32 2e 73 6d 69 6d 65 5f 77 72 69 74 65 5f 70 6b 63 73 37 5f 6d 75 6c 74 69 28 6f 75 74 n.m2.smime_write_pkcs7_multi(out
3d160 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 20 70 6b 63 73 37 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 _bio._ptr(),.pkcs7._ptr(),......
3d180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3d1a0 20 20 20 20 20 20 20 20 20 64 61 74 61 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 .........data_bio._ptr(),.flags)
3d1c0 0a 0a 0a 64 65 66 20 74 65 78 74 5f 63 72 6c 66 28 74 65 78 74 29 3a 0a 20 20 20 20 23 20 74 79 ...def.text_crlf(text):.....#.ty
3d1e0 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 62 69 6f 5f 69 6e 20 pe:.(bytes).->.bytes.....bio_in.
3d200 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 74 65 78 74 29 0a 20 20 20 20 62 69 6f =.BIO.MemoryBuffer(text).....bio
3d220 5f 6f 75 74 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 69 66 _out.=.BIO.MemoryBuffer().....if
3d240 20 6d 32 2e 73 6d 69 6d 65 5f 63 72 6c 66 5f 63 6f 70 79 28 62 69 6f 5f 69 6e 2e 5f 70 74 72 28 .m2.smime_crlf_copy(bio_in._ptr(
3d260 29 2c 20 62 69 6f 5f 6f 75 74 2e 5f 70 74 72 28 29 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 ),.bio_out._ptr()):.........retu
3d280 72 6e 20 62 69 6f 5f 6f 75 74 2e 72 65 61 64 28 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 rn.bio_out.read().....else:.....
3d2a0 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 ....raise.SMIME_Error(Err.get_er
3d2c0 72 6f 72 28 29 29 0a 0a 0a 64 65 66 20 74 65 78 74 5f 63 72 6c 66 5f 62 69 6f 28 62 69 6f 5f 69 ror())...def.text_crlf_bio(bio_i
3d2e0 6e 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 42 49 4f n):.....#.type:.(BIO.BIO).->.BIO
3d300 2e 42 49 4f 0a 20 20 20 20 62 69 6f 5f 6f 75 74 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 .BIO.....bio_out.=.BIO.MemoryBuf
3d320 66 65 72 28 29 0a 20 20 20 20 69 66 20 6d 32 2e 73 6d 69 6d 65 5f 63 72 6c 66 5f 63 6f 70 79 28 fer().....if.m2.smime_crlf_copy(
3d340 62 69 6f 5f 69 6e 2e 5f 70 74 72 28 29 2c 20 62 69 6f 5f 6f 75 74 2e 5f 70 74 72 28 29 29 3a 0a bio_in._ptr(),.bio_out._ptr()):.
3d360 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 69 6f 5f 6f 75 74 0a 20 20 20 20 65 6c 73 65 3a ........return.bio_out.....else:
3d380 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 45 72 72 2e 67 .........raise.SMIME_Error(Err.g
3d3a0 65 74 5f 65 72 72 6f 72 28 29 29 0a 94 7d 94 28 8c 0b 50 4b 43 53 37 5f 45 72 72 6f 72 94 6a 7d et_error())..}.(..PKCS7_Error.j}
3d3c0 1f 00 00 4b 1b 4b 1c 87 94 8c 0e 50 4b 43 53 37 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b ...K.K.....PKCS7.__init__.jt...K
3d3e0 25 4b 31 87 94 8c 0d 50 4b 43 53 37 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 33 4b 36 87 94 %K1....PKCS7.__del__.jt...K3K6..
3d400 8c 0a 50 4b 43 53 37 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 38 4b 39 87 94 8c 0a 50 4b 43 53 37 2e ..PKCS7._ptr.jt...K8K9....PKCS7.
3d420 74 79 70 65 94 6a 74 1f 00 00 4b 3b 4b 40 87 94 8c 0b 50 4b 43 53 37 2e 77 72 69 74 65 94 6a 74 type.jt...K;K@....PKCS7.write.jt
3d440 1f 00 00 4b 42 4b 44 87 94 8c 0f 50 4b 43 53 37 2e 77 72 69 74 65 5f 64 65 72 94 6a 74 1f 00 00 ...KBKD....PKCS7.write_der.jt...
3d460 4b 46 4b 48 87 94 8c 12 50 4b 43 53 37 2e 67 65 74 30 5f 73 69 67 6e 65 72 73 94 6a 74 1f 00 00 KFKH....PKCS7.get0_signers.jt...
3d480 4b 4a 4b 4d 87 94 8c 05 50 4b 43 53 37 94 6a 7d 1f 00 00 4b 21 4b 4d 87 94 8c 0a 6c 6f 61 64 5f KJKM....PKCS7.j}...K!KM....load_
3d4a0 70 6b 63 73 37 94 6a 74 1f 00 00 4b 50 4b 55 87 94 8c 0e 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 pkcs7.jt...KPKU....load_pkcs7_de
3d4c0 72 94 6a 74 1f 00 00 4b 58 4b 5d 87 94 8c 0e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 74 r.jt...KXK]....load_pkcs7_bio.jt
3d4e0 1f 00 00 4b 60 4b 63 87 94 8c 12 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 94 6a 74 ...K`Kc....load_pkcs7_bio_der.jt
3d500 1f 00 00 4b 66 4b 69 87 94 8c 10 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 94 6a 74 1f 00 ...KfKi....smime_load_pkcs7.jt..
3d520 00 4b 6c 4b 78 87 94 8c 14 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 74 .KlKx....smime_load_pkcs7_bio.jt
3d540 1f 00 00 4b 7b 4b 83 87 94 8c 0f 43 69 70 68 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 ...K{K.....Cipher.__init__.jt...
3d560 4b 8b 4b 90 87 94 8c 0b 43 69 70 68 65 72 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 92 4b 93 87 94 8c K.K.....Cipher._ptr.jt...K.K....
3d580 06 43 69 70 68 65 72 94 6a 7d 1f 00 00 4b 86 4b 93 87 94 8c 0b 53 4d 49 4d 45 5f 45 72 72 6f 72 .Cipher.j}...K.K.....SMIME_Error
3d5a0 94 6a 7d 1f 00 00 4b 96 4b 97 87 94 8c 0e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 6a 74 1f .j}...K.K.....SMIME.load_key.jt.
3d5c0 00 00 4b 9e 4b a4 87 94 8c 12 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 74 1f ..K.K.....SMIME.load_key_bio.jt.
3d5e0 00 00 4b a6 4b ac 87 94 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a ..K.K.....SMIME.set_x509_stack.j
3d600 74 1f 00 00 4b ae 4b b1 87 94 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 t...K.K.....SMIME.set_x509_store
3d620 94 6a 74 1f 00 00 4b b3 4b b6 87 94 8c 10 53 4d 49 4d 45 2e 73 65 74 5f 63 69 70 68 65 72 94 6a .jt...K.K.....SMIME.set_cipher.j
3d640 74 1f 00 00 4b b8 4b bb 87 94 8c 0f 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 6b 65 79 94 6a 74 1f 00 t...K.K.....SMIME.unset_key.jt..
3d660 00 4b bd 4b c0 87 94 8c 16 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 .K.K.....SMIME.unset_x509_stack.
3d680 6a 74 1f 00 00 4b c2 4b c4 87 94 8c 16 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 jt...K.K.....SMIME.unset_x509_st
3d6a0 6f 72 65 94 6a 74 1f 00 00 4b c6 4b c8 87 94 8c 12 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 63 69 70 ore.jt...K.K.....SMIME.unset_cip
3d6c0 68 65 72 94 6a 74 1f 00 00 4b ca 4b cc 87 94 8c 0d 53 4d 49 4d 45 2e 65 6e 63 72 79 70 74 94 6a her.jt...K.K.....SMIME.encrypt.j
3d6e0 74 1f 00 00 4b ce 4b d8 87 94 8c 0d 53 4d 49 4d 45 2e 64 65 63 72 79 70 74 94 6a 74 1f 00 00 4b t...K.K.....SMIME.decrypt.jt...K
3d700 da 4b e2 87 94 8c 0a 53 4d 49 4d 45 2e 73 69 67 6e 94 6a 74 1f 00 00 4b e4 4b f6 87 94 8c 0c 53 .K.....SMIME.sign.jt...K.K.....S
3d720 4d 49 4d 45 2e 76 65 72 69 66 79 94 6a 74 1f 00 00 4b f8 4d 07 01 87 94 8c 0b 53 4d 49 4d 45 2e MIME.verify.jt...K.M......SMIME.
3d740 77 72 69 74 65 94 6a 74 1f 00 00 4d 09 01 4d 10 01 87 94 8c 05 53 4d 49 4d 45 94 6a 7d 1f 00 00 write.jt...M..M......SMIME.j}...
3d760 4b 9d 4d 10 01 87 94 8c 09 74 65 78 74 5f 63 72 6c 66 94 6a 74 1f 00 00 4d 13 01 4d 1a 01 87 94 K.M......text_crlf.jt...M..M....
3d780 8c 0d 74 65 78 74 5f 63 72 6c 66 5f 62 69 6f 94 6a 74 1f 00 00 4d 1d 01 4d 23 01 87 94 75 7d 94 ..text_crlf_bio.jt...M..M#...u}.
3d7a0 28 8c 06 43 69 70 68 65 72 94 6a 53 02 00 00 8c 05 50 4b 43 53 37 94 6a 53 02 00 00 8c 12 50 4b (..Cipher.jS.....PKCS7.jS.....PK
3d7c0 43 53 37 2e 67 65 74 30 5f 73 69 67 6e 65 72 73 94 6a 53 02 00 00 8c 0a 50 4b 43 53 37 2e 74 79 CS7.get0_signers.jS.....PKCS7.ty
3d7e0 70 65 94 6a 53 02 00 00 8c 0b 50 4b 43 53 37 2e 77 72 69 74 65 94 6a 53 02 00 00 8c 0f 50 4b 43 pe.jS.....PKCS7.write.jS.....PKC
3d800 53 37 2e 77 72 69 74 65 5f 64 65 72 94 6a 53 02 00 00 8c 0b 50 4b 43 53 37 5f 45 72 72 6f 72 94 S7.write_der.jS.....PKCS7_Error.
3d820 6a 53 02 00 00 8c 05 53 4d 49 4d 45 94 6a 53 02 00 00 8c 0d 53 4d 49 4d 45 2e 64 65 63 72 79 70 jS.....SMIME.jS.....SMIME.decryp
3d840 74 94 6a 53 02 00 00 8c 0d 53 4d 49 4d 45 2e 65 6e 63 72 79 70 74 94 6a 53 02 00 00 8c 0e 53 4d t.jS.....SMIME.encrypt.jS.....SM
3d860 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 6a 53 02 00 00 8c 12 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b IME.load_key.jS.....SMIME.load_k
3d880 65 79 5f 62 69 6f 94 6a 53 02 00 00 8c 10 53 4d 49 4d 45 2e 73 65 74 5f 63 69 70 68 65 72 94 6a ey_bio.jS.....SMIME.set_cipher.j
3d8a0 53 02 00 00 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 53 02 00 00 S.....SMIME.set_x509_stack.jS...
3d8c0 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 53 02 00 00 8c 0a 53 4d ..SMIME.set_x509_store.jS.....SM
3d8e0 49 4d 45 2e 73 69 67 6e 94 6a 53 02 00 00 8c 12 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 63 69 70 68 IME.sign.jS.....SMIME.unset_ciph
3d900 65 72 94 6a 53 02 00 00 8c 0f 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 6b 65 79 94 6a 53 02 00 00 8c er.jS.....SMIME.unset_key.jS....
3d920 16 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 53 02 00 00 8c 16 53 .SMIME.unset_x509_stack.jS.....S
3d940 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 53 02 00 00 8c 0c 53 4d 49 MIME.unset_x509_store.jS.....SMI
3d960 4d 45 2e 76 65 72 69 66 79 94 6a 53 02 00 00 8c 0b 53 4d 49 4d 45 2e 77 72 69 74 65 94 6a 53 02 ME.verify.jS.....SMIME.write.jS.
3d980 00 00 8c 0b 53 4d 49 4d 45 5f 45 72 72 6f 72 94 6a 53 02 00 00 8c 0a 6c 6f 61 64 5f 70 6b 63 73 ....SMIME_Error.jS.....load_pkcs
3d9a0 37 94 6a 53 02 00 00 8c 0e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 53 02 00 00 8c 12 6c 7.jS.....load_pkcs7_bio.jS.....l
3d9c0 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 94 6a 53 02 00 00 8c 0e 6c 6f 61 64 5f 70 6b oad_pkcs7_bio_der.jS.....load_pk
3d9e0 63 73 37 5f 64 65 72 94 6a 53 02 00 00 8c 10 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 94 cs7_der.jS.....smime_load_pkcs7.
3da00 6a 53 02 00 00 8c 14 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 53 02 00 jS.....smime_load_pkcs7_bio.jS..
3da20 00 8c 09 74 65 78 74 5f 63 72 6c 66 94 6a 53 02 00 00 8c 0d 74 65 78 74 5f 63 72 6c 66 5f 62 69 ...text_crlf.jS.....text_crlf_bi
3da40 6f 94 6a 53 02 00 00 75 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 74 94 8c 0d 4d 32 43 o.jS...u..M2Crypto.SMIME.t...M2C
3da60 72 79 70 74 6f 2e 58 35 30 39 94 28 58 bd a7 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f rypto.X509.(X....from.__future__
3da80 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 72 .import.absolute_import.."""M2Cr
3daa0 79 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 20 41 50 ypto.wrapper.for.OpenSSL.X509.AP
3dac0 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 I...Copyright.(c).1999-2004.Ng.P
3dae0 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e heng.Siong..All.rights.reserved.
3db00 0a 0a 50 6f 72 74 69 6f 6e 73 20 63 72 65 61 74 65 64 20 62 79 20 4f 70 65 6e 20 53 6f 75 72 63 ..Portions.created.by.Open.Sourc
3db20 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 20 28 4f 53 41 46 29 e.Applications.Foundation.(OSAF)
3db40 20 61 72 65 0a 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 30 34 2d 32 30 30 37 20 4f 53 41 .are.Copyright.(C).2004-2007.OSA
3db60 46 2e 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2e 0a 41 75 74 68 6f 72 3a 20 F..All.Rights.Reserved..Author:.
3db80 48 65 69 6b 6b 69 20 54 6f 69 76 6f 6e 65 6e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 62 69 6e 61 Heikki.Toivonen."""..import.bina
3dba0 73 63 69 69 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 scii.import.logging..from.M2Cryp
3dbc0 74 6f 20 69 6d 70 6f 72 74 20 41 53 4e 31 2c 20 42 49 4f 2c 20 45 56 50 2c 20 6d 32 2c 20 70 79 to.import.ASN1,.BIO,.EVP,.m2,.py
3dbe0 32 37 70 6c 75 73 2c 20 73 69 78 20 20 23 20 6e 6f 71 61 0a 69 66 20 70 79 32 37 70 6c 75 73 3a 27plus,.six..#.noqa.if.py27plus:
3dc00 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 .....from.typing.import.AnyStr,.
3dc20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 46 4f 52 4d 41 54 5f 44 45 52 20 3d 20 30 Optional..#.noqa..FORMAT_DER.=.0
3dc40 0a 46 4f 52 4d 41 54 5f 50 45 4d 20 3d 20 31 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 .FORMAT_PEM.=.1..log.=.logging.g
3dc60 65 74 4c 6f 67 67 65 72 28 5f 5f 6e 61 6d 65 5f 5f 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 45 etLogger(__name__)...class.X509E
3dc80 72 72 6f 72 28 56 61 6c 75 65 45 72 72 6f 72 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 78 rror(ValueError):.....pass..m2.x
3dca0 35 30 39 5f 69 6e 69 74 28 58 35 30 39 45 72 72 6f 72 29 0a 0a 56 5f 4f 4b 20 3d 20 6d 32 2e 58 509_init(X509Error)..V_OK.=.m2.X
3dcc0 35 30 39 5f 56 5f 4f 4b 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 0a 0a 64 65 66 20 78 35 30 39 509_V_OK..#.type:.int...def.x509
3dce0 5f 73 74 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 28 6f 6b 2c 20 63 74 78 29 3a 0a 20 20 20 20 _store_default_cb(ok,.ctx):.....
3dd00 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 #.type:.(int,.X509_Store_Context
3dd20 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 6b 0a 0a 0a 64 65 66 20 6e 65 77 ).->.int.....return.ok...def.new
3dd40 5f 65 78 74 65 6e 73 69 6f 6e 28 6e 61 6d 65 2c 20 76 61 6c 75 65 2c 20 63 72 69 74 69 63 61 6c _extension(name,.value,.critical
3dd60 3d 30 2c 20 5f 70 79 66 72 65 65 3d 31 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 =0,._pyfree=1):.....#.type:.(str
3dd80 2c 20 62 79 74 65 73 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 58 35 30 39 5f 45 78 74 65 6e ,.bytes,.int,.int).->.X509_Exten
3dda0 73 69 6f 6e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 43 72 65 61 74 65 20 6e 65 77 20 58 35 30 39 sion.....""".....Create.new.X509
3ddc0 5f 45 78 74 65 6e 73 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 _Extension.instance......"""....
3dde0 20 69 66 20 6e 61 6d 65 20 3d 3d 20 27 73 75 62 6a 65 63 74 4b 65 79 49 64 65 6e 74 69 66 69 65 .if.name.==.'subjectKeyIdentifie
3de00 72 27 20 61 6e 64 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 2e 73 74 72 69 70 r'.and.\.............value.strip
3de20 28 27 30 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 41 42 43 44 45 46 3a 27 29 20 69 73 20 6e ('0123456789abcdefABCDEF:').is.n
3de40 6f 74 20 27 27 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 ot.'':.........raise.ValueError(
3de60 27 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 70 72 65 63 6f 6d 70 75 74 65 64 20 68 61 73 68 27 'value.must.be.precomputed.hash'
3de80 29 0a 20 20 20 20 63 74 78 20 3d 20 6d 32 2e 78 35 30 39 76 33 5f 73 65 74 5f 6e 63 6f 6e 66 28 ).....ctx.=.m2.x509v3_set_nconf(
3dea0 29 0a 20 20 20 20 78 35 30 39 5f 65 78 74 5f 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 76 33 5f 65 ).....x509_ext_ptr.=.m2.x509v3_e
3dec0 78 74 5f 63 6f 6e 66 28 4e 6f 6e 65 2c 20 63 74 78 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 0a xt_conf(None,.ctx,.name,.value).
3dee0 20 20 20 20 69 66 20 78 35 30 39 5f 65 78 74 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 ....if.x509_ext_ptr.is.None:....
3df00 20 20 20 20 20 72 61 69 73 65 20 58 35 30 39 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 .....raise.X509Error(...........
3df20 20 20 22 43 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 .."Cannot.create.X509_Extension.
3df40 77 69 74 68 20 6e 61 6d 65 20 27 25 73 27 20 61 6e 64 20 76 61 6c 75 65 20 27 25 73 27 22 20 25 with.name.'%s'.and.value.'%s'".%
3df60 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 29 0a 20 20 20 20 .............(name,.value)).....
3df80 78 35 30 39 5f 65 78 74 20 3d 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 78 35 30 39 5f 65 x509_ext.=.X509_Extension(x509_e
3dfa0 78 74 5f 70 74 72 2c 20 5f 70 79 66 72 65 65 29 0a 20 20 20 20 78 35 30 39 5f 65 78 74 2e 73 65 xt_ptr,._pyfree).....x509_ext.se
3dfc0 74 5f 63 72 69 74 69 63 61 6c 28 63 72 69 74 69 63 61 6c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 t_critical(critical).....return.
3dfe0 78 35 30 39 5f 65 78 74 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 x509_ext...class.X509_Extension(
3e000 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 45 78 74 65 6e 73 object):.....""".....X509.Extens
3e020 69 6f 6e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 ion....."""......m2_x509_extensi
3e040 6f 6e 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 on_free.=.m2.x509_extension_free
3e060 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 78 35 30 39 5f 65 78 ......def.__init__(self,.x509_ex
3e080 74 5f 70 74 72 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 31 29 3a 0a 20 20 20 20 20 20 20 20 t_ptr=None,._pyfree=1):.........
3e0a0 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 2d #.type:.(Optional[bytes],.int).-
3e0c0 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 20 3d 20 78 >.None.........self.x509_ext.=.x
3e0e0 35 30 39 5f 65 78 74 5f 70 74 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 509_ext_ptr.........self._pyfree
3e100 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 .=._pyfree......def.__del__(self
3e120 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 ):.........#.type:.().->.None...
3e140 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 ......if.getattr(self,.'_pyfree'
3e160 2c 20 30 29 20 61 6e 64 20 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 3a 0a 20 20 20 20 20 20 20 20 ,.0).and.self.x509_ext:.........
3e180 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 28 ....self.m2_x509_extension_free(
3e1a0 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c self.x509_ext)......def._ptr(sel
3e1c0 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a f):.........#.type:.().->.bytes.
3e1e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 0a 0a 20 20 ........return.self.x509_ext....
3e200 20 20 64 65 66 20 73 65 74 5f 63 72 69 74 69 63 61 6c 28 73 65 6c 66 2c 20 63 72 69 74 69 63 61 ..def.set_critical(self,.critica
3e220 6c 3d 31 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 l=1):.........#.type:.(int).->.i
3e240 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 4d 61 72 6b 20 74 68 69 73 nt.........""".........Mark.this
3e260 20 65 78 74 65 6e 73 69 6f 6e 20 63 72 69 74 69 63 61 6c 20 6f 72 20 6e 6f 6e 63 72 69 74 69 63 .extension.critical.or.noncritic
3e280 61 6c 2e 20 42 79 20 64 65 66 61 75 6c 74 20 61 6e 0a 20 20 20 20 20 20 20 20 65 78 74 65 6e 73 al..By.default.an.........extens
3e2a0 69 6f 6e 20 69 73 20 6e 6f 74 20 63 72 69 74 69 63 61 6c 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 ion.is.not.critical...........:p
3e2c0 61 72 61 6d 20 63 72 69 74 69 63 61 6c 3a 20 4e 6f 6e 7a 65 72 6f 20 73 65 74 73 20 74 68 69 73 aram.critical:.Nonzero.sets.this
3e2e0 20 65 78 74 65 6e 73 69 6f 6e 20 61 73 20 63 72 69 74 69 63 61 6c 2e 0a 20 20 20 20 20 20 20 20 .extension.as.critical..........
3e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 .................Calling.this.me
3e320 74 68 6f 64 20 77 69 74 68 6f 75 74 20 61 72 67 75 6d 65 6e 74 73 20 77 69 6c 6c 0a 20 20 20 20 thod.without.arguments.will.....
3e340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 68 69 73 20 65 78 .....................set.this.ex
3e360 74 65 6e 73 69 6f 6e 20 74 6f 20 63 72 69 74 69 63 61 6c 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 tension.to.critical..........:re
3e380 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20 30 20 66 6f 72 20 66 61 69 6c 75 turn:.1.for.success,.0.for.failu
3e3a0 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 re.........""".........return.m2
3e3c0 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 73 65 74 5f 63 72 69 74 69 63 61 6c 28 73 65 6c .x509_extension_set_critical(sel
3e3e0 66 2e 78 35 30 39 5f 65 78 74 2c 20 63 72 69 74 69 63 61 6c 29 0a 0a 20 20 20 20 64 65 66 20 67 f.x509_ext,.critical)......def.g
3e400 65 74 5f 63 72 69 74 69 63 61 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 et_critical(self):.........#.typ
3e420 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 e:.().->.int........."""........
3e440 20 52 65 74 75 72 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 69 73 20 61 .Return.whether.or.not.this.is.a
3e460 20 63 72 69 74 69 63 61 6c 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 .critical.extension...........:r
3e480 65 74 75 72 6e 3a 20 20 4e 6f 6e 7a 65 72 6f 20 69 66 20 74 68 69 73 20 69 73 20 61 20 63 72 69 eturn:..Nonzero.if.this.is.a.cri
3e4a0 74 69 63 61 6c 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 tical.extension.........."""....
3e4c0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 .....return.m2.x509_extension_ge
3e4e0 74 5f 63 72 69 74 69 63 61 6c 28 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 29 0a 0a 20 20 20 20 64 t_critical(self.x509_ext)......d
3e500 65 66 20 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ef.get_name(self):.........#.typ
3e520 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 e:.().->.str........."""........
3e540 20 47 65 74 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 6e 61 6d 65 2c 20 66 6f 72 20 65 78 61 .Get.the.extension.name,.for.exa
3e560 6d 70 6c 65 20 27 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 27 2e 0a 20 20 20 20 20 20 20 20 22 mple.'subjectAltName'.........."
3e580 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 "".........return.six.ensure_tex
3e5a0 74 28 6d 32 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 28 73 65 6c t(m2.x509_extension_get_name(sel
3e5c0 66 2e 78 35 30 39 5f 65 78 74 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 61 6c 75 65 28 f.x509_ext))......def.get_value(
3e5e0 73 65 6c 66 2c 20 66 6c 61 67 3d 30 2c 20 69 6e 64 65 6e 74 3d 30 29 3a 0a 20 20 20 20 20 20 20 self,.flag=0,.indent=0):........
3e600 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 .#.type:.(int,.int).->.str......
3e620 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e ...""".........Get.the.extension
3e640 20 76 61 6c 75 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 44 4e 53 3a 77 77 77 2e 65 78 61 .value,.for.example.'DNS:www.exa
3e660 6d 70 6c 65 2e 63 6f 6d 27 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6c 61 67 3a mple.com'...........:param.flag:
3e680 20 20 20 46 6c 61 67 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 77 68 61 74 20 61 6e 64 20 68 6f 77 20 ...Flag.to.control.what.and.how.
3e6a0 74 6f 20 70 72 69 6e 74 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 6e 64 65 6e 74 3a to.print..........:param.indent:
3e6c0 20 48 6f 77 20 6d 61 6e 79 20 73 70 61 63 65 73 20 74 6f 20 70 72 69 6e 74 20 62 65 66 6f 72 65 .How.many.spaces.to.print.before
3e6e0 20 61 63 74 75 61 6c 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .actual.value.........."""......
3e700 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 ...buf.=.BIO.MemoryBuffer().....
3e720 20 20 20 20 6d 32 2e 78 35 30 39 5f 65 78 74 5f 70 72 69 6e 74 28 62 75 66 2e 62 69 6f 5f 70 74 ....m2.x509_ext_print(buf.bio_pt
3e740 72 28 29 2c 20 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 2c 20 66 6c 61 67 2c 20 69 6e 64 65 6e 74 r(),.self.x509_ext,.flag,.indent
3e760 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 ).........return.six.ensure_text
3e780 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 45 78 (buf.read_all())...class.X509_Ex
3e7a0 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 tension_Stack(object):....."""..
3e7c0 20 20 20 58 35 30 39 20 45 78 74 65 6e 73 69 6f 6e 20 53 74 61 63 6b 0a 0a 20 20 20 20 3a 77 61 ...X509.Extension.Stack......:wa
3e7e0 72 6e 69 6e 67 3a 20 44 6f 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 75 6e 64 65 72 6c 79 rning:.Do.not.modify.the.underly
3e800 69 6e 67 20 4f 70 65 6e 53 53 4c 20 73 74 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ing.OpenSSL.stack...............
3e820 65 78 63 65 70 74 20 74 68 72 6f 75 67 68 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 2c 20 6f except.through.this.interface,.o
3e840 72 20 75 73 65 20 61 6e 79 20 4f 70 65 6e 53 53 4c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.use.any.OpenSSL...............
3e860 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 64 6f 20 73 6f 20 69 6e 64 69 72 65 63 74 6c 79 2e functions.that.do.so.indirectly.
3e880 20 44 6f 69 6e 67 20 73 6f 20 77 69 6c 6c 20 67 65 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 .Doing.so.will.get.the..........
3e8a0 20 20 20 20 20 4f 70 65 6e 53 53 4c 20 73 74 61 63 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 65 72 .....OpenSSL.stack.and.the.inter
3e8c0 6e 61 6c 20 70 79 73 74 61 63 6b 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 6f 75 74 0a 20 20 nal.pystack.of.this.class.out...
3e8e0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 73 79 6e 63 2c 20 6c 65 61 64 69 6e 67 20 74 6f 20 ............of.sync,.leading.to.
3e900 70 79 74 68 6f 6e 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 73 2c 20 65 78 63 65 70 74 69 6f 6e 73 20 python.memory.leaks,.exceptions.
3e920 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 20 70 79 74 68 6f 6e 20 63 72 61 or...............even.python.cra
3e940 73 68 65 73 21 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 73 6b 5f 78 35 30 39 5f 65 78 shes!....."""......m2_sk_x509_ex
3e960 74 65 6e 73 69 6f 6e 5f 66 72 65 65 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 tension_free.=.m2.sk_x509_extens
3e980 69 6f 6e 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c ion_free......def.__init__(self,
3e9a0 20 73 74 61 63 6b 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 .stack=None,._pyfree=0):........
3e9c0 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 .#.type:.(Optional[bytes],.int).
3e9e0 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 73 74 61 63 6b 20 69 73 20 6e 6f 74 20 ->.None.........if.stack.is.not.
3ea00 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 73 None:.............self.stack.=.s
3ea20 74 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 tack.............self._pyfree.=.
3ea40 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 20 3d 20 6d 32 2e 73 6b 5f _pyfree.............num.=.m2.sk_
3ea60 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 20 x509_extension_num(self.stack)..
3ea80 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 75 6d 29 3a 0a ...........for.i.in.range(num):.
3eaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 61 70 70 ................self.pystack.app
3eac0 65 6e 64 28 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 end(X509_Extension(.............
3eae0 20 20 20 20 20 20 20 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 76 61 6c ........m2.sk_x509_extension_val
3eb00 75 65 28 73 65 6c 66 2e 73 74 61 63 6b 2c 20 69 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ue(self.stack,.i),..............
3eb20 20 20 20 20 20 20 20 5f 70 79 66 72 65 65 3d 5f 70 79 66 72 65 65 29 29 0a 20 20 20 20 20 20 20 ......._pyfree=_pyfree))........
3eb40 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 .else:.............self.stack.=.
3eb60 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 6e 65 77 5f 6e 75 6c 6c 28 29 0a m2.sk_x509_extension_new_null().
3eb80 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 20 20 20 ............self._pyfree.=.1....
3eba0 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 20 3d 20 5b 5d 20 20 23 20 54 68 .........self.pystack.=.[]..#.Th
3ebc0 69 73 20 6d 75 73 74 20 62 65 20 6b 65 70 74 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20 73 65 6c is.must.be.kept.in.sync.with.sel
3ebe0 66 2e 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a f.stack......def.__del__(self):.
3ec00 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 ........#.type:.().->.None......
3ec20 20 20 20 23 20 73 65 65 20 42 49 4f 2e 70 79 20 2d 20 75 6e 62 61 6c 61 6e 63 65 64 20 5f 5f 69 ...#.see.BIO.py.-.unbalanced.__i
3ec40 6e 69 74 5f 5f 20 2f 20 5f 5f 64 65 6c 5f 5f 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 nit__./.__del__.........if.getat
3ec60 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 tr(self,.'_pyfree',.0):.........
3ec80 20 20 20 20 73 65 6c 66 2e 6d 32 5f 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 ....self.m2_sk_x509_extension_fr
3eca0 65 65 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 ee(self.stack)......def.__len__(
3ecc0 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 self):.........#.type:.().->.int
3ece0 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e .........assert.m2.sk_x509_exten
3ed00 73 69 6f 6e 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 20 3d 3d 20 6c 65 6e 28 73 65 6c 66 sion_num(self.stack).==.len(self
3ed20 2e 70 79 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 28 73 65 6c .pystack).........return.len(sel
3ed40 66 2e 70 79 73 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 f.pystack)......def.__getitem__(
3ed60 73 65 6c 66 2c 20 69 64 78 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 self,.idx):.........#.type:.(int
3ed80 29 20 2d 3e 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 ).->.X509_Extension.........retu
3eda0 72 6e 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 5b 69 64 78 5d 0a 0a 20 20 20 20 64 65 66 20 5f 5f rn.self.pystack[idx]......def.__
3edc0 69 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 65 iter__(self):.........return.ite
3ede0 72 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 r(self.pystack)......def._ptr(se
3ee00 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 lf):.........#.type:.().->.bytes
3ee20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 74 61 63 6b 0a 0a 20 20 20 20 .........return.self.stack......
3ee40 64 65 66 20 70 75 73 68 28 73 65 6c 66 2c 20 78 35 30 39 5f 65 78 74 29 3a 0a 20 20 20 20 20 20 def.push(self,.x509_ext):.......
3ee60 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 29 20 2d 3e 20 69 6e ..#.type:.(X509_Extension).->.in
3ee80 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 50 75 73 68 20 58 35 30 39 5f t.........""".........Push.X509_
3eea0 45 78 74 65 6e 73 69 6f 6e 20 6f 62 6a 65 63 74 20 6f 6e 74 6f 20 74 68 65 20 73 74 61 63 6b 2e Extension.object.onto.the.stack.
3eec0 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 5f 65 78 74 3a 20 58 35 30 39 5f ..........:param.x509_ext:.X509_
3eee0 45 78 74 65 6e 73 69 6f 6e 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20 70 75 73 68 65 64 20 6f 6e Extension.object.to.be.pushed.on
3ef00 74 6f 20 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 to.the.stack..........:return:.T
3ef20 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 6e 20 74 68 65 20 73 he.number.of.extensions.on.the.s
3ef40 74 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 tack..........""".........self.p
3ef60 79 73 74 61 63 6b 2e 61 70 70 65 6e 64 28 78 35 30 39 5f 65 78 74 29 0a 20 20 20 20 20 20 20 20 ystack.append(x509_ext).........
3ef80 72 65 74 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 70 75 73 68 28 ret.=.m2.sk_x509_extension_push(
3efa0 73 65 6c 66 2e 73 74 61 63 6b 2c 20 78 35 30 39 5f 65 78 74 2e 5f 70 74 72 28 29 29 0a 20 20 20 self.stack,.x509_ext._ptr())....
3efc0 20 20 20 20 20 61 73 73 65 72 74 20 72 65 74 20 3d 3d 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 .....assert.ret.==.len(self.pyst
3efe0 61 63 6b 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 ack).........return.ret......def
3f000 20 70 6f 70 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d .pop(self):.........#.type:.().-
3f020 3e 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 >.X509_Extension........."""....
3f040 20 20 20 20 20 50 6f 70 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 6f 62 6a 65 63 74 20 66 .....Pop.X509_Extension.object.f
3f060 72 6f 6d 20 74 68 65 20 73 74 61 63 6b 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a rom.the.stack...........:return:
3f080 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 70 6f 70 70 65 64 0a 20 20 20 20 20 20 20 20 22 .X509_Extension.popped........."
3f0a0 22 22 0a 20 20 20 20 20 20 20 20 78 35 30 39 5f 65 78 74 5f 70 74 72 20 3d 20 6d 32 2e 73 6b 5f "".........x509_ext_ptr.=.m2.sk_
3f0c0 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 70 6f 70 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 20 x509_extension_pop(self.stack)..
3f0e0 20 20 20 20 20 20 20 69 66 20 78 35 30 39 5f 65 78 74 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a .......if.x509_ext_ptr.is.None:.
3f100 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 ............assert.len(self.pyst
3f120 61 63 6b 29 20 3d 3d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e ack).==.0.............return.Non
3f140 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 70 6f e.........return.self.pystack.po
3f160 70 28 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 28 6f 62 6a 65 p()...class.X509_Name_Entry(obje
3f180 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 4e 61 6d 65 20 45 6e 74 72 79 ct):.....""".....X509.Name.Entry
3f1a0 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 ....."""......m2_x509_name_entry
3f1c0 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 0a _free.=.m2.x509_name_entry_free.
3f1e0 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 78 35 30 39 5f 6e 61 6d .....def.__init__(self,.x509_nam
3f200 65 5f 65 6e 74 72 79 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 e_entry,._pyfree=0):.........#.t
3f220 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 ype:.(bytes,.int).->.None.......
3f240 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 5f 6e 61 ..""".............:param.x509_na
3f260 6d 65 5f 65 6e 74 72 79 3a 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 4f 70 65 6e 53 53 4c me_entry:.this.should.be.OpenSSL
3f280 20 58 35 30 39 5f 4e 41 4d 45 5f 45 4e 54 52 59 20 62 69 6e 61 72 79 0a 20 20 20 20 20 20 20 20 .X509_NAME_ENTRY.binary.........
3f2a0 20 20 20 20 3a 70 61 72 61 6d 20 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 20 20 20 20 22 22 22 0a ....:param._pyfree:.........""".
3f2c0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 20 3d 20 78 ........self.x509_name_entry.=.x
3f2e0 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 509_name_entry.........self._pyf
3f300 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 ree.=._pyfree......def.__del__(s
3f320 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 elf):.........#.type:.().->.None
3f340 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 .........if.getattr(self,.'_pyfr
3f360 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 ee',.0):.............self.m2_x50
3f380 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 9_name_entry_free(self.x509_name
3f3a0 5f 65 6e 74 72 79 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 _entry)......def._ptr(self):....
3f3c0 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 .....#.type:.().->.bytes........
3f3e0 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 0a 0a 20 20 .return.self.x509_name_entry....
3f400 20 20 64 65 66 20 73 65 74 5f 6f 62 6a 65 63 74 28 73 65 6c 66 2c 20 61 73 6e 31 6f 62 6a 29 3a ..def.set_object(self,.asn1obj):
3f420 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 .........#.type:.(ASN1.ASN1_Obje
3f440 63 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 ct).->.int.........""".........S
3f460 65 74 73 20 74 68 65 20 66 69 65 6c 64 20 6e 61 6d 65 20 74 6f 20 61 73 6e 31 6f 62 6a 0a 0a 20 ets.the.field.name.to.asn1obj...
3f480 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 61 73 6e 31 6f 62 6a 3a 0a 20 20 20 20 20 20 20 20 3a .......:param.asn1obj:.........:
3f4a0 72 65 74 75 72 6e 3a 20 30 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 31 20 6f 6e 20 73 75 63 63 65 return:.0.on.failure,.1.on.succe
3f4c0 73 73 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 ss.........""".........return.m2
3f4e0 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 73 65 74 5f 6f 62 6a 65 63 74 28 73 65 6c 66 .x509_name_entry_set_object(self
3f500 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .x509_name_entry,...............
3f520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 ...............................a
3f540 73 6e 31 6f 62 6a 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 64 61 74 61 sn1obj._ptr())......def.set_data
3f560 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 74 79 70 65 3d 41 53 4e 31 2e 4d 42 53 54 52 49 4e 47 5f (self,.data,.type=ASN1.MBSTRING_
3f580 41 53 43 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e ASC):.........#.type:.(bytes,.in
3f5a0 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 t).->.int.........""".........Se
3f5c0 74 73 20 74 68 65 20 66 69 65 6c 64 20 6e 61 6d 65 20 74 6f 20 61 73 6e 31 6f 62 6a 0a 0a 20 20 ts.the.field.name.to.asn1obj....
3f5e0 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 3a 20 64 61 74 61 20 69 6e 20 61 20 62 69 6e ......:param.data:.data.in.a.bin
3f600 61 72 79 20 66 6f 72 6d 20 74 6f 20 62 65 20 73 65 74 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 ary.form.to.be.set.........:retu
3f620 72 6e 3a 20 30 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 31 20 6f 6e 20 73 75 63 63 65 73 73 0a 20 rn:.0.on.failure,.1.on.success..
3f640 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 .......""".........return.m2.x50
3f660 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 73 65 74 5f 64 61 74 61 28 73 65 6c 66 2e 78 35 30 39 5f 9_name_entry_set_data(self.x509_
3f680 6e 61 6d 65 5f 65 6e 74 72 79 2c 20 74 79 70 65 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 name_entry,.type,.data)......def
3f6a0 20 67 65 74 5f 6f 62 6a 65 63 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 .get_object(self):.........#.typ
3f6c0 65 3a 20 28 29 20 2d 3e 20 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 0a 20 20 20 20 20 20 e:.().->.ASN1.ASN1_Object.......
3f6e0 20 20 72 65 74 75 72 6e 20 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 28 0a 20 20 20 20 20 ..return.ASN1.ASN1_Object(......
3f700 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 67 65 74 5f 6f 62 .......m2.x509_name_entry_get_ob
3f720 6a 65 63 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 29 29 0a 0a 20 20 20 ject(self.x509_name_entry)).....
3f740 20 64 65 66 20 67 65 74 5f 64 61 74 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 .def.get_data(self):.........#.t
3f760 79 70 65 3a 20 28 29 20 2d 3e 20 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 0a 20 20 20 20 ype:.().->.ASN1.ASN1_String.....
3f780 20 20 20 20 72 65 74 75 72 6e 20 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 28 0a 20 20 20 ....return.ASN1.ASN1_String(....
3f7a0 20 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 67 65 74 5f .........m2.x509_name_entry_get_
3f7c0 64 61 74 61 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 29 29 0a 0a 20 20 20 data(self.x509_name_entry)).....
3f7e0 20 64 65 66 20 63 72 65 61 74 65 5f 62 79 5f 74 78 74 28 73 65 6c 66 2c 20 66 69 65 6c 64 2c 20 .def.create_by_txt(self,.field,.
3f800 74 79 70 65 2c 20 65 6e 74 72 79 2c 20 6c 65 6e 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 type,.entry,.len):.........retur
3f820 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 63 72 65 61 74 65 5f 62 79 5f 74 n.m2.x509_name_entry_create_by_t
3f840 78 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 2e 5f 70 74 72 28 29 2c 0a xt(self.x509_name_entry._ptr(),.
3f860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 65 6c 64 2c 20 74 79 70 65 2c 20 65 6e 74 ................field,.type,.ent
3f8a0 72 79 2c 20 6c 65 6e 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 4e 61 6d 65 28 6f 62 6a 65 63 ry,.len)...class.X509_Name(objec
3f8c0 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 4e 61 6d 65 0a 20 20 20 20 22 22 t):.....""".....X509.Name.....""
3f8e0 22 0a 0a 20 20 20 20 6e 69 64 20 3d 20 7b 27 43 27 3a 20 6d 32 2e 4e 49 44 5f 63 6f 75 6e 74 72 "......nid.=.{'C':.m2.NID_countr
3f900 79 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 53 50 27 3a 20 6d 32 2e 4e 49 44 5f 73 yName,............'SP':.m2.NID_s
3f920 74 61 74 65 4f 72 50 72 6f 76 69 6e 63 65 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 tateOrProvinceName,............'
3f940 53 54 27 3a 20 6d 32 2e 4e 49 44 5f 73 74 61 74 65 4f 72 50 72 6f 76 69 6e 63 65 4e 61 6d 65 2c ST':.m2.NID_stateOrProvinceName,
3f960 0a 20 20 20 20 20 20 20 20 20 20 20 27 73 74 61 74 65 4f 72 50 72 6f 76 69 6e 63 65 4e 61 6d 65 ............'stateOrProvinceName
3f980 27 3a 20 6d 32 2e 4e 49 44 5f 73 74 61 74 65 4f 72 50 72 6f 76 69 6e 63 65 4e 61 6d 65 2c 0a 20 ':.m2.NID_stateOrProvinceName,..
3f9a0 20 20 20 20 20 20 20 20 20 20 27 4c 27 3a 20 6d 32 2e 4e 49 44 5f 6c 6f 63 61 6c 69 74 79 4e 61 ..........'L':.m2.NID_localityNa
3f9c0 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 6c 6f 63 61 6c 69 74 79 4e 61 6d 65 27 3a 20 6d me,............'localityName':.m
3f9e0 32 2e 4e 49 44 5f 6c 6f 63 61 6c 69 74 79 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 2.NID_localityName,............'
3fa00 4f 27 3a 20 6d 32 2e 4e 49 44 5f 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 20 O':.m2.NID_organizationName,....
3fa20 20 20 20 20 20 20 20 20 27 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 4e 61 6d 65 27 3a 20 6d 32 2e 4e ........'organizationName':.m2.N
3fa40 49 44 5f 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ID_organizationName,............
3fa60 27 4f 55 27 3a 20 6d 32 2e 4e 49 44 5f 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 61 6c 55 6e 69 74 4e 'OU':.m2.NID_organizationalUnitN
3fa80 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 55 6e 69 ame,............'organizationUni
3faa0 74 4e 61 6d 65 27 3a 20 6d 32 2e 4e 49 44 5f 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 61 6c 55 6e 69 tName':.m2.NID_organizationalUni
3fac0 74 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 43 4e 27 3a 20 6d 32 2e 4e 49 44 5f 63 tName,............'CN':.m2.NID_c
3fae0 6f 6d 6d 6f 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 63 6f 6d 6d 6f 6e 4e 61 6d ommonName,............'commonNam
3fb00 65 27 3a 20 6d 32 2e 4e 49 44 5f 63 6f 6d 6d 6f 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 e':.m2.NID_commonName,..........
3fb20 20 20 27 45 6d 61 69 6c 27 3a 20 6d 32 2e 4e 49 44 5f 70 6b 63 73 39 5f 65 6d 61 69 6c 41 64 64 ..'Email':.m2.NID_pkcs9_emailAdd
3fb40 72 65 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 65 6d 61 69 6c 41 64 64 72 65 73 73 27 3a ress,............'emailAddress':
3fb60 20 6d 32 2e 4e 49 44 5f 70 6b 63 73 39 5f 65 6d 61 69 6c 41 64 64 72 65 73 73 2c 0a 20 20 20 20 .m2.NID_pkcs9_emailAddress,.....
3fb80 20 20 20 20 20 20 20 27 73 65 72 69 61 6c 4e 75 6d 62 65 72 27 3a 20 6d 32 2e 4e 49 44 5f 73 65 .......'serialNumber':.m2.NID_se
3fba0 72 69 61 6c 4e 75 6d 62 65 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 53 4e 27 3a 20 6d 32 2e rialNumber,............'SN':.m2.
3fbc0 4e 49 44 5f 73 75 72 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 73 75 72 6e 61 6d 65 NID_surname,............'surname
3fbe0 27 3a 20 6d 32 2e 4e 49 44 5f 73 75 72 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 47 ':.m2.NID_surname,............'G
3fc00 4e 27 3a 20 6d 32 2e 4e 49 44 5f 67 69 76 65 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 N':.m2.NID_givenName,...........
3fc20 20 27 67 69 76 65 6e 4e 61 6d 65 27 3a 20 6d 32 2e 4e 49 44 5f 67 69 76 65 6e 4e 61 6d 65 0a 20 .'givenName':.m2.NID_givenName..
3fc40 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 66 72 ..........}......m2_x509_name_fr
3fc60 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 ee.=.m2.x509_name_free......def.
3fc80 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 78 35 30 39 5f 6e 61 6d 65 3d 4e 6f 6e 65 2c 20 5f __init__(self,.x509_name=None,._
3fca0 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 pyfree=0):.........#.type:.(byte
3fcc0 73 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 s,.int).->.None.........""".....
3fce0 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 5f 6e 61 6d 65 3a 20 74 68 69 73 20 73 68 6f 75 6c ....:param.x509_name:.this.shoul
3fd00 64 20 62 65 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 4e 41 4d 45 20 62 69 6e 61 72 79 0a 20 20 d.be.OpenSSL.X509_NAME.binary...
3fd20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 20 20 20 20 22 22 ......:param._pyfree:.........""
3fd40 22 0a 20 20 20 20 20 20 20 20 69 66 20 78 35 30 39 5f 6e 61 6d 65 20 69 73 20 6e 6f 74 20 4e 6f ".........if.x509_name.is.not.No
3fd60 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 6e ne:.............assert.m2.x509_n
3fd80 61 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b 28 78 35 30 39 5f 6e 61 6d 65 29 2c 20 22 27 78 35 30 ame_type_check(x509_name),."'x50
3fda0 39 5f 6e 61 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 9_name'.type.error".............
3fdc0 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 20 3d 20 78 35 30 39 5f 6e 61 6d 65 0a 20 20 20 20 20 self.x509_name.=.x509_name......
3fde0 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 .......self._pyfree.=._pyfree...
3fe00 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 ......else:.............self.x50
3fe20 39 5f 6e 61 6d 65 20 3d 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 6e 65 77 28 29 0a 20 20 20 20 9_name.=.m2.x509_name_new().....
3fe40 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 0a 20 20 20 20 64 65 ........self._pyfree.=.1......de
3fe60 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a f.__del__(self):.........#.type:
3fe80 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 .().->.None.........if.getattr(s
3fea0 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 elf,.'_pyfree',.0):.............
3fec0 73 65 6c 66 2e 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 self.m2_x509_name_free(self.x509
3fee0 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 _name)......def.__str__(self):..
3ff00 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 .......#.type:.().->.bytes......
3ff20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 74 79 70 65 5f 63 68 65 63 ...assert.m2.x509_name_type_chec
3ff40 6b 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 k(self.x509_name),.\............
3ff60 20 22 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 ."'x509_name'.type.error".......
3ff80 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 6f 6e 65 6c 69 6e 65 28 73 65 ..return.m2.x509_name_oneline(se
3ffa0 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 61 74 74 72 lf.x509_name)......def.__getattr
3ffc0 5f 5f 28 73 65 6c 66 2c 20 61 74 74 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 __(self,.attr):.........#.type:.
3ffe0 28 73 74 72 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 69 66 20 61 74 74 72 20 69 6e 20 (str).->.str.........if.attr.in.
40000 73 65 6c 66 2e 6e 69 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e self.nid:.............assert.m2.
40020 78 35 30 39 5f 6e 61 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 5f 6e x509_name_type_check(self.x509_n
40040 61 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 27 78 35 30 39 5f 6e ame),.\................."'x509_n
40060 61 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ame'.type.error".............ret
40080 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 urn.six.ensure_text(m2.x509_name
400a0 5f 62 79 5f 6e 69 64 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 73 65 6c 66 2e 6e 69 64 _by_nid(self.x509_name,.self.nid
400c0 5b 61 74 74 72 5d 29 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 61 74 74 72 20 69 6e 20 73 65 6c [attr]))..........if.attr.in.sel
400e0 66 2e 5f 5f 64 69 63 74 5f 5f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 f.__dict__:.............return.s
40100 65 6c 66 2e 5f 5f 64 69 63 74 5f 5f 5b 61 74 74 72 5d 0a 0a 20 20 20 20 20 20 20 20 72 61 69 73 elf.__dict__[attr]..........rais
40120 65 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 28 73 65 6c 66 2c 20 61 74 74 72 29 0a 0a 20 20 e.AttributeError(self,.attr)....
40140 20 20 64 65 66 20 5f 5f 73 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 61 74 74 72 2c 20 76 61 ..def.__setattr__(self,.attr,.va
40160 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 41 6e 79 53 lue):.........#.type:.(str,.AnyS
40180 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a tr).->.int.........""".........:
401a0 72 65 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 6f 66 20 30 20 69 66 20 61 6e return:.1.for.success.of.0.if.an
401c0 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 .error.occurred.........."""....
401e0 20 20 20 20 20 69 66 20 61 74 74 72 20 69 6e 20 73 65 6c 66 2e 6e 69 64 3a 0a 20 20 20 20 20 20 .....if.attr.in.self.nid:.......
40200 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 74 79 70 65 5f 63 ......assert.m2.x509_name_type_c
40220 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 heck(self.x509_name),.\.........
40240 20 20 20 20 20 20 20 20 22 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 22 ........"'x509_name'.type.error"
40260 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 .............return.m2.x509_name
40280 5f 73 65 74 5f 62 79 5f 6e 69 64 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 73 65 6c 66 _set_by_nid(self.x509_name,.self
402a0 2e 6e 69 64 5b 61 74 74 72 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nid[attr],.....................
402c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 78 2e 65 6e 73 75 72 .......................six.ensur
402e0 65 5f 62 69 6e 61 72 79 28 76 61 6c 75 65 29 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f e_binary(value))..........self._
40300 5f 64 69 63 74 5f 5f 5b 61 74 74 72 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 5f _dict__[attr].=.value......def._
40320 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 _len__(self):.........#.type:.()
40340 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e .->.int.........return.m2.x509_n
40360 61 6d 65 5f 65 6e 74 72 79 5f 63 6f 75 6e 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a ame_entry_count(self.x509_name).
40380 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 69 64 78 29 3a .....def.__getitem__(self,.idx):
403a0 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 58 35 30 39 5f 4e .........#.type:.(int).->.X509_N
403c0 61 6d 65 5f 45 6e 74 72 79 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 30 20 3c 3d 20 69 64 ame_Entry.........if.not.0.<=.id
403e0 78 20 3c 20 73 65 6c 66 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 28 29 3a 0a 20 20 20 20 20 20 20 20 x.<.self.entry_count():.........
40400 20 20 20 20 72 61 69 73 65 20 49 6e 64 65 78 45 72 72 6f 72 28 22 69 6e 64 65 78 20 6f 75 74 20 ....raise.IndexError("index.out.
40420 6f 66 20 72 61 6e 67 65 22 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 4e of.range").........return.X509_N
40440 61 6d 65 5f 45 6e 74 72 79 28 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 67 65 74 5f 65 6e 74 72 79 ame_Entry(m2.x509_name_get_entry
40460 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 69 64 78 29 29 0a 0a 20 20 20 20 64 65 66 20 (self.x509_name,.idx))......def.
40480 5f 5f 69 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e __iter__(self):.........for.i.in
404a0 20 72 61 6e 67 65 28 73 65 6c 66 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 28 29 29 3a 0a 20 20 20 20 .range(self.entry_count()):.....
404c0 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 73 65 6c 66 5b 69 5d 0a 0a 20 20 20 20 64 65 66 20 5f ........yield.self[i]......def._
404e0 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 ptr(self):.........assert.m2.x50
40500 39 5f 6e 61 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 9_name_type_check(self.x509_name
40520 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 79 ),.\............."'x509_name'.ty
40540 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 78 35 pe.error".........return.self.x5
40560 30 39 5f 6e 61 6d 65 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 78 09_name......def.add_entry_by_tx
40580 74 28 73 65 6c 66 2c 20 66 69 65 6c 64 2c 20 74 79 70 65 2c 20 65 6e 74 72 79 2c 20 6c 65 6e 2c t(self,.field,.type,.entry,.len,
405a0 20 6c 6f 63 2c 20 73 65 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 65 6e 74 72 79 5f 74 79 70 65 .loc,.set):.........#.entry_type
405c0 3a 20 28 73 74 72 2c 20 69 6e 74 2c 20 62 79 74 65 73 2c 20 69 6e 74 2c 20 69 6e 74 2c 20 69 6e :.(str,.int,.bytes,.int,.int,.in
405e0 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 41 64 t).->.int.........""".........Ad
40600 64 20 58 35 30 39 5f 4e 61 6d 65 20 66 69 65 6c 64 20 77 68 6f 73 65 20 6e 61 6d 65 20 69 73 20 d.X509_Name.field.whose.name.is.
40620 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 69 74 73 20 6e 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 identified.by.its.name..........
40640 20 3a 70 61 72 61 6d 20 66 69 65 6c 64 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 74 72 79 .:param.field:.name.of.the.entry
40660 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 74 79 70 65 3a 20 75 73 65 20 4d 42 53 54 52 49 .........:param.type:.use.MBSTRI
40680 4e 47 5f 41 53 43 20 6f 72 20 4d 42 53 54 52 49 4e 47 5f 55 54 46 38 0a 20 20 20 20 20 20 20 20 NG_ASC.or.MBSTRING_UTF8.........
406a0 20 20 20 20 20 20 20 28 6f 72 20 73 74 61 6e 64 61 72 64 20 41 53 4e 31 20 74 79 70 65 20 6c 69 .......(or.standard.ASN1.type.li
406c0 6b 65 20 56 5f 41 53 4e 31 5f 49 41 35 53 54 52 49 4e 47 29 0a 20 20 20 20 20 20 20 20 3a 70 61 ke.V_ASN1_IA5STRING).........:pa
406e0 72 61 6d 20 65 6e 74 72 79 3a 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 ram.entry:.value.........:param.
40700 6c 65 6e 3a 20 62 75 66 5f 6c 65 6e 20 6f 66 20 74 68 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20 len:.buf_len.of.the.entry.......
40720 20 20 20 20 20 20 20 20 20 28 2d 31 20 61 6e 64 20 74 68 65 20 6c 65 6e 67 74 68 20 69 73 20 63 .........(-1.and.the.length.is.c
40740 6f 6d 70 75 74 65 64 20 61 75 74 6f 6d 61 67 69 63 61 6c 6c 79 29 0a 0a 20 20 20 20 20 20 20 20 omputed.automagically)..........
40760 54 68 65 20 60 60 6c 6f 63 60 60 20 61 6e 64 20 60 60 73 65 74 60 60 20 70 61 72 61 6d 65 74 65 The.``loc``.and.``set``.paramete
40780 72 73 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 72 65 20 61 20 6e 65 77 20 65 6e 74 72 79 0a 20 rs.determine.where.a.new.entry..
407a0 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62 65 20 61 64 64 65 64 2e 0a 20 20 20 20 20 20 20 20 .......should.be.added..........
407c0 46 6f 72 20 61 6c 6d 6f 73 74 20 61 6c 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 6c 6f 63 20 For.almost.all.applications.loc.
407e0 63 61 6e 20 62 65 20 73 65 74 20 74 6f 20 2d 31 20 61 6e 64 20 73 65 74 20 74 6f 20 30 2e 0a 20 can.be.set.to.-1.and.set.to.0...
40800 20 20 20 20 20 20 20 54 68 69 73 20 61 64 64 73 20 61 20 6e 65 77 20 65 6e 74 72 79 20 74 6f 20 .......This.adds.a.new.entry.to.
40820 74 68 65 20 65 6e 64 20 6f 66 20 6e 61 6d 65 20 61 73 20 61 20 73 69 6e 67 6c 65 20 76 61 6c 75 the.end.of.name.as.a.single.valu
40840 65 64 0a 20 20 20 20 20 20 20 20 52 65 6c 61 74 69 76 65 44 69 73 74 69 6e 67 75 69 73 68 65 64 ed.........RelativeDistinguished
40860 4e 61 6d 65 20 28 52 44 4e 29 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6c 6f 63 3a Name.(RDN)...........:param.loc:
40880 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 69 6e 64 65 78 20 77 68 65 72 65 20 74 68 65 20 .determines.the.index.where.the.
408a0 6e 65 77 20 65 6e 74 72 79 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 65 new.entry.is................inse
408c0 72 74 65 64 3a 20 69 66 20 69 74 20 69 73 20 2d 31 20 69 74 20 69 73 20 61 70 70 65 6e 64 65 64 rted:.if.it.is.-1.it.is.appended
408e0 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 65 74 3a 20 64 65 74 65 72 6d 69 6e 65 73 ..........:param.set:.determines
40900 20 68 6f 77 20 74 68 65 20 6e 65 77 20 74 79 70 65 20 69 73 20 61 64 64 65 64 2e 20 49 66 20 69 .how.the.new.type.is.added..If.i
40920 74 20 69 73 20 7a 65 72 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 6e 65 77 20 52 t.is.zero................a.new.R
40940 44 4e 20 69 73 20 63 72 65 61 74 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 66 DN.is.created.................If
40960 20 73 65 74 20 69 73 20 2d 31 20 6f 72 20 31 20 69 74 20 69 73 20 61 64 64 65 64 20 74 6f 20 74 .set.is.-1.or.1.it.is.added.to.t
40980 68 65 20 70 72 65 76 69 6f 75 73 20 6f 72 20 6e 65 78 74 20 52 44 4e 0a 20 20 20 20 20 20 20 20 he.previous.or.next.RDN.........
409a0 20 20 20 20 20 20 20 73 74 72 75 63 74 75 72 65 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54 .......structure.respectively..T
409c0 68 69 73 20 77 69 6c 6c 20 74 68 65 6e 20 62 65 20 61 20 6d 75 6c 74 69 76 61 6c 75 65 64 0a 20 his.will.then.be.a.multivalued..
409e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 44 4e 3a 20 73 69 6e 63 65 20 6d 75 6c 74 69 76 61 ..............RDN:.since.multiva
40a00 6c 75 65 73 20 52 44 4e 73 20 61 72 65 20 76 65 72 79 20 73 65 6c 64 6f 6d 20 75 73 65 64 20 73 lues.RDNs.are.very.seldom.used.s
40a20 65 74 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6d 6f 73 74 20 61 6c 77 61 et.is................almost.alwa
40a40 79 73 20 73 65 74 20 74 6f 20 7a 65 72 6f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e ys.set.to.zero...........:return
40a60 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 6f 66 20 30 20 69 66 20 61 6e 20 65 72 72 6f 72 :.1.for.success.of.0.if.an.error
40a80 20 6f 63 63 75 72 72 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 .occurred..........""".........r
40aa0 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f eturn.m2.x509_name_add_entry_by_
40ac0 74 78 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 txt(self.x509_name,.............
40ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40b00 20 73 69 78 2e 65 6e 73 75 72 65 5f 73 74 72 28 66 69 65 6c 64 29 2c 20 74 79 70 65 2c 0a 20 20 .six.ensure_str(field),.type,...
40b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40b40 20 20 20 20 20 20 20 20 20 20 20 73 69 78 2e 65 6e 73 75 72 65 5f 73 74 72 28 65 6e 74 72 79 29 ...........six.ensure_str(entry)
40b60 2c 20 6c 65 6e 2c 20 6c 6f 63 2c 20 73 65 74 29 0a 0a 20 20 20 20 64 65 66 20 65 6e 74 72 79 5f ,.len,.loc,.set)......def.entry_
40b80 63 6f 75 6e 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 count(self):.........#.type:.().
40ba0 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 ->.int.........return.m2.x509_na
40bc0 6d 65 5f 65 6e 74 72 79 5f 63 6f 75 6e 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a me_entry_count(self.x509_name)..
40be0 20 20 20 20 64 65 66 20 67 65 74 5f 65 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 28 73 65 6c 66 2c ....def.get_entries_by_nid(self,
40c00 20 6e 69 64 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 .nid):.........#.type:.(int).->.
40c20 4c 69 73 74 5b 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 5d 0a 20 20 20 20 20 20 20 20 22 22 List[X509_Name_Entry].........""
40c40 22 0a 20 20 20 20 20 20 20 20 52 65 74 72 69 65 76 65 20 74 68 65 20 6e 65 78 74 20 69 6e 64 65 ".........Retrieve.the.next.inde
40c60 78 20 6d 61 74 63 68 69 6e 67 20 6e 69 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 x.matching.nid...........:param.
40c80 6e 69 64 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 74 72 79 20 28 61 73 20 6d 32 2e 4e 49 nid:.name.of.the.entry.(as.m2.NI
40ca0 44 2a 20 63 6f 6e 73 74 61 6e 74 73 29 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 D*.constants)..........:return:.
40cc0 6c 69 73 74 20 6f 66 20 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 20 69 74 65 6d 73 0a 20 20 list.of.X509_Name_Entry.items...
40ce0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 5b 5d 0a 20 20 20 20 20 ......""".........ret.=.[]......
40d00 20 20 20 6c 61 73 74 70 6f 73 20 3d 20 2d 31 0a 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 54 ...lastpos.=.-1..........while.T
40d20 72 75 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 70 6f 73 20 3d 20 6d 32 2e 78 35 rue:.............lastpos.=.m2.x5
40d40 30 39 5f 6e 61 6d 65 5f 67 65 74 5f 69 6e 64 65 78 5f 62 79 5f 6e 69 64 28 73 65 6c 66 2e 78 35 09_name_get_index_by_nid(self.x5
40d60 30 39 5f 6e 61 6d 65 2c 20 6e 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09_name,.nid,...................
40d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
40da0 20 20 6c 61 73 74 70 6f 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 61 73 74 70 6f ..lastpos).............if.lastpo
40dc0 73 20 3d 3d 20 2d 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 0a s.==.-1:.................break..
40de0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 2e 61 70 70 65 6e 64 28 73 65 6c 66 5b 6c 61 73 74 ............ret.append(self[last
40e00 70 6f 73 5d 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 64 pos])..........return.ret......d
40e20 65 66 20 61 73 5f 74 65 78 74 28 73 65 6c 66 2c 20 69 6e 64 65 6e 74 3d 30 2c 20 66 6c 61 67 73 ef.as_text(self,.indent=0,.flags
40e40 3d 6d 32 2e 58 4e 5f 46 4c 41 47 5f 43 4f 4d 50 41 54 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 =m2.XN_FLAG_COMPAT):.........#.t
40e60 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 ype:.(int,.int).->.str........."
40e80 22 22 0a 20 20 20 20 20 20 20 20 61 73 5f 74 65 78 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e "".........as_text.returns.the.n
40ea0 61 6d 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d ame.as.a.string...........:param
40ec0 20 69 6e 64 65 6e 74 3a 20 45 61 63 68 20 6c 69 6e 65 20 69 6e 20 6d 75 6c 74 69 6c 69 6e 65 20 .indent:.Each.line.in.multiline.
40ee0 66 6f 72 6d 61 74 20 69 73 20 69 6e 64 65 6e 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 format.is.indented..............
40f00 20 20 20 20 20 20 20 20 20 20 62 79 20 74 68 69 73 20 6d 61 6e 79 20 73 70 61 63 65 73 2e 0a 20 ..........by.this.many.spaces...
40f20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6c 61 67 73 3a 20 20 46 6c 61 67 73 20 74 68 61 74 .......:param.flags:..Flags.that
40f40 20 63 6f 6e 74 72 6f 6c 20 68 6f 77 20 74 68 65 20 6f 75 74 70 75 74 20 73 68 6f 75 6c 64 20 62 .control.how.the.output.should.b
40f60 65 20 66 6f 72 6d 61 74 74 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 e.formatted.........."""........
40f80 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b 28 .assert.m2.x509_name_type_check(
40fa0 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 self.x509_name),.\............."
40fc0 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 'x509_name'.type.error".........
40fe0 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 buf.=.BIO.MemoryBuffer()........
41000 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 70 72 69 6e 74 5f 65 78 28 62 75 66 2e 62 69 6f 5f 70 .m2.x509_name_print_ex(buf.bio_p
41020 74 72 28 29 2c 20 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 69 6e 64 65 6e 74 2c 20 66 6c tr(),.self.x509_name,.indent,.fl
41040 61 67 73 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 ags).........return.six.ensure_t
41060 65 78 74 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f ext(buf.read_all())......def.as_
41080 64 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e der(self):.........#.type:.().->
410a0 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 6e 61 .bytes.........assert.m2.x509_na
410c0 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 2c 20 5c me_type_check(self.x509_name),.\
410e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 79 70 65 20 65 ............."'x509_name'.type.e
41100 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d rror".........return.m2.x509_nam
41120 65 5f 67 65 74 5f 64 65 72 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 e_get_der(self.x509_name)......d
41140 65 66 20 61 73 5f 68 61 73 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 ef.as_hash(self):.........#.type
41160 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 :.().->.int.........assert.m2.x5
41180 30 39 5f 6e 61 6d 65 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 09_name_type_check(self.x509_nam
411a0 65 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 e),.\............."'x509_name'.t
411c0 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 ype.error".........return.m2.x50
411e0 39 5f 6e 61 6d 65 5f 68 61 73 68 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 0a 63 6c 9_name_hash(self.x509_name)...cl
41200 61 73 73 20 58 35 30 39 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 2e ass.X509(object):.....""".....X.
41220 35 30 39 20 43 65 72 74 69 66 69 63 61 74 65 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 509.Certificate....."""......m2_
41240 78 35 30 39 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 x509_free.=.m2.x509_free......de
41260 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 78 35 30 39 3d 4e 6f 6e 65 2c 20 5f 70 79 66 f.__init__(self,.x509=None,._pyf
41280 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 ree=0):.........#.type:.(Optiona
412a0 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 l[bytes],.int).->.None........."
412c0 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 3a 20 62 69 6e 61 72 79 20 72 "".........:param.x509:.binary.r
412e0 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 epresentation.of................
41300 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 20 6f 62 6a 65 the.underlying.OpenSSL.X509.obje
41320 63 74 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 ct..........:param._pyfree:.....
41340 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 78 35 30 39 20 69 73 20 6e 6f 74 20 4e ....""".........if.x509.is.not.N
41360 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f one:.............assert.m2.x509_
41380 74 79 70 65 5f 63 68 65 63 6b 28 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 type_check(x509),."'x509'.type.e
413a0 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 20 3d 20 78 35 rror".............self.x509.=.x5
413c0 30 39 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 09.............self._pyfree.=._p
413e0 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 yfree.........else:.............
41400 73 65 6c 66 2e 78 35 30 39 20 3d 20 6d 32 2e 78 35 30 39 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 self.x509.=.m2.x509_new().......
41420 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 ......self._pyfree.=.1......def.
41440 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 __del__(self):.........#.type:.(
41460 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c ).->.None.........if.getattr(sel
41480 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 f,.'_pyfree',.0):.............se
414a0 6c 66 2e 6d 32 5f 78 35 30 39 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 lf.m2_x509_free(self.x509)......
414c0 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 def._ptr(self):.........#.type:.
414e0 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 ().->.bytes.........assert.m2.x5
41500 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 09_type_check(self.x509),."'x509
41520 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c '.type.error".........return.sel
41540 66 2e 78 35 30 39 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 74 65 78 74 28 73 65 6c 66 29 3a 0a 20 f.x509......def.as_text(self):..
41560 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 .......#.type:.().->.str........
41580 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e .assert.m2.x509_type_check(self.
415a0 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 x509),."'x509'.type.error"......
415c0 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 ...buf.=.BIO.MemoryBuffer().....
415e0 20 20 20 20 6d 32 2e 78 35 30 39 5f 70 72 69 6e 74 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c ....m2.x509_print(buf.bio_ptr(),
41600 20 73 65 6c 66 2e 78 35 30 39 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 .self.x509).........return.six.e
41620 6e 73 75 72 65 5f 74 65 78 74 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 20 20 20 20 nsure_text(buf.read_all())......
41640 64 65 66 20 61 73 5f 64 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 def.as_der(self):.........#.type
41660 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e :.().->.bytes.........assert.m2.
41680 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 x509_type_check(self.x509),."'x5
416a0 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 09'.type.error".........return.m
416c0 32 2e 69 32 64 5f 78 35 30 39 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 61 2.i2d_x509(self.x509)......def.a
416e0 73 5f 70 65 6d 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 s_pem(self):.........#.type:.().
41700 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 ->.bytes.........buf.=.BIO.Memor
41720 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 77 72 69 74 65 5f yBuffer().........m2.x509_write_
41740 70 65 6d 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 78 35 30 39 29 0a 20 20 pem(buf.bio_ptr(),.self.x509)...
41760 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 ......return.buf.read_all().....
41780 20 64 65 66 20 73 61 76 65 5f 70 65 6d 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d 65 29 3a 0a 20 .def.save_pem(self,.filename):..
417a0 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 69 6e 74 0a 20 .......#.type:.(AnyStr).->.int..
417c0 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 .......""".........:param.filena
417e0 6d 65 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 6f 20 62 65 20 6c 6f 61 64 65 me:.name.of.the.file.to.be.loade
41800 64 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 d.........:return:.1.for.success
41820 20 6f 72 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 .or.0.for.failure........."""...
41840 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 ......with.BIO.openfile(filename
41860 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ,.'wb').as.bio:.............retu
41880 72 6e 20 6d 32 2e 78 35 30 39 5f 77 72 69 74 65 5f 70 65 6d 28 62 69 6f 2e 62 69 6f 5f 70 74 72 rn.m2.x509_write_pem(bio.bio_ptr
418a0 28 29 2c 20 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 28 73 65 6c (),.self.x509)......def.save(sel
418c0 66 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a f,.filename,.format=FORMAT_PEM):
418e0 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d .........#.type:.(AnyStr,.int).-
41900 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 73 20 >.int.........""".........Saves.
41920 58 2e 35 30 39 20 63 65 72 74 69 66 69 63 61 74 65 20 74 6f 20 61 20 66 69 6c 65 2e 20 44 65 66 X.509.certificate.to.a.file..Def
41940 61 75 6c 74 20 6f 75 74 70 75 74 0a 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 20 69 73 20 50 45 ault.output.........format.is.PE
41960 4d 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 4e 61 6d M...........:param.filename:.Nam
41980 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 68 65 20 63 65 72 74 20 77 69 6c 6c 20 62 65 20 73 e.of.the.file.the.cert.will.be.s
419a0 61 76 65 64 20 74 6f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 3a aved.to...........:param.format:
419c0 20 43 6f 6e 74 72 6f 6c 73 20 77 68 61 74 20 6f 75 74 70 75 74 20 66 6f 72 6d 61 74 20 69 73 20 .Controls.what.output.format.is.
419e0 75 73 65 64 20 74 6f 20 73 61 76 65 20 74 68 65 20 63 65 72 74 2e 0a 20 20 20 20 20 20 20 20 20 used.to.save.the.cert...........
41a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 50 45 4d 20 ..............Either.FORMAT_PEM.
41a20 6f 72 20 46 4f 52 4d 41 54 5f 44 45 52 20 74 6f 20 73 61 76 65 20 69 6e 20 50 45 4d 20 6f 72 0a or.FORMAT_DER.to.save.in.PEM.or.
41a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 45 52 20 66 6f 72 6d 61 .......................DER.forma
41a60 74 2e 20 20 52 61 69 73 65 73 20 61 20 56 61 6c 75 65 45 72 72 6f 72 20 69 66 20 61 6e 20 75 6e t...Raises.a.ValueError.if.an.un
41a80 6b 6e 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d know........................form
41aa0 61 74 20 69 73 20 75 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 at.is.used...........:return:.1.
41ac0 66 6f 72 20 73 75 63 63 65 73 73 20 6f 72 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 for.success.or.0.for.failure....
41ae0 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 .....""".........with.BIO.openfi
41b00 6c 65 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 le(filename,.'wb').as.bio:......
41b20 20 20 20 20 20 20 20 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 50 45 4d 3a 0a .......if.format.==.FORMAT_PEM:.
41b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 77 ................return.m2.x509_w
41b60 72 69 74 65 5f 70 65 6d 28 62 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 78 35 30 rite_pem(bio.bio_ptr(),.self.x50
41b80 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 9).............elif.format.==.FO
41ba0 52 4d 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e RMAT_DER:.................return
41bc0 20 6d 32 2e 69 32 64 5f 78 35 30 39 5f 62 69 6f 28 62 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 .m2.i2d_x509_bio(bio.bio_ptr(),.
41be0 73 65 6c 66 2e 78 35 30 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 self.x509).............else:....
41c00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 .............raise.ValueError(..
41c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 6b 6e 6f 77 6e 20 66 69 6c 65 ..................."Unknown.file
41c40 74 79 70 65 2e 20 4d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 50 45 4d 20 type..Must.be.either.FORMAT_PEM.
41c60 6f 72 20 46 4f 52 4d 41 54 5f 44 45 52 22 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 76 65 72 or.FORMAT_DER")......def.set_ver
41c80 73 69 6f 6e 28 73 65 6c 66 2c 20 76 65 72 73 69 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 sion(self,.version):.........#.t
41ca0 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 ype:.(int).->.int........."""...
41cc0 20 20 20 20 20 20 53 65 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 ......Set.version.of.the.certifi
41ce0 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 76 65 72 73 69 6f 6e 3a 20 56 cate...........:param.version:.V
41d00 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 ersion.number..........:return:.
41d20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 30 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 .......Returns.0.on.failure.....
41d40 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f .....""".........assert.m2.x509_
41d60 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 type_check(self.x509),."'x509'.t
41d80 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 ype.error".........return.m2.x50
41da0 39 5f 73 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 78 35 30 39 2c 20 76 65 72 73 69 6f 6e 9_set_version(self.x509,.version
41dc0 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 28 73 65 6c 66 2c 20 )......def.set_not_before(self,.
41de0 61 73 6e 31 5f 74 69 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e asn1_time):.........#.type:.(ASN
41e00 31 2e 41 53 4e 31 5f 54 49 4d 45 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 1.ASN1_TIME).->.int.........""".
41e20 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 30 ........:return:.1.on.success,.0
41e40 20 6f 6e 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 .on.failure.........""".........
41e60 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 assert.m2.x509_type_check(self.x
41e80 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 509),."'x509'.type.error".......
41ea0 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 28 ..return.m2.x509_set_not_before(
41ec0 73 65 6c 66 2e 78 35 30 39 2c 20 61 73 6e 31 5f 74 69 6d 65 2e 5f 70 74 72 28 29 29 0a 0a 20 20 self.x509,.asn1_time._ptr())....
41ee0 20 20 64 65 66 20 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 28 73 65 6c 66 2c 20 61 73 6e 31 5f 74 ..def.set_not_after(self,.asn1_t
41f00 69 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 2e 41 53 4e 31 ime):.........#.type:.(ASN1.ASN1
41f20 5f 54 49 4d 45 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 _TIME).->.int.........""".......
41f40 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 30 20 6f 6e 20 66 61 ..:return:.1.on.success,.0.on.fa
41f60 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 ilure.........""".........assert
41f80 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 .m2.x509_type_check(self.x509),.
41fa0 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 "'x509'.type.error".........retu
41fc0 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 28 73 65 6c 66 2e 78 35 rn.m2.x509_set_not_after(self.x5
41fe0 30 39 2c 20 61 73 6e 31 5f 74 69 6d 65 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 09,.asn1_time._ptr())......def.s
42000 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 et_subject_name(self,.name):....
42020 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 5f 4e 61 6d 65 29 20 2d 3e 20 69 6e 74 0a .....#.type:.(X509_Name).->.int.
42040 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 6f ........""".........:return:.1.o
42060 6e 20 73 75 63 63 65 73 73 2c 20 30 20 6f 6e 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 n.success,.0.on.failure.........
42080 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f """.........assert.m2.x509_type_
420a0 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 check(self.x509),."'x509'.type.e
420c0 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 rror".........return.m2.x509_set
420e0 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 78 35 30 39 2c 20 6e 61 6d 65 2e 78 35 _subject_name(self.x509,.name.x5
42100 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 09_name)......def.set_issuer_nam
42120 65 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 e(self,.name):.........#.type:.(
42140 58 35 30 39 5f 4e 61 6d 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 X509_Name).->.int........."""...
42160 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 30 20 6f ......:return:.1.on.success,.0.o
42180 6e 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 n.failure.........""".........as
421a0 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 sert.m2.x509_type_check(self.x50
421c0 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 9),."'x509'.type.error".........
421e0 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 28 73 return.m2.x509_set_issuer_name(s
42200 65 6c 66 2e 78 35 30 39 2c 20 6e 61 6d 65 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 elf.x509,.name.x509_name)......d
42220 65 66 20 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ef.get_version(self):.........#.
42240 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d type:.().->.int.........assert.m
42260 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 2.x509_type_check(self.x509),."'
42280 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e x509'.type.error".........return
422a0 20 6d 32 2e 78 35 30 39 5f 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 78 35 30 39 29 0a .m2.x509_get_version(self.x509).
422c0 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 29 .....def.get_serial_number(self)
422e0 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 41 53 4e 31 2e 41 53 4e :.........#.type:.().->.ASN1.ASN
42300 31 5f 49 6e 74 65 67 65 72 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 1_Integer.........assert.m2.x509
42320 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 _type_check(self.x509),."'x509'.
42340 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 type.error".........asn1_integer
42360 20 3d 20 6d 32 2e 78 35 30 39 5f 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c .=.m2.x509_get_serial_number(sel
42380 66 2e 78 35 30 39 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 61 73 6e 31 5f 69 f.x509).........return.m2.asn1_i
423a0 6e 74 65 67 65 72 5f 67 65 74 28 61 73 6e 31 5f 69 6e 74 65 67 65 72 29 0a 0a 20 20 20 20 64 65 nteger_get(asn1_integer)......de
423c0 66 20 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 2c 20 73 65 72 69 61 6c f.set_serial_number(self,.serial
423e0 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 2e 41 53 4e 31 5f 49 6e ):.........#.type:.(ASN1.ASN1_In
42400 74 65 67 65 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 teger).->.int.........""".......
42420 20 20 53 65 74 20 73 65 72 69 61 6c 20 6e 75 6d 62 65 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 ..Set.serial.number...........:p
42440 61 72 61 6d 20 73 65 72 69 61 6c 3a 20 20 53 65 72 69 61 6c 20 6e 75 6d 62 65 72 2e 0a 0a 20 20 aram.serial:..Serial.number.....
42460 20 20 20 20 20 20 3a 72 65 74 75 72 6e 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 ......:return.1.for.success.and.
42480 30 20 66 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 0.for.failure.........."""......
424a0 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c ...assert.m2.x509_type_check(sel
424c0 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 f.x509),."'x509'.type.error"....
424e0 20 20 20 20 20 23 20 54 68 69 73 20 22 6d 61 67 69 63 61 6c 6c 79 22 20 63 68 61 6e 67 65 73 20 .....#.This."magically".changes.
42500 73 65 72 69 61 6c 20 73 69 6e 63 65 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 serial.since.asn1_integer.......
42520 20 20 23 20 69 73 20 43 20 70 6f 69 6e 74 65 72 20 74 6f 20 78 35 30 39 27 73 20 69 6e 74 65 72 ..#.is.C.pointer.to.x509's.inter
42540 6e 61 6c 20 73 65 72 69 61 6c 20 6e 75 6d 62 65 72 2e 0a 20 20 20 20 20 20 20 20 61 73 6e 31 5f nal.serial.number..........asn1_
42560 69 6e 74 65 67 65 72 20 3d 20 6d 32 2e 78 35 30 39 5f 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d integer.=.m2.x509_get_serial_num
42580 62 65 72 28 73 65 6c 66 2e 78 35 30 39 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 ber(self.x509).........return.m2
425a0 2e 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 73 65 74 28 61 73 6e 31 5f 69 6e 74 65 67 65 72 2c 20 .asn1_integer_set(asn1_integer,.
425c0 73 65 72 69 61 6c 29 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 4f 72 20 73 68 6f 75 6c 64 20 serial).........#.XXX.Or.should.
425e0 49 20 64 6f 20 74 68 69 73 3f 0a 20 20 20 20 20 20 20 20 23 20 61 73 6e 31 5f 69 6e 74 65 67 65 I.do.this?.........#.asn1_intege
42600 72 20 3d 20 6d 32 2e 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 r.=.m2.asn1_integer_new().......
42620 20 20 23 20 6d 32 2e 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 73 65 74 28 61 73 6e 31 5f 69 6e 74 ..#.m2.asn1_integer_set(asn1_int
42640 65 67 65 72 2c 20 73 65 72 69 61 6c 29 0a 20 20 20 20 20 20 20 20 23 20 72 65 74 75 72 6e 20 6d eger,.serial).........#.return.m
42660 32 2e 78 35 30 39 5f 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 2e 78 35 2.x509_set_serial_number(self.x5
42680 30 39 2c 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6e 09,.asn1_integer)......def.get_n
426a0 6f 74 5f 62 65 66 6f 72 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a ot_before(self):.........#.type:
426c0 20 28 29 20 2d 3e 20 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 0a 20 20 20 20 20 20 20 20 61 73 .().->.ASN1.ASN1_TIME.........as
426e0 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 sert.m2.x509_type_check(self.x50
42700 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 9),."'x509'.type.error".........
42720 72 65 74 75 72 6e 20 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 28 6d 32 2e 78 35 30 39 5f 67 65 return.ASN1.ASN1_TIME(m2.x509_ge
42740 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 28 73 65 6c 66 2e 78 35 30 39 29 29 0a 0a 20 20 20 20 64 65 t_not_before(self.x509))......de
42760 66 20 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 f.get_not_after(self):.........#
42780 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 0a 20 20 20 20 .type:.().->.ASN1.ASN1_TIME.....
427a0 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 ....assert.m2.x509_type_check(se
427c0 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 lf.x509),."'x509'.type.error"...
427e0 20 20 20 20 20 20 6f 75 74 20 3d 20 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 28 6d 32 2e 78 35 ......out.=.ASN1.ASN1_TIME(m2.x5
42800 30 39 5f 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 28 73 65 6c 66 2e 78 35 30 39 29 29 0a 20 20 20 09_get_not_after(self.x509))....
42820 20 20 20 20 20 69 66 20 27 42 61 64 20 74 69 6d 65 20 76 61 6c 75 65 27 20 69 6e 20 73 74 72 28 .....if.'Bad.time.value'.in.str(
42840 6f 75 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 58 35 30 39 45 72 72 6f out):.............raise.X509Erro
42860 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 4d 32 43 72 79 70 74 6f 20 63 r(.................'''M2Crypto.c
42880 61 6e 6e 6f 74 20 68 61 6e 64 6c 65 20 64 61 74 65 73 20 61 66 74 65 72 20 79 65 61 72 20 32 30 annot.handle.dates.after.year.20
428a0 35 30 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 65 20 52 46 43 20 35 32 38 30 50..................See.RFC.5280
428c0 20 34 2e 31 2e 32 2e 35 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 20 .4.1.2.5.for.more.information...
428e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 27 27 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 ...............''').........retu
42900 72 6e 20 6f 75 74 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 29 rn.out......def.get_pubkey(self)
42920 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 45 56 50 2e 50 4b 65 79 :.........#.type:.().->.EVP.PKey
42940 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 .........assert.m2.x509_type_che
42960 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f ck(self.x509),."'x509'.type.erro
42980 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 45 56 50 2e 50 4b 65 79 28 6d 32 2e 78 35 r".........return.EVP.PKey(m2.x5
429a0 30 39 5f 67 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 5f 70 79 66 72 65 09_get_pubkey(self.x509),._pyfre
429c0 65 3d 31 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 2c 20 70 e=1)......def.set_pubkey(self,.p
429e0 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 45 56 50 2e 50 4b 65 79 29 key):.........#.type:.(EVP.PKey)
42a00 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 .->.int.........""".........Set.
42a20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 66 6f 72 20 74 68 65 20 63 65 72 74 69 66 69 63 61 the.public.key.for.the.certifica
42a40 74 65 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6b 65 79 3a 20 50 75 62 6c 69 63 20 te..........:param.pkey:.Public.
42a60 6b 65 79 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 20 31 20 66 6f 72 20 73 75 63 63 65 key..........:return.1.for.succe
42a80 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 ss.and.0.for.failure........."""
42aa0 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 .........assert.m2.x509_type_che
42ac0 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f ck(self.x509),."'x509'.type.erro
42ae0 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 70 75 r".........return.m2.x509_set_pu
42b00 62 6b 65 79 28 73 65 6c 66 2e 78 35 30 39 2c 20 70 6b 65 79 2e 70 6b 65 79 29 0a 0a 20 20 20 20 bkey(self.x509,.pkey.pkey)......
42b20 64 65 66 20 67 65 74 5f 69 73 73 75 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 def.get_issuer(self):.........#.
42b40 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 5f 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 61 73 type:.().->.X509_Name.........as
42b60 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 sert.m2.x509_type_check(self.x50
42b80 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 9),."'x509'.type.error".........
42ba0 72 65 74 75 72 6e 20 58 35 30 39 5f 4e 61 6d 65 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 69 73 73 return.X509_Name(m2.x509_get_iss
42bc0 75 65 72 5f 6e 61 6d 65 28 73 65 6c 66 2e 78 35 30 39 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 uer_name(self.x509))......def.se
42be0 74 5f 69 73 73 75 65 72 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 t_issuer(self,.name):.........#.
42c00 74 79 70 65 3a 20 28 58 35 30 39 5f 4e 61 6d 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 type:.(X509_Name).->.int........
42c20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 69 73 73 75 65 72 20 6e 61 6d 65 2e 0a 0a 20 .""".........Set.issuer.name....
42c40 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6e 61 6d 65 3a 20 20 20 20 73 75 62 6a 65 63 74 4e 61 .......:param.name:....subjectNa
42c60 6d 65 20 66 69 65 6c 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 20 31 20 66 6f 72 me.field...........:return.1.for
42c80 20 73 75 63 63 65 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 .success.and.0.for.failure......
42ca0 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 ...""".........assert.m2.x509_ty
42cc0 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 pe_check(self.x509),."'x509'.typ
42ce0 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f e.error".........return.m2.x509_
42d00 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 28 73 65 6c 66 2e 78 35 30 39 2c 20 6e 61 6d 65 2e set_issuer_name(self.x509,.name.
42d20 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 75 62 6a 65 63 74 28 x509_name)......def.get_subject(
42d40 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 self):.........#.type:.().->.X50
42d60 39 5f 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 9_Name.........assert.m2.x509_ty
42d80 70 65 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 pe_check(self.x509),."'x509'.typ
42da0 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 4e 61 6d e.error".........return.X509_Nam
42dc0 65 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2e e(m2.x509_get_subject_name(self.
42de0 78 35 30 39 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 75 62 6a 65 63 74 28 73 65 6c 66 x509))......def.set_subject(self
42e00 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 5f 4e ,.name):.........#.type:.(X509_N
42e20 61 6d 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 ame).->.int.........""".........
42e40 53 65 74 20 73 75 62 6a 65 63 74 20 6e 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 Set.subject.name...........:para
42e60 6d 20 6e 61 6d 65 3a 20 20 20 20 73 75 62 6a 65 63 74 4e 61 6d 65 20 66 69 65 6c 64 2e 0a 0a 20 m.name:....subjectName.field....
42e80 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 .......:return.1.for.success.and
42ea0 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .0.for.failure........."""......
42ec0 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 6b 28 73 65 6c ...assert.m2.x509_type_check(sel
42ee0 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 f.x509),."'x509'.type.error"....
42f00 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 73 75 62 6a 65 63 74 5f .....return.m2.x509_set_subject_
42f20 6e 61 6d 65 28 73 65 6c 66 2e 78 35 30 39 2c 20 6e 61 6d 65 2e 78 35 30 39 5f 6e 61 6d 65 29 0a name(self.x509,.name.x509_name).
42f40 0a 20 20 20 20 64 65 66 20 61 64 64 5f 65 78 74 28 73 65 6c 66 2c 20 65 78 74 29 3a 0a 20 20 20 .....def.add_ext(self,.ext):....
42f60 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 29 20 2d 3e .....#.type:.(X509_Extension).->
42f80 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 41 64 64 20 58 35 30 .int.........""".........Add.X50
42fa0 39 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68 69 73 20 63 65 72 74 69 66 69 63 61 74 65 2e 9.extension.to.this.certificate.
42fc0 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 65 78 74 3a 20 20 20 20 45 78 74 65 6e 73 69 ..........:param.ext:....Extensi
42fe0 6f 6e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 20 31 20 66 6f 72 20 73 75 63 63 65 73 on..........:return.1.for.succes
43000 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a s.and.0.for.failure.........""".
43020 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 5f 63 68 65 63 ........assert.m2.x509_type_chec
43040 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 65 72 72 6f 72 k(self.x509),."'x509'.type.error
43060 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 61 64 64 5f 65 78 74 ".........return.m2.x509_add_ext
43080 28 73 65 6c 66 2e 78 35 30 39 2c 20 65 78 74 2e 78 35 30 39 5f 65 78 74 2c 20 2d 31 29 0a 0a 20 (self.x509,.ext.x509_ext,.-1)...
430a0 20 20 20 64 65 66 20 67 65 74 5f 65 78 74 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 20 ...def.get_ext(self,.name):.....
430c0 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 58 35 30 39 5f 45 78 74 65 6e 73 ....#.type:.(str).->.X509_Extens
430e0 69 6f 6e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 58 35 30 39 ion.........""".........Get.X509
43100 20 65 78 74 65 6e 73 69 6f 6e 20 62 79 20 6e 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 .extension.by.name...........:pa
43120 72 61 6d 20 6e 61 6d 65 3a 20 20 20 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 74 65 6e 73 69 ram.name:....Name.of.the.extensi
43140 6f 6e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 58 35 30 39 5f on..........:return:.......X509_
43160 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 Extension.........""".........#.
43180 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 6f 20 72 65 64 75 63 65 20 61 74 74 72 69 62 75 74 Optimizations.to.reduce.attribut
431a0 65 20 61 63 63 65 73 73 65 73 0a 20 20 20 20 20 20 20 20 6d 32 78 35 30 39 5f 67 65 74 5f 65 78 e.accesses.........m2x509_get_ex
431c0 74 20 3d 20 6d 32 2e 78 35 30 39 5f 67 65 74 5f 65 78 74 0a 20 20 20 20 20 20 20 20 6d 32 78 35 t.=.m2.x509_get_ext.........m2x5
431e0 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 20 3d 20 6d 32 2e 78 35 30 39 5f 09_extension_get_name.=.m2.x509_
43200 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 78 35 30 39 20 extension_get_name.........x509.
43220 3d 20 73 65 6c 66 2e 78 35 30 39 0a 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 73 69 78 2e =.self.x509..........name.=.six.
43240 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 ensure_binary(name).........for.
43260 69 20 69 6e 20 72 61 6e 67 65 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 i.in.range(m2.x509_get_ext_count
43280 28 78 35 30 39 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 5f 70 74 72 20 3d 20 6d (x509)):.............ext_ptr.=.m
432a0 32 78 35 30 39 5f 67 65 74 5f 65 78 74 28 78 35 30 39 2c 20 69 29 0a 20 20 20 20 20 20 20 20 20 2x509_get_ext(x509,.i)..........
432c0 20 20 20 69 66 20 6d 32 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 28 ...if.m2x509_extension_get_name(
432e0 65 78 74 5f 70 74 72 29 20 3d 3d 20 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ext_ptr).==.name:...............
43300 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 65 78 74 5f 70 74 72 2c ..return.X509_Extension(ext_ptr,
43320 20 5f 70 79 66 72 65 65 3d 30 29 0a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4c 6f 6f 6b 75 ._pyfree=0)..........raise.Looku
43340 70 45 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 65 78 74 5f 61 74 28 73 65 6c 66 2c pError......def.get_ext_at(self,
43360 20 69 6e 64 65 78 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d .index):.........#.type:.(int).-
43380 3e 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 >.X509_Extension........."""....
433a0 20 20 20 20 20 47 65 74 20 58 35 30 39 20 65 78 74 65 6e 73 69 6f 6e 20 62 79 20 69 6e 64 65 78 .....Get.X509.extension.by.index
433c0 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 6e 64 65 78 3a 20 20 20 20 4e 61 6d 65 ...........:param.index:....Name
433e0 20 6f 66 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 .of.the.extension..........:retu
43400 72 6e 3a 20 20 20 20 20 20 20 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 20 20 rn:........X509_Extension.......
43420 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 69 6e 64 65 78 20 3c 20 30 20 6f 72 20 69 6e ..""".........if.index.<.0.or.in
43440 64 65 78 20 3e 3d 20 73 65 6c 66 2e 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 29 3a 0a 20 20 20 dex.>=.self.get_ext_count():....
43460 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 6e 64 65 78 45 72 72 6f 72 0a 0a 20 20 20 20 20 .........raise.IndexError.......
43480 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 6d 32 2e 78 35 30 39 ...return.X509_Extension(m2.x509
434a0 5f 67 65 74 5f 65 78 74 28 73 65 6c 66 2e 78 35 30 39 2c 20 69 6e 64 65 78 29 2c 0a 20 20 20 20 _get_ext(self.x509,.index),.....
434c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 70 79 66 72 65 .........................._pyfre
434e0 65 3d 30 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 73 65 6c 66 e=0)......def.get_ext_count(self
43500 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 ):.........#.type:.().->.int....
43520 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 58 35 30 39 20 65 78 74 65 6e 73 .....""".........Get.X509.extens
43540 69 6f 6e 20 63 6f 75 6e 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 ion.count..........""".........r
43560 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 73 65 6c 66 eturn.m2.x509_get_ext_count(self
43580 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 28 73 65 6c 66 2c 20 70 6b 65 79 2c .x509)......def.sign(self,.pkey,
435a0 20 6d 64 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 45 56 50 2e 50 4b 65 79 2c .md):.........#.type:.(EVP.PKey,
435c0 20 73 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 .str).->.int........."""........
435e0 20 53 69 67 6e 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 .Sign.the.certificate...........
43600 3a 70 61 72 61 6d 20 70 6b 65 79 3a 20 50 75 62 6c 69 63 20 6b 65 79 0a 0a 20 20 20 20 20 20 20 :param.pkey:.Public.key.........
43620 20 3a 70 61 72 61 6d 20 6d 64 3a 20 20 20 4d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 61 6c 67 .:param.md:...Message.digest.alg
43640 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 66 6f 72 20 73 69 67 6e 69 6e 67 2c 0a 20 20 20 20 20 orithm.to.use.for.signing,......
43660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 73 68 61 ................for.example.'sha
43680 31 27 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 20 69 6e 74 0a 20 20 20 20 20 20 20 1'...........:return.int........
436a0 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 .""".........assert.m2.x509_type
436c0 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 _check(self.x509),."'x509'.type.
436e0 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 6d 64 61 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c error".........mda.=.getattr(m2,
43700 20 6d 64 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6d 64 61 20 69 73 20 4e 6f 6e .md,.None).........if.mda.is.Non
43720 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 e:.............raise.ValueError(
43740 27 75 6e 6b 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 27 2c 20 6d 64 29 0a 20 20 'unknown.message.digest',.md)...
43760 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 69 67 6e 28 73 65 6c 66 2e 78 ......return.m2.x509_sign(self.x
43780 35 30 39 2c 20 70 6b 65 79 2e 70 6b 65 79 2c 20 6d 64 61 28 29 29 0a 0a 20 20 20 20 64 65 66 20 509,.pkey.pkey,.mda())......def.
437a0 76 65 72 69 66 79 28 73 65 6c 66 2c 20 70 6b 65 79 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 verify(self,.pkey=None):........
437c0 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 45 56 50 2e 50 4b 65 79 5d 29 20 2d 3e .#.type:.(Optional[EVP.PKey]).->
437e0 20 69 6e 74 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 35 30 39 5f 74 79 70 65 .int.........assert.m2.x509_type
43800 5f 63 68 65 63 6b 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 22 27 78 35 30 39 27 20 74 79 70 65 20 _check(self.x509),."'x509'.type.
43820 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 69 66 20 70 6b 65 79 3a 0a 20 20 20 20 20 20 20 20 error".........if.pkey:.........
43840 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 78 ....return.m2.x509_verify(self.x
43860 35 30 39 2c 20 70 6b 65 79 2e 70 6b 65 79 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 509,.pkey.pkey).........else:...
43880 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 76 65 72 69 66 79 28 ..........return.m2.x509_verify(
438a0 73 65 6c 66 2e 78 35 30 39 2c 20 73 65 6c 66 2e 67 65 74 5f 70 75 62 6b 65 79 28 29 2e 70 6b 65 self.x509,.self.get_pubkey().pke
438c0 79 29 0a 0a 20 20 20 20 64 65 66 20 63 68 65 63 6b 5f 63 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 y)......def.check_ca(self):.....
438e0 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 ....#.type:.().->.int.........""
43900 22 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 ".........Check.if.the.certifica
43920 74 65 20 69 73 20 61 20 43 65 72 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28 43 te.is.a.Certificate.Authority.(C
43940 41 29 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e A).certificate...........:return
43960 3a 20 30 20 69 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 6e 6f 74 20 43 41 :.0.if.the.certificate.is.not.CA
43980 2c 20 6e 6f 6e 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 ,.nonzero.otherwise...........:r
439a0 65 71 75 69 72 65 73 3a 20 4f 70 65 6e 53 53 4c 20 30 2e 39 2e 38 20 6f 72 20 6e 65 77 65 72 0a equires:.OpenSSL.0.9.8.or.newer.
439c0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 ........""".........return.m2.x5
439e0 30 39 5f 63 68 65 63 6b 5f 63 61 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 09_check_ca(self.x509)......def.
43a00 63 68 65 63 6b 5f 70 75 72 70 6f 73 65 28 73 65 6c 66 2c 20 69 64 2c 20 63 61 29 3a 0a 20 20 20 check_purpose(self,.id,.ca):....
43a20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 .....#.type:.(int,.int).->.int..
43a40 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 .......""".........Check.if.the.
43a60 63 65 72 74 69 66 69 63 61 74 65 27 73 20 70 75 72 70 6f 73 65 20 6d 61 74 63 68 65 73 20 74 68 certificate's.purpose.matches.th
43a80 65 20 61 73 6b 65 64 20 70 75 72 70 6f 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d e.asked.purpose...........:param
43aa0 20 69 64 3a 20 50 75 72 70 6f 73 65 20 69 64 2e 20 53 65 65 20 58 35 30 39 5f 50 55 52 50 4f 53 .id:.Purpose.id..See.X509_PURPOS
43ac0 45 5f 2a 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 E_*.constants...........:param.c
43ae0 61 3a 20 31 20 69 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73 68 6f 75 6c 64 20 62 a:.1.if.the.certificate.should.b
43b00 65 20 43 41 2c 20 30 20 6f 74 68 65 72 77 69 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 e.CA,.0.otherwise...........:ret
43b20 75 72 6e 3a 20 30 20 69 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 70 75 72 70 6f 73 urn:.0.if.the.certificate.purpos
43b40 65 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 2c 20 6e 6f 6e 7a 65 72 6f 0a 20 20 20 20 20 20 e.does.not.match,.nonzero.......
43b60 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 2e 0a 20 20 20 20 20 20 20 20 22 22 ...........otherwise..........""
43b80 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 63 68 65 63 6b 5f 70 ".........return.m2.x509_check_p
43ba0 75 72 70 6f 73 65 28 73 65 6c 66 2e 78 35 30 39 2c 20 69 64 2c 20 63 61 29 0a 0a 20 20 20 20 64 urpose(self.x509,.id,.ca)......d
43bc0 65 66 20 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 28 73 65 6c 66 2c 20 6d 64 3d 27 6d 64 35 ef.get_fingerprint(self,.md='md5
43be0 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 73 74 72 '):.........#.type:.(str).->.str
43c00 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 74 68 65 20 66 69 6e .........""".........Get.the.fin
43c20 67 65 72 70 72 69 6e 74 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 gerprint.of.the.certificate.....
43c40 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 64 3a 20 4d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 ......:param.md:.Message.digest.
43c60 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 algorithm.to.use...........:retu
43c80 72 6e 3a 20 20 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 66 69 6e 67 rn:...String.containing.the.fing
43ca0 65 72 70 72 69 6e 74 20 69 6e 20 68 65 78 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 20 20 20 20 22 erprint.in.hex.format.........."
43cc0 22 22 0a 20 20 20 20 20 20 20 20 64 65 72 20 3d 20 73 65 6c 66 2e 61 73 5f 64 65 72 28 29 0a 20 "".........der.=.self.as_der()..
43ce0 20 20 20 20 20 20 20 6d 64 20 3d 20 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 28 6d 64 .......md.=.EVP.MessageDigest(md
43d00 29 0a 20 20 20 20 20 20 20 20 6d 64 2e 75 70 64 61 74 65 28 64 65 72 29 0a 20 20 20 20 20 20 20 ).........md.update(der)........
43d20 20 64 69 67 65 73 74 20 3d 20 6d 64 2e 66 69 6e 61 6c 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 .digest.=.md.final().........ret
43d40 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 62 69 6e 61 73 63 69 69 2e 68 65 78 urn.six.ensure_text(binascii.hex
43d60 6c 69 66 79 28 64 69 67 65 73 74 29 2e 75 70 70 65 72 28 29 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 lify(digest).upper())...def.load
43d80 5f 63 65 72 74 28 66 69 6c 65 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a _cert(file,.format=FORMAT_PEM):.
43da0 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 58 35 30 ....#.type:.(AnyStr,.int).->.X50
43dc0 39 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 66 9.....""".....Load.certificate.f
43de0 72 6f 6d 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 rom.file.......:param.file:.Name
43e00 20 6f 66 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 65 72 74 69 66 69 63 61 74 65 20 .of.file.containing.certificate.
43e20 69 6e 20 65 69 74 68 65 72 20 44 45 52 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in.either.DER.or................
43e40 20 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 ..PEM.format.......:param.format
43e60 3a 20 44 65 73 63 72 69 62 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 66 69 :.Describes.the.format.of.the.fi
43e80 6c 65 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le.to.be.loaded,................
43ea0 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 52 2e 0a 0a 20 20 20 20 3a 72 65 74 ....either.PEM.or.DER.......:ret
43ec0 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6f 62 6a 65 63 74 2e 0a urn:.M2Crypto.X509.X509.object..
43ee0 20 20 20 20 22 22 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 ....""".....with.BIO.openfile(fi
43f00 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 69 66 20 66 6f 72 6d 61 74 20 3d 3d le).as.bio:.........if.format.==
43f20 20 46 4f 52 4d 41 54 5f 50 45 4d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .FORMAT_PEM:.............return.
43f40 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 28 62 69 6f 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 load_cert_bio(bio).........elif.
43f60 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 20 20 20 20 format.==.FORMAT_DER:...........
43f80 20 20 63 70 74 72 20 3d 20 6d 32 2e 64 32 69 5f 78 35 30 39 28 62 69 6f 2e 5f 70 74 72 28 29 29 ..cptr.=.m2.d2i_x509(bio._ptr())
43fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 28 63 70 74 72 2c 20 5f .............return.X509(cptr,._
43fc0 70 79 66 72 65 65 3d 31 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 pyfree=1).........else:.........
43fe0 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 ....raise.ValueError(...........
44000 20 20 20 20 20 20 22 55 6e 6b 6e 6f 77 6e 20 66 6f 72 6d 61 74 2e 20 4d 75 73 74 20 62 65 20 65 ......"Unknown.format..Must.be.e
44020 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 44 45 52 20 6f 72 20 46 4f 52 4d 41 54 5f 50 45 4d 22 29 ither.FORMAT_DER.or.FORMAT_PEM")
44040 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d 61 74 ...def.load_cert_bio(bio,.format
44060 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 =FORMAT_PEM):.....#.type:.(BIO.B
44080 49 4f 2c 20 69 6e 74 29 20 2d 3e 20 58 35 30 39 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 IO,.int).->.X509.....""".....Loa
440a0 64 20 63 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 61 20 62 69 6f 2e 0a 0a 20 20 20 20 3a d.certificate.from.a.bio.......:
440c0 70 61 72 61 6d 20 62 69 6f 3a 20 42 49 4f 20 70 6f 69 6e 74 69 6e 67 20 61 74 20 61 20 63 65 72 param.bio:.BIO.pointing.at.a.cer
440e0 74 69 66 69 63 61 74 65 20 69 6e 20 65 69 74 68 65 72 20 44 45 52 20 6f 72 20 50 45 4d 20 66 6f tificate.in.either.DER.or.PEM.fo
44100 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 3a 20 44 65 73 63 72 69 rmat.......:param.format:.Descri
44120 62 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 63 65 72 74 20 74 6f 20 62 65 bes.the.format.of.the.cert.to.be
44140 20 6c 6f 61 64 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 .loaded,....................eith
44160 65 72 20 50 45 4d 20 6f 72 20 44 45 52 20 28 76 69 61 20 63 6f 6e 73 74 61 6e 74 73 20 46 4f 52 er.PEM.or.DER.(via.constants.FOR
44180 4d 41 54 5f 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 46 MAT_PEM....................and.F
441a0 4f 52 4d 41 54 5f 46 4f 52 4d 41 54 5f 44 45 52 29 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 ORMAT_FORMAT_DER)......:return:.
441c0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 M2Crypto.X509.X509.object......"
441e0 22 22 0a 20 20 20 20 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 50 45 4d 3a 0a "".....if.format.==.FORMAT_PEM:.
44200 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 61 64 5f 70 65 6d 28 ........cptr.=.m2.x509_read_pem(
44220 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 65 6c 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 bio._ptr()).....elif.format.==.F
44240 4f 52 4d 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 64 32 69 ORMAT_DER:.........cptr.=.m2.d2i
44260 5f 78 35 30 39 28 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 _x509(bio._ptr()).....else:.....
44280 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 ....raise.ValueError(...........
442a0 20 20 22 55 6e 6b 6e 6f 77 6e 20 66 6f 72 6d 61 74 2e 20 4d 75 73 74 20 62 65 20 65 69 74 68 65 .."Unknown.format..Must.be.eithe
442c0 72 20 46 4f 52 4d 41 54 5f 44 45 52 20 6f 72 20 46 4f 52 4d 41 54 5f 50 45 4d 22 29 0a 20 20 20 r.FORMAT_DER.or.FORMAT_PEM")....
442e0 20 72 65 74 75 72 6e 20 58 35 30 39 28 63 70 74 72 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 0a .return.X509(cptr,._pyfree=1)...
44300 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 28 73 74 72 69 6e 67 2c 20 66 6f 72 def.load_cert_string(string,.for
44320 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e mat=FORMAT_PEM):.....#.type:.(An
44340 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 58 35 30 39 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c yStr,.int).->.X509.....""".....L
44360 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 61 20 73 74 72 69 6e 67 2e 0a 0a oad.certificate.from.a.string...
44380 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 ....:param.string:.String.contai
443a0 6e 69 6e 67 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e 20 65 69 74 68 65 72 20 44 45 52 ning.a.certificate.in.either.DER
443c0 20 6f 72 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d .or.PEM.format.......:param.form
443e0 61 74 3a 20 44 65 73 63 72 69 62 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 at:.Describes.the.format.of.the.
44400 63 65 72 74 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 cert.to.be.loaded,..............
44420 20 20 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 52 20 28 76 69 61 20 63 6f 6e ......either.PEM.or.DER.(via.con
44440 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 stants.FORMAT_PEM...............
44460 20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 46 4f 52 4d 41 54 5f 44 45 52 29 0a 0a 20 20 20 .....and.FORMAT_FORMAT_DER).....
44480 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6f 62 6a .:return:.M2Crypto.X509.X509.obj
444a0 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 73 74 72 69 6e 67 20 3d 20 73 69 78 2e 65 6e ect......""".....string.=.six.en
444c0 73 75 72 65 5f 62 69 6e 61 72 79 28 73 74 72 69 6e 67 29 0a 20 20 20 20 62 69 6f 20 3d 20 42 49 sure_binary(string).....bio.=.BI
444e0 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 73 74 72 69 6e 67 29 0a 20 20 20 20 72 65 74 75 72 O.MemoryBuffer(string).....retur
44500 6e 20 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d 61 74 29 0a 0a 0a 64 n.load_cert_bio(bio,.format)...d
44520 65 66 20 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 28 73 74 72 69 6e 67 29 3a ef.load_cert_der_string(string):
44540 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 58 35 30 39 0a 20 20 .....#.type:.(AnyStr).->.X509...
44560 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 ..""".....Load.certificate.from.
44580 61 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 a.string.......:param.string:.St
445a0 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e ring.containing.a.certificate.in
445c0 20 44 45 52 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 .DER.format.......:return:.M2Cry
445e0 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 pto.X509.X509.object......"""...
44600 20 20 73 74 72 69 6e 67 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 73 74 72 ..string.=.six.ensure_binary(str
44620 69 6e 67 29 0a 20 20 20 20 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 ing).....bio.=.BIO.MemoryBuffer(
44640 73 74 72 69 6e 67 29 0a 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 64 32 69 5f 78 35 30 39 28 62 string).....cptr.=.m2.d2i_x509(b
44660 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 28 63 70 74 72 2c io._ptr()).....return.X509(cptr,
44680 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 53 74 6f 72 65 5f 43 ._pyfree=1)...class.X509_Store_C
446a0 6f 6e 74 65 78 74 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 ontext(object):.....""".....X509
446c0 20 53 74 6f 72 65 20 43 6f 6e 74 65 78 74 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 .Store.Context....."""......m2_x
446e0 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 73 74 6f 509_store_ctx_free.=.m2.x509_sto
44700 72 65 5f 63 74 78 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 re_ctx_free......def.__init__(se
44720 6c 66 2c 20 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a lf,.x509_store_ctx,._pyfree=0):.
44740 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 ........#.type:.(bytes,.int).->.
44760 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d None........."""..........:param
44780 20 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 3a 20 62 69 6e 61 72 79 20 64 61 74 61 20 66 6f 72 .x509_store_ctx:.binary.data.for
447a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 53 54 4f 52 ...............OpenSSL.X509_STOR
447c0 45 5f 43 54 58 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 E_CTX.type.........""".........s
447e0 65 6c 66 2e 63 74 78 20 3d 20 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 0a 20 20 20 20 20 20 20 elf.ctx.=.x509_store_ctx........
44800 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 64 65 66 .self._pyfree.=._pyfree......def
44820 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 .__del__(self):.........#.type:.
44840 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 73 65 65 20 42 49 4f 2e 70 79 20 ().->.None.........#.see.BIO.py.
44860 2d 20 75 6e 62 61 6c 61 6e 63 65 64 20 5f 5f 69 6e 69 74 5f 5f 20 2f 20 5f 5f 64 65 6c 5f 5f 0a -.unbalanced.__init__./.__del__.
44880 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 ........if.not.hasattr(self,.'_p
448a0 79 66 72 65 65 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 20 20 23 20 70 72 69 yfree'):.............pass..#.pri
448c0 6e 74 28 22 4f 4f 50 53 22 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 5f 70 79 nt("OOPS").........elif.self._py
448e0 66 72 65 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 39 5f 73 free:.............self.m2_x509_s
44900 74 6f 72 65 5f 63 74 78 5f 66 72 65 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 tore_ctx_free(self.ctx)......def
44920 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 ._ptr(self):.........return.self
44940 2e 63 74 78 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 28 73 .ctx......def.get_current_cert(s
44960 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 elf):.........#.type:.().->.X509
44980 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 63 75 72 72 65 6e 74 .........""".........Get.current
449a0 20 58 2e 35 30 39 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 77 61 .X.509.certificate...........:wa
449c0 72 6e 69 6e 67 3a 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 63 65 72 74 69 66 69 63 61 74 65 20 rning:.The.returned.certificate.
449e0 69 73 20 4e 4f 54 20 72 65 66 63 6f 75 6e 74 65 64 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 6e 6f is.NOT.refcounted,.so.you.can.no
44a00 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6c 79 20 6f 6e 20 69 74 20 62 t...................rely.on.it.b
44a20 65 69 6e 67 20 76 61 6c 69 64 20 6f 6e 63 65 20 74 68 65 20 73 74 6f 72 65 20 63 6f 6e 74 65 78 eing.valid.once.the.store.contex
44a40 74 20 67 6f 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 77 61 79 20 6f 72 t.goes...................away.or
44a60 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 .is.modified..........""".......
44a80 20 20 72 65 74 75 72 6e 20 58 35 30 39 28 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f ..return.X509(m2.x509_store_ctx_
44aa0 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 28 73 65 6c 66 2e 63 74 78 29 2c 20 5f 70 79 66 get_current_cert(self.ctx),._pyf
44ac0 72 65 65 3d 30 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 65 72 72 6f 72 28 73 65 6c 66 29 3a ree=0)......def.get_error(self):
44ae0 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 .........#.type:.().->.int......
44b00 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 65 72 72 6f 72 20 63 6f 64 65 2e 0a 20 ...""".........Get.error.code...
44b20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 .......""".........return.m2.x50
44b40 39 5f 73 74 6f 72 65 5f 63 74 78 5f 67 65 74 5f 65 72 72 6f 72 28 73 65 6c 66 2e 63 74 78 29 0a 9_store_ctx_get_error(self.ctx).
44b60 0a 20 20 20 20 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 28 73 65 6c 66 29 3a 0a .....def.get_error_depth(self):.
44b80 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 ........#.type:.().->.int.......
44ba0 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 65 72 72 6f 72 20 64 65 70 74 68 2e 0a 20 ..""".........Get.error.depth...
44bc0 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 .......""".........return.m2.x50
44be0 39 5f 73 74 6f 72 65 5f 63 74 78 5f 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 28 73 65 6c 66 9_store_ctx_get_error_depth(self
44c00 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 31 5f 63 68 61 69 6e 28 73 65 6c 66 29 3a .ctx)......def.get1_chain(self):
44c20 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 5f 53 74 61 63 .........#.type:.().->.X509_Stac
44c40 6b 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 63 65 72 74 69 66 k.........""".........Get.certif
44c60 69 63 61 74 65 20 63 68 61 69 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 icate.chain...........:return:.R
44c80 65 66 65 72 65 6e 63 65 20 63 6f 75 6e 74 65 64 20 28 69 2e 65 2e 20 73 61 66 65 20 74 6f 20 75 eference.counted.(i.e..safe.to.u
44ca0 73 65 20 65 76 65 6e 20 61 66 74 65 72 20 74 68 65 20 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 se.even.after.the.store.........
44cc0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 67 6f 65 73 20 61 77 61 79 29 20 73 74 61 63 .........context.goes.away).stac
44ce0 6b 20 6f 66 20 63 65 72 74 69 66 69 63 61 74 65 73 20 69 6e 20 74 68 65 20 63 68 61 69 6e 2e 0a k.of.certificates.in.the.chain..
44d00 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f ........""".........return.X509_
44d20 53 74 61 63 6b 28 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 67 65 74 31 5f 63 68 61 Stack(m2.x509_store_ctx_get1_cha
44d40 69 6e 28 73 65 6c 66 2e 63 74 78 29 2c 20 31 2c 20 31 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 in(self.ctx),.1,.1)...class.X509
44d60 5f 53 74 6f 72 65 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 _Store(object):.....""".....X509
44d80 20 53 74 6f 72 65 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 73 74 6f 72 .Store....."""......m2_x509_stor
44da0 65 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 66 72 65 65 0a 0a 20 20 20 e_free.=.m2.x509_store_free.....
44dc0 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 74 6f 72 65 3d 4e 6f 6e 65 2c 20 .def.__init__(self,.store=None,.
44de0 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 _pyfree=0):.........#.type:.(Opt
44e00 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 ional[bytes],.int).->.None......
44e20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 74 6f 72 65 3a 20 62 69 6e ...""".........:param.store:.bin
44e40 61 72 79 20 64 61 74 61 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 53 54 4f 52 45 5f ary.data.for.OpenSSL.X509_STORE_
44e60 43 54 58 20 74 79 70 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 CTX.type..........""".........if
44e80 20 73 74 6f 72 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .store.is.not.None:.............
44ea0 73 65 6c 66 2e 73 74 6f 72 65 20 3d 20 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 self.store.=.store.............s
44ec0 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 65 6c elf._pyfree.=._pyfree.........el
44ee0 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 6f 72 65 20 3d 20 6d 32 2e se:.............self.store.=.m2.
44f00 78 35 30 39 5f 73 74 6f 72 65 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c x509_store_new().............sel
44f20 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 f._pyfree.=.1......def.__del__(s
44f40 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 elf):.........#.type:.().->.None
44f60 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 .........if.getattr(self,.'_pyfr
44f80 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 ee',.0):.............self.m2_x50
44fa0 39 5f 73 74 6f 72 65 5f 66 72 65 65 28 73 65 6c 66 2e 73 74 6f 72 65 29 0a 0a 20 20 20 20 64 65 9_store_free(self.store)......de
44fc0 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c f._ptr(self):.........return.sel
44fe0 66 2e 73 74 6f 72 65 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 69 6e 66 6f 28 73 65 6c 66 2c f.store......def.load_info(self,
45000 20 66 69 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 .file):.........#.type:.(AnyStr)
45020 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 .->.int.........""".........:par
45040 61 6d 20 66 69 6c 65 3a 20 66 69 6c 65 6e 61 6d 65 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 am.file:.filename..........:retu
45060 72 6e 3a 20 31 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 30 20 6f 6e 20 66 61 69 6c 75 72 65 0a 20 rn:.1.on.success,.0.on.failure..
45080 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 78 35 30 39 .......""".........ret.=.m2.x509
450a0 5f 73 74 6f 72 65 5f 6c 6f 61 64 5f 6c 6f 63 61 74 69 6f 6e 73 28 73 65 6c 66 2e 73 74 6f 72 65 _store_load_locations(self.store
450c0 2c 20 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 ,.file).........return.ret......
450e0 6c 6f 61 64 5f 6c 6f 63 61 74 69 6f 6e 73 20 3d 20 6c 6f 61 64 5f 69 6e 66 6f 0a 0a 20 20 20 20 load_locations.=.load_info......
45100 64 65 66 20 61 64 64 5f 78 35 30 39 28 73 65 6c 66 2c 20 78 35 30 39 29 3a 0a 20 20 20 20 20 20 def.add_x509(self,.x509):.......
45120 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 ..#.type:.(X509).->.int.........
45140 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 78 35 30 39 2c 20 58 35 30 39 29 0a 20 20 assert.isinstance(x509,.X509)...
45160 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 61 64 64 5f 63 ......return.m2.x509_store_add_c
45180 65 72 74 28 73 65 6c 66 2e 73 74 6f 72 65 2c 20 78 35 30 39 2e 5f 70 74 72 28 29 29 0a 0a 20 20 ert(self.store,.x509._ptr())....
451a0 20 20 64 65 66 20 73 65 74 5f 76 65 72 69 66 79 5f 63 62 28 73 65 6c 66 2c 20 63 61 6c 6c 62 61 ..def.set_verify_cb(self,.callba
451c0 63 6b 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f ck=None):.........#.type:.(Optio
451e0 6e 61 6c 5b 63 61 6c 6c 61 62 6c 65 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 nal[callable]).->.None........."
45200 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 63 61 6c 6c 62 61 63 6b 20 77 68 69 63 68 20 77 69 "".........Set.callback.which.wi
45220 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 68 65 20 73 74 6f 72 65 20 69 73 20 76 ll.be.called.when.the.store.is.v
45240 65 72 69 66 69 65 64 2e 0a 20 20 20 20 20 20 20 20 57 72 61 70 70 65 72 20 6f 76 65 72 20 4f 70 erified..........Wrapper.over.Op
45260 65 6e 53 53 4c 20 58 35 30 39 5f 53 54 4f 52 45 5f 73 65 74 5f 76 65 72 69 66 79 5f 63 62 28 29 enSSL.X509_STORE_set_verify_cb()
45280 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 20 20 20 43 ...........:param.callback:....C
452a0 61 6c 6c 61 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 allable.to.specify.verification.
452c0 6f 70 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 options.........................
452e0 20 20 20 20 20 54 79 70 65 20 6f 66 20 74 68 65 20 63 61 6c 6c 61 62 6c 65 20 6d 75 73 74 20 62 .....Type.of.the.callable.must.b
45300 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 e:.............................(
45320 69 6e 74 2c 20 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 29 20 2d 3e 20 69 6e 74 2e int,.X509_Store_Context).->.int.
45340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 .............................If.
45360 4e 6f 6e 65 3a 20 73 65 74 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6f 70 74 69 6f 6e 73 2e 0a None:.set.the.standard.options..
45380 0a 20 20 20 20 20 20 20 20 3a 6e 6f 74 65 3a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20 .........:note:.compile-time.or.
453a0 72 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 73 20 69 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 run-time.errors.in.the.callback.
453c0 77 6f 75 6c 64 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 6d would.result................in.m
453e0 79 73 74 65 72 69 6f 75 73 20 65 72 72 6f 72 73 20 64 75 72 69 6e 67 20 76 65 72 69 66 69 63 61 ysterious.errors.during.verifica
45400 74 69 6f 6e 2c 20 77 68 69 63 68 20 63 6f 75 6c 64 20 62 65 20 68 61 72 64 0a 20 20 20 20 20 20 tion,.which.could.be.hard.......
45420 20 20 20 20 20 20 20 20 20 74 6f 20 74 72 61 63 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 6e 6f 74 .........to.trace...........:not
45440 65 3a 20 50 79 74 68 6f 6e 20 65 78 63 65 70 74 69 6f 6e 73 20 72 61 69 73 65 64 20 69 6e 20 63 e:.Python.exceptions.raised.in.c
45460 61 6c 6c 62 61 63 6b 73 20 64 6f 20 6e 6f 74 20 70 72 6f 70 61 67 61 74 65 20 74 6f 0a 20 20 20 allbacks.do.not.propagate.to....
45480 20 20 20 20 20 20 20 20 20 20 20 20 76 65 72 69 66 79 28 29 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 ............verify().call.......
454a0 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 ....:return:.None........."""...
454c0 20 20 20 20 20 20 69 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 ......if.callback.is.None:......
454e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 65 74 5f 76 65 72 69 66 79 5f 63 62 .......return.self.set_verify_cb
45500 28 78 35 30 39 5f 73 74 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 29 0a 0a 20 20 20 20 20 20 20 (x509_store_default_cb).........
45520 20 69 66 20 6e 6f 74 20 63 61 6c 6c 61 62 6c 65 28 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 .if.not.callable(callback):.....
45540 20 20 20 20 20 20 20 20 72 61 69 73 65 20 58 35 30 39 45 72 72 6f 72 28 22 73 65 74 5f 76 65 72 ........raise.X509Error("set_ver
45560 69 66 79 28 29 3a 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74 20 63 61 6c 6c 61 62 6c 65 22 ify():.callback.is.not.callable"
45580 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 73 ).........return.m2.x509_store_s
455a0 65 74 5f 76 65 72 69 66 79 5f 63 62 28 73 65 6c 66 2e 73 74 6f 72 65 2c 20 63 61 6c 6c 62 61 63 et_verify_cb(self.store,.callbac
455c0 6b 29 0a 0a 20 20 20 20 61 64 64 5f 63 65 72 74 20 3d 20 61 64 64 5f 78 35 30 39 0a 0a 0a 63 6c k)......add_cert.=.add_x509...cl
455e0 61 73 73 20 58 35 30 39 5f 53 74 61 63 6b 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a ass.X509_Stack(object):.....""".
45600 20 20 20 20 58 35 30 39 20 53 74 61 63 6b 0a 0a 20 20 20 20 3a 77 61 72 6e 69 6e 67 3a 20 44 6f ....X509.Stack......:warning:.Do
45620 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 4f 70 65 6e 53 .not.modify.the.underlying.OpenS
45640 53 4c 20 73 74 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 74 68 SL.stack...............except.th
45660 72 6f 75 67 68 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 2c 20 6f 72 20 75 73 65 20 61 6e 79 rough.this.interface,.or.use.any
45680 20 4f 70 65 6e 53 53 4c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 .OpenSSL...............functions
456a0 20 74 68 61 74 20 64 6f 20 73 6f 20 69 6e 64 69 72 65 63 74 6c 79 2e 20 44 6f 69 6e 67 20 73 6f .that.do.so.indirectly..Doing.so
456c0 20 77 69 6c 6c 20 67 65 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e .will.get.the...............Open
456e0 53 53 4c 20 73 74 61 63 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 70 79 73 74 61 SSL.stack.and.the.internal.pysta
45700 63 6b 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 6f 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 ck.of.this.class.out............
45720 20 20 20 6f 66 20 73 79 6e 63 2c 20 6c 65 61 64 69 6e 67 20 74 6f 20 70 79 74 68 6f 6e 20 6d 65 ...of.sync,.leading.to.python.me
45740 6d 6f 72 79 20 6c 65 61 6b 73 2c 20 65 78 63 65 70 74 69 6f 6e 73 20 6f 72 0a 20 20 20 20 20 20 mory.leaks,.exceptions.or.......
45760 20 20 20 20 20 20 20 20 65 76 65 6e 20 70 79 74 68 6f 6e 20 63 72 61 73 68 65 73 21 0a 20 20 20 ........even.python.crashes!....
45780 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 73 6b 5f 78 35 30 39 5f 66 72 65 65 20 3d 20 6d 32 2e 73 ."""......m2_sk_x509_free.=.m2.s
457a0 6b 5f 78 35 30 39 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 k_x509_free......def.__init__(se
457c0 6c 66 2c 20 73 74 61 63 6b 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 2c 20 5f 70 79 66 72 lf,.stack=None,._pyfree=0,._pyfr
457e0 65 65 5f 78 35 30 39 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 ee_x509=0):.........#.type:.(byt
45800 65 73 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 es,.int,.int).->.None.........if
45820 20 73 74 61 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .stack.is.not.None:.............
45840 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 73 74 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 self.stack.=.stack.............s
45860 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 20 20 elf._pyfree.=._pyfree...........
45880 20 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 20 3d 20 5b 5d 20 20 23 20 54 68 69 73 20 6d 75 73 74 ..self.pystack.=.[]..#.This.must
458a0 20 62 65 20 6b 65 70 74 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20 73 65 6c 66 2e 73 74 61 63 6b .be.kept.in.sync.with.self.stack
458c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 6e 75 .............num.=.m2.sk_x509_nu
458e0 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 m(self.stack).............for.i.
45900 69 6e 20 72 61 6e 67 65 28 6e 75 6d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 in.range(num):.................s
45920 65 6c 66 2e 70 79 73 74 61 63 6b 2e 61 70 70 65 6e 64 28 58 35 30 39 28 6d 32 2e 73 6b 5f 78 35 elf.pystack.append(X509(m2.sk_x5
45940 30 39 5f 76 61 6c 75 65 28 73 65 6c 66 2e 73 74 61 63 6b 2c 20 69 29 2c 0a 20 20 20 20 20 20 20 09_value(self.stack,.i),........
45960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
45980 20 20 5f 70 79 66 72 65 65 3d 5f 70 79 66 72 65 65 5f 78 35 30 39 29 29 0a 20 20 20 20 20 20 20 .._pyfree=_pyfree_x509))........
459a0 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 .else:.............self.stack.=.
459c0 6d 32 2e 73 6b 5f 78 35 30 39 5f 6e 65 77 5f 6e 75 6c 6c 28 29 0a 20 20 20 20 20 20 20 20 20 20 m2.sk_x509_new_null()...........
459e0 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ..self._pyfree.=.1.............s
45a00 65 6c 66 2e 70 79 73 74 61 63 6b 20 3d 20 5b 5d 20 20 23 20 54 68 69 73 20 6d 75 73 74 20 62 65 elf.pystack.=.[]..#.This.must.be
45a20 20 6b 65 70 74 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20 73 65 6c 66 2e 73 74 61 63 6b 0a 0a 20 .kept.in.sync.with.self.stack...
45a40 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ...def.__del__(self):.........#.
45a60 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 type:.().->.None.........if.geta
45a80 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 ttr(self,.'_pyfree',.0):........
45aa0 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 73 6b 5f 78 35 30 39 5f 66 72 65 65 28 73 65 6c 66 2e 73 .....self.m2_sk_x509_free(self.s
45ac0 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 tack)......def.__len__(self):...
45ae0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 ......#.type:.().->.int.........
45b00 61 73 73 65 72 74 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b assert.m2.sk_x509_num(self.stack
45b20 29 20 3d 3d 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 72 ).==.len(self.pystack).........r
45b40 65 74 75 72 6e 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 eturn.len(self.pystack)......def
45b60 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 69 64 78 29 3a 0a 20 20 20 20 20 20 20 .__getitem__(self,.idx):........
45b80 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 58 35 30 39 0a 20 20 20 20 20 20 20 20 72 .#.type:.(int).->.X509.........r
45ba0 65 74 75 72 6e 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 5b 69 64 78 5d 0a 0a 20 20 20 20 64 65 66 eturn.self.pystack[idx]......def
45bc0 20 5f 5f 69 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .__iter__(self):.........return.
45be0 69 74 65 72 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 iter(self.pystack)......def._ptr
45c00 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 74 61 63 (self):.........return.self.stac
45c20 6b 0a 0a 20 20 20 20 64 65 66 20 70 75 73 68 28 73 65 6c 66 2c 20 78 35 30 39 29 3a 0a 20 20 20 k......def.push(self,.x509):....
45c40 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 .....#.type:.(X509).->.int......
45c60 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 70 75 73 68 20 61 6e 20 58 35 30 39 20 63 65 72 74 ...""".........push.an.X509.cert
45c80 69 66 69 63 61 74 65 20 6f 6e 74 6f 20 74 68 65 20 73 74 61 63 6b 2e 0a 0a 20 20 20 20 20 20 20 ificate.onto.the.stack..........
45ca0 20 3a 70 61 72 61 6d 20 78 35 30 39 3a 20 58 35 30 39 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 .:param.x509:.X509.object.......
45cc0 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 58 35 30 39 20 ....:return:.The.number.of.X509.
45ce0 6f 62 6a 65 63 74 73 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2e 0a objects.currently.on.the.stack..
45d00 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 ........""".........assert.isins
45d20 74 61 6e 63 65 28 78 35 30 39 2c 20 58 35 30 39 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 tance(x509,.X509).........self.p
45d40 79 73 74 61 63 6b 2e 61 70 70 65 6e 64 28 78 35 30 39 29 0a 20 20 20 20 20 20 20 20 72 65 74 20 ystack.append(x509).........ret.
45d60 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 70 75 73 68 28 73 65 6c 66 2e 73 74 61 63 6b 2c 20 78 35 =.m2.sk_x509_push(self.stack,.x5
45d80 30 39 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 72 65 74 20 3d 3d 09._ptr()).........assert.ret.==
45da0 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .len(self.pystack).........retur
45dc0 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 70 6f 70 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 n.ret......def.pop(self):.......
45de0 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 0a 20 20 20 20 20 20 20 20 22 22 22 ..#.type:.().->.X509........."""
45e00 0a 20 20 20 20 20 20 20 20 70 6f 70 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 .........pop.a.certificate.from.
45e20 74 68 65 20 73 74 61 63 6b 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 58 35 30 the.stack...........:return:.X50
45e40 39 20 6f 62 6a 65 63 74 20 74 68 61 74 20 77 61 73 20 70 6f 70 70 65 64 2c 20 6f 72 20 4e 6f 6e 9.object.that.was.popped,.or.Non
45e60 65 20 69 66 20 74 68 65 72 65 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e e.if.there.is..................n
45e80 6f 74 68 69 6e 67 20 74 6f 20 70 6f 70 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 othing.to.pop.........."""......
45ea0 20 20 20 78 35 30 39 5f 70 74 72 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 70 6f 70 28 73 65 6c ...x509_ptr.=.m2.sk_x509_pop(sel
45ec0 66 2e 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 69 66 20 78 35 30 39 5f 70 74 72 20 69 73 20 f.stack).........if.x509_ptr.is.
45ee0 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6c 65 6e 28 73 65 6c None:.............assert.len(sel
45f00 66 2e 70 79 73 74 61 63 6b 29 20 3d 3d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 f.pystack).==.0.............retu
45f20 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 79 73 74 rn.None.........return.self.pyst
45f40 61 63 6b 2e 70 6f 70 28 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 64 65 72 28 73 65 6c 66 29 3a ack.pop()......def.as_der(self):
45f60 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 .........#.type:.().->.bytes....
45f80 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 73 74 61 63 .....""".........Return.the.stac
45fa0 6b 20 61 73 20 61 20 44 45 52 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 k.as.a.DER.encoded.string.......
45fc0 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 67 65 74 5f 64 65 72 5f ..""".........return.m2.get_der_
45fe0 65 6e 63 6f 64 69 6e 67 5f 73 74 61 63 6b 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 0a 0a 64 65 66 encoding_stack(self.stack)...def
46000 20 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 28 64 65 72 5f 73 74 72 69 6e 67 29 3a .new_stack_from_der(der_string):
46020 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 58 35 30 39 5f 53 74 61 .....#.type:.(bytes).->.X509_Sta
46040 63 6b 0a 20 20 20 20 22 22 22 0a 20 20 20 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 58 35 30 39 ck.....""".....Create.a.new.X509
46060 5f 53 74 61 63 6b 20 66 72 6f 6d 20 44 45 52 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 72 65 _Stack.from.DER.string.......:re
46080 74 75 72 6e 3a 20 58 35 30 39 5f 53 74 61 63 6b 0a 20 20 20 20 22 22 22 0a 20 20 20 20 64 65 72 turn:.X509_Stack.....""".....der
460a0 5f 73 74 72 69 6e 67 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 64 65 72 5f _string.=.six.ensure_binary(der_
460c0 73 74 72 69 6e 67 29 0a 20 20 20 20 73 74 61 63 6b 5f 70 74 72 20 3d 20 6d 32 2e 6d 61 6b 65 5f string).....stack_ptr.=.m2.make_
460e0 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 5f 73 65 71 75 65 6e 63 65 28 64 65 72 5f 73 74 72 69 stack_from_der_sequence(der_stri
46100 6e 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 53 74 61 63 6b 28 73 74 61 63 6b 5f ng).....return.X509_Stack(stack_
46120 70 74 72 2c 20 31 2c 20 31 29 0a 0a 0a 63 6c 61 73 73 20 52 65 71 75 65 73 74 28 6f 62 6a 65 63 ptr,.1,.1)...class.Request(objec
46140 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 43 65 72 74 69 66 69 63 61 74 65 t):.....""".....X509.Certificate
46160 20 52 65 71 75 65 73 74 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 72 .Request......"""......m2_x509_r
46180 65 71 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 66 72 65 65 0a 0a 20 20 20 20 eq_free.=.m2.x509_req_free......
461a0 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 72 65 71 3d 4e 6f 6e 65 2c 20 5f 70 79 def.__init__(self,.req=None,._py
461c0 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e free=0):.........#.type:.(Option
461e0 61 6c 5b 69 6e 74 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 al[int],.int).->.None.........if
46200 20 72 65 71 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 .req.is.not.None:.............se
46220 6c 66 2e 72 65 71 20 3d 20 72 65 71 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 lf.req.=.req.............self._p
46240 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 yfree.=._pyfree.........else:...
46260 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 71 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 ..........self.req.=.m2.x509_req
46280 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 73 _new().............m2.x509_req_s
462a0 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 72 65 71 2c 20 30 29 0a 20 20 20 20 20 20 20 20 et_version(self.req,.0).........
462c0 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 5f 5f ....self._pyfree.=.1......def.__
462e0 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 del__(self):.........#.type:.().
46300 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c ->.None.........if.getattr(self,
46320 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 .'_pyfree',.0):.............self
46340 2e 6d 32 5f 78 35 30 39 5f 72 65 71 5f 66 72 65 65 28 73 65 6c 66 2e 72 65 71 29 0a 0a 20 20 20 .m2_x509_req_free(self.req).....
46360 20 64 65 66 20 61 73 5f 74 65 78 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 .def.as_text(self):.........#.ty
46380 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e pe:.().->.str.........buf.=.BIO.
463a0 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 72 MemoryBuffer().........m2.x509_r
463c0 65 71 5f 70 72 69 6e 74 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 71 eq_print(buf.bio_ptr(),.self.req
463e0 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 ).........return.six.ensure_text
46400 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 70 65 6d (buf.read_all())......def.as_pem
46420 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 (self):.........#.type:.().->.by
46440 74 65 73 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 tes.........buf.=.BIO.MemoryBuff
46460 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 77 72 69 74 65 5f 70 er().........m2.x509_req_write_p
46480 65 6d 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 71 29 0a 20 20 20 20 em(buf.bio_ptr(),.self.req).....
464a0 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 20 64 ....return.buf.read_all()......d
464c0 65 66 20 61 73 5f 64 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a ef.as_der(self):.........#.type:
464e0 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d .().->.bytes.........buf.=.BIO.M
46500 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 69 32 64 5f 78 35 30 emoryBuffer().........m2.i2d_x50
46520 39 5f 72 65 71 5f 62 69 6f 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 9_req_bio(buf.bio_ptr(),.self.re
46540 71 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 q).........return.buf.read_all()
46560 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 65 6d 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d ......def.save_pem(self,.filenam
46580 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 e):.........#.type:.(AnyStr).->.
465a0 69 6e 74 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 int.........with.BIO.openfile(fi
465c0 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 lename,.'wb').as.bio:...........
465e0 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 77 72 69 74 65 5f 70 65 6d 28 62 ..return.m2.x509_req_write_pem(b
46600 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 71 29 0a 0a 20 20 20 20 64 65 66 io.bio_ptr(),.self.req)......def
46620 20 73 61 76 65 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 .save(self,.filename,.format=FOR
46640 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 MAT_PEM):.........#.type:.(AnySt
46660 72 2c 20 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 r,.int).->.int........."""......
46680 20 20 20 53 61 76 65 73 20 58 2e 35 30 39 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 ...Saves.X.509.certificate.reque
466a0 73 74 20 74 6f 20 61 20 66 69 6c 65 2e 20 44 65 66 61 75 6c 74 20 6f 75 74 70 75 74 0a 20 20 20 st.to.a.file..Default.output....
466c0 20 20 20 20 20 66 6f 72 6d 61 74 20 69 73 20 50 45 4d 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 .....format.is.PEM...........:pa
466e0 72 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 ram.filename:.Name.of.the.file.t
46700 68 65 20 72 65 71 75 65 73 74 20 77 69 6c 6c 20 62 65 20 73 61 76 65 64 20 74 6f 2e 0a 0a 20 20 he.request.will.be.saved.to.....
46720 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 3a 20 43 6f 6e 74 72 6f 6c 73 20 77 68 ......:param.format:.Controls.wh
46740 61 74 20 6f 75 74 70 75 74 20 66 6f 72 6d 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 61 76 65 at.output.format.is.used.to.save
46760 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 .the........................requ
46780 65 73 74 2e 20 45 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 50 45 4d 20 6f 72 20 46 4f 52 4d 41 54 est..Either.FORMAT_PEM.or.FORMAT
467a0 5f 44 45 52 20 74 6f 20 73 61 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _DER.to.save....................
467c0 20 20 20 20 69 6e 20 50 45 4d 20 6f 72 20 44 45 52 20 66 6f 72 6d 61 74 2e 20 52 61 69 73 65 73 ....in.PEM.or.DER.format..Raises
467e0 20 56 61 6c 75 65 45 72 72 6f 72 20 69 66 20 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .ValueError.if.an...............
46800 20 20 20 20 20 20 20 20 20 75 6e 6b 6e 6f 77 6e 20 66 6f 72 6d 61 74 20 69 73 20 75 73 65 64 2e .........unknown.format.is.used.
46820 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 ..........:return:.1.for.success
46840 2c 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.0.for.failure.................
46860 20 20 54 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 63 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64 ..The.error.code.can.be.obtained
46880 20 62 79 20 45 52 52 5f 67 65 74 5f 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 .by.ERR_get_error.........."""..
468a0 20 20 20 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 6d .......with.BIO.openfile(filenam
468c0 65 2c 20 27 77 62 27 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 e,.'wb').as.bio:.............if.
468e0 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 50 45 4d 3a 0a 20 20 20 20 20 20 20 20 20 20 format.==.FORMAT_PEM:...........
46900 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 77 72 69 74 65 5f 70 ......return.m2.x509_req_write_p
46920 65 6d 28 62 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 71 29 0a 20 20 20 20 em(bio.bio_ptr(),.self.req).....
46940 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 44 45 ........elif.format.==.FORMAT_DE
46960 52 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 69 32 64 R:.................return.m2.i2d
46980 5f 78 35 30 39 5f 72 65 71 5f 62 69 6f 28 62 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c _x509_req_bio(bio.bio_ptr(),.sel
469a0 66 2e 72 65 71 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 f.req).............else:........
469c0 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 20 .........raise.ValueError(......
469e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 6b 6e 6f 77 6e 20 66 69 6c 65 74 79 70 65 ..............."Unknown.filetype
46a00 2e 20 4d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 44 45 52 20 6f 72 20 46 ..Must.be.either.FORMAT_DER.or.F
46a20 4f 52 4d 41 54 5f 50 45 4d 22 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 70 75 62 6b 65 79 28 ORMAT_PEM")......def.get_pubkey(
46a40 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 45 56 50 self):.........#.type:.().->.EVP
46a60 2e 50 4b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 74 68 .PKey.........""".........Get.th
46a80 65 20 70 75 62 6c 69 63 20 6b 65 79 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 20 e.public.key.for.the.request....
46aa0 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 50 75 62 6c 69 63 20 6b 65 79 20 66 .......:return:.....Public.key.f
46ac0 72 6f 6d 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 rom.the.request.........."""....
46ae0 20 20 20 20 20 72 65 74 75 72 6e 20 45 56 50 2e 50 4b 65 79 28 6d 32 2e 78 35 30 39 5f 72 65 71 .....return.EVP.PKey(m2.x509_req
46b00 5f 67 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 2e 72 65 71 29 2c 20 5f 70 79 66 72 65 65 3d 31 _get_pubkey(self.req),._pyfree=1
46b20 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 2c 20 70 6b 65 79 )......def.set_pubkey(self,.pkey
46b40 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 45 56 50 2e 50 4b 65 79 29 20 2d 3e ):.........#.type:.(EVP.PKey).->
46b60 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 74 68 65 .int.........""".........Set.the
46b80 20 70 75 62 6c 69 63 20 6b 65 79 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 20 20 .public.key.for.the.request.....
46ba0 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6b 65 79 3a 20 50 75 62 6c 69 63 20 6b 65 79 0a 0a 20 ......:param.pkey:.Public.key...
46bc0 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 52 65 74 75 72 6e 20 31 20 66 6f 72 .......:return:.....Return.1.for
46be0 20 73 75 63 63 65 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 .success.and.0.for.failure......
46c00 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 ....""".........return.m2.x509_r
46c20 65 71 5f 73 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 2e 72 65 71 2c 20 70 6b 65 79 2e 70 6b 65 eq_set_pubkey(self.req,.pkey.pke
46c40 79 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 29 3a 0a 20 y)......def.get_version(self):..
46c60 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 .......#.type:.().->.int........
46c80 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 20 20 20 .""".........Get.version........
46ca0 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 76 65 72 73 69 ...:return:........Returns.versi
46cc0 6f 6e 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d on..........""".........return.m
46ce0 32 2e 78 35 30 39 5f 72 65 71 5f 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 72 65 71 29 2.x509_req_get_version(self.req)
46d00 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2c 20 76 65 72 73 ......def.set_version(self,.vers
46d20 69 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 ion):.........#.type:.(int).->.i
46d40 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 76 65 72 73 69 nt.........""".........Set.versi
46d60 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 76 65 72 73 69 6f 6e 3a 20 56 65 72 on...........:param.version:.Ver
46d80 73 69 6f 6e 20 6e 75 6d 62 65 72 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 sion.number..........:return:...
46da0 20 20 20 20 20 52 65 74 75 72 6e 73 20 30 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 .....Returns.0.on.failure.......
46dc0 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 ...""".........return.m2.x509_re
46de0 71 5f 73 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 72 65 71 2c 20 76 65 72 73 69 6f 6e 29 q_set_version(self.req,.version)
46e00 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 75 62 6a 65 63 74 28 73 65 6c 66 29 3a 0a 20 20 20 ......def.get_subject(self):....
46e20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 5f 4e 61 6d 65 0a 20 20 20 .....#.type:.().->.X509_Name....
46e40 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 4e 61 6d 65 28 6d 32 2e 78 35 30 39 5f 72 65 .....return.X509_Name(m2.x509_re
46e60 71 5f 67 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 72 65 71 29 29 0a 0a 20 q_get_subject_name(self.req))...
46e80 20 20 20 64 65 66 20 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2c 20 6e 61 ...def.set_subject_name(self,.na
46ea0 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 5f 4e 61 6d 65 29 me):.........#.type:.(X509_Name)
46ec0 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 .->.int.........""".........Set.
46ee0 73 75 62 6a 65 63 74 20 6e 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6e 61 subject.name...........:param.na
46f00 6d 65 3a 20 20 20 20 73 75 62 6a 65 63 74 4e 61 6d 65 20 66 69 65 6c 64 2e 0a 20 20 20 20 20 20 me:....subjectName.field........
46f20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 ..:return:....1.for.success.and.
46f40 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 0.for.failure.........""".......
46f60 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 73 65 74 5f 73 75 62 6a 65 63 74 ..return.m2.x509_req_set_subject
46f80 5f 6e 61 6d 65 28 73 65 6c 66 2e 72 65 71 2c 20 6e 61 6d 65 2e 78 35 30 39 5f 6e 61 6d 65 29 0a _name(self.req,.name.x509_name).
46fa0 0a 20 20 20 20 73 65 74 5f 73 75 62 6a 65 63 74 20 3d 20 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e .....set_subject.=.set_subject_n
46fc0 61 6d 65 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 28 73 65 6c 66 ame......def.add_extensions(self
46fe0 2c 20 65 78 74 5f 73 74 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 ,.ext_stack):.........#.type:.(X
47000 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 509_Extension_Stack).->.int.....
47020 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 41 64 64 20 58 35 30 39 20 65 78 74 65 6e 73 69 ....""".........Add.X509.extensi
47040 6f 6e 73 20 74 6f 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 ons.to.this.request...........:p
47060 61 72 61 6d 20 65 78 74 5f 73 74 61 63 6b 3a 20 53 74 61 63 6b 20 6f 66 20 65 78 74 65 6e 73 69 aram.ext_stack:.Stack.of.extensi
47080 6f 6e 73 20 74 6f 20 61 64 64 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 66 ons.to.add..........:return:.1.f
470a0 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 or.success.and.0.for.failure....
470c0 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f .....""".........return.m2.x509_
470e0 72 65 71 5f 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 28 73 65 6c 66 2e 72 65 71 2c 20 65 78 74 req_add_extensions(self.req,.ext
47100 5f 73 74 61 63 6b 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 28 73 _stack._ptr())......def.verify(s
47120 65 6c 66 2c 20 70 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 45 56 50 elf,.pkey):.........#.type:.(EVP
47140 2e 50 4b 65 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 .PKey).->.int.........""".......
47160 20 20 20 3a 70 61 72 61 6d 20 70 6b 65 79 3a 20 50 4b 65 79 20 74 6f 20 62 65 20 76 65 72 69 66 ...:param.pkey:.PKey.to.be.verif
47180 69 65 64 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 ied.........:return:.1.for.succe
471a0 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 ss.and.0.for.failure........."""
471c0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 76 65 72 69 .........return.m2.x509_req_veri
471e0 66 79 28 73 65 6c 66 2e 72 65 71 2c 20 70 6b 65 79 2e 70 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 fy(self.req,.pkey.pkey)......def
47200 20 73 69 67 6e 28 73 65 6c 66 2c 20 70 6b 65 79 2c 20 6d 64 29 3a 0a 20 20 20 20 20 20 20 20 23 .sign(self,.pkey,.md):.........#
47220 20 74 79 70 65 3a 20 28 45 56 50 2e 50 4b 65 79 2c 20 73 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 .type:.(EVP.PKey,.str).->.int...
47240 20 20 20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6b 65 79 3a 20 ......"""..........:param.pkey:.
47260 50 4b 65 79 20 74 6f 20 62 65 20 73 69 67 6e 65 64 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d PKey.to.be.signed.........:param
47280 20 6d 64 3a 20 75 73 65 64 20 61 6c 67 6f 72 69 67 74 68 6d 0a 20 20 20 20 20 20 20 20 3a 72 65 .md:.used.algorigthm.........:re
472a0 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 30 20 66 6f 72 20 66 61 turn:.1.for.success.and.0.for.fa
472c0 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 64 61 20 3d 20 ilure.........""".........mda.=.
472e0 67 65 74 61 74 74 72 28 6d 32 2c 20 6d 64 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 getattr(m2,.md,.None).........if
47300 20 6d 64 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 .mda.is.None:.............raise.
47320 56 61 6c 75 65 45 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 6d 65 73 73 61 67 65 20 64 69 67 65 ValueError('unknown.message.dige
47340 73 74 27 2c 20 6d 64 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f st',.md).........return.m2.x509_
47360 72 65 71 5f 73 69 67 6e 28 73 65 6c 66 2e 72 65 71 2c 20 70 6b 65 79 2e 70 6b 65 79 2c 20 6d 64 req_sign(self.req,.pkey.pkey,.md
47380 61 28 29 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 28 66 69 6c 65 2c 20 66 6f a())...def.load_request(file,.fo
473a0 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 rmat=FORMAT_PEM):.....#.type:.(A
473c0 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 52 65 71 75 65 73 74 0a 20 20 20 20 22 22 22 0a 20 nyStr,.int).->.Request....."""..
473e0 20 20 20 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 66 72 6f 6d ...Load.certificate.request.from
47400 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 .file.......:param.file:.Name.of
47420 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 .file.containing.certificate.req
47440 75 65 73 74 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 uest.in..................either.
47460 50 45 4d 20 6f 72 20 44 45 52 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 6f PEM.or.DER.format......:param.fo
47480 72 6d 61 74 3a 20 44 65 73 63 72 69 62 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 rmat:.Describes.the.format.of.th
474a0 65 20 66 69 6c 65 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 e.file.to.be.loaded,............
474c0 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 52 2e 20 28 75 73 69 6e ........either.PEM.or.DER..(usin
474e0 67 20 63 6f 6e 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a 20 20 20 20 20 20 20 20 20 g.constants.FORMAT_PEM..........
47500 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 44 45 52 29 0a 20 20 20 20 3a 72 ..........and.FORMAT_DER).....:r
47520 65 74 75 72 6e 3a 20 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 eturn:.Request.object......"""..
47540 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 66 3a ...with.BIO.openfile(file).as.f:
47560 0a 20 20 20 20 20 20 20 20 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 50 45 4d .........if.format.==.FORMAT_PEM
47580 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 :.............cptr.=.m2.x509_req
475a0 5f 72 65 61 64 5f 70 65 6d 28 66 2e 62 69 6f 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 65 _read_pem(f.bio_ptr()).........e
475c0 6c 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 lif.format.==.FORMAT_DER:.......
475e0 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 64 32 69 5f 78 35 30 39 5f 72 65 71 28 66 2e 62 ......cptr.=.m2.d2i_x509_req(f.b
47600 69 6f 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 io_ptr()).........else:.........
47620 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 ....raise.ValueError(...........
47640 20 20 20 20 20 20 22 55 6e 6b 6e 6f 77 6e 20 66 69 6c 65 74 79 70 65 2e 20 4d 75 73 74 20 62 65 ......"Unknown.filetype..Must.be
47660 20 65 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 50 45 4d 20 6f 72 20 46 4f 52 4d 41 54 5f 44 45 52 .either.FORMAT_PEM.or.FORMAT_DER
47680 22 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 52 65 71 75 65 73 74 28 63 70 74 72 2c 20 31 29 0a ")......return.Request(cptr,.1).
476a0 0a 0a 64 65 66 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d ..def.load_request_bio(bio,.form
476c0 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f at=FORMAT_PEM):.....#.type:.(BIO
476e0 2e 42 49 4f 2c 20 69 6e 74 29 20 2d 3e 20 52 65 71 75 65 73 74 0a 20 20 20 20 22 22 22 0a 20 20 .BIO,.int).->.Request....."""...
47700 20 20 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 ..Load.certificate.request.from.
47720 61 20 62 69 6f 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 42 49 4f 20 70 6f 69 6e a.bio.......:param.bio:.BIO.poin
47740 74 69 6e 67 20 61 74 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 69 6e ting.at.a.certificate.request.in
47760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 44 45 52 20 6f 72 20 50 .................either.DER.or.P
47780 45 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 3a 20 44 65 EM.format......:param.format:.De
477a0 73 63 72 69 62 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 scribes.the.format.of.the.reques
477c0 74 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.to.be.loaded,.................
477e0 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 52 2e 20 28 75 73 69 6e 67 20 63 6f 6e ...either.PEM.or.DER..(using.con
47800 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 stants.FORMAT_PEM...............
47820 20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 44 45 52 29 0a 20 20 20 20 3a 72 65 74 75 72 6e .....and.FORMAT_DER).....:return
47840 3a 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a :.M2Crypto.X509.Request.object..
47860 20 20 20 20 22 22 22 0a 20 20 20 20 69 66 20 66 6f 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f ....""".....if.format.==.FORMAT_
47880 50 45 4d 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f PEM:.........cptr.=.m2.x509_req_
478a0 72 65 61 64 5f 70 65 6d 28 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 65 6c 69 66 20 66 6f read_pem(bio._ptr()).....elif.fo
478c0 72 6d 61 74 20 3d 3d 20 46 4f 52 4d 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 rmat.==.FORMAT_DER:.........cptr
478e0 20 3d 20 6d 32 2e 64 32 69 5f 78 35 30 39 5f 72 65 71 28 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 .=.m2.d2i_x509_req(bio._ptr())..
47900 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f ...else:.........raise.ValueErro
47920 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 6b 6e 6f 77 6e 20 66 6f 72 6d 61 74 2e 20 r(............."Unknown.format..
47940 4d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 46 4f 52 4d 41 54 5f 44 45 52 20 6f 72 20 46 4f 52 Must.be.either.FORMAT_DER.or.FOR
47960 4d 41 54 5f 50 45 4d 22 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 52 65 71 75 65 73 74 28 63 70 MAT_PEM")......return.Request(cp
47980 74 72 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 72 65 71 75 65 73 tr,._pyfree=1)...def.load_reques
479a0 74 5f 73 74 72 69 6e 67 28 73 74 72 69 6e 67 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 t_string(string,.format=FORMAT_P
479c0 45 4d 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d EM):.....#.type:.(AnyStr,.int).-
479e0 3e 20 52 65 71 75 65 73 74 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 63 65 72 74 69 >.Request.....""".....Load.certi
47a00 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 ficate.request.from.a.string....
47a20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e ...:param.string:.String.contain
47a40 69 6e 67 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 69 6e 0a 20 20 20 ing.a.certificate.request.in....
47a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 44 45 52 20 6f 72 20 50 45 ................either.DER.or.PE
47a80 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 3a 20 44 65 73 M.format......:param.format:.Des
47aa0 63 72 69 62 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 cribes.the.format.of.the.request
47ac0 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .to.be.loaded,..................
47ae0 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 52 2e 20 28 75 73 69 6e 67 20 63 6f 6e 73 ..either.PEM.or.DER..(using.cons
47b00 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tants.FORMAT_PEM................
47b20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 44 45 52 29 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e ....and.FORMAT_DER)......:return
47b40 3a 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a :.M2Crypto.X509.Request.object..
47b60 20 20 20 20 22 22 22 0a 20 20 20 20 73 74 72 69 6e 67 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f ....""".....string.=.six.ensure_
47b80 62 69 6e 61 72 79 28 73 74 72 69 6e 67 29 0a 20 20 20 20 62 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d binary(string).....bio.=.BIO.Mem
47ba0 6f 72 79 42 75 66 66 65 72 28 73 74 72 69 6e 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 6f 61 oryBuffer(string).....return.loa
47bc0 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d 61 74 29 0a 0a 0a 64 65 66 d_request_bio(bio,.format)...def
47be0 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 64 65 72 5f 73 74 72 69 6e 67 28 73 74 72 69 6e 67 29 .load_request_der_string(string)
47c00 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 52 65 71 75 65 73 :.....#.type:.(AnyStr).->.Reques
47c20 74 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 72 t.....""".....Load.certificate.r
47c40 65 71 75 65 73 74 20 66 72 6f 6d 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 70 61 72 61 equest.from.a.string.......:para
47c60 6d 20 73 74 72 69 6e 67 3a 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 63 65 m.string:.String.containing.a.ce
47c80 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 69 6e 20 44 45 52 20 66 6f 72 6d 61 74 2e rtificate.request.in.DER.format.
47ca0 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 .....:return:.M2Crypto.X509.Requ
47cc0 65 73 74 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 73 74 72 69 6e 67 20 3d est.object......""".....string.=
47ce0 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 73 74 72 69 6e 67 29 0a 20 20 20 20 62 .six.ensure_binary(string).....b
47d00 69 6f 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 73 74 72 69 6e 67 29 0a 20 20 io.=.BIO.MemoryBuffer(string)...
47d20 20 20 72 65 74 75 72 6e 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 28 62 69 6f 2c 20 46 ..return.load_request_bio(bio,.F
47d40 4f 52 4d 41 54 5f 44 45 52 29 0a 0a 0a 63 6c 61 73 73 20 43 52 4c 28 6f 62 6a 65 63 74 29 3a 0a ORMAT_DER)...class.CRL(object):.
47d60 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 43 65 72 74 69 66 69 63 61 74 65 20 52 65 76 ....""".....X509.Certificate.Rev
47d80 6f 63 61 74 69 6f 6e 20 4c 69 73 74 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 ocation.List....."""......m2_x50
47da0 39 5f 63 72 6c 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 63 72 6c 5f 66 72 65 65 0a 0a 20 9_crl_free.=.m2.x509_crl_free...
47dc0 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 63 72 6c 3d 4e 6f 6e 65 2c 20 ...def.__init__(self,.crl=None,.
47de0 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 _pyfree=0):.........#.type:.(Opt
47e00 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 ional[bytes],.int).->.None......
47e20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 72 6c 3a 20 62 69 6e 61 ..."""..........:param.crl:.bina
47e40 72 79 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 20 ry.representation.of............
47e60 20 20 20 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f ....the.underlying.OpenSSL.X509_
47e80 43 52 4c 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 CRL.object..........""".........
47ea0 69 66 20 63 72 6c 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 if.crl.is.not.None:.............
47ec0 73 65 6c 66 2e 63 72 6c 20 3d 20 63 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e self.crl.=.crl.............self.
47ee0 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a _pyfree.=._pyfree.........else:.
47f00 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 72 6c 20 3d 20 6d 32 2e 78 35 30 39 5f 63 ............self.crl.=.m2.x509_c
47f20 72 6c 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 rl_new().............self._pyfre
47f40 65 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 e.=.1......def.__del__(self):...
47f60 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 ......#.type:.().->.None........
47f80 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 2c 20 30 29 3a .if.getattr(self,.'_pyfree',.0):
47fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 39 5f 63 72 6c 5f 66 72 .............self.m2_x509_crl_fr
47fc0 65 65 28 73 65 6c 66 2e 63 72 6c 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 74 65 78 74 28 73 65 ee(self.crl)......def.as_text(se
47fe0 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 lf):.........#.type:.().->.str..
48000 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 43 52 4c 20 69 6e .......""".........Return.CRL.in
48020 20 50 45 4d 20 66 6f 72 6d 61 74 20 69 6e 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 20 20 .PEM.format.in.a.string.........
48040 20 20 3a 72 65 74 75 72 6e 3a 20 53 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 ..:return:.String.containing.the
48060 20 43 52 4c 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a .CRL.in.PEM.format..........""".
48080 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 ........buf.=.BIO.MemoryBuffer()
480a0 0a 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 63 72 6c 5f 70 72 69 6e 74 28 62 75 66 2e 62 .........m2.x509_crl_print(buf.b
480c0 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 63 72 6c 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 io_ptr(),.self.crl).........retu
480e0 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 rn.six.ensure_text(buf.read_all(
48100 29 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 63 72 6c 28 66 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 ))...def.load_crl(file):.....#.t
48120 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 43 52 4c 0a 20 20 20 20 22 22 22 0a 20 20 20 ype:.(AnyStr).->.CRL....."""....
48140 20 4c 6f 61 64 20 43 52 4c 20 66 72 6f 6d 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d .Load.CRL.from.file.......:param
48160 20 66 69 6c 65 3a 20 4e 61 6d 65 20 6f 66 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 43 .file:.Name.of.file.containing.C
48180 52 4c 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 RL.in.PEM.format.......:return:.
481a0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 M2Crypto.X509.CRL.object......""
481c0 22 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 ".....with.BIO.openfile(file).as
481e0 20 66 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 5f 63 72 6c 5f 72 .f:.........cptr.=.m2.x509_crl_r
48200 65 61 64 5f 70 65 6d 28 66 2e 62 69 6f 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 72 65 74 75 72 6e ead_pem(f.bio_ptr())......return
48220 20 43 52 4c 28 63 70 74 72 2c 20 31 29 0a 94 95 f2 7e 00 00 00 00 00 00 7d 94 28 8c 09 58 35 30 .CRL(cptr,.1)....~......}.(..X50
48240 39 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 19 4b 1a 87 94 8c 15 78 35 30 39 5f 73 74 6f 72 65 5f 64 9Error.j}...K.K.....x509_store_d
48260 65 66 61 75 6c 74 5f 63 62 94 6a 74 1f 00 00 4b 21 4b 23 87 94 8c 0d 6e 65 77 5f 65 78 74 65 6e efault_cb.jt...K!K#....new_exten
48280 73 69 6f 6e 94 6a 74 1f 00 00 4b 26 4b 36 87 94 8c 17 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e sion.jt...K&K6....X509_Extension
482a0 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 40 4b 43 87 94 8c 16 58 35 30 39 5f 45 78 74 65 .__init__.jt...K@KC....X509_Exte
482c0 6e 73 69 6f 6e 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 45 4b 48 87 94 8c 13 58 35 30 39 5f nsion.__del__.jt...KEKH....X509_
482e0 45 78 74 65 6e 73 69 6f 6e 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 4a 4b 4c 87 94 8c 1b 58 35 30 39 Extension._ptr.jt...KJKL....X509
48300 5f 45 78 74 65 6e 73 69 6f 6e 2e 73 65 74 5f 63 72 69 74 69 63 61 6c 94 6a 74 1f 00 00 4b 4e 4b _Extension.set_critical.jt...KNK
48320 59 87 94 8c 1b 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 65 74 5f 63 72 69 74 69 63 61 6c Y....X509_Extension.get_critical
48340 94 6a 74 1f 00 00 4b 5b 4b 62 87 94 8c 17 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 65 74 .jt...K[Kb....X509_Extension.get
48360 5f 6e 61 6d 65 94 6a 74 1f 00 00 4b 64 4b 69 87 94 8c 18 58 35 30 39 5f 45 78 74 65 6e 73 69 6f _name.jt...KdKi....X509_Extensio
48380 6e 2e 67 65 74 5f 76 61 6c 75 65 94 6a 74 1f 00 00 4b 6b 4b 75 87 94 8c 0e 58 35 30 39 5f 45 78 n.get_value.jt...KkKu....X509_Ex
483a0 74 65 6e 73 69 6f 6e 94 6a 7d 1f 00 00 4b 39 4b 75 87 94 8c 1d 58 35 30 39 5f 45 78 74 65 6e 73 tension.j}...K9Ku....X509_Extens
483c0 69 6f 6e 5f 53 74 61 63 6b 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 86 4b 93 87 94 8c 1c ion_Stack.__init__.jt...K.K.....
483e0 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f X509_Extension_Stack.__del__.jt.
48400 00 00 4b 95 4b 99 87 94 8c 1c 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 5f ..K.K.....X509_Extension_Stack._
48420 5f 6c 65 6e 5f 5f 94 6a 74 1f 00 00 4b 9b 4b 9e 87 94 8c 20 58 35 30 39 5f 45 78 74 65 6e 73 69 _len__.jt...K.K.....X509_Extensi
48440 6f 6e 5f 53 74 61 63 6b 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 94 6a 74 1f 00 00 4b a0 4b a2 87 94 on_Stack.__getitem__.jt...K.K...
48460 8c 1d 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 5f 5f 69 74 65 72 5f 5f 94 ..X509_Extension_Stack.__iter__.
48480 6a 74 1f 00 00 4b a4 4b a5 87 94 8c 19 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 jt...K.K.....X509_Extension_Stac
484a0 6b 2e 5f 70 74 72 94 6a 74 1f 00 00 4b a7 4b a9 87 94 8c 19 58 35 30 39 5f 45 78 74 65 6e 73 69 k._ptr.jt...K.K.....X509_Extensi
484c0 6f 6e 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 74 1f 00 00 4b ab 4b b6 87 94 8c 18 58 35 30 39 5f on_Stack.push.jt...K.K.....X509_
484e0 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 74 1f 00 00 4b b8 4b c3 87 94 8c Extension_Stack.pop.jt...K.K....
48500 14 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 94 6a 7d 1f 00 00 4b 78 4b c3 87 .X509_Extension_Stack.j}...KxK..
48520 94 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 ...X509_Name_Entry.__init__.jt..
48540 00 4b cd 4b d4 87 94 8c 17 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 5f 5f 64 65 6c 5f 5f .K.K.....X509_Name_Entry.__del__
48560 94 6a 74 1f 00 00 4b d6 4b d9 87 94 8c 14 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 5f 70 .jt...K.K.....X509_Name_Entry._p
48580 74 72 94 6a 74 1f 00 00 4b db 4b dd 87 94 8c 1a 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e tr.jt...K.K.....X509_Name_Entry.
485a0 73 65 74 5f 6f 62 6a 65 63 74 94 6a 74 1f 00 00 4b df 4b e8 87 94 8c 18 58 35 30 39 5f 4e 61 6d set_object.jt...K.K.....X509_Nam
485c0 65 5f 45 6e 74 72 79 2e 73 65 74 5f 64 61 74 61 94 6a 74 1f 00 00 4b ea 4b f2 87 94 8c 1a 58 35 e_Entry.set_data.jt...K.K.....X5
485e0 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 6f 62 6a 65 63 74 94 6a 74 1f 00 00 4b f4 09_Name_Entry.get_object.jt...K.
48600 4b f7 87 94 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 64 61 74 61 94 6a K.....X509_Name_Entry.get_data.j
48620 74 1f 00 00 4b f9 4b fc 87 94 8c 1d 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 63 72 65 61 t...K.K.....X509_Name_Entry.crea
48640 74 65 5f 62 79 5f 74 78 74 94 6a 74 1f 00 00 4b fe 4d 00 01 87 94 8c 0f 58 35 30 39 5f 4e 61 6d te_by_txt.jt...K.M......X509_Nam
48660 65 5f 45 6e 74 72 79 94 6a 7d 1f 00 00 4b c6 4d 00 01 87 94 8c 12 58 35 30 39 5f 4e 61 6d 65 2e e_Entry.j}...K.M......X509_Name.
48680 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 1f 01 4d 2b 01 87 94 8c 11 58 35 30 39 5f 4e 61 6d __init__.jt...M..M+.....X509_Nam
486a0 65 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d 2d 01 4d 30 01 87 94 8c 11 58 35 30 39 5f 4e 61 e.__del__.jt...M-.M0.....X509_Na
486c0 6d 65 2e 5f 5f 73 74 72 5f 5f 94 6a 74 1f 00 00 4d 32 01 4d 36 01 87 94 8c 15 58 35 30 39 5f 4e me.__str__.jt...M2.M6.....X509_N
486e0 61 6d 65 2e 5f 5f 67 65 74 61 74 74 72 5f 5f 94 6a 74 1f 00 00 4d 38 01 4d 42 01 87 94 8c 15 58 ame.__getattr__.jt...M8.MB.....X
48700 35 30 39 5f 4e 61 6d 65 2e 5f 5f 73 65 74 61 74 74 72 5f 5f 94 6a 74 1f 00 00 4d 44 01 4d 4f 01 509_Name.__setattr__.jt...MD.MO.
48720 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 6c 65 6e 5f 5f 94 6a 74 1f 00 00 4d 51 01 4d 53 ....X509_Name.__len__.jt...MQ.MS
48740 01 87 94 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 94 6a 74 1f 00 00 .....X509_Name.__getitem__.jt...
48760 4d 55 01 4d 59 01 87 94 8c 12 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 69 74 65 72 5f 5f 94 6a 74 1f MU.MY.....X509_Name.__iter__.jt.
48780 00 00 4d 5b 01 4d 5d 01 87 94 8c 0e 58 35 30 39 5f 4e 61 6d 65 2e 5f 70 74 72 94 6a 74 1f 00 00 ..M[.M].....X509_Name._ptr.jt...
487a0 4d 5f 01 4d 62 01 87 94 8c 1a 58 35 30 39 5f 4e 61 6d 65 2e 61 64 64 5f 65 6e 74 72 79 5f 62 79 M_.Mb.....X509_Name.add_entry_by
487c0 5f 74 78 74 94 6a 74 1f 00 00 4d 64 01 4d 83 01 87 94 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 65 6e _txt.jt...Md.M......X509_Name.en
487e0 74 72 79 5f 63 6f 75 6e 74 94 6a 74 1f 00 00 4d 85 01 4d 87 01 87 94 8c 1c 58 35 30 39 5f 4e 61 try_count.jt...M..M......X509_Na
48800 6d 65 2e 67 65 74 5f 65 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 94 6a 74 1f 00 00 4d 89 01 4d 9d me.get_entries_by_nid.jt...M..M.
48820 01 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 74 65 78 74 94 6a 74 1f 00 00 4d 9f 01 4d .....X509_Name.as_text.jt...M..M
48840 ac 01 87 94 8c 10 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 72 94 6a 74 1f 00 00 4d ae 01 4d ......X509_Name.as_der.jt...M..M
48860 b2 01 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 68 61 73 68 94 6a 74 1f 00 00 4d b4 01 ......X509_Name.as_hash.jt...M..
48880 4d b8 01 87 94 8c 09 58 35 30 39 5f 4e 61 6d 65 94 6a 7d 1f 00 00 4d 03 01 4d b8 01 87 94 8c 0d M......X509_Name.j}...M..M......
488a0 58 35 30 39 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d c2 01 4d cf 01 87 94 8c 0c 58 35 30 X509.__init__.jt...M..M......X50
488c0 39 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d d1 01 4d d4 01 87 94 8c 09 58 35 30 39 2e 5f 70 9.__del__.jt...M..M......X509._p
488e0 74 72 94 6a 74 1f 00 00 4d d6 01 4d d9 01 87 94 8c 0c 58 35 30 39 2e 61 73 5f 74 65 78 74 94 6a tr.jt...M..M......X509.as_text.j
48900 74 1f 00 00 4d db 01 4d e0 01 87 94 8c 0b 58 35 30 39 2e 61 73 5f 64 65 72 94 6a 74 1f 00 00 4d t...M..M......X509.as_der.jt...M
48920 e2 01 4d e5 01 87 94 8c 0b 58 35 30 39 2e 61 73 5f 70 65 6d 94 6a 74 1f 00 00 4d e7 01 4d eb 01 ..M......X509.as_pem.jt...M..M..
48940 87 94 8c 0d 58 35 30 39 2e 73 61 76 65 5f 70 65 6d 94 6a 74 1f 00 00 4d ed 01 4d f4 01 87 94 8c ....X509.save_pem.jt...M..M.....
48960 09 58 35 30 39 2e 73 61 76 65 94 6a 74 1f 00 00 4d f6 01 4d 0c 02 87 94 8c 10 58 35 30 39 2e 73 .X509.save.jt...M..M......X509.s
48980 65 74 5f 76 65 72 73 69 6f 6e 94 6a 74 1f 00 00 4d 0e 02 4d 17 02 87 94 8c 13 58 35 30 39 2e 73 et_version.jt...M..M......X509.s
489a0 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 74 1f 00 00 4d 19 02 4d 1f 02 87 94 8c 12 58 35 30 et_not_before.jt...M..M......X50
489c0 39 2e 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 74 1f 00 00 4d 21 02 4d 27 02 87 94 8c 15 58 9.set_not_after.jt...M!.M'.....X
489e0 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 74 1f 00 00 4d 29 02 4d 2f 02 509.set_subject_name.jt...M).M/.
48a00 87 94 8c 14 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 94 6a 74 1f 00 00 4d 31 ....X509.set_issuer_name.jt...M1
48a20 02 4d 37 02 87 94 8c 10 58 35 30 39 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 74 1f 00 00 4d 39 .M7.....X509.get_version.jt...M9
48a40 02 4d 3c 02 87 94 8c 16 58 35 30 39 2e 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a .M<.....X509.get_serial_number.j
48a60 74 1f 00 00 4d 3e 02 4d 42 02 87 94 8c 16 58 35 30 39 2e 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 t...M>.MB.....X509.set_serial_nu
48a80 6d 62 65 72 94 6a 74 1f 00 00 4d 44 02 4d 51 02 87 94 8c 13 58 35 30 39 2e 67 65 74 5f 6e 6f 74 mber.jt...MD.MQ.....X509.get_not
48aa0 5f 62 65 66 6f 72 65 94 6a 74 1f 00 00 4d 57 02 4d 5a 02 87 94 8c 12 58 35 30 39 2e 67 65 74 5f _before.jt...MW.MZ.....X509.get_
48ac0 6e 6f 74 5f 61 66 74 65 72 94 6a 74 1f 00 00 4d 5c 02 4d 65 02 87 94 8c 0f 58 35 30 39 2e 67 65 not_after.jt...M\.Me.....X509.ge
48ae0 74 5f 70 75 62 6b 65 79 94 6a 74 1f 00 00 4d 67 02 4d 6a 02 87 94 8c 0f 58 35 30 39 2e 73 65 74 t_pubkey.jt...Mg.Mj.....X509.set
48b00 5f 70 75 62 6b 65 79 94 6a 74 1f 00 00 4d 6c 02 4d 76 02 87 94 8c 0f 58 35 30 39 2e 67 65 74 5f _pubkey.jt...Ml.Mv.....X509.get_
48b20 69 73 73 75 65 72 94 6a 74 1f 00 00 4d 78 02 4d 7b 02 87 94 8c 0f 58 35 30 39 2e 73 65 74 5f 69 issuer.jt...Mx.M{.....X509.set_i
48b40 73 73 75 65 72 94 6a 74 1f 00 00 4d 7d 02 4d 87 02 87 94 8c 10 58 35 30 39 2e 67 65 74 5f 73 75 ssuer.jt...M}.M......X509.get_su
48b60 62 6a 65 63 74 94 6a 74 1f 00 00 4d 89 02 4d 8c 02 87 94 8c 10 58 35 30 39 2e 73 65 74 5f 73 75 bject.jt...M..M......X509.set_su
48b80 62 6a 65 63 74 94 6a 74 1f 00 00 4d 8e 02 4d 98 02 87 94 8c 0c 58 35 30 39 2e 61 64 64 5f 65 78 bject.jt...M..M......X509.add_ex
48ba0 74 94 6a 74 1f 00 00 4d 9a 02 4d a4 02 87 94 8c 0c 58 35 30 39 2e 67 65 74 5f 65 78 74 94 6a 74 t.jt...M..M......X509.get_ext.jt
48bc0 1f 00 00 4d a6 02 4d ba 02 87 94 8c 0f 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 61 74 94 6a 74 1f ...M..M......X509.get_ext_at.jt.
48be0 00 00 4d bc 02 4d c9 02 87 94 8c 12 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 94 6a ..M..M......X509.get_ext_count.j
48c00 74 1f 00 00 4d cb 02 4d d0 02 87 94 8c 09 58 35 30 39 2e 73 69 67 6e 94 6a 74 1f 00 00 4d d2 02 t...M..M......X509.sign.jt...M..
48c20 4d e2 02 87 94 8c 0b 58 35 30 39 2e 76 65 72 69 66 79 94 6a 74 1f 00 00 4d e4 02 4d ea 02 87 94 M......X509.verify.jt...M..M....
48c40 8c 0d 58 35 30 39 2e 63 68 65 63 6b 5f 63 61 94 6a 74 1f 00 00 4d ec 02 4d f5 02 87 94 8c 12 58 ..X509.check_ca.jt...M..M......X
48c60 35 30 39 2e 63 68 65 63 6b 5f 70 75 72 70 6f 73 65 94 6a 74 1f 00 00 4d f7 02 4d 03 03 87 94 8c 509.check_purpose.jt...M..M.....
48c80 14 58 35 30 39 2e 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 94 6a 74 1f 00 00 4d 05 03 4d 12 .X509.get_fingerprint.jt...M..M.
48ca0 03 87 94 8c 04 58 35 30 39 94 6a 7d 1f 00 00 4d bb 01 4d 12 03 87 94 8c 09 6c 6f 61 64 5f 63 65 .....X509.j}...M..M......load_ce
48cc0 72 74 94 6a 74 1f 00 00 4d 15 03 4d 2a 03 87 94 8c 0d 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 94 rt.jt...M..M*.....load_cert_bio.
48ce0 6a 74 1f 00 00 4d 2d 03 4d 41 03 87 94 8c 10 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 94 jt...M-.MA.....load_cert_string.
48d00 6a 74 1f 00 00 4d 44 03 4d 53 03 87 94 8c 14 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 jt...MD.MS.....load_cert_der_str
48d20 69 6e 67 94 6a 74 1f 00 00 4d 56 03 4d 62 03 87 94 8c 1b 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f ing.jt...MV.Mb.....X509_Store_Co
48d40 6e 74 65 78 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 6c 03 4d 74 03 87 94 8c 1a 58 35 ntext.__init__.jt...Ml.Mt.....X5
48d60 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d 76 09_Store_Context.__del__.jt...Mv
48d80 03 4d 7c 03 87 94 8c 17 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 5f 70 74 72 94 .M|.....X509_Store_Context._ptr.
48da0 6a 74 1f 00 00 4d 7e 03 4d 7f 03 87 94 8c 23 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 jt...M~.M.....#X509_Store_Contex
48dc0 74 2e 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 94 6a 74 1f 00 00 4d 81 03 4d 8a 03 87 94 t.get_current_cert.jt...M..M....
48de0 8c 1c 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 65 72 72 6f 72 94 6a ..X509_Store_Context.get_error.j
48e00 74 1f 00 00 4d 8c 03 4d 91 03 87 94 8c 22 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 t...M..M....."X509_Store_Context
48e20 2e 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 94 6a 74 1f 00 00 4d 93 03 4d 98 03 87 94 8c 1d .get_error_depth.jt...M..M......
48e40 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 31 5f 63 68 61 69 6e 94 6a 74 X509_Store_Context.get1_chain.jt
48e60 1f 00 00 4d 9a 03 4d a2 03 87 94 8c 12 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 94 ...M..M......X509_Store_Context.
48e80 6a 7d 1f 00 00 4d 65 03 4d a2 03 87 94 8c 13 58 35 30 39 5f 53 74 6f 72 65 2e 5f 5f 69 6e 69 74 j}...Me.M......X509_Store.__init
48ea0 5f 5f 94 6a 74 1f 00 00 4d ac 03 4d b6 03 87 94 8c 12 58 35 30 39 5f 53 74 6f 72 65 2e 5f 5f 64 __.jt...M..M......X509_Store.__d
48ec0 65 6c 5f 5f 94 6a 74 1f 00 00 4d b8 03 4d bb 03 87 94 8c 0f 58 35 30 39 5f 53 74 6f 72 65 2e 5f el__.jt...M..M......X509_Store._
48ee0 70 74 72 94 6a 74 1f 00 00 4d bd 03 4d be 03 87 94 8c 14 58 35 30 39 5f 53 74 6f 72 65 2e 6c 6f ptr.jt...M..M......X509_Store.lo
48f00 61 64 5f 69 6e 66 6f 94 6a 74 1f 00 00 4d c0 03 4d c8 03 87 94 8c 13 58 35 30 39 5f 53 74 6f 72 ad_info.jt...M..M......X509_Stor
48f20 65 2e 61 64 64 5f 78 35 30 39 94 6a 74 1f 00 00 4d cc 03 4d cf 03 87 94 8c 18 58 35 30 39 5f 53 e.add_x509.jt...M..M......X509_S
48f40 74 6f 72 65 2e 73 65 74 5f 76 65 72 69 66 79 5f 63 62 94 6a 74 1f 00 00 4d d1 03 4d ea 03 87 94 tore.set_verify_cb.jt...M..M....
48f60 8c 0a 58 35 30 39 5f 53 74 6f 72 65 94 6a 7d 1f 00 00 4d a5 03 4d ec 03 87 94 8c 13 58 35 30 39 ..X509_Store.j}...M..M......X509
48f80 5f 53 74 61 63 6b 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d fd 03 4d 0a 04 87 94 8c 12 58 _Stack.__init__.jt...M..M......X
48fa0 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d 0c 04 4d 0f 04 87 94 8c 509_Stack.__del__.jt...M..M.....
48fc0 12 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 6c 65 6e 5f 5f 94 6a 74 1f 00 00 4d 11 04 4d 14 04 87 .X509_Stack.__len__.jt...M..M...
48fe0 94 8c 16 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 94 6a 74 1f 00 00 4d ...X509_Stack.__getitem__.jt...M
49000 16 04 4d 18 04 87 94 8c 13 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 69 74 65 72 5f 5f 94 6a 74 1f ..M......X509_Stack.__iter__.jt.
49020 00 00 4d 1a 04 4d 1b 04 87 94 8c 0f 58 35 30 39 5f 53 74 61 63 6b 2e 5f 70 74 72 94 6a 74 1f 00 ..M..M......X509_Stack._ptr.jt..
49040 00 4d 1d 04 4d 1e 04 87 94 8c 0f 58 35 30 39 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 74 1f 00 00 .M..M......X509_Stack.push.jt...
49060 4d 20 04 4d 2d 04 87 94 8c 0e 58 35 30 39 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 74 1f 00 00 4d 2f M..M-.....X509_Stack.pop.jt...M/
49080 04 4d 3b 04 87 94 8c 11 58 35 30 39 5f 53 74 61 63 6b 2e 61 73 5f 64 65 72 94 6a 74 1f 00 00 4d .M;.....X509_Stack.as_der.jt...M
490a0 3d 04 4d 42 04 87 94 8c 0a 58 35 30 39 5f 53 74 61 63 6b 94 6a 7d 1f 00 00 4d ef 03 4d 42 04 87 =.MB.....X509_Stack.j}...M..MB..
490c0 94 8c 12 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 94 6a 74 1f 00 00 4d 45 04 4d 4e ...new_stack_from_der.jt...ME.MN
490e0 04 87 94 8c 10 52 65 71 75 65 73 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 58 04 4d 60 .....Request.__init__.jt...MX.M`
49100 04 87 94 8c 0f 52 65 71 75 65 73 74 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d 62 04 4d 65 04 .....Request.__del__.jt...Mb.Me.
49120 87 94 8c 0f 52 65 71 75 65 73 74 2e 61 73 5f 74 65 78 74 94 6a 74 1f 00 00 4d 67 04 4d 6b 04 87 ....Request.as_text.jt...Mg.Mk..
49140 94 8c 0e 52 65 71 75 65 73 74 2e 61 73 5f 70 65 6d 94 6a 74 1f 00 00 4d 6d 04 4d 71 04 87 94 8c ...Request.as_pem.jt...Mm.Mq....
49160 0e 52 65 71 75 65 73 74 2e 61 73 5f 64 65 72 94 6a 74 1f 00 00 4d 73 04 4d 77 04 87 94 8c 10 52 .Request.as_der.jt...Ms.Mw.....R
49180 65 71 75 65 73 74 2e 73 61 76 65 5f 70 65 6d 94 6a 74 1f 00 00 4d 79 04 4d 7c 04 87 94 8c 0c 52 equest.save_pem.jt...My.M|.....R
491a0 65 71 75 65 73 74 2e 73 61 76 65 94 6a 74 1f 00 00 4d 7e 04 4d 95 04 87 94 8c 12 52 65 71 75 65 equest.save.jt...M~.M......Reque
491c0 73 74 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 74 1f 00 00 4d 97 04 4d 9e 04 87 94 8c 12 52 65 71 st.get_pubkey.jt...M..M......Req
491e0 75 65 73 74 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 74 1f 00 00 4d a0 04 4d a9 04 87 94 8c 13 52 uest.set_pubkey.jt...M..M......R
49200 65 71 75 65 73 74 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 74 1f 00 00 4d ab 04 4d b2 04 87 94 equest.get_version.jt...M..M....
49220 8c 13 52 65 71 75 65 73 74 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a 74 1f 00 00 4d b4 04 4d bc ..Request.set_version.jt...M..M.
49240 04 87 94 8c 13 52 65 71 75 65 73 74 2e 67 65 74 5f 73 75 62 6a 65 63 74 94 6a 74 1f 00 00 4d be .....Request.get_subject.jt...M.
49260 04 4d c0 04 87 94 8c 18 52 65 71 75 65 73 74 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 .M......Request.set_subject_name
49280 94 6a 74 1f 00 00 4d c2 04 4d ca 04 87 94 8c 16 52 65 71 75 65 73 74 2e 61 64 64 5f 65 78 74 65 .jt...M..M......Request.add_exte
492a0 6e 73 69 6f 6e 73 94 6a 74 1f 00 00 4d ce 04 4d d6 04 87 94 8c 0e 52 65 71 75 65 73 74 2e 76 65 nsions.jt...M..M......Request.ve
492c0 72 69 66 79 94 6a 74 1f 00 00 4d d8 04 4d df 04 87 94 8c 0c 52 65 71 75 65 73 74 2e 73 69 67 6e rify.jt...M..M......Request.sign
492e0 94 6a 74 1f 00 00 4d e1 04 4d ec 04 87 94 8c 07 52 65 71 75 65 73 74 94 6a 7d 1f 00 00 4d 51 04 .jt...M..M......Request.j}...MQ.
49300 4d ec 04 87 94 8c 0c 6c 6f 61 64 5f 72 65 71 75 65 73 74 94 6a 74 1f 00 00 4d ef 04 4d 04 05 87 M......load_request.jt...M..M...
49320 94 8c 10 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 94 6a 74 1f 00 00 4d 07 05 4d 1b 05 87 ...load_request_bio.jt...M..M...
49340 94 8c 13 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 74 72 69 6e 67 94 6a 74 1f 00 00 4d 1e 05 4d ...load_request_string.jt...M..M
49360 2d 05 87 94 8c 17 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 74 -.....load_request_der_string.jt
49380 1f 00 00 4d 30 05 4d 3a 05 87 94 8c 0c 43 52 4c 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d ...M0.M:.....CRL.__init__.jt...M
493a0 44 05 4d 50 05 87 94 8c 0b 43 52 4c 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4d 52 05 4d 55 05 D.MP.....CRL.__del__.jt...MR.MU.
493c0 87 94 8c 0b 43 52 4c 2e 61 73 5f 74 65 78 74 94 6a 74 1f 00 00 4d 57 05 4d 60 05 87 94 8c 03 43 ....CRL.as_text.jt...MW.M`.....C
493e0 52 4c 94 6a 7d 1f 00 00 4d 3d 05 4d 60 05 87 94 8c 08 6c 6f 61 64 5f 63 72 6c 94 6a 74 1f 00 00 RL.j}...M=.M`.....load_crl.jt...
49400 4d 63 05 4d 6f 05 87 94 75 7d 94 28 8c 03 43 52 4c 94 6a 53 02 00 00 8c 0b 43 52 4c 2e 61 73 5f Mc.Mo...u}.(..CRL.jS.....CRL.as_
49420 74 65 78 74 94 6a 53 02 00 00 8c 07 52 65 71 75 65 73 74 94 6a 53 02 00 00 8c 16 52 65 71 75 65 text.jS.....Request.jS.....Reque
49440 73 74 2e 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 94 6a 53 02 00 00 8c 0e 52 65 71 75 65 73 74 st.add_extensions.jS.....Request
49460 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 0e 52 65 71 75 65 73 74 2e 61 73 5f 70 65 6d 94 6a 53 .as_der.jS.....Request.as_pem.jS
49480 02 00 00 8c 0f 52 65 71 75 65 73 74 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 8c 12 52 65 71 75 .....Request.as_text.jS.....Requ
494a0 65 73 74 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 53 02 00 00 8c 13 52 65 71 75 65 73 74 2e 67 65 est.get_pubkey.jS.....Request.ge
494c0 74 5f 73 75 62 6a 65 63 74 94 6a 53 02 00 00 8c 13 52 65 71 75 65 73 74 2e 67 65 74 5f 76 65 72 t_subject.jS.....Request.get_ver
494e0 73 69 6f 6e 94 6a 53 02 00 00 8c 0c 52 65 71 75 65 73 74 2e 73 61 76 65 94 6a 53 02 00 00 8c 10 sion.jS.....Request.save.jS.....
49500 52 65 71 75 65 73 74 2e 73 61 76 65 5f 70 65 6d 94 6a 53 02 00 00 8c 12 52 65 71 75 65 73 74 2e Request.save_pem.jS.....Request.
49520 73 65 74 5f 70 75 62 6b 65 79 94 6a 53 02 00 00 8c 18 52 65 71 75 65 73 74 2e 73 65 74 5f 73 75 set_pubkey.jS.....Request.set_su
49540 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 13 52 65 71 75 65 73 74 2e 73 65 74 5f 76 65 bject_name.jS.....Request.set_ve
49560 72 73 69 6f 6e 94 6a 53 02 00 00 8c 0c 52 65 71 75 65 73 74 2e 73 69 67 6e 94 6a 53 02 00 00 8c rsion.jS.....Request.sign.jS....
49580 0e 52 65 71 75 65 73 74 2e 76 65 72 69 66 79 94 6a 53 02 00 00 8c 04 58 35 30 39 94 6a 53 02 00 .Request.verify.jS.....X509.jS..
495a0 00 8c 0c 58 35 30 39 2e 61 64 64 5f 65 78 74 94 6a 53 02 00 00 8c 0b 58 35 30 39 2e 61 73 5f 64 ...X509.add_ext.jS.....X509.as_d
495c0 65 72 94 6a 53 02 00 00 8c 0b 58 35 30 39 2e 61 73 5f 70 65 6d 94 6a 53 02 00 00 8c 0c 58 35 30 er.jS.....X509.as_pem.jS.....X50
495e0 39 2e 61 73 5f 74 65 78 74 94 6a 53 02 00 00 8c 0d 58 35 30 39 2e 63 68 65 63 6b 5f 63 61 94 6a 9.as_text.jS.....X509.check_ca.j
49600 53 02 00 00 8c 12 58 35 30 39 2e 63 68 65 63 6b 5f 70 75 72 70 6f 73 65 94 6a 53 02 00 00 8c 0c S.....X509.check_purpose.jS.....
49620 58 35 30 39 2e 67 65 74 5f 65 78 74 94 6a 53 02 00 00 8c 0f 58 35 30 39 2e 67 65 74 5f 65 78 74 X509.get_ext.jS.....X509.get_ext
49640 5f 61 74 94 6a 53 02 00 00 8c 12 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 94 6a 53 _at.jS.....X509.get_ext_count.jS
49660 02 00 00 8c 14 58 35 30 39 2e 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 94 6a 53 02 00 00 8c .....X509.get_fingerprint.jS....
49680 0f 58 35 30 39 2e 67 65 74 5f 69 73 73 75 65 72 94 6a 53 02 00 00 8c 12 58 35 30 39 2e 67 65 74 .X509.get_issuer.jS.....X509.get
496a0 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 53 02 00 00 8c 13 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 62 _not_after.jS.....X509.get_not_b
496c0 65 66 6f 72 65 94 6a 53 02 00 00 8c 0f 58 35 30 39 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 53 02 efore.jS.....X509.get_pubkey.jS.
496e0 00 00 8c 16 58 35 30 39 2e 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 53 02 00 00 ....X509.get_serial_number.jS...
49700 8c 10 58 35 30 39 2e 67 65 74 5f 73 75 62 6a 65 63 74 94 6a 53 02 00 00 8c 10 58 35 30 39 2e 67 ..X509.get_subject.jS.....X509.g
49720 65 74 5f 76 65 72 73 69 6f 6e 94 6a 53 02 00 00 8c 09 58 35 30 39 2e 73 61 76 65 94 6a 53 02 00 et_version.jS.....X509.save.jS..
49740 00 8c 0d 58 35 30 39 2e 73 61 76 65 5f 70 65 6d 94 6a 53 02 00 00 8c 0f 58 35 30 39 2e 73 65 74 ...X509.save_pem.jS.....X509.set
49760 5f 69 73 73 75 65 72 94 6a 53 02 00 00 8c 14 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 5f 6e _issuer.jS.....X509.set_issuer_n
49780 61 6d 65 94 6a 53 02 00 00 8c 12 58 35 30 39 2e 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 53 ame.jS.....X509.set_not_after.jS
497a0 02 00 00 8c 13 58 35 30 39 2e 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 53 02 00 00 8c 0f .....X509.set_not_before.jS.....
497c0 58 35 30 39 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 53 02 00 00 8c 16 58 35 30 39 2e 73 65 74 5f X509.set_pubkey.jS.....X509.set_
497e0 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 53 02 00 00 8c 10 58 35 30 39 2e 73 65 74 5f 73 75 serial_number.jS.....X509.set_su
49800 62 6a 65 63 74 94 6a 53 02 00 00 8c 15 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 bject.jS.....X509.set_subject_na
49820 6d 65 94 6a 53 02 00 00 8c 10 58 35 30 39 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a 53 02 00 00 me.jS.....X509.set_version.jS...
49840 8c 09 58 35 30 39 2e 73 69 67 6e 94 6a 53 02 00 00 8c 0b 58 35 30 39 2e 76 65 72 69 66 79 94 6a ..X509.sign.jS.....X509.verify.j
49860 53 02 00 00 8c 09 58 35 30 39 45 72 72 6f 72 94 6a 53 02 00 00 8c 0e 58 35 30 39 5f 45 78 74 65 S.....X509Error.jS.....X509_Exte
49880 6e 73 69 6f 6e 94 6a 53 02 00 00 8c 1b 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 65 74 5f nsion.jS.....X509_Extension.get_
498a0 63 72 69 74 69 63 61 6c 94 6a 53 02 00 00 8c 17 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 critical.jS.....X509_Extension.g
498c0 65 74 5f 6e 61 6d 65 94 6a 53 02 00 00 8c 18 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 65 et_name.jS.....X509_Extension.ge
498e0 74 5f 76 61 6c 75 65 94 6a 53 02 00 00 8c 1b 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 73 65 t_value.jS.....X509_Extension.se
49900 74 5f 63 72 69 74 69 63 61 6c 94 6a 53 02 00 00 8c 14 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e t_critical.jS.....X509_Extension
49920 5f 53 74 61 63 6b 94 6a 53 02 00 00 8c 18 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 _Stack.jS.....X509_Extension_Sta
49940 63 6b 2e 70 6f 70 94 6a 53 02 00 00 8c 19 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 ck.pop.jS.....X509_Extension_Sta
49960 63 6b 2e 70 75 73 68 94 6a 53 02 00 00 8c 09 58 35 30 39 5f 4e 61 6d 65 94 6a 53 02 00 00 8c 1a ck.push.jS.....X509_Name.jS.....
49980 58 35 30 39 5f 4e 61 6d 65 2e 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 78 74 94 6a 53 02 00 00 X509_Name.add_entry_by_txt.jS...
499a0 8c 10 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 11 58 35 30 39 5f 4e ..X509_Name.as_der.jS.....X509_N
499c0 61 6d 65 2e 61 73 5f 68 61 73 68 94 6a 53 02 00 00 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f ame.as_hash.jS.....X509_Name.as_
499e0 74 65 78 74 94 6a 53 02 00 00 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 65 6e 74 72 79 5f 63 6f 75 6e text.jS.....X509_Name.entry_coun
49a00 74 94 6a 53 02 00 00 8c 1c 58 35 30 39 5f 4e 61 6d 65 2e 67 65 74 5f 65 6e 74 72 69 65 73 5f 62 t.jS.....X509_Name.get_entries_b
49a20 79 5f 6e 69 64 94 6a 53 02 00 00 8c 0f 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 94 6a 53 02 y_nid.jS.....X509_Name_Entry.jS.
49a40 00 00 8c 1d 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 63 72 65 61 74 65 5f 62 79 5f 74 78 ....X509_Name_Entry.create_by_tx
49a60 74 94 6a 53 02 00 00 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 64 61 74 t.jS.....X509_Name_Entry.get_dat
49a80 61 94 6a 53 02 00 00 8c 1a 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 6f 62 6a a.jS.....X509_Name_Entry.get_obj
49aa0 65 63 74 94 6a 53 02 00 00 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 73 65 74 5f 64 ect.jS.....X509_Name_Entry.set_d
49ac0 61 74 61 94 6a 53 02 00 00 8c 1a 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 73 65 74 5f 6f ata.jS.....X509_Name_Entry.set_o
49ae0 62 6a 65 63 74 94 6a 53 02 00 00 8c 0a 58 35 30 39 5f 53 74 61 63 6b 94 6a 53 02 00 00 8c 11 58 bject.jS.....X509_Stack.jS.....X
49b00 35 30 39 5f 53 74 61 63 6b 2e 61 73 5f 64 65 72 94 6a 53 02 00 00 8c 0e 58 35 30 39 5f 53 74 61 509_Stack.as_der.jS.....X509_Sta
49b20 63 6b 2e 70 6f 70 94 6a 53 02 00 00 8c 0f 58 35 30 39 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 53 ck.pop.jS.....X509_Stack.push.jS
49b40 02 00 00 8c 0a 58 35 30 39 5f 53 74 6f 72 65 94 6a 53 02 00 00 8c 13 58 35 30 39 5f 53 74 6f 72 .....X509_Store.jS.....X509_Stor
49b60 65 2e 61 64 64 5f 78 35 30 39 94 6a 53 02 00 00 8c 14 58 35 30 39 5f 53 74 6f 72 65 2e 6c 6f 61 e.add_x509.jS.....X509_Store.loa
49b80 64 5f 69 6e 66 6f 94 6a 53 02 00 00 8c 18 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 5f 76 65 72 d_info.jS.....X509_Store.set_ver
49ba0 69 66 79 5f 63 62 94 6a 53 02 00 00 8c 12 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 ify_cb.jS.....X509_Store_Context
49bc0 94 6a 53 02 00 00 8c 1d 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 31 5f .jS.....X509_Store_Context.get1_
49be0 63 68 61 69 6e 94 6a 53 02 00 00 8c 23 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e chain.jS....#X509_Store_Context.
49c00 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 94 6a 53 02 00 00 8c 1c 58 35 30 39 5f 53 74 6f get_current_cert.jS.....X509_Sto
49c20 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 65 72 72 6f 72 94 6a 53 02 00 00 8c 22 58 35 30 39 re_Context.get_error.jS...."X509
49c40 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 94 6a _Store_Context.get_error_depth.j
49c60 53 02 00 00 8c 09 6c 6f 61 64 5f 63 65 72 74 94 6a 53 02 00 00 8c 0d 6c 6f 61 64 5f 63 65 72 74 S.....load_cert.jS.....load_cert
49c80 5f 62 69 6f 94 6a 53 02 00 00 8c 14 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 _bio.jS.....load_cert_der_string
49ca0 94 6a 53 02 00 00 8c 10 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 08 .jS.....load_cert_string.jS.....
49cc0 6c 6f 61 64 5f 63 72 6c 94 6a 53 02 00 00 8c 0c 6c 6f 61 64 5f 72 65 71 75 65 73 74 94 6a 53 02 load_crl.jS.....load_request.jS.
49ce0 00 00 8c 10 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 94 6a 53 02 00 00 8c 17 6c 6f 61 64 ....load_request_bio.jS.....load
49d00 5f 72 65 71 75 65 73 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 13 6c 6f 61 64 5f _request_der_string.jS.....load_
49d20 72 65 71 75 65 73 74 5f 73 74 72 69 6e 67 94 6a 53 02 00 00 8c 0d 6e 65 77 5f 65 78 74 65 6e 73 request_string.jS.....new_extens
49d40 69 6f 6e 94 6a 53 02 00 00 8c 12 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 94 6a 53 ion.jS.....new_stack_from_der.jS
49d60 02 00 00 8c 15 78 35 30 39 5f 73 74 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 94 6a 53 02 00 00 .....x509_store_default_cb.jS...
49d80 75 8c 0d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 94 74 94 8c 10 4d 32 43 72 79 70 74 6f 2e 66 74 u..M2Crypto.X509.t...M2Crypto.ft
49da0 70 73 6c 69 62 94 28 58 0a 0b 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f pslib.(X....from.__future__.impo
49dc0 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 rt.absolute_import.."""M2Crypto.
49de0 63 6c 69 65 6e 74 2d 73 69 64 65 20 46 54 50 2f 54 4c 53 2e 0a 0a 54 68 69 73 20 69 6d 70 6c 65 client-side.FTP/TLS...This.imple
49e00 6d 65 6e 74 61 74 69 6f 6e 20 63 6f 6d 70 6c 69 65 73 20 77 69 74 68 20 64 72 61 66 74 2d 6d 75 mentation.complies.with.draft-mu
49e20 72 72 61 79 2d 61 75 74 68 2d 66 74 70 2d 73 73 6c 2d 30 37 2e 74 78 74 2e 0a 0a 45 78 61 6d 70 rray-auth-ftp-ssl-07.txt...Examp
49e40 6c 65 3a 0a 0a 3e 3e 3e 20 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 66 74 le:..>>>.from.M2Crypto.import.ft
49e60 70 73 6c 69 62 0a 3e 3e 3e 20 66 20 3d 20 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 28 29 0a pslib.>>>.f.=.ftpslib.FTP_TLS().
49e80 3e 3e 3e 20 66 2e 63 6f 6e 6e 65 63 74 28 27 27 2c 20 39 30 32 31 29 0a 27 32 32 30 20 73 70 69 >>>.f.connect('',.9021).'220.spi
49ea0 6e 6e 61 6b 65 72 2e 64 79 6e 64 6e 73 2e 6f 72 67 20 4d 32 43 72 79 70 74 6f 20 28 4d 65 64 75 nnaker.dyndns.org.M2Crypto.(Medu
49ec0 73 61 29 20 46 54 50 2f 54 4c 53 20 73 65 72 76 65 72 20 76 30 2e 30 37 20 72 65 61 64 79 2e 27 sa).FTP/TLS.server.v0.07.ready.'
49ee0 0a 3e 3e 3e 20 66 2e 61 75 74 68 5f 74 6c 73 28 29 0a 3e 3e 3e 20 66 2e 73 65 74 5f 70 61 73 76 .>>>.f.auth_tls().>>>.f.set_pasv
49f00 28 30 29 0a 3e 3e 3e 20 66 2e 6c 6f 67 69 6e 28 27 66 74 70 27 2c 20 27 6e 67 70 73 40 27 29 0a (0).>>>.f.login('ftp',.'ngps@').
49f20 27 32 33 30 20 4f 6b 2e 27 0a 3e 3e 3e 20 66 2e 72 65 74 72 6c 69 6e 65 73 28 27 4c 49 53 54 27 '230.Ok.'.>>>.f.retrlines('LIST'
49f40 29 0a 2d 72 77 2d 72 77 2d 72 2d 2d 20 20 20 31 20 30 20 20 20 20 20 20 20 20 31 39 38 20 20 20 ).-rw-rw-r--...1.0........198...
49f60 20 20 20 20 20 20 20 32 33 32 36 20 4a 75 6c 20 20 33 20 20 31 39 39 36 20 61 70 61 63 68 65 5f .......2326.Jul..3..1996.apache_
49f80 70 62 2e 67 69 66 0a 64 72 77 78 72 77 78 72 2d 78 20 20 20 37 20 30 20 20 20 20 20 20 20 20 31 pb.gif.drwxrwxr-x...7.0........1
49fa0 39 38 20 20 20 20 20 20 20 20 20 20 31 35 33 36 20 4f 63 74 20 31 30 20 20 32 30 30 30 20 6d 61 98..........1536.Oct.10..2000.ma
49fc0 6e 75 61 6c 0a 64 72 77 78 72 77 78 72 2d 78 20 20 20 32 20 30 20 20 20 20 20 20 20 20 31 39 38 nual.drwxrwxr-x...2.0........198
49fe0 20 20 20 20 20 20 20 20 20 20 20 35 31 32 20 4f 63 74 20 33 31 20 20 32 30 30 30 20 6d 6f 64 70 ...........512.Oct.31..2000.modp
4a000 79 0a 64 72 77 78 72 77 78 72 2d 78 20 20 20 32 20 30 20 20 20 20 20 20 20 20 31 39 38 20 20 20 y.drwxrwxr-x...2.0........198...
4a020 20 20 20 20 20 20 20 20 35 31 32 20 4f 63 74 20 33 31 20 20 32 30 30 30 20 62 6f 62 6f 0a 64 72 ........512.Oct.31..2000.bobo.dr
4a040 77 78 72 2d 78 72 2d 78 20 20 20 32 20 30 20 20 20 20 20 20 20 20 31 39 38 20 20 20 20 20 20 20 wxr-xr-x...2.0........198.......
4a060 20 20 31 34 33 33 36 20 4d 61 79 20 32 38 20 31 35 3a 35 34 20 70 6f 73 74 67 72 65 73 71 6c 0a ..14336.May.28.15:54.postgresql.
4a080 64 72 77 78 72 2d 78 72 2d 78 20 20 20 34 20 31 30 30 20 20 20 20 20 20 31 39 38 20 20 20 20 20 drwxr-xr-x...4.100......198.....
4a0a0 20 20 20 20 20 20 35 31 32 20 4d 61 79 20 31 36 20 31 37 3a 31 39 20 68 6f 6d 65 0a 64 72 77 78 ......512.May.16.17:19.home.drwx
4a0c0 72 2d 78 72 2d 78 20 20 20 37 20 31 30 30 20 20 20 20 20 20 31 30 30 20 20 20 20 20 20 20 20 20 r-xr-x...7.100......100.........
4a0e0 20 33 35 38 34 20 53 65 70 20 32 33 20 20 32 30 30 30 20 6f 70 65 6e 61 63 73 0a 64 72 77 78 72 .3584.Sep.23..2000.openacs.drwxr
4a100 2d 78 72 2d 78 20 20 31 30 20 30 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 20 20 20 -xr-x..10.0........0............
4a120 20 35 31 32 20 41 75 67 20 20 35 20 20 32 30 30 30 20 70 79 74 68 6f 6e 31 2e 35 0a 2d 72 77 2d .512.Aug..5..2000.python1.5.-rw-
4a140 72 2d 2d 72 2d 2d 20 20 20 31 20 31 30 30 20 20 20 20 20 20 31 39 38 20 20 20 20 20 20 20 20 20 r--r--...1.100......198.........
4a160 20 20 33 32 36 20 4a 75 6c 20 32 39 20 30 33 3a 32 39 20 69 6e 64 65 78 2e 68 74 6d 6c 0a 64 72 ..326.Jul.29.03:29.index.html.dr
4a180 77 78 72 2d 78 72 2d 78 20 20 31 32 20 30 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 wxr-xr-x..12.0........0.........
4a1a0 20 20 20 20 35 31 32 20 4d 61 79 20 33 31 20 31 37 3a 30 38 20 70 79 74 68 6f 6e 32 2e 31 0a 27 ....512.May.31.17:08.python2.1.'
4a1c0 32 32 36 20 54 72 61 6e 73 66 65 72 20 63 6f 6d 70 6c 65 74 65 27 0a 3e 3e 3e 20 66 2e 71 75 69 226.Transfer.complete'.>>>.f.qui
4a1e0 74 28 29 0a 27 32 32 31 20 47 6f 6f 64 62 79 65 2e 27 0a 3e 3e 3e 0a 0a 0a 43 6f 70 79 72 69 67 t().'221.Goodbye.'.>>>...Copyrig
4a200 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e ht.(c).1999-2003.Ng.Pheng.Siong.
4a220 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 23 20 57 65 20 77 .All.rights.reserved."""..#.We.w
4a240 61 6e 74 20 74 6f 20 69 6d 70 6f 72 74 20 77 68 6f 6c 65 20 73 74 64 6c 69 62 20 66 74 70 6c 69 ant.to.import.whole.stdlib.ftpli
4a260 62 20 6f 62 6a 65 63 74 73 2c 20 62 65 63 61 75 73 65 20 6f 75 72 20 75 73 65 72 73 20 77 61 6e b.objects,.because.our.users.wan
4a280 74 0a 23 20 74 6f 20 75 73 65 20 74 68 65 6d 2e 0a 66 72 6f 6d 20 66 74 70 6c 69 62 20 69 6d 70 t.#.to.use.them..from.ftplib.imp
4a2a0 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 0a 0a 23 20 4d 32 43 72 79 70 74 6f 0a 66 72 6f 6d 20 4d ort.*..#.noqa..#.M2Crypto.from.M
4a2c0 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 53 53 4c 0a 0a 0a 63 6c 61 73 73 20 46 54 50 5f 54 2Crypto.import.SSL...class.FTP_T
4a2e0 4c 53 28 46 54 50 29 3a 0a 0a 20 20 20 20 22 22 22 50 79 74 68 6f 6e 20 4f 4f 20 69 6e 74 65 72 LS(FTP):......"""Python.OO.inter
4a300 66 61 63 65 20 74 6f 20 63 6c 69 65 6e 74 2d 73 69 64 65 20 46 54 50 2f 54 4c 53 2e 22 22 22 0a face.to.client-side.FTP/TLS.""".
4a320 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 6f 73 74 3d 4e 6f 6e .....def.__init__(self,.host=Non
4a340 65 2c 20 73 73 6c 5f 63 74 78 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 49 6e 69 e,.ssl_ctx=None):........."""Ini
4a360 74 69 61 6c 69 73 65 20 74 68 65 20 63 6c 69 65 6e 74 2e 20 49 66 20 27 68 6f 73 74 27 20 69 73 tialise.the.client..If.'host'.is
4a380 20 73 75 70 70 6c 69 65 64 2c 20 63 6f 6e 6e 65 63 74 20 74 6f 20 69 74 2e 22 22 22 0a 20 20 20 .supplied,.connect.to.it."""....
4a3a0 20 20 20 20 20 69 66 20 73 73 6c 5f 63 74 78 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 .....if.ssl_ctx.is.not.None:....
4a3c0 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 5f 63 74 78 20 3d 20 73 73 6c 5f 63 74 78 0a .........self.ssl_ctx.=.ssl_ctx.
4a3e0 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 ........else:.............self.s
4a400 73 6c 5f 63 74 78 20 3d 20 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 46 sl_ctx.=.SSL.Context().........F
4a420 54 50 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 TP.__init__(self,.host).........
4a440 73 65 6c 66 2e 70 72 6f 74 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 61 75 74 68 5f 74 6c 73 28 self.prot.=.0......def.auth_tls(
4a460 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 63 75 72 65 20 74 68 65 20 63 6f 6e self):........."""Secure.the.con
4a480 74 72 6f 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 65 72 20 41 55 54 48 20 54 4c 53 2c 20 61 6b trol.connection.per.AUTH.TLS,.ak
4a4a0 61 20 41 55 54 48 20 54 4c 53 2d 43 2e 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 6f a.AUTH.TLS-C.""".........self.vo
4a4c0 69 64 63 6d 64 28 27 41 55 54 48 20 54 4c 53 27 29 0a 20 20 20 20 20 20 20 20 73 20 3d 20 53 53 idcmd('AUTH.TLS').........s.=.SS
4a4e0 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 5f 63 74 78 2c 20 73 65 6c 66 2e L.Connection(self.ssl_ctx,.self.
4a500 73 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 73 2e 73 65 74 75 70 5f 73 73 6c 28 29 0a 20 20 20 20 sock).........s.setup_ssl().....
4a520 20 20 20 20 73 2e 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 28 29 0a 20 20 20 20 20 20 ....s.set_connect_state().......
4a540 20 20 73 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 ..s.connect_ssl().........self.s
4a560 6f 63 6b 20 3d 20 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 69 6c 65 20 3d 20 73 65 6c 66 ock.=.s.........self.file.=.self
4a580 2e 73 6f 63 6b 2e 6d 61 6b 65 66 69 6c 65 28 29 0a 0a 20 20 20 20 64 65 66 20 61 75 74 68 5f 73 .sock.makefile()......def.auth_s
4a5a0 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 63 75 72 65 20 74 68 65 20 sl(self):........."""Secure.the.
4a5c0 63 6f 6e 74 72 6f 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 65 72 20 41 55 54 48 20 53 53 4c 2c control.connection.per.AUTH.SSL,
4a5e0 20 61 6b 61 20 41 55 54 48 20 54 4c 53 2d 50 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 61 69 73 .aka.AUTH.TLS-P.""".........rais
4a600 65 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 70 e.NotImplementedError......def.p
4a620 72 6f 74 5f 70 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 75 70 20 73 rot_p(self):........."""Set.up.s
4a640 65 63 75 72 65 20 64 61 74 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 22 22 0a 20 20 20 20 20 20 ecure.data.connection.""".......
4a660 20 20 73 65 6c 66 2e 76 6f 69 64 63 6d 64 28 27 50 42 53 5a 20 30 27 29 0a 20 20 20 20 20 20 20 ..self.voidcmd('PBSZ.0')........
4a680 20 73 65 6c 66 2e 76 6f 69 64 63 6d 64 28 27 50 52 4f 54 20 50 27 29 0a 20 20 20 20 20 20 20 20 .self.voidcmd('PROT.P').........
4a6a0 73 65 6c 66 2e 70 72 6f 74 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 70 72 6f 74 5f 63 28 73 65 self.prot.=.1......def.prot_c(se
4a6c0 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 75 70 20 64 61 74 61 20 63 6f 6e 6e lf):........."""Set.up.data.conn
4a6e0 65 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 22 22 22 0a 20 20 20 20 20 20 20 20 ection.in.the.clear.""".........
4a700 73 65 6c 66 2e 76 6f 69 64 63 6d 64 28 27 50 52 4f 54 20 43 27 29 0a 20 20 20 20 20 20 20 20 73 self.voidcmd('PROT.C').........s
4a720 65 6c 66 2e 70 72 6f 74 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 6e 74 72 61 6e 73 66 65 72 63 elf.prot.=.0......def.ntransferc
4a740 6d 64 28 73 65 6c 66 2c 20 63 6d 64 2c 20 72 65 73 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 md(self,.cmd,.rest=None):.......
4a760 20 20 22 22 22 49 6e 69 74 69 61 74 65 20 61 20 64 61 74 61 20 74 72 61 6e 73 66 65 72 2e 22 22 .."""Initiate.a.data.transfer.""
4a780 22 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 2c 20 73 69 7a 65 20 3d 20 46 54 50 2e 6e 74 72 61 6e ".........conn,.size.=.FTP.ntran
4a7a0 73 66 65 72 63 6d 64 28 73 65 6c 66 2c 20 63 6d 64 2c 20 72 65 73 74 29 0a 20 20 20 20 20 20 20 sfercmd(self,.cmd,.rest)........
4a7c0 20 69 66 20 73 65 6c 66 2e 70 72 6f 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 20 .if.self.prot:.............conn.
4a7e0 3d 20 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 5f 63 74 78 2c 20 63 =.SSL.Connection(self.ssl_ctx,.c
4a800 6f 6e 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 73 65 74 75 70 5f 73 73 6c 28 onn).............conn.setup_ssl(
4a820 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 ).............conn.set_connect_s
4a840 74 61 74 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 73 65 74 5f 73 65 73 73 tate().............conn.set_sess
4a860 69 6f 6e 28 73 65 6c 66 2e 73 6f 63 6b 2e 67 65 74 5f 73 65 73 73 69 6f 6e 28 29 29 0a 20 20 20 ion(self.sock.get_session())....
4a880 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 28 29 0a 20 20 20 20 .........conn.connect_ssl().....
4a8a0 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 6e 2c 20 73 69 7a 65 0a 94 7d 94 28 8c 10 46 54 50 5f ....return.conn,.size..}.(..FTP_
4a8c0 54 4c 53 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 30 4b 37 87 94 8c 10 46 54 50 5f 54 4c TLS.__init__.jt...K0K7....FTP_TL
4a8e0 53 2e 61 75 74 68 5f 74 6c 73 94 6a 74 1f 00 00 4b 39 4b 41 87 94 8c 10 46 54 50 5f 54 4c 53 2e S.auth_tls.jt...K9KA....FTP_TLS.
4a900 61 75 74 68 5f 73 73 6c 94 6a 74 1f 00 00 4b 43 4b 45 87 94 8c 0e 46 54 50 5f 54 4c 53 2e 70 72 auth_ssl.jt...KCKE....FTP_TLS.pr
4a920 6f 74 5f 70 94 6a 74 1f 00 00 4b 47 4b 4b 87 94 8c 0e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 63 ot_p.jt...KGKK....FTP_TLS.prot_c
4a940 94 6a 74 1f 00 00 4b 4d 4b 50 87 94 8c 14 46 54 50 5f 54 4c 53 2e 6e 74 72 61 6e 73 66 65 72 63 .jt...KMKP....FTP_TLS.ntransferc
4a960 6d 64 94 6a 74 1f 00 00 4b 52 4b 5b 87 94 8c 07 46 54 50 5f 54 4c 53 94 6a 7d 1f 00 00 4b 2c 4b md.jt...KRK[....FTP_TLS.j}...K,K
4a980 5b 87 94 75 7d 94 28 8c 07 46 54 50 5f 54 4c 53 94 6a 53 02 00 00 8c 10 46 54 50 5f 54 4c 53 2e [..u}.(..FTP_TLS.jS.....FTP_TLS.
4a9a0 61 75 74 68 5f 73 73 6c 94 6a 53 02 00 00 8c 10 46 54 50 5f 54 4c 53 2e 61 75 74 68 5f 74 6c 73 auth_ssl.jS.....FTP_TLS.auth_tls
4a9c0 94 6a 53 02 00 00 8c 14 46 54 50 5f 54 4c 53 2e 6e 74 72 61 6e 73 66 65 72 63 6d 64 94 6a 53 02 .jS.....FTP_TLS.ntransfercmd.jS.
4a9e0 00 00 8c 0e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 63 94 6a 53 02 00 00 8c 0e 46 54 50 5f 54 4c ....FTP_TLS.prot_c.jS.....FTP_TL
4aa00 53 2e 70 72 6f 74 5f 70 94 6a 53 02 00 00 75 8c 10 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 S.prot_p.jS...u..M2Crypto.ftpsli
4aa20 62 94 74 94 8c 11 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 28 58 32 28 00 00 66 72 b.t...M2Crypto.httpslib.(X2(..fr
4aa40 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d om.__future__.import.absolute_im
4aa60 70 6f 72 74 0a 0a 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e 67 73 0a 0a 22 22 22 4d 32 43 72 79 70 port..import.warnings.."""M2Cryp
4aa80 74 6f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 50 79 74 68 6f 6e 27 73 20 68 74 74 70 6c 69 62 2e to.support.for.Python's.httplib.
4aaa0 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 65 ..Copyright.(c).1999-2004.Ng.Phe
4aac0 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 ng.Siong..All.rights.reserved.""
4aae0 22 0a 0a 69 6d 70 6f 72 74 20 62 61 73 65 36 34 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 0a "..import.base64.import.socket..
4ab00 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 53 53 4c 2c 20 70 79 32 37 70 6c from.M2Crypto.import.SSL,.py27pl
4ab20 75 73 2c 20 73 69 78 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e us,.six.from.M2Crypto.six.moves.
4ab40 75 72 6c 6c 69 62 5f 70 61 72 73 65 20 69 6d 70 6f 72 74 20 75 72 6c 73 70 6c 69 74 2c 20 75 72 urllib_parse.import.urlsplit,.ur
4ab60 6c 75 6e 73 70 6c 69 74 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 lunsplit.from.M2Crypto.six.moves
4ab80 2e 68 74 74 70 5f 63 6c 69 65 6e 74 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 0a 23 20 .http_client.import.*..#.noqa.#.
4aba0 54 68 69 73 20 69 73 20 6e 6f 74 20 69 6d 70 6f 72 74 65 64 20 77 69 74 68 20 6a 75 73 74 20 27 This.is.not.imported.with.just.'
4abc0 2a 27 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 68 74 74 70 5f *'.from.M2Crypto.six.moves.http_
4abe0 63 6c 69 65 6e 74 20 69 6d 70 6f 72 74 20 48 54 54 50 53 5f 50 4f 52 54 0a 69 66 20 70 79 32 37 client.import.HTTPS_PORT.if.py27
4ac00 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 plus:.....from.typing.import.Any
4ac20 2c 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 44 69 63 74 2c 20 4c 69 73 74 2c 20 ,.AnyStr,.Callable,.Dict,.List,.
4ac40 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 53 43 6f Optional..#.noqa...class.HTTPSCo
4ac60 6e 6e 65 63 74 69 6f 6e 28 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 29 3a 0a 0a 20 20 20 20 22 nnection(HTTPConnection):......"
4ac80 22 22 0a 20 20 20 20 54 68 69 73 20 63 6c 61 73 73 20 61 6c 6c 6f 77 73 20 63 6f 6d 6d 75 6e 69 "".....This.class.allows.communi
4aca0 63 61 74 69 6f 6e 20 76 69 61 20 53 53 4c 20 75 73 69 6e 67 20 4d 32 43 72 79 70 74 6f 2e 0a 20 cation.via.SSL.using.M2Crypto...
4acc0 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 3d 20 48 54 54 50 53 ..."""......default_port.=.HTTPS
4ace0 5f 50 4f 52 54 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 6f _PORT......def.__init__(self,.ho
4ad00 73 74 2c 20 70 6f 72 74 3d 4e 6f 6e 65 2c 20 73 74 72 69 63 74 3d 4e 6f 6e 65 2c 20 2a 2a 73 73 st,.port=None,.strict=None,.**ss
4ad20 6c 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 4f 70 74 69 6f 6e l):.........#.type:.(str,.Option
4ad40 61 6c 5b 69 6e 74 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 2c 20 2a 2a 41 6e 79 29 20 al[int],.Optional[bool],.**Any).
4ad60 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 70 72 ->.None.........""".........Repr
4ad80 65 73 65 6e 74 73 20 6f 6e 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 74 68 20 61 6e 20 48 esents.one.transaction.with.an.H
4ada0 54 54 50 20 73 65 72 76 65 72 20 6f 76 65 72 20 74 68 65 20 53 53 4c 0a 20 20 20 20 20 20 20 20 TTP.server.over.the.SSL.........
4adc0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 68 6f 73 74 connection...........:param.host
4ade0 3a 20 68 6f 73 74 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6f 72 74 3a :.host.name.........:param.port:
4ae00 20 70 6f 72 74 20 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 .port.number.........:param.stri
4ae20 63 74 3a 20 69 66 20 73 77 69 74 63 68 65 64 20 6f 6e 2c 20 69 74 20 72 61 69 73 65 73 20 42 61 ct:.if.switched.on,.it.raises.Ba
4ae40 64 53 74 61 74 75 73 4c 69 6e 65 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dStatusLine.to.be...............
4ae60 20 20 20 20 20 20 20 20 20 72 61 69 73 65 64 20 69 66 20 74 68 65 20 73 74 61 74 75 73 20 6c 69 .........raised.if.the.status.li
4ae80 6e 65 20 63 61 6e 27 74 20 62 65 20 70 61 72 73 65 64 20 61 73 0a 20 20 20 20 20 20 20 20 20 20 ne.can't.be.parsed.as...........
4aea0 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 76 61 6c 69 64 20 48 54 54 50 2f 31 2e 30 20 6f 72 .............a.valid.HTTP/1.0.or
4aec0 20 31 2e 31 20 73 74 61 74 75 73 20 6c 69 6e 65 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d .1.1.status.line..........:param
4aee0 20 73 73 6c 3a 20 64 69 63 74 20 77 69 74 68 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e 67 20 6e 61 .ssl:.dict.with.all.remaining.na
4af00 6d 65 64 20 72 65 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 0a 20 20 20 20 20 med.real.parameters.of.the......
4af20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 2e 20 53 70 65 63 69 66 69 ...............function..Specifi
4af40 63 61 6c 6c 79 2c 20 60 60 73 73 6c 5f 63 6f 6e 74 65 78 74 60 60 20 69 73 20 65 78 70 65 63 74 cally,.``ssl_context``.is.expect
4af60 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 62 65 20 69 6e 63 ed.....................to.be.inc
4af80 6c 75 64 65 64 20 77 69 74 68 20 53 53 4c 2e 43 6f 6e 74 65 78 74 3b 20 69 66 20 69 74 20 69 73 luded.with.SSL.Context;.if.it.is
4afa0 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 .not.....................default
4afc0 20 60 60 27 73 73 6c 76 32 33 27 60 60 20 69 73 20 73 75 62 73 74 69 74 75 74 65 64 29 2e 0a 20 .``'sslv23'``.is.substituted)...
4afe0 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 73 73 69 6f 6e 20 .......""".........self.session.
4b000 3d 20 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 73 65 =.None..#.type:.bytes.........se
4b020 6c 66 2e 68 6f 73 74 20 3d 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 72 74 lf.host.=.host.........self.port
4b040 20 3d 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 6b 65 79 73 20 3d 20 73 65 74 28 73 73 6c 2e 6b .=.port.........keys.=.set(ssl.k
4b060 65 79 73 28 29 29 20 2d 20 73 65 74 28 28 27 6b 65 79 5f 66 69 6c 65 27 2c 20 27 63 65 72 74 5f eys()).-.set(('key_file',.'cert_
4b080 66 69 6c 65 27 2c 20 27 73 73 6c 5f 63 6f 6e 74 65 78 74 27 29 29 0a 20 20 20 20 20 20 20 20 69 file',.'ssl_context')).........i
4b0a0 66 20 6b 65 79 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 f.keys:.............raise.ValueE
4b0c0 72 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 3a 20 rror('unknown.keyword.argument:.
4b0e0 25 73 27 2c 20 6b 65 79 73 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 %s',.keys).........try:.........
4b100 20 20 20 20 73 65 6c 66 2e 73 73 6c 5f 63 74 78 20 3d 20 73 73 6c 5b 27 73 73 6c 5f 63 6f 6e 74 ....self.ssl_ctx.=.ssl['ssl_cont
4b120 65 78 74 27 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 ext'].............assert.isinsta
4b140 6e 63 65 28 73 65 6c 66 2e 73 73 6c 5f 63 74 78 2c 20 53 53 4c 2e 43 6f 6e 74 65 78 74 29 2c 20 nce(self.ssl_ctx,.SSL.Context),.
4b160 73 65 6c 66 2e 73 73 6c 5f 63 74 78 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 self.ssl_ctx.........except.KeyE
4b180 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 5f 63 74 78 20 3d rror:.............self.ssl_ctx.=
4b1a0 20 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 48 54 54 50 43 6f 6e 6e 65 .SSL.Context().........HTTPConne
4b1c0 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c ction.__init__(self,.host,.port,
4b1e0 20 73 74 72 69 63 74 29 0a 0a 20 20 20 20 64 65 66 20 63 6f 6e 6e 65 63 74 28 73 65 6c 66 29 3a .strict)......def.connect(self):
4b200 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 .........#.type:.().->.None.....
4b220 20 20 20 20 65 72 72 6f 72 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 69 67 ....error.=.None.........#.We.ig
4b240 6e 6f 72 65 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 73 6f 63 6b 61 64 64 72 20 62 65 63 61 75 nore.the.returned.sockaddr.becau
4b260 73 65 20 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 20 6e 65 65 64 73 0a se.SSL.Connection.connect.needs.
4b280 20 20 20 20 20 20 20 20 23 20 61 20 68 6f 73 74 20 6e 61 6d 65 2e 0a 20 20 20 20 20 20 20 20 66 ........#.a.host.name..........f
4b2a0 6f 72 20 28 66 61 6d 69 6c 79 2c 20 5f 2c 20 5f 2c 20 5f 2c 20 5f 29 20 69 6e 20 5c 0a 20 20 20 or.(family,._,._,._,._).in.\....
4b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 2e 67 65 74 61 64 64 72 69 6e 66 6f 28 .............socket.getaddrinfo(
4b2e0 73 65 6c 66 2e 68 6f 73 74 2c 20 73 65 6c 66 2e 70 6f 72 74 2c 20 30 2c 0a 20 20 20 20 20 20 20 self.host,.self.port,.0,........
4b300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b ............................sock
4b320 65 74 2e 53 4f 43 4b 5f 53 54 52 45 41 4d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 et.SOCK_STREAM):.............soc
4b340 6b 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 k.=.None.............try:.......
4b360 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 20 3d 20 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 28 ..........sock.=.SSL.Connection(
4b380 73 65 6c 66 2e 73 73 6c 5f 63 74 78 2c 20 66 61 6d 69 6c 79 3d 66 61 6d 69 6c 79 29 0a 0a 20 20 self.ssl_ctx,.family=family)....
4b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 74 20 53 4e 49 20 73 65 72 76 65 72 20 6e ..............#.set.SNI.server.n
4b3c0 61 6d 65 20 73 69 6e 63 65 20 77 65 20 6b 6e 6f 77 20 69 74 20 61 74 20 74 68 69 73 20 70 6f 69 ame.since.we.know.it.at.this.poi
4b3e0 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 2e 73 65 74 5f 74 6c 73 65 nt.................sock.set_tlse
4b400 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 68 6f 73 74 29 0a 0a 20 20 20 20 20 20 20 xt_host_name(self.host).........
4b420 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 73 65 73 73 69 6f 6e 20 69 73 20 6e 6f 74 20 .........if.self.session.is.not.
4b440 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 2e 73 None:.....................sock.s
4b460 65 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2e 73 65 73 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 et_session(self.session)........
4b480 20 20 20 20 20 20 20 20 20 73 6f 63 6b 2e 63 6f 6e 6e 65 63 74 28 28 73 65 6c 66 2e 68 6f 73 74 .........sock.connect((self.host
4b4a0 2c 20 73 65 6c 66 2e 70 6f 72 74 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 ,.self.port))..................s
4b4c0 65 6c 66 2e 73 6f 63 6b 20 3d 20 73 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elf.sock.=.sock.................
4b4e0 73 6f 63 6b 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 sock.=.None.................retu
4b500 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 73 6f 63 6b 65 74 2e 65 72 72 rn.............except.socket.err
4b520 6f 72 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4f 74 68 65 72 or.as.e:.................#.Other
4b540 20 65 78 63 65 70 74 69 6f 6e 20 61 72 65 20 70 72 6f 62 61 62 6c 79 20 53 53 4c 2d 72 65 6c 61 .exception.are.probably.SSL-rela
4b560 74 65 64 2c 20 69 6e 20 74 68 61 74 20 63 61 73 65 20 77 65 0a 20 20 20 20 20 20 20 20 20 20 20 ted,.in.that.case.we............
4b580 20 20 20 20 20 23 20 61 62 6f 72 74 20 61 6e 64 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20 69 .....#.abort.and.the.exception.i
4b5a0 73 20 66 6f 72 77 61 72 64 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72 2e 0a 20 20 20 20 20 s.forwarded.to.the.caller.......
4b5c0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 65 0a 20 20 20 20 20 20 20 20 20 20 20 ...........error.=.e............
4b5e0 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 6f 63 .finally:.................if.soc
4b600 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 k.is.not.None:..................
4b620 20 20 20 73 6f 63 6b 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 65 72 72 6f ...sock.close()..........if.erro
4b640 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 41 73 73 r.is.None:.............raise.Ass
4b660 65 72 74 69 6f 6e 45 72 72 6f 72 28 22 45 6d 70 74 79 20 6c 69 73 74 20 72 65 74 75 72 6e 65 64 ertionError("Empty.list.returned
4b680 20 62 79 20 67 65 74 61 64 64 72 69 6e 66 6f 22 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 .by.getaddrinfo").........raise.
4b6a0 65 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 error......def.close(self):.....
4b6c0 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 ....#.type:.().->.None.........#
4b6e0 20 54 68 69 73 20 6b 6c 75 64 67 65 73 20 61 72 6f 75 6e 64 20 6c 69 6e 65 20 35 34 35 20 6f 66 .This.kludges.around.line.545.of
4b700 20 68 74 74 70 6c 69 62 2e 70 79 2c 0a 20 20 20 20 20 20 20 20 23 20 77 68 69 63 68 20 63 6c 6f .httplib.py,.........#.which.clo
4b720 73 65 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 ses.the.connection.in.this.objec
4b740 74 3b 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 72 65 6d 61 t;.........#.the.connection.rema
4b760 69 6e 73 20 6f 70 65 6e 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 ins.open.in.the.response........
4b780 20 23 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 4d .#.object..........#.........#.M
4b7a0 32 43 72 79 70 74 6f 20 64 6f 65 73 6e 27 74 20 63 6c 6f 73 65 2d 68 65 72 65 2d 6b 65 65 70 2d 2Crypto.doesn't.close-here-keep-
4b7c0 6f 70 65 6e 2d 74 68 65 72 65 2c 0a 20 20 20 20 20 20 20 20 23 20 73 6f 2c 20 69 6e 20 65 66 66 open-there,.........#.so,.in.eff
4b7e0 65 63 74 2c 20 77 65 20 64 6f 6e 27 74 20 63 6c 6f 73 65 20 75 6e 74 69 6c 20 74 68 65 20 77 68 ect,.we.don't.close.until.the.wh
4b800 6f 6c 65 0a 20 20 20 20 20 20 20 20 23 20 62 75 73 69 6e 65 73 73 20 69 73 20 6f 76 65 72 20 61 ole.........#.business.is.over.a
4b820 6e 64 20 67 63 20 6b 69 63 6b 73 20 69 6e 2e 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 nd.gc.kicks.in..........#.......
4b840 20 20 23 20 58 58 58 20 4c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 20 63 61 6c 6c 65 72 73 20 62 65 77 ..#.XXX.Long-running.callers.bew
4b860 61 72 65 20 6c 65 61 6b 61 67 65 2e 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 are.leakage..........#.........#
4b880 20 58 58 58 20 30 35 2d 4a 61 6e 2d 32 30 30 32 3a 20 54 68 69 73 20 6d 6f 64 75 6c 65 20 77 6f .XXX.05-Jan-2002:.This.module.wo
4b8a0 72 6b 73 20 77 69 74 68 20 50 79 74 68 6f 6e 20 32 2e 32 2c 0a 20 20 20 20 20 20 20 20 23 20 58 rks.with.Python.2.2,.........#.X
4b8c0 58 58 20 62 75 74 20 49 27 76 65 20 6e 6f 74 20 69 6e 76 65 73 74 69 67 61 74 65 64 20 69 66 20 XX.but.I've.not.investigated.if.
4b8e0 74 68 65 20 61 62 6f 76 65 20 63 6f 6e 64 69 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 23 20 58 the.above.conditions.........#.X
4b900 58 58 20 72 65 6d 61 69 6e 2e 0a 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 20 20 64 65 66 XX.remain..........pass......def
4b920 20 67 65 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 .get_session(self):.........#.ty
4b940 70 65 3a 20 28 29 20 2d 3e 20 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 0a 20 20 pe:.().->.SSL.Session.Session...
4b960 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 2e 67 65 74 5f 73 65 73 73 69 ......return.self.sock.get_sessi
4b980 6f 6e 28 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2c 20 on()......def.set_session(self,.
4b9a0 73 65 73 73 69 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 53 53 4c 2e 53 session):.........#.type:.(SSL.S
4b9c0 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 ession.Session).->.None.........
4b9e0 73 65 6c 66 2e 73 65 73 73 69 6f 6e 20 3d 20 73 65 73 73 69 6f 6e 0a 0a 0a 63 6c 61 73 73 20 50 self.session.=.session...class.P
4ba00 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 48 54 54 50 53 43 6f 6e 6e 65 63 74 roxyHTTPSConnection(HTTPSConnect
4ba20 69 6f 6e 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 41 6e 20 48 54 54 50 53 20 43 6f 6e 6e 65 ion):.....""".....An.HTTPS.Conne
4ba40 63 74 69 6f 6e 20 74 68 61 74 20 75 73 65 73 20 61 20 70 72 6f 78 79 20 61 6e 64 20 74 68 65 20 ction.that.uses.a.proxy.and.the.
4ba60 43 4f 4e 4e 45 43 54 20 72 65 71 75 65 73 74 2e 0a 0a 20 20 20 20 57 68 65 6e 20 74 68 65 20 63 CONNECT.request.......When.the.c
4ba80 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69 6e 69 74 69 61 74 65 64 2c 20 43 4f 4e 4e 45 43 54 20 onnection.is.initiated,.CONNECT.
4baa0 69 73 20 66 69 72 73 74 20 73 65 6e 74 20 74 6f 20 74 68 65 20 70 72 6f 78 79 20 28 61 6c 6f 6e is.first.sent.to.the.proxy.(alon
4bac0 67 0a 20 20 20 20 77 69 74 68 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 68 65 61 64 65 72 73 g.....with.authorization.headers
4bae0 2c 20 69 66 20 73 75 70 70 6c 69 65 64 29 2e 20 49 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 61 ,.if.supplied)..If.successful,.a
4bb00 6e 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 77 69 6c 6c 20 62 65 20 65 73 74 n.SSL.connection.....will.be.est
4bb20 61 62 6c 69 73 68 65 64 20 6f 76 65 72 20 74 68 65 20 73 6f 63 6b 65 74 20 74 68 72 6f 75 67 68 ablished.over.the.socket.through
4bb40 20 74 68 65 20 70 72 6f 78 79 20 61 6e 64 20 74 6f 20 74 68 65 20 74 61 72 67 65 74 0a 20 20 20 .the.proxy.and.to.the.target....
4bb60 20 68 6f 73 74 2e 0a 0a 20 20 20 20 46 69 6e 61 6c 6c 79 2c 20 74 68 65 20 61 63 74 75 61 6c 20 .host.......Finally,.the.actual.
4bb80 72 65 71 75 65 73 74 20 69 73 20 73 65 6e 74 20 6f 76 65 72 20 74 68 65 20 53 53 4c 20 63 6f 6e request.is.sent.over.the.SSL.con
4bba0 6e 65 63 74 69 6f 6e 20 74 75 6e 6e 65 6c 69 6e 67 0a 20 20 20 20 74 68 72 6f 75 67 68 20 74 68 nection.tunneling.....through.th
4bbc0 65 20 70 72 6f 78 79 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 5f 70 6f 72 74 73 20 3d 20 7b e.proxy......"""......_ports.=.{
4bbe0 27 68 74 74 70 27 3a 20 38 30 2c 20 27 68 74 74 70 73 27 3a 20 34 34 33 7d 0a 20 20 20 20 5f 41 'http':.80,.'https':.443}....._A
4bc00 55 54 48 5f 48 45 41 44 45 52 20 3d 20 22 50 72 6f 78 79 2d 41 75 74 68 6f 72 69 7a 61 74 69 6f UTH_HEADER.=."Proxy-Authorizatio
4bc20 6e 22 0a 20 20 20 20 5f 55 41 5f 48 45 41 44 45 52 20 3d 20 22 55 73 65 72 2d 41 67 65 6e 74 22 n"....._UA_HEADER.=."User-Agent"
4bc40 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 70 ......def.__init__(self,.host,.p
4bc60 6f 72 74 3d 4e 6f 6e 65 2c 20 73 74 72 69 63 74 3d 4e 6f 6e 65 2c 20 75 73 65 72 6e 61 6d 65 3d ort=None,.strict=None,.username=
4bc80 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 77 6f 72 64 3d None,..................password=
4bca0 4e 6f 6e 65 2c 20 2a 2a 73 73 6c 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 None,.**ssl):.........#.type:.(s
4bcc0 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c tr,.Optional[int],.Optional[bool
4bce0 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e ],.Optional[AnyStr],.Optional[An
4bd00 79 53 74 72 5d 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 yStr],.**Any).->.None.........""
4bd20 22 0a 20 20 20 20 20 20 20 20 43 72 65 61 74 65 20 74 68 65 20 50 72 6f 78 79 48 54 54 50 53 43 ".........Create.the.ProxyHTTPSC
4bd40 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 onnection.object...........:para
4bd60 6d 20 68 6f 73 74 3a 20 68 6f 73 74 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 72 6f 78 79 20 73 m.host:.host.name.of.the.proxy.s
4bd80 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6f 72 74 3a 20 70 6f 72 74 20 erver.........:param.port:.port.
4bda0 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 70 72 6f 78 79 20 73 65 72 76 65 72 0a 20 20 20 20 20 number.of.the.proxy.server......
4bdc0 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 63 74 3a 20 69 66 20 73 77 69 74 63 68 65 64 20 6f 6e ...:param.strict:.if.switched.on
4bde0 2c 20 69 74 20 72 61 69 73 65 73 20 42 61 64 53 74 61 74 75 73 4c 69 6e 65 20 74 6f 20 62 65 0a ,.it.raises.BadStatusLine.to.be.
4be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 64 20 69 66 .......................raised.if
4be20 20 74 68 65 20 73 74 61 74 75 73 20 6c 69 6e 65 20 63 61 6e 27 74 20 62 65 20 70 61 72 73 65 64 .the.status.line.can't.be.parsed
4be40 20 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 76 61 6c .as........................a.val
4be60 69 64 20 48 54 54 50 2f 31 2e 30 20 6f 72 20 31 2e 31 20 73 74 61 74 75 73 20 6c 69 6e 65 2e 0a id.HTTP/1.0.or.1.1.status.line..
4be80 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 75 73 65 72 6e 61 6d 65 3a 20 75 73 65 72 6e 61 6d ........:param.username:.usernam
4bea0 65 20 6f 6e 20 74 68 65 20 70 72 6f 78 79 20 73 65 72 76 65 72 2c 20 77 68 65 6e 20 72 65 71 75 e.on.the.proxy.server,.when.requ
4bec0 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 73 ired..........................Us
4bee0 65 72 6e 61 6d 65 20 63 61 6e 20 62 65 20 60 60 73 74 72 60 60 2c 20 62 75 74 20 70 72 65 66 65 ername.can.be.``str``,.but.prefe
4bf00 72 72 65 64 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rred.type.......................
4bf20 20 20 20 69 73 20 60 60 62 79 74 65 73 60 60 2e 20 4d 32 43 72 79 70 74 6f 20 64 6f 65 73 20 73 ...is.``bytes``..M2Crypto.does.s
4bf40 6f 6d 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ome.conversion.to...............
4bf60 20 20 20 20 20 20 20 20 20 20 20 60 60 62 79 74 65 73 60 60 20 77 68 65 6e 20 6e 65 63 65 73 73 ...........``bytes``.when.necess
4bf80 61 72 79 2c 20 62 75 74 20 69 74 27 73 20 62 65 74 74 65 72 20 77 68 65 6e 0a 20 20 20 20 20 20 ary,.but.it's.better.when.......
4bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 75 73 65 72 20 6f 66 20 74 ...................the.user.of.t
4bfc0 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 69 74 20 6f 6e 20 69 74 73 20 6f 77 6e 2e 0a 20 he.library.does.it.on.its.own...
4bfe0 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 61 73 73 77 6f 72 64 3a 20 70 61 73 73 77 6f 72 64 .......:param.password:.password
4c000 20 6f 6e 20 74 68 65 20 70 72 6f 78 79 20 73 65 72 76 65 72 2c 20 77 68 65 6e 20 72 65 71 75 69 .on.the.proxy.server,.when.requi
4c020 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 red..........................The
4c040 20 73 61 6d 65 20 61 73 20 77 69 74 68 20 60 60 75 73 65 72 6e 61 6d 65 60 60 2c 20 60 60 73 74 .same.as.with.``username``,.``st
4c060 72 60 60 20 69 73 20 61 63 63 65 70 74 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r``.is.accepted,................
4c080 20 20 20 20 20 20 20 20 20 20 62 75 74 20 60 60 62 79 74 65 73 60 60 20 61 72 65 20 70 72 65 66 ..........but.``bytes``.are.pref
4c0a0 65 72 72 65 64 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 73 6c 3a 20 64 69 63 74 20 erred..........:param.ssl:.dict.
4c0c0 77 69 74 68 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e 67 20 6e 61 6d 65 64 20 72 65 61 6c 20 70 61 with.all.remaining.named.real.pa
4c0e0 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rameters.of.the.................
4c100 20 20 20 20 66 75 6e 63 74 69 6f 6e 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 60 60 73 73 ....function..Specifically,.``ss
4c120 6c 5f 63 6f 6e 74 65 78 74 60 60 20 69 73 20 65 78 70 65 63 74 65 64 0a 20 20 20 20 20 20 20 20 l_context``.is.expected.........
4c140 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 62 65 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 ............to.be.included.with.
4c160 53 53 4c 2e 43 6f 6e 74 65 78 74 3b 20 69 66 20 69 74 20 69 73 20 6e 6f 74 0a 20 20 20 20 20 20 SSL.Context;.if.it.is.not.......
4c180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 20 60 60 27 73 73 6c 76 32 33 27 ..............default.``'sslv23'
4c1a0 60 60 20 69 73 20 73 75 62 73 74 69 74 75 74 65 64 29 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a ``.is.substituted)..........""".
4c1c0 20 20 20 20 20 20 20 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f ........HTTPSConnection.__init__
4c1e0 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 73 74 72 69 63 74 2c 20 2a 2a 73 73 6c (self,.host,.port,.strict,.**ssl
4c200 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 75 73 65 72 6e 61 6d 65 20 3d 20 75 73 65 72 )..........self._username.=.user
4c220 6e 61 6d 65 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 name.encode('utf8').\...........
4c240 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 75 73 65 72 6e 61 6d 65 2c 20 73 69 78 2e 73 74 ..if.isinstance(username,.six.st
4c260 72 69 6e 67 5f 74 79 70 65 73 29 20 65 6c 73 65 20 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 ring_types).else.username.......
4c280 20 20 73 65 6c 66 2e 5f 70 61 73 73 77 6f 72 64 20 3d 20 70 61 73 73 77 6f 72 64 2e 65 6e 63 6f ..self._password.=.password.enco
4c2a0 64 65 28 27 75 74 66 38 27 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e de('utf8').\.............if.isin
4c2c0 73 74 61 6e 63 65 28 70 61 73 73 77 6f 72 64 2c 20 73 69 78 2e 73 74 72 69 6e 67 5f 74 79 70 65 stance(password,.six.string_type
4c2e0 73 29 20 65 6c 73 65 20 70 61 73 73 77 6f 72 64 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 s).else.password.........self._p
4c300 72 6f 78 79 5f 61 75 74 68 20 3d 20 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 73 74 72 0a 20 20 roxy_auth.=.None..#.type:.str...
4c320 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 20 3d 20 4e 6f 6e 65 20 20 23 20 74 ......self._proxy_UA.=.None..#.t
4c340 79 70 65 3a 20 73 74 72 0a 0a 20 20 20 20 64 65 66 20 70 75 74 72 65 71 75 65 73 74 28 73 65 6c ype:.str......def.putrequest(sel
4c360 66 2c 20 6d 65 74 68 6f 64 2c 20 75 72 6c 2c 20 73 6b 69 70 5f 68 6f 73 74 3d 30 2c 20 73 6b 69 f,.method,.url,.skip_host=0,.ski
4c380 70 5f 61 63 63 65 70 74 5f 65 6e 63 6f 64 69 6e 67 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 p_accept_encoding=0):.........#.
4c3a0 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 41 6e 79 53 74 72 2c 20 69 6e 74 2c 20 69 6e 74 29 type:.(AnyStr,.AnyStr,.int,.int)
4c3c0 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 70 75 74 .->.None.........""".........put
4c3e0 72 65 71 75 65 73 74 20 69 73 20 63 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 63 6f 6e 6e 65 63 74 request.is.called.before.connect
4c400 2c 20 73 6f 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 75 72 6c 20 61 6e 64 20 67 65 74 0a 20 ,.so.can.interpret.url.and.get..
4c420 20 20 20 20 20 20 20 72 65 61 6c 20 68 6f 73 74 2f 70 6f 72 74 20 74 6f 20 62 65 20 75 73 65 64 .......real.host/port.to.be.used
4c440 20 74 6f 20 6d 61 6b 65 20 43 4f 4e 4e 45 43 54 20 72 65 71 75 65 73 74 20 74 6f 20 70 72 6f 78 .to.make.CONNECT.request.to.prox
4c460 79 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 70 72 6f 74 6f 2c 20 6e 65 74 y.........""".........proto,.net
4c480 6c 6f 63 2c 20 70 61 74 68 2c 20 71 75 65 72 79 2c 20 66 72 61 67 6d 65 6e 74 20 3d 20 75 72 6c loc,.path,.query,.fragment.=.url
4c4a0 73 70 6c 69 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 70 72 6f 74 6f 3a split(url).........if.not.proto:
4c4c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 75 .............raise.ValueError("u
4c4e0 6e 6b 6e 6f 77 6e 20 55 52 4c 20 74 79 70 65 3a 20 25 73 22 20 25 20 75 72 6c 29 0a 0a 20 20 20 nknown.URL.type:.%s".%.url).....
4c500 20 20 20 20 20 23 20 67 65 74 20 68 6f 73 74 20 26 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 74 .....#.get.host.&.port.........t
4c520 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e 61 6d 65 5f 70 61 73 73 77 6f 72 ry:.............username_passwor
4c540 64 2c 20 68 6f 73 74 5f 70 6f 72 74 20 3d 20 6e 65 74 6c 6f 63 2e 73 70 6c 69 74 28 27 40 27 29 d,.host_port.=.netloc.split('@')
4c560 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 56 61 6c 75 65 45 72 72 6f 72 3a 0a 20 20 20 20 .........except.ValueError:.....
4c580 20 20 20 20 20 20 20 20 68 6f 73 74 5f 70 6f 72 74 20 3d 20 6e 65 74 6c 6f 63 0a 0a 20 20 20 20 ........host_port.=.netloc......
4c5a0 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 5f ....try:.............host,.port_
4c5c0 73 20 3d 20 68 6f 73 74 5f 70 6f 72 74 2e 73 70 6c 69 74 28 27 3a 27 29 0a 20 20 20 20 20 20 20 s.=.host_port.split(':')........
4c5e0 20 20 20 20 20 70 6f 72 74 20 3d 20 69 6e 74 28 70 6f 72 74 5f 73 29 0a 20 20 20 20 20 20 20 20 .....port.=.int(port_s).........
4c600 65 78 63 65 70 74 20 56 61 6c 75 65 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 except.ValueError:.............h
4c620 6f 73 74 20 3d 20 68 6f 73 74 5f 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 72 ost.=.host_port.............#.tr
4c640 79 20 74 6f 20 67 65 74 20 70 6f 72 74 20 66 72 6f 6d 20 70 72 6f 74 6f 0a 20 20 20 20 20 20 20 y.to.get.port.from.proto........
4c660 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 20 3d .....try:.................port.=
4c680 20 73 65 6c 66 2e 5f 70 6f 72 74 73 5b 70 72 6f 74 6f 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .self._ports[proto].............
4c6a0 65 78 63 65 70 74 20 4b 65 79 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 except.KeyError:................
4c6c0 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 75 6e 6b 6e 6f 77 6e 20 70 72 6f 74 6f .raise.ValueError("unknown.proto
4c6e0 63 6f 6c 20 66 6f 72 3a 20 25 73 22 20 25 20 75 72 6c 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c col.for:.%s".%.url)..........sel
4c700 66 2e 5f 72 65 61 6c 5f 68 6f 73 74 20 3d 20 68 6f 73 74 20 20 23 20 74 79 70 65 3a 20 73 74 72 f._real_host.=.host..#.type:.str
4c720 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 72 65 61 6c 5f 70 6f 72 74 20 3d 20 70 6f 72 74 20 .........self._real_port.=.port.
4c740 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 73 74 20 3d 20 75 72 6c 75 .#.type:.int.........rest.=.urlu
4c760 6e 73 70 6c 69 74 28 28 27 27 2c 20 27 27 2c 20 70 61 74 68 2c 20 71 75 65 72 79 2c 20 66 72 61 nsplit(('',.'',.path,.query,.fra
4c780 67 6d 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e gment)).........HTTPSConnection.
4c7a0 70 75 74 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 6d 65 74 68 6f 64 2c 20 72 65 73 74 2c 20 73 putrequest(self,.method,.rest,.s
4c7c0 6b 69 70 5f 68 6f 73 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kip_host,.......................
4c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6b 69 70 5f 61 63 63 65 70 74 5f 65 6e 63 6f 64 69 6e .............skip_accept_encodin
4c800 67 29 0a 0a 20 20 20 20 64 65 66 20 70 75 74 68 65 61 64 65 72 28 73 65 6c 66 2c 20 68 65 61 64 g)......def.putheader(self,.head
4c820 65 72 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 er,.value):.........#.type:.(Any
4c840 53 74 72 2c 20 41 6e 79 53 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 53 Str,.AnyStr).->.None.........#.S
4c860 74 6f 72 65 20 74 68 65 20 61 75 74 68 20 68 65 61 64 65 72 20 69 66 20 70 61 73 73 65 64 20 69 tore.the.auth.header.if.passed.i
4c880 6e 2e 0a 20 20 20 20 20 20 20 20 69 66 20 68 65 61 64 65 72 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 n..........if.header.lower().==.
4c8a0 73 65 6c 66 2e 5f 55 41 5f 48 45 41 44 45 52 2e 6c 6f 77 65 72 28 29 3a 0a 20 20 20 20 20 20 20 self._UA_HEADER.lower():........
4c8c0 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 20 3d 20 76 61 6c 75 65 0a 20 20 20 20 .....self._proxy_UA.=.value.....
4c8e0 20 20 20 20 69 66 20 68 65 61 64 65 72 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 73 65 6c 66 2e 5f 41 ....if.header.lower().==.self._A
4c900 55 54 48 5f 48 45 41 44 45 52 2e 6c 6f 77 65 72 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 UTH_HEADER.lower():.............
4c920 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 20 3d 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 self._proxy_auth.=.value........
4c940 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 .else:.............HTTPSConnecti
4c960 6f 6e 2e 70 75 74 68 65 61 64 65 72 28 73 65 6c 66 2c 20 68 65 61 64 65 72 2c 20 76 61 6c 75 65 on.putheader(self,.header,.value
4c980 29 0a 0a 20 20 20 20 64 65 66 20 65 6e 64 68 65 61 64 65 72 73 28 73 65 6c 66 2c 20 2a 61 72 67 )......def.endheaders(self,.*arg
4c9a0 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 2a s,.**kwargs):.........#.type:.(*
4c9c0 41 6e 79 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 57 65 Any,.**Any).->.None.........#.We
4c9e0 27 76 65 20 72 65 63 69 65 76 65 64 20 61 6c 6c 20 6f 66 20 68 74 65 20 68 65 61 64 65 72 73 2e 've.recieved.all.of.hte.headers.
4ca00 20 55 73 65 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 .Use.the.supplied.username......
4ca20 20 20 20 23 20 61 6e 64 20 70 61 73 73 77 6f 72 64 20 66 6f 72 20 61 75 74 68 6f 72 69 7a 61 74 ...#.and.password.for.authorizat
4ca40 69 6f 6e 2c 20 70 6f 73 73 69 62 6c 79 20 6f 76 65 72 72 69 64 69 6e 67 20 74 68 65 20 61 75 74 ion,.possibly.overriding.the.aut
4ca60 68 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 23 20 73 75 70 70 6c 69 65 64 20 69 6e 20 74 68 hstring.........#.supplied.in.th
4ca80 65 20 68 65 61 64 65 72 73 2e 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 5f e.headers..........if.not.self._
4caa0 70 72 6f 78 79 5f 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 proxy_auth:.............self._pr
4cac0 6f 78 79 5f 61 75 74 68 20 3d 20 73 65 6c 66 2e 5f 65 6e 63 6f 64 65 5f 61 75 74 68 28 29 0a 0a oxy_auth.=.self._encode_auth()..
4cae0 20 20 20 20 20 20 20 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 65 6e 64 68 65 61 64 65 ........HTTPSConnection.endheade
4cb00 72 73 28 73 65 6c 66 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 61 72 67 73 29 0a 0a 20 20 20 20 64 rs(self,.*args,.**kwargs)......d
4cb20 65 66 20 63 6f 6e 6e 65 63 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 ef.connect(self):.........#.type
4cb40 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 48 54 54 50 43 6f 6e 6e 65 63 74 :.().->.None.........HTTPConnect
4cb60 69 6f 6e 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 29 0a 0a 20 20 20 20 20 20 20 20 23 20 73 65 6e ion.connect(self)..........#.sen
4cb80 64 20 70 72 6f 78 79 20 43 4f 4e 4e 45 43 54 20 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 d.proxy.CONNECT.request.........
4cba0 73 65 6c 66 2e 73 6f 63 6b 2e 73 65 6e 64 61 6c 6c 28 73 65 6c 66 2e 5f 67 65 74 5f 63 6f 6e 6e self.sock.sendall(self._get_conn
4cbc0 65 63 74 5f 6d 73 67 28 29 29 0a 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 3d 20 48 54 ect_msg()).........response.=.HT
4cbe0 54 50 52 65 73 70 6f 6e 73 65 28 73 65 6c 66 2e 73 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 72 65 TPResponse(self.sock).........re
4cc00 73 70 6f 6e 73 65 2e 62 65 67 69 6e 28 29 0a 0a 20 20 20 20 20 20 20 20 63 6f 64 65 20 3d 20 72 sponse.begin()..........code.=.r
4cc20 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 69 66 20 63 6f 64 65 20 21 esponse.status.........if.code.!
4cc40 3d 20 32 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 72 6f 78 79 20 72 65 74 75 72 =.200:.............#.proxy.retur
4cc60 6e 65 64 20 61 6e 64 20 65 72 72 6f 72 2c 20 61 62 6f 72 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c ned.and.error,.abort.connection,
4cc80 20 61 6e 64 20 72 61 69 73 65 20 65 78 63 65 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 .and.raise.exception............
4cca0 20 73 65 6c 66 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 .self.close().............raise.
4ccc0 73 6f 63 6b 65 74 2e 65 72 72 6f 72 28 22 50 72 6f 78 79 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 socket.error("Proxy.connection.f
4cce0 61 69 6c 65 64 3a 20 25 64 22 20 25 20 63 6f 64 65 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 ailed:.%d".%.code)..........self
4cd00 2e 5f 73 74 61 72 74 5f 73 73 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 67 65 74 5f 63 6f 6e 6e ._start_ssl()......def._get_conn
4cd20 65 63 74 5f 6d 73 67 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 ect_msg(self):.........#.type:.(
4cd40 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 20 52 65 74 75 72 6e 20 61 6e ).->.bytes.........""".Return.an
4cd60 20 48 54 54 50 20 43 4f 4e 4e 45 43 54 20 72 65 71 75 65 73 74 20 74 6f 20 73 65 6e 64 20 74 6f .HTTP.CONNECT.request.to.send.to
4cd80 20 74 68 65 20 70 72 6f 78 79 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 22 43 .the.proxy..""".........msg.=."C
4cda0 4f 4e 4e 45 43 54 20 25 73 3a 25 64 20 48 54 54 50 2f 31 2e 31 5c 72 5c 6e 22 20 25 20 28 73 65 ONNECT.%s:%d.HTTP/1.1\r\n".%.(se
4cdc0 6c 66 2e 5f 72 65 61 6c 5f 68 6f 73 74 2c 20 73 65 6c 66 2e 5f 72 65 61 6c 5f 70 6f 72 74 29 0a lf._real_host,.self._real_port).
4cde0 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 6d 73 67 20 2b 20 22 48 6f 73 74 3a 20 25 73 3a 25 64 ........msg.=.msg.+."Host:.%s:%d
4ce00 5c 72 5c 6e 22 20 25 20 28 73 65 6c 66 2e 5f 72 65 61 6c 5f 68 6f 73 74 2c 20 73 65 6c 66 2e 5f \r\n".%.(self._real_host,.self._
4ce20 72 65 61 6c 5f 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 70 72 6f 78 real_port).........if.self._prox
4ce40 79 5f 55 41 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 6d 73 67 20 2b 20 22 25 y_UA:.............msg.=.msg.+."%
4ce60 73 3a 20 25 73 5c 72 5c 6e 22 20 25 20 28 73 65 6c 66 2e 5f 55 41 5f 48 45 41 44 45 52 2c 20 73 s:.%s\r\n".%.(self._UA_HEADER,.s
4ce80 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f elf._proxy_UA).........if.self._
4cea0 70 72 6f 78 79 5f 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 6d 73 proxy_auth:.............msg.=.ms
4cec0 67 20 2b 20 22 25 73 3a 20 25 73 5c 72 5c 6e 22 20 25 20 28 73 65 6c 66 2e 5f 41 55 54 48 5f 48 g.+."%s:.%s\r\n".%.(self._AUTH_H
4cee0 45 41 44 45 52 2c 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 29 0a 20 20 20 20 20 20 20 EADER,.self._proxy_auth)........
4cf00 20 6d 73 67 20 3d 20 6d 73 67 20 2b 20 22 5c 72 5c 6e 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 .msg.=.msg.+."\r\n".........retu
4cf20 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 6d 73 67 29 0a 0a 20 20 20 20 64 rn.six.ensure_binary(msg)......d
4cf40 65 66 20 5f 73 74 61 72 74 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 ef._start_ssl(self):.........#.t
4cf60 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 20 4d 61 6b 65 ype:.().->.None.........""".Make
4cf80 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 27 73 20 73 6f 63 6b 65 74 20 53 53 4c 2d 61 77 .this.connection's.socket.SSL-aw
4cfa0 61 72 65 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 20 3d 20 53 53 4c are..""".........self.sock.=.SSL
4cfc0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 5f 63 74 78 2c 20 73 65 6c 66 2e 73 .Connection(self.ssl_ctx,.self.s
4cfe0 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 2e 73 65 74 75 70 5f 73 73 6c ock).........self.sock.setup_ssl
4d000 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 2e 73 65 74 5f 63 6f 6e 6e 65 63 74 ().........self.sock.set_connect
4d020 5f 73 74 61 74 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 2e 63 6f 6e 6e 65 _state().........self.sock.conne
4d040 63 74 5f 73 73 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 65 6e 63 6f 64 65 5f 61 75 74 68 28 73 ct_ssl()......def._encode_auth(s
4d060 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4f 70 74 69 elf):.........#.type:.().->.Opti
4d080 6f 6e 61 6c 5b 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 22 22 22 20 45 6e 63 6f 64 65 20 74 onal[bytes].........""".Encode.t
4d0a0 68 65 20 75 73 65 72 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 77 6f 72 64 20 66 6f 72 20 75 73 65 he.username.and.password.for.use
4d0c0 20 69 6e 20 74 68 65 20 61 75 74 68 20 68 65 61 64 65 72 2e 20 22 22 22 0a 20 20 20 20 20 20 20 .in.the.auth.header.."""........
4d0e0 20 69 66 20 6e 6f 74 20 28 73 65 6c 66 2e 5f 75 73 65 72 6e 61 6d 65 20 61 6e 64 20 73 65 6c 66 .if.not.(self._username.and.self
4d100 2e 5f 70 61 73 73 77 6f 72 64 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ._password):.............return.
4d120 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 70 72 6f None.........#.Authenticated.pro
4d140 78 79 0a 20 20 20 20 20 20 20 20 75 73 65 72 70 61 73 73 20 3d 20 22 25 73 3a 25 73 22 20 25 20 xy.........userpass.=."%s:%s".%.
4d160 28 73 65 6c 66 2e 5f 75 73 65 72 6e 61 6d 65 2c 20 73 65 6c 66 2e 5f 70 61 73 73 77 6f 72 64 29 (self._username,.self._password)
4d180 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 77 61 72 6e 69 6e 67 73 2e 63 61 74 63 68 5f 77 61 72 .........with.warnings.catch_war
4d1a0 6e 69 6e 67 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 2e 73 69 nings():.............warnings.si
4d1c0 6d 70 6c 65 66 69 6c 74 65 72 28 22 69 67 6e 6f 72 65 22 2c 20 44 65 70 72 65 63 61 74 69 6f 6e mplefilter("ignore",.Deprecation
4d1e0 57 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 5f 75 73 65 72 70 61 73 Warning).............enc_userpas
4d200 73 20 3d 20 62 61 73 65 36 34 2e 65 6e 63 6f 64 65 73 74 72 69 6e 67 28 75 73 65 72 70 61 73 73 s.=.base64.encodestring(userpass
4d220 29 2e 72 65 70 6c 61 63 65 28 22 5c 6e 22 2c 20 22 22 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 ).replace("\n",."").........retu
4d240 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 22 42 61 73 69 63 20 25 73 22 20 rn.six.ensure_binary("Basic.%s".
4d260 25 20 65 6e 63 5f 75 73 65 72 70 61 73 73 29 0a 94 7d 94 28 8c 18 48 54 54 50 53 43 6f 6e 6e 65 %.enc_userpass)..}.(..HTTPSConne
4d280 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 1d 4b 38 87 94 8c 17 48 54 54 50 ction.__init__.jt...K.K8....HTTP
4d2a0 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 74 1f 00 00 4b 3a 4b 5a 87 94 8c SConnection.connect.jt...K:KZ...
4d2c0 15 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 74 1f 00 00 4b 5c 4b 6c .HTTPSConnection.close.jt...K\Kl
4d2e0 87 94 8c 1b 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 ....HTTPSConnection.get_session.
4d300 6a 74 1f 00 00 4b 6e 4b 70 87 94 8c 1b 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 jt...KnKp....HTTPSConnection.set
4d320 5f 73 65 73 73 69 6f 6e 94 6a 74 1f 00 00 4b 72 4b 74 87 94 8c 0f 48 54 54 50 53 43 6f 6e 6e 65 _session.jt...KrKt....HTTPSConne
4d340 63 74 69 6f 6e 94 6a 7d 1f 00 00 4b 15 4b 74 87 94 8c 1d 50 72 6f 78 79 48 54 54 50 53 43 6f 6e ction.j}...K.Kt....ProxyHTTPSCon
4d360 6e 65 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 88 4b a7 87 94 8c 1f 50 72 nection.__init__.jt...K.K.....Pr
4d380 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 72 65 71 75 65 73 74 94 6a 74 oxyHTTPSConnection.putrequest.jt
4d3a0 1f 00 00 4b a9 4b c8 87 94 8c 1e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e ...K.K.....ProxyHTTPSConnection.
4d3c0 70 75 74 68 65 61 64 65 72 94 6a 74 1f 00 00 4b ca 4b d2 87 94 8c 1f 50 72 6f 78 79 48 54 54 50 putheader.jt...K.K.....ProxyHTTP
4d3e0 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 65 6e 64 68 65 61 64 65 72 73 94 6a 74 1f 00 00 4b d4 4b dc SConnection.endheaders.jt...K.K.
4d400 87 94 8c 1c 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 ....ProxyHTTPSConnection.connect
4d420 94 6a 74 1f 00 00 4b de 4b ed 87 94 8c 25 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 .jt...K.K....%ProxyHTTPSConnecti
4d440 6f 6e 2e 5f 67 65 74 5f 63 6f 6e 6e 65 63 74 5f 6d 73 67 94 6a 74 1f 00 00 4b ef 4b f9 87 94 8c on._get_connect_msg.jt...K.K....
4d460 1f 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 74 61 72 74 5f 73 73 6c .ProxyHTTPSConnection._start_ssl
4d480 94 6a 74 1f 00 00 4b fb 4d 01 01 87 94 8c 21 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 .jt...K.M.....!ProxyHTTPSConnect
4d4a0 69 6f 6e 2e 5f 65 6e 63 6f 64 65 5f 61 75 74 68 94 6a 74 1f 00 00 4d 03 01 4d 0d 01 87 94 8c 14 ion._encode_auth.jt...M..M......
4d4c0 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 7d 1f 00 00 4b 77 4d 0d 01 87 ProxyHTTPSConnection.j}...KwM...
4d4e0 94 75 7d 94 28 8c 0f 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 53 02 00 00 8c 15 48 54 .u}.(..HTTPSConnection.jS.....HT
4d500 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 53 02 00 00 8c 17 48 54 54 50 53 TPSConnection.close.jS.....HTTPS
4d520 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 53 02 00 00 8c 1b 48 54 54 50 53 43 Connection.connect.jS.....HTTPSC
4d540 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a 53 02 00 00 8c 1b 48 54 54 onnection.get_session.jS.....HTT
4d560 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 6a 53 02 00 00 8c 14 PSConnection.set_session.jS.....
4d580 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 53 02 00 00 8c 1c 50 72 6f 78 ProxyHTTPSConnection.jS.....Prox
4d5a0 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 53 02 00 00 8c 1f yHTTPSConnection.connect.jS.....
4d5c0 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 65 6e 64 68 65 61 64 65 72 73 94 ProxyHTTPSConnection.endheaders.
4d5e0 6a 53 02 00 00 8c 1e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 68 jS.....ProxyHTTPSConnection.puth
4d600 65 61 64 65 72 94 6a 53 02 00 00 8c 1f 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f eader.jS.....ProxyHTTPSConnectio
4d620 6e 2e 70 75 74 72 65 71 75 65 73 74 94 6a 53 02 00 00 75 8c 11 4d 32 43 72 79 70 74 6f 2e 68 74 n.putrequest.jS...u..M2Crypto.ht
4d640 74 70 73 6c 69 62 94 74 94 8c 11 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 94 28 58 59 tpslib.t...M2Crypto.m2urllib.(XY
4d660 10 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 ...from.__future__.import.absolu
4d680 74 65 5f 69 6d 70 6f 72 74 2c 20 70 72 69 6e 74 5f 66 75 6e 63 74 69 6f 6e 0a 0a 22 22 22 4d 32 te_import,.print_function.."""M2
4d6a0 43 72 79 70 74 6f 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 74 6f 20 50 79 74 68 6f 6e 27 73 20 75 Crypto.enhancement.to.Python's.u
4d6c0 72 6c 6c 69 62 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 0a 27 68 74 74 70 73 27 20 75 72 6c 27 73 rllib.for.handling.'https'.url's
4d6e0 2e 0a 0a 46 49 58 4d 45 3a 20 69 74 20 69 73 20 71 75 65 73 74 69 6f 6e 61 62 6c 65 20 77 68 65 ...FIXME:.it.is.questionable.whe
4d700 74 68 65 72 20 77 65 20 6e 65 65 64 20 74 68 69 73 20 6f 6c 64 2d 73 74 79 6c 65 20 6d 6f 64 75 ther.we.need.this.old-style.modu
4d720 6c 65 20 61 74 20 61 6c 6c 2e 20 75 72 6c 6c 69 62 0a 28 6e 6f 74 20 75 72 6c 6c 69 62 32 29 20 le.at.all..urllib.(not.urllib2).
4d740 69 73 20 69 6e 20 50 79 74 68 6f 6e 20 33 20 73 75 70 70 6f 72 74 20 6a 75 73 74 20 61 73 20 61 is.in.Python.3.support.just.as.a
4d760 20 6c 65 67 61 63 79 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 .legacy.API...Copyright.(c).1999
4d780 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 -2003.Ng.Pheng.Siong..All.rights
4d7a0 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 62 61 73 65 36 34 0a 69 6d 70 .reserved."""..import.base64.imp
4d7c0 6f 72 74 20 77 61 72 6e 69 6e 67 73 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f ort.warnings..from.M2Crypto.impo
4d7e0 72 74 20 53 53 4c 2c 20 68 74 74 70 73 6c 69 62 2c 20 73 69 78 2c 20 75 74 69 6c 0a 0a 66 72 6f rt.SSL,.httpslib,.six,.util..fro
4d800 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 75 72 6c 6c 69 62 5f 72 65 73 70 m.M2Crypto.six.moves.urllib_resp
4d820 6f 6e 73 65 20 69 6d 70 6f 72 74 20 61 64 64 69 6e 66 6f 75 72 6c 0a 69 66 20 75 74 69 6c 2e 70 onse.import.addinfourl.if.util.p
4d840 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 y27plus:.....from.typing.import.
4d860 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 23 20 73 69 78 2e AnyStr,.Optional..#.noqa..#.six.
4d880 6d 6f 76 65 73 20 64 6f 65 73 6e 27 74 20 73 75 70 70 6f 72 74 20 73 74 61 72 20 69 6d 70 6f 72 moves.doesn't.support.star.impor
4d8a0 74 73 0a 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 72 ts.if.six.PY3:.....from.urllib.r
4d8c0 65 71 75 65 73 74 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 20 66 6f 72 20 6f 74 68 65 equest.import.*..#.noqa.for.othe
4d8e0 72 20 6d 6f 64 75 6c 65 73 20 74 6f 20 69 6d 70 6f 72 74 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c r.modules.to.import.....from.url
4d900 6c 69 62 2e 70 61 72 73 65 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 20 66 6f 72 20 6f lib.parse.import.*..#.noqa.for.o
4d920 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 74 6f 20 69 6d 70 6f 72 74 0a 20 20 20 20 66 72 6f 6d 20 ther.modules.to.import.....from.
4d940 75 72 6c 6c 69 62 2e 65 72 72 6f 72 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 20 66 6f urllib.error.import.*..#.noqa.fo
4d960 72 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 74 6f 20 69 6d 70 6f 72 74 0a 65 6c 73 65 3a 0a r.other.modules.to.import.else:.
4d980 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 ....from.urllib.import.*..#.noqa
4d9a0 0a 0a 0a 64 65 66 20 6f 70 65 6e 5f 68 74 74 70 73 28 73 65 6c 66 2c 20 75 72 6c 2c 20 64 61 74 ...def.open_https(self,.url,.dat
4d9c0 61 3d 4e 6f 6e 65 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 23 a=None,.ssl_context=None):.....#
4d9e0 20 74 79 70 65 3a 20 28 55 52 4c 4f 70 65 6e 65 72 2c 20 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f .type:.(URLOpener,.AnyStr,.Optio
4da00 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 53 53 4c 2e 43 6f 6e 74 65 78 74 nal[bytes],.Optional[SSL.Context
4da20 5d 29 20 2d 3e 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4f 70 65 ]).->.addinfourl.....""".....Ope
4da40 6e 20 55 52 4c 20 6f 76 65 72 20 74 68 65 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a n.URL.over.the.SSL.connection...
4da60 20 20 20 20 3a 70 61 72 61 6d 20 75 72 6c 3a 20 55 52 4c 20 74 6f 20 62 65 20 6f 70 65 6e 65 64 ....:param.url:.URL.to.be.opened
4da80 0a 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 3a 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 50 .....:param.data:.data.for.the.P
4daa0 4f 53 54 20 72 65 71 75 65 73 74 0a 20 20 20 20 3a 70 61 72 61 6d 20 73 73 6c 5f 63 6f 6e 74 65 OST.request.....:param.ssl_conte
4dac0 78 74 3a 20 53 53 4c 2e 43 6f 6e 74 65 78 74 20 74 6f 20 62 65 20 75 73 65 64 0a 20 20 20 20 3a xt:.SSL.Context.to.be.used.....:
4dae0 72 65 74 75 72 6e 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 69 66 20 73 69 78 2e 50 59 33 3a 0a return:.....""".....if.six.PY3:.
4db00 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 2e 77 61 72 6e 28 27 55 52 4c 4f 70 65 6e 65 72 ........warnings.warn('URLOpener
4db20 20 68 61 73 20 62 65 65 6e 20 64 65 70 72 65 63 61 74 65 64 20 69 6e 20 50 79 33 6b 27 2c 20 44 .has.been.deprecated.in.Py3k',.D
4db40 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e 67 29 0a 0a 20 20 20 20 69 66 20 73 73 6c 5f 63 eprecationWarning)......if.ssl_c
4db60 6f 6e 74 65 78 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 20 61 6e 64 20 69 73 69 6e 73 74 61 6e 63 ontext.is.not.None.and.isinstanc
4db80 65 28 73 73 6c 5f 63 6f 6e 74 65 78 74 2c 20 53 53 4c 2e 43 6f 6e 74 65 78 74 29 3a 0a 20 20 20 e(ssl_context,.SSL.Context):....
4dba0 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 .....self.ctx.=.ssl_context.....
4dbc0 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 53 53 4c 2e 43 6f 6e else:.........self.ctx.=.SSL.Con
4dbe0 74 65 78 74 28 29 0a 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 4e 6f 6e 65 0a 20 20 text().....user_passwd.=.None...
4dc00 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 75 72 6c 2c 20 73 69 78 2e 73 74 72 69 6e 67 5f ..if.isinstance(url,.six.string_
4dc20 74 79 70 65 73 29 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 20 20 20 20 20 20 20 20 20 20 20 20 types):.........try:............
4dc40 20 20 20 23 20 70 79 74 68 6f 6e 20 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 68 74 74 70 ...#.python.2.............#.http
4dc60 3a 2f 2f 70 79 64 6f 63 2e 6f 72 67 2f 32 2e 35 2e 31 2f 75 72 6c 6c 69 62 2e 68 74 6d 6c 0a 20 ://pydoc.org/2.5.1/urllib.html..
4dc80 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c 69 ...........host,.selector.=.spli
4dca0 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 6f 73 74 3a 0a thost(url).............if.host:.
4dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 2c 20 68 6f 73 ................user_passwd,.hos
4dce0 74 20 3d 20 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.=.splituser(host).............
4dd00 20 20 20 20 68 6f 73 74 20 3d 20 75 6e 71 75 6f 74 65 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 ....host.=.unquote(host)........
4dd20 20 20 20 20 20 72 65 61 6c 68 6f 73 74 20 3d 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 65 78 63 .....realhost.=.host.........exc
4dd40 65 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 20 20 23 20 70 79 74 68 6f 6e 20 33 20 68 61 73 20 6e ept.NameError:..#.python.3.has.n
4dd60 6f 20 73 70 6c 69 74 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 68 74 74 70 73 3a o.splithost.............#.https:
4dd80 2f 2f 64 6f 63 73 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 33 2f 6c 69 62 72 61 72 79 2f 75 72 6c 6c //docs.python.org/3/library/urll
4dda0 69 62 2e 70 61 72 73 65 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73 65 64 ib.parse.html.............parsed
4ddc0 20 3d 20 75 72 6c 70 61 72 73 65 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 .=.urlparse(url).............hos
4dde0 74 20 3d 20 70 61 72 73 65 64 2e 68 6f 73 74 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.=.parsed.hostname.............
4de00 69 66 20 70 61 72 73 65 64 2e 70 6f 72 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.parsed.port:.................
4de20 68 6f 73 74 20 2b 3d 20 22 3a 7b 30 7d 22 2e 66 6f 72 6d 61 74 28 70 61 72 73 65 64 2e 70 6f 72 host.+=.":{0}".format(parsed.por
4de40 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 70 61 72 t).............user_passwd.=.par
4de60 73 65 64 2e 70 61 73 73 77 6f 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 61 72 73 sed.password.............if.pars
4de80 65 64 2e 70 61 73 73 77 6f 72 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 ed.password:.................use
4dea0 72 5f 70 61 73 73 77 64 20 2b 3d 20 22 3a 7b 30 7d 22 2e 66 6f 72 6d 61 74 28 70 61 72 73 65 64 r_passwd.+=.":{0}".format(parsed
4dec0 2e 70 61 73 73 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 6f 72 20 .password).............selector.
4dee0 3d 20 70 61 72 73 65 64 2e 70 61 74 68 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 =.parsed.path.....else:.........
4df00 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 75 72 6c 0a 20 20 20 20 20 20 20 20 75 72 6c host,.selector.=.url.........url
4df20 74 79 70 65 2c 20 72 65 73 74 20 3d 20 73 70 6c 69 74 74 79 70 65 28 73 65 6c 65 63 74 6f 72 29 type,.rest.=.splittype(selector)
4df40 0a 20 20 20 20 20 20 20 20 75 72 6c 20 3d 20 72 65 73 74 0a 20 20 20 20 20 20 20 20 75 73 65 72 .........url.=.rest.........user
4df60 5f 70 61 73 73 77 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 75 72 6c 74 79 70 _passwd.=.None.........if.urltyp
4df80 65 2e 6c 6f 77 65 72 28 29 20 21 3d 20 27 68 74 74 70 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 e.lower().!=.'http':............
4dfa0 20 72 65 61 6c 68 6f 73 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 .realhost.=.None.........else:..
4dfc0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 ...........try:...............#.
4dfe0 70 79 74 68 6f 6e 20 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 6c 68 6f 73 python.2.................realhos
4e000 74 2c 20 72 65 73 74 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 72 65 73 74 29 0a 20 20 20 20 20 20 t,.rest.=.splithost(rest).......
4e020 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 61 6c 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 ..........if.realhost:..........
4e040 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 2c 20 72 65 61 6c 68 6f 73 74 ...........user_passwd,.realhost
4e060 20 3d 20 73 70 6c 69 74 75 73 65 72 28 72 65 61 6c 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 .=.splituser(realhost)..........
4e080 20 20 20 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 5f 70 61 73 73 77 64 3a 0a 20 20 20 20 20 ...........if.user_passwd:......
4e0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 6f 72 20 3d 20 22 25 ...................selector.=."%
4e0c0 73 3a 2f 2f 25 73 25 73 22 20 25 20 28 75 72 6c 74 79 70 65 2c 20 72 65 61 6c 68 6f 73 74 2c 20 s://%s%s".%.(urltype,.realhost,.
4e0e0 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 rest).............except.NameErr
4e100 6f 72 3a 20 20 23 20 70 79 74 68 6f 6e 20 33 20 68 61 73 20 6e 6f 20 73 70 6c 69 74 68 6f 73 74 or:..#.python.3.has.no.splithost
4e120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73 65 64 20 3d 20 75 72 6c 70 61 72 .................parsed.=.urlpar
4e140 73 65 28 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 se(rest).................host.=.
4e160 70 61 72 73 65 64 2e 68 6f 73 74 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 parsed.hostname.................
4e180 69 66 20 70 61 72 73 65 64 2e 70 6f 72 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.parsed.port:.................
4e1a0 20 20 20 20 68 6f 73 74 20 2b 3d 20 22 3a 7b 30 7d 22 2e 66 6f 72 6d 61 74 28 70 61 72 73 65 64 ....host.+=.":{0}".format(parsed
4e1c0 2e 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 .port).................user_pass
4e1e0 77 64 20 3d 20 70 61 72 73 65 64 2e 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 wd.=.parsed.username............
4e200 20 20 20 20 20 69 66 20 70 61 72 73 65 64 2e 70 61 73 73 77 6f 72 64 3a 0a 20 20 20 20 20 20 20 .....if.parsed.password:........
4e220 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 2b 3d 20 22 3a 7b 30 .............user_passwd.+=.":{0
4e240 7d 22 2e 66 6f 72 6d 61 74 28 70 61 72 73 65 64 2e 70 61 73 73 77 6f 72 64 29 0a 20 20 20 20 20 }".format(parsed.password)......
4e260 20 20 20 23 20 70 72 69 6e 74 28 22 70 72 6f 78 79 20 76 69 61 20 68 74 74 70 3a 22 2c 20 68 6f ...#.print("proxy.via.http:",.ho
4e280 73 74 2c 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 0a 20 st,.selector).....if.not.host:..
4e2a0 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 72 72 6f 72 28 27 68 74 74 70 20 65 72 72 6f 72 .......raise.IOError('http.error
4e2c0 27 2c 20 27 6e 6f 20 68 6f 73 74 20 67 69 76 65 6e 27 29 0a 20 20 20 20 69 66 20 75 73 65 72 5f ',.'no.host.given').....if.user_
4e2e0 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 passwd:.........if.six.PY3:.....
4e300 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 62 61 73 65 36 34 2e 65 6e 63 6f 64 65 62 79 74 65 ........auth.=.base64.encodebyte
4e320 73 28 75 73 65 72 5f 70 61 73 73 77 64 29 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20 20 20 65 s(user_passwd).strip().........e
4e340 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 62 61 73 65 36 34 2e 65 lse:.............auth.=.base64.e
4e360 6e 63 6f 64 65 73 74 72 69 6e 67 28 75 73 65 72 5f 70 61 73 73 77 64 29 2e 73 74 72 69 70 28 29 ncodestring(user_passwd).strip()
4e380 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 4e 6f 6e 65 0a 20 .....else:.........auth.=.None..
4e3a0 20 20 20 23 20 53 74 61 72 74 20 68 65 72 65 21 0a 20 20 20 20 68 20 3d 20 68 74 74 70 73 6c 69 ...#.Start.here!.....h.=.httpsli
4e3c0 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 68 6f 73 74 3d 68 6f 73 74 2c 20 73 73 6c b.HTTPSConnection(host=host,.ssl
4e3e0 5f 63 6f 6e 74 65 78 74 3d 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 23 20 68 2e 73 65 74 5f 64 _context=self.ctx).....#.h.set_d
4e400 65 62 75 67 6c 65 76 65 6c 28 31 29 0a 20 20 20 20 23 20 53 74 6f 70 20 68 65 72 65 21 0a 20 20 ebuglevel(1).....#.Stop.here!...
4e420 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 68 ..if.data.is.not.None:.........h
4e440 2e 70 75 74 72 65 71 75 65 73 74 28 27 50 4f 53 54 27 2c 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 .putrequest('POST',.selector)...
4e460 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 27 43 6f 6e 74 65 6e 74 2d 74 79 70 65 27 ......h.putheader('Content-type'
4e480 2c 20 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 ,.'application/x-www-form-urlenc
4e4a0 6f 64 65 64 27 29 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 27 43 6f 6e 74 oded').........h.putheader('Cont
4e4c0 65 6e 74 2d 6c 65 6e 67 74 68 27 2c 20 27 25 64 27 20 25 20 6c 65 6e 28 64 61 74 61 29 29 0a 20 ent-length',.'%d'.%.len(data))..
4e4e0 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 72 65 71 75 65 73 74 28 27 47 ...else:.........h.putrequest('G
4e500 45 54 27 2c 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 69 66 20 61 75 74 68 3a 0a 20 20 20 20 ET',.selector).....if.auth:.....
4e520 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 27 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 27 2c ....h.putheader('Authorization',
4e540 20 27 42 61 73 69 63 20 25 73 27 20 25 20 61 75 74 68 29 0a 20 20 20 20 66 6f 72 20 61 72 67 73 .'Basic.%s'.%.auth).....for.args
4e560 20 69 6e 20 73 65 6c 66 2e 61 64 64 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 68 2e 70 .in.self.addheaders:.........h.p
4e580 75 74 68 65 61 64 65 72 28 2a 61 72 67 73 29 20 20 20 23 20 66 6f 72 20 70 79 74 68 6f 6e 33 20 utheader(*args)...#.for.python3.
4e5a0 2d 20 75 73 65 64 20 74 6f 20 75 73 65 20 61 70 70 6c 79 0a 20 20 20 20 68 2e 65 6e 64 68 65 61 -.used.to.use.apply.....h.endhea
4e5c0 64 65 72 73 28 29 0a 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a ders().....if.data.is.not.None:.
4e5e0 20 20 20 20 20 20 20 20 68 2e 73 65 6e 64 28 64 61 74 61 20 2b 20 27 5c 72 5c 6e 27 29 0a 20 20 ........h.send(data.+.'\r\n')...
4e600 20 20 23 20 48 65 72 65 20 61 67 61 69 6e 21 0a 20 20 20 20 72 65 73 70 20 3d 20 68 2e 67 65 74 ..#.Here.again!.....resp.=.h.get
4e620 72 65 73 70 6f 6e 73 65 28 29 0a 20 20 20 20 66 70 20 3d 20 72 65 73 70 2e 66 70 0a 20 20 20 20 response().....fp.=.resp.fp.....
4e640 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 66 70 2c 20 72 65 73 70 2e 6d 73 67 2c 20 return.addinfourl(fp,.resp.msg,.
4e660 22 68 74 74 70 73 3a 22 20 2b 20 75 72 6c 29 0a 20 20 20 20 23 20 53 74 6f 70 20 61 67 61 69 6e "https:".+.url).....#.Stop.again
4e680 2e 0a 0a 23 20 4d 69 6e 6f 72 20 62 72 61 69 6e 20 73 75 72 67 65 72 79 2e 0a 55 52 4c 6f 70 65 ...#.Minor.brain.surgery..URLope
4e6a0 6e 65 72 2e 6f 70 65 6e 5f 68 74 74 70 73 20 3d 20 6f 70 65 6e 5f 68 74 74 70 73 0a 94 7d 94 8c ner.open_https.=.open_https..}..
4e6c0 0a 6f 70 65 6e 5f 68 74 74 70 73 94 6a 74 1f 00 00 4b 1d 4b 75 87 94 73 7d 94 8c 0a 6f 70 65 6e .open_https.jt...K.Ku..s}...open
4e6e0 5f 68 74 74 70 73 94 6a 53 02 00 00 73 8c 11 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 _https.jS...s..M2Crypto.m2urllib
4e700 94 74 94 8c 12 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 94 28 58 f6 18 00 00 66 72 .t...M2Crypto.m2urllib2.(X....fr
4e720 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d om.__future__.import.absolute_im
4e740 70 6f 72 74 0a 0a 22 22 22 0a 4d 32 43 72 79 70 74 6f 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 74 port..""".M2Crypto.enhancement.t
4e760 6f 20 50 79 74 68 6f 6e 27 73 20 75 72 6c 6c 69 62 32 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 0a o.Python's.urllib2.for.handling.
4e780 27 68 74 74 70 73 27 20 75 72 6c 27 73 2e 0a 0a 43 6f 64 65 20 66 72 6f 6d 20 75 72 6c 6c 69 62 'https'.url's...Code.from.urllib
4e7a0 32 20 69 73 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 31 2c 20 32 30 30 32 2c 20 32 2.is.Copyright.(c).2001,.2002,.2
4e7c0 30 30 33 2c 20 32 30 30 34 2c 20 32 30 30 35 2c 20 32 30 30 36 2c 20 32 30 30 37 0a 50 79 74 68 003,.2004,.2005,.2006,.2007.Pyth
4e7e0 6f 6e 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 3b 20 41 6c 6c 20 52 69 67 68 on.Software.Foundation;.All.Righ
4e800 74 73 20 52 65 73 65 72 76 65 64 0a 0a 53 75 6d 6d 61 72 79 20 6f 66 20 63 68 61 6e 67 65 73 3a ts.Reserved..Summary.of.changes:
4e820 0a 20 2d 20 55 73 65 20 61 6e 20 48 54 54 50 53 50 72 6f 78 79 43 6f 6e 6e 65 63 74 69 6f 6e 20 ..-.Use.an.HTTPSProxyConnection.
4e840 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 69 73 20 67 6f 69 6e 67 20 74 68 72 6f 75 67 68 20 if.the.request.is.going.through.
4e860 61 20 70 72 6f 78 79 2e 0a 20 2d 20 41 64 64 20 74 68 65 20 53 53 4c 20 63 6f 6e 74 65 78 74 20 a.proxy...-.Add.the.SSL.context.
4e880 74 6f 20 74 68 65 20 68 74 74 70 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 70 65 72 to.the.https.connection.when.per
4e8a0 66 6f 72 6d 69 6e 67 20 68 74 74 70 73 5f 6f 70 65 6e 2e 0a 20 2d 20 41 64 64 20 74 68 65 20 4d forming.https_open...-.Add.the.M
4e8c0 32 43 72 79 70 74 6f 20 48 54 54 50 53 48 61 6e 64 6c 65 72 20 77 68 65 6e 20 62 75 69 6c 64 69 2Crypto.HTTPSHandler.when.buildi
4e8e0 6e 67 20 61 20 64 65 66 61 75 6c 74 20 6f 70 65 6e 65 72 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 ng.a.default.opener.."""..import
4e900 20 73 6f 63 6b 65 74 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 53 53 .socket..from.M2Crypto.import.SS
4e920 4c 2c 20 68 74 74 70 73 6c 69 62 2c 20 73 69 78 2c 20 75 74 69 6c 0a 0a 66 72 6f 6d 20 4d 32 43 L,.httpslib,.six,.util..from.M2C
4e940 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 75 72 6c 6c 69 62 5f 70 61 72 73 65 20 69 6d 70 rypto.six.moves.urllib_parse.imp
4e960 6f 72 74 20 75 72 6c 64 65 66 72 61 67 2c 20 75 72 6c 70 61 72 73 65 20 61 73 20 75 72 6c 5f 70 ort.urldefrag,.urlparse.as.url_p
4e980 61 72 73 65 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 75 72 6c arse.from.M2Crypto.six.moves.url
4e9a0 6c 69 62 5f 72 65 73 70 6f 6e 73 65 20 69 6d 70 6f 72 74 20 61 64 64 69 6e 66 6f 75 72 6c 0a 69 lib_response.import.addinfourl.i
4e9c0 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 f.util.py27plus:.....from.typing
4e9e0 20 69 6d 70 6f 72 74 20 4c 69 73 74 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a .import.List,.Optional..#.noqa..
4ea00 23 20 73 69 78 2e 6d 6f 76 65 73 20 64 6f 65 73 6e 27 74 20 73 75 70 70 6f 72 74 20 73 74 61 72 #.six.moves.doesn't.support.star
4ea20 20 69 6d 70 6f 72 74 73 0a 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 66 72 6f 6d 20 75 72 .imports.if.six.PY3:.....from.ur
4ea40 6c 6c 69 62 2e 72 65 71 75 65 73 74 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 20 6f 74 llib.request.import.*..#.noqa.ot
4ea60 68 65 72 20 6d 6f 64 75 6c 65 73 20 77 61 6e 74 20 74 6f 20 69 6d 70 6f 72 74 0a 20 20 20 20 66 her.modules.want.to.import.....f
4ea80 72 6f 6d 20 75 72 6c 6c 69 62 2e 65 72 72 6f 72 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 rom.urllib.error.import.*..#.noq
4eaa0 61 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 77 61 6e 74 20 74 6f 20 69 6d 70 6f 72 74 0a 65 a.other.modules.want.to.import.e
4eac0 6c 73 65 3a 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 32 20 69 6d 70 6f 72 74 20 2a 20 20 lse:.....from.urllib2.import.*..
4eae0 23 20 6e 6f 71 61 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6d 6f 74 68 65 72 5f 63 6c 61 73 73 20 3d #.noqa...try:.....mother_class.=
4eb00 20 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 74 0a 65 78 63 65 70 74 20 41 74 74 72 69 .socket._fileobject.except.Attri
4eb20 62 75 74 65 45 72 72 6f 72 3a 0a 20 20 20 20 6d 6f 74 68 65 72 5f 63 6c 61 73 73 20 3d 20 73 6f buteError:.....mother_class.=.so
4eb40 63 6b 65 74 2e 53 6f 63 6b 65 74 49 4f 0a 0a 0a 63 6c 61 73 73 20 5f 63 6c 6f 73 69 6e 67 5f 66 cket.SocketIO...class._closing_f
4eb60 69 6c 65 6f 62 6a 65 63 74 28 6d 6f 74 68 65 72 5f 63 6c 61 73 73 29 3a 20 20 23 20 6e 6f 71 61 ileobject(mother_class):..#.noqa
4eb80 0a 20 20 20 20 22 22 22 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 74 20 74 68 61 74 20 ....."""socket._fileobject.that.
4eba0 70 72 6f 70 61 67 61 74 65 73 20 73 65 6c 66 2e 63 6c 6f 73 65 28 29 20 74 6f 20 74 68 65 20 73 propagates.self.close().to.the.s
4ebc0 6f 63 6b 65 74 2e 0a 0a 20 20 20 20 50 79 74 68 6f 6e 20 32 2e 35 20 70 72 6f 76 69 64 65 73 20 ocket.......Python.2.5.provides.
4ebe0 74 68 69 73 20 61 73 20 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 74 28 73 6f 63 6b 2c this.as.socket._fileobject(sock,
4ec00 20 63 6c 6f 73 65 3d 54 72 75 65 29 2e 0a 20 20 20 20 22 22 22 0a 0a 23 20 66 6f 72 20 70 79 74 .close=True)......"""..#.for.pyt
4ec20 68 6f 6e 20 33 0a 74 72 79 3a 0a 20 20 20 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c hon.3.try:.....AbstractHTTPHandl
4ec40 65 72 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 0a 20 20 20 20 23 20 73 6f 6d 65 68 er.except.NameError:.....#.someh
4ec60 6f 77 20 74 68 69 73 20 77 6f 6e 27 74 20 67 65 74 20 69 6d 70 6f 72 74 65 64 20 62 79 20 74 68 ow.this.won't.get.imported.by.th
4ec80 65 20 69 6d 70 6f 72 74 20 2a 20 61 62 6f 76 65 0a 20 20 20 20 69 6d 70 6f 72 74 20 75 72 6c 6c e.import.*.above.....import.urll
4eca0 69 62 2e 72 65 71 75 65 73 74 0a 20 20 20 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c ib.request.....AbstractHTTPHandl
4ecc0 65 72 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 41 62 73 74 72 61 63 74 48 54 54 50 er.=.urllib.request.AbstractHTTP
4ece0 48 61 6e 64 6c 65 72 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 53 48 61 6e 64 6c 65 72 28 41 62 73 Handler...class.HTTPSHandler(Abs
4ed00 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 tractHTTPHandler):.....def.__ini
4ed20 74 5f 5f 28 73 65 6c 66 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 t__(self,.ssl_context=None):....
4ed40 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 53 53 4c 2e 43 6f 6e 74 65 78 74 29 20 2d 3e 20 4e 6f .....#.type:.(SSL.Context).->.No
4ed60 6e 65 0a 20 20 20 20 20 20 20 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 5f ne.........AbstractHTTPHandler._
4ed80 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 73 6c 5f 63 6f _init__(self)..........if.ssl_co
4eda0 6e 74 65 78 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 ntext.is.not.None:.............a
4edc0 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 73 73 6c 5f 63 6f 6e 74 65 78 74 2c 20 53 53 ssert.isinstance(ssl_context,.SS
4ede0 4c 2e 43 6f 6e 74 65 78 74 29 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 L.Context),.ssl_context.........
4ee00 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 ....self.ctx.=.ssl_context......
4ee20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 ...else:.............self.ctx.=.
4ee40 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 0a 20 20 20 20 23 20 43 6f 70 69 65 64 20 66 72 6f 6d SSL.Context()......#.Copied.from
4ee60 20 75 72 6c 6c 69 62 32 2c 20 73 6f 20 77 65 20 63 61 6e 20 73 65 74 20 74 68 65 20 73 73 6c 20 .urllib2,.so.we.can.set.the.ssl.
4ee80 63 6f 6e 74 65 78 74 2e 0a 20 20 20 20 64 65 66 20 68 74 74 70 73 5f 6f 70 65 6e 28 73 65 6c 66 context......def.https_open(self
4eea0 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 52 65 71 75 65 73 74 ,.req):.........#.type:.(Request
4eec0 29 20 2d 3e 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 ).->.addinfourl........."""Retur
4eee0 6e 20 61 6e 20 61 64 64 69 6e 66 6f 75 72 6c 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 65 20 72 n.an.addinfourl.object.for.the.r
4ef00 65 71 75 65 73 74 2c 20 75 73 69 6e 67 20 68 74 74 70 5f 63 6c 61 73 73 2e 0a 0a 20 20 20 20 20 equest,.using.http_class........
4ef20 20 20 20 68 74 74 70 5f 63 6c 61 73 73 20 6d 75 73 74 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 ...http_class.must.implement.the
4ef40 20 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 20 41 50 49 20 66 72 6f 6d 20 68 74 74 70 6c 69 62 .HTTPConnection.API.from.httplib
4ef60 2e 0a 20 20 20 20 20 20 20 20 54 68 65 20 61 64 64 69 6e 66 6f 75 72 6c 20 72 65 74 75 72 6e 20 ..........The.addinfourl.return.
4ef80 76 61 6c 75 65 20 69 73 20 61 20 66 69 6c 65 2d 6c 69 6b 65 20 6f 62 6a 65 63 74 2e 20 20 49 74 value.is.a.file-like.object...It
4efa0 20 61 6c 73 6f 0a 20 20 20 20 20 20 20 20 68 61 73 20 6d 65 74 68 6f 64 73 20 61 6e 64 20 61 74 .also.........has.methods.and.at
4efc0 74 72 69 62 75 74 65 73 20 69 6e 63 6c 75 64 69 6e 67 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 tributes.including:.............
4efe0 20 2d 20 69 6e 66 6f 28 29 3a 20 72 65 74 75 72 6e 20 61 20 6d 69 6d 65 74 6f 6f 6c 73 2e 4d 65 .-.info():.return.a.mimetools.Me
4f000 73 73 61 67 65 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 65 20 68 65 61 64 65 72 73 0a 0a 20 20 ssage.object.for.the.headers....
4f020 20 20 20 20 20 20 20 20 20 20 2d 20 67 65 74 75 72 6c 28 29 3a 20 72 65 74 75 72 6e 20 74 68 65 ..........-.geturl():.return.the
4f040 20 6f 72 69 67 69 6e 61 6c 20 72 65 71 75 65 73 74 20 55 52 4c 0a 0a 20 20 20 20 20 20 20 20 20 .original.request.URL...........
4f060 20 20 20 2d 20 63 6f 64 65 3a 20 48 54 54 50 20 73 74 61 74 75 73 20 63 6f 64 65 0a 20 20 20 20 ...-.code:.HTTP.status.code.....
4f080 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 ....""".........#.https://docs.p
4f0a0 79 74 68 6f 6e 2e 6f 72 67 2f 33 2e 33 2f 6c 69 62 72 61 72 79 2f 75 72 6c 6c 69 62 2e 72 65 71 ython.org/3.3/library/urllib.req
4f0c0 75 65 73 74 2e 68 74 6d 6c 23 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 52 65 71 75 65 73 74 uest.html#urllib.request.Request
4f0e0 2e 67 65 74 5f 68 6f 73 74 0a 20 20 20 20 20 20 20 20 74 72 79 3a 20 20 20 20 20 23 20 75 70 20 .get_host.........try:.....#.up.
4f100 74 6f 20 70 79 74 68 6f 6e 2d 33 2e 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d to.python-3.2.............host.=
4f120 20 72 65 71 2e 67 65 74 5f 68 6f 73 74 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 41 .req.get_host().........except.A
4f140 74 74 72 69 62 75 74 65 45 72 72 6f 72 3a 20 20 23 20 66 72 6f 6d 20 70 79 74 68 6f 6e 2d 33 2e ttributeError:..#.from.python-3.
4f160 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 2e 68 6f 73 74 0a 20 20 3.............host.=.req.host...
4f180 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ......if.not.host:.............r
4f1a0 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 6e 6f 20 68 6f 73 74 20 67 69 76 65 6e 27 29 0a 0a aise.URLError('no.host.given')..
4f1c0 20 20 20 20 20 20 20 20 23 20 4f 75 72 20 63 68 61 6e 67 65 3a 20 43 68 65 63 6b 20 74 6f 20 73 ........#.Our.change:.Check.to.s
4f1e0 65 65 20 69 66 20 77 65 27 72 65 20 75 73 69 6e 67 20 61 20 70 72 6f 78 79 2e 0a 20 20 20 20 20 ee.if.we're.using.a.proxy.......
4f200 20 20 20 23 20 54 68 65 6e 20 63 72 65 61 74 65 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 ...#.Then.create.an.appropriate.
4f220 73 73 6c 2d 61 77 61 72 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 66 75 ssl-aware.connection..........fu
4f240 6c 6c 5f 75 72 6c 20 3d 20 72 65 71 2e 67 65 74 5f 66 75 6c 6c 5f 75 72 6c 28 29 0a 20 20 20 20 ll_url.=.req.get_full_url().....
4f260 20 20 20 20 74 61 72 67 65 74 5f 68 6f 73 74 20 3d 20 75 72 6c 5f 70 61 72 73 65 28 66 75 6c 6c ....target_host.=.url_parse(full
4f280 5f 75 72 6c 29 5b 31 5d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 74 61 72 67 65 74 5f 68 6f 73 74 _url)[1]..........if.target_host
4f2a0 20 21 3d 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 5f 75 72 .!=.host:.............request_ur
4f2c0 69 20 3d 20 75 72 6c 64 65 66 72 61 67 28 66 75 6c 6c 5f 75 72 6c 29 5b 30 5d 0a 20 20 20 20 20 i.=.urldefrag(full_url)[0]......
4f2e0 20 20 20 20 20 20 20 68 20 3d 20 68 74 74 70 73 6c 69 62 2e 50 72 6f 78 79 48 54 54 50 53 43 6f .......h.=.httpslib.ProxyHTTPSCo
4f300 6e 6e 65 63 74 69 6f 6e 28 68 6f 73 74 3d 68 6f 73 74 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3d nnection(host=host,.ssl_context=
4f320 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 self.ctx).........else:.........
4f340 20 20 20 20 74 72 79 3a 20 20 20 20 20 23 20 75 70 20 74 6f 20 70 79 74 68 6f 6e 2d 33 2e 32 0a ....try:.....#.up.to.python-3.2.
4f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 5f 75 72 69 20 3d 20 72 65 ................request_uri.=.re
4f380 71 2e 67 65 74 5f 73 65 6c 65 63 74 6f 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 q.get_selector().............exc
4f3a0 65 70 74 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 3a 20 20 23 20 66 72 6f 6d 20 70 79 74 68 ept.AttributeError:..#.from.pyth
4f3c0 6f 6e 2d 33 2e 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 5f 75 on-3.3.................request_u
4f3e0 72 69 20 3d 20 72 65 71 2e 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 20 ri.=.req.selector.............h.
4f400 3d 20 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 68 6f 73 74 3d =.httpslib.HTTPSConnection(host=
4f420 68 6f 73 74 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3d 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 host,.ssl_context=self.ctx).....
4f440 20 20 20 20 23 20 45 6e 64 20 6f 75 72 20 63 68 61 6e 67 65 0a 20 20 20 20 20 20 20 20 68 2e 73 ....#.End.our.change.........h.s
4f460 65 74 5f 64 65 62 75 67 6c 65 76 65 6c 28 73 65 6c 66 2e 5f 64 65 62 75 67 6c 65 76 65 6c 29 0a et_debuglevel(self._debuglevel).
4f480 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 64 69 63 74 28 72 65 71 2e 68 65 61 64 .........headers.=.dict(req.head
4f4a0 65 72 73 29 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 2e 75 70 64 61 74 65 28 72 65 71 2e ers).........headers.update(req.
4f4c0 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 64 72 73 29 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 unredirected_hdrs).........#.We.
4f4e0 77 61 6e 74 20 74 6f 20 6d 61 6b 65 20 61 6e 20 48 54 54 50 2f 31 2e 31 20 72 65 71 75 65 73 74 want.to.make.an.HTTP/1.1.request
4f500 2c 20 62 75 74 20 74 68 65 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 20 20 20 20 23 20 63 ,.but.the.addinfourl.........#.c
4f520 6c 61 73 73 20 69 73 6e 27 74 20 70 72 65 70 61 72 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 lass.isn't.prepared.to.deal.with
4f540 20 61 20 70 65 72 73 69 73 74 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 .a.persistent.connection........
4f560 20 20 23 20 49 74 20 77 69 6c 6c 20 74 72 79 20 74 6f 20 72 65 61 64 20 61 6c 6c 20 72 65 6d 61 ..#.It.will.try.to.read.all.rema
4f580 69 6e 69 6e 67 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20 73 6f 63 6b 65 74 2c 0a 20 20 20 20 ining.data.from.the.socket,.....
4f5a0 20 20 20 20 23 20 77 68 69 63 68 20 77 69 6c 6c 20 62 6c 6f 63 6b 20 77 68 69 6c 65 20 74 68 65 ....#.which.will.block.while.the
4f5c0 20 73 65 72 76 65 72 20 77 61 69 74 73 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 .server.waits.for.the.next.reque
4f5e0 73 74 2e 0a 20 20 20 20 20 20 20 20 23 20 53 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20 63 st..........#.So.make.sure.the.c
4f600 6f 6e 6e 65 63 74 69 6f 6e 20 67 65 74 73 20 63 6c 6f 73 65 64 20 61 66 74 65 72 20 74 68 65 20 onnection.gets.closed.after.the.
4f620 28 6f 6e 6c 79 29 0a 20 20 20 20 20 20 20 20 23 20 72 65 71 75 65 73 74 2e 0a 20 20 20 20 20 20 (only).........#.request........
4f640 20 20 68 65 61 64 65 72 73 5b 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 5d 20 3d 20 22 63 6c 6f 73 65 ..headers["Connection"].=."close
4f660 22 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 72 65 71 ".........try:.............h.req
4f680 75 65 73 74 28 72 65 71 2e 67 65 74 5f 6d 65 74 68 6f 64 28 29 2c 20 72 65 71 75 65 73 74 5f 75 uest(req.get_method(),.request_u
4f6a0 72 69 2c 20 72 65 71 2e 64 61 74 61 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 ri,.req.data,.headers)..........
4f6c0 20 20 20 72 20 3d 20 68 2e 67 65 74 72 65 73 70 6f 6e 73 65 28 29 0a 20 20 20 20 20 20 20 20 65 ...r.=.h.getresponse().........e
4f6e0 78 63 65 70 74 20 73 6f 63 6b 65 74 2e 65 72 72 6f 72 20 61 73 20 65 72 72 3a 20 20 23 20 58 58 xcept.socket.error.as.err:..#.XX
4f700 58 20 77 68 61 74 20 65 72 72 6f 72 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 X.what.error?.............raise.
4f720 55 52 4c 45 72 72 6f 72 28 65 72 72 29 0a 0a 20 20 20 20 20 20 20 20 23 20 50 69 63 6b 20 61 70 URLError(err)..........#.Pick.ap
4f740 61 72 74 20 74 68 65 20 48 54 54 50 52 65 73 70 6f 6e 73 65 20 6f 62 6a 65 63 74 20 74 6f 20 67 art.the.HTTPResponse.object.to.g
4f760 65 74 20 74 68 65 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 20 20 20 20 23 20 6f 62 6a 65 et.the.addinfourl.........#.obje
4f780 63 74 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 70 72 6f 70 65 72 6c 79 2e 0a 0a 20 20 20 20 20 20 ct.initialized.properly.........
4f7a0 20 20 23 20 57 72 61 70 20 74 68 65 20 48 54 54 50 52 65 73 70 6f 6e 73 65 20 6f 62 6a 65 63 74 ..#.Wrap.the.HTTPResponse.object
4f7c0 20 69 6e 20 73 6f 63 6b 65 74 27 73 20 66 69 6c 65 20 6f 62 6a 65 63 74 20 61 64 61 70 74 65 72 .in.socket's.file.object.adapter
4f7e0 0a 20 20 20 20 20 20 20 20 23 20 66 6f 72 20 57 69 6e 64 6f 77 73 2e 20 20 54 68 61 74 20 61 64 .........#.for.Windows...That.ad
4f800 61 70 74 65 72 20 63 61 6c 6c 73 20 72 65 63 76 28 29 2c 20 73 6f 20 64 65 6c 65 67 61 74 65 20 apter.calls.recv(),.so.delegate.
4f820 72 65 63 76 28 29 0a 20 20 20 20 20 20 20 20 23 20 74 6f 20 72 65 61 64 28 29 2e 20 20 54 68 69 recv().........#.to.read()...Thi
4f840 73 20 77 65 69 72 64 20 77 72 61 70 70 69 6e 67 20 61 6c 6c 6f 77 73 20 74 68 65 20 72 65 74 75 s.weird.wrapping.allows.the.retu
4f860 72 6e 65 64 20 6f 62 6a 65 63 74 20 74 6f 0a 20 20 20 20 20 20 20 20 23 20 68 61 76 65 20 72 65 rned.object.to.........#.have.re
4f880 61 64 6c 69 6e 65 28 29 20 61 6e 64 20 72 65 61 64 6c 69 6e 65 73 28 29 20 6d 65 74 68 6f 64 73 adline().and.readlines().methods
4f8a0 2e 0a 20 20 20 20 20 20 20 20 72 2e 72 65 63 76 20 3d 20 72 2e 72 65 61 64 0a 20 20 20 20 20 20 ..........r.recv.=.r.read.......
4f8c0 20 20 69 66 20 73 69 78 2e 50 59 32 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 20 3d 20 73 ..if.six.PY2:.............fp.=.s
4f8e0 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 74 28 72 2c 20 63 6c 6f 73 65 3d 54 72 75 65 29 ocket._fileobject(r,.close=True)
4f900 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 2e 5f 64 65 .........else:.............r._de
4f920 63 72 65 66 5f 73 6f 63 6b 65 74 69 6f 73 20 3d 20 6c 61 6d 62 64 61 3a 20 4e 6f 6e 65 0a 20 20 cref_socketios.=.lambda:.None...
4f940 20 20 20 20 20 20 20 20 20 20 72 2e 73 73 6c 20 3d 20 68 2e 73 6f 63 6b 2e 73 73 6c 0a 20 20 20 ..........r.ssl.=.h.sock.ssl....
4f960 20 20 20 20 20 20 20 20 20 72 2e 5f 74 69 6d 65 6f 75 74 20 3d 20 2d 31 2e 30 0a 20 20 20 20 20 .........r._timeout.=.-1.0......
4f980 20 20 20 20 20 20 20 72 2e 72 65 63 76 5f 69 6e 74 6f 20 3d 20 72 2e 72 65 61 64 69 6e 74 6f 0a .......r.recv_into.=.r.readinto.
4f9a0 20 20 20 20 20 20 20 20 20 20 20 20 66 70 20 3d 20 73 6f 63 6b 65 74 2e 53 6f 63 6b 65 74 49 4f ............fp.=.socket.SocketIO
4f9c0 28 72 2c 20 27 72 62 27 29 0a 0a 20 20 20 20 20 20 20 20 72 65 73 70 20 3d 20 61 64 64 69 6e 66 (r,.'rb')..........resp.=.addinf
4f9e0 6f 75 72 6c 28 66 70 2c 20 72 2e 6d 73 67 2c 20 72 65 71 2e 67 65 74 5f 66 75 6c 6c 5f 75 72 6c ourl(fp,.r.msg,.req.get_full_url
4fa00 28 29 29 0a 20 20 20 20 20 20 20 20 72 65 73 70 2e 63 6f 64 65 20 3d 20 72 2e 73 74 61 74 75 73 ()).........resp.code.=.r.status
4fa20 0a 20 20 20 20 20 20 20 20 72 65 73 70 2e 6d 73 67 20 3d 20 72 2e 72 65 61 73 6f 6e 0a 20 20 20 .........resp.msg.=.r.reason....
4fa40 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 0a 0a 20 20 20 20 68 74 74 70 73 5f 72 65 71 75 .....return.resp......https_requ
4fa60 65 73 74 20 3d 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 64 6f 5f 72 65 71 est.=.AbstractHTTPHandler.do_req
4fa80 75 65 73 74 5f 0a 0a 0a 23 20 43 6f 70 69 65 64 20 66 72 6f 6d 20 75 72 6c 6c 69 62 32 20 77 69 uest_...#.Copied.from.urllib2.wi
4faa0 74 68 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 66 6f 72 20 73 73 6c 0a 64 65 66 20 62 75 69 th.modifications.for.ssl.def.bui
4fac0 6c 64 5f 6f 70 65 6e 65 72 28 73 73 6c 5f 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 2c 20 2a 68 61 6e ld_opener(ssl_context=None,.*han
4fae0 64 6c 65 72 73 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 53 53 dlers):.....#.type:.(Optional[SS
4fb00 4c 2e 43 6f 6e 74 65 78 74 5d 2c 20 2a 6f 62 6a 65 63 74 29 20 2d 3e 20 4f 70 65 6e 65 72 44 69 L.Context],.*object).->.OpenerDi
4fb20 72 65 63 74 6f 72 0a 20 20 20 20 22 22 22 43 72 65 61 74 65 20 61 6e 20 6f 70 65 6e 65 72 20 6f rector....."""Create.an.opener.o
4fb40 62 6a 65 63 74 20 66 72 6f 6d 20 61 20 6c 69 73 74 20 6f 66 20 68 61 6e 64 6c 65 72 73 2e 0a 0a bject.from.a.list.of.handlers...
4fb60 20 20 20 20 54 68 65 20 6f 70 65 6e 65 72 20 77 69 6c 6c 20 75 73 65 20 73 65 76 65 72 61 6c 20 ....The.opener.will.use.several.
4fb80 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 73 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 75 70 70 default.handlers,.including.supp
4fba0 6f 72 74 0a 20 20 20 20 66 6f 72 20 48 54 54 50 20 61 6e 64 20 46 54 50 2e 0a 0a 20 20 20 20 49 ort.....for.HTTP.and.FTP.......I
4fbc0 66 20 61 6e 79 20 6f 66 20 74 68 65 20 68 61 6e 64 6c 65 72 73 20 70 61 73 73 65 64 20 61 73 20 f.any.of.the.handlers.passed.as.
4fbe0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 73 75 62 63 6c 61 73 73 65 73 20 6f 66 20 74 68 65 0a arguments.are.subclasses.of.the.
4fc00 20 20 20 20 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 73 2c 20 74 68 65 20 64 65 66 61 75 6c ....default.handlers,.the.defaul
4fc20 74 20 68 61 6e 64 6c 65 72 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 75 73 65 64 2e 0a 20 20 20 t.handlers.will.not.be.used.....
4fc40 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 69 73 63 6c 61 73 73 28 6f 62 6a 29 3a 0a 20 20 20 20 ."""......def.isclass(obj):.....
4fc60 20 20 20 20 72 65 74 75 72 6e 20 69 73 69 6e 73 74 61 6e 63 65 28 6f 62 6a 2c 20 74 79 70 65 29 ....return.isinstance(obj,.type)
4fc80 20 6f 72 20 68 61 73 61 74 74 72 28 6f 62 6a 2c 20 22 5f 5f 62 61 73 65 73 5f 5f 22 29 0a 0a 20 .or.hasattr(obj,."__bases__")...
4fca0 20 20 20 6f 70 65 6e 65 72 20 3d 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 28 29 0a 20 20 20 ...opener.=.OpenerDirector()....
4fcc0 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 20 3d 20 5b 50 72 6f 78 79 48 61 6e 64 6c 65 72 .default_classes.=.[ProxyHandler
4fce0 2c 20 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 48 54 54 50 48 61 6e 64 6c 65 72 2c 0a 20 ,.UnknownHandler,.HTTPHandler,..
4fd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 54 54 50 44 65 66 61 75 6c ......................HTTPDefaul
4fd20 74 45 72 72 6f 72 48 61 6e 64 6c 65 72 2c 20 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c tErrorHandler,.HTTPRedirectHandl
4fd40 65 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 54 50 48 61 er,........................FTPHa
4fd60 6e 64 6c 65 72 2c 20 46 69 6c 65 48 61 6e 64 6c 65 72 2c 20 48 54 54 50 45 72 72 6f 72 50 72 6f ndler,.FileHandler,.HTTPErrorPro
4fd80 63 65 73 73 6f 72 5d 0a 20 20 20 20 73 6b 69 70 20 3d 20 5b 5d 0a 20 20 20 20 66 6f 72 20 6b 6c cessor].....skip.=.[].....for.kl
4fda0 61 73 73 20 69 6e 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 3a 0a 20 20 20 20 20 20 20 20 ass.in.default_classes:.........
4fdc0 66 6f 72 20 63 68 65 63 6b 20 69 6e 20 68 61 6e 64 6c 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 for.check.in.handlers:..........
4fde0 20 20 20 69 66 20 69 73 63 6c 61 73 73 28 63 68 65 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 20 20 ...if.isclass(check):...........
4fe00 20 20 20 20 20 20 69 66 20 69 73 73 75 62 63 6c 61 73 73 28 63 68 65 63 6b 2c 20 6b 6c 61 73 73 ......if.issubclass(check,.klass
4fe20 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6b 69 70 2e 61 70 70 65 ):.....................skip.appe
4fe40 6e 64 28 6b 6c 61 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 69 73 69 6e 73 nd(klass).............elif.isins
4fe60 74 61 6e 63 65 28 63 68 65 63 6b 2c 20 6b 6c 61 73 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 tance(check,.klass):............
4fe80 20 20 20 20 20 73 6b 69 70 2e 61 70 70 65 6e 64 28 6b 6c 61 73 73 29 0a 20 20 20 20 66 6f 72 20 .....skip.append(klass).....for.
4fea0 6b 6c 61 73 73 20 69 6e 20 73 6b 69 70 3a 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 5f 63 klass.in.skip:.........default_c
4fec0 6c 61 73 73 65 73 2e 72 65 6d 6f 76 65 28 6b 6c 61 73 73 29 0a 0a 20 20 20 20 66 6f 72 20 6b 6c lasses.remove(klass)......for.kl
4fee0 61 73 73 20 69 6e 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 3a 0a 20 20 20 20 20 20 20 20 ass.in.default_classes:.........
4ff00 6f 70 65 6e 65 72 2e 61 64 64 5f 68 61 6e 64 6c 65 72 28 6b 6c 61 73 73 28 29 29 0a 0a 20 20 20 opener.add_handler(klass()).....
4ff20 20 23 20 41 64 64 20 74 68 65 20 48 54 54 50 53 20 68 61 6e 64 6c 65 72 20 77 69 74 68 20 73 73 .#.Add.the.HTTPS.handler.with.ss
4ff40 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 69 66 20 48 54 54 50 53 48 61 6e 64 6c 65 72 20 6e 6f l_context.....if.HTTPSHandler.no
4ff60 74 20 69 6e 20 73 6b 69 70 3a 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 2e 61 64 64 5f 68 61 t.in.skip:.........opener.add_ha
4ff80 6e 64 6c 65 72 28 48 54 54 50 53 48 61 6e 64 6c 65 72 28 73 73 6c 5f 63 6f 6e 74 65 78 74 29 29 ndler(HTTPSHandler(ssl_context))
4ffa0 0a 0a 20 20 20 20 66 6f 72 20 68 20 69 6e 20 68 61 6e 64 6c 65 72 73 3a 0a 20 20 20 20 20 20 20 ......for.h.in.handlers:........
4ffc0 20 69 66 20 69 73 63 6c 61 73 73 28 68 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 20 3d 20 .if.isclass(h):.............h.=.
4ffe0 68 28 29 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 2e 61 64 64 5f 68 61 6e 64 6c 65 72 28 68 h().........opener.add_handler(h
50000 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 70 65 6e 65 72 0a 94 7d 94 28 8c 13 5f 63 6c 6f 73 69 ).....return.opener..}.(.._closi
50020 6e 67 5f 66 69 6c 65 6f 62 6a 65 63 74 94 6a 7d 1f 00 00 4b 27 4b 2b 87 94 8c 15 48 54 54 50 53 ng_fileobject.j}...K'K+....HTTPS
50040 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 37 4b 3f 87 94 8c 17 48 54 Handler.__init__.jt...K7K?....HT
50060 54 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 6f 70 65 6e 94 6a 74 1f 00 00 4b 42 4b 8c 87 TPSHandler.https_open.jt...KBK..
50080 94 8c 0c 48 54 54 50 53 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4b 36 4b 8e 87 94 8c 0c 62 75 69 ...HTTPSHandler.j}...K6K.....bui
500a0 6c 64 5f 6f 70 65 6e 65 72 94 6a 74 1f 00 00 4b 92 4b ba 87 94 75 7d 94 28 8c 0c 48 54 54 50 53 ld_opener.jt...K.K...u}.(..HTTPS
500c0 48 61 6e 64 6c 65 72 94 6a 53 02 00 00 8c 17 48 54 54 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 Handler.jS.....HTTPSHandler.http
500e0 73 5f 6f 70 65 6e 94 6a 53 02 00 00 8c 0c 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 6a 53 02 00 00 s_open.jS.....build_opener.jS...
50100 75 8c 12 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 94 74 94 8c 0e 75 72 6c 6c 69 62 u..M2Crypto.m2urllib2.t...urllib
50120 2e 72 65 71 75 65 73 74 94 28 58 50 86 01 00 22 22 22 41 6e 20 65 78 74 65 6e 73 69 62 6c 65 20 .request.(XP..."""An.extensible.
50140 6c 69 62 72 61 72 79 20 66 6f 72 20 6f 70 65 6e 69 6e 67 20 55 52 4c 73 20 75 73 69 6e 67 20 61 library.for.opening.URLs.using.a
50160 20 76 61 72 69 65 74 79 20 6f 66 20 70 72 6f 74 6f 63 6f 6c 73 0a 0a 54 68 65 20 73 69 6d 70 6c .variety.of.protocols..The.simpl
50180 65 73 74 20 77 61 79 20 74 6f 20 75 73 65 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 69 73 20 74 6f est.way.to.use.this.module.is.to
501a0 20 63 61 6c 6c 20 74 68 65 20 75 72 6c 6f 70 65 6e 20 66 75 6e 63 74 69 6f 6e 2c 0a 77 68 69 63 .call.the.urlopen.function,.whic
501c0 68 20 61 63 63 65 70 74 73 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 h.accepts.a.string.containing.a.
501e0 55 52 4c 20 6f 72 20 61 20 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 20 28 64 65 73 63 72 69 62 URL.or.a.Request.object.(describ
50200 65 64 0a 62 65 6c 6f 77 29 2e 20 20 49 74 20 6f 70 65 6e 73 20 74 68 65 20 55 52 4c 20 61 6e 64 ed.below)...It.opens.the.URL.and
50220 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74 73 20 61 73 20 66 69 6c 65 2d 6c 69 6b .returns.the.results.as.file-lik
50240 65 0a 6f 62 6a 65 63 74 3b 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 6f 62 6a 65 63 74 20 68 61 e.object;.the.returned.object.ha
50260 73 20 73 6f 6d 65 20 65 78 74 72 61 20 6d 65 74 68 6f 64 73 20 64 65 73 63 72 69 62 65 64 20 62 s.some.extra.methods.described.b
50280 65 6c 6f 77 2e 0a 0a 54 68 65 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 20 6d 61 6e 61 67 65 elow...The.OpenerDirector.manage
502a0 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 48 61 6e 64 6c 65 72 20 6f 62 6a 65 63 74 s.a.collection.of.Handler.object
502c0 73 20 74 68 61 74 20 64 6f 0a 61 6c 6c 20 74 68 65 20 61 63 74 75 61 6c 20 77 6f 72 6b 2e 20 20 s.that.do.all.the.actual.work...
502e0 45 61 63 68 20 48 61 6e 64 6c 65 72 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 20 70 61 72 74 69 63 Each.Handler.implements.a.partic
50300 75 6c 61 72 20 70 72 6f 74 6f 63 6f 6c 20 6f 72 0a 6f 70 74 69 6f 6e 2e 20 20 54 68 65 20 4f 70 ular.protocol.or.option...The.Op
50320 65 6e 65 72 44 69 72 65 63 74 6f 72 20 69 73 20 61 20 63 6f 6d 70 6f 73 69 74 65 20 6f 62 6a 65 enerDirector.is.a.composite.obje
50340 63 74 20 74 68 61 74 20 69 6e 76 6f 6b 65 73 20 74 68 65 0a 48 61 6e 64 6c 65 72 73 20 6e 65 65 ct.that.invokes.the.Handlers.nee
50360 64 65 64 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 72 65 71 75 65 73 74 65 64 20 55 52 4c 2e 20 20 ded.to.open.the.requested.URL...
50380 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 0a 48 54 54 50 48 61 6e 64 6c 65 72 20 70 65 72 For.example,.the.HTTPHandler.per
503a0 66 6f 72 6d 73 20 48 54 54 50 20 47 45 54 20 61 6e 64 20 50 4f 53 54 20 72 65 71 75 65 73 74 73 forms.HTTP.GET.and.POST.requests
503c0 20 61 6e 64 20 64 65 61 6c 73 20 77 69 74 68 0a 6e 6f 6e 2d 65 72 72 6f 72 20 72 65 74 75 72 6e .and.deals.with.non-error.return
503e0 73 2e 20 20 54 68 65 20 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 20 61 75 74 6f s...The.HTTPRedirectHandler.auto
50400 6d 61 74 69 63 61 6c 6c 79 20 64 65 61 6c 73 20 77 69 74 68 0a 48 54 54 50 20 33 30 31 2c 20 33 matically.deals.with.HTTP.301,.3
50420 30 32 2c 20 33 30 33 20 61 6e 64 20 33 30 37 20 72 65 64 69 72 65 63 74 20 65 72 72 6f 72 73 2c 02,.303.and.307.redirect.errors,
50440 20 61 6e 64 20 74 68 65 20 48 54 54 50 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 0a 64 .and.the.HTTPDigestAuthHandler.d
50460 65 61 6c 73 20 77 69 74 68 20 64 69 67 65 73 74 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2e eals.with.digest.authentication.
50480 0a 0a 75 72 6c 6f 70 65 6e 28 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 20 2d 2d 20 42 61 73 ..urlopen(url,.data=None).--.Bas
504a0 69 63 20 75 73 61 67 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 6f 72 69 67 69 6e 61 6c ic.usage.is.the.same.as.original
504c0 0a 75 72 6c 6c 69 62 2e 20 20 70 61 73 73 20 74 68 65 20 75 72 6c 20 61 6e 64 20 6f 70 74 69 6f .urllib...pass.the.url.and.optio
504e0 6e 61 6c 6c 79 20 64 61 74 61 20 74 6f 20 70 6f 73 74 20 74 6f 20 61 6e 20 48 54 54 50 20 55 52 nally.data.to.post.to.an.HTTP.UR
50500 4c 2c 20 61 6e 64 0a 67 65 74 20 61 20 66 69 6c 65 2d 6c 69 6b 65 20 6f 62 6a 65 63 74 20 62 61 L,.and.get.a.file-like.object.ba
50520 63 6b 2e 20 20 4f 6e 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 79 6f 75 20 ck...One.difference.is.that.you.
50540 63 61 6e 20 61 6c 73 6f 20 70 61 73 73 0a 61 20 52 65 71 75 65 73 74 20 69 6e 73 74 61 6e 63 65 can.also.pass.a.Request.instance
50560 20 69 6e 73 74 65 61 64 20 6f 66 20 55 52 4c 2e 20 20 52 61 69 73 65 73 20 61 20 55 52 4c 45 72 .instead.of.URL...Raises.a.URLEr
50580 72 6f 72 20 28 73 75 62 63 6c 61 73 73 20 6f 66 0a 4f 53 45 72 72 6f 72 29 3b 20 66 6f 72 20 48 ror.(subclass.of.OSError);.for.H
505a0 54 54 50 20 65 72 72 6f 72 73 2c 20 72 61 69 73 65 73 20 61 6e 20 48 54 54 50 45 72 72 6f 72 2c TTP.errors,.raises.an.HTTPError,
505c0 20 77 68 69 63 68 20 63 61 6e 20 61 6c 73 6f 20 62 65 0a 74 72 65 61 74 65 64 20 61 73 20 61 20 .which.can.also.be.treated.as.a.
505e0 76 61 6c 69 64 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 62 75 69 6c 64 5f 6f 70 65 6e 65 72 20 2d 2d valid.response...build_opener.--
50600 20 46 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 4f 70 65 .Function.that.creates.a.new.Ope
50620 6e 65 72 44 69 72 65 63 74 6f 72 20 69 6e 73 74 61 6e 63 65 2e 0a 57 69 6c 6c 20 69 6e 73 74 61 nerDirector.instance..Will.insta
50640 6c 6c 20 74 68 65 20 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 73 2e 20 20 41 63 63 65 70 74 ll.the.default.handlers...Accept
50660 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 48 61 6e 64 6c 65 72 73 20 61 73 0a 61 72 67 75 6d 65 s.one.or.more.Handlers.as.argume
50680 6e 74 73 2c 20 65 69 74 68 65 72 20 69 6e 73 74 61 6e 63 65 73 20 6f 72 20 48 61 6e 64 6c 65 72 nts,.either.instances.or.Handler
506a0 20 63 6c 61 73 73 65 73 20 74 68 61 74 20 69 74 20 77 69 6c 6c 0a 69 6e 73 74 61 6e 74 69 61 74 .classes.that.it.will.instantiat
506c0 65 2e 20 20 49 66 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 e...If.one.of.the.argument.is.a.
506e0 73 75 62 63 6c 61 73 73 20 6f 66 20 74 68 65 20 64 65 66 61 75 6c 74 0a 68 61 6e 64 6c 65 72 2c subclass.of.the.default.handler,
50700 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 69 6e 73 74 61 6c 6c 65 64 20 .the.argument.will.be.installed.
50720 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0a 0a 69 6e 73 74 61 6c 6c instead.of.the.default...install
50740 5f 6f 70 65 6e 65 72 20 2d 2d 20 49 6e 73 74 61 6c 6c 73 20 61 20 6e 65 77 20 6f 70 65 6e 65 72 _opener.--.Installs.a.new.opener
50760 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f 70 65 6e 65 72 2e 0a 0a 6f 62 6a 65 63 74 73 .as.the.default.opener...objects
50780 20 6f 66 20 69 6e 74 65 72 65 73 74 3a 0a 0a 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 20 2d 2d .of.interest:..OpenerDirector.--
507a0 20 53 65 74 73 20 75 70 20 74 68 65 20 55 73 65 72 20 41 67 65 6e 74 20 61 73 20 74 68 65 20 50 .Sets.up.the.User.Agent.as.the.P
507c0 79 74 68 6f 6e 2d 75 72 6c 6c 69 62 20 63 6c 69 65 6e 74 20 61 6e 64 20 6d 61 6e 61 67 65 73 0a ython-urllib.client.and.manages.
507e0 74 68 65 20 48 61 6e 64 6c 65 72 20 63 6c 61 73 73 65 73 2c 20 77 68 69 6c 65 20 64 65 61 6c 69 the.Handler.classes,.while.deali
50800 6e 67 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 2e 0a ng.with.requests.and.responses..
50820 0a 52 65 71 75 65 73 74 20 2d 2d 20 41 6e 20 6f 62 6a 65 63 74 20 74 68 61 74 20 65 6e 63 61 70 .Request.--.An.object.that.encap
50840 73 75 6c 61 74 65 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 61 20 72 65 71 75 65 73 74 2e 20 sulates.the.state.of.a.request..
50860 20 54 68 65 0a 73 74 61 74 65 20 63 61 6e 20 62 65 20 61 73 20 73 69 6d 70 6c 65 20 61 73 20 74 .The.state.can.be.as.simple.as.t
50880 68 65 20 55 52 4c 2e 20 20 49 74 20 63 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 65 78 74 he.URL...It.can.also.include.ext
508a0 72 61 20 48 54 54 50 0a 68 65 61 64 65 72 73 2c 20 65 2e 67 2e 20 61 20 55 73 65 72 2d 41 67 65 ra.HTTP.headers,.e.g..a.User-Age
508c0 6e 74 2e 0a 0a 42 61 73 65 48 61 6e 64 6c 65 72 20 2d 2d 0a 0a 69 6e 74 65 72 6e 61 6c 73 3a 0a nt...BaseHandler.--..internals:.
508e0 42 61 73 65 48 61 6e 64 6c 65 72 20 61 6e 64 20 70 61 72 65 6e 74 0a 5f 63 61 6c 6c 5f 63 68 61 BaseHandler.and.parent._call_cha
50900 69 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 0a 0a 45 78 61 6d 70 6c 65 20 75 73 61 67 65 3a 0a 0a in.conventions..Example.usage:..
50920 69 6d 70 6f 72 74 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 0a 0a 23 20 73 65 74 20 75 70 20 import.urllib.request..#.set.up.
50940 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 69 6e 66 6f 0a 61 75 74 68 69 6e 66 6f 20 3d 20 75 authentication.info.authinfo.=.u
50960 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 48 54 54 50 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c rllib.request.HTTPBasicAuthHandl
50980 65 72 28 29 0a 61 75 74 68 69 6e 66 6f 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 28 72 65 61 6c 6d er().authinfo.add_password(realm
509a0 3d 27 50 44 51 20 41 70 70 6c 69 63 61 74 69 6f 6e 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ='PDQ.Application',.............
509c0 20 20 20 20 20 20 20 20 20 20 75 72 69 3d 27 68 74 74 70 73 3a 2f 2f 6d 61 68 6c 65 72 3a 38 30 ..........uri='https://mahler:80
509e0 39 32 2f 73 69 74 65 2d 75 70 64 61 74 65 73 2e 70 79 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 92/site-updates.py',............
50a00 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 3d 27 6b 6c 65 6d 27 2c 0a 20 20 20 20 20 20 20 20 ...........user='klem',.........
50a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 77 64 3d 27 67 65 68 65 69 6d 24 70 61 72 ..............passwd='geheim$par
50a40 6f 6c 65 27 29 0a 0a 70 72 6f 78 79 5f 73 75 70 70 6f 72 74 20 3d 20 75 72 6c 6c 69 62 2e 72 65 ole')..proxy_support.=.urllib.re
50a60 71 75 65 73 74 2e 50 72 6f 78 79 48 61 6e 64 6c 65 72 28 7b 22 68 74 74 70 22 20 3a 20 22 68 74 quest.ProxyHandler({"http".:."ht
50a80 74 70 3a 2f 2f 61 68 61 64 2d 68 61 61 6d 3a 33 31 32 38 22 7d 29 0a 0a 23 20 62 75 69 6c 64 20 tp://ahad-haam:3128"})..#.build.
50aa0 61 20 6e 65 77 20 6f 70 65 6e 65 72 20 74 68 61 74 20 61 64 64 73 20 61 75 74 68 65 6e 74 69 63 a.new.opener.that.adds.authentic
50ac0 61 74 69 6f 6e 20 61 6e 64 20 63 61 63 68 69 6e 67 20 46 54 50 20 68 61 6e 64 6c 65 72 73 0a 6f ation.and.caching.FTP.handlers.o
50ae0 70 65 6e 65 72 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 62 75 69 6c 64 5f 6f 70 65 pener.=.urllib.request.build_ope
50b00 6e 65 72 28 70 72 6f 78 79 5f 73 75 70 70 6f 72 74 2c 20 61 75 74 68 69 6e 66 6f 2c 0a 20 20 20 ner(proxy_support,.authinfo,....
50b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
50b40 20 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 ..urllib.request.CacheFTPHandler
50b60 29 0a 0a 23 20 69 6e 73 74 61 6c 6c 20 69 74 0a 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 69 )..#.install.it.urllib.request.i
50b80 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 28 6f 70 65 6e 65 72 29 0a 0a 66 20 3d 20 75 72 6c 6c 69 nstall_opener(opener)..f.=.urlli
50ba0 62 2e 72 65 71 75 65 73 74 2e 75 72 6c 6f 70 65 6e 28 27 68 74 74 70 3a 2f 2f 77 77 77 2e 70 79 b.request.urlopen('http://www.py
50bc0 74 68 6f 6e 2e 6f 72 67 2f 27 29 0a 22 22 22 0a 0a 23 20 58 58 58 20 69 73 73 75 65 73 3a 0a 23 thon.org/')."""..#.XXX.issues:.#
50be0 20 49 66 20 61 6e 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 65 72 72 6f 72 20 68 61 6e 64 .If.an.authentication.error.hand
50c00 6c 65 72 20 74 68 61 74 20 74 72 69 65 73 20 74 6f 20 70 65 72 66 6f 72 6d 0a 23 20 61 75 74 68 ler.that.tries.to.perform.#.auth
50c20 65 6e 74 69 63 61 74 69 6f 6e 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 20 62 75 74 20 66 entication.for.some.reason.but.f
50c40 61 69 6c 73 2c 20 68 6f 77 20 73 68 6f 75 6c 64 20 74 68 65 20 65 72 72 6f 72 20 62 65 0a 23 20 ails,.how.should.the.error.be.#.
50c60 73 69 67 6e 61 6c 6c 65 64 3f 20 20 54 68 65 20 63 6c 69 65 6e 74 20 6e 65 65 64 73 20 74 6f 20 signalled?..The.client.needs.to.
50c80 6b 6e 6f 77 20 74 68 65 20 48 54 54 50 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 20 42 75 74 20 69 know.the.HTTP.error.code...But.i
50ca0 66 0a 23 20 74 68 65 20 68 61 6e 64 6c 65 72 20 6b 6e 6f 77 73 20 74 68 61 74 20 74 68 65 20 70 f.#.the.handler.knows.that.the.p
50cc0 72 6f 62 6c 65 6d 20 77 61 73 2c 20 65 2e 67 2e 2c 20 74 68 61 74 20 69 74 20 64 69 64 6e 27 74 roblem.was,.e.g.,.that.it.didn't
50ce0 20 6b 6e 6f 77 0a 23 20 74 68 61 74 20 68 61 73 68 20 61 6c 67 6f 20 74 68 61 74 20 72 65 71 75 .know.#.that.hash.algo.that.requ
50d00 65 73 74 65 64 20 69 6e 20 74 68 65 20 63 68 61 6c 6c 65 6e 67 65 2c 20 69 74 20 77 6f 75 6c 64 ested.in.the.challenge,.it.would
50d20 20 62 65 20 67 6f 6f 64 20 74 6f 0a 23 20 70 61 73 73 20 74 68 61 74 20 69 6e 66 6f 72 6d 61 74 .be.good.to.#.pass.that.informat
50d40 69 6f 6e 20 61 6c 6f 6e 67 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 2c 20 74 6f 6f 2e 0a 23 20 ion.along.to.the.client,.too..#.
50d60 66 74 70 20 65 72 72 6f 72 73 20 61 72 65 6e 27 74 20 68 61 6e 64 6c 65 64 20 63 6c 65 61 6e 6c ftp.errors.aren't.handled.cleanl
50d80 79 0a 23 20 63 68 65 63 6b 20 64 69 67 65 73 74 20 61 67 61 69 6e 73 74 20 63 6f 72 72 65 63 74 y.#.check.digest.against.correct
50da0 20 28 69 2e 65 2e 20 6e 6f 6e 2d 61 70 61 63 68 65 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f .(i.e..non-apache).implementatio
50dc0 6e 0a 0a 23 20 50 6f 73 73 69 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e 73 3a 0a 23 20 63 6f 6d 70 n..#.Possible.extensions:.#.comp
50de0 6c 65 78 20 70 72 6f 78 69 65 73 20 20 58 58 58 20 6e 6f 74 20 73 75 72 65 20 77 68 61 74 20 65 lex.proxies..XXX.not.sure.what.e
50e00 78 61 63 74 6c 79 20 77 61 73 20 6d 65 61 6e 74 20 62 79 20 74 68 69 73 0a 23 20 61 62 73 74 72 xactly.was.meant.by.this.#.abstr
50e20 61 63 74 20 66 61 63 74 6f 72 79 20 66 6f 72 20 6f 70 65 6e 65 72 0a 0a 69 6d 70 6f 72 74 20 62 act.factory.for.opener..import.b
50e40 61 73 65 36 34 0a 69 6d 70 6f 72 74 20 62 69 73 65 63 74 0a 69 6d 70 6f 72 74 20 65 6d 61 69 6c ase64.import.bisect.import.email
50e60 0a 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 0a 69 6d 70 6f 72 74 20 68 74 74 70 2e 63 6c 69 65 .import.hashlib.import.http.clie
50e80 6e 74 0a 69 6d 70 6f 72 74 20 69 6f 0a 69 6d 70 6f 72 74 20 6f 73 0a 69 6d 70 6f 72 74 20 70 6f nt.import.io.import.os.import.po
50ea0 73 69 78 70 61 74 68 0a 69 6d 70 6f 72 74 20 72 65 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a sixpath.import.re.import.socket.
50ec0 69 6d 70 6f 72 74 20 73 74 72 69 6e 67 0a 69 6d 70 6f 72 74 20 73 79 73 0a 69 6d 70 6f 72 74 20 import.string.import.sys.import.
50ee0 74 69 6d 65 0a 69 6d 70 6f 72 74 20 74 65 6d 70 66 69 6c 65 0a 69 6d 70 6f 72 74 20 63 6f 6e 74 time.import.tempfile.import.cont
50f00 65 78 74 6c 69 62 0a 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e 67 73 0a 0a 0a 66 72 6f 6d 20 75 72 extlib.import.warnings...from.ur
50f20 6c 6c 69 62 2e 65 72 72 6f 72 20 69 6d 70 6f 72 74 20 55 52 4c 45 72 72 6f 72 2c 20 48 54 54 50 llib.error.import.URLError,.HTTP
50f40 45 72 72 6f 72 2c 20 43 6f 6e 74 65 6e 74 54 6f 6f 53 68 6f 72 74 45 72 72 6f 72 0a 66 72 6f 6d Error,.ContentTooShortError.from
50f60 20 75 72 6c 6c 69 62 2e 70 61 72 73 65 20 69 6d 70 6f 72 74 20 28 0a 20 20 20 20 75 72 6c 70 61 .urllib.parse.import.(.....urlpa
50f80 72 73 65 2c 20 75 72 6c 73 70 6c 69 74 2c 20 75 72 6c 6a 6f 69 6e 2c 20 75 6e 77 72 61 70 2c 20 rse,.urlsplit,.urljoin,.unwrap,.
50fa0 71 75 6f 74 65 2c 20 75 6e 71 75 6f 74 65 2c 0a 20 20 20 20 73 70 6c 69 74 74 79 70 65 2c 20 73 quote,.unquote,.....splittype,.s
50fc0 70 6c 69 74 68 6f 73 74 2c 20 73 70 6c 69 74 70 6f 72 74 2c 20 73 70 6c 69 74 75 73 65 72 2c 20 plithost,.splitport,.splituser,.
50fe0 73 70 6c 69 74 70 61 73 73 77 64 2c 0a 20 20 20 20 73 70 6c 69 74 61 74 74 72 2c 20 73 70 6c 69 splitpasswd,.....splitattr,.spli
51000 74 71 75 65 72 79 2c 20 73 70 6c 69 74 76 61 6c 75 65 2c 20 73 70 6c 69 74 74 61 67 2c 20 74 6f tquery,.splitvalue,.splittag,.to
51020 5f 62 79 74 65 73 2c 0a 20 20 20 20 75 6e 71 75 6f 74 65 5f 74 6f 5f 62 79 74 65 73 2c 20 75 72 _bytes,.....unquote_to_bytes,.ur
51040 6c 75 6e 70 61 72 73 65 29 0a 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 72 65 73 70 6f 6e 73 65 20 69 lunparse).from.urllib.response.i
51060 6d 70 6f 72 74 20 61 64 64 69 6e 66 6f 75 72 6c 2c 20 61 64 64 63 6c 6f 73 65 68 6f 6f 6b 0a 0a mport.addinfourl,.addclosehook..
51080 23 20 63 68 65 63 6b 20 66 6f 72 20 53 53 4c 0a 74 72 79 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20 #.check.for.SSL.try:.....import.
510a0 73 73 6c 0a 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 5f 68 61 76 ssl.except.ImportError:....._hav
510c0 65 5f 73 73 6c 20 3d 20 46 61 6c 73 65 0a 65 6c 73 65 3a 0a 20 20 20 20 5f 68 61 76 65 5f 73 73 e_ssl.=.False.else:....._have_ss
510e0 6c 20 3d 20 54 72 75 65 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 0a 20 20 20 20 23 20 43 6c 61 73 l.=.True..__all__.=.[.....#.Clas
51100 73 65 73 0a 20 20 20 20 27 52 65 71 75 65 73 74 27 2c 20 27 4f 70 65 6e 65 72 44 69 72 65 63 74 ses.....'Request',.'OpenerDirect
51120 6f 72 27 2c 20 27 42 61 73 65 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 50 44 65 66 61 75 6c 74 or',.'BaseHandler',.'HTTPDefault
51140 45 72 72 6f 72 48 61 6e 64 6c 65 72 27 2c 0a 20 20 20 20 27 48 54 54 50 52 65 64 69 72 65 63 74 ErrorHandler',.....'HTTPRedirect
51160 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 27 2c Handler',.'HTTPCookieProcessor',
51180 20 27 50 72 6f 78 79 48 61 6e 64 6c 65 72 27 2c 0a 20 20 20 20 27 48 54 54 50 50 61 73 73 77 6f .'ProxyHandler',.....'HTTPPasswo
511a0 72 64 4d 67 72 27 2c 20 27 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 44 65 66 61 rdMgr',.'HTTPPasswordMgrWithDefa
511c0 75 6c 74 52 65 61 6c 6d 27 2c 0a 20 20 20 20 27 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 ultRealm',.....'HTTPPasswordMgrW
511e0 69 74 68 50 72 69 6f 72 41 75 74 68 27 2c 20 27 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 ithPriorAuth',.'AbstractBasicAut
51200 68 48 61 6e 64 6c 65 72 27 2c 0a 20 20 20 20 27 48 54 54 50 42 61 73 69 63 41 75 74 68 48 61 6e hHandler',.....'HTTPBasicAuthHan
51220 64 6c 65 72 27 2c 20 27 50 72 6f 78 79 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 20 dler',.'ProxyBasicAuthHandler',.
51240 27 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 0a 20 20 20 'AbstractDigestAuthHandler',....
51260 20 27 48 54 54 50 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 20 27 50 72 6f 78 79 .'HTTPDigestAuthHandler',.'Proxy
51280 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 50 48 61 6e 64 6c 65 72 DigestAuthHandler',.'HTTPHandler
512a0 27 2c 0a 20 20 20 20 27 46 69 6c 65 48 61 6e 64 6c 65 72 27 2c 20 27 46 54 50 48 61 6e 64 6c 65 ',.....'FileHandler',.'FTPHandle
512c0 72 27 2c 20 27 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 27 2c 20 27 44 61 74 61 48 61 6e 64 r',.'CacheFTPHandler',.'DataHand
512e0 6c 65 72 27 2c 0a 20 20 20 20 27 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 ler',.....'UnknownHandler',.'HTT
51300 50 45 72 72 6f 72 50 72 6f 63 65 73 73 6f 72 27 2c 0a 20 20 20 20 23 20 46 75 6e 63 74 69 6f 6e PErrorProcessor',.....#.Function
51320 73 0a 20 20 20 20 27 75 72 6c 6f 70 65 6e 27 2c 20 27 69 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 s.....'urlopen',.'install_opener
51340 27 2c 20 27 62 75 69 6c 64 5f 6f 70 65 6e 65 72 27 2c 0a 20 20 20 20 27 70 61 74 68 6e 61 6d 65 ',.'build_opener',.....'pathname
51360 32 75 72 6c 27 2c 20 27 75 72 6c 32 70 61 74 68 6e 61 6d 65 27 2c 20 27 67 65 74 70 72 6f 78 69 2url',.'url2pathname',.'getproxi
51380 65 73 27 2c 0a 20 20 20 20 23 20 4c 65 67 61 63 79 20 69 6e 74 65 72 66 61 63 65 0a 20 20 20 20 es',.....#.Legacy.interface.....
513a0 27 75 72 6c 72 65 74 72 69 65 76 65 27 2c 20 27 75 72 6c 63 6c 65 61 6e 75 70 27 2c 20 27 55 52 'urlretrieve',.'urlcleanup',.'UR
513c0 4c 6f 70 65 6e 65 72 27 2c 20 27 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 27 2c 0a 5d 0a 0a 23 Lopener',.'FancyURLopener',.]..#
513e0 20 75 73 65 64 20 69 6e 20 55 73 65 72 2d 41 67 65 6e 74 20 68 65 61 64 65 72 20 73 65 6e 74 0a .used.in.User-Agent.header.sent.
51400 5f 5f 76 65 72 73 69 6f 6e 5f 5f 20 3d 20 27 25 64 2e 25 64 27 20 25 20 73 79 73 2e 76 65 72 73 __version__.=.'%d.%d'.%.sys.vers
51420 69 6f 6e 5f 69 6e 66 6f 5b 3a 32 5d 0a 0a 5f 6f 70 65 6e 65 72 20 3d 20 4e 6f 6e 65 0a 64 65 66 ion_info[:2].._opener.=.None.def
51440 20 75 72 6c 6f 70 65 6e 28 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 20 74 69 6d 65 6f 75 74 .urlopen(url,.data=None,.timeout
51460 3d 73 6f 63 6b 65 74 2e 5f 47 4c 4f 42 41 4c 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 2c =socket._GLOBAL_DEFAULT_TIMEOUT,
51480 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 2c 20 63 61 66 69 6c 65 3d 4e 6f 6e 65 2c 20 63 61 70 .............*,.cafile=None,.cap
514a0 61 74 68 3d 4e 6f 6e 65 2c 20 63 61 64 65 66 61 75 6c 74 3d 46 61 6c 73 65 2c 20 63 6f 6e 74 65 ath=None,.cadefault=False,.conte
514c0 78 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 27 27 27 4f 70 65 6e 20 74 68 65 20 55 52 4c 20 75 72 xt=None):.....'''Open.the.URL.ur
514e0 6c 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 20 73 74 72 69 6e 67 20 l,.which.can.be.either.a.string.
51500 6f 72 20 61 20 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 2a 64 61 74 61 2a or.a.Request.object.......*data*
51520 20 6d 75 73 74 20 62 65 20 61 6e 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66 79 69 6e 67 20 61 64 .must.be.an.object.specifying.ad
51540 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 20 74 6f 20 62 65 20 73 65 6e 74 20 74 6f 0a 20 20 20 20 ditional.data.to.be.sent.to.....
51560 74 68 65 20 73 65 72 76 65 72 2c 20 6f 72 20 4e 6f 6e 65 20 69 66 20 6e 6f 20 73 75 63 68 20 64 the.server,.or.None.if.no.such.d
51580 61 74 61 20 69 73 20 6e 65 65 64 65 64 2e 20 20 53 65 65 20 52 65 71 75 65 73 74 20 66 6f 72 0a ata.is.needed...See.Request.for.
515a0 20 20 20 20 64 65 74 61 69 6c 73 2e 0a 0a 20 20 20 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 ....details.......urllib.request
515c0 20 6d 6f 64 75 6c 65 20 75 73 65 73 20 48 54 54 50 2f 31 2e 31 20 61 6e 64 20 69 6e 63 6c 75 64 .module.uses.HTTP/1.1.and.includ
515e0 65 73 20 61 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 3a 63 6c 6f 73 65 22 0a 20 20 20 20 68 65 61 64 es.a."Connection:close".....head
51600 65 72 20 69 6e 20 69 74 73 20 48 54 54 50 20 72 65 71 75 65 73 74 73 2e 0a 0a 20 20 20 20 54 68 er.in.its.HTTP.requests.......Th
51620 65 20 6f 70 74 69 6f 6e 61 6c 20 2a 74 69 6d 65 6f 75 74 2a 20 70 61 72 61 6d 65 74 65 72 20 73 e.optional.*timeout*.parameter.s
51640 70 65 63 69 66 69 65 73 20 61 20 74 69 6d 65 6f 75 74 20 69 6e 20 73 65 63 6f 6e 64 73 20 66 6f pecifies.a.timeout.in.seconds.fo
51660 72 0a 20 20 20 20 62 6c 6f 63 6b 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 73 20 6c 69 6b 65 20 74 r.....blocking.operations.like.t
51680 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 74 74 65 6d 70 74 20 28 69 66 20 6e 6f 74 20 73 70 he.connection.attempt.(if.not.sp
516a0 65 63 69 66 69 65 64 2c 20 74 68 65 0a 20 20 20 20 67 6c 6f 62 61 6c 20 64 65 66 61 75 6c 74 20 ecified,.the.....global.default.
516c0 74 69 6d 65 6f 75 74 20 73 65 74 74 69 6e 67 20 77 69 6c 6c 20 62 65 20 75 73 65 64 29 2e 20 54 timeout.setting.will.be.used)..T
516e0 68 69 73 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 20 48 54 54 50 2c 0a 20 20 20 20 48 54 54 his.only.works.for.HTTP,.....HTT
51700 50 53 20 61 6e 64 20 46 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 49 66 20 PS.and.FTP.connections.......If.
51720 2a 63 6f 6e 74 65 78 74 2a 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 69 74 20 6d 75 73 74 20 *context*.is.specified,.it.must.
51740 62 65 20 61 20 73 73 6c 2e 53 53 4c 43 6f 6e 74 65 78 74 20 69 6e 73 74 61 6e 63 65 20 64 65 73 be.a.ssl.SSLContext.instance.des
51760 63 72 69 62 69 6e 67 0a 20 20 20 20 74 68 65 20 76 61 72 69 6f 75 73 20 53 53 4c 20 6f 70 74 69 cribing.....the.various.SSL.opti
51780 6f 6e 73 2e 20 53 65 65 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 66 6f 72 20 6d 6f 72 ons..See.HTTPSConnection.for.mor
517a0 65 20 64 65 74 61 69 6c 73 2e 0a 0a 20 20 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 2a 63 61 e.details.......The.optional.*ca
517c0 66 69 6c 65 2a 20 61 6e 64 20 2a 63 61 70 61 74 68 2a 20 70 61 72 61 6d 65 74 65 72 73 20 73 70 file*.and.*capath*.parameters.sp
517e0 65 63 69 66 79 20 61 20 73 65 74 20 6f 66 20 74 72 75 73 74 65 64 20 43 41 0a 20 20 20 20 63 65 ecify.a.set.of.trusted.CA.....ce
51800 72 74 69 66 69 63 61 74 65 73 20 66 6f 72 20 48 54 54 50 53 20 72 65 71 75 65 73 74 73 2e 20 63 rtificates.for.HTTPS.requests..c
51820 61 66 69 6c 65 20 73 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 66 afile.should.point.to.a.single.f
51840 69 6c 65 0a 20 20 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 62 75 6e 64 6c 65 20 6f 66 20 43 ile.....containing.a.bundle.of.C
51860 41 20 63 65 72 74 69 66 69 63 61 74 65 73 2c 20 77 68 65 72 65 61 73 20 63 61 70 61 74 68 20 73 A.certificates,.whereas.capath.s
51880 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 20 61 0a 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 6f hould.point.to.a.....directory.o
518a0 66 20 68 61 73 68 65 64 20 63 65 72 74 69 66 69 63 61 74 65 20 66 69 6c 65 73 2e 20 4d 6f 72 65 f.hashed.certificate.files..More
518c0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 0a 20 20 20 .information.can.be.found.in....
518e0 20 73 73 6c 2e 53 53 4c 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 .ssl.SSLContext.load_verify_loca
51900 74 69 6f 6e 73 28 29 2e 0a 0a 20 20 20 20 54 68 65 20 2a 63 61 64 65 66 61 75 6c 74 2a 20 70 61 tions().......The.*cadefault*.pa
51920 72 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 0a 20 20 20 20 54 68 69 73 20 66 75 rameter.is.ignored.......This.fu
51940 6e 63 74 69 6f 6e 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20 61 6e 20 6f 62 6a 65 63 74 20 nction.always.returns.an.object.
51960 77 68 69 63 68 20 63 61 6e 20 77 6f 72 6b 20 61 73 20 61 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 which.can.work.as.a.context.....
51980 6d 61 6e 61 67 65 72 20 61 6e 64 20 68 61 73 20 6d 65 74 68 6f 64 73 20 73 75 63 68 20 61 73 0a manager.and.has.methods.such.as.
519a0 0a 20 20 20 20 2a 20 67 65 74 75 72 6c 28 29 20 2d 20 72 65 74 75 72 6e 20 74 68 65 20 55 52 4c .....*.geturl().-.return.the.URL
519c0 20 6f 66 20 74 68 65 20 72 65 73 6f 75 72 63 65 20 72 65 74 72 69 65 76 65 64 2c 20 63 6f 6d 6d .of.the.resource.retrieved,.comm
519e0 6f 6e 6c 79 20 75 73 65 64 20 74 6f 0a 20 20 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 only.used.to.......determine.if.
51a00 61 20 72 65 64 69 72 65 63 74 20 77 61 73 20 66 6f 6c 6c 6f 77 65 64 0a 0a 20 20 20 20 2a 20 69 a.redirect.was.followed......*.i
51a20 6e 66 6f 28 29 20 2d 20 72 65 74 75 72 6e 20 74 68 65 20 6d 65 74 61 2d 69 6e 66 6f 72 6d 61 74 nfo().-.return.the.meta-informat
51a40 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 67 65 2c 20 73 75 63 68 20 61 73 20 68 65 61 64 65 72 73 ion.of.the.page,.such.as.headers
51a60 2c 20 69 6e 20 74 68 65 0a 20 20 20 20 20 20 66 6f 72 6d 20 6f 66 20 61 6e 20 65 6d 61 69 6c 2e ,.in.the.......form.of.an.email.
51a80 6d 65 73 73 61 67 65 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 29 20 69 6e 73 74 61 6e 63 65 20 28 message_from_string().instance.(
51aa0 73 65 65 20 51 75 69 63 6b 20 52 65 66 65 72 65 6e 63 65 20 74 6f 0a 20 20 20 20 20 20 48 54 54 see.Quick.Reference.to.......HTT
51ac0 50 20 48 65 61 64 65 72 73 29 0a 0a 20 20 20 20 2a 20 67 65 74 63 6f 64 65 28 29 20 2d 20 72 65 P.Headers)......*.getcode().-.re
51ae0 74 75 72 6e 20 74 68 65 20 48 54 54 50 20 73 74 61 74 75 73 20 63 6f 64 65 20 6f 66 20 74 68 65 turn.the.HTTP.status.code.of.the
51b00 20 72 65 73 70 6f 6e 73 65 2e 20 20 52 61 69 73 65 73 20 55 52 4c 45 72 72 6f 72 0a 20 20 20 20 .response...Raises.URLError.....
51b20 20 20 6f 6e 20 65 72 72 6f 72 73 2e 0a 0a 20 20 20 20 46 6f 72 20 48 54 54 50 20 61 6e 64 20 48 ..on.errors.......For.HTTP.and.H
51b40 54 54 50 53 20 55 52 4c 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 TTPS.URLs,.this.function.returns
51b60 20 61 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e 48 54 54 50 52 65 73 70 6f 6e 73 65 0a 20 20 20 20 .a.http.client.HTTPResponse.....
51b80 6f 62 6a 65 63 74 20 73 6c 69 67 68 74 6c 79 20 6d 6f 64 69 66 69 65 64 2e 20 49 6e 20 61 64 64 object.slightly.modified..In.add
51ba0 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 74 68 72 65 65 20 6e 65 77 20 6d 65 74 68 6f 64 73 20 61 ition.to.the.three.new.methods.a
51bc0 62 6f 76 65 2c 20 74 68 65 0a 20 20 20 20 6d 73 67 20 61 74 74 72 69 62 75 74 65 20 63 6f 6e 74 bove,.the.....msg.attribute.cont
51be0 61 69 6e 73 20 74 68 65 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20 74 68 65 ains.the.same.information.as.the
51c00 20 72 65 61 73 6f 6e 20 61 74 74 72 69 62 75 74 65 20 2d 2d 2d 0a 20 20 20 20 74 68 65 20 72 65 .reason.attribute.---.....the.re
51c20 61 73 6f 6e 20 70 68 72 61 73 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 73 65 72 76 ason.phrase.returned.by.the.serv
51c40 65 72 20 2d 2d 2d 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 0a 20 er.---.instead.of.the.response..
51c60 20 20 20 68 65 61 64 65 72 73 20 61 73 20 69 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 6e ...headers.as.it.is.specified.in
51c80 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 48 54 54 50 52 65 73 70 6f .the.documentation.for.HTTPRespo
51ca0 6e 73 65 2e 0a 0a 20 20 20 20 46 6f 72 20 46 54 50 2c 20 66 69 6c 65 2c 20 61 6e 64 20 64 61 74 nse.......For.FTP,.file,.and.dat
51cc0 61 20 55 52 4c 73 20 61 6e 64 20 72 65 71 75 65 73 74 73 20 65 78 70 6c 69 63 69 74 6c 79 20 68 a.URLs.and.requests.explicitly.h
51ce0 61 6e 64 6c 65 64 20 62 79 20 6c 65 67 61 63 79 0a 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 20 61 andled.by.legacy.....URLopener.a
51d00 6e 64 20 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 20 63 6c 61 73 73 65 73 2c 20 74 68 69 73 20 nd.FancyURLopener.classes,.this.
51d20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 0a 20 20 20 20 75 72 6c 6c 69 62 2e 72 65 function.returns.a.....urllib.re
51d40 73 70 6f 6e 73 65 2e 61 64 64 69 6e 66 6f 75 72 6c 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 4e sponse.addinfourl.object.......N
51d60 6f 74 65 20 74 68 61 74 20 4e 6f 6e 65 20 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 ote.that.None.may.be.returned.if
51d80 20 6e 6f 20 68 61 6e 64 6c 65 72 20 68 61 6e 64 6c 65 73 20 74 68 65 20 72 65 71 75 65 73 74 20 .no.handler.handles.the.request.
51da0 28 74 68 6f 75 67 68 0a 20 20 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6c 6c 65 (though.....the.default.installe
51dc0 64 20 67 6c 6f 62 61 6c 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 20 75 73 65 73 20 55 6e 6b d.global.OpenerDirector.uses.Unk
51de0 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 20 20 74 68 69 73 20 6e nownHandler.to.ensure.....this.n
51e00 65 76 65 72 20 68 61 70 70 65 6e 73 29 2e 0a 0a 20 20 20 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c ever.happens).......In.addition,
51e20 20 69 66 20 70 72 6f 78 79 20 73 65 74 74 69 6e 67 73 20 61 72 65 20 64 65 74 65 63 74 65 64 20 .if.proxy.settings.are.detected.
51e40 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 77 68 65 6e 20 61 20 2a 5f 70 72 6f 78 79 0a 20 20 20 (for.example,.when.a.*_proxy....
51e60 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 6c 69 6b 65 20 68 74 74 70 5f .environment.variable.like.http_
51e80 70 72 6f 78 79 20 69 73 20 73 65 74 29 2c 20 50 72 6f 78 79 48 61 6e 64 6c 65 72 20 69 73 20 64 proxy.is.set),.ProxyHandler.is.d
51ea0 65 66 61 75 6c 74 0a 20 20 20 20 69 6e 73 74 61 6c 6c 65 64 20 61 6e 64 20 6d 61 6b 65 73 20 73 efault.....installed.and.makes.s
51ec0 75 72 65 20 74 68 65 20 72 65 71 75 65 73 74 73 20 61 72 65 20 68 61 6e 64 6c 65 64 20 74 68 72 ure.the.requests.are.handled.thr
51ee0 6f 75 67 68 20 74 68 65 20 70 72 6f 78 79 2e 0a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 67 6c 6f ough.the.proxy.......'''.....glo
51f00 62 61 6c 20 5f 6f 70 65 6e 65 72 0a 20 20 20 20 69 66 20 63 61 66 69 6c 65 20 6f 72 20 63 61 70 bal._opener.....if.cafile.or.cap
51f20 61 74 68 20 6f 72 20 63 61 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 ath.or.cadefault:.........import
51f40 20 77 61 72 6e 69 6e 67 73 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 2e 77 61 72 6e 28 .warnings.........warnings.warn(
51f60 22 63 61 66 69 6c 65 2c 20 63 61 70 61 74 68 20 61 6e 64 20 63 61 64 65 66 61 75 6c 74 20 61 72 "cafile,.capath.and.cadefault.ar
51f80 65 20 64 65 70 72 65 63 61 74 65 64 2c 20 75 73 65 20 61 20 22 0a 20 20 20 20 20 20 20 20 20 20 e.deprecated,.use.a."...........
51fa0 20 20 20 20 20 20 20 20 20 20 20 20 22 63 75 73 74 6f 6d 20 63 6f 6e 74 65 78 74 20 69 6e 73 74 ............"custom.context.inst
51fc0 65 61 64 2e 22 2c 20 44 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e 67 2c 20 32 29 0a 20 20 ead.",.DeprecationWarning,.2)...
51fe0 20 20 20 20 20 20 69 66 20 63 6f 6e 74 65 78 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 ......if.context.is.not.None:...
52000 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 ..........raise.ValueError(.....
52020 20 20 20 20 20 20 20 20 20 20 20 20 22 59 6f 75 20 63 61 6e 27 74 20 70 61 73 73 20 62 6f 74 68 ............"You.can't.pass.both
52040 20 63 6f 6e 74 65 78 74 20 61 6e 64 20 61 6e 79 20 6f 66 20 63 61 66 69 6c 65 2c 20 63 61 70 61 .context.and.any.of.cafile,.capa
52060 74 68 2c 20 61 6e 64 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 61 64 65 66 th,.and."................."cadef
52080 61 75 6c 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e ault".............).........if.n
520a0 6f 74 20 5f 68 61 76 65 5f 73 73 6c 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 ot._have_ssl:.............raise.
520c0 56 61 6c 75 65 45 72 72 6f 72 28 27 53 53 4c 20 73 75 70 70 6f 72 74 20 6e 6f 74 20 61 76 61 69 ValueError('SSL.support.not.avai
520e0 6c 61 62 6c 65 27 29 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 3d 20 73 73 6c 2e 63 72 lable').........context.=.ssl.cr
52100 65 61 74 65 5f 64 65 66 61 75 6c 74 5f 63 6f 6e 74 65 78 74 28 73 73 6c 2e 50 75 72 70 6f 73 65 eate_default_context(ssl.Purpose
52120 2e 53 45 52 56 45 52 5f 41 55 54 48 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .SERVER_AUTH,...................
52140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 66 69 6c ...........................cafil
52160 65 3d 63 61 66 69 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e=cafile,.......................
52180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 70 61 74 68 3d 63 61 .......................capath=ca
521a0 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 68 74 74 70 73 5f 68 61 6e 64 6c 65 72 20 3d 20 48 54 path).........https_handler.=.HT
521c0 54 50 53 48 61 6e 64 6c 65 72 28 63 6f 6e 74 65 78 74 3d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 TPSHandler(context=context).....
521e0 20 20 20 20 6f 70 65 6e 65 72 20 3d 20 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 68 74 74 70 73 5f ....opener.=.build_opener(https_
52200 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 65 6c 69 66 20 63 6f 6e 74 65 78 74 3a 0a 20 20 20 20 20 handler).....elif.context:......
52220 20 20 20 68 74 74 70 73 5f 68 61 6e 64 6c 65 72 20 3d 20 48 54 54 50 53 48 61 6e 64 6c 65 72 28 ...https_handler.=.HTTPSHandler(
52240 63 6f 6e 74 65 78 74 3d 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 20 context=context).........opener.
52260 3d 20 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 68 74 74 70 73 5f 68 61 6e 64 6c 65 72 29 0a 20 20 =.build_opener(https_handler)...
52280 20 20 65 6c 69 66 20 5f 6f 70 65 6e 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 ..elif._opener.is.None:.........
522a0 5f 6f 70 65 6e 65 72 20 3d 20 6f 70 65 6e 65 72 20 3d 20 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 _opener.=.opener.=.build_opener(
522c0 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 20 3d 20 5f 6f 70 ).....else:.........opener.=._op
522e0 65 6e 65 72 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 70 65 6e 65 72 2e 6f 70 65 6e 28 75 72 6c 2c ener.....return.opener.open(url,
52300 20 64 61 74 61 2c 20 74 69 6d 65 6f 75 74 29 0a 0a 64 65 66 20 69 6e 73 74 61 6c 6c 5f 6f 70 65 .data,.timeout)..def.install_ope
52320 6e 65 72 28 6f 70 65 6e 65 72 29 3a 0a 20 20 20 20 67 6c 6f 62 61 6c 20 5f 6f 70 65 6e 65 72 0a ner(opener):.....global._opener.
52340 20 20 20 20 5f 6f 70 65 6e 65 72 20 3d 20 6f 70 65 6e 65 72 0a 0a 5f 75 72 6c 5f 74 65 6d 70 66 ...._opener.=.opener.._url_tempf
52360 69 6c 65 73 20 3d 20 5b 5d 0a 64 65 66 20 75 72 6c 72 65 74 72 69 65 76 65 28 75 72 6c 2c 20 66 iles.=.[].def.urlretrieve(url,.f
52380 69 6c 65 6e 61 6d 65 3d 4e 6f 6e 65 2c 20 72 65 70 6f 72 74 68 6f 6f 6b 3d 4e 6f 6e 65 2c 20 64 ilename=None,.reporthook=None,.d
523a0 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 65 74 72 69 65 76 65 20 ata=None):.....""".....Retrieve.
523c0 61 20 55 52 4c 20 69 6e 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 6c 6f 63 61 74 69 6f 6e 20 a.URL.into.a.temporary.location.
523e0 6f 6e 20 64 69 73 6b 2e 0a 0a 20 20 20 20 52 65 71 75 69 72 65 73 20 61 20 55 52 4c 20 61 72 67 on.disk.......Requires.a.URL.arg
52400 75 6d 65 6e 74 2e 20 49 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 70 61 73 73 65 64 2c 20 ument..If.a.filename.is.passed,.
52420 69 74 20 69 73 20 75 73 65 64 20 61 73 0a 20 20 20 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79 20 it.is.used.as.....the.temporary.
52440 66 69 6c 65 20 6c 6f 63 61 74 69 6f 6e 2e 20 54 68 65 20 72 65 70 6f 72 74 68 6f 6f 6b 20 61 72 file.location..The.reporthook.ar
52460 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 0a 20 20 20 20 61 20 63 61 6c 6c 61 62 6c 65 20 gument.should.be.....a.callable.
52480 74 68 61 74 20 61 63 63 65 70 74 73 20 61 20 62 6c 6f 63 6b 20 6e 75 6d 62 65 72 2c 20 61 20 72 that.accepts.a.block.number,.a.r
524a0 65 61 64 20 73 69 7a 65 2c 20 61 6e 64 20 74 68 65 0a 20 20 20 20 74 6f 74 61 6c 20 66 69 6c 65 ead.size,.and.the.....total.file
524c0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 55 52 4c 20 74 61 72 67 65 74 2e 20 54 68 65 20 64 61 74 .size.of.the.URL.target..The.dat
524e0 61 20 61 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 0a 20 20 20 20 76 61 6c 69 64 20 55 a.argument.should.be.....valid.U
52500 52 4c 20 65 6e 63 6f 64 65 64 20 64 61 74 61 2e 0a 0a 20 20 20 20 49 66 20 61 20 66 69 6c 65 6e RL.encoded.data.......If.a.filen
52520 61 6d 65 20 69 73 20 70 61 73 73 65 64 20 61 6e 64 20 74 68 65 20 55 52 4c 20 70 6f 69 6e 74 73 ame.is.passed.and.the.URL.points
52540 20 74 6f 20 61 20 6c 6f 63 61 6c 20 72 65 73 6f 75 72 63 65 2c 0a 20 20 20 20 74 68 65 20 72 65 .to.a.local.resource,.....the.re
52560 73 75 6c 74 20 69 73 20 61 20 63 6f 70 79 20 66 72 6f 6d 20 6c 6f 63 61 6c 20 66 69 6c 65 20 74 sult.is.a.copy.from.local.file.t
52580 6f 20 6e 65 77 20 66 69 6c 65 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 20 61 20 74 75 70 6c 65 o.new.file.......Returns.a.tuple
525a0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 61 74 68 20 74 6f 20 74 68 65 20 6e 65 77 6c .containing.the.path.to.the.newl
525c0 79 20 63 72 65 61 74 65 64 0a 20 20 20 20 64 61 74 61 20 66 69 6c 65 20 61 73 20 77 65 6c 6c 20 y.created.....data.file.as.well.
525e0 61 73 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 48 54 54 50 4d 65 73 73 61 67 65 20 6f 62 6a as.the.resulting.HTTPMessage.obj
52600 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 75 72 6c 5f 74 79 70 65 2c 20 70 61 74 68 20 ect......""".....url_type,.path.
52620 3d 20 73 70 6c 69 74 74 79 70 65 28 75 72 6c 29 0a 0a 20 20 20 20 77 69 74 68 20 63 6f 6e 74 65 =.splittype(url)......with.conte
52640 78 74 6c 69 62 2e 63 6c 6f 73 69 6e 67 28 75 72 6c 6f 70 65 6e 28 75 72 6c 2c 20 64 61 74 61 29 xtlib.closing(urlopen(url,.data)
52660 29 20 61 73 20 66 70 3a 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 66 70 2e 69 6e ).as.fp:.........headers.=.fp.in
52680 66 6f 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 4a 75 73 74 20 72 65 74 75 72 6e 20 74 68 65 20 fo()..........#.Just.return.the.
526a0 6c 6f 63 61 6c 20 70 61 74 68 20 61 6e 64 20 74 68 65 20 22 68 65 61 64 65 72 73 22 20 66 6f 72 local.path.and.the."headers".for
526c0 20 66 69 6c 65 3a 2f 2f 0a 20 20 20 20 20 20 20 20 23 20 55 52 4c 73 2e 20 4e 6f 20 73 65 6e 73 .file://.........#.URLs..No.sens
526e0 65 20 69 6e 20 70 65 72 66 6f 72 6d 69 6e 67 20 61 20 63 6f 70 79 20 75 6e 6c 65 73 73 20 72 65 e.in.performing.a.copy.unless.re
52700 71 75 65 73 74 65 64 2e 0a 20 20 20 20 20 20 20 20 69 66 20 75 72 6c 5f 74 79 70 65 20 3d 3d 20 quested..........if.url_type.==.
52720 22 66 69 6c 65 22 20 61 6e 64 20 6e 6f 74 20 66 69 6c 65 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 "file".and.not.filename:........
52740 20 20 20 20 20 72 65 74 75 72 6e 20 6f 73 2e 70 61 74 68 2e 6e 6f 72 6d 70 61 74 68 28 70 61 74 .....return.os.path.normpath(pat
52760 68 29 2c 20 68 65 61 64 65 72 73 0a 0a 20 20 20 20 20 20 20 20 23 20 48 61 6e 64 6c 65 20 74 65 h),.headers..........#.Handle.te
52780 6d 70 6f 72 61 72 79 20 66 69 6c 65 20 73 65 74 75 70 2e 0a 20 20 20 20 20 20 20 20 69 66 20 66 mporary.file.setup..........if.f
527a0 69 6c 65 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 66 70 20 3d 20 6f 70 65 6e 28 ilename:.............tfp.=.open(
527c0 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 filename,.'wb').........else:...
527e0 20 20 20 20 20 20 20 20 20 20 74 66 70 20 3d 20 74 65 6d 70 66 69 6c 65 2e 4e 61 6d 65 64 54 65 ..........tfp.=.tempfile.NamedTe
52800 6d 70 6f 72 61 72 79 46 69 6c 65 28 64 65 6c 65 74 65 3d 46 61 6c 73 65 29 0a 20 20 20 20 20 20 mporaryFile(delete=False).......
52820 20 20 20 20 20 20 66 69 6c 65 6e 61 6d 65 20 3d 20 74 66 70 2e 6e 61 6d 65 0a 20 20 20 20 20 20 ......filename.=.tfp.name.......
52840 20 20 20 20 20 20 5f 75 72 6c 5f 74 65 6d 70 66 69 6c 65 73 2e 61 70 70 65 6e 64 28 66 69 6c 65 ......_url_tempfiles.append(file
52860 6e 61 6d 65 29 0a 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 74 66 70 3a 0a 20 20 20 20 20 20 20 name)..........with.tfp:........
52880 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 66 69 6c 65 6e 61 6d 65 2c 20 68 65 61 64 65 72 73 0a .....result.=.filename,.headers.
528a0 20 20 20 20 20 20 20 20 20 20 20 20 62 73 20 3d 20 31 30 32 34 2a 38 0a 20 20 20 20 20 20 20 20 ............bs.=.1024*8.........
528c0 20 20 20 20 73 69 7a 65 20 3d 20 2d 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 20 3d ....size.=.-1.............read.=
528e0 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 6e 75 6d 20 3d 20 30 0a 20 20 20 20 .0.............blocknum.=.0.....
52900 20 20 20 20 20 20 20 20 69 66 20 22 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 22 20 69 6e 20 68 ........if."content-length".in.h
52920 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 20 3d 20 69 eaders:.................size.=.i
52940 6e 74 28 68 65 61 64 65 72 73 5b 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 22 5d 29 0a 0a 20 nt(headers["Content-Length"])...
52960 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 70 6f 72 74 68 6f 6f 6b 3a 0a 20 20 20 20 20 20 ...........if.reporthook:.......
52980 20 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 68 6f 6f 6b 28 62 6c 6f 63 6b 6e 75 6d 2c 20 62 ..........reporthook(blocknum,.b
529a0 73 2c 20 73 69 7a 65 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 s,.size)..............while.True
529c0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 20 3d 20 66 70 2e 72 65 61 :.................block.=.fp.rea
529e0 64 28 62 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 62 6c 6f d(bs).................if.not.blo
52a00 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 ck:.....................break...
52a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 20 2b 3d 20 6c 65 6e 28 62 6c 6f 63 6b 29 ..............read.+=.len(block)
52a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 66 70 2e 77 72 69 74 65 28 62 6c 6f 63 6b .................tfp.write(block
52a60 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 6e 75 6d 20 2b 3d 20 31 0a ).................blocknum.+=.1.
52a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 70 6f 72 74 68 6f 6f 6b 3a 0a 20 ................if.reporthook:..
52aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 68 6f 6f 6b 28 62 6c ...................reporthook(bl
52ac0 6f 63 6b 6e 75 6d 2c 20 62 73 2c 20 73 69 7a 65 29 0a 0a 20 20 20 20 69 66 20 73 69 7a 65 20 3e ocknum,.bs,.size)......if.size.>
52ae0 3d 20 30 20 61 6e 64 20 72 65 61 64 20 3c 20 73 69 7a 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 =.0.and.read.<.size:.........rai
52b00 73 65 20 43 6f 6e 74 65 6e 74 54 6f 6f 53 68 6f 72 74 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 se.ContentTooShortError(........
52b20 20 20 20 20 20 22 72 65 74 72 69 65 76 61 6c 20 69 6e 63 6f 6d 70 6c 65 74 65 3a 20 67 6f 74 20 ....."retrieval.incomplete:.got.
52b40 6f 6e 6c 79 20 25 69 20 6f 75 74 20 6f 66 20 25 69 20 62 79 74 65 73 22 0a 20 20 20 20 20 20 20 only.%i.out.of.%i.bytes"........
52b60 20 20 20 20 20 25 20 28 72 65 61 64 2c 20 73 69 7a 65 29 2c 20 72 65 73 75 6c 74 29 0a 0a 20 20 .....%.(read,.size),.result)....
52b80 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 64 65 66 20 75 72 6c 63 6c 65 61 6e 75 70 28 ..return.result..def.urlcleanup(
52ba0 29 3a 0a 20 20 20 20 22 22 22 43 6c 65 61 6e 20 75 70 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c ):....."""Clean.up.temporary.fil
52bc0 65 73 20 66 72 6f 6d 20 75 72 6c 72 65 74 72 69 65 76 65 20 63 61 6c 6c 73 2e 22 22 22 0a 20 20 es.from.urlretrieve.calls."""...
52be0 20 20 66 6f 72 20 74 65 6d 70 5f 66 69 6c 65 20 69 6e 20 5f 75 72 6c 5f 74 65 6d 70 66 69 6c 65 ..for.temp_file.in._url_tempfile
52c00 73 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 73 2e 75 s:.........try:.............os.u
52c20 6e 6c 69 6e 6b 28 74 65 6d 70 5f 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 nlink(temp_file).........except.
52c40 4f 53 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 20 20 64 OSError:.............pass......d
52c60 65 6c 20 5f 75 72 6c 5f 74 65 6d 70 66 69 6c 65 73 5b 3a 5d 0a 20 20 20 20 67 6c 6f 62 61 6c 20 el._url_tempfiles[:].....global.
52c80 5f 6f 70 65 6e 65 72 0a 20 20 20 20 69 66 20 5f 6f 70 65 6e 65 72 3a 0a 20 20 20 20 20 20 20 20 _opener.....if._opener:.........
52ca0 5f 6f 70 65 6e 65 72 20 3d 20 4e 6f 6e 65 0a 0a 23 20 63 6f 70 69 65 64 20 66 72 6f 6d 20 63 6f _opener.=.None..#.copied.from.co
52cc0 6f 6b 69 65 6c 69 62 2e 70 79 0a 5f 63 75 74 5f 70 6f 72 74 5f 72 65 20 3d 20 72 65 2e 63 6f 6d okielib.py._cut_port_re.=.re.com
52ce0 70 69 6c 65 28 72 22 3a 5c 64 2b 24 22 2c 20 72 65 2e 41 53 43 49 49 29 0a 64 65 66 20 72 65 71 pile(r":\d+$",.re.ASCII).def.req
52d00 75 65 73 74 5f 68 6f 73 74 28 72 65 71 75 65 73 74 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 uest_host(request):....."""Retur
52d20 6e 20 72 65 71 75 65 73 74 2d 68 6f 73 74 2c 20 61 73 20 64 65 66 69 6e 65 64 20 62 79 20 52 46 n.request-host,.as.defined.by.RF
52d40 43 20 32 39 36 35 2e 0a 0a 20 20 20 20 56 61 72 69 61 74 69 6f 6e 20 66 72 6f 6d 20 52 46 43 3a C.2965.......Variation.from.RFC:
52d60 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 69 73 20 6c 6f 77 65 72 63 61 73 65 64 2c 20 66 .returned.value.is.lowercased,.f
52d80 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 74 0a 20 20 20 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 0a 0a 20 or.convenient.....comparison....
52da0 20 20 20 22 22 22 0a 20 20 20 20 75 72 6c 20 3d 20 72 65 71 75 65 73 74 2e 66 75 6c 6c 5f 75 72 ...""".....url.=.request.full_ur
52dc0 6c 0a 20 20 20 20 68 6f 73 74 20 3d 20 75 72 6c 70 61 72 73 65 28 75 72 6c 29 5b 31 5d 0a 20 20 l.....host.=.urlparse(url)[1]...
52de0 20 20 69 66 20 68 6f 73 74 20 3d 3d 20 22 22 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 ..if.host.==."":.........host.=.
52e00 72 65 71 75 65 73 74 2e 67 65 74 5f 68 65 61 64 65 72 28 22 48 6f 73 74 22 2c 20 22 22 29 0a 0a request.get_header("Host",."")..
52e20 20 20 20 20 23 20 72 65 6d 6f 76 65 20 70 6f 72 74 2c 20 69 66 20 70 72 65 73 65 6e 74 0a 20 20 ....#.remove.port,.if.present...
52e40 20 20 68 6f 73 74 20 3d 20 5f 63 75 74 5f 70 6f 72 74 5f 72 65 2e 73 75 62 28 22 22 2c 20 68 6f ..host.=._cut_port_re.sub("",.ho
52e60 73 74 2c 20 31 29 0a 20 20 20 20 72 65 74 75 72 6e 20 68 6f 73 74 2e 6c 6f 77 65 72 28 29 0a 0a st,.1).....return.host.lower()..
52e80 63 6c 61 73 73 20 52 65 71 75 65 73 74 3a 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f class.Request:......def.__init__
52ea0 28 73 65 6c 66 2c 20 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 20 68 65 61 64 65 72 73 3d 7b (self,.url,.data=None,.headers={
52ec0 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 69 6e 5f 72 65 71 5f 68 },..................origin_req_h
52ee0 6f 73 74 3d 4e 6f 6e 65 2c 20 75 6e 76 65 72 69 66 69 61 62 6c 65 3d 46 61 6c 73 65 2c 0a 20 20 ost=None,.unverifiable=False,...
52f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3d 4e 6f 6e 65 29 3a 0a 20 20 20 ...............method=None):....
52f20 20 20 20 20 20 73 65 6c 66 2e 66 75 6c 6c 5f 75 72 6c 20 3d 20 75 72 6c 0a 20 20 20 20 20 20 20 .....self.full_url.=.url........
52f40 20 73 65 6c 66 2e 68 65 61 64 65 72 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e .self.headers.=.{}.........self.
52f60 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 64 72 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 unredirected_hdrs.=.{}.........s
52f80 65 6c 66 2e 5f 64 61 74 61 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 61 elf._data.=.None.........self.da
52fa0 74 61 20 3d 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 75 6e 6e 65 6c 5f 68 ta.=.data.........self._tunnel_h
52fc0 6f 73 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 2c 20 76 61 6c 75 ost.=.None.........for.key,.valu
52fe0 65 20 69 6e 20 68 65 61 64 65 72 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 e.in.headers.items():...........
53000 20 20 73 65 6c 66 2e 61 64 64 5f 68 65 61 64 65 72 28 6b 65 79 2c 20 76 61 6c 75 65 29 0a 20 20 ..self.add_header(key,.value)...
53020 20 20 20 20 20 20 69 66 20 6f 72 69 67 69 6e 5f 72 65 71 5f 68 6f 73 74 20 69 73 20 4e 6f 6e 65 ......if.origin_req_host.is.None
53040 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 69 6e 5f 72 65 71 5f 68 6f 73 74 20 3d 20 :.............origin_req_host.=.
53060 72 65 71 75 65 73 74 5f 68 6f 73 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e request_host(self).........self.
53080 6f 72 69 67 69 6e 5f 72 65 71 5f 68 6f 73 74 20 3d 20 6f 72 69 67 69 6e 5f 72 65 71 5f 68 6f 73 origin_req_host.=.origin_req_hos
530a0 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 6e 76 65 72 69 66 69 61 62 6c 65 20 3d 20 75 6e t.........self.unverifiable.=.un
530c0 76 65 72 69 66 69 61 62 6c 65 0a 20 20 20 20 20 20 20 20 69 66 20 6d 65 74 68 6f 64 3a 0a 20 20 verifiable.........if.method:...
530e0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 65 74 68 6f 64 20 3d 20 6d 65 74 68 6f 64 0a 0a ..........self.method.=.method..
53100 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 66 75 6c 6c 5f 75 72 6c 28 73 ....@property.....def.full_url(s
53120 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 66 72 61 67 6d 65 6e 74 3a 0a elf):.........if.self.fragment:.
53140 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 7b 7d 23 7b 7d 27 2e 66 6f 72 6d 61 ............return.'{}#{}'.forma
53160 74 28 73 65 6c 66 2e 5f 66 75 6c 6c 5f 75 72 6c 2c 20 73 65 6c 66 2e 66 72 61 67 6d 65 6e 74 29 t(self._full_url,.self.fragment)
53180 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 66 75 6c 6c 5f 75 72 6c 0a 0a .........return.self._full_url..
531a0 20 20 20 20 40 66 75 6c 6c 5f 75 72 6c 2e 73 65 74 74 65 72 0a 20 20 20 20 64 65 66 20 66 75 6c ....@full_url.setter.....def.ful
531c0 6c 5f 75 72 6c 28 73 65 6c 66 2c 20 75 72 6c 29 3a 0a 20 20 20 20 20 20 20 20 23 20 75 6e 77 72 l_url(self,.url):.........#.unwr
531e0 61 70 28 27 3c 55 52 4c 3a 74 79 70 65 3a 2f 2f 68 6f 73 74 2f 70 61 74 68 3e 27 29 20 2d 2d 3e ap('<URL:type://host/path>').-->
53200 20 27 74 79 70 65 3a 2f 2f 68 6f 73 74 2f 70 61 74 68 27 0a 20 20 20 20 20 20 20 20 73 65 6c 66 .'type://host/path'.........self
53220 2e 5f 66 75 6c 6c 5f 75 72 6c 20 3d 20 75 6e 77 72 61 70 28 75 72 6c 29 0a 20 20 20 20 20 20 20 ._full_url.=.unwrap(url)........
53240 20 73 65 6c 66 2e 5f 66 75 6c 6c 5f 75 72 6c 2c 20 73 65 6c 66 2e 66 72 61 67 6d 65 6e 74 20 3d .self._full_url,.self.fragment.=
53260 20 73 70 6c 69 74 74 61 67 28 73 65 6c 66 2e 5f 66 75 6c 6c 5f 75 72 6c 29 0a 20 20 20 20 20 20 .splittag(self._full_url).......
53280 20 20 73 65 6c 66 2e 5f 70 61 72 73 65 28 29 0a 0a 20 20 20 20 40 66 75 6c 6c 5f 75 72 6c 2e 64 ..self._parse()......@full_url.d
532a0 65 6c 65 74 65 72 0a 20 20 20 20 64 65 66 20 66 75 6c 6c 5f 75 72 6c 28 73 65 6c 66 29 3a 0a 20 eleter.....def.full_url(self):..
532c0 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 66 75 6c 6c 5f 75 72 6c 20 3d 20 4e 6f 6e 65 0a 20 20 20 .......self._full_url.=.None....
532e0 20 20 20 20 20 73 65 6c 66 2e 66 72 61 67 6d 65 6e 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 .....self.fragment.=.None.......
53300 20 20 73 65 6c 66 2e 73 65 6c 65 63 74 6f 72 20 3d 20 27 27 0a 0a 20 20 20 20 40 70 72 6f 70 65 ..self.selector.=.''......@prope
53320 72 74 79 0a 20 20 20 20 64 65 66 20 64 61 74 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 rty.....def.data(self):.........
53340 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 64 61 74 61 0a 0a 20 20 20 20 40 64 61 74 61 2e 73 65 74 return.self._data......@data.set
53360 74 65 72 0a 20 20 20 20 64 65 66 20 64 61 74 61 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 ter.....def.data(self,.data):...
53380 20 20 20 20 20 20 69 66 20 64 61 74 61 20 21 3d 20 73 65 6c 66 2e 5f 64 61 74 61 3a 0a 20 20 20 ......if.data.!=.self._data:....
533a0 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 61 74 61 20 3d 20 64 61 74 61 0a 20 20 20 20 20 .........self._data.=.data......
533c0 20 20 20 20 20 20 20 23 20 69 73 73 75 65 20 31 36 34 36 34 0a 20 20 20 20 20 20 20 20 20 20 20 .......#.issue.16464............
533e0 20 23 20 69 66 20 77 65 20 63 68 61 6e 67 65 20 64 61 74 61 20 77 65 20 6e 65 65 64 20 74 6f 20 .#.if.we.change.data.we.need.to.
53400 72 65 6d 6f 76 65 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 20 68 65 61 64 65 72 0a 20 20 20 remove.content-length.header....
53420 20 20 20 20 20 20 20 20 20 23 20 28 63 61 75 73 65 20 69 74 27 73 20 6d 6f 73 74 20 70 72 6f 62 .........#.(cause.it's.most.prob
53440 61 62 6c 79 20 63 61 6c 63 75 6c 61 74 65 64 20 66 6f 72 20 70 72 65 76 69 6f 75 73 20 76 61 6c ably.calculated.for.previous.val
53460 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 68 61 73 5f 68 65 61 64 ue).............if.self.has_head
53480 65 72 28 22 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 22 29 3a 0a 20 20 20 20 20 20 20 20 20 20 er("Content-length"):...........
534a0 20 20 20 20 20 20 73 65 6c 66 2e 72 65 6d 6f 76 65 5f 68 65 61 64 65 72 28 22 43 6f 6e 74 65 6e ......self.remove_header("Conten
534c0 74 2d 6c 65 6e 67 74 68 22 29 0a 0a 20 20 20 20 40 64 61 74 61 2e 64 65 6c 65 74 65 72 0a 20 20 t-length")......@data.deleter...
534e0 20 20 64 65 66 20 64 61 74 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 ..def.data(self):.........self.d
53500 61 74 61 20 3d 20 4e 6f 6e 65 0a 0a 20 20 20 20 64 65 66 20 5f 70 61 72 73 65 28 73 65 6c 66 29 ata.=.None......def._parse(self)
53520 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 79 70 65 2c 20 72 65 73 74 20 3d 20 73 70 6c 69 :.........self.type,.rest.=.spli
53540 74 74 79 70 65 28 73 65 6c 66 2e 5f 66 75 6c 6c 5f 75 72 6c 29 0a 20 20 20 20 20 20 20 20 69 66 ttype(self._full_url).........if
53560 20 73 65 6c 66 2e 74 79 70 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .self.type.is.None:.............
53580 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 75 6e 6b 6e 6f 77 6e 20 75 72 6c 20 74 79 raise.ValueError("unknown.url.ty
535a0 70 65 3a 20 25 72 22 20 25 20 73 65 6c 66 2e 66 75 6c 6c 5f 75 72 6c 29 0a 20 20 20 20 20 20 20 pe:.%r".%.self.full_url)........
535c0 20 73 65 6c 66 2e 68 6f 73 74 2c 20 73 65 6c 66 2e 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c 69 .self.host,.self.selector.=.spli
535e0 74 68 6f 73 74 28 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 68 6f 73 74 thost(rest).........if.self.host
53600 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 75 6e 71 75 6f 74 :.............self.host.=.unquot
53620 65 28 73 65 6c 66 2e 68 6f 73 74 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6d 65 74 68 6f 64 e(self.host)......def.get_method
53640 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 73 74 72 69 (self):........."""Return.a.stri
53660 6e 67 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 48 54 54 50 20 72 65 71 75 65 73 74 20 6d ng.indicating.the.HTTP.request.m
53680 65 74 68 6f 64 2e 22 22 22 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 5f 6d 65 74 68 6f 64 ethod.""".........default_method
536a0 20 3d 20 22 50 4f 53 54 22 20 69 66 20 73 65 6c 66 2e 64 61 74 61 20 69 73 20 6e 6f 74 20 4e 6f .=."POST".if.self.data.is.not.No
536c0 6e 65 20 65 6c 73 65 20 22 47 45 54 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 ne.else."GET".........return.get
536e0 61 74 74 72 28 73 65 6c 66 2c 20 27 6d 65 74 68 6f 64 27 2c 20 64 65 66 61 75 6c 74 5f 6d 65 74 attr(self,.'method',.default_met
53700 68 6f 64 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 66 75 6c 6c 5f 75 72 6c 28 73 65 6c 66 29 hod)......def.get_full_url(self)
53720 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 66 75 6c 6c 5f 75 72 6c 0a 0a :.........return.self.full_url..
53740 20 20 20 20 64 65 66 20 73 65 74 5f 70 72 6f 78 79 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 74 79 ....def.set_proxy(self,.host,.ty
53760 70 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 79 70 65 20 3d 3d 20 27 68 74 pe):.........if.self.type.==.'ht
53780 74 70 73 27 20 61 6e 64 20 6e 6f 74 20 73 65 6c 66 2e 5f 74 75 6e 6e 65 6c 5f 68 6f 73 74 3a 0a tps'.and.not.self._tunnel_host:.
537a0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 75 6e 6e 65 6c 5f 68 6f 73 74 20 3d 20 ............self._tunnel_host.=.
537c0 73 65 6c 66 2e 68 6f 73 74 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 self.host.........else:.........
537e0 20 20 20 20 73 65 6c 66 2e 74 79 70 65 3d 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....self.type=.type.............
53800 73 65 6c 66 2e 73 65 6c 65 63 74 6f 72 20 3d 20 73 65 6c 66 2e 66 75 6c 6c 5f 75 72 6c 0a 20 20 self.selector.=.self.full_url...
53820 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 68 6f 73 74 0a 0a 20 20 20 20 64 65 66 20 ......self.host.=.host......def.
53840 68 61 73 5f 70 72 6f 78 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 has_proxy(self):.........return.
53860 73 65 6c 66 2e 73 65 6c 65 63 74 6f 72 20 3d 3d 20 73 65 6c 66 2e 66 75 6c 6c 5f 75 72 6c 0a 0a self.selector.==.self.full_url..
53880 20 20 20 20 64 65 66 20 61 64 64 5f 68 65 61 64 65 72 28 73 65 6c 66 2c 20 6b 65 79 2c 20 76 61 ....def.add_header(self,.key,.va
538a0 6c 29 3a 0a 20 20 20 20 20 20 20 20 23 20 75 73 65 66 75 6c 20 66 6f 72 20 73 6f 6d 65 74 68 69 l):.........#.useful.for.somethi
538c0 6e 67 20 6c 69 6b 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 ng.like.authentication.........s
538e0 65 6c 66 2e 68 65 61 64 65 72 73 5b 6b 65 79 2e 63 61 70 69 74 61 6c 69 7a 65 28 29 5d 20 3d 20 elf.headers[key.capitalize()].=.
53900 76 61 6c 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 val......def.add_unredirected_he
53920 61 64 65 72 28 73 65 6c 66 2c 20 6b 65 79 2c 20 76 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ader(self,.key,.val):.........#.
53940 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 64 64 65 64 20 74 6f 20 61 20 72 65 64 69 72 65 63 74 65 will.not.be.added.to.a.redirecte
53960 64 20 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 6e 72 65 64 69 72 65 63 d.request.........self.unredirec
53980 74 65 64 5f 68 64 72 73 5b 6b 65 79 2e 63 61 70 69 74 61 6c 69 7a 65 28 29 5d 20 3d 20 76 61 6c ted_hdrs[key.capitalize()].=.val
539a0 0a 0a 20 20 20 20 64 65 66 20 68 61 73 5f 68 65 61 64 65 72 28 73 65 6c 66 2c 20 68 65 61 64 65 ......def.has_header(self,.heade
539c0 72 5f 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 65 61 64 65 72 5f r_name):.........return.(header_
539e0 6e 61 6d 65 20 69 6e 20 73 65 6c 66 2e 68 65 61 64 65 72 73 20 6f 72 0a 20 20 20 20 20 20 20 20 name.in.self.headers.or.........
53a00 20 20 20 20 20 20 20 20 68 65 61 64 65 72 5f 6e 61 6d 65 20 69 6e 20 73 65 6c 66 2e 75 6e 72 65 ........header_name.in.self.unre
53a20 64 69 72 65 63 74 65 64 5f 68 64 72 73 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 68 65 61 64 directed_hdrs)......def.get_head
53a40 65 72 28 73 65 6c 66 2c 20 68 65 61 64 65 72 5f 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 3d 4e 6f er(self,.header_name,.default=No
53a60 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 68 65 61 64 65 72 73 ne):.........return.self.headers
53a80 2e 67 65 74 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 5f 6e 61 6d 65 2c 0a 20 .get(.............header_name,..
53aa0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 64 72 ...........self.unredirected_hdr
53ac0 73 2e 67 65 74 28 68 65 61 64 65 72 5f 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 29 29 0a 0a 20 20 s.get(header_name,.default))....
53ae0 20 20 64 65 66 20 72 65 6d 6f 76 65 5f 68 65 61 64 65 72 28 73 65 6c 66 2c 20 68 65 61 64 65 72 ..def.remove_header(self,.header
53b00 5f 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 61 64 65 72 73 2e 70 6f 70 _name):.........self.headers.pop
53b20 28 68 65 61 64 65 72 5f 6e 61 6d 65 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 (header_name,.None).........self
53b40 2e 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 64 72 73 2e 70 6f 70 28 68 65 61 64 65 72 5f 6e 61 .unredirected_hdrs.pop(header_na
53b60 6d 65 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 64 65 66 20 68 65 61 64 65 72 5f 69 74 65 6d 73 28 me,.None)......def.header_items(
53b80 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 68 64 72 73 20 3d 20 73 65 6c 66 2e 75 6e 72 65 64 self):.........hdrs.=.self.unred
53ba0 69 72 65 63 74 65 64 5f 68 64 72 73 2e 63 6f 70 79 28 29 0a 20 20 20 20 20 20 20 20 68 64 72 73 irected_hdrs.copy().........hdrs
53bc0 2e 75 70 64 61 74 65 28 73 65 6c 66 2e 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 72 65 .update(self.headers).........re
53be0 74 75 72 6e 20 6c 69 73 74 28 68 64 72 73 2e 69 74 65 6d 73 28 29 29 0a 0a 63 6c 61 73 73 20 4f turn.list(hdrs.items())..class.O
53c00 70 65 6e 65 72 44 69 72 65 63 74 6f 72 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 penerDirector:.....def.__init__(
53c20 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 63 6c 69 65 6e 74 5f 76 65 72 73 69 6f 6e 20 3d 20 self):.........client_version.=.
53c40 22 50 79 74 68 6f 6e 2d 75 72 6c 6c 69 62 2f 25 73 22 20 25 20 5f 5f 76 65 72 73 69 6f 6e 5f 5f "Python-urllib/%s".%.__version__
53c60 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 68 65 61 64 65 72 73 20 3d 20 5b 28 27 55 73 .........self.addheaders.=.[('Us
53c80 65 72 2d 61 67 65 6e 74 27 2c 20 63 6c 69 65 6e 74 5f 76 65 72 73 69 6f 6e 29 5d 0a 20 20 20 20 er-agent',.client_version)].....
53ca0 20 20 20 20 23 20 73 65 6c 66 2e 68 61 6e 64 6c 65 72 73 20 69 73 20 72 65 74 61 69 6e 65 64 20 ....#.self.handlers.is.retained.
53cc0 6f 6e 6c 79 20 66 6f 72 20 62 61 63 6b 77 61 72 64 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 0a only.for.backward.compatibility.
53ce0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 61 6e 64 6c 65 72 73 20 3d 20 5b 5d 0a 20 20 20 20 20 ........self.handlers.=.[]......
53d00 20 20 20 23 20 6d 61 6e 61 67 65 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 68 61 6e 64 6c ...#.manage.the.individual.handl
53d20 65 72 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 61 6e 64 6c 65 5f 6f 70 65 6e 20 3d 20 7b ers.........self.handle_open.=.{
53d40 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 20 3d 20 7b 7d }.........self.handle_error.=.{}
53d60 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 73 70 6f 6e 73 65 20 3d .........self.process_response.=
53d80 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 71 75 65 73 74 .{}.........self.process_request
53da0 20 3d 20 7b 7d 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 68 61 6e 64 6c 65 72 28 73 65 6c 66 2c .=.{}......def.add_handler(self,
53dc0 20 68 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 .handler):.........if.not.hasatt
53de0 72 28 68 61 6e 64 6c 65 72 2c 20 22 61 64 64 5f 70 61 72 65 6e 74 22 29 3a 0a 20 20 20 20 20 20 r(handler,."add_parent"):.......
53e00 20 20 20 20 20 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 22 65 78 70 65 63 74 65 64 20 ......raise.TypeError("expected.
53e20 42 61 73 65 48 61 6e 64 6c 65 72 20 69 6e 73 74 61 6e 63 65 2c 20 67 6f 74 20 25 72 22 20 25 0a BaseHandler.instance,.got.%r".%.
53e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 ............................type
53e60 28 68 61 6e 64 6c 65 72 29 29 0a 0a 20 20 20 20 20 20 20 20 61 64 64 65 64 20 3d 20 46 61 6c 73 (handler))..........added.=.Fals
53e80 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6d 65 74 68 20 69 6e 20 64 69 72 28 68 61 6e 64 6c 65 e.........for.meth.in.dir(handle
53ea0 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d 65 74 68 20 69 6e 20 5b 22 72 65 64 r):.............if.meth.in.["red
53ec0 69 72 65 63 74 5f 72 65 71 75 65 73 74 22 2c 20 22 64 6f 5f 6f 70 65 6e 22 2c 20 22 70 72 6f 78 irect_request",."do_open",."prox
53ee0 79 5f 6f 70 65 6e 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6f 6f 70 73 y_open"]:.................#.oops
53f00 2c 20 63 6f 69 6e 63 69 64 65 6e 74 61 6c 20 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 ,.coincidental.match............
53f20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 6d .....continue..............i.=.m
53f40 65 74 68 2e 66 69 6e 64 28 22 5f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 eth.find("_").............protoc
53f60 6f 6c 20 3d 20 6d 65 74 68 5b 3a 69 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 64 69 74 ol.=.meth[:i].............condit
53f80 69 6f 6e 20 3d 20 6d 65 74 68 5b 69 2b 31 3a 5d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ion.=.meth[i+1:]..............if
53fa0 20 63 6f 6e 64 69 74 69 6f 6e 2e 73 74 61 72 74 73 77 69 74 68 28 22 65 72 72 6f 72 22 29 3a 0a .condition.startswith("error"):.
53fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 20 3d 20 63 6f 6e 64 69 74 69 6f 6e 2e 66 69 ................j.=.condition.fi
53fe0 6e 64 28 22 5f 22 29 20 2b 20 69 20 2b 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nd("_").+.i.+.1.................
54000 6b 69 6e 64 20 3d 20 6d 65 74 68 5b 6a 2b 31 3a 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kind.=.meth[j+1:]...............
54020 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 ..try:.....................kind.
54040 3d 20 69 6e 74 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 =.int(kind).................exce
54060 70 74 20 56 61 6c 75 65 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pt.ValueError:..................
54080 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6f 6b 75 70 20 3d ...pass.................lookup.=
540a0 20 73 65 6c 66 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 2e 67 65 74 28 70 72 6f 74 6f 63 6f 6c 2c .self.handle_error.get(protocol,
540c0 20 7b 7d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 61 6e 64 6c 65 .{}).................self.handle
540e0 5f 65 72 72 6f 72 5b 70 72 6f 74 6f 63 6f 6c 5d 20 3d 20 6c 6f 6f 6b 75 70 0a 20 20 20 20 20 20 _error[protocol].=.lookup.......
54100 20 20 20 20 20 20 65 6c 69 66 20 63 6f 6e 64 69 74 69 6f 6e 20 3d 3d 20 22 6f 70 65 6e 22 3a 0a ......elif.condition.==."open":.
54120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 20 70 72 6f 74 6f 63 6f 6c 0a ................kind.=.protocol.
54140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6f 6b 75 70 20 3d 20 73 65 6c 66 2e 68 61 ................lookup.=.self.ha
54160 6e 64 6c 65 5f 6f 70 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 63 6f 6e 64 69 ndle_open.............elif.condi
54180 74 69 6f 6e 20 3d 3d 20 22 72 65 73 70 6f 6e 73 65 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 tion.==."response":.............
541a0 20 20 20 20 6b 69 6e 64 20 3d 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....kind.=.protocol.............
541c0 20 20 20 20 6c 6f 6f 6b 75 70 20 3d 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 73 70 6f 6e ....lookup.=.self.process_respon
541e0 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 63 6f 6e 64 69 74 69 6f 6e 20 3d 3d se.............elif.condition.==
54200 20 22 72 65 71 75 65 73 74 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 ."request":.................kind
54220 20 3d 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6f 6b .=.protocol.................look
54240 75 70 20 3d 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 up.=.self.process_request.......
54260 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 ......else:.................cont
54280 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 72 73 20 3d 20 6c 6f 6f inue..............handlers.=.loo
542a0 6b 75 70 2e 73 65 74 64 65 66 61 75 6c 74 28 6b 69 6e 64 2c 20 5b 5d 29 0a 20 20 20 20 20 20 20 kup.setdefault(kind,.[])........
542c0 20 20 20 20 20 69 66 20 68 61 6e 64 6c 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....if.handlers:...............
542e0 20 20 62 69 73 65 63 74 2e 69 6e 73 6f 72 74 28 68 61 6e 64 6c 65 72 73 2c 20 68 61 6e 64 6c 65 ..bisect.insort(handlers,.handle
54300 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 r).............else:............
54320 20 20 20 20 20 68 61 6e 64 6c 65 72 73 2e 61 70 70 65 6e 64 28 68 61 6e 64 6c 65 72 29 0a 20 20 .....handlers.append(handler)...
54340 20 20 20 20 20 20 20 20 20 20 61 64 64 65 64 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 ..........added.=.True..........
54360 69 66 20 61 64 64 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 69 73 65 63 74 2e 69 6e 73 if.added:.............bisect.ins
54380 6f 72 74 28 73 65 6c 66 2e 68 61 6e 64 6c 65 72 73 2c 20 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 ort(self.handlers,.handler).....
543a0 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 72 2e 61 64 64 5f 70 61 72 65 6e 74 28 73 65 6c 66 29 ........handler.add_parent(self)
543c0 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 ......def.close(self):.........#
543e0 20 4f 6e 6c 79 20 65 78 69 73 74 73 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 .Only.exists.for.backwards.compa
54400 74 69 62 69 6c 69 74 79 2e 0a 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 20 20 64 65 66 20 tibility..........pass......def.
54420 5f 63 61 6c 6c 5f 63 68 61 69 6e 28 73 65 6c 66 2c 20 63 68 61 69 6e 2c 20 6b 69 6e 64 2c 20 6d _call_chain(self,.chain,.kind,.m
54440 65 74 68 5f 6e 61 6d 65 2c 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 48 61 6e 64 eth_name,.*args):.........#.Hand
54460 6c 65 72 73 20 72 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 6e 6f 20 6f 6e lers.raise.an.exception.if.no.on
54480 65 20 65 6c 73 65 20 73 68 6f 75 6c 64 20 74 72 79 20 74 6f 20 68 61 6e 64 6c 65 0a 20 20 20 20 e.else.should.try.to.handle.....
544a0 20 20 20 20 23 20 74 68 65 20 72 65 71 75 65 73 74 2c 20 6f 72 20 72 65 74 75 72 6e 20 4e 6f 6e ....#.the.request,.or.return.Non
544c0 65 20 69 66 20 74 68 65 79 20 63 61 6e 27 74 20 62 75 74 20 61 6e 6f 74 68 65 72 20 68 61 6e 64 e.if.they.can't.but.another.hand
544e0 6c 65 72 0a 20 20 20 20 20 20 20 20 23 20 63 6f 75 6c 64 2e 20 20 4f 74 68 65 72 77 69 73 65 2c ler.........#.could...Otherwise,
54500 20 74 68 65 79 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 20 20 20 20 20 .they.return.the.response.......
54520 20 20 20 68 61 6e 64 6c 65 72 73 20 3d 20 63 68 61 69 6e 2e 67 65 74 28 6b 69 6e 64 2c 20 28 29 ...handlers.=.chain.get(kind,.()
54540 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 68 61 6e 64 6c 65 72 20 69 6e 20 68 61 6e 64 6c 65 72 ).........for.handler.in.handler
54560 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 20 3d 20 67 65 74 61 74 74 72 28 68 61 s:.............func.=.getattr(ha
54580 6e 64 6c 65 72 2c 20 6d 65 74 68 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ndler,.meth_name).............re
545a0 73 75 6c 74 20 3d 20 66 75 6e 63 28 2a 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 sult.=.func(*args).............i
545c0 66 20 72 65 73 75 6c 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 f.result.is.not.None:...........
545e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 ......return.result......def.ope
54600 6e 28 73 65 6c 66 2c 20 66 75 6c 6c 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 20 74 69 6d 65 n(self,.fullurl,.data=None,.time
54620 6f 75 74 3d 73 6f 63 6b 65 74 2e 5f 47 4c 4f 42 41 4c 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f out=socket._GLOBAL_DEFAULT_TIMEO
54640 55 54 29 3a 0a 20 20 20 20 20 20 20 20 23 20 61 63 63 65 70 74 20 61 20 55 52 4c 20 6f 72 20 61 UT):.........#.accept.a.URL.or.a
54660 20 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 .Request.object.........if.isins
54680 74 61 6e 63 65 28 66 75 6c 6c 75 72 6c 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 tance(fullurl,.str):............
546a0 20 72 65 71 20 3d 20 52 65 71 75 65 73 74 28 66 75 6c 6c 75 72 6c 2c 20 64 61 74 61 29 0a 20 20 .req.=.Request(fullurl,.data)...
546c0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 20 3d 20 66 75 ......else:.............req.=.fu
546e0 6c 6c 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f 74 llurl.............if.data.is.not
54700 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 2e 64 61 74 61 20 .None:.................req.data.
54720 3d 20 64 61 74 61 0a 0a 20 20 20 20 20 20 20 20 72 65 71 2e 74 69 6d 65 6f 75 74 20 3d 20 74 69 =.data..........req.timeout.=.ti
54740 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 20 3d 20 72 65 71 2e 74 79 70 meout.........protocol.=.req.typ
54760 65 0a 0a 20 20 20 20 20 20 20 20 23 20 70 72 65 2d 70 72 6f 63 65 73 73 20 72 65 71 75 65 73 74 e..........#.pre-process.request
54780 0a 20 20 20 20 20 20 20 20 6d 65 74 68 5f 6e 61 6d 65 20 3d 20 70 72 6f 74 6f 63 6f 6c 2b 22 5f .........meth_name.=.protocol+"_
547a0 72 65 71 75 65 73 74 22 0a 20 20 20 20 20 20 20 20 66 6f 72 20 70 72 6f 63 65 73 73 6f 72 20 69 request".........for.processor.i
547c0 6e 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 71 75 65 73 74 2e 67 65 74 28 70 72 6f 74 6f n.self.process_request.get(proto
547e0 63 6f 6c 2c 20 5b 5d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 20 3d 20 67 65 74 col,.[]):.............meth.=.get
54800 61 74 74 72 28 70 72 6f 63 65 73 73 6f 72 2c 20 6d 65 74 68 5f 6e 61 6d 65 29 0a 20 20 20 20 20 attr(processor,.meth_name)......
54820 20 20 20 20 20 20 20 72 65 71 20 3d 20 6d 65 74 68 28 72 65 71 29 0a 0a 20 20 20 20 20 20 20 20 .......req.=.meth(req)..........
54840 72 65 73 70 6f 6e 73 65 20 3d 20 73 65 6c 66 2e 5f 6f 70 65 6e 28 72 65 71 2c 20 64 61 74 61 29 response.=.self._open(req,.data)
54860 0a 0a 20 20 20 20 20 20 20 20 23 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 20 72 65 73 70 6f 6e 73 ..........#.post-process.respons
54880 65 0a 20 20 20 20 20 20 20 20 6d 65 74 68 5f 6e 61 6d 65 20 3d 20 70 72 6f 74 6f 63 6f 6c 2b 22 e.........meth_name.=.protocol+"
548a0 5f 72 65 73 70 6f 6e 73 65 22 0a 20 20 20 20 20 20 20 20 66 6f 72 20 70 72 6f 63 65 73 73 6f 72 _response".........for.processor
548c0 20 69 6e 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 73 70 6f 6e 73 65 2e 67 65 74 28 70 72 .in.self.process_response.get(pr
548e0 6f 74 6f 63 6f 6c 2c 20 5b 5d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 20 3d 20 otocol,.[]):.............meth.=.
54900 67 65 74 61 74 74 72 28 70 72 6f 63 65 73 73 6f 72 2c 20 6d 65 74 68 5f 6e 61 6d 65 29 0a 20 20 getattr(processor,.meth_name)...
54920 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 3d 20 6d 65 74 68 28 72 65 71 2c 20 72 ..........response.=.meth(req,.r
54940 65 73 70 6f 6e 73 65 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 6f 6e 73 esponse)..........return.respons
54960 65 0a 0a 20 20 20 20 64 65 66 20 5f 6f 70 65 6e 28 73 65 6c 66 2c 20 72 65 71 2c 20 64 61 74 61 e......def._open(self,.req,.data
54980 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 65 6c 66 2e 5f 63 =None):.........result.=.self._c
549a0 61 6c 6c 5f 63 68 61 69 6e 28 73 65 6c 66 2e 68 61 6e 64 6c 65 5f 6f 70 65 6e 2c 20 27 64 65 66 all_chain(self.handle_open,.'def
549c0 61 75 6c 74 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ault',..........................
549e0 20 20 20 20 20 20 20 20 20 27 64 65 66 61 75 6c 74 5f 6f 70 65 6e 27 2c 20 72 65 71 29 0a 20 20 .........'default_open',.req)...
54a00 20 20 20 20 20 20 69 66 20 72 65 73 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ......if.result:.............ret
54a20 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 20 3d 20 72 urn.result..........protocol.=.r
54a40 65 71 2e 74 79 70 65 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 65 6c 66 2e 5f 63 eq.type.........result.=.self._c
54a60 61 6c 6c 5f 63 68 61 69 6e 28 73 65 6c 66 2e 68 61 6e 64 6c 65 5f 6f 70 65 6e 2c 20 70 72 6f 74 all_chain(self.handle_open,.prot
54a80 6f 63 6f 6c 2c 20 70 72 6f 74 6f 63 6f 6c 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ocol,.protocol.+................
54aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 5f 6f 70 65 6e 27 2c 20 72 65 71 29 ...................'_open',.req)
54ac0 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 73 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .........if.result:.............
54ae0 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 return.result..........return.se
54b00 6c 66 2e 5f 63 61 6c 6c 5f 63 68 61 69 6e 28 73 65 6c 66 2e 68 61 6e 64 6c 65 5f 6f 70 65 6e 2c lf._call_chain(self.handle_open,
54b20 20 27 75 6e 6b 6e 6f 77 6e 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'unknown',.....................
54b40 20 20 20 20 20 20 20 20 20 20 20 20 27 75 6e 6b 6e 6f 77 6e 5f 6f 70 65 6e 27 2c 20 72 65 71 29 ............'unknown_open',.req)
54b60 0a 0a 20 20 20 20 64 65 66 20 65 72 72 6f 72 28 73 65 6c 66 2c 20 70 72 6f 74 6f 2c 20 2a 61 72 ......def.error(self,.proto,.*ar
54b80 67 73 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 74 6f 20 69 6e 20 28 27 68 74 74 70 27 gs):.........if.proto.in.('http'
54ba0 2c 20 27 68 74 74 70 73 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 58 58 58 20 68 74 ,.'https'):.............#.XXX.ht
54bc0 74 70 5b 73 5d 20 70 72 6f 74 6f 63 6f 6c 73 20 61 72 65 20 73 70 65 63 69 61 6c 2d 63 61 73 65 tp[s].protocols.are.special-case
54be0 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 63 74 20 3d 20 73 65 6c 66 2e 68 61 6e 64 6c 65 d.............dict.=.self.handle
54c00 5f 65 72 72 6f 72 5b 27 68 74 74 70 27 5d 20 23 20 68 74 74 70 73 20 69 73 20 6e 6f 74 20 64 69 _error['http'].#.https.is.not.di
54c20 66 66 65 72 65 6e 74 20 74 68 61 6e 20 68 74 74 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 fferent.than.http.............pr
54c40 6f 74 6f 20 3d 20 61 72 67 73 5b 32 5d 20 20 23 20 59 55 43 4b 21 0a 20 20 20 20 20 20 20 20 20 oto.=.args[2]..#.YUCK!..........
54c60 20 20 20 6d 65 74 68 5f 6e 61 6d 65 20 3d 20 27 68 74 74 70 5f 65 72 72 6f 72 5f 25 73 27 20 25 ...meth_name.=.'http_error_%s'.%
54c80 20 70 72 6f 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 5f 65 72 72 20 3d 20 31 0a .proto.............http_err.=.1.
54ca0 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 5f 61 72 67 73 20 3d 20 61 72 67 73 0a 20 20 20 ............orig_args.=.args....
54cc0 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 63 74 20 3d 20 73 65 .....else:.............dict.=.se
54ce0 6c 66 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 lf.handle_error.............meth
54d00 5f 6e 61 6d 65 20 3d 20 70 72 6f 74 6f 20 2b 20 27 5f 65 72 72 6f 72 27 0a 20 20 20 20 20 20 20 _name.=.proto.+.'_error'........
54d20 20 20 20 20 20 68 74 74 70 5f 65 72 72 20 3d 20 30 0a 20 20 20 20 20 20 20 20 61 72 67 73 20 3d .....http_err.=.0.........args.=
54d40 20 28 64 69 63 74 2c 20 70 72 6f 74 6f 2c 20 6d 65 74 68 5f 6e 61 6d 65 29 20 2b 20 61 72 67 73 .(dict,.proto,.meth_name).+.args
54d60 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 65 6c 66 2e 5f 63 61 6c 6c 5f 63 68 61 .........result.=.self._call_cha
54d80 69 6e 28 2a 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 73 75 6c 74 3a 0a 20 20 20 in(*args).........if.result:....
54da0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20 20 20 20 20 20 .........return.result..........
54dc0 69 66 20 68 74 74 70 5f 65 72 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 20 3d 20 if.http_err:.............args.=.
54de0 28 64 69 63 74 2c 20 27 64 65 66 61 75 6c 74 27 2c 20 27 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 (dict,.'default',.'http_error_de
54e00 66 61 75 6c 74 27 29 20 2b 20 6f 72 69 67 5f 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 fault').+.orig_args.............
54e20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 63 61 6c 6c 5f 63 68 61 69 6e 28 2a 61 72 67 73 29 0a 0a return.self._call_chain(*args)..
54e40 23 20 58 58 58 20 70 72 6f 62 61 62 6c 79 20 61 6c 73 6f 20 77 61 6e 74 20 61 6e 20 61 62 73 74 #.XXX.probably.also.want.an.abst
54e60 72 61 63 74 20 66 61 63 74 6f 72 79 20 74 68 61 74 20 6b 6e 6f 77 73 20 77 68 65 6e 20 69 74 20 ract.factory.that.knows.when.it.
54e80 6d 61 6b 65 73 0a 23 20 73 65 6e 73 65 20 74 6f 20 73 6b 69 70 20 61 20 73 75 70 65 72 63 6c 61 makes.#.sense.to.skip.a.supercla
54ea0 73 73 20 69 6e 20 66 61 76 6f 72 20 6f 66 20 61 20 73 75 62 63 6c 61 73 73 20 61 6e 64 20 77 68 ss.in.favor.of.a.subclass.and.wh
54ec0 65 6e 20 69 74 20 6d 69 67 68 74 0a 23 20 6d 61 6b 65 20 73 65 6e 73 65 20 74 6f 20 69 6e 63 6c en.it.might.#.make.sense.to.incl
54ee0 75 64 65 20 62 6f 74 68 0a 0a 64 65 66 20 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 2a 68 61 6e 64 ude.both..def.build_opener(*hand
54f00 6c 65 72 73 29 3a 0a 20 20 20 20 22 22 22 43 72 65 61 74 65 20 61 6e 20 6f 70 65 6e 65 72 20 6f lers):....."""Create.an.opener.o
54f20 62 6a 65 63 74 20 66 72 6f 6d 20 61 20 6c 69 73 74 20 6f 66 20 68 61 6e 64 6c 65 72 73 2e 0a 0a bject.from.a.list.of.handlers...
54f40 20 20 20 20 54 68 65 20 6f 70 65 6e 65 72 20 77 69 6c 6c 20 75 73 65 20 73 65 76 65 72 61 6c 20 ....The.opener.will.use.several.
54f60 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 73 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 75 70 70 default.handlers,.including.supp
54f80 6f 72 74 0a 20 20 20 20 66 6f 72 20 48 54 54 50 2c 20 46 54 50 20 61 6e 64 20 77 68 65 6e 20 61 ort.....for.HTTP,.FTP.and.when.a
54fa0 70 70 6c 69 63 61 62 6c 65 20 48 54 54 50 53 2e 0a 0a 20 20 20 20 49 66 20 61 6e 79 20 6f 66 20 pplicable.HTTPS.......If.any.of.
54fc0 74 68 65 20 68 61 6e 64 6c 65 72 73 20 70 61 73 73 65 64 20 61 73 20 61 72 67 75 6d 65 6e 74 73 the.handlers.passed.as.arguments
54fe0 20 61 72 65 20 73 75 62 63 6c 61 73 73 65 73 20 6f 66 20 74 68 65 0a 20 20 20 20 64 65 66 61 75 .are.subclasses.of.the.....defau
55000 6c 74 20 68 61 6e 64 6c 65 72 73 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 lt.handlers,.the.default.handler
55020 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 75 73 65 64 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 s.will.not.be.used......""".....
55040 6f 70 65 6e 65 72 20 3d 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 28 29 0a 20 20 20 20 64 65 opener.=.OpenerDirector().....de
55060 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 20 3d 20 5b 50 72 6f 78 79 48 61 6e 64 6c 65 72 2c 20 55 fault_classes.=.[ProxyHandler,.U
55080 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 48 54 54 50 48 61 6e 64 6c 65 72 2c 0a 20 20 20 20 nknownHandler,.HTTPHandler,.....
550a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 54 54 50 44 65 66 61 75 6c 74 45 72 ...................HTTPDefaultEr
550c0 72 6f 72 48 61 6e 64 6c 65 72 2c 20 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 2c rorHandler,.HTTPRedirectHandler,
550e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 54 50 48 61 6e 64 6c ........................FTPHandl
55100 65 72 2c 20 46 69 6c 65 48 61 6e 64 6c 65 72 2c 20 48 54 54 50 45 72 72 6f 72 50 72 6f 63 65 73 er,.FileHandler,.HTTPErrorProces
55120 73 6f 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 61 sor,........................Data
55140 48 61 6e 64 6c 65 72 5d 0a 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 68 74 74 70 2e 63 6c 69 Handler].....if.hasattr(http.cli
55160 65 6e 74 2c 20 22 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 22 29 3a 0a 20 20 20 20 20 20 20 ent,."HTTPSConnection"):........
55180 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 2e 61 70 70 65 6e 64 28 48 54 54 50 53 48 61 6e .default_classes.append(HTTPSHan
551a0 64 6c 65 72 29 0a 20 20 20 20 73 6b 69 70 20 3d 20 73 65 74 28 29 0a 20 20 20 20 66 6f 72 20 6b dler).....skip.=.set().....for.k
551c0 6c 61 73 73 20 69 6e 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 3a 0a 20 20 20 20 20 20 20 lass.in.default_classes:........
551e0 20 66 6f 72 20 63 68 65 63 6b 20 69 6e 20 68 61 6e 64 6c 65 72 73 3a 0a 20 20 20 20 20 20 20 20 .for.check.in.handlers:.........
55200 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 63 68 65 63 6b 2c 20 74 79 70 65 29 3a 0a ....if.isinstance(check,.type):.
55220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 73 75 62 63 6c 61 73 73 28 63 68 ................if.issubclass(ch
55240 65 63 6b 2c 20 6b 6c 61 73 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eck,.klass):....................
55260 20 73 6b 69 70 2e 61 64 64 28 6b 6c 61 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 .skip.add(klass).............eli
55280 66 20 69 73 69 6e 73 74 61 6e 63 65 28 63 68 65 63 6b 2c 20 6b 6c 61 73 73 29 3a 0a 20 20 20 20 f.isinstance(check,.klass):.....
552a0 20 20 20 20 20 20 20 20 20 20 20 20 73 6b 69 70 2e 61 64 64 28 6b 6c 61 73 73 29 0a 20 20 20 20 ............skip.add(klass).....
552c0 66 6f 72 20 6b 6c 61 73 73 20 69 6e 20 73 6b 69 70 3a 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 for.klass.in.skip:.........defau
552e0 6c 74 5f 63 6c 61 73 73 65 73 2e 72 65 6d 6f 76 65 28 6b 6c 61 73 73 29 0a 0a 20 20 20 20 66 6f lt_classes.remove(klass)......fo
55300 72 20 6b 6c 61 73 73 20 69 6e 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 3a 0a 20 20 20 20 r.klass.in.default_classes:.....
55320 20 20 20 20 6f 70 65 6e 65 72 2e 61 64 64 5f 68 61 6e 64 6c 65 72 28 6b 6c 61 73 73 28 29 29 0a ....opener.add_handler(klass()).
55340 0a 20 20 20 20 66 6f 72 20 68 20 69 6e 20 68 61 6e 64 6c 65 72 73 3a 0a 20 20 20 20 20 20 20 20 .....for.h.in.handlers:.........
55360 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 68 2c 20 74 79 70 65 29 3a 0a 20 20 20 20 20 20 20 20 if.isinstance(h,.type):.........
55380 20 20 20 20 68 20 3d 20 68 28 29 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 2e 61 64 64 5f 68 ....h.=.h().........opener.add_h
553a0 61 6e 64 6c 65 72 28 68 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 70 65 6e 65 72 0a 0a 63 6c 61 andler(h).....return.opener..cla
553c0 73 73 20 42 61 73 65 48 61 6e 64 6c 65 72 3a 0a 20 20 20 20 68 61 6e 64 6c 65 72 5f 6f 72 64 65 ss.BaseHandler:.....handler_orde
553e0 72 20 3d 20 35 30 30 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 70 61 72 65 6e 74 28 73 65 6c 66 r.=.500......def.add_parent(self
55400 2c 20 70 61 72 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 72 65 6e 74 20 3d ,.parent):.........self.parent.=
55420 20 70 61 72 65 6e 74 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 .parent......def.close(self):...
55440 20 20 20 20 20 20 23 20 4f 6e 6c 79 20 65 78 69 73 74 73 20 66 6f 72 20 62 61 63 6b 77 61 72 64 ......#.Only.exists.for.backward
55460 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 0a 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 s.compatibility.........pass....
55480 20 20 64 65 66 20 5f 5f 6c 74 5f 5f 28 73 65 6c 66 2c 20 6f 74 68 65 72 29 3a 0a 20 20 20 20 20 ..def.__lt__(self,.other):......
554a0 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 6f 74 68 65 72 2c 20 22 68 61 6e 64 6c 65 ...if.not.hasattr(other,."handle
554c0 72 5f 6f 72 64 65 72 22 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 72 79 20 74 6f 20 r_order"):.............#.Try.to.
554e0 70 72 65 73 65 72 76 65 20 74 68 65 20 6f 6c 64 20 62 65 68 61 76 69 6f 72 20 6f 66 20 68 61 76 preserve.the.old.behavior.of.hav
55500 69 6e 67 20 63 75 73 74 6f 6d 20 63 6c 61 73 73 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 ing.custom.classes.............#
55520 20 69 6e 73 65 72 74 65 64 20 61 66 74 65 72 20 64 65 66 61 75 6c 74 20 6f 6e 65 73 20 28 77 6f .inserted.after.default.ones.(wo
55540 72 6b 73 20 6f 6e 6c 79 20 66 6f 72 20 63 75 73 74 6f 6d 20 75 73 65 72 0a 20 20 20 20 20 20 20 rks.only.for.custom.user........
55560 20 20 20 20 20 23 20 63 6c 61 73 73 65 73 20 77 68 69 63 68 20 61 72 65 20 6e 6f 74 20 61 77 61 .....#.classes.which.are.not.awa
55580 72 65 20 6f 66 20 68 61 6e 64 6c 65 72 5f 6f 72 64 65 72 29 2e 0a 20 20 20 20 20 20 20 20 20 20 re.of.handler_order)............
555a0 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c ..return.True.........return.sel
555c0 66 2e 68 61 6e 64 6c 65 72 5f 6f 72 64 65 72 20 3c 20 6f 74 68 65 72 2e 68 61 6e 64 6c 65 72 5f f.handler_order.<.other.handler_
555e0 6f 72 64 65 72 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 45 72 72 6f 72 50 72 6f 63 65 73 73 6f 72 order...class.HTTPErrorProcessor
55600 28 42 61 73 65 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 22 22 22 50 72 6f 63 65 73 73 20 48 54 (BaseHandler):....."""Process.HT
55620 54 50 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65 73 2e 22 22 22 0a 20 20 20 20 68 61 6e 64 6c TP.error.responses.""".....handl
55640 65 72 5f 6f 72 64 65 72 20 3d 20 31 30 30 30 20 20 23 20 61 66 74 65 72 20 61 6c 6c 20 6f 74 68 er_order.=.1000..#.after.all.oth
55660 65 72 20 70 72 6f 63 65 73 73 69 6e 67 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 72 65 73 70 er.processing......def.http_resp
55680 6f 6e 73 65 28 73 65 6c 66 2c 20 72 65 71 75 65 73 74 2c 20 72 65 73 70 6f 6e 73 65 29 3a 0a 20 onse(self,.request,.response):..
556a0 20 20 20 20 20 20 20 63 6f 64 65 2c 20 6d 73 67 2c 20 68 64 72 73 20 3d 20 72 65 73 70 6f 6e 73 .......code,.msg,.hdrs.=.respons
556c0 65 2e 63 6f 64 65 2c 20 72 65 73 70 6f 6e 73 65 2e 6d 73 67 2c 20 72 65 73 70 6f 6e 73 65 2e 69 e.code,.response.msg,.response.i
556e0 6e 66 6f 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 52 46 nfo()..........#.According.to.RF
55700 43 20 32 36 31 36 2c 20 22 32 78 78 22 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 C.2616,."2xx".code.indicates.tha
55720 74 20 74 68 65 20 63 6c 69 65 6e 74 27 73 0a 20 20 20 20 20 20 20 20 23 20 72 65 71 75 65 73 74 t.the.client's.........#.request
55740 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 72 65 63 65 69 76 65 64 2c 20 75 6e 64 65 .was.successfully.received,.unde
55760 72 73 74 6f 6f 64 2c 20 61 6e 64 20 61 63 63 65 70 74 65 64 2e 0a 20 20 20 20 20 20 20 20 69 66 rstood,.and.accepted..........if
55780 20 6e 6f 74 20 28 32 30 30 20 3c 3d 20 63 6f 64 65 20 3c 20 33 30 30 29 3a 0a 20 20 20 20 20 20 .not.(200.<=.code.<.300):.......
557a0 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 3d 20 73 65 6c 66 2e 70 61 72 65 6e 74 2e 65 72 72 ......response.=.self.parent.err
557c0 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 68 74 74 70 27 2c 20 72 65 71 75 or(.................'http',.requ
557e0 65 73 74 2c 20 72 65 73 70 6f 6e 73 65 2c 20 63 6f 64 65 2c 20 6d 73 67 2c 20 68 64 72 73 29 0a est,.response,.code,.msg,.hdrs).
55800 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 6f 6e 73 65 0a 0a 20 20 20 20 68 74 .........return.response......ht
55820 74 70 73 5f 72 65 73 70 6f 6e 73 65 20 3d 20 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 0a 0a 63 6c tps_response.=.http_response..cl
55840 61 73 73 20 48 54 54 50 44 65 66 61 75 6c 74 45 72 72 6f 72 48 61 6e 64 6c 65 72 28 42 61 73 65 ass.HTTPDefaultErrorHandler(Base
55860 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 Handler):.....def.http_error_def
55880 61 75 6c 74 28 73 65 6c 66 2c 20 72 65 71 2c 20 66 70 2c 20 63 6f 64 65 2c 20 6d 73 67 2c 20 68 ault(self,.req,.fp,.code,.msg,.h
558a0 64 72 73 29 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 72 65 drs):.........raise.HTTPError(re
558c0 71 2e 66 75 6c 6c 5f 75 72 6c 2c 20 63 6f 64 65 2c 20 6d 73 67 2c 20 68 64 72 73 2c 20 66 70 29 q.full_url,.code,.msg,.hdrs,.fp)
558e0 0a 0a 63 6c 61 73 73 20 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 28 42 61 73 65 ..class.HTTPRedirectHandler(Base
55900 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 23 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f Handler):.....#.maximum.number.o
55920 66 20 72 65 64 69 72 65 63 74 69 6f 6e 73 20 74 6f 20 61 6e 79 20 73 69 6e 67 6c 65 20 55 52 4c f.redirections.to.any.single.URL
55940 0a 20 20 20 20 23 20 74 68 69 73 20 69 73 20 6e 65 65 64 65 64 20 62 65 63 61 75 73 65 20 6f 66 .....#.this.is.needed.because.of
55960 20 74 68 65 20 73 74 61 74 65 20 74 68 61 74 20 63 6f 6f 6b 69 65 73 20 69 6e 74 72 6f 64 75 63 .the.state.that.cookies.introduc
55980 65 0a 20 20 20 20 6d 61 78 5f 72 65 70 65 61 74 73 20 3d 20 34 0a 20 20 20 20 23 20 6d 61 78 69 e.....max_repeats.=.4.....#.maxi
559a0 6d 75 6d 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 64 69 72 65 63 74 69 6f 6e 73 mum.total.number.of.redirections
559c0 20 28 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 55 52 4c 29 20 62 65 66 6f 72 65 0a 20 20 20 20 .(regardless.of.URL).before.....
559e0 23 20 61 73 73 75 6d 69 6e 67 20 77 65 27 72 65 20 69 6e 20 61 20 6c 6f 6f 70 0a 20 20 20 20 6d #.assuming.we're.in.a.loop.....m
55a00 61 78 5f 72 65 64 69 72 65 63 74 69 6f 6e 73 20 3d 20 31 30 0a 0a 20 20 20 20 64 65 66 20 72 65 ax_redirections.=.10......def.re
55a20 64 69 72 65 63 74 5f 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 72 65 71 2c 20 66 70 2c 20 63 6f direct_request(self,.req,.fp,.co
55a40 64 65 2c 20 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 6e 65 77 75 72 6c 29 3a 0a 20 20 20 20 20 de,.msg,.headers,.newurl):......
55a60 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 52 65 71 75 65 73 74 20 6f 72 20 4e 6f 6e 65 20 69 ..."""Return.a.Request.or.None.i
55a80 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20 72 65 64 69 72 65 63 74 2e 0a 0a 20 20 20 20 20 n.response.to.a.redirect........
55aa0 20 20 20 54 68 69 73 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20 68 74 74 70 5f 65 72 ...This.is.called.by.the.http_er
55ac0 72 6f 72 5f 33 30 78 20 6d 65 74 68 6f 64 73 20 77 68 65 6e 20 61 0a 20 20 20 20 20 20 20 20 72 ror_30x.methods.when.a.........r
55ae0 65 64 69 72 65 63 74 69 6f 6e 20 72 65 73 70 6f 6e 73 65 20 69 73 20 72 65 63 65 69 76 65 64 2e edirection.response.is.received.
55b00 20 20 49 66 20 61 20 72 65 64 69 72 65 63 74 69 6f 6e 20 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 ..If.a.redirection.should.......
55b20 20 20 74 61 6b 65 20 70 6c 61 63 65 2c 20 72 65 74 75 72 6e 20 61 20 6e 65 77 20 52 65 71 75 65 ..take.place,.return.a.new.Reque
55b40 73 74 20 74 6f 20 61 6c 6c 6f 77 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 78 20 74 6f 0a 20 20 st.to.allow.http_error_30x.to...
55b60 20 20 20 20 20 20 70 65 72 66 6f 72 6d 20 74 68 65 20 72 65 64 69 72 65 63 74 2e 20 20 4f 74 68 ......perform.the.redirect...Oth
55b80 65 72 77 69 73 65 2c 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 20 69 66 20 6e 6f 2d 6f 6e erwise,.raise.HTTPError.if.no-on
55ba0 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 73 68 6f 75 6c 64 20 74 72 79 20 74 6f 20 68 61 6e e.........else.should.try.to.han
55bc0 64 6c 65 20 74 68 69 73 20 75 72 6c 2e 20 20 52 65 74 75 72 6e 20 4e 6f 6e 65 20 69 66 20 79 6f dle.this.url...Return.None.if.yo
55be0 75 20 63 61 6e 27 74 0a 20 20 20 20 20 20 20 20 62 75 74 20 61 6e 6f 74 68 65 72 20 48 61 6e 64 u.can't.........but.another.Hand
55c00 6c 65 72 20 6d 69 67 68 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d ler.might..........""".........m
55c20 20 3d 20 72 65 71 2e 67 65 74 5f 6d 65 74 68 6f 64 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 28 .=.req.get_method().........if.(
55c40 6e 6f 74 20 28 63 6f 64 65 20 69 6e 20 28 33 30 31 2c 20 33 30 32 2c 20 33 30 33 2c 20 33 30 37 not.(code.in.(301,.302,.303,.307
55c60 29 20 61 6e 64 20 6d 20 69 6e 20 28 22 47 45 54 22 2c 20 22 48 45 41 44 22 29 0a 20 20 20 20 20 ).and.m.in.("GET",."HEAD")......
55c80 20 20 20 20 20 20 20 6f 72 20 63 6f 64 65 20 69 6e 20 28 33 30 31 2c 20 33 30 32 2c 20 33 30 33 .......or.code.in.(301,.302,.303
55ca0 29 20 61 6e 64 20 6d 20 3d 3d 20 22 50 4f 53 54 22 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ).and.m.==."POST")):............
55cc0 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 2c 20 63 .raise.HTTPError(req.full_url,.c
55ce0 6f 64 65 2c 20 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 66 70 29 0a 0a 20 20 20 20 20 20 20 20 ode,.msg,.headers,.fp)..........
55d00 23 20 53 74 72 69 63 74 6c 79 20 28 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 52 46 43 20 32 36 31 #.Strictly.(according.to.RFC.261
55d20 36 29 2c 20 33 30 31 20 6f 72 20 33 30 32 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 0a 20 20 6),.301.or.302.in.response.to...
55d40 20 20 20 20 20 20 23 20 61 20 50 4f 53 54 20 4d 55 53 54 20 4e 4f 54 20 63 61 75 73 65 20 61 20 ......#.a.POST.MUST.NOT.cause.a.
55d60 72 65 64 69 72 65 63 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 6f 6e 66 69 72 6d 61 74 69 6f 6e redirection.without.confirmation
55d80 0a 20 20 20 20 20 20 20 20 23 20 66 72 6f 6d 20 74 68 65 20 75 73 65 72 20 28 6f 66 20 75 72 6c .........#.from.the.user.(of.url
55da0 6c 69 62 2e 72 65 71 75 65 73 74 2c 20 69 6e 20 74 68 69 73 20 63 61 73 65 29 2e 20 20 49 6e 20 lib.request,.in.this.case)...In.
55dc0 70 72 61 63 74 69 63 65 2c 0a 20 20 20 20 20 20 20 20 23 20 65 73 73 65 6e 74 69 61 6c 6c 79 20 practice,.........#.essentially.
55de0 61 6c 6c 20 63 6c 69 65 6e 74 73 20 64 6f 20 72 65 64 69 72 65 63 74 20 69 6e 20 74 68 69 73 20 all.clients.do.redirect.in.this.
55e00 63 61 73 65 2c 20 73 6f 20 77 65 20 64 6f 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 73 61 6d case,.so.we.do.........#.the.sam
55e20 65 2e 0a 0a 20 20 20 20 20 20 20 20 23 20 42 65 20 63 6f 6e 63 69 6c 69 61 6e 74 20 77 69 74 68 e...........#.Be.conciliant.with
55e40 20 55 52 49 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 70 61 63 65 2e 20 20 54 68 69 73 20 .URIs.containing.a.space...This.
55e60 69 73 20 6d 61 69 6e 6c 79 0a 20 20 20 20 20 20 20 20 23 20 72 65 64 75 6e 64 61 6e 74 20 77 69 is.mainly.........#.redundant.wi
55e80 74 68 20 74 68 65 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 74 65 20 65 6e 63 6f 64 69 6e 67 20 64 6f th.the.more.complete.encoding.do
55ea0 6e 65 20 69 6e 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 28 29 2c 0a 20 20 20 20 20 20 20 20 ne.in.http_error_302(),.........
55ec0 23 20 62 75 74 20 69 74 20 69 73 20 6b 65 70 74 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 #.but.it.is.kept.for.compatibili
55ee0 74 79 20 77 69 74 68 20 6f 74 68 65 72 20 63 61 6c 6c 65 72 73 2e 0a 20 20 20 20 20 20 20 20 6e ty.with.other.callers..........n
55f00 65 77 75 72 6c 20 3d 20 6e 65 77 75 72 6c 2e 72 65 70 6c 61 63 65 28 27 20 27 2c 20 27 25 32 30 ewurl.=.newurl.replace('.',.'%20
55f20 27 29 0a 0a 20 20 20 20 20 20 20 20 43 4f 4e 54 45 4e 54 5f 48 45 41 44 45 52 53 20 3d 20 28 22 ')..........CONTENT_HEADERS.=.("
55f40 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 22 2c 20 22 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 29 content-length",."content-type")
55f60 0a 20 20 20 20 20 20 20 20 6e 65 77 68 65 61 64 65 72 73 20 3d 20 7b 6b 3a 20 76 20 66 6f 72 20 .........newheaders.=.{k:.v.for.
55f80 6b 2c 20 76 20 69 6e 20 72 65 71 2e 68 65 61 64 65 72 73 2e 69 74 65 6d 73 28 29 0a 20 20 20 20 k,.v.in.req.headers.items().....
55fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 2e 6c 6f 77 65 72 28 29 20 6e ..................if.k.lower().n
55fc0 6f 74 20 69 6e 20 43 4f 4e 54 45 4e 54 5f 48 45 41 44 45 52 53 7d 0a 20 20 20 20 20 20 20 20 72 ot.in.CONTENT_HEADERS}.........r
55fe0 65 74 75 72 6e 20 52 65 71 75 65 73 74 28 6e 65 77 75 72 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 eturn.Request(newurl,...........
56000 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 3d 6e 65 77 68 65 61 64 65 72 73 2c .............headers=newheaders,
56020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 69 6e 5f 72 ........................origin_r
56040 65 71 5f 68 6f 73 74 3d 72 65 71 2e 6f 72 69 67 69 6e 5f 72 65 71 5f 68 6f 73 74 2c 0a 20 20 20 eq_host=req.origin_req_host,....
56060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 76 65 72 69 66 69 61 62 6c 65 ....................unverifiable
56080 3d 54 72 75 65 29 0a 0a 20 20 20 20 23 20 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 6f 74 =True)......#.Implementation.not
560a0 65 3a 20 54 6f 20 61 76 6f 69 64 20 74 68 65 20 73 65 72 76 65 72 20 73 65 6e 64 69 6e 67 20 75 e:.To.avoid.the.server.sending.u
560c0 73 20 69 6e 74 6f 20 61 6e 0a 20 20 20 20 23 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 2c 20 74 s.into.an.....#.infinite.loop,.t
560e0 68 65 20 72 65 71 75 65 73 74 20 6f 62 6a 65 63 74 20 6e 65 65 64 73 20 74 6f 20 74 72 61 63 6b he.request.object.needs.to.track
56100 20 77 68 61 74 20 55 52 4c 73 20 77 65 0a 20 20 20 20 23 20 68 61 76 65 20 61 6c 72 65 61 64 79 .what.URLs.we.....#.have.already
56120 20 73 65 65 6e 2e 20 20 44 6f 20 74 68 69 73 20 62 79 20 61 64 64 69 6e 67 20 61 20 68 61 6e 64 .seen...Do.this.by.adding.a.hand
56140 6c 65 72 2d 73 70 65 63 69 66 69 63 0a 20 20 20 20 23 20 61 74 74 72 69 62 75 74 65 20 74 6f 20 ler-specific.....#.attribute.to.
56160 74 68 65 20 52 65 71 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 64 65 66 20 68 74 74 70 the.Request.object......def.http
56180 5f 65 72 72 6f 72 5f 33 30 32 28 73 65 6c 66 2c 20 72 65 71 2c 20 66 70 2c 20 63 6f 64 65 2c 20 _error_302(self,.req,.fp,.code,.
561a0 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 53 6f 6d 65 20 73 65 msg,.headers):.........#.Some.se
561c0 72 76 65 72 73 20 28 69 6e 63 6f 72 72 65 63 74 6c 79 29 20 72 65 74 75 72 6e 20 6d 75 6c 74 69 rvers.(incorrectly).return.multi
561e0 70 6c 65 20 4c 6f 63 61 74 69 6f 6e 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 23 20 28 ple.Location.headers.........#.(
56200 73 6f 20 70 72 6f 62 61 62 6c 79 20 73 61 6d 65 20 67 6f 65 73 20 66 6f 72 20 55 52 49 29 2e 20 so.probably.same.goes.for.URI)..
56220 20 55 73 65 20 66 69 72 73 74 20 68 65 61 64 65 72 2e 0a 20 20 20 20 20 20 20 20 69 66 20 22 6c .Use.first.header..........if."l
56240 6f 63 61 74 69 6f 6e 22 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ocation".in.headers:............
56260 20 6e 65 77 75 72 6c 20 3d 20 68 65 61 64 65 72 73 5b 22 6c 6f 63 61 74 69 6f 6e 22 5d 0a 20 20 .newurl.=.headers["location"]...
56280 20 20 20 20 20 20 65 6c 69 66 20 22 75 72 69 22 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 ......elif."uri".in.headers:....
562a0 20 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 68 65 61 64 65 72 73 5b 22 75 72 69 22 5d .........newurl.=.headers["uri"]
562c0 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 .........else:.............retur
562e0 6e 0a 0a 20 20 20 20 20 20 20 20 23 20 66 69 78 20 61 20 70 6f 73 73 69 62 6c 65 20 6d 61 6c 66 n..........#.fix.a.possible.malf
56300 6f 72 6d 65 64 20 55 52 4c 0a 20 20 20 20 20 20 20 20 75 72 6c 70 61 72 74 73 20 3d 20 75 72 6c ormed.URL.........urlparts.=.url
56320 70 61 72 73 65 28 6e 65 77 75 72 6c 29 0a 0a 20 20 20 20 20 20 20 20 23 20 46 6f 72 20 73 65 63 parse(newurl)..........#.For.sec
56340 75 72 69 74 79 20 72 65 61 73 6f 6e 73 20 77 65 20 64 6f 6e 27 74 20 61 6c 6c 6f 77 20 72 65 64 urity.reasons.we.don't.allow.red
56360 69 72 65 63 74 69 6f 6e 20 74 6f 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 20 20 20 irection.to.anything.other......
56380 20 20 20 23 20 74 68 61 6e 20 68 74 74 70 2c 20 68 74 74 70 73 20 6f 72 20 66 74 70 2e 0a 0a 20 ...#.than.http,.https.or.ftp....
563a0 20 20 20 20 20 20 20 69 66 20 75 72 6c 70 61 72 74 73 2e 73 63 68 65 6d 65 20 6e 6f 74 20 69 6e .......if.urlparts.scheme.not.in
563c0 20 28 27 68 74 74 70 27 2c 20 27 68 74 74 70 73 27 2c 20 27 66 74 70 27 2c 20 27 27 29 3a 0a 20 .('http',.'https',.'ftp',.''):..
563e0 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 0a 20 20 20 20 ...........raise.HTTPError(.....
56400 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 2c 20 63 6f 64 65 2c 0a 20 20 20 20 20 20 ............newurl,.code,.......
56420 20 20 20 20 20 20 20 20 20 20 22 25 73 20 2d 20 52 65 64 69 72 65 63 74 69 6f 6e 20 74 6f 20 75 .........."%s.-.Redirection.to.u
56440 72 6c 20 27 25 73 27 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 22 20 25 20 28 6d 73 67 2c 20 rl.'%s'.is.not.allowed".%.(msg,.
56460 6e 65 77 75 72 6c 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 newurl),.................headers
56480 2c 20 66 70 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 75 72 6c 70 61 72 74 73 2e 70 ,.fp)..........if.not.urlparts.p
564a0 61 74 68 20 61 6e 64 20 75 72 6c 70 61 72 74 73 2e 6e 65 74 6c 6f 63 3a 0a 20 20 20 20 20 20 20 ath.and.urlparts.netloc:........
564c0 20 20 20 20 20 75 72 6c 70 61 72 74 73 20 3d 20 6c 69 73 74 28 75 72 6c 70 61 72 74 73 29 0a 20 .....urlparts.=.list(urlparts)..
564e0 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 70 61 72 74 73 5b 32 5d 20 3d 20 22 2f 22 0a 20 20 20 ...........urlparts[2].=."/"....
56500 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 75 72 6c 75 6e 70 61 72 73 65 28 75 72 6c 70 61 72 74 .....newurl.=.urlunparse(urlpart
56520 73 29 0a 0a 20 20 20 20 20 20 20 20 23 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e 70 61 72 73 65 5f s)..........#.http.client.parse_
56540 68 65 61 64 65 72 73 28 29 20 64 65 63 6f 64 65 73 20 61 73 20 49 53 4f 2d 38 38 35 39 2d 31 2e headers().decodes.as.ISO-8859-1.
56560 20 20 52 65 63 6f 76 65 72 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 20 6f 72 69 67 69 6e 61 6c ..Recover.the.........#.original
56580 20 62 79 74 65 73 20 61 6e 64 20 70 65 72 63 65 6e 74 2d 65 6e 63 6f 64 65 20 6e 6f 6e 2d 41 53 .bytes.and.percent-encode.non-AS
565a0 43 49 49 20 62 79 74 65 73 2c 20 61 6e 64 20 61 6e 79 20 73 70 65 63 69 61 6c 0a 20 20 20 20 20 CII.bytes,.and.any.special......
565c0 20 20 20 23 20 63 68 61 72 61 63 74 65 72 73 20 73 75 63 68 20 61 73 20 74 68 65 20 73 70 61 63 ...#.characters.such.as.the.spac
565e0 65 2e 0a 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 71 75 6f 74 65 28 0a 20 20 20 20 20 e..........newurl.=.quote(......
56600 20 20 20 20 20 20 20 6e 65 77 75 72 6c 2c 20 65 6e 63 6f 64 69 6e 67 3d 22 69 73 6f 2d 38 38 35 .......newurl,.encoding="iso-885
56620 39 2d 31 22 2c 20 73 61 66 65 3d 73 74 72 69 6e 67 2e 70 75 6e 63 74 75 61 74 69 6f 6e 29 0a 20 9-1",.safe=string.punctuation)..
56640 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 75 72 6c 6a 6f 69 6e 28 72 65 71 2e 66 75 6c 6c .......newurl.=.urljoin(req.full
56660 5f 75 72 6c 2c 20 6e 65 77 75 72 6c 29 0a 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 50 72 6f _url,.newurl)..........#.XXX.Pro
56680 62 61 62 6c 79 20 77 61 6e 74 20 74 6f 20 66 6f 72 67 65 74 20 61 62 6f 75 74 20 74 68 65 20 73 bably.want.to.forget.about.the.s
566a0 74 61 74 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0a 20 20 20 20 20 20 20 20 23 20 72 65 tate.of.the.current.........#.re
566c0 71 75 65 73 74 2c 20 61 6c 74 68 6f 75 67 68 20 74 68 61 74 20 6d 69 67 68 74 20 69 6e 74 65 72 quest,.although.that.might.inter
566e0 61 63 74 20 70 6f 6f 72 6c 79 20 77 69 74 68 20 6f 74 68 65 72 0a 20 20 20 20 20 20 20 20 23 20 act.poorly.with.other.........#.
56700 68 61 6e 64 6c 65 72 73 20 74 68 61 74 20 61 6c 73 6f 20 75 73 65 20 68 61 6e 64 6c 65 72 2d 73 handlers.that.also.use.handler-s
56720 70 65 63 69 66 69 63 20 72 65 71 75 65 73 74 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 20 20 pecific.request.attributes......
56740 20 20 20 6e 65 77 20 3d 20 73 65 6c 66 2e 72 65 64 69 72 65 63 74 5f 72 65 71 75 65 73 74 28 72 ...new.=.self.redirect_request(r
56760 65 71 2c 20 66 70 2c 20 63 6f 64 65 2c 20 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 6e 65 77 75 eq,.fp,.code,.msg,.headers,.newu
56780 72 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 65 77 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 rl).........if.new.is.None:.....
567a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 20 20 20 20 23 20 6c 6f 6f 70 20 64 ........return..........#.loop.d
567c0 65 74 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 23 20 2e 72 65 64 69 72 65 63 74 5f 64 69 63 etection.........#..redirect_dic
567e0 74 20 68 61 73 20 61 20 6b 65 79 20 75 72 6c 20 69 66 20 75 72 6c 20 77 61 73 20 70 72 65 76 69 t.has.a.key.url.if.url.was.previ
56800 6f 75 73 6c 79 20 76 69 73 69 74 65 64 2e 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 ously.visited..........if.hasatt
56820 72 28 72 65 71 2c 20 27 72 65 64 69 72 65 63 74 5f 64 69 63 74 27 29 3a 0a 20 20 20 20 20 20 20 r(req,.'redirect_dict'):........
56840 20 20 20 20 20 76 69 73 69 74 65 64 20 3d 20 6e 65 77 2e 72 65 64 69 72 65 63 74 5f 64 69 63 74 .....visited.=.new.redirect_dict
56860 20 3d 20 72 65 71 2e 72 65 64 69 72 65 63 74 5f 64 69 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 .=.req.redirect_dict............
56880 20 69 66 20 28 76 69 73 69 74 65 64 2e 67 65 74 28 6e 65 77 75 72 6c 2c 20 30 29 20 3e 3d 20 73 .if.(visited.get(newurl,.0).>=.s
568a0 65 6c 66 2e 6d 61 78 5f 72 65 70 65 61 74 73 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 elf.max_repeats.or..............
568c0 20 20 20 6c 65 6e 28 76 69 73 69 74 65 64 29 20 3e 3d 20 73 65 6c 66 2e 6d 61 78 5f 72 65 64 69 ...len(visited).>=.self.max_redi
568e0 72 65 63 74 69 6f 6e 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 rections):.................raise
56900 20 48 54 54 50 45 72 72 6f 72 28 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 2c 20 63 6f 64 65 2c 0a 20 .HTTPError(req.full_url,.code,..
56920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 ...............................s
56940 65 6c 66 2e 69 6e 66 5f 6d 73 67 20 2b 20 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 66 70 29 0a elf.inf_msg.+.msg,.headers,.fp).
56960 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 69 73 69 74 65 ........else:.............visite
56980 64 20 3d 20 6e 65 77 2e 72 65 64 69 72 65 63 74 5f 64 69 63 74 20 3d 20 72 65 71 2e 72 65 64 69 d.=.new.redirect_dict.=.req.redi
569a0 72 65 63 74 5f 64 69 63 74 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 76 69 73 69 74 65 64 5b 6e rect_dict.=.{}.........visited[n
569c0 65 77 75 72 6c 5d 20 3d 20 76 69 73 69 74 65 64 2e 67 65 74 28 6e 65 77 75 72 6c 2c 20 30 29 20 ewurl].=.visited.get(newurl,.0).
569e0 2b 20 31 0a 0a 20 20 20 20 20 20 20 20 23 20 44 6f 6e 27 74 20 63 6c 6f 73 65 20 74 68 65 20 66 +.1..........#.Don't.close.the.f
56a00 70 20 75 6e 74 69 6c 20 77 65 20 61 72 65 20 73 75 72 65 20 74 68 61 74 20 77 65 20 77 6f 6e 27 p.until.we.are.sure.that.we.won'
56a20 74 20 75 73 65 20 69 74 0a 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 48 54 54 50 45 72 72 6f t.use.it.........#.with.HTTPErro
56a40 72 2e 0a 20 20 20 20 20 20 20 20 66 70 2e 72 65 61 64 28 29 0a 20 20 20 20 20 20 20 20 66 70 2e r..........fp.read().........fp.
56a60 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 61 72 close()..........return.self.par
56a80 65 6e 74 2e 6f 70 65 6e 28 6e 65 77 2c 20 74 69 6d 65 6f 75 74 3d 72 65 71 2e 74 69 6d 65 6f 75 ent.open(new,.timeout=req.timeou
56aa0 74 29 0a 0a 20 20 20 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 31 20 3d 20 68 74 74 70 5f 65 72 t)......http_error_301.=.http_er
56ac0 72 6f 72 5f 33 30 33 20 3d 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 37 20 3d 20 68 74 74 70 5f ror_303.=.http_error_307.=.http_
56ae0 65 72 72 6f 72 5f 33 30 32 0a 0a 20 20 20 20 69 6e 66 5f 6d 73 67 20 3d 20 22 54 68 65 20 48 54 error_302......inf_msg.=."The.HT
56b00 54 50 20 73 65 72 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 72 65 64 69 72 65 63 74 20 65 72 TP.server.returned.a.redirect.er
56b20 72 6f 72 20 74 68 61 74 20 77 6f 75 6c 64 20 22 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ror.that.would.".\..............
56b40 20 22 6c 65 61 64 20 74 6f 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 2e 5c 6e 22 20 5c ."lead.to.an.infinite.loop.\n".\
56b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 54 68 65 20 6c 61 73 74 20 33 30 78 20 65 72 72 ..............."The.last.30x.err
56b80 6f 72 20 6d 65 73 73 61 67 65 20 77 61 73 3a 5c 6e 22 0a 0a 0a 64 65 66 20 5f 70 61 72 73 65 5f or.message.was:\n"...def._parse_
56ba0 70 72 6f 78 79 28 70 72 6f 78 79 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 28 73 63 68 proxy(proxy):....."""Return.(sch
56bc0 65 6d 65 2c 20 75 73 65 72 2c 20 70 61 73 73 77 6f 72 64 2c 20 68 6f 73 74 2f 70 6f 72 74 29 20 eme,.user,.password,.host/port).
56be0 67 69 76 65 6e 20 61 20 55 52 4c 20 6f 72 20 61 6e 20 61 75 74 68 6f 72 69 74 79 2e 0a 0a 20 20 given.a.URL.or.an.authority.....
56c00 20 20 49 66 20 61 20 55 52 4c 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20 69 74 20 6d 75 73 74 20 ..If.a.URL.is.supplied,.it.must.
56c20 68 61 76 65 20 61 6e 20 61 75 74 68 6f 72 69 74 79 20 28 68 6f 73 74 3a 70 6f 72 74 29 20 63 6f have.an.authority.(host:port).co
56c40 6d 70 6f 6e 65 6e 74 2e 0a 20 20 20 20 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 52 46 43 20 33 39 mponent......According.to.RFC.39
56c60 38 36 2c 20 68 61 76 69 6e 67 20 61 6e 20 61 75 74 68 6f 72 69 74 79 20 63 6f 6d 70 6f 6e 65 6e 86,.having.an.authority.componen
56c80 74 20 6d 65 61 6e 73 20 74 68 65 20 55 52 4c 20 6d 75 73 74 0a 20 20 20 20 68 61 76 65 20 74 77 t.means.the.URL.must.....have.tw
56ca0 6f 20 73 6c 61 73 68 65 73 20 61 66 74 65 72 20 74 68 65 20 73 63 68 65 6d 65 2e 0a 20 20 20 20 o.slashes.after.the.scheme......
56cc0 22 22 22 0a 20 20 20 20 73 63 68 65 6d 65 2c 20 72 5f 73 63 68 65 6d 65 20 3d 20 73 70 6c 69 74 """.....scheme,.r_scheme.=.split
56ce0 74 79 70 65 28 70 72 6f 78 79 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 72 5f 73 63 68 65 6d 65 2e type(proxy).....if.not.r_scheme.
56d00 73 74 61 72 74 73 77 69 74 68 28 22 2f 22 29 3a 0a 20 20 20 20 20 20 20 20 23 20 61 75 74 68 6f startswith("/"):.........#.autho
56d20 72 69 74 79 0a 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 rity.........scheme.=.None......
56d40 20 20 20 61 75 74 68 6f 72 69 74 79 20 3d 20 70 72 6f 78 79 0a 20 20 20 20 65 6c 73 65 3a 0a 20 ...authority.=.proxy.....else:..
56d60 20 20 20 20 20 20 20 23 20 55 52 4c 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 5f 73 63 .......#.URL.........if.not.r_sc
56d80 68 65 6d 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 2f 2f 22 29 3a 0a 20 20 20 20 20 20 20 20 20 heme.startswith("//"):..........
56da0 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 70 72 6f 78 79 20 55 52 4c 20 77 ...raise.ValueError("proxy.URL.w
56dc0 69 74 68 20 6e 6f 20 61 75 74 68 6f 72 69 74 79 3a 20 25 72 22 20 25 20 70 72 6f 78 79 29 0a 20 ith.no.authority:.%r".%.proxy)..
56de0 20 20 20 20 20 20 20 23 20 57 65 20 68 61 76 65 20 61 6e 20 61 75 74 68 6f 72 69 74 79 2c 20 73 .......#.We.have.an.authority,.s
56e00 6f 20 66 6f 72 20 52 46 43 20 33 39 38 36 2d 63 6f 6d 70 6c 69 61 6e 74 20 55 52 4c 73 20 28 62 o.for.RFC.3986-compliant.URLs.(b
56e20 79 20 73 73 20 33 2e 0a 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 33 2e 33 2e 29 2c 20 70 61 74 y.ss.3..........#.and.3.3.),.pat
56e40 68 20 69 73 20 65 6d 70 74 79 20 6f 72 20 73 74 61 72 74 73 20 77 69 74 68 20 27 2f 27 0a 20 20 h.is.empty.or.starts.with.'/'...
56e60 20 20 20 20 20 20 65 6e 64 20 3d 20 72 5f 73 63 68 65 6d 65 2e 66 69 6e 64 28 22 2f 22 2c 20 32 ......end.=.r_scheme.find("/",.2
56e80 29 0a 20 20 20 20 20 20 20 20 69 66 20 65 6e 64 20 3d 3d 20 2d 31 3a 0a 20 20 20 20 20 20 20 20 ).........if.end.==.-1:.........
56ea0 20 20 20 20 65 6e 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 75 74 68 6f 72 69 74 79 ....end.=.None.........authority
56ec0 20 3d 20 72 5f 73 63 68 65 6d 65 5b 32 3a 65 6e 64 5d 0a 20 20 20 20 75 73 65 72 69 6e 66 6f 2c .=.r_scheme[2:end].....userinfo,
56ee0 20 68 6f 73 74 70 6f 72 74 20 3d 20 73 70 6c 69 74 75 73 65 72 28 61 75 74 68 6f 72 69 74 79 29 .hostport.=.splituser(authority)
56f00 0a 20 20 20 20 69 66 20 75 73 65 72 69 6e 66 6f 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 .....if.userinfo.is.not.None:...
56f20 20 20 20 20 20 20 75 73 65 72 2c 20 70 61 73 73 77 6f 72 64 20 3d 20 73 70 6c 69 74 70 61 73 73 ......user,.password.=.splitpass
56f40 77 64 28 75 73 65 72 69 6e 66 6f 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 75 wd(userinfo).....else:.........u
56f60 73 65 72 20 3d 20 70 61 73 73 77 6f 72 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 72 65 74 75 72 6e ser.=.password.=.None.....return
56f80 20 73 63 68 65 6d 65 2c 20 75 73 65 72 2c 20 70 61 73 73 77 6f 72 64 2c 20 68 6f 73 74 70 6f 72 .scheme,.user,.password,.hostpor
56fa0 74 0a 0a 63 6c 61 73 73 20 50 72 6f 78 79 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 6c 65 t..class.ProxyHandler(BaseHandle
56fc0 72 29 3a 0a 20 20 20 20 23 20 50 72 6f 78 69 65 73 20 6d 75 73 74 20 62 65 20 69 6e 20 66 72 6f r):.....#.Proxies.must.be.in.fro
56fe0 6e 74 0a 20 20 20 20 68 61 6e 64 6c 65 72 5f 6f 72 64 65 72 20 3d 20 31 30 30 0a 0a 20 20 20 20 nt.....handler_order.=.100......
57000 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 72 6f 78 69 65 73 3d 4e 6f 6e 65 29 def.__init__(self,.proxies=None)
57020 3a 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 69 65 73 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 :.........if.proxies.is.None:...
57040 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 20 3d 20 67 65 74 70 72 6f 78 69 65 73 28 29 ..........proxies.=.getproxies()
57060 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 68 61 73 61 74 74 72 28 70 72 6f 78 69 65 73 2c .........assert.hasattr(proxies,
57080 20 27 6b 65 79 73 27 29 2c 20 22 70 72 6f 78 69 65 73 20 6d 75 73 74 20 62 65 20 61 20 6d 61 70 .'keys'),."proxies.must.be.a.map
570a0 70 69 6e 67 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f 78 69 65 73 20 3d 20 70 72 6f ping".........self.proxies.=.pro
570c0 78 69 65 73 0a 20 20 20 20 20 20 20 20 66 6f 72 20 74 79 70 65 2c 20 75 72 6c 20 69 6e 20 70 72 xies.........for.type,.url.in.pr
570e0 6f 78 69 65 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 61 74 oxies.items():.............setat
57100 74 72 28 73 65 6c 66 2c 20 27 25 73 5f 6f 70 65 6e 27 20 25 20 74 79 70 65 2c 0a 20 20 20 20 20 tr(self,.'%s_open'.%.type,......
57120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 6d 62 64 61 20 72 2c 20 70 72 6f 78 79 3d 75 ...............lambda.r,.proxy=u
57140 72 6c 2c 20 74 79 70 65 3d 74 79 70 65 2c 20 6d 65 74 68 3d 73 65 6c 66 2e 70 72 6f 78 79 5f 6f rl,.type=type,.meth=self.proxy_o
57160 70 65 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 pen:.........................met
57180 68 28 72 2c 20 70 72 6f 78 79 2c 20 74 79 70 65 29 29 0a 0a 20 20 20 20 64 65 66 20 70 72 6f 78 h(r,.proxy,.type))......def.prox
571a0 79 5f 6f 70 65 6e 28 73 65 6c 66 2c 20 72 65 71 2c 20 70 72 6f 78 79 2c 20 74 79 70 65 29 3a 0a y_open(self,.req,.proxy,.type):.
571c0 20 20 20 20 20 20 20 20 6f 72 69 67 5f 74 79 70 65 20 3d 20 72 65 71 2e 74 79 70 65 0a 20 20 20 ........orig_type.=.req.type....
571e0 20 20 20 20 20 70 72 6f 78 79 5f 74 79 70 65 2c 20 75 73 65 72 2c 20 70 61 73 73 77 6f 72 64 2c .....proxy_type,.user,.password,
57200 20 68 6f 73 74 70 6f 72 74 20 3d 20 5f 70 61 72 73 65 5f 70 72 6f 78 79 28 70 72 6f 78 79 29 0a .hostport.=._parse_proxy(proxy).
57220 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 5f 74 79 70 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 ........if.proxy_type.is.None:..
57240 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 74 79 70 65 20 3d 20 6f 72 69 67 5f 74 79 70 ...........proxy_type.=.orig_typ
57260 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 2e 68 6f 73 74 20 61 6e 64 20 70 72 6f 78 79 e..........if.req.host.and.proxy
57280 5f 62 79 70 61 73 73 28 72 65 71 2e 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 _bypass(req.host):.............r
572a0 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 20 61 6e 64 20 eturn.None..........if.user.and.
572c0 70 61 73 73 77 6f 72 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 20 password:.............user_pass.
572e0 3d 20 27 25 73 3a 25 73 27 20 25 20 28 75 6e 71 75 6f 74 65 28 75 73 65 72 29 2c 0a 20 20 20 20 =.'%s:%s'.%.(unquote(user),.....
57300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 ...............................u
57320 6e 71 75 6f 74 65 28 70 61 73 73 77 6f 72 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 72 nquote(password)).............cr
57340 65 64 73 20 3d 20 62 61 73 65 36 34 2e 62 36 34 65 6e 63 6f 64 65 28 75 73 65 72 5f 70 61 73 73 eds.=.base64.b64encode(user_pass
57360 2e 65 6e 63 6f 64 65 28 29 29 2e 64 65 63 6f 64 65 28 22 61 73 63 69 69 22 29 0a 20 20 20 20 20 .encode()).decode("ascii")......
57380 20 20 20 20 20 20 20 72 65 71 2e 61 64 64 5f 68 65 61 64 65 72 28 27 50 72 6f 78 79 2d 61 75 74 .......req.add_header('Proxy-aut
573a0 68 6f 72 69 7a 61 74 69 6f 6e 27 2c 20 27 42 61 73 69 63 20 27 20 2b 20 63 72 65 64 73 29 0a 20 horization',.'Basic.'.+.creds)..
573c0 20 20 20 20 20 20 20 68 6f 73 74 70 6f 72 74 20 3d 20 75 6e 71 75 6f 74 65 28 68 6f 73 74 70 6f .......hostport.=.unquote(hostpo
573e0 72 74 29 0a 20 20 20 20 20 20 20 20 72 65 71 2e 73 65 74 5f 70 72 6f 78 79 28 68 6f 73 74 70 6f rt).........req.set_proxy(hostpo
57400 72 74 2c 20 70 72 6f 78 79 5f 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6f 72 69 67 5f rt,.proxy_type).........if.orig_
57420 74 79 70 65 20 3d 3d 20 70 72 6f 78 79 5f 74 79 70 65 20 6f 72 20 6f 72 69 67 5f 74 79 70 65 20 type.==.proxy_type.or.orig_type.
57440 3d 3d 20 27 68 74 74 70 73 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6c 65 74 20 6f 74 ==.'https':.............#.let.ot
57460 68 65 72 20 68 61 6e 64 6c 65 72 73 20 74 61 6b 65 20 63 61 72 65 20 6f 66 20 69 74 0a 20 20 20 her.handlers.take.care.of.it....
57480 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 65 6c 73 .........return.None.........els
574a0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 65 65 64 20 74 6f 20 73 74 61 72 74 20 6f e:.............#.need.to.start.o
574c0 76 65 72 2c 20 62 65 63 61 75 73 65 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 6c 65 72 73 20 ver,.because.the.other.handlers.
574e0 64 6f 6e 27 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 67 72 6f 6b 20 74 68 65 20 70 72 6f don't.............#.grok.the.pro
57500 78 79 27 73 20 55 52 4c 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 2e 67 2e xy's.URL.type.............#.e.g.
57520 20 69 66 20 77 65 20 68 61 76 65 20 61 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 61 72 67 20 70 72 .if.we.have.a.constructor.arg.pr
57540 6f 78 69 65 73 20 6c 69 6b 65 20 73 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 7b 27 68 oxies.like.so:.............#.{'h
57560 74 74 70 27 3a 20 27 66 74 70 3a 2f 2f 70 72 6f 78 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 7d ttp':.'ftp://proxy.example.com'}
57580 2c 20 77 65 20 6d 61 79 20 65 6e 64 20 75 70 20 74 75 72 6e 69 6e 67 0a 20 20 20 20 20 20 20 20 ,.we.may.end.up.turning.........
575a0 20 20 20 20 23 20 61 20 72 65 71 75 65 73 74 20 66 6f 72 20 68 74 74 70 3a 2f 2f 61 63 6d 65 2e ....#.a.request.for.http://acme.
575c0 65 78 61 6d 70 6c 65 2e 63 6f 6d 2f 61 20 69 6e 74 6f 20 6f 6e 65 20 66 6f 72 0a 20 20 20 20 20 example.com/a.into.one.for......
575e0 20 20 20 20 20 20 20 23 20 66 74 70 3a 2f 2f 70 72 6f 78 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d .......#.ftp://proxy.example.com
57600 2f 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 61 72 65 6e /a.............return.self.paren
57620 74 2e 6f 70 65 6e 28 72 65 71 2c 20 74 69 6d 65 6f 75 74 3d 72 65 71 2e 74 69 6d 65 6f 75 74 29 t.open(req,.timeout=req.timeout)
57640 0a 0a 63 6c 61 73 73 20 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 3a 0a 0a 20 20 20 20 64 65 ..class.HTTPPasswordMgr:......de
57660 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 f.__init__(self):.........self.p
57680 61 73 73 77 64 20 3d 20 7b 7d 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 70 61 73 73 77 6f 72 64 asswd.=.{}......def.add_password
576a0 28 73 65 6c 66 2c 20 72 65 61 6c 6d 2c 20 75 72 69 2c 20 75 73 65 72 2c 20 70 61 73 73 77 64 29 (self,.realm,.uri,.user,.passwd)
576c0 3a 0a 20 20 20 20 20 20 20 20 23 20 75 72 69 20 63 6f 75 6c 64 20 62 65 20 61 20 73 69 6e 67 6c :.........#.uri.could.be.a.singl
576e0 65 20 55 52 49 20 6f 72 20 61 20 73 65 71 75 65 6e 63 65 0a 20 20 20 20 20 20 20 20 69 66 20 69 e.URI.or.a.sequence.........if.i
57700 73 69 6e 73 74 61 6e 63 65 28 75 72 69 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 sinstance(uri,.str):............
57720 20 75 72 69 20 3d 20 5b 75 72 69 5d 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 61 6c 6d 20 6e 6f .uri.=.[uri].........if.realm.no
57740 74 20 69 6e 20 73 65 6c 66 2e 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 t.in.self.passwd:.............se
57760 6c 66 2e 70 61 73 73 77 64 5b 72 65 61 6c 6d 5d 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 66 6f lf.passwd[realm].=.{}.........fo
57780 72 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 69 6e 20 54 72 75 65 2c 20 46 61 6c 73 65 3a 0a 20 r.default_port.in.True,.False:..
577a0 20 20 20 20 20 20 20 20 20 20 20 72 65 64 75 63 65 64 5f 75 72 69 20 3d 20 74 75 70 6c 65 28 0a ...........reduced_uri.=.tuple(.
577c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 64 75 63 65 5f 75 72 69 28 ................self.reduce_uri(
577e0 75 2c 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 29 20 66 6f 72 20 75 20 69 6e 20 75 72 69 29 0a 20 u,.default_port).for.u.in.uri)..
57800 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 73 73 77 64 5b 72 65 61 6c 6d 5d 5b 72 65 ...........self.passwd[realm][re
57820 64 75 63 65 64 5f 75 72 69 5d 20 3d 20 28 75 73 65 72 2c 20 70 61 73 73 77 64 29 0a 0a 20 20 20 duced_uri].=.(user,.passwd).....
57840 20 64 65 66 20 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 28 73 65 6c 66 2c 20 72 65 .def.find_user_password(self,.re
57860 61 6c 6d 2c 20 61 75 74 68 75 72 69 29 3a 0a 20 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 73 20 3d alm,.authuri):.........domains.=
57880 20 73 65 6c 66 2e 70 61 73 73 77 64 2e 67 65 74 28 72 65 61 6c 6d 2c 20 7b 7d 29 0a 20 20 20 20 .self.passwd.get(realm,.{}).....
578a0 20 20 20 20 66 6f 72 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 69 6e 20 54 72 75 65 2c 20 46 61 ....for.default_port.in.True,.Fa
578c0 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 64 75 63 65 64 5f 61 75 74 68 75 72 69 lse:.............reduced_authuri
578e0 20 3d 20 73 65 6c 66 2e 72 65 64 75 63 65 5f 75 72 69 28 61 75 74 68 75 72 69 2c 20 64 65 66 61 .=.self.reduce_uri(authuri,.defa
57900 75 6c 74 5f 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 75 72 69 73 2c 20 ult_port).............for.uris,.
57920 61 75 74 68 69 6e 66 6f 20 69 6e 20 64 6f 6d 61 69 6e 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 authinfo.in.domains.items():....
57940 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 75 72 69 20 69 6e 20 75 72 69 73 3a 0a 20 20 .............for.uri.in.uris:...
57960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 69 73 5f 73 75 62 ..................if.self.is_sub
57980 75 72 69 28 75 72 69 2c 20 72 65 64 75 63 65 64 5f 61 75 74 68 75 72 69 29 3a 0a 20 20 20 20 20 uri(uri,.reduced_authuri):......
579a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 75 74 68 69 6e ...................return.authin
579c0 66 6f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 0a 0a 20 20 fo.........return.None,.None....
579e0 20 20 64 65 66 20 72 65 64 75 63 65 5f 75 72 69 28 73 65 6c 66 2c 20 75 72 69 2c 20 64 65 66 61 ..def.reduce_uri(self,.uri,.defa
57a00 75 6c 74 5f 70 6f 72 74 3d 54 72 75 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 41 63 63 65 70 ult_port=True):........."""Accep
57a20 74 20 61 75 74 68 6f 72 69 74 79 20 6f 72 20 55 52 49 20 61 6e 64 20 65 78 74 72 61 63 74 20 6f t.authority.or.URI.and.extract.o
57a40 6e 6c 79 20 74 68 65 20 61 75 74 68 6f 72 69 74 79 20 61 6e 64 20 70 61 74 68 2e 22 22 22 0a 20 nly.the.authority.and.path."""..
57a60 20 20 20 20 20 20 20 23 20 6e 6f 74 65 20 48 54 54 50 20 55 52 4c 73 20 64 6f 20 6e 6f 74 20 68 .......#.note.HTTP.URLs.do.not.h
57a80 61 76 65 20 61 20 75 73 65 72 69 6e 66 6f 20 63 6f 6d 70 6f 6e 65 6e 74 0a 20 20 20 20 20 20 20 ave.a.userinfo.component........
57aa0 20 70 61 72 74 73 20 3d 20 75 72 6c 73 70 6c 69 74 28 75 72 69 29 0a 20 20 20 20 20 20 20 20 69 .parts.=.urlsplit(uri).........i
57ac0 66 20 70 61 72 74 73 5b 31 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 55 52 49 0a 20 20 f.parts[1]:.............#.URI...
57ae0 20 20 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 20 3d 20 70 61 72 74 73 5b 30 5d 0a 20 20 20 20 ..........scheme.=.parts[0].....
57b00 20 20 20 20 20 20 20 20 61 75 74 68 6f 72 69 74 79 20 3d 20 70 61 72 74 73 5b 31 5d 0a 20 20 20 ........authority.=.parts[1]....
57b20 20 20 20 20 20 20 20 20 20 70 61 74 68 20 3d 20 70 61 72 74 73 5b 32 5d 20 6f 72 20 27 2f 27 0a .........path.=.parts[2].or.'/'.
57b40 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 68 6f 73 74 ........else:.............#.host
57b60 20 6f 72 20 68 6f 73 74 3a 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 .or.host:port.............scheme
57b80 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 6f 72 69 74 79 20 3d 20 .=.None.............authority.=.
57ba0 75 72 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 20 3d 20 27 2f 27 0a 20 20 20 20 20 uri.............path.=.'/'......
57bc0 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 20 3d 20 73 70 6c 69 74 70 6f 72 74 28 61 75 74 68 6f 72 ...host,.port.=.splitport(author
57be0 69 74 79 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 61 6e 64 ity).........if.default_port.and
57c00 20 70 6f 72 74 20 69 73 20 4e 6f 6e 65 20 61 6e 64 20 73 63 68 65 6d 65 20 69 73 20 6e 6f 74 20 .port.is.None.and.scheme.is.not.
57c20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 70 6f 72 74 20 3d 20 7b 22 68 74 74 70 None:.............dport.=.{"http
57c40 22 3a 20 38 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 68 74 74 ":.80,......................"htt
57c60 70 73 22 3a 20 34 34 33 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d ps":.443,......................}
57c80 2e 67 65 74 28 73 63 68 65 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 70 6f 72 .get(scheme).............if.dpor
57ca0 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 t.is.not.None:.................a
57cc0 75 74 68 6f 72 69 74 79 20 3d 20 22 25 73 3a 25 64 22 20 25 20 28 68 6f 73 74 2c 20 64 70 6f 72 uthority.=."%s:%d".%.(host,.dpor
57ce0 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 75 74 68 6f 72 69 74 79 2c 20 70 61 74 t).........return.authority,.pat
57d00 68 0a 0a 20 20 20 20 64 65 66 20 69 73 5f 73 75 62 75 72 69 28 73 65 6c 66 2c 20 62 61 73 65 2c h......def.is_suburi(self,.base,
57d20 20 74 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 43 68 65 63 6b 20 69 66 20 74 65 73 74 .test):........."""Check.if.test
57d40 20 69 73 20 62 65 6c 6f 77 20 62 61 73 65 20 69 6e 20 61 20 55 52 49 20 74 72 65 65 0a 0a 20 20 .is.below.base.in.a.URI.tree....
57d60 20 20 20 20 20 20 42 6f 74 68 20 61 72 67 73 20 6d 75 73 74 20 62 65 20 55 52 49 73 20 69 6e 20 ......Both.args.must.be.URIs.in.
57d80 72 65 64 75 63 65 64 20 66 6f 72 6d 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 reduced.form..........""".......
57da0 20 20 69 66 20 62 61 73 65 20 3d 3d 20 74 65 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ..if.base.==.test:.............r
57dc0 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 69 66 20 62 61 73 65 5b 30 5d 20 21 3d eturn.True.........if.base[0].!=
57de0 20 74 65 73 74 5b 30 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c .test[0]:.............return.Fal
57e00 73 65 0a 20 20 20 20 20 20 20 20 63 6f 6d 6d 6f 6e 20 3d 20 70 6f 73 69 78 70 61 74 68 2e 63 6f se.........common.=.posixpath.co
57e20 6d 6d 6f 6e 70 72 65 66 69 78 28 28 62 61 73 65 5b 31 5d 2c 20 74 65 73 74 5b 31 5d 29 29 0a 20 mmonprefix((base[1],.test[1]))..
57e40 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 63 6f 6d 6d 6f 6e 29 20 3d 3d 20 6c 65 6e 28 62 61 73 .......if.len(common).==.len(bas
57e60 65 5b 31 5d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 e[1]):.............return.True..
57e80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 .......return.False...class.HTTP
57ea0 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 44 65 66 61 75 6c 74 52 65 61 6c 6d 28 48 54 54 50 PasswordMgrWithDefaultRealm(HTTP
57ec0 50 61 73 73 77 6f 72 64 4d 67 72 29 3a 0a 0a 20 20 20 20 64 65 66 20 66 69 6e 64 5f 75 73 65 72 PasswordMgr):......def.find_user
57ee0 5f 70 61 73 73 77 6f 72 64 28 73 65 6c 66 2c 20 72 65 61 6c 6d 2c 20 61 75 74 68 75 72 69 29 3a _password(self,.realm,.authuri):
57f00 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 70 61 73 73 77 6f 72 64 20 3d 20 48 54 54 50 50 61 .........user,.password.=.HTTPPa
57f20 73 73 77 6f 72 64 4d 67 72 2e 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 28 73 65 6c sswordMgr.find_user_password(sel
57f40 66 2c 20 72 65 61 6c 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f,.realm,.......................
57f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
57f80 20 20 20 20 20 20 61 75 74 68 75 72 69 29 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 20 69 ......authuri).........if.user.i
57fa0 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 s.not.None:.............return.u
57fc0 73 65 72 2c 20 70 61 73 73 77 6f 72 64 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 48 54 54 ser,.password.........return.HTT
57fe0 50 50 61 73 73 77 6f 72 64 4d 67 72 2e 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 28 PPasswordMgr.find_user_password(
58000 73 65 6c 66 2c 20 4e 6f 6e 65 2c 20 61 75 74 68 75 72 69 29 0a 0a 0a 63 6c 61 73 73 20 48 54 54 self,.None,.authuri)...class.HTT
58020 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 50 72 69 6f 72 41 75 74 68 28 48 54 54 50 50 61 PPasswordMgrWithPriorAuth(HTTPPa
58040 73 73 77 6f 72 64 4d 67 72 57 69 74 68 44 65 66 61 75 6c 74 52 65 61 6c 6d 29 3a 0a 0a 20 20 20 sswordMgrWithDefaultRealm):.....
58060 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 61 .def.__init__(self,.*args,.**kwa
58080 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 75 74 68 65 6e 74 69 63 61 74 65 64 rgs):.........self.authenticated
580a0 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 29 2e 5f 5f 69 6e 69 74 5f 5f 28 2a .=.{}.........super().__init__(*
580c0 61 72 67 73 2c 20 2a 2a 6b 77 61 72 67 73 29 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 70 61 73 args,.**kwargs)......def.add_pas
580e0 73 77 6f 72 64 28 73 65 6c 66 2c 20 72 65 61 6c 6d 2c 20 75 72 69 2c 20 75 73 65 72 2c 20 70 61 sword(self,.realm,.uri,.user,.pa
58100 73 73 77 64 2c 20 69 73 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 3d 46 61 6c 73 65 29 3a 0a 20 sswd,.is_authenticated=False):..
58120 20 20 20 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 .......self.update_authenticated
58140 28 75 72 69 2c 20 69 73 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 29 0a 20 20 20 20 20 20 20 20 (uri,.is_authenticated).........
58160 23 20 41 64 64 20 61 20 64 65 66 61 75 6c 74 20 66 6f 72 20 70 72 69 6f 72 20 61 75 74 68 20 72 #.Add.a.default.for.prior.auth.r
58180 65 71 75 65 73 74 73 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 61 6c 6d 20 69 73 20 6e 6f 74 20 equests.........if.realm.is.not.
581a0 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 75 70 65 72 28 29 2e 61 64 64 5f 70 61 None:.............super().add_pa
581c0 73 73 77 6f 72 64 28 4e 6f 6e 65 2c 20 75 72 69 2c 20 75 73 65 72 2c 20 70 61 73 73 77 64 29 0a ssword(None,.uri,.user,.passwd).
581e0 20 20 20 20 20 20 20 20 73 75 70 65 72 28 29 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 28 72 65 61 ........super().add_password(rea
58200 6c 6d 2c 20 75 72 69 2c 20 75 73 65 72 2c 20 70 61 73 73 77 64 29 0a 0a 20 20 20 20 64 65 66 20 lm,.uri,.user,.passwd)......def.
58220 75 70 64 61 74 65 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 28 73 65 6c 66 2c 20 75 72 69 2c 20 update_authenticated(self,.uri,.
58240 69 73 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 20 20 20 is_authenticated=False):........
58260 20 23 20 75 72 69 20 63 6f 75 6c 64 20 62 65 20 61 20 73 69 6e 67 6c 65 20 55 52 49 20 6f 72 20 .#.uri.could.be.a.single.URI.or.
58280 61 20 73 65 71 75 65 6e 63 65 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 a.sequence.........if.isinstance
582a0 28 75 72 69 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 69 20 3d 20 5b 75 (uri,.str):.............uri.=.[u
582c0 72 69 5d 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 69 6e ri]..........for.default_port.in
582e0 20 54 72 75 65 2c 20 46 61 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 75 20 .True,.False:.............for.u.
58300 69 6e 20 75 72 69 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 64 75 63 65 64 5f in.uri:.................reduced_
58320 75 72 69 20 3d 20 73 65 6c 66 2e 72 65 64 75 63 65 5f 75 72 69 28 75 2c 20 64 65 66 61 75 6c 74 uri.=.self.reduce_uri(u,.default
58340 5f 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 75 74 68 _port).................self.auth
58360 65 6e 74 69 63 61 74 65 64 5b 72 65 64 75 63 65 64 5f 75 72 69 5d 20 3d 20 69 73 5f 61 75 74 68 enticated[reduced_uri].=.is_auth
58380 65 6e 74 69 63 61 74 65 64 0a 0a 20 20 20 20 64 65 66 20 69 73 5f 61 75 74 68 65 6e 74 69 63 61 enticated......def.is_authentica
583a0 74 65 64 28 73 65 6c 66 2c 20 61 75 74 68 75 72 69 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 ted(self,.authuri):.........for.
583c0 64 65 66 61 75 6c 74 5f 70 6f 72 74 20 69 6e 20 54 72 75 65 2c 20 46 61 6c 73 65 3a 0a 20 20 20 default_port.in.True,.False:....
583e0 20 20 20 20 20 20 20 20 20 72 65 64 75 63 65 64 5f 61 75 74 68 75 72 69 20 3d 20 73 65 6c 66 2e .........reduced_authuri.=.self.
58400 72 65 64 75 63 65 5f 75 72 69 28 61 75 74 68 75 72 69 2c 20 64 65 66 61 75 6c 74 5f 70 6f 72 74 reduce_uri(authuri,.default_port
58420 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 75 72 69 20 69 6e 20 73 65 6c 66 2e 61 75 ).............for.uri.in.self.au
58440 74 68 65 6e 74 69 63 61 74 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 thenticated:.................if.
58460 73 65 6c 66 2e 69 73 5f 73 75 62 75 72 69 28 75 72 69 2c 20 72 65 64 75 63 65 64 5f 61 75 74 68 self.is_suburi(uri,.reduced_auth
58480 75 72 69 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e uri):.....................return
584a0 20 73 65 6c 66 2e 61 75 74 68 65 6e 74 69 63 61 74 65 64 5b 75 72 69 5d 0a 0a 0a 63 6c 61 73 73 .self.authenticated[uri]...class
584c0 20 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 3a 0a 0a 20 20 20 20 .AbstractBasicAuthHandler:......
584e0 23 20 58 58 58 20 74 68 69 73 20 61 6c 6c 6f 77 73 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 20 61 #.XXX.this.allows.for.multiple.a
58500 75 74 68 2d 73 63 68 65 6d 65 73 2c 20 62 75 74 20 77 69 6c 6c 20 73 74 75 70 69 64 6c 79 20 70 uth-schemes,.but.will.stupidly.p
58520 69 63 6b 0a 20 20 20 20 23 20 74 68 65 20 6c 61 73 74 20 6f 6e 65 20 77 69 74 68 20 61 20 72 65 ick.....#.the.last.one.with.a.re
58540 61 6c 6d 20 73 70 65 63 69 66 69 65 64 2e 0a 0a 20 20 20 20 23 20 61 6c 6c 6f 77 20 66 6f 72 20 alm.specified.......#.allow.for.
58560 64 6f 75 62 6c 65 2d 20 61 6e 64 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65 64 20 72 65 61 6c 6d 20 double-.and.single-quoted.realm.
58580 76 61 6c 75 65 73 0a 20 20 20 20 23 20 28 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 61 72 65 20 values.....#.(single.quotes.are.
585a0 61 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 52 46 43 2c 20 62 75 74 20 61 70 70 65 a.violation.of.the.RFC,.but.appe
585c0 61 72 20 69 6e 20 74 68 65 20 77 69 6c 64 29 0a 20 20 20 20 72 78 20 3d 20 72 65 2e 63 6f 6d 70 ar.in.the.wild).....rx.=.re.comp
585e0 69 6c 65 28 27 28 3f 3a 2e 2a 2c 29 2a 5b 20 5c 74 5d 2a 28 5b 5e 20 5c 74 5d 2b 29 5b 20 5c 74 ile('(?:.*,)*[.\t]*([^.\t]+)[.\t
58600 5d 2b 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 65 61 6c 6d 3d 28 ]+'.....................'realm=(
58620 5b 22 5c 27 5d 3f 29 28 5b 5e 22 5c 27 5d 2a 29 5c 5c 32 27 2c 20 72 65 2e 49 29 0a 0a 20 20 20 ["\']?)([^"\']*)\\2',.re.I).....
58640 20 23 20 58 58 58 20 63 6f 75 6c 64 20 70 72 65 2d 65 6d 70 74 69 76 65 6c 79 20 73 65 6e 64 20 .#.XXX.could.pre-emptively.send.
58660 61 75 74 68 20 69 6e 66 6f 20 61 6c 72 65 61 64 79 20 61 63 63 65 70 74 65 64 20 28 52 46 43 20 auth.info.already.accepted.(RFC.
58680 32 36 31 37 2c 0a 20 20 20 20 23 20 65 6e 64 20 6f 66 20 73 65 63 74 69 6f 6e 20 32 2c 20 61 6e 2617,.....#.end.of.section.2,.an
586a0 64 20 73 65 63 74 69 6f 6e 20 31 2e 32 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 d.section.1.2.immediately.after.
586c0 22 63 72 65 64 65 6e 74 69 61 6c 73 22 0a 20 20 20 20 23 20 70 72 6f 64 75 63 74 69 6f 6e 29 2e "credentials".....#.production).
586e0 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 73 73 77 6f 72 ......def.__init__(self,.passwor
58700 64 5f 6d 67 72 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 70 61 73 73 77 6f 72 64 d_mgr=None):.........if.password
58720 5f 6d 67 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 77 6f _mgr.is.None:.............passwo
58740 72 64 5f 6d 67 72 20 3d 20 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 28 29 0a 20 20 20 20 20 rd_mgr.=.HTTPPasswordMgr()......
58760 20 20 20 73 65 6c 66 2e 70 61 73 73 77 64 20 3d 20 70 61 73 73 77 6f 72 64 5f 6d 67 72 0a 20 20 ...self.passwd.=.password_mgr...
58780 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 20 3d 20 73 65 6c 66 2e 70 ......self.add_password.=.self.p
587a0 61 73 73 77 64 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 asswd.add_password......def.http
587c0 5f 65 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 73 65 6c 66 2c 20 61 75 74 68 72 65 71 2c _error_auth_reqed(self,.authreq,
587e0 20 68 6f 73 74 2c 20 72 65 71 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 .host,.req,.headers):.........#.
58800 68 6f 73 74 20 6d 61 79 20 62 65 20 61 6e 20 61 75 74 68 6f 72 69 74 79 20 28 77 69 74 68 6f 75 host.may.be.an.authority.(withou
58820 74 20 75 73 65 72 69 6e 66 6f 29 20 6f 72 20 61 20 55 52 4c 20 77 69 74 68 20 61 6e 0a 20 20 20 t.userinfo).or.a.URL.with.an....
58840 20 20 20 20 20 23 20 61 75 74 68 6f 72 69 74 79 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 63 .....#.authority.........#.XXX.c
58860 6f 75 6c 64 20 62 65 20 6d 75 6c 74 69 70 6c 65 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 ould.be.multiple.headers........
58880 20 61 75 74 68 72 65 71 20 3d 20 68 65 61 64 65 72 73 2e 67 65 74 28 61 75 74 68 72 65 71 2c 20 .authreq.=.headers.get(authreq,.
588a0 4e 6f 6e 65 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 61 75 74 68 72 65 71 3a 0a 20 20 20 20 20 None)..........if.authreq:......
588c0 20 20 20 20 20 20 20 73 63 68 65 6d 65 20 3d 20 61 75 74 68 72 65 71 2e 73 70 6c 69 74 28 29 5b .......scheme.=.authreq.split()[
588e0 30 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 63 68 65 6d 65 2e 6c 6f 77 65 72 28 29 0].............if.scheme.lower()
58900 20 21 3d 20 27 62 61 73 69 63 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 .!=.'basic':.................rai
58920 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 se.ValueError("AbstractBasicAuth
58940 48 61 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Handler.does.not"...............
58960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 73 75 70 70 6f 72 74 20 74 68 65 ...................".support.the
58980 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 63 68 65 6d 65 3a 20 27 25 73 27 22 20 25 0a 20 20 20 20 20 .following.scheme:.'%s'".%......
589a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 68 65 ............................sche
589c0 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 me).............else:...........
589e0 20 20 20 20 20 20 6d 6f 20 3d 20 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 ......mo.=.AbstractBasicAuthHand
58a00 6c 65 72 2e 72 78 2e 73 65 61 72 63 68 28 61 75 74 68 72 65 71 29 0a 20 20 20 20 20 20 20 20 20 ler.rx.search(authreq)..........
58a20 20 20 20 20 20 20 20 69 66 20 6d 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......if.mo:...................
58a40 20 20 73 63 68 65 6d 65 2c 20 71 75 6f 74 65 2c 20 72 65 61 6c 6d 20 3d 20 6d 6f 2e 67 72 6f 75 ..scheme,.quote,.realm.=.mo.grou
58a60 70 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 71 75 6f 74 ps().....................if.quot
58a80 65 20 6e 6f 74 20 69 6e 20 5b 27 22 27 2c 22 27 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.not.in.['"',"'"]:.............
58aa0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 2e 77 61 72 6e 28 22 42 61 73 69 63 ............warnings.warn("Basic
58ac0 20 41 75 74 68 20 52 65 61 6c 6d 20 77 61 73 20 75 6e 71 75 6f 74 65 64 22 2c 0a 20 20 20 20 20 .Auth.Realm.was.unquoted",......
58ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
58b00 20 55 73 65 72 57 61 72 6e 69 6e 67 2c 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .UserWarning,.2)................
58b20 20 20 20 20 20 69 66 20 73 63 68 65 6d 65 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 27 62 61 73 69 63 .....if.scheme.lower().==.'basic
58b40 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 ':.........................retur
58b60 6e 20 73 65 6c 66 2e 72 65 74 72 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 28 68 6f 73 n.self.retry_http_basic_auth(hos
58b80 74 2c 20 72 65 71 2c 20 72 65 61 6c 6d 29 0a 0a 20 20 20 20 64 65 66 20 72 65 74 72 79 5f 68 74 t,.req,.realm)......def.retry_ht
58ba0 74 70 5f 62 61 73 69 63 5f 61 75 74 68 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 72 65 71 2c 20 72 tp_basic_auth(self,.host,.req,.r
58bc0 65 61 6c 6d 29 3a 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 70 77 20 3d 20 73 65 6c 66 2e 70 ealm):.........user,.pw.=.self.p
58be0 61 73 73 77 64 2e 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 28 72 65 61 6c 6d 2c 20 asswd.find_user_password(realm,.
58c00 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 77 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a host).........if.pw.is.not.None:
58c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 77 20 3d 20 22 25 73 3a 25 73 22 20 25 20 28 75 73 .............raw.=."%s:%s".%.(us
58c40 65 72 2c 20 70 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 22 42 61 73 69 er,.pw).............auth.=."Basi
58c60 63 20 22 20 2b 20 62 61 73 65 36 34 2e 62 36 34 65 6e 63 6f 64 65 28 72 61 77 2e 65 6e 63 6f 64 c.".+.base64.b64encode(raw.encod
58c80 65 28 29 29 2e 64 65 63 6f 64 65 28 22 61 73 63 69 69 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 e()).decode("ascii")............
58ca0 20 69 66 20 72 65 71 2e 67 65 74 5f 68 65 61 64 65 72 28 73 65 6c 66 2e 61 75 74 68 5f 68 65 61 .if.req.get_header(self.auth_hea
58cc0 64 65 72 2c 20 4e 6f 6e 65 29 20 3d 3d 20 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 der,.None).==.auth:.............
58ce0 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 2e ....return.None.............req.
58d00 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 28 73 65 6c 66 2e 61 75 74 add_unredirected_header(self.aut
58d20 68 5f 68 65 61 64 65 72 2c 20 61 75 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 h_header,.auth).............retu
58d40 72 6e 20 73 65 6c 66 2e 70 61 72 65 6e 74 2e 6f 70 65 6e 28 72 65 71 2c 20 74 69 6d 65 6f 75 74 rn.self.parent.open(req,.timeout
58d60 3d 72 65 71 2e 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 =req.timeout).........else:.....
58d80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 20 64 65 66 20 68 74 74 ........return.None......def.htt
58da0 70 5f 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 69 66 p_request(self,.req):.........if
58dc0 20 28 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2e 70 61 73 73 77 64 2c 20 27 69 73 5f 61 .(not.hasattr(self.passwd,.'is_a
58de0 75 74 68 65 6e 74 69 63 61 74 65 64 27 29 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 uthenticated').or............not
58e00 20 73 65 6c 66 2e 70 61 73 73 77 64 2e 69 73 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 28 72 65 .self.passwd.is_authenticated(re
58e20 71 2e 66 75 6c 6c 5f 75 72 6c 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e q.full_url)):.............return
58e40 20 72 65 71 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 71 2e 68 61 73 5f 68 65 61 .req..........if.not.req.has_hea
58e60 64 65 72 28 27 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 der('Authorization'):...........
58e80 20 20 75 73 65 72 2c 20 70 61 73 73 77 64 20 3d 20 73 65 6c 66 2e 70 61 73 73 77 64 2e 66 69 6e ..user,.passwd.=.self.passwd.fin
58ea0 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 28 4e 6f 6e 65 2c 20 72 65 71 2e 66 75 6c 6c 5f 75 d_user_password(None,.req.full_u
58ec0 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 72 65 64 65 6e 74 69 61 6c 73 20 3d 20 27 7b rl).............credentials.=.'{
58ee0 30 7d 3a 7b 31 7d 27 2e 66 6f 72 6d 61 74 28 75 73 65 72 2c 20 70 61 73 73 77 64 29 2e 65 6e 63 0}:{1}'.format(user,.passwd).enc
58f00 6f 64 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 5f 73 74 72 20 3d 20 62 61 73 ode().............auth_str.=.bas
58f20 65 36 34 2e 73 74 61 6e 64 61 72 64 5f 62 36 34 65 6e 63 6f 64 65 28 63 72 65 64 65 6e 74 69 61 e64.standard_b64encode(credentia
58f40 6c 73 29 2e 64 65 63 6f 64 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 2e 61 64 64 ls).decode().............req.add
58f60 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 28 27 41 75 74 68 6f 72 69 7a 61 74 _unredirected_header('Authorizat
58f80 69 6f 6e 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion',...........................
58fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 42 61 73 69 63 20 7b 7d 27 2e 66 6f 72 6d 61 74 28 ..............'Basic.{}'.format(
58fc0 61 75 74 68 5f 73 74 72 2e 73 74 72 69 70 28 29 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 auth_str.strip())).........retur
58fe0 6e 20 72 65 71 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 28 73 65 6c n.req......def.http_response(sel
59000 66 2c 20 72 65 71 2c 20 72 65 73 70 6f 6e 73 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 f,.req,.response):.........if.ha
59020 73 61 74 74 72 28 73 65 6c 66 2e 70 61 73 73 77 64 2c 20 27 69 73 5f 61 75 74 68 65 6e 74 69 63 sattr(self.passwd,.'is_authentic
59040 61 74 65 64 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 32 30 30 20 3c 3d 20 72 65 ated'):.............if.200.<=.re
59060 73 70 6f 6e 73 65 2e 63 6f 64 65 20 3c 20 33 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 sponse.code.<.300:..............
59080 20 20 20 73 65 6c 66 2e 70 61 73 73 77 64 2e 75 70 64 61 74 65 5f 61 75 74 68 65 6e 74 69 63 61 ...self.passwd.update_authentica
590a0 74 65 64 28 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 2c 20 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 ted(req.full_url,.True).........
590c0 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 ....else:.................self.p
590e0 61 73 73 77 64 2e 75 70 64 61 74 65 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 28 72 65 71 2e 66 asswd.update_authenticated(req.f
59100 75 6c 6c 5f 75 72 6c 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 ull_url,.False).........return.r
59120 65 73 70 6f 6e 73 65 0a 0a 20 20 20 20 68 74 74 70 73 5f 72 65 71 75 65 73 74 20 3d 20 68 74 74 esponse......https_request.=.htt
59140 70 5f 72 65 71 75 65 73 74 0a 20 20 20 20 68 74 74 70 73 5f 72 65 73 70 6f 6e 73 65 20 3d 20 68 p_request.....https_response.=.h
59160 74 74 70 5f 72 65 73 70 6f 6e 73 65 0a 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 42 61 73 69 63 41 ttp_response....class.HTTPBasicA
59180 75 74 68 48 61 6e 64 6c 65 72 28 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 uthHandler(AbstractBasicAuthHand
591a0 6c 65 72 2c 20 42 61 73 65 48 61 6e 64 6c 65 72 29 3a 0a 0a 20 20 20 20 61 75 74 68 5f 68 65 61 ler,.BaseHandler):......auth_hea
591c0 64 65 72 20 3d 20 27 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 27 0a 0a 20 20 20 20 64 65 66 20 68 der.=.'Authorization'......def.h
591e0 74 74 70 5f 65 72 72 6f 72 5f 34 30 31 28 73 65 6c 66 2c 20 72 65 71 2c 20 66 70 2c 20 63 6f 64 ttp_error_401(self,.req,.fp,.cod
59200 65 2c 20 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 75 72 6c 20 3d 20 e,.msg,.headers):.........url.=.
59220 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 0a 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 3d 20 req.full_url.........response.=.
59240 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 27 77 77 77 2d self.http_error_auth_reqed('www-
59260 61 75 74 68 65 6e 74 69 63 61 74 65 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 authenticate',..................
59280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 2c 20 72 65 .........................url,.re
592a0 71 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 6f q,.headers).........return.respo
592c0 6e 73 65 0a 0a 0a 63 6c 61 73 73 20 50 72 6f 78 79 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 nse...class.ProxyBasicAuthHandle
592e0 72 28 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 2c 20 42 61 73 65 r(AbstractBasicAuthHandler,.Base
59300 48 61 6e 64 6c 65 72 29 3a 0a 0a 20 20 20 20 61 75 74 68 5f 68 65 61 64 65 72 20 3d 20 27 50 72 Handler):......auth_header.=.'Pr
59320 6f 78 79 2d 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 27 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 oxy-authorization'......def.http
59340 5f 65 72 72 6f 72 5f 34 30 37 28 73 65 6c 66 2c 20 72 65 71 2c 20 66 70 2c 20 63 6f 64 65 2c 20 _error_407(self,.req,.fp,.code,.
59360 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 68 74 74 70 5f 65 72 msg,.headers):.........#.http_er
59380 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 20 72 65 71 75 69 72 65 73 20 74 68 61 74 20 74 68 65 ror_auth_reqed.requires.that.the
593a0 72 65 20 69 73 20 6e 6f 20 75 73 65 72 69 6e 66 6f 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 6e 0a 20 re.is.no.userinfo.component.in..
593c0 20 20 20 20 20 20 20 23 20 61 75 74 68 6f 72 69 74 79 2e 20 20 41 73 73 75 6d 65 20 74 68 65 72 .......#.authority...Assume.ther
593e0 65 20 69 73 6e 27 74 20 6f 6e 65 2c 20 73 69 6e 63 65 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 e.isn't.one,.since.urllib.reques
59400 74 20 64 6f 65 73 20 6e 6f 74 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 23 20 73 68 6f 75 6c 64 t.does.not.(and.........#.should
59420 20 6e 6f 74 2c 20 52 46 43 20 33 39 38 36 20 73 2e 20 33 2e 32 2e 31 29 20 73 75 70 70 6f 72 74 .not,.RFC.3986.s..3.2.1).support
59440 20 72 65 71 75 65 73 74 73 20 66 6f 72 20 55 52 4c 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 20 20 .requests.for.URLs.containing...
59460 20 20 20 20 20 20 23 20 75 73 65 72 69 6e 66 6f 2e 0a 20 20 20 20 20 20 20 20 61 75 74 68 6f 72 ......#.userinfo..........author
59480 69 74 79 20 3d 20 72 65 71 2e 68 6f 73 74 0a 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 ity.=.req.host.........response.
594a0 3d 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 27 70 72 =.self.http_error_auth_reqed('pr
594c0 6f 78 79 2d 61 75 74 68 65 6e 74 69 63 61 74 65 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 oxy-authenticate',..............
594e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 .............................aut
59500 68 6f 72 69 74 79 2c 20 72 65 71 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 72 65 hority,.req,.headers).........re
59520 74 75 72 6e 20 72 65 73 70 6f 6e 73 65 0a 0a 0a 23 20 52 65 74 75 72 6e 20 6e 20 72 61 6e 64 6f turn.response...#.Return.n.rando
59540 6d 20 62 79 74 65 73 2e 0a 5f 72 61 6e 64 6f 6d 62 79 74 65 73 20 3d 20 6f 73 2e 75 72 61 6e 64 m.bytes.._randombytes.=.os.urand
59560 6f 6d 0a 0a 0a 63 6c 61 73 73 20 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e om...class.AbstractDigestAuthHan
59580 64 6c 65 72 3a 0a 20 20 20 20 23 20 44 69 67 65 73 74 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f dler:.....#.Digest.authenticatio
595a0 6e 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 52 46 43 20 32 36 31 37 2e 0a 0a 20 20 20 n.is.specified.in.RFC.2617......
595c0 20 23 20 58 58 58 20 54 68 65 20 63 6c 69 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 73 70 65 .#.XXX.The.client.does.not.inspe
595e0 63 74 20 74 68 65 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2d 49 6e 66 6f 20 68 65 61 64 65 ct.the.Authentication-Info.heade
59600 72 0a 20 20 20 20 23 20 69 6e 20 61 20 73 75 63 63 65 73 73 66 75 6c 20 72 65 73 70 6f 6e 73 65 r.....#.in.a.successful.response
59620 2e 0a 0a 20 20 20 20 23 20 58 58 58 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 70 6f 73 73 69 62 .......#.XXX.It.should.be.possib
59640 6c 65 20 74 6f 20 74 65 73 74 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 le.to.test.this.implementation.a
59660 67 61 69 6e 73 74 0a 20 20 20 20 23 20 61 20 6d 6f 63 6b 20 73 65 72 76 65 72 20 74 68 61 74 20 gainst.....#.a.mock.server.that.
59680 6a 75 73 74 20 67 65 6e 65 72 61 74 65 73 20 61 20 73 74 61 74 69 63 20 73 65 74 20 6f 66 20 63 just.generates.a.static.set.of.c
596a0 68 61 6c 6c 65 6e 67 65 73 2e 0a 0a 20 20 20 20 23 20 58 58 58 20 71 6f 70 3d 22 61 75 74 68 2d hallenges.......#.XXX.qop="auth-
596c0 69 6e 74 22 20 73 75 70 70 6f 72 74 73 20 69 73 20 73 68 61 6b 79 0a 0a 20 20 20 20 64 65 66 20 int".supports.is.shaky......def.
596e0 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 73 73 77 64 3d 4e 6f 6e 65 29 3a 0a 20 20 20 __init__(self,.passwd=None):....
59700 20 20 20 20 20 69 66 20 70 61 73 73 77 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 .....if.passwd.is.None:.........
59720 20 20 20 20 70 61 73 73 77 64 20 3d 20 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 28 29 0a 20 ....passwd.=.HTTPPasswordMgr()..
59740 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 73 73 77 64 20 3d 20 70 61 73 73 77 64 0a 20 20 20 20 .......self.passwd.=.passwd.....
59760 20 20 20 20 73 65 6c 66 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 20 3d 20 73 65 6c 66 2e 70 61 73 ....self.add_password.=.self.pas
59780 73 77 64 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 swd.add_password.........self.re
597a0 74 72 69 65 64 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 6f 6e 63 65 5f 63 6f 75 tried.=.0.........self.nonce_cou
597c0 6e 74 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 61 73 74 5f 6e 6f 6e 63 65 20 3d nt.=.0.........self.last_nonce.=
597e0 20 4e 6f 6e 65 0a 0a 20 20 20 20 64 65 66 20 72 65 73 65 74 5f 72 65 74 72 79 5f 63 6f 75 6e 74 .None......def.reset_retry_count
59800 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 74 72 69 65 64 20 3d 20 30 (self):.........self.retried.=.0
59820 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 ......def.http_error_auth_reqed(
59840 73 65 6c 66 2c 20 61 75 74 68 5f 68 65 61 64 65 72 2c 20 68 6f 73 74 2c 20 72 65 71 2c 20 68 65 self,.auth_header,.host,.req,.he
59860 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 61 75 74 68 72 65 71 20 3d 20 68 65 61 64 65 72 aders):.........authreq.=.header
59880 73 2e 67 65 74 28 61 75 74 68 5f 68 65 61 64 65 72 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 s.get(auth_header,.None)........
598a0 20 69 66 20 73 65 6c 66 2e 72 65 74 72 69 65 64 20 3e 20 35 3a 0a 20 20 20 20 20 20 20 20 20 20 .if.self.retried.>.5:...........
598c0 20 20 23 20 44 6f 6e 27 74 20 66 61 69 6c 20 65 6e 64 6c 65 73 73 6c 79 20 2d 20 69 66 20 77 65 ..#.Don't.fail.endlessly.-.if.we
598e0 20 66 61 69 6c 65 64 20 6f 6e 63 65 2c 20 77 65 27 6c 6c 20 70 72 6f 62 61 62 6c 79 0a 20 20 20 .failed.once,.we'll.probably....
59900 20 20 20 20 20 20 20 20 20 23 20 66 61 69 6c 20 61 20 73 65 63 6f 6e 64 20 74 69 6d 65 2e 20 48 .........#.fail.a.second.time..H
59920 6d 2e 20 55 6e 6c 65 73 73 20 74 68 65 20 50 61 73 73 77 6f 72 64 20 4d 61 6e 61 67 65 72 20 69 m..Unless.the.Password.Manager.i
59940 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 72 6f 6d 70 74 69 6e 67 20 66 6f 72 20 74 68 s.............#.prompting.for.th
59960 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 43 72 61 70 2e 20 54 68 69 73 20 69 73 6e 27 74 20 e.information..Crap..This.isn't.
59980 67 72 65 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 62 75 74 20 69 74 27 73 20 62 65 74 great.............#.but.it's.bet
599a0 74 65 72 20 74 68 61 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 27 72 65 70 65 61 74 20 75 6e 74 ter.than.the.current.'repeat.unt
599c0 69 6c 20 72 65 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 70 74 68 il.recursion.............#.depth
599e0 20 65 78 63 65 65 64 65 64 27 20 61 70 70 72 6f 61 63 68 20 3c 77 69 6e 6b 3e 0a 20 20 20 20 20 .exceeded'.approach.<wink>......
59a00 20 20 20 20 20 20 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 72 65 71 2e 66 75 6c 6c 5f .......raise.HTTPError(req.full_
59a20 75 72 6c 2c 20 34 30 31 2c 20 22 64 69 67 65 73 74 20 61 75 74 68 20 66 61 69 6c 65 64 22 2c 0a url,.401,."digest.auth.failed",.
59a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 ............................head
59a60 65 72 73 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 ers,.None).........else:........
59a80 20 20 20 20 20 73 65 6c 66 2e 72 65 74 72 69 65 64 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 69 .....self.retried.+=.1.........i
59aa0 66 20 61 75 74 68 72 65 71 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 20 3d 20 f.authreq:.............scheme.=.
59ac0 61 75 74 68 72 65 71 2e 73 70 6c 69 74 28 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 authreq.split()[0].............i
59ae0 66 20 73 63 68 65 6d 65 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 27 64 69 67 65 73 74 27 3a 0a 20 20 f.scheme.lower().==.'digest':...
59b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 72 65 74 72 79 5f ..............return.self.retry_
59b20 68 74 74 70 5f 64 69 67 65 73 74 5f 61 75 74 68 28 72 65 71 2c 20 61 75 74 68 72 65 71 29 0a 20 http_digest_auth(req,.authreq)..
59b40 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 63 68 65 6d 65 2e 6c 6f 77 65 72 28 29 20 21 ...........elif.scheme.lower().!
59b60 3d 20 27 62 61 73 69 63 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 =.'basic':.................raise
59b80 20 56 61 6c 75 65 45 72 72 6f 72 28 22 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 .ValueError("AbstractDigestAuthH
59ba0 61 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 22 0a 20 20 20 20 20 20 20 andler.does.not.support"........
59bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 74 68 65 20 ..........................".the.
59be0 66 6f 6c 6c 6f 77 69 6e 67 20 73 63 68 65 6d 65 3a 20 27 25 73 27 22 20 25 20 73 63 68 65 6d 65 following.scheme:.'%s'".%.scheme
59c00 29 0a 0a 20 20 20 20 64 65 66 20 72 65 74 72 79 5f 68 74 74 70 5f 64 69 67 65 73 74 5f 61 75 74 )......def.retry_http_digest_aut
59c20 68 28 73 65 6c 66 2c 20 72 65 71 2c 20 61 75 74 68 29 3a 0a 20 20 20 20 20 20 20 20 74 6f 6b 65 h(self,.req,.auth):.........toke
59c40 6e 2c 20 63 68 61 6c 6c 65 6e 67 65 20 3d 20 61 75 74 68 2e 73 70 6c 69 74 28 27 20 27 2c 20 31 n,.challenge.=.auth.split('.',.1
59c60 29 0a 20 20 20 20 20 20 20 20 63 68 61 6c 20 3d 20 70 61 72 73 65 5f 6b 65 71 76 5f 6c 69 73 74 ).........chal.=.parse_keqv_list
59c80 28 66 69 6c 74 65 72 28 4e 6f 6e 65 2c 20 70 61 72 73 65 5f 68 74 74 70 5f 6c 69 73 74 28 63 68 (filter(None,.parse_http_list(ch
59ca0 61 6c 6c 65 6e 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 73 65 6c 66 2e 67 allenge))).........auth.=.self.g
59cc0 65 74 5f 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 28 72 65 71 2c 20 63 68 61 6c 29 0a 20 20 20 20 et_authorization(req,.chal).....
59ce0 20 20 20 20 69 66 20 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 5f 76 61 ....if.auth:.............auth_va
59d00 6c 20 3d 20 27 44 69 67 65 73 74 20 25 73 27 20 25 20 61 75 74 68 0a 20 20 20 20 20 20 20 20 20 l.=.'Digest.%s'.%.auth..........
59d20 20 20 20 69 66 20 72 65 71 2e 68 65 61 64 65 72 73 2e 67 65 74 28 73 65 6c 66 2e 61 75 74 68 5f ...if.req.headers.get(self.auth_
59d40 68 65 61 64 65 72 2c 20 4e 6f 6e 65 29 20 3d 3d 20 61 75 74 68 5f 76 61 6c 3a 0a 20 20 20 20 20 header,.None).==.auth_val:......
59d60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 ...........return.None..........
59d80 20 20 20 72 65 71 2e 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 28 73 ...req.add_unredirected_header(s
59da0 65 6c 66 2e 61 75 74 68 5f 68 65 61 64 65 72 2c 20 61 75 74 68 5f 76 61 6c 29 0a 20 20 20 20 20 elf.auth_header,.auth_val)......
59dc0 20 20 20 20 20 20 20 72 65 73 70 20 3d 20 73 65 6c 66 2e 70 61 72 65 6e 74 2e 6f 70 65 6e 28 72 .......resp.=.self.parent.open(r
59de0 65 71 2c 20 74 69 6d 65 6f 75 74 3d 72 65 71 2e 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 eq,.timeout=req.timeout)........
59e00 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 63 6e .....return.resp......def.get_cn
59e20 6f 6e 63 65 28 73 65 6c 66 2c 20 6e 6f 6e 63 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 54 68 65 once(self,.nonce):.........#.The
59e40 20 63 6e 6f 6e 63 65 2d 76 61 6c 75 65 20 69 73 20 61 6e 20 6f 70 61 71 75 65 0a 20 20 20 20 20 .cnonce-value.is.an.opaque......
59e60 20 20 20 23 20 71 75 6f 74 65 64 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 70 72 6f 76 69 64 65 ...#.quoted.string.value.provide
59e80 64 20 62 79 20 74 68 65 20 63 6c 69 65 6e 74 20 61 6e 64 20 75 73 65 64 20 62 79 20 62 6f 74 68 d.by.the.client.and.used.by.both
59ea0 20 63 6c 69 65 6e 74 0a 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 73 65 72 76 65 72 20 74 6f 20 .client.........#.and.server.to.
59ec0 61 76 6f 69 64 20 63 68 6f 73 65 6e 20 70 6c 61 69 6e 74 65 78 74 20 61 74 74 61 63 6b 73 2c 20 avoid.chosen.plaintext.attacks,.
59ee0 74 6f 20 70 72 6f 76 69 64 65 20 6d 75 74 75 61 6c 0a 20 20 20 20 20 20 20 20 23 20 61 75 74 68 to.provide.mutual.........#.auth
59f00 65 6e 74 69 63 61 74 69 6f 6e 2c 20 61 6e 64 20 74 6f 20 70 72 6f 76 69 64 65 20 73 6f 6d 65 20 entication,.and.to.provide.some.
59f20 6d 65 73 73 61 67 65 20 69 6e 74 65 67 72 69 74 79 20 70 72 6f 74 65 63 74 69 6f 6e 2e 0a 20 20 message.integrity.protection....
59f40 20 20 20 20 20 20 23 20 54 68 69 73 20 69 73 6e 27 74 20 61 20 66 61 62 75 6c 6f 75 73 20 65 66 ......#.This.isn't.a.fabulous.ef
59f60 66 6f 72 74 2c 20 62 75 74 20 69 74 27 73 20 70 72 6f 62 61 62 6c 79 20 47 6f 6f 64 20 45 6e 6f fort,.but.it's.probably.Good.Eno
59f80 75 67 68 2e 0a 20 20 20 20 20 20 20 20 73 20 3d 20 22 25 73 3a 25 73 3a 25 73 3a 22 20 25 20 28 ugh..........s.=."%s:%s:%s:".%.(
59fa0 73 65 6c 66 2e 6e 6f 6e 63 65 5f 63 6f 75 6e 74 2c 20 6e 6f 6e 63 65 2c 20 74 69 6d 65 2e 63 74 self.nonce_count,.nonce,.time.ct
59fc0 69 6d 65 28 29 29 0a 20 20 20 20 20 20 20 20 62 20 3d 20 73 2e 65 6e 63 6f 64 65 28 22 61 73 63 ime()).........b.=.s.encode("asc
59fe0 69 69 22 29 20 2b 20 5f 72 61 6e 64 6f 6d 62 79 74 65 73 28 38 29 0a 20 20 20 20 20 20 20 20 64 ii").+._randombytes(8).........d
5a000 69 67 20 3d 20 68 61 73 68 6c 69 62 2e 73 68 61 31 28 62 29 2e 68 65 78 64 69 67 65 73 74 28 29 ig.=.hashlib.sha1(b).hexdigest()
5a020 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 67 5b 3a 31 36 5d 0a 0a 20 20 20 20 64 65 .........return.dig[:16]......de
5a040 66 20 67 65 74 5f 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 28 73 65 6c 66 2c 20 72 65 71 2c 20 63 f.get_authorization(self,.req,.c
5a060 68 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 hal):.........try:.............r
5a080 65 61 6c 6d 20 3d 20 63 68 61 6c 5b 27 72 65 61 6c 6d 27 5d 0a 20 20 20 20 20 20 20 20 20 20 20 ealm.=.chal['realm']............
5a0a0 20 6e 6f 6e 63 65 20 3d 20 63 68 61 6c 5b 27 6e 6f 6e 63 65 27 5d 0a 20 20 20 20 20 20 20 20 20 .nonce.=.chal['nonce']..........
5a0c0 20 20 20 71 6f 70 20 3d 20 63 68 61 6c 2e 67 65 74 28 27 71 6f 70 27 29 0a 20 20 20 20 20 20 20 ...qop.=.chal.get('qop')........
5a0e0 20 20 20 20 20 61 6c 67 6f 72 69 74 68 6d 20 3d 20 63 68 61 6c 2e 67 65 74 28 27 61 6c 67 6f 72 .....algorithm.=.chal.get('algor
5a100 69 74 68 6d 27 2c 20 27 4d 44 35 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6d 6f 64 5f ithm',.'MD5').............#.mod_
5a120 64 69 67 65 73 74 20 64 6f 65 73 6e 27 74 20 73 65 6e 64 20 61 6e 20 6f 70 61 71 75 65 2c 20 65 digest.doesn't.send.an.opaque,.e
5a140 76 65 6e 20 74 68 6f 75 67 68 20 69 74 20 69 73 6e 27 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 ven.though.it.isn't.............
5a160 23 20 73 75 70 70 6f 73 65 64 20 74 6f 20 62 65 20 6f 70 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 #.supposed.to.be.optional.......
5a180 20 20 20 20 20 20 6f 70 61 71 75 65 20 3d 20 63 68 61 6c 2e 67 65 74 28 27 6f 70 61 71 75 65 27 ......opaque.=.chal.get('opaque'
5a1a0 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 72 72 6f 72 3a ,.None).........except.KeyError:
5a1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 20 20 20 .............return.None........
5a1e0 20 20 48 2c 20 4b 44 20 3d 20 73 65 6c 66 2e 67 65 74 5f 61 6c 67 6f 72 69 74 68 6d 5f 69 6d 70 ..H,.KD.=.self.get_algorithm_imp
5a200 6c 73 28 61 6c 67 6f 72 69 74 68 6d 29 0a 20 20 20 20 20 20 20 20 69 66 20 48 20 69 73 20 4e 6f ls(algorithm).........if.H.is.No
5a220 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 ne:.............return.None.....
5a240 20 20 20 20 20 75 73 65 72 2c 20 70 77 20 3d 20 73 65 6c 66 2e 70 61 73 73 77 64 2e 66 69 6e 64 .....user,.pw.=.self.passwd.find
5a260 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 28 72 65 61 6c 6d 2c 20 72 65 71 2e 66 75 6c 6c 5f 75 _user_password(realm,.req.full_u
5a280 72 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 rl).........if.user.is.None:....
5a2a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 20 20 20 20 20 23 20 .........return.None..........#.
5a2c0 58 58 58 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 79 65 74 0a 20 20 20 20 20 20 20 20 XXX.not.implemented.yet.........
5a2e0 69 66 20 72 65 71 2e 64 61 74 61 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 if.req.data.is.not.None:........
5a300 20 20 20 20 20 65 6e 74 64 69 67 20 3d 20 73 65 6c 66 2e 67 65 74 5f 65 6e 74 69 74 79 5f 64 69 .....entdig.=.self.get_entity_di
5a320 67 65 73 74 28 72 65 71 2e 64 61 74 61 2c 20 63 68 61 6c 29 0a 20 20 20 20 20 20 20 20 65 6c 73 gest(req.data,.chal).........els
5a340 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 74 64 69 67 20 3d 20 4e 6f 6e 65 0a 0a 20 20 e:.............entdig.=.None....
5a360 20 20 20 20 20 20 41 31 20 3d 20 22 25 73 3a 25 73 3a 25 73 22 20 25 20 28 75 73 65 72 2c 20 72 ......A1.=."%s:%s:%s".%.(user,.r
5a380 65 61 6c 6d 2c 20 70 77 29 0a 20 20 20 20 20 20 20 20 41 32 20 3d 20 22 25 73 3a 25 73 22 20 25 ealm,.pw).........A2.=."%s:%s".%
5a3a0 20 28 72 65 71 2e 67 65 74 5f 6d 65 74 68 6f 64 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 .(req.get_method(),.............
5a3c0 20 20 20 20 20 20 20 20 20 20 20 20 23 20 58 58 58 20 73 65 6c 65 63 74 6f 72 3a 20 77 68 61 74 ............#.XXX.selector:.what
5a3e0 20 61 62 6f 75 74 20 70 72 6f 78 69 65 73 20 61 6e 64 20 66 75 6c 6c 20 75 72 6c 73 0a 20 20 20 .about.proxies.and.full.urls....
5a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 2e 73 65 6c 65 63 74 6f .....................req.selecto
5a420 72 29 0a 20 20 20 20 20 20 20 20 69 66 20 71 6f 70 20 3d 3d 20 27 61 75 74 68 27 3a 0a 20 20 20 r).........if.qop.==.'auth':....
5a440 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 6e 63 65 20 3d 3d 20 73 65 6c 66 2e 6c 61 73 74 5f 6e .........if.nonce.==.self.last_n
5a460 6f 6e 63 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 6f 6e 63 65 once:.................self.nonce
5a480 5f 63 6f 75 6e 74 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 _count.+=.1.............else:...
5a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 6f 6e 63 65 5f 63 6f 75 6e 74 20 3d ..............self.nonce_count.=
5a4c0 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 61 73 74 5f 6e 6f 6e .1.................self.last_non
5a4e0 63 65 20 3d 20 6e 6f 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 63 76 61 6c 75 65 20 3d ce.=.nonce.............ncvalue.=
5a500 20 27 25 30 38 78 27 20 25 20 73 65 6c 66 2e 6e 6f 6e 63 65 5f 63 6f 75 6e 74 0a 20 20 20 20 20 .'%08x'.%.self.nonce_count......
5a520 20 20 20 20 20 20 20 63 6e 6f 6e 63 65 20 3d 20 73 65 6c 66 2e 67 65 74 5f 63 6e 6f 6e 63 65 28 .......cnonce.=.self.get_cnonce(
5a540 6e 6f 6e 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e 63 65 62 69 74 20 3d 20 22 25 nonce).............noncebit.=."%
5a560 73 3a 25 73 3a 25 73 3a 25 73 3a 25 73 22 20 25 20 28 6e 6f 6e 63 65 2c 20 6e 63 76 61 6c 75 65 s:%s:%s:%s:%s".%.(nonce,.ncvalue
5a580 2c 20 63 6e 6f 6e 63 65 2c 20 71 6f 70 2c 20 48 28 41 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 ,.cnonce,.qop,.H(A2))...........
5a5a0 20 20 72 65 73 70 64 69 67 20 3d 20 4b 44 28 48 28 41 31 29 2c 20 6e 6f 6e 63 65 62 69 74 29 0a ..respdig.=.KD(H(A1),.noncebit).
5a5c0 20 20 20 20 20 20 20 20 65 6c 69 66 20 71 6f 70 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 ........elif.qop.is.None:.......
5a5e0 20 20 20 20 20 20 72 65 73 70 64 69 67 20 3d 20 4b 44 28 48 28 41 31 29 2c 20 22 25 73 3a 25 73 ......respdig.=.KD(H(A1),."%s:%s
5a600 22 20 25 20 28 6e 6f 6e 63 65 2c 20 48 28 41 32 29 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 ".%.(nonce,.H(A2))).........else
5a620 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 58 58 58 20 68 61 6e 64 6c 65 20 61 75 74 68 2d :.............#.XXX.handle.auth-
5a640 69 6e 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 int..............raise.URLError(
5a660 22 71 6f 70 20 27 25 73 27 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 22 20 25 20 71 "qop.'%s'.is.not.supported.".%.q
5a680 6f 70 29 0a 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 73 68 6f 75 6c 64 20 74 68 65 20 70 61 op)..........#.XXX.should.the.pa
5a6a0 72 74 69 61 6c 20 64 69 67 65 73 74 73 20 62 65 20 65 6e 63 6f 64 65 64 20 74 6f 6f 3f 0a 0a 20 rtial.digests.be.encoded.too?...
5a6c0 20 20 20 20 20 20 20 62 61 73 65 20 3d 20 27 75 73 65 72 6e 61 6d 65 3d 22 25 73 22 2c 20 72 65 .......base.=.'username="%s",.re
5a6e0 61 6c 6d 3d 22 25 73 22 2c 20 6e 6f 6e 63 65 3d 22 25 73 22 2c 20 75 72 69 3d 22 25 73 22 2c 20 alm="%s",.nonce="%s",.uri="%s",.
5a700 27 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 65 73 70 6f 6e 73 65 3d 22 25 73 '.\................'response="%s
5a720 22 27 20 25 20 28 75 73 65 72 2c 20 72 65 61 6c 6d 2c 20 6e 6f 6e 63 65 2c 20 72 65 71 2e 73 65 "'.%.(user,.realm,.nonce,.req.se
5a740 6c 65 63 74 6f 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lector,.........................
5a760 20 20 20 20 20 20 20 20 20 20 72 65 73 70 64 69 67 29 0a 20 20 20 20 20 20 20 20 69 66 20 6f 70 ..........respdig).........if.op
5a780 61 71 75 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 20 2b 3d 20 27 2c 20 6f 70 61 aque:.............base.+=.',.opa
5a7a0 71 75 65 3d 22 25 73 22 27 20 25 20 6f 70 61 71 75 65 0a 20 20 20 20 20 20 20 20 69 66 20 65 6e que="%s"'.%.opaque.........if.en
5a7c0 74 64 69 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 20 2b 3d 20 27 2c 20 64 69 67 tdig:.............base.+=.',.dig
5a7e0 65 73 74 3d 22 25 73 22 27 20 25 20 65 6e 74 64 69 67 0a 20 20 20 20 20 20 20 20 62 61 73 65 20 est="%s"'.%.entdig.........base.
5a800 2b 3d 20 27 2c 20 61 6c 67 6f 72 69 74 68 6d 3d 22 25 73 22 27 20 25 20 61 6c 67 6f 72 69 74 68 +=.',.algorithm="%s"'.%.algorith
5a820 6d 0a 20 20 20 20 20 20 20 20 69 66 20 71 6f 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 m.........if.qop:.............ba
5a840 73 65 20 2b 3d 20 27 2c 20 71 6f 70 3d 61 75 74 68 2c 20 6e 63 3d 25 73 2c 20 63 6e 6f 6e 63 65 se.+=.',.qop=auth,.nc=%s,.cnonce
5a860 3d 22 25 73 22 27 20 25 20 28 6e 63 76 61 6c 75 65 2c 20 63 6e 6f 6e 63 65 29 0a 20 20 20 20 20 ="%s"'.%.(ncvalue,.cnonce)......
5a880 20 20 20 72 65 74 75 72 6e 20 62 61 73 65 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 61 6c 67 6f ...return.base......def.get_algo
5a8a0 72 69 74 68 6d 5f 69 6d 70 6c 73 28 73 65 6c 66 2c 20 61 6c 67 6f 72 69 74 68 6d 29 3a 0a 20 20 rithm_impls(self,.algorithm):...
5a8c0 20 20 20 20 20 20 23 20 6c 61 6d 62 64 61 73 20 61 73 73 75 6d 65 20 64 69 67 65 73 74 20 6d 6f ......#.lambdas.assume.digest.mo
5a8e0 64 75 6c 65 73 20 61 72 65 20 69 6d 70 6f 72 74 65 64 20 61 74 20 74 68 65 20 74 6f 70 20 6c 65 dules.are.imported.at.the.top.le
5a900 76 65 6c 0a 20 20 20 20 20 20 20 20 69 66 20 61 6c 67 6f 72 69 74 68 6d 20 3d 3d 20 27 4d 44 35 vel.........if.algorithm.==.'MD5
5a920 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 48 20 3d 20 6c 61 6d 62 64 61 20 78 3a 20 68 61 73 ':.............H.=.lambda.x:.has
5a940 68 6c 69 62 2e 6d 64 35 28 78 2e 65 6e 63 6f 64 65 28 22 61 73 63 69 69 22 29 29 2e 68 65 78 64 hlib.md5(x.encode("ascii")).hexd
5a960 69 67 65 73 74 28 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 61 6c 67 6f 72 69 74 68 6d 20 3d igest().........elif.algorithm.=
5a980 3d 20 27 53 48 41 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 48 20 3d 20 6c 61 6d 62 64 61 20 =.'SHA':.............H.=.lambda.
5a9a0 78 3a 20 68 61 73 68 6c 69 62 2e 73 68 61 31 28 78 2e 65 6e 63 6f 64 65 28 22 61 73 63 69 69 22 x:.hashlib.sha1(x.encode("ascii"
5a9c0 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 4d 44 35 )).hexdigest().........#.XXX.MD5
5a9e0 2d 73 65 73 73 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 -sess.........else:.............
5aa00 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 55 6e 73 75 70 70 6f 72 74 65 64 20 64 69 raise.ValueError("Unsupported.di
5aa20 67 65 73 74 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 22 0a 20 20 20 20 20 20 20 20 20 20 gest.authentication."...........
5aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 6c 67 6f 72 69 74 68 6d 20 25 72 ..................."algorithm.%r
5aa60 22 20 25 20 61 6c 67 6f 72 69 74 68 6d 29 0a 20 20 20 20 20 20 20 20 4b 44 20 3d 20 6c 61 6d 62 ".%.algorithm).........KD.=.lamb
5aa80 64 61 20 73 2c 20 64 3a 20 48 28 22 25 73 3a 25 73 22 20 25 20 28 73 2c 20 64 29 29 0a 20 20 20 da.s,.d:.H("%s:%s".%.(s,.d))....
5aaa0 20 20 20 20 20 72 65 74 75 72 6e 20 48 2c 20 4b 44 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 65 .....return.H,.KD......def.get_e
5aac0 6e 74 69 74 79 5f 64 69 67 65 73 74 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 63 68 61 6c 29 3a 0a ntity_digest(self,.data,.chal):.
5aae0 20 20 20 20 20 20 20 20 23 20 58 58 58 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 79 65 ........#.XXX.not.implemented.ye
5ab00 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 0a 63 6c 61 73 73 20 48 54 t.........return.None...class.HT
5ab20 54 50 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 6c 65 72 2c TPDigestAuthHandler(BaseHandler,
5ab40 20 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 .AbstractDigestAuthHandler):....
5ab60 20 22 22 22 41 6e 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 70 72 6f 74 6f 63 6f 6c 20 64 ."""An.authentication.protocol.d
5ab80 65 66 69 6e 65 64 20 62 79 20 52 46 43 20 32 30 36 39 0a 0a 20 20 20 20 44 69 67 65 73 74 20 61 efined.by.RFC.2069......Digest.a
5aba0 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 69 6d 70 72 6f 76 65 73 20 6f 6e 20 62 61 73 69 63 20 uthentication.improves.on.basic.
5abc0 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 62 65 63 61 75 73 65 20 69 74 0a 20 20 20 20 64 6f authentication.because.it.....do
5abe0 65 73 20 6e 6f 74 20 74 72 61 6e 73 6d 69 74 20 70 61 73 73 77 6f 72 64 73 20 69 6e 20 74 68 65 es.not.transmit.passwords.in.the
5ac00 20 63 6c 65 61 72 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 61 75 74 68 5f 68 65 61 64 65 72 .clear......"""......auth_header
5ac20 20 3d 20 27 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 27 0a 20 20 20 20 68 61 6e 64 6c 65 72 5f 6f .=.'Authorization'.....handler_o
5ac40 72 64 65 72 20 3d 20 34 39 30 20 20 23 20 62 65 66 6f 72 65 20 42 61 73 69 63 20 61 75 74 68 0a rder.=.490..#.before.Basic.auth.
5ac60 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 31 28 73 65 6c 66 2c 20 72 65 .....def.http_error_401(self,.re
5ac80 71 2c 20 66 70 2c 20 63 6f 64 65 2c 20 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 q,.fp,.code,.msg,.headers):.....
5aca0 20 20 20 20 68 6f 73 74 20 3d 20 75 72 6c 70 61 72 73 65 28 72 65 71 2e 66 75 6c 6c 5f 75 72 6c ....host.=.urlparse(req.full_url
5acc0 29 5b 31 5d 0a 20 20 20 20 20 20 20 20 72 65 74 72 79 20 3d 20 73 65 6c 66 2e 68 74 74 70 5f 65 )[1].........retry.=.self.http_e
5ace0 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 27 77 77 77 2d 61 75 74 68 65 6e 74 69 63 61 74 rror_auth_reqed('www-authenticat
5ad00 65 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e',.............................
5ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 72 65 71 2c 20 68 65 61 64 65 72 ...............host,.req,.header
5ad40 73 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 65 74 5f 72 65 74 72 79 5f 63 6f 75 6e s).........self.reset_retry_coun
5ad60 74 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 72 79 0a 0a 0a 63 6c 61 73 73 t().........return.retry...class
5ad80 20 50 72 6f 78 79 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 .ProxyDigestAuthHandler(BaseHand
5ada0 6c 65 72 2c 20 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 29 3a ler,.AbstractDigestAuthHandler):
5adc0 0a 0a 20 20 20 20 61 75 74 68 5f 68 65 61 64 65 72 20 3d 20 27 50 72 6f 78 79 2d 41 75 74 68 6f ......auth_header.=.'Proxy-Autho
5ade0 72 69 7a 61 74 69 6f 6e 27 0a 20 20 20 20 68 61 6e 64 6c 65 72 5f 6f 72 64 65 72 20 3d 20 34 39 rization'.....handler_order.=.49
5ae00 30 20 20 23 20 62 65 66 6f 72 65 20 42 61 73 69 63 20 61 75 74 68 0a 0a 20 20 20 20 64 65 66 20 0..#.before.Basic.auth......def.
5ae20 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 37 28 73 65 6c 66 2c 20 72 65 71 2c 20 66 70 2c 20 63 6f http_error_407(self,.req,.fp,.co
5ae40 64 65 2c 20 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 de,.msg,.headers):.........host.
5ae60 3d 20 72 65 71 2e 68 6f 73 74 0a 20 20 20 20 20 20 20 20 72 65 74 72 79 20 3d 20 73 65 6c 66 2e =.req.host.........retry.=.self.
5ae80 68 74 74 70 5f 65 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 27 70 72 6f 78 79 2d 61 75 74 http_error_auth_reqed('proxy-aut
5aea0 68 65 6e 74 69 63 61 74 65 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 henticate',.....................
5aec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 72 65 71 .......................host,.req
5aee0 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 65 74 5f 72 65 ,.headers).........self.reset_re
5af00 74 72 79 5f 63 6f 75 6e 74 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 72 79 try_count().........return.retry
5af20 0a 0a 63 6c 61 73 73 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 28 42 61 73 65 ..class.AbstractHTTPHandler(Base
5af40 48 61 6e 64 6c 65 72 29 3a 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 Handler):......def.__init__(self
5af60 2c 20 64 65 62 75 67 6c 65 76 65 6c 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 ,.debuglevel=0):.........self._d
5af80 65 62 75 67 6c 65 76 65 6c 20 3d 20 64 65 62 75 67 6c 65 76 65 6c 0a 0a 20 20 20 20 64 65 66 20 ebuglevel.=.debuglevel......def.
5afa0 73 65 74 5f 68 74 74 70 5f 64 65 62 75 67 6c 65 76 65 6c 28 73 65 6c 66 2c 20 6c 65 76 65 6c 29 set_http_debuglevel(self,.level)
5afc0 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 65 62 75 67 6c 65 76 65 6c 20 3d 20 6c 65 76 :.........self._debuglevel.=.lev
5afe0 65 6c 0a 0a 20 20 20 20 64 65 66 20 5f 67 65 74 5f 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 28 el......def._get_content_length(
5b000 73 65 6c 66 2c 20 72 65 71 75 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 self,.request):.........return.h
5b020 74 74 70 2e 63 6c 69 65 6e 74 2e 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 67 65 74 5f 63 ttp.client.HTTPConnection._get_c
5b040 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 ontent_length(.............reque
5b060 73 74 2e 64 61 74 61 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 67 65 74 st.data,.............request.get
5b080 5f 6d 65 74 68 6f 64 28 29 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 72 65 71 75 65 73 74 5f 28 _method())......def.do_request_(
5b0a0 73 65 6c 66 2c 20 72 65 71 75 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 self,.request):.........host.=.r
5b0c0 65 71 75 65 73 74 2e 68 6f 73 74 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a equest.host.........if.not.host:
5b0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 6e 6f 20 .............raise.URLError('no.
5b100 68 6f 73 74 20 67 69 76 65 6e 27 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 75 65 73 74 host.given')..........if.request
5b120 2e 64 61 74 61 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 20 20 23 20 50 4f 53 54 0a 20 20 20 20 20 .data.is.not.None:..#.POST......
5b140 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 72 65 71 75 65 73 74 2e 64 61 74 61 0a 20 20 20 20 20 .......data.=.request.data......
5b160 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 64 61 74 61 2c 20 73 74 72 29 3a .......if.isinstance(data,.str):
5b180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 22 50 4f 53 54 20 64 61 74 .................msg.=."POST.dat
5b1a0 61 20 73 68 6f 75 6c 64 20 62 65 20 62 79 74 65 73 2c 20 61 6e 20 69 74 65 72 61 62 6c 65 20 6f a.should.be.bytes,.an.iterable.o
5b1c0 66 20 62 79 74 65 73 2c 20 22 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.bytes,.".\....................
5b1e0 20 20 20 22 6f 72 20 61 20 66 69 6c 65 20 6f 62 6a 65 63 74 2e 20 49 74 20 63 61 6e 6e 6f 74 20 ..."or.a.file.object..It.cannot.
5b200 62 65 20 6f 66 20 74 79 70 65 20 73 74 72 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 be.of.type.str."................
5b220 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 .raise.TypeError(msg)...........
5b240 20 20 69 66 20 6e 6f 74 20 72 65 71 75 65 73 74 2e 68 61 73 5f 68 65 61 64 65 72 28 27 43 6f 6e ..if.not.request.has_header('Con
5b260 74 65 6e 74 2d 74 79 70 65 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 tent-type'):.................req
5b280 75 65 73 74 2e 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 28 0a 20 20 uest.add_unredirected_header(...
5b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 43 6f 6e 74 65 6e 74 2d 74 79 70 65 27 ..................'Content-type'
5b2c0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 61 70 70 6c 69 63 61 74 69 ,.....................'applicati
5b2e0 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 27 29 0a 20 20 20 20 20 on/x-www-form-urlencoded')......
5b300 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 72 65 71 75 65 73 74 2e 68 61 73 5f 68 65 61 64 65 .......if.(not.request.has_heade
5b320 72 28 27 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 r('Content-length').............
5b340 20 20 20 20 20 20 20 20 61 6e 64 20 6e 6f 74 20 72 65 71 75 65 73 74 2e 68 61 73 5f 68 65 61 64 ........and.not.request.has_head
5b360 65 72 28 27 54 72 61 6e 73 66 65 72 2d 65 6e 63 6f 64 69 6e 67 27 29 29 3a 0a 20 20 20 20 20 20 er('Transfer-encoding')):.......
5b380 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 20 3d 20 73 65 6c 66 2e ..........content_length.=.self.
5b3a0 5f 67 65 74 5f 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 28 72 65 71 75 65 73 74 29 0a 20 20 20 _get_content_length(request)....
5b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 20 69 .............if.content_length.i
5b3e0 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.not.None:.....................
5b400 72 65 71 75 65 73 74 2e 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 28 request.add_unredirected_header(
5b420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 43 6f .............................'Co
5b440 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 27 2c 20 73 74 72 28 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 ntent-length',.str(content_lengt
5b460 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 h)).................else:.......
5b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 61 64 64 5f 75 6e 72 65 64 69 ..............request.add_unredi
5b4a0 72 65 63 74 65 64 5f 68 65 61 64 65 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rected_header(..................
5b4c0 20 20 20 20 20 20 20 20 20 20 20 27 54 72 61 6e 73 66 65 72 2d 65 6e 63 6f 64 69 6e 67 27 2c 20 ...........'Transfer-encoding',.
5b4e0 27 63 68 75 6e 6b 65 64 27 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 5f 68 6f 73 74 20 3d 20 68 'chunked')..........sel_host.=.h
5b500 6f 73 74 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 75 65 73 74 2e 68 61 73 5f 70 72 6f 78 79 ost.........if.request.has_proxy
5b520 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 2c 20 73 65 6c 20 3d 20 73 70 ():.............scheme,.sel.=.sp
5b540 6c 69 74 74 79 70 65 28 72 65 71 75 65 73 74 2e 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 littype(request.selector).......
5b560 20 20 20 20 20 20 73 65 6c 5f 68 6f 73 74 2c 20 73 65 6c 5f 70 61 74 68 20 3d 20 73 70 6c 69 74 ......sel_host,.sel_path.=.split
5b580 68 6f 73 74 28 73 65 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 71 75 65 73 74 host(sel).........if.not.request
5b5a0 2e 68 61 73 5f 68 65 61 64 65 72 28 27 48 6f 73 74 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 .has_header('Host'):............
5b5c0 20 72 65 71 75 65 73 74 2e 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 .request.add_unredirected_header
5b5e0 28 27 48 6f 73 74 27 2c 20 73 65 6c 5f 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6e ('Host',.sel_host).........for.n
5b600 61 6d 65 2c 20 76 61 6c 75 65 20 69 6e 20 73 65 6c 66 2e 70 61 72 65 6e 74 2e 61 64 64 68 65 61 ame,.value.in.self.parent.addhea
5b620 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 63 61 ders:.............name.=.name.ca
5b640 70 69 74 61 6c 69 7a 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 pitalize().............if.not.re
5b660 71 75 65 73 74 2e 68 61 73 5f 68 65 61 64 65 72 28 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 quest.has_header(name):.........
5b680 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 61 64 64 5f 75 6e 72 65 64 69 72 65 63 74 65 64 ........request.add_unredirected
5b6a0 5f 68 65 61 64 65 72 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 0a 0a 20 20 20 20 20 20 20 20 72 65 _header(name,.value)..........re
5b6c0 74 75 72 6e 20 72 65 71 75 65 73 74 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 6f 70 65 6e 28 73 65 turn.request......def.do_open(se
5b6e0 6c 66 2c 20 68 74 74 70 5f 63 6c 61 73 73 2c 20 72 65 71 2c 20 2a 2a 68 74 74 70 5f 63 6f 6e 6e lf,.http_class,.req,.**http_conn
5b700 5f 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 6e 20 48 54 54 _args):........."""Return.an.HTT
5b720 50 52 65 73 70 6f 6e 73 65 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 PResponse.object.for.the.request
5b740 2c 20 75 73 69 6e 67 20 68 74 74 70 5f 63 6c 61 73 73 2e 0a 0a 20 20 20 20 20 20 20 20 68 74 74 ,.using.http_class...........htt
5b760 70 5f 63 6c 61 73 73 20 6d 75 73 74 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 48 54 54 50 43 p_class.must.implement.the.HTTPC
5b780 6f 6e 6e 65 63 74 69 6f 6e 20 41 50 49 20 66 72 6f 6d 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e 0a onnection.API.from.http.client..
5b7a0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 2e 68 ........""".........host.=.req.h
5b7c0 6f 73 74 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 ost.........if.not.host:........
5b7e0 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 6e 6f 20 68 6f 73 74 20 67 69 76 .....raise.URLError('no.host.giv
5b800 65 6e 27 29 0a 0a 20 20 20 20 20 20 20 20 23 20 77 69 6c 6c 20 70 61 72 73 65 20 68 6f 73 74 3a en')..........#.will.parse.host:
5b820 70 6f 72 74 0a 20 20 20 20 20 20 20 20 68 20 3d 20 68 74 74 70 5f 63 6c 61 73 73 28 68 6f 73 74 port.........h.=.http_class(host
5b840 2c 20 74 69 6d 65 6f 75 74 3d 72 65 71 2e 74 69 6d 65 6f 75 74 2c 20 2a 2a 68 74 74 70 5f 63 6f ,.timeout=req.timeout,.**http_co
5b860 6e 6e 5f 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 68 2e 73 65 74 5f 64 65 62 75 67 6c 65 76 65 nn_args).........h.set_debugleve
5b880 6c 28 73 65 6c 66 2e 5f 64 65 62 75 67 6c 65 76 65 6c 29 0a 0a 20 20 20 20 20 20 20 20 68 65 61 l(self._debuglevel)..........hea
5b8a0 64 65 72 73 20 3d 20 64 69 63 74 28 72 65 71 2e 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 64 72 ders.=.dict(req.unredirected_hdr
5b8c0 73 29 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 2e 75 70 64 61 74 65 28 7b 6b 3a 20 76 20 s).........headers.update({k:.v.
5b8e0 66 6f 72 20 6b 2c 20 76 20 69 6e 20 72 65 71 2e 68 65 61 64 65 72 73 2e 69 74 65 6d 73 28 29 0a for.k,.v.in.req.headers.items().
5b900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 20 6e 6f 74 ........................if.k.not
5b920 20 69 6e 20 68 65 61 64 65 72 73 7d 29 0a 0a 20 20 20 20 20 20 20 20 23 20 54 4f 44 4f 28 6a 68 .in.headers})..........#.TODO(jh
5b940 79 6c 74 6f 6e 29 3a 20 53 68 6f 75 6c 64 20 74 68 69 73 20 62 65 20 72 65 64 65 73 69 67 6e 65 ylton):.Should.this.be.redesigne
5b960 64 20 74 6f 20 68 61 6e 64 6c 65 0a 20 20 20 20 20 20 20 20 23 20 70 65 72 73 69 73 74 65 6e 74 d.to.handle.........#.persistent
5b980 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 3f 0a 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 77 61 6e 74 .connections?..........#.We.want
5b9a0 20 74 6f 20 6d 61 6b 65 20 61 6e 20 48 54 54 50 2f 31 2e 31 20 72 65 71 75 65 73 74 2c 20 62 75 .to.make.an.HTTP/1.1.request,.bu
5b9c0 74 20 74 68 65 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 20 20 20 20 23 20 63 6c 61 73 73 t.the.addinfourl.........#.class
5b9e0 20 69 73 6e 27 74 20 70 72 65 70 61 72 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 61 20 70 .isn't.prepared.to.deal.with.a.p
5ba00 65 72 73 69 73 74 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 23 20 ersistent.connection..........#.
5ba20 49 74 20 77 69 6c 6c 20 74 72 79 20 74 6f 20 72 65 61 64 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e It.will.try.to.read.all.remainin
5ba40 67 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20 73 6f 63 6b 65 74 2c 0a 20 20 20 20 20 20 20 20 g.data.from.the.socket,.........
5ba60 23 20 77 68 69 63 68 20 77 69 6c 6c 20 62 6c 6f 63 6b 20 77 68 69 6c 65 20 74 68 65 20 73 65 72 #.which.will.block.while.the.ser
5ba80 76 65 72 20 77 61 69 74 73 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 2e 0a ver.waits.for.the.next.request..
5baa0 20 20 20 20 20 20 20 20 23 20 53 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20 63 6f 6e 6e 65 ........#.So.make.sure.the.conne
5bac0 63 74 69 6f 6e 20 67 65 74 73 20 63 6c 6f 73 65 64 20 61 66 74 65 72 20 74 68 65 20 28 6f 6e 6c ction.gets.closed.after.the.(onl
5bae0 79 29 0a 20 20 20 20 20 20 20 20 23 20 72 65 71 75 65 73 74 2e 0a 20 20 20 20 20 20 20 20 68 65 y).........#.request..........he
5bb00 61 64 65 72 73 5b 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 5d 20 3d 20 22 63 6c 6f 73 65 22 0a 20 20 aders["Connection"].=."close"...
5bb20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 7b 6e 61 6d 65 2e 74 69 74 6c 65 28 29 3a 20 76 ......headers.=.{name.title():.v
5bb40 61 6c 20 66 6f 72 20 6e 61 6d 65 2c 20 76 61 6c 20 69 6e 20 68 65 61 64 65 72 73 2e 69 74 65 6d al.for.name,.val.in.headers.item
5bb60 73 28 29 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 2e 5f 74 75 6e 6e 65 6c 5f 68 6f 73 s()}..........if.req._tunnel_hos
5bb80 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 75 6e 6e 65 6c 5f 68 65 61 64 65 72 73 20 3d 20 t:.............tunnel_headers.=.
5bba0 7b 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 61 75 74 68 5f 68 64 72 20 3d 20 {}.............proxy_auth_hdr.=.
5bbc0 22 50 72 6f 78 79 2d 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 0a 20 20 20 20 20 20 20 20 20 20 "Proxy-Authorization"...........
5bbe0 20 20 69 66 20 70 72 6f 78 79 5f 61 75 74 68 5f 68 64 72 20 69 6e 20 68 65 61 64 65 72 73 3a 0a ..if.proxy_auth_hdr.in.headers:.
5bc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 75 6e 6e 65 6c 5f 68 65 61 64 65 72 73 5b 70 ................tunnel_headers[p
5bc20 72 6f 78 79 5f 61 75 74 68 5f 68 64 72 5d 20 3d 20 68 65 61 64 65 72 73 5b 70 72 6f 78 79 5f 61 roxy_auth_hdr].=.headers[proxy_a
5bc40 75 74 68 5f 68 64 72 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 50 72 6f 78 79 uth_hdr].................#.Proxy
5bc60 2d 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 73 65 6e -Authorization.should.not.be.sen
5bc80 74 20 74 6f 20 6f 72 69 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 t.to.origin.................#.se
5bca0 72 76 65 72 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 68 65 61 64 65 72 rver..................del.header
5bcc0 73 5b 70 72 6f 78 79 5f 61 75 74 68 5f 68 64 72 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 2e s[proxy_auth_hdr].............h.
5bce0 73 65 74 5f 74 75 6e 6e 65 6c 28 72 65 71 2e 5f 74 75 6e 6e 65 6c 5f 68 6f 73 74 2c 20 68 65 61 set_tunnel(req._tunnel_host,.hea
5bd00 64 65 72 73 3d 74 75 6e 6e 65 6c 5f 68 65 61 64 65 72 73 29 0a 0a 20 20 20 20 20 20 20 20 74 72 ders=tunnel_headers)..........tr
5bd20 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 y:.............try:.............
5bd40 20 20 20 20 68 2e 72 65 71 75 65 73 74 28 72 65 71 2e 67 65 74 5f 6d 65 74 68 6f 64 28 29 2c 20 ....h.request(req.get_method(),.
5bd60 72 65 71 2e 73 65 6c 65 63 74 6f 72 2c 20 72 65 71 2e 64 61 74 61 2c 20 68 65 61 64 65 72 73 2c req.selector,.req.data,.headers,
5bd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 6f 64 ...........................encod
5bda0 65 5f 63 68 75 6e 6b 65 64 3d 72 65 71 2e 68 61 73 5f 68 65 61 64 65 72 28 27 54 72 61 6e 73 66 e_chunked=req.has_header('Transf
5bdc0 65 72 2d 65 6e 63 6f 64 69 6e 67 27 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 er-encoding')).............excep
5bde0 74 20 4f 53 45 72 72 6f 72 20 61 73 20 65 72 72 3a 20 23 20 74 69 6d 65 6f 75 74 20 65 72 72 6f t.OSError.as.err:.#.timeout.erro
5be00 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 r.................raise.URLError
5be20 28 65 72 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 20 3d 20 68 2e 67 65 74 72 65 73 70 6f (err).............r.=.h.getrespo
5be40 6e 73 65 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 nse().........except:...........
5be60 20 20 68 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 0a 0a 20 ..h.close().............raise...
5be80 20 20 20 20 20 20 20 23 20 49 66 20 74 68 65 20 73 65 72 76 65 72 20 64 6f 65 73 20 6e 6f 74 20 .......#.If.the.server.does.not.
5bea0 73 65 6e 64 20 75 73 20 61 20 27 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 27 20 68 65 send.us.a.'Connection:.close'.he
5bec0 61 64 65 72 2c 0a 20 20 20 20 20 20 20 20 23 20 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 20 61 ader,.........#.HTTPConnection.a
5bee0 73 73 75 6d 65 73 20 74 68 65 20 73 6f 63 6b 65 74 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 74 ssumes.the.socket.should.be.left
5bf00 20 6f 70 65 6e 2e 20 4d 61 6e 75 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 23 20 6d 61 72 6b 20 74 .open..Manually.........#.mark.t
5bf20 68 65 20 73 6f 63 6b 65 74 20 74 6f 20 62 65 20 63 6c 6f 73 65 64 20 77 68 65 6e 20 74 68 69 73 he.socket.to.be.closed.when.this
5bf40 20 72 65 73 70 6f 6e 73 65 20 6f 62 6a 65 63 74 20 67 6f 65 73 20 61 77 61 79 2e 0a 20 20 20 20 .response.object.goes.away......
5bf60 20 20 20 20 69 66 20 68 2e 73 6f 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 73 6f 63 ....if.h.sock:.............h.soc
5bf80 6b 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 73 6f 63 6b 20 3d 20 4e k.close().............h.sock.=.N
5bfa0 6f 6e 65 0a 0a 20 20 20 20 20 20 20 20 72 2e 75 72 6c 20 3d 20 72 65 71 2e 67 65 74 5f 66 75 6c one..........r.url.=.req.get_ful
5bfc0 6c 5f 75 72 6c 28 29 0a 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 6c 69 6e 65 20 72 65 70 6c l_url().........#.This.line.repl
5bfe0 61 63 65 73 20 74 68 65 20 2e 6d 73 67 20 61 74 74 72 69 62 75 74 65 20 6f 66 20 74 68 65 20 48 aces.the..msg.attribute.of.the.H
5c000 54 54 50 52 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 2e 68 65 61 64 TTPResponse.........#.with..head
5c020 65 72 73 2c 20 62 65 63 61 75 73 65 20 75 72 6c 6c 69 62 20 63 6c 69 65 6e 74 73 20 65 78 70 65 ers,.because.urllib.clients.expe
5c040 63 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 74 6f 0a 20 20 20 20 20 20 20 20 23 20 68 61 76 ct.the.response.to.........#.hav
5c060 65 20 74 68 65 20 72 65 61 73 6f 6e 20 69 6e 20 2e 6d 73 67 2e 20 20 49 74 20 77 6f 75 6c 64 20 e.the.reason.in..msg...It.would.
5c080 62 65 20 67 6f 6f 64 20 74 6f 20 6d 61 72 6b 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 23 20 61 be.good.to.mark.this.........#.a
5c0a0 74 74 72 69 62 75 74 65 20 69 73 20 64 65 70 72 65 63 61 74 65 64 20 61 6e 64 20 67 65 74 20 74 ttribute.is.deprecated.and.get.t
5c0c0 68 65 6e 20 74 6f 20 75 73 65 20 69 6e 66 6f 28 29 20 6f 72 0a 20 20 20 20 20 20 20 20 23 20 2e hen.to.use.info().or.........#..
5c0e0 68 65 61 64 65 72 73 2e 0a 20 20 20 20 20 20 20 20 72 2e 6d 73 67 20 3d 20 72 2e 72 65 61 73 6f headers..........r.msg.=.r.reaso
5c100 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 48 n.........return.r...class.HTTPH
5c120 61 6e 64 6c 65 72 28 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 29 3a 0a 0a 20 20 andler(AbstractHTTPHandler):....
5c140 20 20 64 65 66 20 68 74 74 70 5f 6f 70 65 6e 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 ..def.http_open(self,.req):.....
5c160 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 6f 5f 6f 70 65 6e 28 68 74 74 70 2e 63 6c 69 ....return.self.do_open(http.cli
5c180 65 6e 74 2e 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 2c 20 72 65 71 29 0a 0a 20 20 20 20 68 74 ent.HTTPConnection,.req)......ht
5c1a0 74 70 5f 72 65 71 75 65 73 74 20 3d 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 tp_request.=.AbstractHTTPHandler
5c1c0 2e 64 6f 5f 72 65 71 75 65 73 74 5f 0a 0a 69 66 20 68 61 73 61 74 74 72 28 68 74 74 70 2e 63 6c .do_request_..if.hasattr(http.cl
5c1e0 69 65 6e 74 2c 20 27 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 27 29 3a 0a 0a 20 20 20 20 63 ient,.'HTTPSConnection'):......c
5c200 6c 61 73 73 20 48 54 54 50 53 48 61 6e 64 6c 65 72 28 41 62 73 74 72 61 63 74 48 54 54 50 48 61 lass.HTTPSHandler(AbstractHTTPHa
5c220 6e 64 6c 65 72 29 3a 0a 0a 20 20 20 20 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 ndler):..........def.__init__(se
5c240 6c 66 2c 20 64 65 62 75 67 6c 65 76 65 6c 3d 30 2c 20 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 2c 20 lf,.debuglevel=0,.context=None,.
5c260 63 68 65 63 6b 5f 68 6f 73 74 6e 61 6d 65 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 check_hostname=None):...........
5c280 20 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 ..AbstractHTTPHandler.__init__(s
5c2a0 65 6c 66 2c 20 64 65 62 75 67 6c 65 76 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c elf,.debuglevel).............sel
5c2c0 66 2e 5f 63 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 f._context.=.context............
5c2e0 20 73 65 6c 66 2e 5f 63 68 65 63 6b 5f 68 6f 73 74 6e 61 6d 65 20 3d 20 63 68 65 63 6b 5f 68 6f .self._check_hostname.=.check_ho
5c300 73 74 6e 61 6d 65 0a 0a 20 20 20 20 20 20 20 20 64 65 66 20 68 74 74 70 73 5f 6f 70 65 6e 28 73 stname..........def.https_open(s
5c320 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 elf,.req):.............return.se
5c340 6c 66 2e 64 6f 5f 6f 70 65 6e 28 68 74 74 70 2e 63 6c 69 65 6e 74 2e 48 54 54 50 53 43 6f 6e 6e lf.do_open(http.client.HTTPSConn
5c360 65 63 74 69 6f 6e 2c 20 72 65 71 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e ection,.req,.................con
5c380 74 65 78 74 3d 73 65 6c 66 2e 5f 63 6f 6e 74 65 78 74 2c 20 63 68 65 63 6b 5f 68 6f 73 74 6e 61 text=self._context,.check_hostna
5c3a0 6d 65 3d 73 65 6c 66 2e 5f 63 68 65 63 6b 5f 68 6f 73 74 6e 61 6d 65 29 0a 0a 20 20 20 20 20 20 me=self._check_hostname)........
5c3c0 20 20 68 74 74 70 73 5f 72 65 71 75 65 73 74 20 3d 20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 ..https_request.=.AbstractHTTPHa
5c3e0 6e 64 6c 65 72 2e 64 6f 5f 72 65 71 75 65 73 74 5f 0a 0a 20 20 20 20 5f 5f 61 6c 6c 5f 5f 2e 61 ndler.do_request_......__all__.a
5c400 70 70 65 6e 64 28 27 48 54 54 50 53 48 61 6e 64 6c 65 72 27 29 0a 0a 63 6c 61 73 73 20 48 54 54 ppend('HTTPSHandler')..class.HTT
5c420 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 28 42 61 73 65 48 61 6e 64 6c 65 72 29 3a 0a 20 PCookieProcessor(BaseHandler):..
5c440 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 63 6f 6f 6b 69 65 6a 61 72 3d ...def.__init__(self,.cookiejar=
5c460 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 68 74 74 70 2e 63 6f 6f 6b 69 None):.........import.http.cooki
5c480 65 6a 61 72 0a 20 20 20 20 20 20 20 20 69 66 20 63 6f 6f 6b 69 65 6a 61 72 20 69 73 20 4e 6f 6e ejar.........if.cookiejar.is.Non
5c4a0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 69 65 6a 61 72 20 3d 20 68 74 74 70 2e e:.............cookiejar.=.http.
5c4c0 63 6f 6f 6b 69 65 6a 61 72 2e 43 6f 6f 6b 69 65 4a 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 cookiejar.CookieJar().........se
5c4e0 6c 66 2e 63 6f 6f 6b 69 65 6a 61 72 20 3d 20 63 6f 6f 6b 69 65 6a 61 72 0a 0a 20 20 20 20 64 65 lf.cookiejar.=.cookiejar......de
5c500 66 20 68 74 74 70 5f 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 72 65 71 75 65 73 74 29 3a 0a 20 f.http_request(self,.request):..
5c520 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6f 6b 69 65 6a 61 72 2e 61 64 64 5f 63 6f 6f 6b 69 65 .......self.cookiejar.add_cookie
5c540 5f 68 65 61 64 65 72 28 72 65 71 75 65 73 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 _header(request).........return.
5c560 72 65 71 75 65 73 74 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 28 73 request......def.http_response(s
5c580 65 6c 66 2c 20 72 65 71 75 65 73 74 2c 20 72 65 73 70 6f 6e 73 65 29 3a 0a 20 20 20 20 20 20 20 elf,.request,.response):........
5c5a0 20 73 65 6c 66 2e 63 6f 6f 6b 69 65 6a 61 72 2e 65 78 74 72 61 63 74 5f 63 6f 6f 6b 69 65 73 28 .self.cookiejar.extract_cookies(
5c5c0 72 65 73 70 6f 6e 73 65 2c 20 72 65 71 75 65 73 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 response,.request).........retur
5c5e0 6e 20 72 65 73 70 6f 6e 73 65 0a 0a 20 20 20 20 68 74 74 70 73 5f 72 65 71 75 65 73 74 20 3d 20 n.response......https_request.=.
5c600 68 74 74 70 5f 72 65 71 75 65 73 74 0a 20 20 20 20 68 74 74 70 73 5f 72 65 73 70 6f 6e 73 65 20 http_request.....https_response.
5c620 3d 20 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 0a 0a 63 6c 61 73 73 20 55 6e 6b 6e 6f 77 6e 48 61 =.http_response..class.UnknownHa
5c640 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 64 65 66 20 75 6e 6b 6e ndler(BaseHandler):.....def.unkn
5c660 6f 77 6e 5f 6f 70 65 6e 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 74 79 70 own_open(self,.req):.........typ
5c680 65 20 3d 20 72 65 71 2e 74 79 70 65 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 e.=.req.type.........raise.URLEr
5c6a0 72 6f 72 28 27 75 6e 6b 6e 6f 77 6e 20 75 72 6c 20 74 79 70 65 3a 20 25 73 27 20 25 20 74 79 70 ror('unknown.url.type:.%s'.%.typ
5c6c0 65 29 0a 0a 64 65 66 20 70 61 72 73 65 5f 6b 65 71 76 5f 6c 69 73 74 28 6c 29 3a 0a 20 20 20 20 e)..def.parse_keqv_list(l):.....
5c6e0 22 22 22 50 61 72 73 65 20 6c 69 73 74 20 6f 66 20 6b 65 79 3d 76 61 6c 75 65 20 73 74 72 69 6e """Parse.list.of.key=value.strin
5c700 67 73 20 77 68 65 72 65 20 6b 65 79 73 20 61 72 65 20 6e 6f 74 20 64 75 70 6c 69 63 61 74 65 64 gs.where.keys.are.not.duplicated
5c720 2e 22 22 22 0a 20 20 20 20 70 61 72 73 65 64 20 3d 20 7b 7d 0a 20 20 20 20 66 6f 72 20 65 6c 74 .""".....parsed.=.{}.....for.elt
5c740 20 69 6e 20 6c 3a 0a 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 65 6c 74 2e 73 70 6c 69 74 28 .in.l:.........k,.v.=.elt.split(
5c760 27 3d 27 2c 20 31 29 0a 20 20 20 20 20 20 20 20 69 66 20 76 5b 30 5d 20 3d 3d 20 27 22 27 20 61 '=',.1).........if.v[0].==.'"'.a
5c780 6e 64 20 76 5b 2d 31 5d 20 3d 3d 20 27 22 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 20 3d nd.v[-1].==.'"':.............v.=
5c7a0 20 76 5b 31 3a 2d 31 5d 0a 20 20 20 20 20 20 20 20 70 61 72 73 65 64 5b 6b 5d 20 3d 20 76 0a 20 .v[1:-1].........parsed[k].=.v..
5c7c0 20 20 20 72 65 74 75 72 6e 20 70 61 72 73 65 64 0a 0a 64 65 66 20 70 61 72 73 65 5f 68 74 74 70 ...return.parsed..def.parse_http
5c7e0 5f 6c 69 73 74 28 73 29 3a 0a 20 20 20 20 22 22 22 50 61 72 73 65 20 6c 69 73 74 73 20 61 73 20 _list(s):....."""Parse.lists.as.
5c800 64 65 73 63 72 69 62 65 64 20 62 79 20 52 46 43 20 32 30 36 38 20 53 65 63 74 69 6f 6e 20 32 2e described.by.RFC.2068.Section.2.
5c820 0a 0a 20 20 20 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c 20 70 61 72 73 65 20 63 6f 6d 6d 61 ......In.particular,.parse.comma
5c840 2d 73 65 70 61 72 61 74 65 64 20 6c 69 73 74 73 20 77 68 65 72 65 20 74 68 65 20 65 6c 65 6d 65 -separated.lists.where.the.eleme
5c860 6e 74 73 20 6f 66 0a 20 20 20 20 74 68 65 20 6c 69 73 74 20 6d 61 79 20 69 6e 63 6c 75 64 65 20 nts.of.....the.list.may.include.
5c880 71 75 6f 74 65 64 2d 73 74 72 69 6e 67 73 2e 20 20 41 20 71 75 6f 74 65 64 2d 73 74 72 69 6e 67 quoted-strings...A.quoted-string
5c8a0 20 63 6f 75 6c 64 0a 20 20 20 20 63 6f 6e 74 61 69 6e 20 61 20 63 6f 6d 6d 61 2e 20 20 41 20 6e .could.....contain.a.comma...A.n
5c8c0 6f 6e 2d 71 75 6f 74 65 64 20 73 74 72 69 6e 67 20 63 6f 75 6c 64 20 68 61 76 65 20 71 75 6f 74 on-quoted.string.could.have.quot
5c8e0 65 73 20 69 6e 20 74 68 65 0a 20 20 20 20 6d 69 64 64 6c 65 2e 20 20 4e 65 69 74 68 65 72 20 63 es.in.the.....middle...Neither.c
5c900 6f 6d 6d 61 73 20 6e 6f 72 20 71 75 6f 74 65 73 20 63 6f 75 6e 74 20 69 66 20 74 68 65 79 20 61 ommas.nor.quotes.count.if.they.a
5c920 72 65 20 65 73 63 61 70 65 64 2e 0a 20 20 20 20 4f 6e 6c 79 20 64 6f 75 62 6c 65 2d 71 75 6f 74 re.escaped......Only.double-quot
5c940 65 73 20 63 6f 75 6e 74 2c 20 6e 6f 74 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65 73 2e 0a 20 20 20 es.count,.not.single-quotes.....
5c960 20 22 22 22 0a 20 20 20 20 72 65 73 20 3d 20 5b 5d 0a 20 20 20 20 70 61 72 74 20 3d 20 27 27 0a .""".....res.=.[].....part.=.''.
5c980 0a 20 20 20 20 65 73 63 61 70 65 20 3d 20 71 75 6f 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 .....escape.=.quote.=.False.....
5c9a0 66 6f 72 20 63 75 72 20 69 6e 20 73 3a 0a 20 20 20 20 20 20 20 20 69 66 20 65 73 63 61 70 65 3a for.cur.in.s:.........if.escape:
5c9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 74 20 2b 3d 20 63 75 72 0a 20 20 20 20 20 20 20 .............part.+=.cur........
5c9e0 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....escape.=.False.............
5ca00 63 6f 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 69 66 20 71 75 6f 74 65 3a 0a 20 20 20 20 20 continue.........if.quote:......
5ca20 20 20 20 20 20 20 20 69 66 20 63 75 72 20 3d 3d 20 27 5c 5c 27 3a 0a 20 20 20 20 20 20 20 20 20 .......if.cur.==.'\\':..........
5ca40 20 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 .......escape.=.True............
5ca60 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 63 .....continue.............elif.c
5ca80 75 72 20 3d 3d 20 27 22 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 ur.==.'"':.................quote
5caa0 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 74 20 2b 3d 20 63 75 72 .=.False.............part.+=.cur
5cac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 69 .............continue..........i
5cae0 66 20 63 75 72 20 3d 3d 20 27 2c 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 2e 61 70 f.cur.==.',':.............res.ap
5cb00 70 65 6e 64 28 70 61 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 74 20 3d 20 27 27 pend(part).............part.=.''
5cb20 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 69 .............continue..........i
5cb40 66 20 63 75 72 20 3d 3d 20 27 22 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 20 f.cur.==.'"':.............quote.
5cb60 3d 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 70 61 72 74 20 2b 3d 20 63 75 72 0a 0a 20 20 20 =.True..........part.+=.cur.....
5cb80 20 23 20 61 70 70 65 6e 64 20 6c 61 73 74 20 70 61 72 74 0a 20 20 20 20 69 66 20 70 61 72 74 3a .#.append.last.part.....if.part:
5cba0 0a 20 20 20 20 20 20 20 20 72 65 73 2e 61 70 70 65 6e 64 28 70 61 72 74 29 0a 0a 20 20 20 20 72 .........res.append(part)......r
5cbc0 65 74 75 72 6e 20 5b 70 61 72 74 2e 73 74 72 69 70 28 29 20 66 6f 72 20 70 61 72 74 20 69 6e 20 eturn.[part.strip().for.part.in.
5cbe0 72 65 73 5d 0a 0a 63 6c 61 73 73 20 46 69 6c 65 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 res]..class.FileHandler(BaseHand
5cc00 6c 65 72 29 3a 0a 20 20 20 20 23 20 55 73 65 20 6c 6f 63 61 6c 20 66 69 6c 65 20 6f 72 20 46 54 ler):.....#.Use.local.file.or.FT
5cc20 50 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 66 6f 72 6d 20 6f 66 20 55 52 4c 0a 20 20 20 20 64 P.depending.on.form.of.URL.....d
5cc40 65 66 20 66 69 6c 65 5f 6f 70 65 6e 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 ef.file_open(self,.req):........
5cc60 20 75 72 6c 20 3d 20 72 65 71 2e 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 69 66 20 75 .url.=.req.selector.........if.u
5cc80 72 6c 5b 3a 32 5d 20 3d 3d 20 27 2f 2f 27 20 61 6e 64 20 75 72 6c 5b 32 3a 33 5d 20 21 3d 20 27 rl[:2].==.'//'.and.url[2:3].!=.'
5cca0 2f 27 20 61 6e 64 20 28 72 65 71 2e 68 6f 73 74 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 /'.and.(req.host.and............
5ccc0 20 20 20 20 20 72 65 71 2e 68 6f 73 74 20 21 3d 20 27 6c 6f 63 61 6c 68 6f 73 74 27 29 3a 0a 20 .....req.host.!=.'localhost'):..
5cce0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 71 2e 68 6f 73 74 20 69 6e 20 73 65 ...........if.not.req.host.in.se
5cd00 6c 66 2e 67 65 74 5f 6e 61 6d 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lf.get_names():.................
5cd20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 22 66 69 6c 65 3a 2f 2f 20 73 63 68 65 6d 65 20 69 raise.URLError("file://.scheme.i
5cd40 73 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 6f 6e 20 6c 6f 63 61 6c 68 6f 73 74 22 29 0a s.supported.only.on.localhost").
5cd60 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ........else:.............return
5cd80 20 73 65 6c 66 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 28 72 65 71 29 0a 0a 20 20 20 20 .self.open_local_file(req)......
5cda0 23 20 6e 61 6d 65 73 20 66 6f 72 20 74 68 65 20 6c 6f 63 61 6c 68 6f 73 74 0a 20 20 20 20 6e 61 #.names.for.the.localhost.....na
5cdc0 6d 65 73 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6e 61 6d 65 73 28 73 65 6c mes.=.None.....def.get_names(sel
5cde0 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 46 69 6c 65 48 61 6e 64 6c 65 72 2e 6e 61 6d 65 73 f):.........if.FileHandler.names
5ce00 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 .is.None:.............try:......
5ce20 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65 48 61 6e 64 6c 65 72 2e 6e 61 6d 65 73 20 3d 20 74 ...........FileHandler.names.=.t
5ce40 75 70 6c 65 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 uple(.....................socket
5ce60 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 5f 65 78 28 27 6c 6f 63 61 6c 68 6f 73 74 27 29 5b 32 .gethostbyname_ex('localhost')[2
5ce80 5d 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 2e 67 ].+.....................socket.g
5cea0 65 74 68 6f 73 74 62 79 6e 61 6d 65 5f 65 78 28 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 6e 61 ethostbyname_ex(socket.gethostna
5cec0 6d 65 28 29 29 5b 32 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 73 6f 63 me())[2]).............except.soc
5cee0 6b 65 74 2e 67 61 69 65 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 69 ket.gaierror:.................Fi
5cf00 6c 65 48 61 6e 64 6c 65 72 2e 6e 61 6d 65 73 20 3d 20 28 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 leHandler.names.=.(socket.gethos
5cf20 74 62 79 6e 61 6d 65 28 27 6c 6f 63 61 6c 68 6f 73 74 27 29 2c 29 0a 20 20 20 20 20 20 20 20 72 tbyname('localhost'),).........r
5cf40 65 74 75 72 6e 20 46 69 6c 65 48 61 6e 64 6c 65 72 2e 6e 61 6d 65 73 0a 0a 20 20 20 20 23 20 6e eturn.FileHandler.names......#.n
5cf60 6f 74 20 65 6e 74 69 72 65 6c 79 20 73 75 72 65 20 77 68 61 74 20 74 68 65 20 72 75 6c 65 73 20 ot.entirely.sure.what.the.rules.
5cf80 61 72 65 20 68 65 72 65 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 are.here.....def.open_local_file
5cfa0 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 65 6d 61 69 (self,.req):.........import.emai
5cfc0 6c 2e 75 74 69 6c 73 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 6d 69 6d 65 74 79 70 65 73 l.utils.........import.mimetypes
5cfe0 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 2e 68 6f 73 74 0a 20 20 20 20 20 20 20 .........host.=.req.host........
5d000 20 66 69 6c 65 6e 61 6d 65 20 3d 20 72 65 71 2e 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 .filename.=.req.selector........
5d020 20 6c 6f 63 61 6c 66 69 6c 65 20 3d 20 75 72 6c 32 70 61 74 68 6e 61 6d 65 28 66 69 6c 65 6e 61 .localfile.=.url2pathname(filena
5d040 6d 65 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 me).........try:.............sta
5d060 74 73 20 3d 20 6f 73 2e 73 74 61 74 28 6c 6f 63 61 6c 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 ts.=.os.stat(localfile).........
5d080 20 20 20 20 73 69 7a 65 20 3d 20 73 74 61 74 73 2e 73 74 5f 73 69 7a 65 0a 20 20 20 20 20 20 20 ....size.=.stats.st_size........
5d0a0 20 20 20 20 20 6d 6f 64 69 66 69 65 64 20 3d 20 65 6d 61 69 6c 2e 75 74 69 6c 73 2e 66 6f 72 6d .....modified.=.email.utils.form
5d0c0 61 74 64 61 74 65 28 73 74 61 74 73 2e 73 74 5f 6d 74 69 6d 65 2c 20 75 73 65 67 6d 74 3d 54 72 atdate(stats.st_mtime,.usegmt=Tr
5d0e0 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 74 79 70 65 20 3d 20 6d 69 6d 65 74 79 70 65 ue).............mtype.=.mimetype
5d100 73 2e 67 75 65 73 73 5f 74 79 70 65 28 66 69 6c 65 6e 61 6d 65 29 5b 30 5d 0a 20 20 20 20 20 20 s.guess_type(filename)[0].......
5d120 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 6c 2e 6d 65 73 73 61 67 65 5f 66 72 ......headers.=.email.message_fr
5d140 6f 6d 5f 73 74 72 69 6e 67 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 43 6f 6e 74 om_string(.................'Cont
5d160 65 6e 74 2d 74 79 70 65 3a 20 25 73 5c 6e 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 20 25 64 ent-type:.%s\nContent-length:.%d
5d180 5c 6e 4c 61 73 74 2d 6d 6f 64 69 66 69 65 64 3a 20 25 73 5c 6e 27 20 25 0a 20 20 20 20 20 20 20 \nLast-modified:.%s\n'.%........
5d1a0 20 20 20 20 20 20 20 20 20 28 6d 74 79 70 65 20 6f 72 20 27 74 65 78 74 2f 70 6c 61 69 6e 27 2c .........(mtype.or.'text/plain',
5d1c0 20 73 69 7a 65 2c 20 6d 6f 64 69 66 69 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .size,.modified)).............if
5d1e0 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 .host:.................host,.por
5d200 74 20 3d 20 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t.=.splitport(host).............
5d220 69 66 20 6e 6f 74 20 68 6f 73 74 20 6f 72 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.not.host.or.\................
5d240 20 28 6e 6f 74 20 70 6f 72 74 20 61 6e 64 20 5f 73 61 66 65 5f 67 65 74 68 6f 73 74 62 79 6e 61 .(not.port.and._safe_gethostbyna
5d260 6d 65 28 68 6f 73 74 29 20 69 6e 20 73 65 6c 66 2e 67 65 74 5f 6e 61 6d 65 73 28 29 29 3a 0a 20 me(host).in.self.get_names()):..
5d280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 ...............if.host:.........
5d2a0 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 75 72 6c 20 3d 20 27 66 69 6c 65 3a 2f 2f 27 20 ............origurl.=.'file://'.
5d2c0 2b 20 68 6f 73 74 20 2b 20 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +.host.+.filename...............
5d2e0 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 ..else:.....................orig
5d300 75 72 6c 20 3d 20 27 66 69 6c 65 3a 2f 2f 27 20 2b 20 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 20 url.=.'file://'.+.filename......
5d320 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 6f 70 65 ...........return.addinfourl(ope
5d340 6e 28 6c 6f 63 61 6c 66 69 6c 65 2c 20 27 72 62 27 29 2c 20 68 65 61 64 65 72 73 2c 20 6f 72 69 n(localfile,.'rb'),.headers,.ori
5d360 67 75 72 6c 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 20 61 73 20 gurl).........except.OSError.as.
5d380 65 78 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 exp:.............raise.URLError(
5d3a0 65 78 70 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 66 69 6c exp).........raise.URLError('fil
5d3c0 65 20 6e 6f 74 20 6f 6e 20 6c 6f 63 61 6c 20 68 6f 73 74 27 29 0a 0a 64 65 66 20 5f 73 61 66 65 e.not.on.local.host')..def._safe
5d3e0 5f 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 68 6f 73 74 29 3a 0a 20 20 20 20 74 72 79 3a 0a 20 _gethostbyname(host):.....try:..
5d400 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 .......return.socket.gethostbyna
5d420 6d 65 28 68 6f 73 74 29 0a 20 20 20 20 65 78 63 65 70 74 20 73 6f 63 6b 65 74 2e 67 61 69 65 72 me(host).....except.socket.gaier
5d440 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 63 6c 61 73 73 20 ror:.........return.None..class.
5d460 46 54 50 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 64 65 66 FTPHandler(BaseHandler):.....def
5d480 20 66 74 70 5f 6f 70 65 6e 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 69 6d .ftp_open(self,.req):.........im
5d4a0 70 6f 72 74 20 66 74 70 6c 69 62 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 6d 69 6d 65 74 port.ftplib.........import.mimet
5d4c0 79 70 65 73 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 2e 68 6f 73 74 0a 20 20 20 ypes.........host.=.req.host....
5d4e0 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 .....if.not.host:.............ra
5d500 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 3a 20 6e 6f 20 68 6f 73 74 ise.URLError('ftp.error:.no.host
5d520 20 67 69 76 65 6e 27 29 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 20 3d 20 73 70 .given').........host,.port.=.sp
5d540 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 6f 72 74 20 69 73 litport(host).........if.port.is
5d560 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 20 3d 20 66 74 70 6c 69 62 .None:.............port.=.ftplib
5d580 2e 46 54 50 5f 50 4f 52 54 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 .FTP_PORT.........else:.........
5d5a0 20 20 20 20 70 6f 72 74 20 3d 20 69 6e 74 28 70 6f 72 74 29 0a 0a 20 20 20 20 20 20 20 20 23 20 ....port.=.int(port)..........#.
5d5c0 75 73 65 72 6e 61 6d 65 2f 70 61 73 73 77 6f 72 64 20 68 61 6e 64 6c 69 6e 67 0a 20 20 20 20 20 username/password.handling......
5d5e0 20 20 20 75 73 65 72 2c 20 68 6f 73 74 20 3d 20 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a ...user,.host.=.splituser(host).
5d600 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 ........if.user:.............use
5d620 72 2c 20 70 61 73 73 77 64 20 3d 20 73 70 6c 69 74 70 61 73 73 77 64 28 75 73 65 72 29 0a 20 20 r,.passwd.=.splitpasswd(user)...
5d640 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 77 64 20 3d ......else:.............passwd.=
5d660 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 75 6e 71 75 6f 74 65 28 68 6f 73 .None.........host.=.unquote(hos
5d680 74 29 0a 20 20 20 20 20 20 20 20 75 73 65 72 20 3d 20 75 73 65 72 20 6f 72 20 27 27 0a 20 20 20 t).........user.=.user.or.''....
5d6a0 20 20 20 20 20 70 61 73 73 77 64 20 3d 20 70 61 73 73 77 64 20 6f 72 20 27 27 0a 0a 20 20 20 20 .....passwd.=.passwd.or.''......
5d6c0 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 73 6f 63 6b ....try:.............host.=.sock
5d6e0 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 65 et.gethostbyname(host).........e
5d700 78 63 65 70 74 20 4f 53 45 72 72 6f 72 20 61 73 20 6d 73 67 3a 0a 20 20 20 20 20 20 20 20 20 20 xcept.OSError.as.msg:...........
5d720 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 6d 73 67 29 0a 20 20 20 20 20 20 20 20 70 61 ..raise.URLError(msg).........pa
5d740 74 68 2c 20 61 74 74 72 73 20 3d 20 73 70 6c 69 74 61 74 74 72 28 72 65 71 2e 73 65 6c 65 63 74 th,.attrs.=.splitattr(req.select
5d760 6f 72 29 0a 20 20 20 20 20 20 20 20 64 69 72 73 20 3d 20 70 61 74 68 2e 73 70 6c 69 74 28 27 2f or).........dirs.=.path.split('/
5d780 27 29 0a 20 20 20 20 20 20 20 20 64 69 72 73 20 3d 20 6c 69 73 74 28 6d 61 70 28 75 6e 71 75 6f ').........dirs.=.list(map(unquo
5d7a0 74 65 2c 20 64 69 72 73 29 29 0a 20 20 20 20 20 20 20 20 64 69 72 73 2c 20 66 69 6c 65 20 3d 20 te,.dirs)).........dirs,.file.=.
5d7c0 64 69 72 73 5b 3a 2d 31 5d 2c 20 64 69 72 73 5b 2d 31 5d 0a 20 20 20 20 20 20 20 20 69 66 20 64 dirs[:-1],.dirs[-1].........if.d
5d7e0 69 72 73 20 61 6e 64 20 6e 6f 74 20 64 69 72 73 5b 30 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 irs.and.not.dirs[0]:............
5d800 20 64 69 72 73 20 3d 20 64 69 72 73 5b 31 3a 5d 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 .dirs.=.dirs[1:].........try:...
5d820 20 20 20 20 20 20 20 20 20 20 66 77 20 3d 20 73 65 6c 66 2e 63 6f 6e 6e 65 63 74 5f 66 74 70 28 ..........fw.=.self.connect_ftp(
5d840 75 73 65 72 2c 20 70 61 73 73 77 64 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 64 69 72 73 2c 20 user,.passwd,.host,.port,.dirs,.
5d860 72 65 71 2e 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d 20 req.timeout).............type.=.
5d880 66 69 6c 65 20 61 6e 64 20 27 49 27 20 6f 72 20 27 44 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 file.and.'I'.or.'D'.............
5d8a0 66 6f 72 20 61 74 74 72 20 69 6e 20 61 74 74 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 for.attr.in.attrs:..............
5d8c0 20 20 20 61 74 74 72 2c 20 76 61 6c 75 65 20 3d 20 73 70 6c 69 74 76 61 6c 75 65 28 61 74 74 72 ...attr,.value.=.splitvalue(attr
5d8e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 61 74 74 72 2e 6c 6f 77 65 72 28 ).................if.attr.lower(
5d900 29 20 3d 3d 20 27 74 79 70 65 27 20 61 6e 64 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).==.'type'.and.\...............
5d920 20 20 20 20 20 76 61 6c 75 65 20 69 6e 20 28 27 61 27 2c 20 27 41 27 2c 20 27 69 27 2c 20 27 49 .....value.in.('a',.'A',.'i',.'I
5d940 27 2c 20 27 64 27 2c 20 27 44 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ',.'d',.'D'):...................
5d960 20 20 74 79 70 65 20 3d 20 76 61 6c 75 65 2e 75 70 70 65 72 28 29 0a 20 20 20 20 20 20 20 20 20 ..type.=.value.upper()..........
5d980 20 20 20 66 70 2c 20 72 65 74 72 6c 65 6e 20 3d 20 66 77 2e 72 65 74 72 66 69 6c 65 28 66 69 6c ...fp,.retrlen.=.fw.retrfile(fil
5d9a0 65 2c 20 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 22 e,.type).............headers.=."
5d9c0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 74 79 70 65 20 3d 20 6d 69 6d 65 74 79 70 65 73 2e ".............mtype.=.mimetypes.
5d9e0 67 75 65 73 73 5f 74 79 70 65 28 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 29 5b 30 5d 0a 20 20 20 20 guess_type(req.full_url)[0].....
5da00 20 20 20 20 20 20 20 20 69 66 20 6d 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........if.mtype:...............
5da20 20 20 68 65 61 64 65 72 73 20 2b 3d 20 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 25 73 5c 6e ..headers.+=."Content-type:.%s\n
5da40 22 20 25 20 6d 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 74 72 6c 65 6e ".%.mtype.............if.retrlen
5da60 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 20 61 6e 64 20 72 65 74 72 6c 65 6e 20 3e 3d 20 30 3a 0a 20 .is.not.None.and.retrlen.>=.0:..
5da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 2b 3d 20 22 43 6f 6e 74 65 ...............headers.+=."Conte
5daa0 6e 74 2d 6c 65 6e 67 74 68 3a 20 25 64 5c 6e 22 20 25 20 72 65 74 72 6c 65 6e 0a 20 20 20 20 20 nt-length:.%d\n".%.retrlen......
5dac0 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 6c 2e 6d 65 73 73 61 67 65 5f 66 .......headers.=.email.message_f
5dae0 72 6f 6d 5f 73 74 72 69 6e 67 28 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 rom_string(headers).............
5db00 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 66 70 2c 20 68 65 61 64 65 72 73 2c 20 72 return.addinfourl(fp,.headers,.r
5db20 65 71 2e 66 75 6c 6c 5f 75 72 6c 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 6c eq.full_url).........except.ftpl
5db40 69 62 2e 61 6c 6c 5f 65 72 72 6f 72 73 20 61 73 20 65 78 70 3a 0a 20 20 20 20 20 20 20 20 20 20 ib.all_errors.as.exp:...........
5db60 20 20 65 78 63 20 3d 20 55 52 4c 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 3a 20 25 72 27 ..exc.=.URLError('ftp.error:.%r'
5db80 20 25 20 65 78 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 65 78 63 2e 77 69 .%.exp).............raise.exc.wi
5dba0 74 68 5f 74 72 61 63 65 62 61 63 6b 28 73 79 73 2e 65 78 63 5f 69 6e 66 6f 28 29 5b 32 5d 29 0a th_traceback(sys.exc_info()[2]).
5dbc0 0a 20 20 20 20 64 65 66 20 63 6f 6e 6e 65 63 74 5f 66 74 70 28 73 65 6c 66 2c 20 75 73 65 72 2c .....def.connect_ftp(self,.user,
5dbe0 20 70 61 73 73 77 64 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 64 69 72 73 2c 20 74 69 6d 65 6f .passwd,.host,.port,.dirs,.timeo
5dc00 75 74 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 74 70 77 72 61 70 70 65 72 28 75 ut):.........return.ftpwrapper(u
5dc20 73 65 72 2c 20 70 61 73 73 77 64 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 64 69 72 73 2c 20 74 ser,.passwd,.host,.port,.dirs,.t
5dc40 69 6d 65 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 imeout,.........................
5dc60 20 20 70 65 72 73 69 73 74 65 6e 74 3d 46 61 6c 73 65 29 0a 0a 63 6c 61 73 73 20 43 61 63 68 65 ..persistent=False)..class.Cache
5dc80 46 54 50 48 61 6e 64 6c 65 72 28 46 54 50 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 23 20 58 58 FTPHandler(FTPHandler):.....#.XX
5dca0 58 20 77 6f 75 6c 64 20 62 65 20 6e 69 63 65 20 74 6f 20 68 61 76 65 20 70 6c 75 67 67 61 62 6c X.would.be.nice.to.have.pluggabl
5dcc0 65 20 63 61 63 68 65 20 73 74 72 61 74 65 67 69 65 73 0a 20 20 20 20 23 20 58 58 58 20 74 68 69 e.cache.strategies.....#.XXX.thi
5dce0 73 20 73 74 75 66 66 20 69 73 20 64 65 66 69 6e 69 74 65 6c 79 20 6e 6f 74 20 74 68 72 65 61 64 s.stuff.is.definitely.not.thread
5dd00 20 73 61 66 65 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 .safe.....def.__init__(self):...
5dd20 20 20 20 20 20 20 73 65 6c 66 2e 63 61 63 68 65 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 65 ......self.cache.=.{}.........se
5dd40 6c 66 2e 74 69 6d 65 6f 75 74 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 6f lf.timeout.=.{}.........self.soo
5dd60 6e 65 73 74 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 6c 61 79 20 3d 20 36 30 nest.=.0.........self.delay.=.60
5dd80 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 61 78 5f 63 6f 6e 6e 73 20 3d 20 31 36 0a 0a 20 20 .........self.max_conns.=.16....
5dda0 20 20 64 65 66 20 73 65 74 54 69 6d 65 6f 75 74 28 73 65 6c 66 2c 20 74 29 3a 0a 20 20 20 20 20 ..def.setTimeout(self,.t):......
5ddc0 20 20 20 73 65 6c 66 2e 64 65 6c 61 79 20 3d 20 74 0a 0a 20 20 20 20 64 65 66 20 73 65 74 4d 61 ...self.delay.=.t......def.setMa
5dde0 78 43 6f 6e 6e 73 28 73 65 6c 66 2c 20 6d 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 61 xConns(self,.m):.........self.ma
5de00 78 5f 63 6f 6e 6e 73 20 3d 20 6d 0a 0a 20 20 20 20 64 65 66 20 63 6f 6e 6e 65 63 74 5f 66 74 70 x_conns.=.m......def.connect_ftp
5de20 28 73 65 6c 66 2c 20 75 73 65 72 2c 20 70 61 73 73 77 64 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c (self,.user,.passwd,.host,.port,
5de40 20 64 69 72 73 2c 20 74 69 6d 65 6f 75 74 29 3a 0a 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 75 .dirs,.timeout):.........key.=.u
5de60 73 65 72 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 27 2f 27 2e 6a 6f 69 6e 28 64 69 72 73 29 2c ser,.host,.port,.'/'.join(dirs),
5de80 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 69 6e 20 73 65 6c 66 2e .timeout.........if.key.in.self.
5dea0 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 6d 65 6f 75 74 5b cache:.............self.timeout[
5dec0 6b 65 79 5d 20 3d 20 74 69 6d 65 2e 74 69 6d 65 28 29 20 2b 20 73 65 6c 66 2e 64 65 6c 61 79 0a key].=.time.time().+.self.delay.
5dee0 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 ........else:.............self.c
5df00 61 63 68 65 5b 6b 65 79 5d 20 3d 20 66 74 70 77 72 61 70 70 65 72 28 75 73 65 72 2c 20 70 61 73 ache[key].=.ftpwrapper(user,.pas
5df20 73 77 64 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 swd,.host,.port,................
5df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 73 2c 20 ..........................dirs,.
5df60 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 6d 65 6f 75 timeout).............self.timeou
5df80 74 5b 6b 65 79 5d 20 3d 20 74 69 6d 65 2e 74 69 6d 65 28 29 20 2b 20 73 65 6c 66 2e 64 65 6c 61 t[key].=.time.time().+.self.dela
5dfa0 79 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 5f 63 61 63 68 65 28 29 0a 20 20 20 y.........self.check_cache()....
5dfc0 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 63 61 63 68 65 5b 6b 65 79 5d 0a 0a 20 20 20 .....return.self.cache[key].....
5dfe0 20 64 65 66 20 63 68 65 63 6b 5f 63 61 63 68 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 .def.check_cache(self):.........
5e000 23 20 66 69 72 73 74 20 63 68 65 63 6b 20 66 6f 72 20 6f 6c 64 20 6f 6e 65 73 0a 20 20 20 20 20 #.first.check.for.old.ones......
5e020 20 20 20 74 20 3d 20 74 69 6d 65 2e 74 69 6d 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 ...t.=.time.time().........if.se
5e040 6c 66 2e 73 6f 6f 6e 65 73 74 20 3c 3d 20 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 lf.soonest.<=.t:.............for
5e060 20 6b 2c 20 76 20 69 6e 20 6c 69 73 74 28 73 65 6c 66 2e 74 69 6d 65 6f 75 74 2e 69 74 65 6d 73 .k,.v.in.list(self.timeout.items
5e080 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 20 3c 20 74 3a 0a 20 ()):.................if.v.<.t:..
5e0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 61 63 68 65 5b 6b 5d ...................self.cache[k]
5e0c0 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c .close().....................del
5e0e0 20 73 65 6c 66 2e 63 61 63 68 65 5b 6b 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .self.cache[k]..................
5e100 20 20 20 64 65 6c 20 73 65 6c 66 2e 74 69 6d 65 6f 75 74 5b 6b 5d 0a 20 20 20 20 20 20 20 20 73 ...del.self.timeout[k].........s
5e120 65 6c 66 2e 73 6f 6f 6e 65 73 74 20 3d 20 6d 69 6e 28 6c 69 73 74 28 73 65 6c 66 2e 74 69 6d 65 elf.soonest.=.min(list(self.time
5e140 6f 75 74 2e 76 61 6c 75 65 73 28 29 29 29 0a 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 6e 20 63 out.values()))..........#.then.c
5e160 68 65 63 6b 20 74 68 65 20 73 69 7a 65 0a 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 73 65 6c heck.the.size.........if.len(sel
5e180 66 2e 63 61 63 68 65 29 20 3d 3d 20 73 65 6c 66 2e 6d 61 78 5f 63 6f 6e 6e 73 3a 0a 20 20 20 20 f.cache).==.self.max_conns:.....
5e1a0 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 76 20 69 6e 20 6c 69 73 74 28 73 65 6c 66 2e 74 69 ........for.k,.v.in.list(self.ti
5e1c0 6d 65 6f 75 74 2e 69 74 65 6d 73 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 meout.items()):.................
5e1e0 69 66 20 76 20 3d 3d 20 73 65 6c 66 2e 73 6f 6f 6e 65 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 if.v.==.self.soonest:...........
5e200 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 63 61 63 68 65 5b 6b 5d 0a 20 20 20 20 ..........del.self.cache[k].....
5e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 74 69 6d 65 6f 75 74 ................del.self.timeout
5e240 5b 6b 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 [k].....................break...
5e260 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 6f 6e 65 73 74 20 3d 20 6d 69 6e 28 6c 69 73 ..........self.soonest.=.min(lis
5e280 74 28 73 65 6c 66 2e 74 69 6d 65 6f 75 74 2e 76 61 6c 75 65 73 28 29 29 29 0a 0a 20 20 20 20 64 t(self.timeout.values()))......d
5e2a0 65 66 20 63 6c 65 61 72 5f 63 61 63 68 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 66 6f ef.clear_cache(self):.........fo
5e2c0 72 20 63 6f 6e 6e 20 69 6e 20 73 65 6c 66 2e 63 61 63 68 65 2e 76 61 6c 75 65 73 28 29 3a 0a 20 r.conn.in.self.cache.values():..
5e2e0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 ...........conn.close().........
5e300 73 65 6c 66 2e 63 61 63 68 65 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e self.cache.clear().........self.
5e320 74 69 6d 65 6f 75 74 2e 63 6c 65 61 72 28 29 0a 0a 63 6c 61 73 73 20 44 61 74 61 48 61 6e 64 6c timeout.clear()..class.DataHandl
5e340 65 72 28 42 61 73 65 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 64 65 66 20 64 61 74 61 5f 6f 70 er(BaseHandler):.....def.data_op
5e360 65 6e 28 73 65 6c 66 2c 20 72 65 71 29 3a 0a 20 20 20 20 20 20 20 20 23 20 64 61 74 61 20 55 52 en(self,.req):.........#.data.UR
5e380 4c 73 20 61 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 52 46 43 20 32 33 39 37 2e 0a 20 20 20 Ls.as.specified.in.RFC.2397.....
5e3a0 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 69 67 6e 6f 72 65 73 20 50 4f 53 54 65 64 20 .....#.........#.ignores.POSTed.
5e3c0 64 61 74 61 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 73 79 6e 74 61 78 3a data.........#.........#.syntax:
5e3e0 0a 20 20 20 20 20 20 20 20 23 20 64 61 74 61 75 72 6c 20 20 20 3a 3d 20 22 64 61 74 61 3a 22 20 .........#.dataurl...:=."data:".
5e400 5b 20 6d 65 64 69 61 74 79 70 65 20 5d 20 5b 20 22 3b 62 61 73 65 36 34 22 20 5d 20 22 2c 22 20 [.mediatype.].[.";base64".].",".
5e420 64 61 74 61 0a 20 20 20 20 20 20 20 20 23 20 6d 65 64 69 61 74 79 70 65 20 3a 3d 20 5b 20 74 79 data.........#.mediatype.:=.[.ty
5e440 70 65 20 22 2f 22 20 73 75 62 74 79 70 65 20 5d 20 2a 28 20 22 3b 22 20 70 61 72 61 6d 65 74 65 pe."/".subtype.].*(.";".paramete
5e460 72 20 29 0a 20 20 20 20 20 20 20 20 23 20 64 61 74 61 20 20 20 20 20 20 3a 3d 20 2a 75 72 6c 63 r.).........#.data......:=.*urlc
5e480 68 61 72 0a 20 20 20 20 20 20 20 20 23 20 70 61 72 61 6d 65 74 65 72 20 3a 3d 20 61 74 74 72 69 har.........#.parameter.:=.attri
5e4a0 62 75 74 65 20 22 3d 22 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 75 72 6c 20 3d 20 72 65 71 bute."=".value.........url.=.req
5e4c0 2e 66 75 6c 6c 5f 75 72 6c 0a 0a 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 2c 20 64 61 74 61 20 .full_url..........scheme,.data.
5e4e0 3d 20 75 72 6c 2e 73 70 6c 69 74 28 22 3a 22 2c 31 29 0a 20 20 20 20 20 20 20 20 6d 65 64 69 61 =.url.split(":",1).........media
5e500 74 79 70 65 2c 20 64 61 74 61 20 3d 20 64 61 74 61 2e 73 70 6c 69 74 28 22 2c 22 2c 31 29 0a 0a type,.data.=.data.split(",",1)..
5e520 20 20 20 20 20 20 20 20 23 20 65 76 65 6e 20 62 61 73 65 36 34 20 65 6e 63 6f 64 65 64 20 64 61 ........#.even.base64.encoded.da
5e540 74 61 20 55 52 4c 73 20 6d 69 67 68 74 20 62 65 20 71 75 6f 74 65 64 20 73 6f 20 75 6e 71 75 6f ta.URLs.might.be.quoted.so.unquo
5e560 74 65 20 69 6e 20 61 6e 79 20 63 61 73 65 3a 0a 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 75 te.in.any.case:.........data.=.u
5e580 6e 71 75 6f 74 65 5f 74 6f 5f 62 79 74 65 73 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 69 66 nquote_to_bytes(data).........if
5e5a0 20 6d 65 64 69 61 74 79 70 65 2e 65 6e 64 73 77 69 74 68 28 22 3b 62 61 73 65 36 34 22 29 3a 0a .mediatype.endswith(";base64"):.
5e5c0 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 62 61 73 65 36 34 2e 64 65 63 6f 64 65 ............data.=.base64.decode
5e5e0 62 79 74 65 73 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 64 69 61 74 79 70 bytes(data).............mediatyp
5e600 65 20 3d 20 6d 65 64 69 61 74 79 70 65 5b 3a 2d 37 5d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e e.=.mediatype[:-7]..........if.n
5e620 6f 74 20 6d 65 64 69 61 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 64 69 61 74 ot.mediatype:.............mediat
5e640 79 70 65 20 3d 20 22 74 65 78 74 2f 70 6c 61 69 6e 3b 63 68 61 72 73 65 74 3d 55 53 2d 41 53 43 ype.=."text/plain;charset=US-ASC
5e660 49 49 22 0a 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 6c 2e 6d 65 73 II"..........headers.=.email.mes
5e680 73 61 67 65 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 sage_from_string("Content-type:.
5e6a0 25 73 5c 6e 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 20 25 64 5c 6e 22 20 25 0a 20 20 20 20 %s\nContent-length:.%d\n".%.....
5e6c0 20 20 20 20 20 20 20 20 28 6d 65 64 69 61 74 79 70 65 2c 20 6c 65 6e 28 64 61 74 61 29 29 29 0a ........(mediatype,.len(data))).
5e6e0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 69 6f 2e 42 79 .........return.addinfourl(io.By
5e700 74 65 73 49 4f 28 64 61 74 61 29 2c 20 68 65 61 64 65 72 73 2c 20 75 72 6c 29 0a 0a 0a 23 20 43 tesIO(data),.headers,.url)...#.C
5e720 6f 64 65 20 6d 6f 76 65 20 66 72 6f 6d 20 74 68 65 20 6f 6c 64 20 75 72 6c 6c 69 62 20 6d 6f 64 ode.move.from.the.old.urllib.mod
5e740 75 6c 65 0a 0a 4d 41 58 46 54 50 43 41 43 48 45 20 3d 20 31 30 20 20 20 20 20 20 20 20 23 20 54 ule..MAXFTPCACHE.=.10........#.T
5e760 72 69 6d 20 74 68 65 20 66 74 70 20 63 61 63 68 65 20 62 65 79 6f 6e 64 20 74 68 69 73 20 73 69 rim.the.ftp.cache.beyond.this.si
5e780 7a 65 0a 0a 23 20 48 65 6c 70 65 72 20 66 6f 72 20 6e 6f 6e 2d 75 6e 69 78 20 73 79 73 74 65 6d ze..#.Helper.for.non-unix.system
5e7a0 73 0a 69 66 20 6f 73 2e 6e 61 6d 65 20 3d 3d 20 27 6e 74 27 3a 0a 20 20 20 20 66 72 6f 6d 20 6e s.if.os.name.==.'nt':.....from.n
5e7c0 74 75 72 6c 32 70 61 74 68 20 69 6d 70 6f 72 74 20 75 72 6c 32 70 61 74 68 6e 61 6d 65 2c 20 70 turl2path.import.url2pathname,.p
5e7e0 61 74 68 6e 61 6d 65 32 75 72 6c 0a 65 6c 73 65 3a 0a 20 20 20 20 64 65 66 20 75 72 6c 32 70 61 athname2url.else:.....def.url2pa
5e800 74 68 6e 61 6d 65 28 70 61 74 68 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 4f 53 2d thname(pathname):........."""OS-
5e820 73 70 65 63 69 66 69 63 20 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 61 20 72 65 6c 61 74 specific.conversion.from.a.relat
5e840 69 76 65 20 55 52 4c 20 6f 66 20 74 68 65 20 27 66 69 6c 65 27 20 73 63 68 65 6d 65 0a 20 20 20 ive.URL.of.the.'file'.scheme....
5e860 20 20 20 20 20 74 6f 20 61 20 66 69 6c 65 20 73 79 73 74 65 6d 20 70 61 74 68 3b 20 6e 6f 74 20 .....to.a.file.system.path;.not.
5e880 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 67 65 6e 65 72 61 6c 20 75 73 65 2e 22 22 22 0a recommended.for.general.use.""".
5e8a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 71 75 6f 74 65 28 70 61 74 68 6e 61 6d 65 29 ........return.unquote(pathname)
5e8c0 0a 0a 20 20 20 20 64 65 66 20 70 61 74 68 6e 61 6d 65 32 75 72 6c 28 70 61 74 68 6e 61 6d 65 29 ......def.pathname2url(pathname)
5e8e0 3a 0a 20 20 20 20 20 20 20 20 22 22 22 4f 53 2d 73 70 65 63 69 66 69 63 20 63 6f 6e 76 65 72 73 :........."""OS-specific.convers
5e900 69 6f 6e 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 73 79 73 74 65 6d 20 70 61 74 68 20 74 6f 20 61 ion.from.a.file.system.path.to.a
5e920 20 72 65 6c 61 74 69 76 65 20 55 52 4c 0a 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 27 66 69 .relative.URL.........of.the.'fi
5e940 6c 65 27 20 73 63 68 65 6d 65 3b 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 le'.scheme;.not.recommended.for.
5e960 67 65 6e 65 72 61 6c 20 75 73 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 71 general.use.""".........return.q
5e980 75 6f 74 65 28 70 61 74 68 6e 61 6d 65 29 0a 0a 0a 66 74 70 63 61 63 68 65 20 3d 20 7b 7d 0a 0a uote(pathname)...ftpcache.=.{}..
5e9a0 0a 63 6c 61 73 73 20 55 52 4c 6f 70 65 6e 65 72 3a 0a 20 20 20 20 22 22 22 43 6c 61 73 73 20 74 .class.URLopener:....."""Class.t
5e9c0 6f 20 6f 70 65 6e 20 55 52 4c 73 2e 0a 20 20 20 20 54 68 69 73 20 69 73 20 61 20 63 6c 61 73 73 o.open.URLs......This.is.a.class
5e9e0 20 72 61 74 68 65 72 20 74 68 61 6e 20 6a 75 73 74 20 61 20 73 75 62 72 6f 75 74 69 6e 65 20 62 .rather.than.just.a.subroutine.b
5ea00 65 63 61 75 73 65 20 77 65 20 6d 61 79 20 6e 65 65 64 0a 20 20 20 20 6d 6f 72 65 20 74 68 61 6e ecause.we.may.need.....more.than
5ea20 20 6f 6e 65 20 73 65 74 20 6f 66 20 67 6c 6f 62 61 6c 20 70 72 6f 74 6f 63 6f 6c 2d 73 70 65 63 .one.set.of.global.protocol-spec
5ea40 69 66 69 63 20 6f 70 74 69 6f 6e 73 2e 0a 20 20 20 20 4e 6f 74 65 20 2d 2d 20 74 68 69 73 20 69 ific.options......Note.--.this.i
5ea60 73 20 61 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 74 68 6f 73 65 20 77 68 6f 20 64 6f 6e s.a.base.class.for.those.who.don
5ea80 27 74 20 77 61 6e 74 20 74 68 65 0a 20 20 20 20 61 75 74 6f 6d 61 74 69 63 20 68 61 6e 64 6c 69 't.want.the.....automatic.handli
5eaa0 6e 67 20 6f 66 20 65 72 72 6f 72 73 20 74 79 70 65 20 33 30 32 20 28 72 65 6c 6f 63 61 74 65 64 ng.of.errors.type.302.(relocated
5eac0 29 20 61 6e 64 20 34 30 31 0a 20 20 20 20 28 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 6e 65 65 ).and.401.....(authorization.nee
5eae0 64 65 64 29 2e 22 22 22 0a 0a 20 20 20 20 5f 5f 74 65 6d 70 66 69 6c 65 73 20 3d 20 4e 6f 6e 65 ded)."""......__tempfiles.=.None
5eb00 0a 0a 20 20 20 20 76 65 72 73 69 6f 6e 20 3d 20 22 50 79 74 68 6f 6e 2d 75 72 6c 6c 69 62 2f 25 ......version.=."Python-urllib/%
5eb20 73 22 20 25 20 5f 5f 76 65 72 73 69 6f 6e 5f 5f 0a 0a 20 20 20 20 23 20 43 6f 6e 73 74 72 75 63 s".%.__version__......#.Construc
5eb40 74 6f 72 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 72 6f 78 69 tor.....def.__init__(self,.proxi
5eb60 65 73 3d 4e 6f 6e 65 2c 20 2a 2a 78 35 30 39 29 3a 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 es=None,.**x509):.........msg.=.
5eb80 22 25 28 63 6c 61 73 73 29 73 20 73 74 79 6c 65 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 72 65 71 "%(class)s.style.of.invoking.req
5eba0 75 65 73 74 73 20 69 73 20 64 65 70 72 65 63 61 74 65 64 2e 20 22 20 5c 0a 20 20 20 20 20 20 20 uests.is.deprecated..".\........
5ebc0 20 20 20 20 20 20 20 22 55 73 65 20 6e 65 77 65 72 20 75 72 6c 6f 70 65 6e 20 66 75 6e 63 74 69 ......."Use.newer.urlopen.functi
5ebe0 6f 6e 73 2f 6d 65 74 68 6f 64 73 22 20 25 20 7b 27 63 6c 61 73 73 27 3a 20 73 65 6c 66 2e 5f 5f ons/methods".%.{'class':.self.__
5ec00 63 6c 61 73 73 5f 5f 2e 5f 5f 6e 61 6d 65 5f 5f 7d 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e class__.__name__}.........warnin
5ec20 67 73 2e 77 61 72 6e 28 6d 73 67 2c 20 44 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e 67 2c gs.warn(msg,.DeprecationWarning,
5ec40 20 73 74 61 63 6b 6c 65 76 65 6c 3d 33 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 69 65 .stacklevel=3).........if.proxie
5ec60 73 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 20 3d s.is.None:.............proxies.=
5ec80 20 67 65 74 70 72 6f 78 69 65 73 28 29 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 68 61 73 .getproxies().........assert.has
5eca0 61 74 74 72 28 70 72 6f 78 69 65 73 2c 20 27 6b 65 79 73 27 29 2c 20 22 70 72 6f 78 69 65 73 20 attr(proxies,.'keys'),."proxies.
5ecc0 6d 75 73 74 20 62 65 20 61 20 6d 61 70 70 69 6e 67 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e must.be.a.mapping".........self.
5ece0 70 72 6f 78 69 65 73 20 3d 20 70 72 6f 78 69 65 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b proxies.=.proxies.........self.k
5ed00 65 79 5f 66 69 6c 65 20 3d 20 78 35 30 39 2e 67 65 74 28 27 6b 65 79 5f 66 69 6c 65 27 29 0a 20 ey_file.=.x509.get('key_file')..
5ed20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 65 72 74 5f 66 69 6c 65 20 3d 20 78 35 30 39 2e 67 65 74 .......self.cert_file.=.x509.get
5ed40 28 27 63 65 72 74 5f 66 69 6c 65 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 68 65 ('cert_file').........self.addhe
5ed60 61 64 65 72 73 20 3d 20 5b 28 27 55 73 65 72 2d 41 67 65 6e 74 27 2c 20 73 65 6c 66 2e 76 65 72 aders.=.[('User-Agent',.self.ver
5ed80 73 69 6f 6e 29 2c 20 28 27 41 63 63 65 70 74 27 2c 20 27 2a 2f 2a 27 29 5d 0a 20 20 20 20 20 20 sion),.('Accept',.'*/*')].......
5eda0 20 20 73 65 6c 66 2e 5f 5f 74 65 6d 70 66 69 6c 65 73 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 ..self.__tempfiles.=.[].........
5edc0 73 65 6c 66 2e 5f 5f 75 6e 6c 69 6e 6b 20 3d 20 6f 73 2e 75 6e 6c 69 6e 6b 20 23 20 53 65 65 20 self.__unlink.=.os.unlink.#.See.
5ede0 63 6c 65 61 6e 75 70 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 cleanup().........self.tempcache
5ee00 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 55 6e 64 6f 63 75 6d 65 6e 74 65 64 20 66 .=.None.........#.Undocumented.f
5ee20 65 61 74 75 72 65 3a 20 69 66 20 79 6f 75 20 61 73 73 69 67 6e 20 7b 7d 20 74 6f 20 74 65 6d 70 eature:.if.you.assign.{}.to.temp
5ee40 63 61 63 68 65 2c 0a 20 20 20 20 20 20 20 20 23 20 69 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 cache,.........#.it.is.used.to.c
5ee60 61 63 68 65 20 66 69 6c 65 73 20 72 65 74 72 69 65 76 65 64 20 77 69 74 68 0a 20 20 20 20 20 20 ache.files.retrieved.with.......
5ee80 20 20 23 20 73 65 6c 66 2e 72 65 74 72 69 65 76 65 28 29 2e 20 20 54 68 69 73 20 69 73 20 6e 6f ..#.self.retrieve()...This.is.no
5eea0 74 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 23 20 73 t.enabled.by.default.........#.s
5eec0 69 6e 63 65 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20 66 6f 72 20 63 68 61 6e 67 69 ince.it.does.not.work.for.changi
5eee0 6e 67 20 64 6f 63 75 6d 65 6e 74 73 20 28 61 6e 64 20 49 0a 20 20 20 20 20 20 20 20 23 20 68 61 ng.documents.(and.I.........#.ha
5ef00 76 65 6e 27 74 20 67 6f 74 20 74 68 65 20 6c 6f 67 69 63 20 74 6f 20 63 68 65 63 6b 20 65 78 70 ven't.got.the.logic.to.check.exp
5ef20 69 72 61 74 69 6f 6e 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 23 20 79 65 74 29 2e 0a iration.headers.........#.yet)..
5ef40 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 63 61 63 68 65 20 3d 20 66 74 70 63 61 63 68 65 ........self.ftpcache.=.ftpcache
5ef60 0a 20 20 20 20 20 20 20 20 23 20 55 6e 64 6f 63 75 6d 65 6e 74 65 64 20 66 65 61 74 75 72 65 3a .........#.Undocumented.feature:
5ef80 20 79 6f 75 20 63 61 6e 20 75 73 65 20 61 20 64 69 66 66 65 72 65 6e 74 0a 20 20 20 20 20 20 20 .you.can.use.a.different........
5efa0 20 23 20 66 74 70 20 63 61 63 68 65 20 62 79 20 61 73 73 69 67 6e 69 6e 67 20 74 6f 20 74 68 65 .#.ftp.cache.by.assigning.to.the
5efc0 20 2e 66 74 70 63 61 63 68 65 20 6d 65 6d 62 65 72 3b 0a 20 20 20 20 20 20 20 20 23 20 69 6e 20 ..ftpcache.member;.........#.in.
5efe0 63 61 73 65 20 79 6f 75 20 77 61 6e 74 20 6c 6f 67 69 63 61 6c 6c 79 20 69 6e 64 65 70 65 6e 64 case.you.want.logically.independ
5f000 65 6e 74 20 55 52 4c 20 6f 70 65 6e 65 72 73 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 54 68 ent.URL.openers.........#.XXX.Th
5f020 69 73 20 69 73 20 6e 6f 74 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 42 61 68 2e 0a 0a 20 20 20 is.is.not.threadsafe...Bah......
5f040 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 .def.__del__(self):.........self
5f060 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 .close()......def.close(self):..
5f080 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 6e 75 70 28 29 0a 0a 20 20 20 20 64 65 66 20 63 .......self.cleanup()......def.c
5f0a0 6c 65 61 6e 75 70 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 63 6f 64 leanup(self):.........#.This.cod
5f0c0 65 20 73 6f 6d 65 74 69 6d 65 73 20 72 75 6e 73 20 77 68 65 6e 20 74 68 65 20 72 65 73 74 20 6f e.sometimes.runs.when.the.rest.o
5f0e0 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 0a 20 20 20 20 20 20 20 20 23 20 68 61 73 20 61 6c 72 65 f.this.module.........#.has.alre
5f100 61 64 79 20 62 65 65 6e 20 64 65 6c 65 74 65 64 2c 20 73 6f 20 69 74 20 63 61 6e 27 74 20 75 73 ady.been.deleted,.so.it.can't.us
5f120 65 20 61 6e 79 20 67 6c 6f 62 61 6c 73 0a 20 20 20 20 20 20 20 20 23 20 6f 72 20 69 6d 70 6f 72 e.any.globals.........#.or.impor
5f140 74 20 61 6e 79 74 68 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 5f 74 65 t.anything..........if.self.__te
5f160 6d 70 66 69 6c 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 6c 65 20 69 6e mpfiles:.............for.file.in
5f180 20 73 65 6c 66 2e 5f 5f 74 65 6d 70 66 69 6c 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .self.__tempfiles:..............
5f1a0 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ...try:.....................self
5f1c0 2e 5f 5f 75 6e 6c 69 6e 6b 28 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .__unlink(file).................
5f1e0 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 except.OSError:.................
5f200 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 5f 5f ....pass.............del.self.__
5f220 74 65 6d 70 66 69 6c 65 73 5b 3a 5d 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 65 6d tempfiles[:].........if.self.tem
5f240 70 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 pcache:.............self.tempcac
5f260 68 65 2e 63 6c 65 61 72 28 29 0a 0a 20 20 20 20 64 65 66 20 61 64 64 68 65 61 64 65 72 28 73 65 he.clear()......def.addheader(se
5f280 6c 66 2c 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 41 64 64 20 61 20 68 65 61 lf,.*args):........."""Add.a.hea
5f2a0 64 65 72 20 74 6f 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65 20 48 54 54 50 20 69 6e 74 65 72 der.to.be.used.by.the.HTTP.inter
5f2c0 66 61 63 65 20 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 65 2e 67 2e 20 75 2e 61 64 64 68 65 61 64 face.only.........e.g..u.addhead
5f2e0 65 72 28 27 41 63 63 65 70 74 27 2c 20 27 73 6f 75 6e 64 2f 62 61 73 69 63 27 29 22 22 22 0a 20 er('Accept',.'sound/basic')"""..
5f300 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 68 65 61 64 65 72 73 2e 61 70 70 65 6e 64 28 61 72 .......self.addheaders.append(ar
5f320 67 73 29 0a 0a 20 20 20 20 23 20 45 78 74 65 72 6e 61 6c 20 69 6e 74 65 72 66 61 63 65 0a 20 20 gs)......#.External.interface...
5f340 20 20 64 65 66 20 6f 70 65 6e 28 73 65 6c 66 2c 20 66 75 6c 6c 75 72 6c 2c 20 64 61 74 61 3d 4e ..def.open(self,.fullurl,.data=N
5f360 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 55 52 4c 6f 70 65 6e 65 72 28 29 one):........."""Use.URLopener()
5f380 2e 6f 70 65 6e 28 66 69 6c 65 29 20 69 6e 73 74 65 61 64 20 6f 66 20 6f 70 65 6e 28 66 69 6c 65 .open(file).instead.of.open(file
5f3a0 2c 20 27 72 27 29 2e 22 22 22 0a 20 20 20 20 20 20 20 20 66 75 6c 6c 75 72 6c 20 3d 20 75 6e 77 ,.'r').""".........fullurl.=.unw
5f3c0 72 61 70 28 74 6f 5f 62 79 74 65 73 28 66 75 6c 6c 75 72 6c 29 29 0a 20 20 20 20 20 20 20 20 66 rap(to_bytes(fullurl)).........f
5f3e0 75 6c 6c 75 72 6c 20 3d 20 71 75 6f 74 65 28 66 75 6c 6c 75 72 6c 2c 20 73 61 66 65 3d 22 25 2f ullurl.=.quote(fullurl,.safe="%/
5f400 3a 3d 26 3f 7e 23 2b 21 24 2c 3b 27 40 28 29 2a 5b 5d 7c 22 29 0a 20 20 20 20 20 20 20 20 69 66 :=&?~#+!$,;'@()*[]|").........if
5f420 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 20 61 6e 64 20 66 75 6c 6c 75 72 6c 20 69 6e 20 73 .self.tempcache.and.fullurl.in.s
5f440 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 6e elf.tempcache:.............filen
5f460 61 6d 65 2c 20 68 65 61 64 65 72 73 20 3d 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 5b 66 75 ame,.headers.=.self.tempcache[fu
5f480 6c 6c 75 72 6c 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 20 3d 20 6f 70 65 6e 28 66 69 6c llurl].............fp.=.open(fil
5f4a0 65 6e 61 6d 65 2c 20 27 72 62 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ename,.'rb').............return.
5f4c0 61 64 64 69 6e 66 6f 75 72 6c 28 66 70 2c 20 68 65 61 64 65 72 73 2c 20 66 75 6c 6c 75 72 6c 29 addinfourl(fp,.headers,.fullurl)
5f4e0 0a 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 2c 20 75 72 6c 20 3d 20 73 70 6c 69 74 74 79 70 .........urltype,.url.=.splittyp
5f500 65 28 66 75 6c 6c 75 72 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 75 72 6c 74 79 70 e(fullurl).........if.not.urltyp
5f520 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 20 3d 20 27 66 69 6c 65 27 0a e:.............urltype.=.'file'.
5f540 20 20 20 20 20 20 20 20 69 66 20 75 72 6c 74 79 70 65 20 69 6e 20 73 65 6c 66 2e 70 72 6f 78 69 ........if.urltype.in.self.proxi
5f560 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 20 3d 20 73 65 6c 66 2e 70 72 6f es:.............proxy.=.self.pro
5f580 78 69 65 73 5b 75 72 6c 74 79 70 65 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 xies[urltype].............urltyp
5f5a0 65 2c 20 70 72 6f 78 79 68 6f 73 74 20 3d 20 73 70 6c 69 74 74 79 70 65 28 70 72 6f 78 79 29 0a e,.proxyhost.=.splittype(proxy).
5f5c0 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c ............host,.selector.=.spl
5f5e0 69 74 68 6f 73 74 28 70 72 6f 78 79 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 ithost(proxyhost).............ur
5f600 6c 20 3d 20 28 68 6f 73 74 2c 20 66 75 6c 6c 75 72 6c 29 20 23 20 53 69 67 6e 61 6c 20 73 70 65 l.=.(host,.fullurl).#.Signal.spe
5f620 63 69 61 6c 20 63 61 73 65 20 74 6f 20 6f 70 65 6e 5f 2a 28 29 0a 20 20 20 20 20 20 20 20 65 6c cial.case.to.open_*().........el
5f640 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 20 3d 20 4e 6f 6e 65 0a 20 20 20 se:.............proxy.=.None....
5f660 20 20 20 20 20 6e 61 6d 65 20 3d 20 27 6f 70 65 6e 5f 27 20 2b 20 75 72 6c 74 79 70 65 0a 20 20 .....name.=.'open_'.+.urltype...
5f680 20 20 20 20 20 20 73 65 6c 66 2e 74 79 70 65 20 3d 20 75 72 6c 74 79 70 65 0a 20 20 20 20 20 20 ......self.type.=.urltype.......
5f6a0 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 72 65 70 6c 61 63 65 28 27 2d 27 2c 20 27 5f 27 29 0a ..name.=.name.replace('-',.'_').
5f6c0 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 6e 61 6d ........if.not.hasattr(self,.nam
5f6e0 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 3a 0a 20 20 20 20 20 20 e):.............if.proxy:.......
5f700 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 5f 75 6e 6b 6e 6f ..........return.self.open_unkno
5f720 77 6e 5f 70 72 6f 78 79 28 70 72 6f 78 79 2c 20 66 75 6c 6c 75 72 6c 2c 20 64 61 74 61 29 0a 20 wn_proxy(proxy,.fullurl,.data)..
5f740 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........else:................
5f760 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 5f 75 6e 6b 6e 6f 77 6e 28 66 75 6c 6c 75 72 .return.self.open_unknown(fullur
5f780 6c 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 l,.data).........try:...........
5f7a0 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..if.data.is.None:..............
5f7c0 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 6e 61 6d 65 29 28 75 72 ...return.getattr(self,.name)(ur
5f7e0 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 l).............else:............
5f800 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 6e 61 6d 65 29 28 .....return.getattr(self,.name)(
5f820 75 72 6c 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 28 48 54 54 50 45 url,.data).........except.(HTTPE
5f840 72 72 6f 72 2c 20 55 52 4c 45 72 72 6f 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 rror,.URLError):.............rai
5f860 73 65 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 20 61 73 20 6d 73 67 se.........except.OSError.as.msg
5f880 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 28 27 73 6f 63 :.............raise.OSError('soc
5f8a0 6b 65 74 20 65 72 72 6f 72 27 2c 20 6d 73 67 29 2e 77 69 74 68 5f 74 72 61 63 65 62 61 63 6b 28 ket.error',.msg).with_traceback(
5f8c0 73 79 73 2e 65 78 63 5f 69 6e 66 6f 28 29 5b 32 5d 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e sys.exc_info()[2])......def.open
5f8e0 5f 75 6e 6b 6e 6f 77 6e 28 73 65 6c 66 2c 20 66 75 6c 6c 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e _unknown(self,.fullurl,.data=Non
5f900 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 4f 76 65 72 72 69 64 61 62 6c 65 20 69 6e 74 65 72 e):........."""Overridable.inter
5f920 66 61 63 65 20 74 6f 20 6f 70 65 6e 20 75 6e 6b 6e 6f 77 6e 20 55 52 4c 20 74 79 70 65 2e 22 22 face.to.open.unknown.URL.type.""
5f940 22 0a 20 20 20 20 20 20 20 20 74 79 70 65 2c 20 75 72 6c 20 3d 20 73 70 6c 69 74 74 79 70 65 28 ".........type,.url.=.splittype(
5f960 66 75 6c 6c 75 72 6c 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 28 27 fullurl).........raise.OSError('
5f980 75 72 6c 20 65 72 72 6f 72 27 2c 20 27 75 6e 6b 6e 6f 77 6e 20 75 72 6c 20 74 79 70 65 27 2c 20 url.error',.'unknown.url.type',.
5f9a0 74 79 70 65 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 75 6e 6b 6e 6f 77 6e 5f 70 72 6f 78 type)......def.open_unknown_prox
5f9c0 79 28 73 65 6c 66 2c 20 70 72 6f 78 79 2c 20 66 75 6c 6c 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e y(self,.proxy,.fullurl,.data=Non
5f9e0 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 4f 76 65 72 72 69 64 61 62 6c 65 20 69 6e 74 65 72 e):........."""Overridable.inter
5fa00 66 61 63 65 20 74 6f 20 6f 70 65 6e 20 75 6e 6b 6e 6f 77 6e 20 55 52 4c 20 74 79 70 65 2e 22 22 face.to.open.unknown.URL.type.""
5fa20 22 0a 20 20 20 20 20 20 20 20 74 79 70 65 2c 20 75 72 6c 20 3d 20 73 70 6c 69 74 74 79 70 65 28 ".........type,.url.=.splittype(
5fa40 66 75 6c 6c 75 72 6c 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 28 27 fullurl).........raise.OSError('
5fa60 75 72 6c 20 65 72 72 6f 72 27 2c 20 27 69 6e 76 61 6c 69 64 20 70 72 6f 78 79 20 66 6f 72 20 25 url.error',.'invalid.proxy.for.%
5fa80 73 27 20 25 20 74 79 70 65 2c 20 70 72 6f 78 79 29 0a 0a 20 20 20 20 23 20 45 78 74 65 72 6e 61 s'.%.type,.proxy)......#.Externa
5faa0 6c 20 69 6e 74 65 72 66 61 63 65 0a 20 20 20 20 64 65 66 20 72 65 74 72 69 65 76 65 28 73 65 6c l.interface.....def.retrieve(sel
5fac0 66 2c 20 75 72 6c 2c 20 66 69 6c 65 6e 61 6d 65 3d 4e 6f 6e 65 2c 20 72 65 70 6f 72 74 68 6f 6f f,.url,.filename=None,.reporthoo
5fae0 6b 3d 4e 6f 6e 65 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 72 k=None,.data=None):........."""r
5fb00 65 74 72 69 65 76 65 28 75 72 6c 29 20 72 65 74 75 72 6e 73 20 28 66 69 6c 65 6e 61 6d 65 2c 20 etrieve(url).returns.(filename,.
5fb20 68 65 61 64 65 72 73 29 20 66 6f 72 20 61 20 6c 6f 63 61 6c 20 6f 62 6a 65 63 74 0a 20 20 20 20 headers).for.a.local.object.....
5fb40 20 20 20 20 6f 72 20 28 74 65 6d 70 66 69 6c 65 6e 61 6d 65 2c 20 68 65 61 64 65 72 73 29 20 66 ....or.(tempfilename,.headers).f
5fb60 6f 72 20 61 20 72 65 6d 6f 74 65 20 6f 62 6a 65 63 74 2e 22 22 22 0a 20 20 20 20 20 20 20 20 75 or.a.remote.object.""".........u
5fb80 72 6c 20 3d 20 75 6e 77 72 61 70 28 74 6f 5f 62 79 74 65 73 28 75 72 6c 29 29 0a 20 20 20 20 20 rl.=.unwrap(to_bytes(url))......
5fba0 20 20 20 69 66 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 20 61 6e 64 20 75 72 6c 20 69 6e 20 ...if.self.tempcache.and.url.in.
5fbc0 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 self.tempcache:.............retu
5fbe0 72 6e 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 5b 75 72 6c 5d 0a 20 20 20 20 20 20 20 20 74 rn.self.tempcache[url].........t
5fc00 79 70 65 2c 20 75 72 6c 31 20 3d 20 73 70 6c 69 74 74 79 70 65 28 75 72 6c 29 0a 20 20 20 20 20 ype,.url1.=.splittype(url)......
5fc20 20 20 20 69 66 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 4e 6f 6e 65 20 61 6e 64 20 28 6e 6f 74 20 ...if.filename.is.None.and.(not.
5fc40 74 79 70 65 20 6f 72 20 74 79 70 65 20 3d 3d 20 27 66 69 6c 65 27 29 3a 0a 20 20 20 20 20 20 20 type.or.type.==.'file'):........
5fc60 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 70 20 3d 20 73 .....try:.................fp.=.s
5fc80 65 6c 66 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 28 75 72 6c 31 29 0a 20 20 20 20 20 20 elf.open_local_file(url1).......
5fca0 20 20 20 20 20 20 20 20 20 20 68 64 72 73 20 3d 20 66 70 2e 69 6e 66 6f 28 29 0a 20 20 20 20 20 ..........hdrs.=.fp.info()......
5fcc0 20 20 20 20 20 20 20 20 20 20 20 66 70 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 ...........fp.close()...........
5fce0 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 72 6c 32 70 61 74 68 6e 61 6d 65 28 73 70 6c 69 74 68 ......return.url2pathname(splith
5fd00 6f 73 74 28 75 72 6c 31 29 5b 31 5d 29 2c 20 68 64 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 ost(url1)[1]),.hdrs.............
5fd20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 20 61 73 20 6d 73 67 3a 0a 20 20 20 20 20 20 20 20 20 except.OSError.as.msg:..........
5fd40 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 66 70 20 3d 20 73 65 6c 66 2e 6f 70 .......pass.........fp.=.self.op
5fd60 65 6e 28 75 72 6c 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 en(url,.data).........try:......
5fd80 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 66 70 2e 69 6e 66 6f 28 29 0a 20 20 20 20 20 .......headers.=.fp.info()......
5fda0 20 20 20 20 20 20 20 69 66 20 66 69 6c 65 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .......if.filename:.............
5fdc0 20 20 20 20 74 66 70 20 3d 20 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 0a 20 ....tfp.=.open(filename,.'wb')..
5fde0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........else:................
5fe00 20 67 61 72 62 61 67 65 2c 20 70 61 74 68 20 3d 20 73 70 6c 69 74 74 79 70 65 28 75 72 6c 29 0a .garbage,.path.=.splittype(url).
5fe20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 61 72 62 61 67 65 2c 20 70 61 74 68 20 3d 20 ................garbage,.path.=.
5fe40 73 70 6c 69 74 68 6f 73 74 28 70 61 74 68 20 6f 72 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 splithost(path.or."")...........
5fe60 20 20 20 20 20 20 70 61 74 68 2c 20 67 61 72 62 61 67 65 20 3d 20 73 70 6c 69 74 71 75 65 72 79 ......path,.garbage.=.splitquery
5fe80 28 70 61 74 68 20 6f 72 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 (path.or."").................pat
5fea0 68 2c 20 67 61 72 62 61 67 65 20 3d 20 73 70 6c 69 74 61 74 74 72 28 70 61 74 68 20 6f 72 20 22 h,.garbage.=.splitattr(path.or."
5fec0 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 66 66 69 78 20 3d 20 6f 73 2e 70 ").................suffix.=.os.p
5fee0 61 74 68 2e 73 70 6c 69 74 65 78 74 28 70 61 74 68 29 5b 31 5d 0a 20 20 20 20 20 20 20 20 20 20 ath.splitext(path)[1]...........
5ff00 20 20 20 20 20 20 28 66 64 2c 20 66 69 6c 65 6e 61 6d 65 29 20 3d 20 74 65 6d 70 66 69 6c 65 2e ......(fd,.filename).=.tempfile.
5ff20 6d 6b 73 74 65 6d 70 28 73 75 66 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mkstemp(suffix).................
5ff40 73 65 6c 66 2e 5f 5f 74 65 6d 70 66 69 6c 65 73 2e 61 70 70 65 6e 64 28 66 69 6c 65 6e 61 6d 65 self.__tempfiles.append(filename
5ff60 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 66 70 20 3d 20 6f 73 2e 66 64 6f 70 65 ).................tfp.=.os.fdope
5ff80 6e 28 66 64 2c 20 27 77 62 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 n(fd,.'wb').............try:....
5ffa0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 66 69 6c 65 6e 61 6d 65 2c 20 .............result.=.filename,.
5ffc0 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e headers.................if.self.
5ffe0 74 65 6d 70 63 61 63 68 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 tempcache.is.not.None:..........
60000 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 5b 75 72 6c 5d 20 3d ...........self.tempcache[url].=
60020 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 73 20 3d 20 31 30 32 .result.................bs.=.102
60040 34 2a 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 20 3d 20 2d 31 0a 20 20 4*8.................size.=.-1...
60060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 20 3d 20 30 0a 20 20 20 20 20 20 20 20 20 ..............read.=.0..........
60080 20 20 20 20 20 20 20 62 6c 6f 63 6b 6e 75 6d 20 3d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 .......blocknum.=.0.............
600a0 20 20 20 20 69 66 20 22 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 22 20 69 6e 20 68 65 61 64 65 ....if."content-length".in.heade
600c0 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 20 3d 20 69 rs:.....................size.=.i
600e0 6e 74 28 68 65 61 64 65 72 73 5b 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 22 5d 29 0a 20 20 nt(headers["Content-Length"])...
60100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 70 6f 72 74 68 6f 6f 6b 3a 0a 20 20 20 ..............if.reporthook:....
60120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 68 6f 6f 6b 28 62 6c 6f 63 .................reporthook(bloc
60140 6b 6e 75 6d 2c 20 62 73 2c 20 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 knum,.bs,.size).................
60160 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f while.1:.....................blo
60180 63 6b 20 3d 20 66 70 2e 72 65 61 64 28 62 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ck.=.fp.read(bs)................
601a0 20 20 20 20 20 69 66 20 6e 6f 74 20 62 6c 6f 63 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .....if.not.block:..............
601c0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........break................
601e0 20 20 20 20 20 72 65 61 64 20 2b 3d 20 6c 65 6e 28 62 6c 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 .....read.+=.len(block).........
60200 20 20 20 20 20 20 20 20 20 20 20 20 74 66 70 2e 77 72 69 74 65 28 62 6c 6f 63 6b 29 0a 20 20 20 ............tfp.write(block)....
60220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 6e 75 6d 20 2b 3d 20 31 0a 20 .................blocknum.+=.1..
60240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 70 6f 72 74 68 6f 6f 6b ...................if.reporthook
60260 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 :.........................report
60280 68 6f 6f 6b 28 62 6c 6f 63 6b 6e 75 6d 2c 20 62 73 2c 20 73 69 7a 65 29 0a 20 20 20 20 20 20 20 hook(blocknum,.bs,.size)........
602a0 20 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 66 .....finally:.................tf
602c0 70 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 p.close().........finally:......
602e0 20 20 20 20 20 20 20 66 70 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 20 20 20 20 23 20 72 61 69 .......fp.close()..........#.rai
60300 73 65 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 61 63 74 75 61 6c 20 73 69 7a 65 20 64 6f 65 73 se.exception.if.actual.size.does
60320 20 6e 6f 74 20 6d 61 74 63 68 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 20 68 65 61 64 65 72 .not.match.content-length.header
60340 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 7a 65 20 3e 3d 20 30 20 61 6e 64 20 72 65 61 64 20 3c .........if.size.>=.0.and.read.<
60360 20 73 69 7a 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 43 6f 6e 74 65 6e 74 .size:.............raise.Content
60380 54 6f 6f 53 68 6f 72 74 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 TooShortError(................."
603a0 72 65 74 72 69 65 76 61 6c 20 69 6e 63 6f 6d 70 6c 65 74 65 3a 20 67 6f 74 20 6f 6e 6c 79 20 25 retrieval.incomplete:.got.only.%
603c0 69 20 6f 75 74 20 6f 66 20 25 69 20 62 79 74 65 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 i.out.of.%i.bytes"..............
603e0 20 20 20 25 20 28 72 65 61 64 2c 20 73 69 7a 65 29 2c 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 ...%.(read,.size),.result)......
60400 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20 20 23 20 45 61 63 68 20 6d 65 ....return.result......#.Each.me
60420 74 68 6f 64 20 6e 61 6d 65 64 20 6f 70 65 6e 5f 3c 74 79 70 65 3e 20 6b 6e 6f 77 73 20 68 6f 77 thod.named.open_<type>.knows.how
60440 20 74 6f 20 6f 70 65 6e 20 74 68 61 74 20 74 79 70 65 20 6f 66 20 55 52 4c 0a 0a 20 20 20 20 64 .to.open.that.type.of.URL......d
60460 65 66 20 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 5f 68 74 74 70 28 73 65 6c 66 2c 20 63 6f 6e 6e ef._open_generic_http(self,.conn
60480 65 63 74 69 6f 6e 5f 66 61 63 74 6f 72 79 2c 20 75 72 6c 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 ection_factory,.url,.data):.....
604a0 20 20 20 20 22 22 22 4d 61 6b 65 20 61 6e 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 ...."""Make.an.HTTP.connection.u
604c0 73 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 6c 61 73 73 2e 0a 0a 20 20 20 20 20 20 20 20 sing.connection_class...........
604e0 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 20 74 68 61 74 20 This.is.an.internal.method.that.
60500 73 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 20 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 6f 70 should.be.called.from.........op
60520 65 6e 5f 68 74 74 70 28 29 20 6f 72 20 6f 70 65 6e 5f 68 74 74 70 73 28 29 2e 0a 0a 20 20 20 20 en_http().or.open_https().......
60540 20 20 20 20 41 72 67 75 6d 65 6e 74 73 3a 0a 20 20 20 20 20 20 20 20 2d 20 63 6f 6e 6e 65 63 74 ....Arguments:.........-.connect
60560 69 6f 6e 5f 66 61 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 61 20 68 6f 73 74 20 6e ion_factory.should.take.a.host.n
60580 61 6d 65 20 61 6e 64 20 72 65 74 75 72 6e 20 61 6e 0a 20 20 20 20 20 20 20 20 20 20 48 54 54 50 ame.and.return.an...........HTTP
605a0 43 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0a 20 20 20 20 20 20 20 20 2d 20 75 Connection.instance..........-.u
605c0 72 6c 20 69 73 20 74 68 65 20 75 72 6c 20 74 6f 20 72 65 74 72 69 65 76 61 6c 20 6f 72 20 61 20 rl.is.the.url.to.retrieval.or.a.
605e0 68 6f 73 74 2c 20 72 65 6c 61 74 69 76 65 2d 70 61 74 68 20 70 61 69 72 2e 0a 20 20 20 20 20 20 host,.relative-path.pair........
60600 20 20 2d 20 64 61 74 61 20 69 73 20 70 61 79 6c 6f 61 64 20 66 6f 72 20 61 20 50 4f 53 54 20 72 ..-.data.is.payload.for.a.POST.r
60620 65 71 75 65 73 74 20 6f 72 20 4e 6f 6e 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 0a 20 20 20 equest.or.None..........""".....
60640 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 .....user_passwd.=.None.........
60660 70 72 6f 78 79 5f 70 61 73 73 77 64 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 proxy_passwd=.None.........if.is
60680 69 6e 73 74 61 6e 63 65 28 75 72 6c 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 instance(url,.str):.............
606a0 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a host,.selector.=.splithost(url).
606c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ............if.host:............
606e0 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 2c 20 68 6f 73 74 20 3d 20 73 70 6c 69 74 75 73 .....user_passwd,.host.=.splitus
60700 65 72 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 er(host).................host.=.
60720 75 6e 71 75 6f 74 65 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 6c 68 6f unquote(host).............realho
60740 73 74 20 3d 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 st.=.host.........else:.........
60760 20 20 20 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 75 72 6c 0a 20 20 20 20 20 20 20 ....host,.selector.=.url........
60780 20 20 20 20 20 23 20 63 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 68 65 20 70 72 6f 78 79 20 63 .....#.check.whether.the.proxy.c
607a0 6f 6e 74 61 69 6e 73 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f ontains.authorization.informatio
607c0 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 70 61 73 73 77 64 2c 20 68 6f 73 74 n.............proxy_passwd,.host
607e0 20 3d 20 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 .=.splituser(host).............#
60800 20 6e 6f 77 20 77 65 20 70 72 6f 63 65 65 64 20 77 69 74 68 20 74 68 65 20 75 72 6c 20 77 65 20 .now.we.proceed.with.the.url.we.
60820 77 61 6e 74 20 74 6f 20 6f 62 74 61 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 74 79 want.to.obtain.............urlty
60840 70 65 2c 20 72 65 73 74 20 3d 20 73 70 6c 69 74 74 79 70 65 28 73 65 6c 65 63 74 6f 72 29 0a 20 pe,.rest.=.splittype(selector)..
60860 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 20 3d 20 72 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 ...........url.=.rest...........
60880 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 ..user_passwd.=.None............
608a0 20 69 66 20 75 72 6c 74 79 70 65 2e 6c 6f 77 65 72 28 29 20 21 3d 20 27 68 74 74 70 27 3a 0a 20 .if.urltype.lower().!=.'http':..
608c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 6c 68 6f 73 74 20 3d 20 4e 6f 6e 65 0a 20 ...............realhost.=.None..
608e0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........else:................
60900 20 72 65 61 6c 68 6f 73 74 2c 20 72 65 73 74 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 72 65 73 74 .realhost,.rest.=.splithost(rest
60920 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 61 6c 68 6f 73 74 3a 0a 20 ).................if.realhost:..
60940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 2c 20 ...................user_passwd,.
60960 72 65 61 6c 68 6f 73 74 20 3d 20 73 70 6c 69 74 75 73 65 72 28 72 65 61 6c 68 6f 73 74 29 0a 20 realhost.=.splituser(realhost)..
60980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 5f 70 61 73 73 77 64 3a 0a 20 ...............if.user_passwd:..
609a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 6f 72 20 3d 20 22 25 ...................selector.=."%
609c0 73 3a 2f 2f 25 73 25 73 22 20 25 20 28 75 72 6c 74 79 70 65 2c 20 72 65 61 6c 68 6f 73 74 2c 20 s://%s%s".%.(urltype,.realhost,.
609e0 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 5f 62 rest).................if.proxy_b
60a00 79 70 61 73 73 28 72 65 61 6c 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ypass(realhost):................
60a20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 61 6c 68 6f 73 74 0a 0a 20 20 20 20 20 20 20 20 69 66 .....host.=.realhost..........if
60a40 20 6e 6f 74 20 68 6f 73 74 3a 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 28 27 68 74 74 70 20 65 .not.host:.raise.OSError('http.e
60a60 72 72 6f 72 27 2c 20 27 6e 6f 20 68 6f 73 74 20 67 69 76 65 6e 27 29 0a 0a 20 20 20 20 20 20 20 rror',.'no.host.given').........
60a80 20 69 66 20 70 72 6f 78 79 5f 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 .if.proxy_passwd:.............pr
60aa0 6f 78 79 5f 70 61 73 73 77 64 20 3d 20 75 6e 71 75 6f 74 65 28 70 72 6f 78 79 5f 70 61 73 73 77 oxy_passwd.=.unquote(proxy_passw
60ac0 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 61 75 74 68 20 3d 20 62 61 73 65 d).............proxy_auth.=.base
60ae0 36 34 2e 62 36 34 65 6e 63 6f 64 65 28 70 72 6f 78 79 5f 70 61 73 73 77 64 2e 65 6e 63 6f 64 65 64.b64encode(proxy_passwd.encode
60b00 28 29 29 2e 64 65 63 6f 64 65 28 27 61 73 63 69 69 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 ()).decode('ascii').........else
60b20 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 61 75 74 68 20 3d 20 4e 6f 6e 65 0a :.............proxy_auth.=.None.
60b40 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 5f 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 .........if.user_passwd:........
60b60 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 75 6e 71 75 6f 74 65 28 75 73 65 72 5f .....user_passwd.=.unquote(user_
60b80 70 61 73 73 77 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 62 61 73 65 36 passwd).............auth.=.base6
60ba0 34 2e 62 36 34 65 6e 63 6f 64 65 28 75 73 65 72 5f 70 61 73 73 77 64 2e 65 6e 63 6f 64 65 28 29 4.b64encode(user_passwd.encode()
60bc0 29 2e 64 65 63 6f 64 65 28 27 61 73 63 69 69 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a ).decode('ascii').........else:.
60be0 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 ............auth.=.None.........
60c00 68 74 74 70 5f 63 6f 6e 6e 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 5f 66 61 63 74 6f 72 79 28 68 http_conn.=.connection_factory(h
60c20 6f 73 74 29 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 ost).........headers.=.{}.......
60c40 20 20 69 66 20 70 72 6f 78 79 5f 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 ..if.proxy_auth:.............hea
60c60 64 65 72 73 5b 22 50 72 6f 78 79 2d 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 5d 20 3d 20 22 42 ders["Proxy-Authorization"].=."B
60c80 61 73 69 63 20 25 73 22 20 25 20 70 72 6f 78 79 5f 61 75 74 68 0a 20 20 20 20 20 20 20 20 69 66 asic.%s".%.proxy_auth.........if
60ca0 20 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 22 41 75 74 68 .auth:.............headers["Auth
60cc0 6f 72 69 7a 61 74 69 6f 6e 22 5d 20 3d 20 20 22 42 61 73 69 63 20 25 73 22 20 25 20 61 75 74 68 orization"].=.."Basic.%s".%.auth
60ce0 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 61 6c 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 .........if.realhost:...........
60d00 20 20 68 65 61 64 65 72 73 5b 22 48 6f 73 74 22 5d 20 3d 20 72 65 61 6c 68 6f 73 74 0a 0a 20 20 ..headers["Host"].=.realhost....
60d20 20 20 20 20 20 20 23 20 41 64 64 20 43 6f 6e 6e 65 63 74 69 6f 6e 3a 63 6c 6f 73 65 20 61 73 20 ......#.Add.Connection:close.as.
60d40 77 65 20 64 6f 6e 27 74 20 73 75 70 70 6f 72 74 20 70 65 72 73 69 73 74 65 6e 74 20 63 6f 6e 6e we.don't.support.persistent.conn
60d60 65 63 74 69 6f 6e 73 20 79 65 74 2e 0a 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 68 65 6c 70 ections.yet..........#.This.help
60d80 73 20 69 6e 20 63 6c 6f 73 69 6e 67 20 74 68 65 20 73 6f 63 6b 65 74 20 61 6e 64 20 61 76 6f 69 s.in.closing.the.socket.and.avoi
60da0 64 69 6e 67 20 52 65 73 6f 75 72 63 65 57 61 72 6e 69 6e 67 0a 0a 20 20 20 20 20 20 20 20 68 65 ding.ResourceWarning..........he
60dc0 61 64 65 72 73 5b 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 5d 20 3d 20 22 63 6c 6f 73 65 22 0a 0a 20 aders["Connection"].=."close"...
60de0 20 20 20 20 20 20 20 66 6f 72 20 68 65 61 64 65 72 2c 20 76 61 6c 75 65 20 69 6e 20 73 65 6c 66 .......for.header,.value.in.self
60e00 2e 61 64 64 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 .addheaders:.............headers
60e20 5b 68 65 61 64 65 72 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 [header].=.value..........if.dat
60e40 61 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 a.is.not.None:.............heade
60e60 72 73 5b 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 5d 20 3d 20 22 61 70 70 6c 69 63 61 74 69 6f rs["Content-Type"].=."applicatio
60e80 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 22 0a 20 20 20 20 20 20 20 n/x-www-form-urlencoded"........
60ea0 20 20 20 20 20 68 74 74 70 5f 63 6f 6e 6e 2e 72 65 71 75 65 73 74 28 22 50 4f 53 54 22 2c 20 73 .....http_conn.request("POST",.s
60ec0 65 6c 65 63 74 6f 72 2c 20 64 61 74 61 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 elector,.data,.headers).........
60ee0 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 5f 63 6f 6e 6e 2e 72 65 71 75 else:.............http_conn.requ
60f00 65 73 74 28 22 47 45 54 22 2c 20 73 65 6c 65 63 74 6f 72 2c 20 68 65 61 64 65 72 73 3d 68 65 61 est("GET",.selector,.headers=hea
60f20 64 65 72 73 29 0a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ders)..........try:.............
60f40 72 65 73 70 6f 6e 73 65 20 3d 20 68 74 74 70 5f 63 6f 6e 6e 2e 67 65 74 72 65 73 70 6f 6e 73 65 response.=.http_conn.getresponse
60f60 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e 42 61 ().........except.http.client.Ba
60f80 64 53 74 61 74 75 73 4c 69 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 6f 6d 65 74 dStatusLine:.............#.somet
60fa0 68 69 6e 67 20 77 65 6e 74 20 77 72 6f 6e 67 20 77 69 74 68 20 74 68 65 20 48 54 54 50 20 73 74 hing.went.wrong.with.the.HTTP.st
60fc0 61 74 75 73 20 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 atus.line.............raise.URLE
60fe0 72 72 6f 72 28 22 68 74 74 70 20 70 72 6f 74 6f 63 6f 6c 20 65 72 72 6f 72 3a 20 62 61 64 20 73 rror("http.protocol.error:.bad.s
61000 74 61 74 75 73 20 6c 69 6e 65 22 29 0a 0a 20 20 20 20 20 20 20 20 23 20 41 63 63 6f 72 64 69 6e tatus.line")..........#.Accordin
61020 67 20 74 6f 20 52 46 43 20 32 36 31 36 2c 20 22 32 78 78 22 20 63 6f 64 65 20 69 6e 64 69 63 61 g.to.RFC.2616,."2xx".code.indica
61040 74 65 73 20 74 68 61 74 20 74 68 65 20 63 6c 69 65 6e 74 27 73 0a 20 20 20 20 20 20 20 20 23 20 tes.that.the.client's.........#.
61060 72 65 71 75 65 73 74 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 72 65 63 65 69 76 65 request.was.successfully.receive
61080 64 2c 20 75 6e 64 65 72 73 74 6f 6f 64 2c 20 61 6e 64 20 61 63 63 65 70 74 65 64 2e 0a 20 20 20 d,.understood,.and.accepted.....
610a0 20 20 20 20 20 69 66 20 32 30 30 20 3c 3d 20 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 20 3c .....if.200.<=.response.status.<
610c0 20 33 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f .300:.............return.addinfo
610e0 75 72 6c 28 72 65 73 70 6f 6e 73 65 2c 20 72 65 73 70 6f 6e 73 65 2e 6d 73 67 2c 20 22 68 74 74 url(response,.response.msg,."htt
61100 70 3a 22 20 2b 20 75 72 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p:".+.url,......................
61120 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 .........response.status).......
61140 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e ..else:.............return.self.
61160 68 74 74 70 5f 65 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 2c http_error(.................url,
61180 20 72 65 73 70 6f 6e 73 65 2e 66 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .response.fp,.................re
611a0 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 2c 20 72 65 73 70 6f 6e 73 65 2e 72 65 61 73 6f 6e 2c 20 sponse.status,.response.reason,.
611c0 72 65 73 70 6f 6e 73 65 2e 6d 73 67 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 response.msg,.data)......def.ope
611e0 6e 5f 68 74 74 70 28 73 65 6c 66 2c 20 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 n_http(self,.url,.data=None):...
61200 20 20 20 20 20 20 22 22 22 55 73 65 20 48 54 54 50 20 70 72 6f 74 6f 63 6f 6c 2e 22 22 22 0a 20 ......"""Use.HTTP.protocol."""..
61220 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 .......return.self._open_generic
61240 5f 68 74 74 70 28 68 74 74 70 2e 63 6c 69 65 6e 74 2e 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e _http(http.client.HTTPConnection
61260 2c 20 75 72 6c 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 ,.url,.data)......def.http_error
61280 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c (self,.url,.fp,.errcode,.errmsg,
612a0 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 .headers,.data=None):.........""
612c0 22 48 61 6e 64 6c 65 20 68 74 74 70 20 65 72 72 6f 72 73 2e 0a 0a 20 20 20 20 20 20 20 20 44 65 "Handle.http.errors...........De
612e0 72 69 76 65 64 20 63 6c 61 73 73 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 2c 20 6f rived.class.can.override.this,.o
61300 72 20 70 72 6f 76 69 64 65 20 73 70 65 63 69 66 69 63 20 68 61 6e 64 6c 65 72 73 0a 20 20 20 20 r.provide.specific.handlers.....
61320 20 20 20 20 6e 61 6d 65 64 20 68 74 74 70 5f 65 72 72 6f 72 5f 44 44 44 20 77 68 65 72 65 20 44 ....named.http_error_DDD.where.D
61340 44 44 20 69 73 20 74 68 65 20 33 2d 64 69 67 69 74 20 65 72 72 6f 72 20 63 6f 64 65 2e 22 22 22 DD.is.the.3-digit.error.code."""
61360 0a 20 20 20 20 20 20 20 20 23 20 46 69 72 73 74 20 63 68 65 63 6b 20 69 66 20 74 68 65 72 65 27 .........#.First.check.if.there'
61380 73 20 61 20 73 70 65 63 69 66 69 63 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 69 73 20 65 72 s.a.specific.handler.for.this.er
613a0 72 6f 72 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 27 68 74 74 70 5f 65 72 72 6f 72 5f 25 ror.........name.=.'http_error_%
613c0 64 27 20 25 20 65 72 72 63 6f 64 65 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 d'.%.errcode.........if.hasattr(
613e0 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20 self,.name):.............method.
61400 3d 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 =.getattr(self,.name)...........
61420 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..if.data.is.None:..............
61440 20 20 20 72 65 73 75 6c 74 20 3d 20 6d 65 74 68 6f 64 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 ...result.=.method(url,.fp,.errc
61460 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 ode,.errmsg,.headers)...........
61480 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d ..else:.................result.=
614a0 20 6d 65 74 68 6f 64 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 .method(url,.fp,.errcode,.errmsg
614c0 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ,.headers,.data).............if.
614e0 72 65 73 75 6c 74 3a 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 72 65 result:.return.result.........re
61500 74 75 72 6e 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 75 72 6c turn.self.http_error_default(url
61520 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 0a ,.fp,.errcode,.errmsg,.headers).
61540 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 .....def.http_error_default(self
61560 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 ,.url,.fp,.errcode,.errmsg,.head
61580 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 44 65 66 61 75 6c 74 20 65 72 72 6f 72 20 68 ers):........."""Default.error.h
615a0 61 6e 64 6c 65 72 3a 20 63 6c 6f 73 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 andler:.close.the.connection.and
615c0 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 2e 22 22 22 0a 20 20 20 20 20 20 20 20 66 70 2e 63 6c .raise.OSError.""".........fp.cl
615e0 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 75 72 ose().........raise.HTTPError(ur
61600 6c 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 4e 6f 6e l,.errcode,.errmsg,.headers,.Non
61620 65 29 0a 0a 20 20 20 20 69 66 20 5f 68 61 76 65 5f 73 73 6c 3a 0a 20 20 20 20 20 20 20 20 64 65 e)......if._have_ssl:.........de
61640 66 20 5f 68 74 74 70 73 5f 63 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2c 20 68 6f 73 74 29 3a f._https_connection(self,.host):
61660 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e .............return.http.client.
61680 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 68 6f 73 74 2c 0a 20 20 20 20 20 20 20 20 20 20 HTTPSConnection(host,...........
616a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
616c0 20 6b 65 79 5f 66 69 6c 65 3d 73 65 6c 66 2e 6b 65 79 5f 66 69 6c 65 2c 0a 20 20 20 20 20 20 20 .key_file=self.key_file,........
616e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
61700 20 20 20 20 63 65 72 74 5f 66 69 6c 65 3d 73 65 6c 66 2e 63 65 72 74 5f 66 69 6c 65 29 0a 0a 20 ....cert_file=self.cert_file)...
61720 20 20 20 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 68 74 74 70 73 28 73 65 6c 66 2c 20 75 72 6c 2c .......def.open_https(self,.url,
61740 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 .data=None):............."""Use.
61760 48 54 54 50 53 20 70 72 6f 74 6f 63 6f 6c 2e 22 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 HTTPS.protocol.""".............r
61780 65 74 75 72 6e 20 73 65 6c 66 2e 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 5f 68 74 74 70 28 73 65 eturn.self._open_generic_http(se
617a0 6c 66 2e 5f 68 74 74 70 73 5f 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 75 72 6c 2c 20 64 61 74 61 29 lf._https_connection,.url,.data)
617c0 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 66 69 6c 65 28 73 65 6c 66 2c 20 75 72 6c 29 3a 0a ......def.open_file(self,.url):.
617e0 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 6c 6f 63 61 6c 20 66 69 6c 65 20 6f 72 20 46 54 50 ........"""Use.local.file.or.FTP
61800 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 66 6f 72 6d 20 6f 66 20 55 52 4c 2e 22 22 22 0a 20 20 .depending.on.form.of.URL."""...
61820 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 75 72 6c 2c 20 73 74 72 ......if.not.isinstance(url,.str
61840 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 66 ):.............raise.URLError('f
61860 69 6c 65 20 65 72 72 6f 72 3a 20 70 72 6f 78 79 20 73 75 70 70 6f 72 74 20 66 6f 72 20 66 69 6c ile.error:.proxy.support.for.fil
61880 65 20 70 72 6f 74 6f 63 6f 6c 20 63 75 72 72 65 6e 74 6c 79 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 e.protocol.currently.not.impleme
618a0 6e 74 65 64 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 75 72 6c 5b 3a 32 5d 20 3d 3d 20 27 2f 2f nted').........if.url[:2].==.'//
618c0 27 20 61 6e 64 20 75 72 6c 5b 32 3a 33 5d 20 21 3d 20 27 2f 27 20 61 6e 64 20 75 72 6c 5b 32 3a '.and.url[2:3].!=.'/'.and.url[2:
618e0 31 32 5d 2e 6c 6f 77 65 72 28 29 20 21 3d 20 27 6c 6f 63 61 6c 68 6f 73 74 2f 27 3a 0a 20 20 20 12].lower().!=.'localhost/':....
61900 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 66 69 6c 65 3a .........raise.ValueError("file:
61920 2f 2f 20 73 63 68 65 6d 65 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 6f 6e 20 6c //.scheme.is.supported.only.on.l
61940 6f 63 61 6c 68 6f 73 74 22 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 ocalhost").........else:........
61960 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 .....return.self.open_local_file
61980 28 75 72 6c 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 28 73 (url)......def.open_local_file(s
619a0 65 6c 66 2c 20 75 72 6c 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 6c 6f 63 61 6c 20 elf,.url):........."""Use.local.
619c0 66 69 6c 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 65 6d 61 69 6c 2e 75 74 file.""".........import.email.ut
619e0 69 6c 73 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 6d 69 6d 65 74 79 70 65 73 0a 20 20 20 ils.........import.mimetypes....
61a00 20 20 20 20 20 68 6f 73 74 2c 20 66 69 6c 65 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 .....host,.file.=.splithost(url)
61a20 0a 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 6e 61 6d 65 20 3d 20 75 72 6c 32 70 61 74 68 6e 61 6d .........localname.=.url2pathnam
61a40 65 28 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 e(file).........try:............
61a60 20 73 74 61 74 73 20 3d 20 6f 73 2e 73 74 61 74 28 6c 6f 63 61 6c 6e 61 6d 65 29 0a 20 20 20 20 .stats.=.os.stat(localname).....
61a80 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 ....except.OSError.as.e:........
61aa0 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 65 2e 73 74 72 65 72 72 6f 72 2c 20 .....raise.URLError(e.strerror,.
61ac0 65 2e 66 69 6c 65 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 73 69 7a 65 20 3d 20 73 74 61 74 73 e.filename).........size.=.stats
61ae0 2e 73 74 5f 73 69 7a 65 0a 20 20 20 20 20 20 20 20 6d 6f 64 69 66 69 65 64 20 3d 20 65 6d 61 69 .st_size.........modified.=.emai
61b00 6c 2e 75 74 69 6c 73 2e 66 6f 72 6d 61 74 64 61 74 65 28 73 74 61 74 73 2e 73 74 5f 6d 74 69 6d l.utils.formatdate(stats.st_mtim
61b20 65 2c 20 75 73 65 67 6d 74 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 6d 74 79 70 65 20 3d 20 e,.usegmt=True).........mtype.=.
61b40 6d 69 6d 65 74 79 70 65 73 2e 67 75 65 73 73 5f 74 79 70 65 28 75 72 6c 29 5b 30 5d 0a 20 20 20 mimetypes.guess_type(url)[0]....
61b60 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 6c 2e 6d 65 73 73 61 67 65 5f 66 72 6f .....headers.=.email.message_fro
61b80 6d 5f 73 74 72 69 6e 67 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 43 6f 6e 74 65 6e 74 2d 54 m_string(.............'Content-T
61ba0 79 70 65 3a 20 25 73 5c 6e 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 25 64 5c 6e 4c 61 73 ype:.%s\nContent-Length:.%d\nLas
61bc0 74 2d 6d 6f 64 69 66 69 65 64 3a 20 25 73 5c 6e 27 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-modified:.%s\n'.%.............
61be0 28 6d 74 79 70 65 20 6f 72 20 27 74 65 78 74 2f 70 6c 61 69 6e 27 2c 20 73 69 7a 65 2c 20 6d 6f (mtype.or.'text/plain',.size,.mo
61c00 64 69 66 69 65 64 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 0a 20 20 dified)).........if.not.host:...
61c20 20 20 20 20 20 20 20 20 20 20 75 72 6c 66 69 6c 65 20 3d 20 66 69 6c 65 0a 20 20 20 20 20 20 20 ..........urlfile.=.file........
61c40 20 20 20 20 20 69 66 20 66 69 6c 65 5b 3a 31 5d 20 3d 3d 20 27 2f 27 3a 0a 20 20 20 20 20 20 20 .....if.file[:1].==.'/':........
61c60 20 20 20 20 20 20 20 20 20 75 72 6c 66 69 6c 65 20 3d 20 27 66 69 6c 65 3a 2f 2f 27 20 2b 20 66 .........urlfile.=.'file://'.+.f
61c80 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 ile.............return.addinfour
61ca0 6c 28 6f 70 65 6e 28 6c 6f 63 61 6c 6e 61 6d 65 2c 20 27 72 62 27 29 2c 20 68 65 61 64 65 72 73 l(open(localname,.'rb'),.headers
61cc0 2c 20 75 72 6c 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 20 3d 20 ,.urlfile).........host,.port.=.
61ce0 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 splitport(host).........if.(not.
61d00 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f port............and.socket.getho
61d20 73 74 62 79 6e 61 6d 65 28 68 6f 73 74 29 20 69 6e 20 28 28 6c 6f 63 61 6c 68 6f 73 74 28 29 2c stbyname(host).in.((localhost(),
61d40 29 20 2b 20 74 68 69 73 68 6f 73 74 28 29 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 ).+.thishost())):.............ur
61d60 6c 66 69 6c 65 20 3d 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 66 69 6c 65 lfile.=.file.............if.file
61d80 5b 3a 31 5d 20 3d 3d 20 27 2f 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c [:1].==.'/':.................url
61da0 66 69 6c 65 20 3d 20 27 66 69 6c 65 3a 2f 2f 27 20 2b 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 file.=.'file://'.+.file.........
61dc0 20 20 20 20 65 6c 69 66 20 66 69 6c 65 5b 3a 32 5d 20 3d 3d 20 27 2e 2f 27 3a 0a 20 20 20 20 20 ....elif.file[:2].==.'./':......
61de0 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 6c 6f 63 ...........raise.ValueError("loc
61e00 61 6c 20 66 69 6c 65 20 75 72 6c 20 6d 61 79 20 73 74 61 72 74 20 77 69 74 68 20 2f 20 6f 72 20 al.file.url.may.start.with./.or.
61e20 66 69 6c 65 3a 2e 20 55 6e 6b 6e 6f 77 6e 20 75 72 6c 20 6f 66 20 74 79 70 65 3a 20 25 73 22 20 file:..Unknown.url.of.type:.%s".
61e40 25 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 %.url).............return.addinf
61e60 6f 75 72 6c 28 6f 70 65 6e 28 6c 6f 63 61 6c 6e 61 6d 65 2c 20 27 72 62 27 29 2c 20 68 65 61 64 ourl(open(localname,.'rb'),.head
61e80 65 72 73 2c 20 75 72 6c 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 ers,.urlfile).........raise.URLE
61ea0 72 72 6f 72 28 27 6c 6f 63 61 6c 20 66 69 6c 65 20 65 72 72 6f 72 3a 20 6e 6f 74 20 6f 6e 20 6c rror('local.file.error:.not.on.l
61ec0 6f 63 61 6c 20 68 6f 73 74 27 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 66 74 70 28 73 65 ocal.host')......def.open_ftp(se
61ee0 6c 66 2c 20 75 72 6c 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 46 54 50 20 70 72 6f lf,.url):........."""Use.FTP.pro
61f00 74 6f 63 6f 6c 2e 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 tocol.""".........if.not.isinsta
61f20 6e 63 65 28 75 72 6c 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 nce(url,.str):.............raise
61f40 20 55 52 4c 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 3a 20 70 72 6f 78 79 20 73 75 70 70 .URLError('ftp.error:.proxy.supp
61f60 6f 72 74 20 66 6f 72 20 66 74 70 20 70 72 6f 74 6f 63 6f 6c 20 63 75 72 72 65 6e 74 6c 79 20 6e ort.for.ftp.protocol.currently.n
61f80 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 27 29 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 ot.implemented').........import.
61fa0 6d 69 6d 65 74 79 70 65 73 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 61 74 68 20 3d 20 73 mimetypes.........host,.path.=.s
61fc0 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 plithost(url).........if.not.hos
61fe0 74 3a 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 3a 20 6e 6f t:.raise.URLError('ftp.error:.no
62000 20 68 6f 73 74 20 67 69 76 65 6e 27 29 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 .host.given').........host,.port
62020 20 3d 20 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c .=.splitport(host).........user,
62040 20 68 6f 73 74 20 3d 20 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 .host.=.splituser(host).........
62060 69 66 20 75 73 65 72 3a 20 75 73 65 72 2c 20 70 61 73 73 77 64 20 3d 20 73 70 6c 69 74 70 61 73 if.user:.user,.passwd.=.splitpas
62080 73 77 64 28 75 73 65 72 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 20 70 61 73 73 77 64 20 3d swd(user).........else:.passwd.=
620a0 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 75 6e 71 75 6f 74 65 28 68 6f 73 .None.........host.=.unquote(hos
620c0 74 29 0a 20 20 20 20 20 20 20 20 75 73 65 72 20 3d 20 75 6e 71 75 6f 74 65 28 75 73 65 72 20 6f t).........user.=.unquote(user.o
620e0 72 20 27 27 29 0a 20 20 20 20 20 20 20 20 70 61 73 73 77 64 20 3d 20 75 6e 71 75 6f 74 65 28 70 r.'').........passwd.=.unquote(p
62100 61 73 73 77 64 20 6f 72 20 27 27 29 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 73 6f 63 6b asswd.or.'').........host.=.sock
62120 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 et.gethostbyname(host).........i
62140 66 20 6e 6f 74 20 70 6f 72 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 66 f.not.port:.............import.f
62160 74 70 6c 69 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 20 3d 20 66 74 70 6c 69 62 2e tplib.............port.=.ftplib.
62180 46 54 50 5f 50 4f 52 54 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 FTP_PORT.........else:..........
621a0 20 20 20 70 6f 72 74 20 3d 20 69 6e 74 28 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 70 61 74 68 ...port.=.int(port).........path
621c0 2c 20 61 74 74 72 73 20 3d 20 73 70 6c 69 74 61 74 74 72 28 70 61 74 68 29 0a 20 20 20 20 20 20 ,.attrs.=.splitattr(path).......
621e0 20 20 70 61 74 68 20 3d 20 75 6e 71 75 6f 74 65 28 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 64 ..path.=.unquote(path).........d
62200 69 72 73 20 3d 20 70 61 74 68 2e 73 70 6c 69 74 28 27 2f 27 29 0a 20 20 20 20 20 20 20 20 64 69 irs.=.path.split('/').........di
62220 72 73 2c 20 66 69 6c 65 20 3d 20 64 69 72 73 5b 3a 2d 31 5d 2c 20 64 69 72 73 5b 2d 31 5d 0a 20 rs,.file.=.dirs[:-1],.dirs[-1]..
62240 20 20 20 20 20 20 20 69 66 20 64 69 72 73 20 61 6e 64 20 6e 6f 74 20 64 69 72 73 5b 30 5d 3a 20 .......if.dirs.and.not.dirs[0]:.
62260 64 69 72 73 20 3d 20 64 69 72 73 5b 31 3a 5d 0a 20 20 20 20 20 20 20 20 69 66 20 64 69 72 73 20 dirs.=.dirs[1:].........if.dirs.
62280 61 6e 64 20 6e 6f 74 20 64 69 72 73 5b 30 5d 3a 20 64 69 72 73 5b 30 5d 20 3d 20 27 2f 27 0a 20 and.not.dirs[0]:.dirs[0].=.'/'..
622a0 20 20 20 20 20 20 20 6b 65 79 20 3d 20 75 73 65 72 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 27 .......key.=.user,.host,.port,.'
622c0 2f 27 2e 6a 6f 69 6e 28 64 69 72 73 29 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 74 68 72 65 /'.join(dirs).........#.XXX.thre
622e0 61 64 20 75 6e 73 61 66 65 21 0a 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 73 65 6c 66 2e 66 ad.unsafe!.........if.len(self.f
62300 74 70 63 61 63 68 65 29 20 3e 20 4d 41 58 46 54 50 43 41 43 48 45 3a 0a 20 20 20 20 20 20 20 20 tpcache).>.MAXFTPCACHE:.........
62320 20 20 20 20 23 20 50 72 75 6e 65 20 74 68 65 20 63 61 63 68 65 2c 20 72 61 74 68 65 72 20 61 72 ....#.Prune.the.cache,.rather.ar
62340 62 69 74 72 61 72 69 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 20 69 6e 20 6c bitrarily.............for.k.in.l
62360 69 73 74 28 73 65 6c 66 2e 66 74 70 63 61 63 68 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ist(self.ftpcache):.............
62380 20 20 20 20 69 66 20 6b 20 21 3d 20 6b 65 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....if.k.!=.key:................
623a0 20 20 20 20 20 76 20 3d 20 73 65 6c 66 2e 66 74 70 63 61 63 68 65 5b 6b 5d 0a 20 20 20 20 20 20 .....v.=.self.ftpcache[k].......
623c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 66 74 70 63 61 63 68 65 5b ..............del.self.ftpcache[
623e0 6b 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 2e 63 6c 6f 73 65 28 29 k].....................v.close()
62400 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 .........try:.............if.key
62420 20 6e 6f 74 20 69 6e 20 73 65 6c 66 2e 66 74 70 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 .not.in.self.ftpcache:..........
62440 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 63 61 63 68 65 5b 6b 65 79 5d 20 3d 20 5c 0a 20 20 .......self.ftpcache[key].=.\...
62460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 74 70 77 72 61 70 70 65 72 28 75 73 65 ..................ftpwrapper(use
62480 72 2c 20 70 61 73 73 77 64 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 64 69 72 73 29 0a 20 20 20 r,.passwd,.host,.port,.dirs)....
624a0 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 66 69 6c 65 3a 20 74 79 70 65 20 3d 20 27 44 27 .........if.not.file:.type.=.'D'
624c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 20 74 79 70 65 20 3d 20 27 49 27 0a 20 20 .............else:.type.=.'I'...
624e0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61 74 74 72 20 69 6e 20 61 74 74 72 73 3a 0a 20 20 20 ..........for.attr.in.attrs:....
62500 20 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 2c 20 76 61 6c 75 65 20 3d 20 73 70 6c 69 74 .............attr,.value.=.split
62520 76 61 6c 75 65 28 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 61 value(attr).................if.a
62540 74 74 72 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 27 74 79 70 65 27 20 61 6e 64 20 5c 0a 20 20 20 20 ttr.lower().==.'type'.and.\.....
62560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 69 6e 20 28 27 61 27 2c 20 27 41 ...............value.in.('a',.'A
62580 27 2c 20 27 69 27 2c 20 27 49 27 2c 20 27 64 27 2c 20 27 44 27 29 3a 0a 20 20 20 20 20 20 20 20 ',.'i',.'I',.'d',.'D'):.........
625a0 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d 20 76 61 6c 75 65 2e 75 70 70 65 72 28 29 ............type.=.value.upper()
625c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 70 2c 20 72 65 74 72 6c 65 6e 29 20 3d 20 73 65 6c .............(fp,.retrlen).=.sel
625e0 66 2e 66 74 70 63 61 63 68 65 5b 6b 65 79 5d 2e 72 65 74 72 66 69 6c 65 28 66 69 6c 65 2c 20 74 f.ftpcache[key].retrfile(file,.t
62600 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 74 79 70 65 20 3d 20 6d 69 6d 65 74 79 70 ype).............mtype.=.mimetyp
62620 65 73 2e 67 75 65 73 73 5f 74 79 70 65 28 22 66 74 70 3a 22 20 2b 20 75 72 6c 29 5b 30 5d 0a 20 es.guess_type("ftp:".+.url)[0]..
62640 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 ...........headers.=."".........
62660 20 20 20 20 69 66 20 6d 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 ....if.mtype:.................he
62680 61 64 65 72 73 20 2b 3d 20 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 25 73 5c 6e 22 20 25 20 aders.+=."Content-Type:.%s\n".%.
626a0 6d 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 74 72 6c 65 6e 20 69 73 20 mtype.............if.retrlen.is.
626c0 6e 6f 74 20 4e 6f 6e 65 20 61 6e 64 20 72 65 74 72 6c 65 6e 20 3e 3d 20 30 3a 0a 20 20 20 20 20 not.None.and.retrlen.>=.0:......
626e0 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 2b 3d 20 22 43 6f 6e 74 65 6e 74 2d 4c ...........headers.+=."Content-L
62700 65 6e 67 74 68 3a 20 25 64 5c 6e 22 20 25 20 72 65 74 72 6c 65 6e 0a 20 20 20 20 20 20 20 20 20 ength:.%d\n".%.retrlen..........
62720 20 20 20 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 6c 2e 6d 65 73 73 61 67 65 5f 66 72 6f 6d 5f ...headers.=.email.message_from_
62740 73 74 72 69 6e 67 28 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 string(headers).............retu
62760 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 66 70 2c 20 68 65 61 64 65 72 73 2c 20 22 66 74 70 3a rn.addinfourl(fp,.headers,."ftp:
62780 22 20 2b 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 65 72 72 6f 72 ".+.url).........except.ftperror
627a0 73 28 29 20 61 73 20 65 78 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 s().as.exp:.............raise.UR
627c0 4c 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 20 25 72 27 20 25 20 65 78 70 29 2e 77 69 74 LError('ftp.error.%r'.%.exp).wit
627e0 68 5f 74 72 61 63 65 62 61 63 6b 28 73 79 73 2e 65 78 63 5f 69 6e 66 6f 28 29 5b 32 5d 29 0a 0a h_traceback(sys.exc_info()[2])..
62800 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 64 61 74 61 28 73 65 6c 66 2c 20 75 72 6c 2c 20 64 61 74 ....def.open_data(self,.url,.dat
62820 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 22 64 61 74 61 22 20 55 a=None):........."""Use."data".U
62840 52 4c 2e 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 RL.""".........if.not.isinstance
62860 28 75 72 6c 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 (url,.str):.............raise.UR
62880 4c 45 72 72 6f 72 28 27 64 61 74 61 20 65 72 72 6f 72 3a 20 70 72 6f 78 79 20 73 75 70 70 6f 72 LError('data.error:.proxy.suppor
628a0 74 20 66 6f 72 20 64 61 74 61 20 70 72 6f 74 6f 63 6f 6c 20 63 75 72 72 65 6e 74 6c 79 20 6e 6f t.for.data.protocol.currently.no
628c0 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 27 29 0a 20 20 20 20 20 20 20 20 23 20 69 67 6e 6f 72 65 t.implemented').........#.ignore
628e0 20 50 4f 53 54 65 64 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 .POSTed.data.........#.........#
62900 20 73 79 6e 74 61 78 20 6f 66 20 64 61 74 61 20 55 52 4c 73 3a 0a 20 20 20 20 20 20 20 20 23 20 .syntax.of.data.URLs:.........#.
62920 64 61 74 61 75 72 6c 20 20 20 3a 3d 20 22 64 61 74 61 3a 22 20 5b 20 6d 65 64 69 61 74 79 70 65 dataurl...:=."data:".[.mediatype
62940 20 5d 20 5b 20 22 3b 62 61 73 65 36 34 22 20 5d 20 22 2c 22 20 64 61 74 61 0a 20 20 20 20 20 20 .].[.";base64".].",".data.......
62960 20 20 23 20 6d 65 64 69 61 74 79 70 65 20 3a 3d 20 5b 20 74 79 70 65 20 22 2f 22 20 73 75 62 74 ..#.mediatype.:=.[.type."/".subt
62980 79 70 65 20 5d 20 2a 28 20 22 3b 22 20 70 61 72 61 6d 65 74 65 72 20 29 0a 20 20 20 20 20 20 20 ype.].*(.";".parameter.)........
629a0 20 23 20 64 61 74 61 20 20 20 20 20 20 3a 3d 20 2a 75 72 6c 63 68 61 72 0a 20 20 20 20 20 20 20 .#.data......:=.*urlchar........
629c0 20 23 20 70 61 72 61 6d 65 74 65 72 20 3a 3d 20 61 74 74 72 69 62 75 74 65 20 22 3d 22 20 76 61 .#.parameter.:=.attribute."=".va
629e0 6c 75 65 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 74 79 lue.........try:.............[ty
62a00 70 65 2c 20 64 61 74 61 5d 20 3d 20 75 72 6c 2e 73 70 6c 69 74 28 27 2c 27 2c 20 31 29 0a 20 20 pe,.data].=.url.split(',',.1)...
62a20 20 20 20 20 20 20 65 78 63 65 70 74 20 56 61 6c 75 65 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 ......except.ValueError:........
62a40 20 20 20 20 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 28 27 64 61 74 61 20 65 72 72 6f 72 27 2c .....raise.OSError('data.error',
62a60 20 27 62 61 64 20 64 61 74 61 20 55 52 4c 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 .'bad.data.URL').........if.not.
62a80 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d 20 27 74 65 78 74 2f 70 type:.............type.=.'text/p
62aa0 6c 61 69 6e 3b 63 68 61 72 73 65 74 3d 55 53 2d 41 53 43 49 49 27 0a 20 20 20 20 20 20 20 20 73 lain;charset=US-ASCII'.........s
62ac0 65 6d 69 20 3d 20 74 79 70 65 2e 72 66 69 6e 64 28 27 3b 27 29 0a 20 20 20 20 20 20 20 20 69 66 emi.=.type.rfind(';').........if
62ae0 20 73 65 6d 69 20 3e 3d 20 30 20 61 6e 64 20 27 3d 27 20 6e 6f 74 20 69 6e 20 74 79 70 65 5b 73 .semi.>=.0.and.'='.not.in.type[s
62b00 65 6d 69 3a 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 6f 64 69 6e 67 20 3d 20 74 79 emi:]:.............encoding.=.ty
62b20 70 65 5b 73 65 6d 69 2b 31 3a 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d 20 74 pe[semi+1:].............type.=.t
62b40 79 70 65 5b 3a 73 65 6d 69 5d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 ype[:semi].........else:........
62b60 20 20 20 20 20 65 6e 63 6f 64 69 6e 67 20 3d 20 27 27 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d .....encoding.=.''.........msg.=
62b80 20 5b 5d 0a 20 20 20 20 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 44 61 74 65 3a 20 25 73 .[].........msg.append('Date:.%s
62ba0 27 25 74 69 6d 65 2e 73 74 72 66 74 69 6d 65 28 27 25 61 2c 20 25 64 20 25 62 20 25 59 20 25 48 '%time.strftime('%a,.%d.%b.%Y.%H
62bc0 3a 25 4d 3a 25 53 20 47 4d 54 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :%M:%S.GMT',....................
62be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 2e 67 6d .........................time.gm
62c00 74 69 6d 65 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 29 29 0a 20 20 20 20 20 20 20 20 6d 73 67 2e time(time.time()))).........msg.
62c20 61 70 70 65 6e 64 28 27 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 25 73 27 20 25 20 74 79 70 65 append('Content-type:.%s'.%.type
62c40 29 0a 20 20 20 20 20 20 20 20 69 66 20 65 6e 63 6f 64 69 6e 67 20 3d 3d 20 27 62 61 73 65 36 34 ).........if.encoding.==.'base64
62c60 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 58 58 58 20 69 73 20 74 68 69 73 20 65 6e 63 ':.............#.XXX.is.this.enc
62c80 6f 64 69 6e 67 2f 64 65 63 6f 64 69 6e 67 20 6f 6b 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 oding/decoding.ok?.............d
62ca0 61 74 61 20 3d 20 62 61 73 65 36 34 2e 64 65 63 6f 64 65 62 79 74 65 73 28 64 61 74 61 2e 65 6e ata.=.base64.decodebytes(data.en
62cc0 63 6f 64 65 28 27 61 73 63 69 69 27 29 29 2e 64 65 63 6f 64 65 28 27 6c 61 74 69 6e 2d 31 27 29 code('ascii')).decode('latin-1')
62ce0 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 .........else:.............data.
62d00 3d 20 75 6e 71 75 6f 74 65 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 6d 73 67 2e 61 70 70 65 =.unquote(data).........msg.appe
62d20 6e 64 28 27 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 25 64 27 20 25 20 6c 65 6e 28 64 61 nd('Content-Length:.%d'.%.len(da
62d40 74 61 29 29 0a 20 20 20 20 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 27 29 0a 20 20 20 20 ta)).........msg.append('').....
62d60 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 6d 73 67 ....msg.append(data).........msg
62d80 20 3d 20 27 5c 6e 27 2e 6a 6f 69 6e 28 6d 73 67 29 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 .=.'\n'.join(msg).........header
62da0 73 20 3d 20 65 6d 61 69 6c 2e 6d 65 73 73 61 67 65 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 6d 73 s.=.email.message_from_string(ms
62dc0 67 29 0a 20 20 20 20 20 20 20 20 66 20 3d 20 69 6f 2e 53 74 72 69 6e 67 49 4f 28 6d 73 67 29 0a g).........f.=.io.StringIO(msg).
62de0 20 20 20 20 20 20 20 20 23 66 2e 66 69 6c 65 6e 6f 20 3d 20 4e 6f 6e 65 20 20 20 20 20 23 20 6e ........#f.fileno.=.None.....#.n
62e00 65 65 64 65 64 20 66 6f 72 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 20 20 20 20 72 65 74 eeded.for.addinfourl.........ret
62e20 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 66 2c 20 68 65 61 64 65 72 73 2c 20 75 72 6c 29 0a urn.addinfourl(f,.headers,.url).
62e40 0a 0a 63 6c 61 73 73 20 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 28 55 52 4c 6f 70 65 6e 65 72 ..class.FancyURLopener(URLopener
62e60 29 3a 0a 20 20 20 20 22 22 22 44 65 72 69 76 65 64 20 63 6c 61 73 73 20 77 69 74 68 20 68 61 6e ):....."""Derived.class.with.han
62e80 64 6c 65 72 73 20 66 6f 72 20 65 72 72 6f 72 73 20 77 65 20 63 61 6e 20 68 61 6e 64 6c 65 20 28 dlers.for.errors.we.can.handle.(
62ea0 70 65 72 68 61 70 73 29 2e 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 perhaps)."""......def.__init__(s
62ec0 65 6c 66 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 55 elf,.*args,.**kwargs):.........U
62ee0 52 4c 6f 70 65 6e 65 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 2a 61 72 67 73 2c 20 2a RLopener.__init__(self,.*args,.*
62f00 2a 6b 77 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 75 74 68 5f 63 61 63 68 65 *kwargs).........self.auth_cache
62f20 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 72 69 65 73 20 3d 20 30 0a 20 20 20 .=.{}.........self.tries.=.0....
62f40 20 20 20 20 20 73 65 6c 66 2e 6d 61 78 74 72 69 65 73 20 3d 20 31 30 0a 0a 20 20 20 20 64 65 66 .....self.maxtries.=.10......def
62f60 20 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 .http_error_default(self,.url,.f
62f80 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 p,.errcode,.errmsg,.headers):...
62fa0 20 20 20 20 20 20 22 22 22 44 65 66 61 75 6c 74 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 ......"""Default.error.handling.
62fc0 2d 2d 20 64 6f 6e 27 74 20 72 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 22 22 22 0a --.don't.raise.an.exception.""".
62fe0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 66 70 2c 20 68 65 ........return.addinfourl(fp,.he
63000 61 64 65 72 73 2c 20 22 68 74 74 70 3a 22 20 2b 20 75 72 6c 2c 20 65 72 72 63 6f 64 65 29 0a 0a aders,."http:".+.url,.errcode)..
63020 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 28 73 65 6c 66 2c 20 75 72 6c ....def.http_error_302(self,.url
63040 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 ,.fp,.errcode,.errmsg,.headers,.
63060 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 20 33 30 32 data=None):........."""Error.302
63080 20 2d 2d 20 72 65 6c 6f 63 61 74 65 64 20 28 74 65 6d 70 6f 72 61 72 69 6c 79 29 2e 22 22 22 0a .--.relocated.(temporarily).""".
630a0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 72 69 65 73 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 ........self.tries.+=.1.........
630c0 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 6d 61 78 74 72 69 65 try:.............if.self.maxtrie
630e0 73 20 61 6e 64 20 73 65 6c 66 2e 74 72 69 65 73 20 3e 3d 20 73 65 6c 66 2e 6d 61 78 74 72 69 65 s.and.self.tries.>=.self.maxtrie
63100 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 s:.................if.hasattr(se
63120 6c 66 2c 20 22 68 74 74 70 5f 65 72 72 6f 72 5f 35 30 30 22 29 3a 0a 20 20 20 20 20 20 20 20 20 lf,."http_error_500"):..........
63140 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 20 3d 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f ...........meth.=.self.http_erro
63160 72 5f 35 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 r_500.................else:.....
63180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 20 3d 20 73 65 6c 66 2e 68 74 74 70 ................meth.=.self.http
631a0 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 _error_default.................r
631c0 65 74 75 72 6e 20 6d 65 74 68 28 75 72 6c 2c 20 66 70 2c 20 35 30 30 2c 0a 20 20 20 20 20 20 20 eturn.meth(url,.fp,.500,........
631e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 74 65 72 6e 61 6c 20 53 ....................."Internal.S
63200 65 72 76 65 72 20 45 72 72 6f 72 3a 20 52 65 64 69 72 65 63 74 20 52 65 63 75 72 73 69 6f 6e 22 erver.Error:.Redirect.Recursion"
63220 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 ,.............................he
63240 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 65 6c 66 aders).............result.=.self
63260 2e 72 65 64 69 72 65 63 74 5f 69 6e 74 65 72 6e 61 6c 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 .redirect_internal(url,.fp,.errc
63280 6f 64 65 2c 20 65 72 72 6d 73 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ode,.errmsg,....................
632a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 .........................headers
632c0 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c ,.data).............return.resul
632e0 74 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 t.........finally:.............s
63300 65 6c 66 2e 74 72 69 65 73 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 72 65 64 69 72 65 63 74 5f elf.tries.=.0......def.redirect_
63320 69 6e 74 65 72 6e 61 6c 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c internal(self,.url,.fp,.errcode,
63340 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 .errmsg,.headers,.data):........
63360 20 69 66 20 27 6c 6f 63 61 74 69 6f 6e 27 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 .if.'location'.in.headers:......
63380 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 68 65 61 64 65 72 73 5b 27 6c 6f 63 61 74 69 6f .......newurl.=.headers['locatio
633a0 6e 27 5d 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 27 75 72 69 27 20 69 6e 20 68 65 61 64 65 72 n'].........elif.'uri'.in.header
633c0 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 68 65 61 64 65 72 73 5b s:.............newurl.=.headers[
633e0 27 75 72 69 27 5d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 'uri'].........else:............
63400 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 66 70 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 .return.........fp.close()......
63420 20 20 20 20 23 20 49 6e 20 63 61 73 65 20 74 68 65 20 73 65 72 76 65 72 20 73 65 6e 74 20 61 20 ....#.In.case.the.server.sent.a.
63440 72 65 6c 61 74 69 76 65 20 55 52 4c 2c 20 6a 6f 69 6e 20 77 69 74 68 20 6f 72 69 67 69 6e 61 6c relative.URL,.join.with.original
63460 3a 0a 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 75 72 6c 6a 6f 69 6e 28 73 65 6c 66 2e :.........newurl.=.urljoin(self.
63480 74 79 70 65 20 2b 20 22 3a 22 20 2b 20 75 72 6c 2c 20 6e 65 77 75 72 6c 29 0a 0a 20 20 20 20 20 type.+.":".+.url,.newurl).......
634a0 20 20 20 75 72 6c 70 61 72 74 73 20 3d 20 75 72 6c 70 61 72 73 65 28 6e 65 77 75 72 6c 29 0a 0a ...urlparts.=.urlparse(newurl)..
634c0 20 20 20 20 20 20 20 20 23 20 46 6f 72 20 73 65 63 75 72 69 74 79 20 72 65 61 73 6f 6e 73 2c 20 ........#.For.security.reasons,.
634e0 77 65 20 64 6f 6e 27 74 20 61 6c 6c 6f 77 20 72 65 64 69 72 65 63 74 69 6f 6e 20 74 6f 20 61 6e we.don't.allow.redirection.to.an
63500 79 74 68 69 6e 67 20 6f 74 68 65 72 0a 20 20 20 20 20 20 20 20 23 20 74 68 61 6e 20 68 74 74 70 ything.other.........#.than.http
63520 2c 20 68 74 74 70 73 20 61 6e 64 20 66 74 70 2e 0a 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 61 ,.https.and.ftp...........#.We.a
63540 72 65 20 75 73 69 6e 67 20 6e 65 77 65 72 20 48 54 54 50 45 72 72 6f 72 20 77 69 74 68 20 6f 6c re.using.newer.HTTPError.with.ol
63560 64 65 72 20 72 65 64 69 72 65 63 74 5f 69 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 0a 20 20 20 der.redirect_internal.method....
63580 20 20 20 20 20 23 20 54 68 69 73 20 6f 6c 64 65 72 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 67 65 .....#.This.older.method.will.ge
635a0 74 20 64 65 70 72 65 63 61 74 65 64 20 69 6e 20 33 2e 33 0a 0a 20 20 20 20 20 20 20 20 69 66 20 t.deprecated.in.3.3..........if.
635c0 75 72 6c 70 61 72 74 73 2e 73 63 68 65 6d 65 20 6e 6f 74 20 69 6e 20 28 27 68 74 74 70 27 2c 20 urlparts.scheme.not.in.('http',.
635e0 27 68 74 74 70 73 27 2c 20 27 66 74 70 27 2c 20 27 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 'https',.'ftp',.''):............
63600 20 72 61 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 6e 65 77 75 72 6c 2c 20 65 72 72 63 6f 64 65 .raise.HTTPError(newurl,.errcode
63620 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 ,.............................er
63640 72 6d 73 67 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rmsg.+..........................
63660 20 20 20 22 20 52 65 64 69 72 65 63 74 69 6f 6e 20 74 6f 20 75 72 6c 20 27 25 73 27 20 69 73 20 ...".Redirection.to.url.'%s'.is.
63680 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 22 20 25 20 6e 65 77 75 72 6c 2c 0a 20 20 20 20 20 20 20 20 not.allowed.".%.newurl,.........
636a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 2c 20 66 70 29 ....................headers,.fp)
636c0 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 28 6e 65 77 75 72 ..........return.self.open(newur
636e0 6c 29 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 31 28 73 65 6c 66 2c l)......def.http_error_301(self,
63700 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 .url,.fp,.errcode,.errmsg,.heade
63720 72 73 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 rs,.data=None):........."""Error
63740 20 33 30 31 20 2d 2d 20 61 6c 73 6f 20 72 65 6c 6f 63 61 74 65 64 20 28 70 65 72 6d 61 6e 65 6e .301.--.also.relocated.(permanen
63760 74 6c 79 29 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 68 74 74 tly).""".........return.self.htt
63780 70 5f 65 72 72 6f 72 5f 33 30 32 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 p_error_302(url,.fp,.errcode,.er
637a0 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 68 74 rmsg,.headers,.data)......def.ht
637c0 74 70 5f 65 72 72 6f 72 5f 33 30 33 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 tp_error_303(self,.url,.fp,.errc
637e0 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 ode,.errmsg,.headers,.data=None)
63800 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 20 33 30 33 20 2d 2d 20 61 6c 73 6f 20 72 :........."""Error.303.--.also.r
63820 65 6c 6f 63 61 74 65 64 20 28 65 73 73 65 6e 74 69 61 6c 6c 79 20 69 64 65 6e 74 69 63 61 6c 20 elocated.(essentially.identical.
63840 74 6f 20 33 30 32 29 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e to.302).""".........return.self.
63860 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c http_error_302(url,.fp,.errcode,
63880 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 .errmsg,.headers,.data)......def
638a0 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 37 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 .http_error_307(self,.url,.fp,.e
638c0 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 3d 4e 6f rrcode,.errmsg,.headers,.data=No
638e0 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 20 33 30 37 20 2d 2d 20 72 65 6c ne):........."""Error.307.--.rel
63900 6f 63 61 74 65 64 2c 20 62 75 74 20 74 75 72 6e 20 50 4f 53 54 20 69 6e 74 6f 20 65 72 72 6f 72 ocated,.but.turn.POST.into.error
63920 2e 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 .""".........if.data.is.None:...
63940 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 ..........return.self.http_error
63960 5f 33 30 32 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 _302(url,.fp,.errcode,.errmsg,.h
63980 65 61 64 65 72 73 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 eaders,.data).........else:.....
639a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 ........return.self.http_error_d
639c0 65 66 61 75 6c 74 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c efault(url,.fp,.errcode,.errmsg,
639e0 20 68 65 61 64 65 72 73 29 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 .headers)......def.http_error_40
63a00 31 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 1(self,.url,.fp,.errcode,.errmsg
63a20 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 ,.headers,.data=None,...........
63a40 20 20 72 65 74 72 79 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 ..retry=False):........."""Error
63a60 20 34 30 31 20 2d 2d 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65 64 2e .401.--.authentication.required.
63a80 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 73 20 .........This.function.supports.
63aa0 42 61 73 69 63 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 6f 6e 6c 79 2e 22 22 22 0a 20 20 Basic.authentication.only."""...
63ac0 20 20 20 20 20 20 69 66 20 27 77 77 77 2d 61 75 74 68 65 6e 74 69 63 61 74 65 27 20 6e 6f 74 20 ......if.'www-authenticate'.not.
63ae0 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 in.headers:.............URLopene
63b00 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 r.http_error_default(self,.url,.
63b20 66 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fp,.............................
63b40 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 .............errcode,.errmsg,.he
63b60 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 73 74 75 66 66 20 3d 20 68 65 61 64 65 72 73 5b 27 aders).........stuff.=.headers['
63b80 77 77 77 2d 61 75 74 68 65 6e 74 69 63 61 74 65 27 5d 0a 20 20 20 20 20 20 20 20 6d 61 74 63 68 www-authenticate'].........match
63ba0 20 3d 20 72 65 2e 6d 61 74 63 68 28 27 5b 20 5c 74 5d 2a 28 5b 5e 20 5c 74 5d 2b 29 5b 20 5c 74 .=.re.match('[.\t]*([^.\t]+)[.\t
63bc0 5d 2b 72 65 61 6c 6d 3d 22 28 5b 5e 22 5d 2a 29 22 27 2c 20 73 74 75 66 66 29 0a 20 20 20 20 20 ]+realm="([^"]*)"',.stuff)......
63be0 20 20 20 69 66 20 6e 6f 74 20 6d 61 74 63 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 4c ...if.not.match:.............URL
63c00 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 opener.http_error_default(self,.
63c20 75 72 6c 2c 20 66 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 url,.fp,........................
63c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 ..................errcode,.errms
63c60 67 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 2c 20 72 65 61 6c g,.headers).........scheme,.real
63c80 6d 20 3d 20 6d 61 74 63 68 2e 67 72 6f 75 70 73 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 63 m.=.match.groups().........if.sc
63ca0 68 65 6d 65 2e 6c 6f 77 65 72 28 29 20 21 3d 20 27 62 61 73 69 63 27 3a 0a 20 20 20 20 20 20 20 heme.lower().!=.'basic':........
63cc0 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c .....URLopener.http_error_defaul
63ce0 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t(self,.url,.fp,................
63d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 63 6f 64 ..........................errcod
63d20 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e e,.errmsg,.headers).........if.n
63d40 6f 74 20 72 65 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 2e ot.retry:.............URLopener.
63d60 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 http_error_default(self,.url,.fp
63d80 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.errcode,.errmsg,..............
63da0 20 20 20 20 20 20 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 27 .......headers).........name.=.'
63dc0 72 65 74 72 79 5f 27 20 2b 20 73 65 6c 66 2e 74 79 70 65 20 2b 20 27 5f 62 61 73 69 63 5f 61 75 retry_'.+.self.type.+.'_basic_au
63de0 74 68 27 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 th'.........if.data.is.None:....
63e00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 6e 61 6d .........return.getattr(self,nam
63e20 65 29 28 75 72 6c 2c 20 72 65 61 6c 6d 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 e)(url,.realm).........else:....
63e40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 6e 61 6d .........return.getattr(self,nam
63e60 65 29 28 75 72 6c 2c 20 72 65 61 6c 6d 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 68 74 e)(url,.realm,.data)......def.ht
63e80 74 70 5f 65 72 72 6f 72 5f 34 30 37 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 tp_error_407(self,.url,.fp,.errc
63ea0 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c ode,.errmsg,.headers,.data=None,
63ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 72 79 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 20 .............retry=False):......
63ee0 20 20 20 22 22 22 45 72 72 6f 72 20 34 30 37 20 2d 2d 20 70 72 6f 78 79 20 61 75 74 68 65 6e 74 ..."""Error.407.--.proxy.authent
63f00 69 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 66 ication.required..........This.f
63f20 75 6e 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 73 20 42 61 73 69 63 20 61 75 74 68 65 6e 74 69 63 unction.supports.Basic.authentic
63f40 61 74 69 6f 6e 20 6f 6e 6c 79 2e 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 27 70 72 6f 78 79 ation.only.""".........if.'proxy
63f60 2d 61 75 74 68 65 6e 74 69 63 61 74 65 27 20 6e 6f 74 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 -authenticate'.not.in.headers:..
63f80 20 20 20 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f ...........URLopener.http_error_
63fa0 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 0a 20 20 20 20 20 20 20 20 20 default(self,.url,.fp,..........
63fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
63fe0 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 errcode,.errmsg,.headers).......
64000 20 20 73 74 75 66 66 20 3d 20 68 65 61 64 65 72 73 5b 27 70 72 6f 78 79 2d 61 75 74 68 65 6e 74 ..stuff.=.headers['proxy-authent
64020 69 63 61 74 65 27 5d 0a 20 20 20 20 20 20 20 20 6d 61 74 63 68 20 3d 20 72 65 2e 6d 61 74 63 68 icate'].........match.=.re.match
64040 28 27 5b 20 5c 74 5d 2a 28 5b 5e 20 5c 74 5d 2b 29 5b 20 5c 74 5d 2b 72 65 61 6c 6d 3d 22 28 5b ('[.\t]*([^.\t]+)[.\t]+realm="([
64060 5e 22 5d 2a 29 22 27 2c 20 73 74 75 66 66 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d ^"]*)"',.stuff).........if.not.m
64080 61 74 63 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 atch:.............URLopener.http
640a0 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 0a 20 20 _error_default(self,.url,.fp,...
640c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
640e0 20 20 20 20 20 20 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 .......errcode,.errmsg,.headers)
64100 0a 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 2c 20 72 65 61 6c 6d 20 3d 20 6d 61 74 63 68 2e 67 .........scheme,.realm.=.match.g
64120 72 6f 75 70 73 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 63 68 65 6d 65 2e 6c 6f 77 65 72 28 roups().........if.scheme.lower(
64140 29 20 21 3d 20 27 62 61 73 69 63 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 ).!=.'basic':.............URLope
64160 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c ner.http_error_default(self,.url
64180 2c 20 66 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.fp,...........................
641a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 20 ...............errcode,.errmsg,.
641c0 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 72 79 3a 0a 20 headers).........if.not.retry:..
641e0 20 20 20 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f ...........URLopener.http_error_
64200 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 default(self,.url,.fp,.errcode,.
64220 65 72 72 6d 73 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 errmsg,.....................head
64240 65 72 73 29 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 27 72 65 74 72 79 5f 70 72 6f 78 79 ers).........name.=.'retry_proxy
64260 5f 27 20 2b 20 73 65 6c 66 2e 74 79 70 65 20 2b 20 27 5f 62 61 73 69 63 5f 61 75 74 68 27 0a 20 _'.+.self.type.+.'_basic_auth'..
64280 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 .......if.data.is.None:.........
642a0 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 6e 61 6d 65 29 28 75 72 ....return.getattr(self,name)(ur
642c0 6c 2c 20 72 65 61 6c 6d 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 l,.realm).........else:.........
642e0 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 6e 61 6d 65 29 28 75 72 ....return.getattr(self,name)(ur
64300 6c 2c 20 72 65 61 6c 6d 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 72 65 74 72 79 5f 70 l,.realm,.data)......def.retry_p
64320 72 6f 78 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 28 73 65 6c 66 2c 20 75 72 6c 2c 20 roxy_http_basic_auth(self,.url,.
64340 72 65 61 6c 6d 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c realm,.data=None):.........host,
64360 20 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 .selector.=.splithost(url)......
64380 20 20 20 6e 65 77 75 72 6c 20 3d 20 27 68 74 74 70 3a 2f 2f 27 20 2b 20 68 6f 73 74 20 2b 20 73 ...newurl.=.'http://'.+.host.+.s
643a0 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 20 3d 20 73 65 6c 66 2e 70 72 6f elector.........proxy.=.self.pro
643c0 78 69 65 73 5b 27 68 74 74 70 27 5d 0a 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 2c 20 70 72 xies['http'].........urltype,.pr
643e0 6f 78 79 68 6f 73 74 20 3d 20 73 70 6c 69 74 74 79 70 65 28 70 72 6f 78 79 29 0a 20 20 20 20 20 oxyhost.=.splittype(proxy)......
64400 20 20 20 70 72 6f 78 79 68 6f 73 74 2c 20 70 72 6f 78 79 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 ...proxyhost,.proxyselector.=.sp
64420 6c 69 74 68 6f 73 74 28 70 72 6f 78 79 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 20 3d 20 70 lithost(proxyhost).........i.=.p
64440 72 6f 78 79 68 6f 73 74 2e 66 69 6e 64 28 27 40 27 29 20 2b 20 31 0a 20 20 20 20 20 20 20 20 70 roxyhost.find('@').+.1.........p
64460 72 6f 78 79 68 6f 73 74 20 3d 20 70 72 6f 78 79 68 6f 73 74 5b 69 3a 5d 0a 20 20 20 20 20 20 20 roxyhost.=.proxyhost[i:]........
64480 20 75 73 65 72 2c 20 70 61 73 73 77 64 20 3d 20 73 65 6c 66 2e 67 65 74 5f 75 73 65 72 5f 70 61 .user,.passwd.=.self.get_user_pa
644a0 73 73 77 64 28 70 72 6f 78 79 68 6f 73 74 2c 20 72 65 61 6c 6d 2c 20 69 29 0a 20 20 20 20 20 20 sswd(proxyhost,.realm,.i).......
644c0 20 20 69 66 20 6e 6f 74 20 28 75 73 65 72 20 6f 72 20 70 61 73 73 77 64 29 3a 20 72 65 74 75 72 ..if.not.(user.or.passwd):.retur
644e0 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 68 6f 73 74 20 3d 20 22 25 73 3a 25 n.None.........proxyhost.=."%s:%
64500 73 40 25 73 22 20 25 20 28 71 75 6f 74 65 28 75 73 65 72 2c 20 73 61 66 65 3d 27 27 29 2c 0a 20 s@%s".%.(quote(user,.safe=''),..
64520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
64540 20 71 75 6f 74 65 28 70 61 73 73 77 64 2c 20 73 61 66 65 3d 27 27 29 2c 20 70 72 6f 78 79 68 6f .quote(passwd,.safe=''),.proxyho
64560 73 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f 78 69 65 73 5b 27 68 74 74 70 27 5d st).........self.proxies['http']
64580 20 3d 20 27 68 74 74 70 3a 2f 2f 27 20 2b 20 70 72 6f 78 79 68 6f 73 74 20 2b 20 70 72 6f 78 79 .=.'http://'.+.proxyhost.+.proxy
645a0 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 selector.........if.data.is.None
645c0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 28 6e :.............return.self.open(n
645e0 65 77 75 72 6c 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ewurl).........else:............
64600 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 28 6e 65 77 75 72 6c 2c 20 64 61 74 61 29 0a .return.self.open(newurl,.data).
64620 0a 20 20 20 20 64 65 66 20 72 65 74 72 79 5f 70 72 6f 78 79 5f 68 74 74 70 73 5f 62 61 73 69 63 .....def.retry_proxy_https_basic
64640 5f 61 75 74 68 28 73 65 6c 66 2c 20 75 72 6c 2c 20 72 65 61 6c 6d 2c 20 64 61 74 61 3d 4e 6f 6e _auth(self,.url,.realm,.data=Non
64660 65 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c e):.........host,.selector.=.spl
64680 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 27 68 74 ithost(url).........newurl.=.'ht
646a0 74 70 73 3a 2f 2f 27 20 2b 20 68 6f 73 74 20 2b 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 tps://'.+.host.+.selector.......
646c0 20 20 70 72 6f 78 79 20 3d 20 73 65 6c 66 2e 70 72 6f 78 69 65 73 5b 27 68 74 74 70 73 27 5d 0a ..proxy.=.self.proxies['https'].
646e0 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 2c 20 70 72 6f 78 79 68 6f 73 74 20 3d 20 73 70 6c ........urltype,.proxyhost.=.spl
64700 69 74 74 79 70 65 28 70 72 6f 78 79 29 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 68 6f 73 74 2c ittype(proxy).........proxyhost,
64720 20 70 72 6f 78 79 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 70 72 6f 78 79 .proxyselector.=.splithost(proxy
64740 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 20 3d 20 70 72 6f 78 79 68 6f 73 74 2e 66 69 6e 64 host).........i.=.proxyhost.find
64760 28 27 40 27 29 20 2b 20 31 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 68 6f 73 74 20 3d 20 70 72 ('@').+.1.........proxyhost.=.pr
64780 6f 78 79 68 6f 73 74 5b 69 3a 5d 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 70 61 73 73 77 64 oxyhost[i:].........user,.passwd
647a0 20 3d 20 73 65 6c 66 2e 67 65 74 5f 75 73 65 72 5f 70 61 73 73 77 64 28 70 72 6f 78 79 68 6f 73 .=.self.get_user_passwd(proxyhos
647c0 74 2c 20 72 65 61 6c 6d 2c 20 69 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 28 75 73 65 t,.realm,.i).........if.not.(use
647e0 72 20 6f 72 20 70 61 73 73 77 64 29 3a 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 r.or.passwd):.return.None.......
64800 20 20 70 72 6f 78 79 68 6f 73 74 20 3d 20 22 25 73 3a 25 73 40 25 73 22 20 25 20 28 71 75 6f 74 ..proxyhost.=."%s:%s@%s".%.(quot
64820 65 28 75 73 65 72 2c 20 73 61 66 65 3d 27 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e(user,.safe=''),...............
64840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 28 70 61 73 73 77 64 ....................quote(passwd
64860 2c 20 73 61 66 65 3d 27 27 29 2c 20 70 72 6f 78 79 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 73 ,.safe=''),.proxyhost).........s
64880 65 6c 66 2e 70 72 6f 78 69 65 73 5b 27 68 74 74 70 73 27 5d 20 3d 20 27 68 74 74 70 73 3a 2f 2f elf.proxies['https'].=.'https://
648a0 27 20 2b 20 70 72 6f 78 79 68 6f 73 74 20 2b 20 70 72 6f 78 79 73 65 6c 65 63 74 6f 72 0a 20 20 '.+.proxyhost.+.proxyselector...
648c0 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 ......if.data.is.None:..........
648e0 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 28 6e 65 77 75 72 6c 29 0a 20 20 20 20 ...return.self.open(newurl).....
64900 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c ....else:.............return.sel
64920 66 2e 6f 70 65 6e 28 6e 65 77 75 72 6c 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 72 65 f.open(newurl,.data)......def.re
64940 74 72 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 28 73 65 6c 66 2c 20 75 72 6c 2c 20 72 try_http_basic_auth(self,.url,.r
64960 65 61 6c 6d 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 ealm,.data=None):.........host,.
64980 73 65 6c 65 63 74 6f 72 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 selector.=.splithost(url).......
649a0 20 20 69 20 3d 20 68 6f 73 74 2e 66 69 6e 64 28 27 40 27 29 20 2b 20 31 0a 20 20 20 20 20 20 20 ..i.=.host.find('@').+.1........
649c0 20 68 6f 73 74 20 3d 20 68 6f 73 74 5b 69 3a 5d 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 70 .host.=.host[i:].........user,.p
649e0 61 73 73 77 64 20 3d 20 73 65 6c 66 2e 67 65 74 5f 75 73 65 72 5f 70 61 73 73 77 64 28 68 6f 73 asswd.=.self.get_user_passwd(hos
64a00 74 2c 20 72 65 61 6c 6d 2c 20 69 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 28 75 73 65 t,.realm,.i).........if.not.(use
64a20 72 20 6f 72 20 70 61 73 73 77 64 29 3a 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 r.or.passwd):.return.None.......
64a40 20 20 68 6f 73 74 20 3d 20 22 25 73 3a 25 73 40 25 73 22 20 25 20 28 71 75 6f 74 65 28 75 73 65 ..host.=."%s:%s@%s".%.(quote(use
64a60 72 2c 20 73 61 66 65 3d 27 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r,.safe=''),....................
64a80 20 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 28 70 61 73 73 77 64 2c 20 73 61 66 65 3d 27 27 29 ..........quote(passwd,.safe='')
64aa0 2c 20 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 27 68 74 74 70 3a 2f ,.host).........newurl.=.'http:/
64ac0 2f 27 20 2b 20 68 6f 73 74 20 2b 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 69 66 20 /'.+.host.+.selector.........if.
64ae0 64 61 74 61 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e data.is.None:.............return
64b00 20 73 65 6c 66 2e 6f 70 65 6e 28 6e 65 77 75 72 6c 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a .self.open(newurl).........else:
64b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 28 6e 65 .............return.self.open(ne
64b40 77 75 72 6c 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 72 65 74 72 79 5f 68 74 74 70 73 wurl,.data)......def.retry_https
64b60 5f 62 61 73 69 63 5f 61 75 74 68 28 73 65 6c 66 2c 20 75 72 6c 2c 20 72 65 61 6c 6d 2c 20 64 61 _basic_auth(self,.url,.realm,.da
64b80 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 ta=None):.........host,.selector
64ba0 20 3d 20 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 69 20 3d 20 68 6f .=.splithost(url).........i.=.ho
64bc0 73 74 2e 66 69 6e 64 28 27 40 27 29 20 2b 20 31 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 st.find('@').+.1.........host.=.
64be0 68 6f 73 74 5b 69 3a 5d 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 70 61 73 73 77 64 20 3d 20 host[i:].........user,.passwd.=.
64c00 73 65 6c 66 2e 67 65 74 5f 75 73 65 72 5f 70 61 73 73 77 64 28 68 6f 73 74 2c 20 72 65 61 6c 6d self.get_user_passwd(host,.realm
64c20 2c 20 69 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 28 75 73 65 72 20 6f 72 20 70 61 73 ,.i).........if.not.(user.or.pas
64c40 73 77 64 29 3a 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d swd):.return.None.........host.=
64c60 20 22 25 73 3a 25 73 40 25 73 22 20 25 20 28 71 75 6f 74 65 28 75 73 65 72 2c 20 73 61 66 65 3d ."%s:%s@%s".%.(quote(user,.safe=
64c80 27 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ''),............................
64ca0 20 20 71 75 6f 74 65 28 70 61 73 73 77 64 2c 20 73 61 66 65 3d 27 27 29 2c 20 68 6f 73 74 29 0a ..quote(passwd,.safe=''),.host).
64cc0 20 20 20 20 20 20 20 20 6e 65 77 75 72 6c 20 3d 20 27 68 74 74 70 73 3a 2f 2f 27 20 2b 20 68 6f ........newurl.=.'https://'.+.ho
64ce0 73 74 20 2b 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 st.+.selector.........if.data.is
64d00 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f .None:.............return.self.o
64d20 70 65 6e 28 6e 65 77 75 72 6c 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 pen(newurl).........else:.......
64d40 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6f 70 65 6e 28 6e 65 77 75 72 6c 2c 20 64 ......return.self.open(newurl,.d
64d60 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 75 73 65 72 5f 70 61 73 73 77 64 28 73 65 ata)......def.get_user_passwd(se
64d80 6c 66 2c 20 68 6f 73 74 2c 20 72 65 61 6c 6d 2c 20 63 6c 65 61 72 5f 63 61 63 68 65 3d 30 29 3a lf,.host,.realm,.clear_cache=0):
64da0 0a 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 72 65 61 6c 6d 20 2b 20 27 40 27 20 2b 20 68 6f 73 .........key.=.realm.+.'@'.+.hos
64dc0 74 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 69 6e 20 73 65 6c 66 t.lower().........if.key.in.self
64de0 2e 61 75 74 68 5f 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6c 65 61 .auth_cache:.............if.clea
64e00 72 5f 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c r_cache:.................del.sel
64e20 66 2e 61 75 74 68 5f 63 61 63 68 65 5b 6b 65 79 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c f.auth_cache[key].............el
64e40 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e se:.................return.self.
64e60 61 75 74 68 5f 63 61 63 68 65 5b 6b 65 79 5d 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 70 61 auth_cache[key].........user,.pa
64e80 73 73 77 64 20 3d 20 73 65 6c 66 2e 70 72 6f 6d 70 74 5f 75 73 65 72 5f 70 61 73 73 77 64 28 68 sswd.=.self.prompt_user_passwd(h
64ea0 6f 73 74 2c 20 72 65 61 6c 6d 29 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 20 6f 72 20 70 ost,.realm).........if.user.or.p
64ec0 61 73 73 77 64 3a 20 73 65 6c 66 2e 61 75 74 68 5f 63 61 63 68 65 5b 6b 65 79 5d 20 3d 20 28 75 asswd:.self.auth_cache[key].=.(u
64ee0 73 65 72 2c 20 70 61 73 73 77 64 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 73 65 72 ser,.passwd).........return.user
64f00 2c 20 70 61 73 73 77 64 0a 0a 20 20 20 20 64 65 66 20 70 72 6f 6d 70 74 5f 75 73 65 72 5f 70 61 ,.passwd......def.prompt_user_pa
64f20 73 73 77 64 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 72 65 61 6c 6d 29 3a 0a 20 20 20 20 20 20 20 sswd(self,.host,.realm):........
64f40 20 22 22 22 4f 76 65 72 72 69 64 65 20 74 68 69 73 20 69 6e 20 61 20 47 55 49 20 65 6e 76 69 72 ."""Override.this.in.a.GUI.envir
64f60 6f 6e 6d 65 6e 74 21 22 22 22 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 67 65 74 70 61 73 onment!""".........import.getpas
64f80 73 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 20 s.........try:.............user.
64fa0 3d 20 69 6e 70 75 74 28 22 45 6e 74 65 72 20 75 73 65 72 6e 61 6d 65 20 66 6f 72 20 25 73 20 61 =.input("Enter.username.for.%s.a
64fc0 74 20 25 73 3a 20 22 20 25 20 28 72 65 61 6c 6d 2c 20 68 6f 73 74 29 29 0a 20 20 20 20 20 20 20 t.%s:.".%.(realm,.host))........
64fe0 20 20 20 20 20 70 61 73 73 77 64 20 3d 20 67 65 74 70 61 73 73 2e 67 65 74 70 61 73 73 28 22 45 .....passwd.=.getpass.getpass("E
65000 6e 74 65 72 20 70 61 73 73 77 6f 72 64 20 66 6f 72 20 25 73 20 69 6e 20 25 73 20 61 74 20 25 73 nter.password.for.%s.in.%s.at.%s
65020 3a 20 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2c 20 72 65 61 :.".%.................(user,.rea
65040 6c 6d 2c 20 68 6f 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 73 lm,.host)).............return.us
65060 65 72 2c 20 70 61 73 73 77 64 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 62 6f 61 er,.passwd.........except.Keyboa
65080 72 64 49 6e 74 65 72 72 75 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 29 rdInterrupt:.............print()
650a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 0a 0a .............return.None,.None..
650c0 0a 23 20 55 74 69 6c 69 74 79 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 5f 6c 6f 63 61 6c 68 6f 73 74 .#.Utility.functions.._localhost
650e0 20 3d 20 4e 6f 6e 65 0a 64 65 66 20 6c 6f 63 61 6c 68 6f 73 74 28 29 3a 0a 20 20 20 20 22 22 22 .=.None.def.localhost():....."""
65100 52 65 74 75 72 6e 20 74 68 65 20 49 50 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 6d 61 67 Return.the.IP.address.of.the.mag
65120 69 63 20 68 6f 73 74 6e 61 6d 65 20 27 6c 6f 63 61 6c 68 6f 73 74 27 2e 22 22 22 0a 20 20 20 20 ic.hostname.'localhost'.""".....
65140 67 6c 6f 62 61 6c 20 5f 6c 6f 63 61 6c 68 6f 73 74 0a 20 20 20 20 69 66 20 5f 6c 6f 63 61 6c 68 global._localhost.....if._localh
65160 6f 73 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 5f 6c 6f 63 61 6c 68 6f 73 74 20 ost.is.None:........._localhost.
65180 3d 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 27 6c 6f 63 61 6c 68 6f 73 =.socket.gethostbyname('localhos
651a0 74 27 29 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 6c 6f 63 61 6c 68 6f 73 74 0a 0a 5f 74 68 69 73 t').....return._localhost.._this
651c0 68 6f 73 74 20 3d 20 4e 6f 6e 65 0a 64 65 66 20 74 68 69 73 68 6f 73 74 28 29 3a 0a 20 20 20 20 host.=.None.def.thishost():.....
651e0 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 49 50 20 61 64 64 72 65 73 73 65 73 20 6f 66 20 74 68 """Return.the.IP.addresses.of.th
65200 65 20 63 75 72 72 65 6e 74 20 68 6f 73 74 2e 22 22 22 0a 20 20 20 20 67 6c 6f 62 61 6c 20 5f 74 e.current.host.""".....global._t
65220 68 69 73 68 6f 73 74 0a 20 20 20 20 69 66 20 5f 74 68 69 73 68 6f 73 74 20 69 73 20 4e 6f 6e 65 hishost.....if._thishost.is.None
65240 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 68 69 73 :.........try:............._this
65260 68 6f 73 74 20 3d 20 74 75 70 6c 65 28 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d host.=.tuple(socket.gethostbynam
65280 65 5f 65 78 28 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 6e 61 6d 65 28 29 29 5b 32 5d 29 0a 20 e_ex(socket.gethostname())[2])..
652a0 20 20 20 20 20 20 20 65 78 63 65 70 74 20 73 6f 63 6b 65 74 2e 67 61 69 65 72 72 6f 72 3a 0a 20 .......except.socket.gaierror:..
652c0 20 20 20 20 20 20 20 20 20 20 20 5f 74 68 69 73 68 6f 73 74 20 3d 20 74 75 70 6c 65 28 73 6f 63 ..........._thishost.=.tuple(soc
652e0 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 5f 65 78 28 27 6c 6f 63 61 6c 68 6f 73 74 27 ket.gethostbyname_ex('localhost'
65300 29 5b 32 5d 29 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 74 68 69 73 68 6f 73 74 0a 0a 5f 66 74 70 )[2]).....return._thishost.._ftp
65320 65 72 72 6f 72 73 20 3d 20 4e 6f 6e 65 0a 64 65 66 20 66 74 70 65 72 72 6f 72 73 28 29 3a 0a 20 errors.=.None.def.ftperrors():..
65340 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 73 65 74 20 6f 66 20 65 72 72 6f 72 73 20 72 ..."""Return.the.set.of.errors.r
65360 61 69 73 65 64 20 62 79 20 74 68 65 20 46 54 50 20 63 6c 61 73 73 2e 22 22 22 0a 20 20 20 20 67 aised.by.the.FTP.class.""".....g
65380 6c 6f 62 61 6c 20 5f 66 74 70 65 72 72 6f 72 73 0a 20 20 20 20 69 66 20 5f 66 74 70 65 72 72 6f lobal._ftperrors.....if._ftperro
653a0 72 73 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 66 74 70 6c 69 rs.is.None:.........import.ftpli
653c0 62 0a 20 20 20 20 20 20 20 20 5f 66 74 70 65 72 72 6f 72 73 20 3d 20 66 74 70 6c 69 62 2e 61 6c b........._ftperrors.=.ftplib.al
653e0 6c 5f 65 72 72 6f 72 73 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 66 74 70 65 72 72 6f 72 73 0a 0a l_errors.....return._ftperrors..
65400 5f 6e 6f 68 65 61 64 65 72 73 20 3d 20 4e 6f 6e 65 0a 64 65 66 20 6e 6f 68 65 61 64 65 72 73 28 _noheaders.=.None.def.noheaders(
65420 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 65 6d 61 69 6c 20 ):....."""Return.an.empty.email.
65440 4d 65 73 73 61 67 65 20 6f 62 6a 65 63 74 2e 22 22 22 0a 20 20 20 20 67 6c 6f 62 61 6c 20 5f 6e Message.object.""".....global._n
65460 6f 68 65 61 64 65 72 73 0a 20 20 20 20 69 66 20 5f 6e 6f 68 65 61 64 65 72 73 20 69 73 20 4e 6f oheaders.....if._noheaders.is.No
65480 6e 65 3a 0a 20 20 20 20 20 20 20 20 5f 6e 6f 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 6c 2e 6d ne:........._noheaders.=.email.m
654a0 65 73 73 61 67 65 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 22 22 29 0a 20 20 20 20 72 65 74 75 72 essage_from_string("").....retur
654c0 6e 20 5f 6e 6f 68 65 61 64 65 72 73 0a 0a 0a 23 20 55 74 69 6c 69 74 79 20 63 6c 61 73 73 65 73 n._noheaders...#.Utility.classes
654e0 0a 0a 63 6c 61 73 73 20 66 74 70 77 72 61 70 70 65 72 3a 0a 20 20 20 20 22 22 22 43 6c 61 73 73 ..class.ftpwrapper:....."""Class
65500 20 75 73 65 64 20 62 79 20 6f 70 65 6e 5f 66 74 70 28 29 20 66 6f 72 20 63 61 63 68 65 20 6f 66 .used.by.open_ftp().for.cache.of
65520 20 6f 70 65 6e 20 46 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 22 22 22 0a 0a 20 20 20 20 64 .open.FTP.connections."""......d
65540 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 75 73 65 72 2c 20 70 61 73 73 77 64 2c 20 ef.__init__(self,.user,.passwd,.
65560 68 6f 73 74 2c 20 70 6f 72 74 2c 20 64 69 72 73 2c 20 74 69 6d 65 6f 75 74 3d 4e 6f 6e 65 2c 0a host,.port,.dirs,.timeout=None,.
65580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72 73 69 73 74 65 6e 74 3d 54 72 75 65 .................persistent=True
655a0 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 73 65 72 20 3d 20 75 73 65 72 0a 20 20 20 20 ):.........self.user.=.user.....
655c0 20 20 20 20 73 65 6c 66 2e 70 61 73 73 77 64 20 3d 20 70 61 73 73 77 64 0a 20 20 20 20 20 20 20 ....self.passwd.=.passwd........
655e0 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 .self.host.=.host.........self.p
65600 6f 72 74 20 3d 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 69 72 73 20 3d 20 64 ort.=.port.........self.dirs.=.d
65620 69 72 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 6d 65 6f 75 74 20 3d 20 74 69 6d 65 6f irs.........self.timeout.=.timeo
65640 75 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 63 6f 75 6e 74 20 3d 20 30 0a 20 20 20 ut.........self.refcount.=.0....
65660 20 20 20 20 20 73 65 6c 66 2e 6b 65 65 70 61 6c 69 76 65 20 3d 20 70 65 72 73 69 73 74 65 6e 74 .....self.keepalive.=.persistent
65680 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 .........try:.............self.i
656a0 6e 69 74 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 nit().........except:...........
656c0 20 20 73 65 6c 66 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 ..self.close().............raise
656e0 0a 0a 20 20 20 20 64 65 66 20 69 6e 69 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 6d ......def.init(self):.........im
65700 70 6f 72 74 20 66 74 70 6c 69 62 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 75 73 79 20 3d 20 port.ftplib.........self.busy.=.
65720 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 20 3d 20 66 74 70 6c 69 62 2e 46 54 50 28 0.........self.ftp.=.ftplib.FTP(
65740 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e ).........self.ftp.connect(self.
65760 68 6f 73 74 2c 20 73 65 6c 66 2e 70 6f 72 74 2c 20 73 65 6c 66 2e 74 69 6d 65 6f 75 74 29 0a 20 host,.self.port,.self.timeout)..
65780 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 6c 6f 67 69 6e 28 73 65 6c 66 2e 75 73 65 72 2c .......self.ftp.login(self.user,
657a0 20 73 65 6c 66 2e 70 61 73 73 77 64 29 0a 20 20 20 20 20 20 20 20 5f 74 61 72 67 65 74 20 3d 20 .self.passwd)........._target.=.
657c0 27 2f 27 2e 6a 6f 69 6e 28 73 65 6c 66 2e 64 69 72 73 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 '/'.join(self.dirs).........self
657e0 2e 66 74 70 2e 63 77 64 28 5f 74 61 72 67 65 74 29 0a 0a 20 20 20 20 64 65 66 20 72 65 74 72 66 .ftp.cwd(_target)......def.retrf
65800 69 6c 65 28 73 65 6c 66 2c 20 66 69 6c 65 2c 20 74 79 70 65 29 3a 0a 20 20 20 20 20 20 20 20 69 ile(self,.file,.type):.........i
65820 6d 70 6f 72 74 20 66 74 70 6c 69 62 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 64 74 72 61 mport.ftplib.........self.endtra
65840 6e 73 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 74 79 70 65 20 69 6e 20 28 27 64 27 2c nsfer().........if.type.in.('d',
65860 20 27 44 27 29 3a 20 63 6d 64 20 3d 20 27 54 59 50 45 20 41 27 3b 20 69 73 64 69 72 20 3d 20 31 .'D'):.cmd.=.'TYPE.A';.isdir.=.1
65880 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 20 63 6d 64 20 3d 20 27 54 59 50 45 20 27 20 2b 20 74 .........else:.cmd.=.'TYPE.'.+.t
658a0 79 70 65 3b 20 69 73 64 69 72 20 3d 20 30 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 ype;.isdir.=.0.........try:.....
658c0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 76 6f 69 64 63 6d 64 28 63 6d 64 29 0a 20 20 ........self.ftp.voidcmd(cmd)...
658e0 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 6c 69 62 2e 61 6c 6c 5f 65 72 72 6f 72 73 3a 0a ......except.ftplib.all_errors:.
65900 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 69 74 28 29 0a 20 20 20 20 20 20 20 20 ............self.init().........
65920 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 76 6f 69 64 63 6d 64 28 63 6d 64 29 0a 20 20 20 20 20 20 ....self.ftp.voidcmd(cmd).......
65940 20 20 63 6f 6e 6e 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 66 69 6c 65 20 61 6e ..conn.=.None.........if.file.an
65960 64 20 6e 6f 74 20 69 73 64 69 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 72 79 20 74 d.not.isdir:.............#.Try.t
65980 6f 20 72 65 74 72 69 65 76 65 20 61 73 20 61 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 o.retrieve.as.a.file............
659a0 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6d 64 20 3d 20 27 52 45 54 .try:.................cmd.=.'RET
659c0 52 20 27 20 2b 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2c R.'.+.file.................conn,
659e0 20 72 65 74 72 6c 65 6e 20 3d 20 73 65 6c 66 2e 66 74 70 2e 6e 74 72 61 6e 73 66 65 72 63 6d 64 .retrlen.=.self.ftp.ntransfercmd
65a00 28 63 6d 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 6c 69 62 2e (cmd).............except.ftplib.
65a20 65 72 72 6f 72 5f 70 65 72 6d 20 61 73 20 72 65 61 73 6f 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 error_perm.as.reason:...........
65a40 20 20 20 20 20 20 69 66 20 73 74 72 28 72 65 61 73 6f 6e 29 5b 3a 33 5d 20 21 3d 20 27 35 35 30 ......if.str(reason)[:3].!=.'550
65a60 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c ':.....................raise.URL
65a80 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 3a 20 25 72 27 20 25 20 72 65 61 73 6f 6e 29 2e Error('ftp.error:.%r'.%.reason).
65aa0 77 69 74 68 5f 74 72 61 63 65 62 61 63 6b 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 with_traceback(.................
65ac0 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 63 5f 69 6e 66 6f 28 29 5b 32 5d 29 0a 20 20 20 20 20 ........sys.exc_info()[2])......
65ae0 20 20 20 69 66 20 6e 6f 74 20 63 6f 6e 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 65 ...if.not.conn:.............#.Se
65b00 74 20 74 72 61 6e 73 66 65 72 20 6d 6f 64 65 20 74 6f 20 41 53 43 49 49 21 0a 20 20 20 20 20 20 t.transfer.mode.to.ASCII!.......
65b20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 76 6f 69 64 63 6d 64 28 27 54 59 50 45 20 41 27 29 ......self.ftp.voidcmd('TYPE.A')
65b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 72 79 20 61 20 64 69 72 65 63 74 6f 72 79 20 6c .............#.Try.a.directory.l
65b60 69 73 74 69 6e 67 2e 20 56 65 72 69 66 79 20 74 68 61 74 20 64 69 72 65 63 74 6f 72 79 20 65 78 isting..Verify.that.directory.ex
65b80 69 73 74 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 66 69 6c 65 3a 0a 20 20 20 20 20 ists..............if.file:......
65ba0 20 20 20 20 20 20 20 20 20 20 20 70 77 64 20 3d 20 73 65 6c 66 2e 66 74 70 2e 70 77 64 28 29 0a ...........pwd.=.self.ftp.pwd().
65bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ................try:............
65be0 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........try:...................
65c00 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 63 77 64 28 66 69 6c 65 29 0a 20 20 20 20 20 20 20 ......self.ftp.cwd(file)........
65c20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 6c 69 62 2e 65 72 72 6f 72 .............except.ftplib.error
65c40 5f 70 65 72 6d 20 61 73 20 72 65 61 73 6f 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _perm.as.reason:................
65c60 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 66 74 70 20 65 72 72 .........raise.URLError('ftp.err
65c80 6f 72 3a 20 25 72 27 20 25 20 72 65 61 73 6f 6e 29 20 66 72 6f 6d 20 72 65 61 73 6f 6e 0a 20 20 or:.%r'.%.reason).from.reason...
65ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 ..............finally:..........
65cc0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 2e 63 77 64 28 70 77 64 29 0a 20 20 20 ...........self.ftp.cwd(pwd)....
65ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6d 64 20 3d 20 27 4c 49 53 54 20 27 20 2b 20 66 69 6c .............cmd.=.'LIST.'.+.fil
65d00 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.............else:.............
65d20 20 20 20 20 63 6d 64 20 3d 20 27 4c 49 53 54 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e ....cmd.=.'LIST'.............con
65d40 6e 2c 20 72 65 74 72 6c 65 6e 20 3d 20 73 65 6c 66 2e 66 74 70 2e 6e 74 72 61 6e 73 66 65 72 63 n,.retrlen.=.self.ftp.ntransferc
65d60 6d 64 28 63 6d 64 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 75 73 79 20 3d 20 31 0a 0a 20 md(cmd).........self.busy.=.1...
65d80 20 20 20 20 20 20 20 66 74 70 6f 62 6a 20 3d 20 61 64 64 63 6c 6f 73 65 68 6f 6f 6b 28 63 6f 6e .......ftpobj.=.addclosehook(con
65da0 6e 2e 6d 61 6b 65 66 69 6c 65 28 27 72 62 27 29 2c 20 73 65 6c 66 2e 66 69 6c 65 5f 63 6c 6f 73 n.makefile('rb'),.self.file_clos
65dc0 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 63 6f 75 6e 74 20 2b 3d 20 31 0a 20 20 e).........self.refcount.+=.1...
65de0 20 20 20 20 20 20 63 6f 6e 6e 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 23 20 50 61 73 ......conn.close().........#.Pas
65e00 73 20 62 61 63 6b 20 62 6f 74 68 20 61 20 73 75 69 74 61 62 6c 79 20 64 65 63 6f 72 61 74 65 64 s.back.both.a.suitably.decorated
65e20 20 6f 62 6a 65 63 74 20 61 6e 64 20 61 20 72 65 74 72 69 65 76 61 6c 20 6c 65 6e 67 74 68 0a 20 .object.and.a.retrieval.length..
65e40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 74 70 6f 62 6a 2c 20 72 65 74 72 6c 65 6e 29 0a .......return.(ftpobj,.retrlen).
65e60 0a 20 20 20 20 64 65 66 20 65 6e 64 74 72 61 6e 73 66 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 .....def.endtransfer(self):.....
65e80 20 20 20 20 73 65 6c 66 2e 62 75 73 79 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 ....self.busy.=.0......def.close
65ea0 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 65 70 61 6c 69 76 65 20 3d (self):.........self.keepalive.=
65ec0 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 72 65 66 63 6f 75 6e 74 20 .False.........if.self.refcount.
65ee0 3c 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 61 6c 5f 63 6c 6f 73 <=.0:.............self.real_clos
65f00 65 28 29 0a 0a 20 20 20 20 64 65 66 20 66 69 6c 65 5f 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 e()......def.file_close(self):..
65f20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 64 74 72 61 6e 73 66 65 72 28 29 0a 20 20 20 20 20 20 .......self.endtransfer().......
65f40 20 20 73 65 6c 66 2e 72 65 66 63 6f 75 6e 74 20 2d 3d 20 31 0a 20 20 20 20 20 20 20 20 69 66 20 ..self.refcount.-=.1.........if.
65f60 73 65 6c 66 2e 72 65 66 63 6f 75 6e 74 20 3c 3d 20 30 20 61 6e 64 20 6e 6f 74 20 73 65 6c 66 2e self.refcount.<=.0.and.not.self.
65f80 6b 65 65 70 61 6c 69 76 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 61 6c keepalive:.............self.real
65fa0 5f 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 6c 5f 63 6c 6f 73 65 28 73 65 6c _close()......def.real_close(sel
65fc0 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 64 74 72 61 6e 73 66 65 72 28 29 0a 20 f):.........self.endtransfer()..
65fe0 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 74 70 .......try:.............self.ftp
66000 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 65 72 72 6f 72 .close().........except.ftperror
66020 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 23 20 50 72 6f 78 79 20 68 s():.............pass..#.Proxy.h
66040 61 6e 64 6c 69 6e 67 0a 64 65 66 20 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 andling.def.getproxies_environme
66060 6e 74 28 29 3a 0a 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 64 69 63 74 69 6f 6e 61 72 79 nt():....."""Return.a.dictionary
66080 20 6f 66 20 73 63 68 65 6d 65 20 2d 3e 20 70 72 6f 78 79 20 73 65 72 76 65 72 20 55 52 4c 20 6d .of.scheme.->.proxy.server.URL.m
660a0 61 70 70 69 6e 67 73 2e 0a 0a 20 20 20 20 53 63 61 6e 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 appings.......Scan.the.environme
660c0 6e 74 20 66 6f 72 20 76 61 72 69 61 62 6c 65 73 20 6e 61 6d 65 64 20 3c 73 63 68 65 6d 65 3e 5f nt.for.variables.named.<scheme>_
660e0 70 72 6f 78 79 3b 0a 20 20 20 20 74 68 69 73 20 73 65 65 6d 73 20 74 6f 20 62 65 20 74 68 65 20 proxy;.....this.seems.to.be.the.
66100 73 74 61 6e 64 61 72 64 20 63 6f 6e 76 65 6e 74 69 6f 6e 2e 20 20 49 66 20 79 6f 75 20 6e 65 65 standard.convention...If.you.nee
66120 64 20 61 0a 20 20 20 20 64 69 66 66 65 72 65 6e 74 20 77 61 79 2c 20 79 6f 75 20 63 61 6e 20 70 d.a.....different.way,.you.can.p
66140 61 73 73 20 61 20 70 72 6f 78 69 65 73 20 64 69 63 74 69 6f 6e 61 72 79 20 74 6f 20 74 68 65 0a ass.a.proxies.dictionary.to.the.
66160 20 20 20 20 5b 46 61 6e 63 79 5d 55 52 4c 6f 70 65 6e 65 72 20 63 6f 6e 73 74 72 75 63 74 6f 72 ....[Fancy]URLopener.constructor
66180 2e 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 70 72 6f 78 69 65 73 20 3d 20 7b 7d 0a 20 20 20 20 .......""".....proxies.=.{}.....
661a0 23 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 65 66 65 72 20 6c 6f 77 65 72 63 61 73 65 20 76 #.in.order.to.prefer.lowercase.v
661c0 61 72 69 61 62 6c 65 73 2c 20 70 72 6f 63 65 73 73 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 69 6e ariables,.process.environment.in
661e0 0a 20 20 20 20 23 20 74 77 6f 20 70 61 73 73 65 73 3a 20 66 69 72 73 74 20 6d 61 74 63 68 65 73 .....#.two.passes:.first.matches
66200 20 61 6e 79 2c 20 73 65 63 6f 6e 64 20 70 61 73 73 20 6d 61 74 63 68 65 73 20 6c 6f 77 65 72 63 .any,.second.pass.matches.lowerc
66220 61 73 65 20 6f 6e 6c 79 0a 20 20 20 20 66 6f 72 20 6e 61 6d 65 2c 20 76 61 6c 75 65 20 69 6e 20 ase.only.....for.name,.value.in.
66240 6f 73 2e 65 6e 76 69 72 6f 6e 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 os.environ.items():.........name
66260 20 3d 20 6e 61 6d 65 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 75 65 .=.name.lower().........if.value
66280 20 61 6e 64 20 6e 61 6d 65 5b 2d 36 3a 5d 20 3d 3d 20 27 5f 70 72 6f 78 79 27 3a 0a 20 20 20 20 .and.name[-6:].==.'_proxy':.....
662a0 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 5b 6e 61 6d 65 5b 3a 2d 36 5d 5d 20 3d 20 76 61 6c ........proxies[name[:-6]].=.val
662c0 75 65 0a 20 20 20 20 23 20 43 56 45 2d 32 30 31 36 2d 31 30 30 30 31 31 30 20 2d 20 49 66 20 77 ue.....#.CVE-2016-1000110.-.If.w
662e0 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 61 73 20 43 47 49 20 73 63 72 69 70 74 2c 20 66 6f 72 e.are.running.as.CGI.script,.for
66300 67 65 74 20 48 54 54 50 5f 50 52 4f 58 59 0a 20 20 20 20 23 20 28 6e 6f 6e 2d 61 6c 6c 2d 6c 6f get.HTTP_PROXY.....#.(non-all-lo
66320 77 65 72 63 61 73 65 29 20 61 73 20 69 74 20 6d 61 79 20 62 65 20 73 65 74 20 66 72 6f 6d 20 74 wercase).as.it.may.be.set.from.t
66340 68 65 20 77 65 62 20 73 65 72 76 65 72 20 62 79 20 61 20 22 50 72 6f 78 79 3a 22 0a 20 20 20 20 he.web.server.by.a."Proxy:".....
66360 23 20 68 65 61 64 65 72 20 66 72 6f 6d 20 74 68 65 20 63 6c 69 65 6e 74 0a 20 20 20 20 23 20 49 #.header.from.the.client.....#.I
66380 66 20 22 70 72 6f 78 79 22 20 69 73 20 6c 6f 77 65 72 63 61 73 65 2c 20 69 74 20 77 69 6c 6c 20 f."proxy".is.lowercase,.it.will.
663a0 73 74 69 6c 6c 20 62 65 20 75 73 65 64 20 74 68 61 6e 6b 73 20 74 6f 20 74 68 65 20 6e 65 78 74 still.be.used.thanks.to.the.next
663c0 20 62 6c 6f 63 6b 0a 20 20 20 20 69 66 20 27 52 45 51 55 45 53 54 5f 4d 45 54 48 4f 44 27 20 69 .block.....if.'REQUEST_METHOD'.i
663e0 6e 20 6f 73 2e 65 6e 76 69 72 6f 6e 3a 0a 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 2e 70 6f n.os.environ:.........proxies.po
66400 70 28 27 68 74 74 70 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 66 6f 72 20 6e 61 6d 65 2c 20 76 61 p('http',.None).....for.name,.va
66420 6c 75 65 20 69 6e 20 6f 73 2e 65 6e 76 69 72 6f 6e 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 lue.in.os.environ.items():......
66440 20 20 20 69 66 20 6e 61 6d 65 5b 2d 36 3a 5d 20 3d 3d 20 27 5f 70 72 6f 78 79 27 3a 0a 20 20 20 ...if.name[-6:].==.'_proxy':....
66460 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 6c 6f 77 65 72 28 29 0a 20 20 20 .........name.=.name.lower()....
66480 20 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 75 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .........if.value:..............
664a0 20 20 20 70 72 6f 78 69 65 73 5b 6e 61 6d 65 5b 3a 2d 36 5d 5d 20 3d 20 76 61 6c 75 65 0a 20 20 ...proxies[name[:-6]].=.value...
664c0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........else:.................
664e0 70 72 6f 78 69 65 73 2e 70 6f 70 28 6e 61 6d 65 5b 3a 2d 36 5d 2c 20 4e 6f 6e 65 29 0a 20 20 20 proxies.pop(name[:-6],.None)....
66500 20 72 65 74 75 72 6e 20 70 72 6f 78 69 65 73 0a 0a 64 65 66 20 70 72 6f 78 79 5f 62 79 70 61 73 .return.proxies..def.proxy_bypas
66520 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 28 68 6f 73 74 2c 20 70 72 6f 78 69 65 73 3d 4e 6f 6e 65 s_environment(host,.proxies=None
66540 29 3a 0a 20 20 20 20 22 22 22 54 65 73 74 20 69 66 20 70 72 6f 78 69 65 73 20 73 68 6f 75 6c 64 ):....."""Test.if.proxies.should
66560 20 6e 6f 74 20 62 65 20 75 73 65 64 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 68 6f .not.be.used.for.a.particular.ho
66580 73 74 2e 0a 0a 20 20 20 20 43 68 65 63 6b 73 20 74 68 65 20 70 72 6f 78 79 20 64 69 63 74 20 66 st.......Checks.the.proxy.dict.f
665a0 6f 72 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 6e 6f 5f 70 72 6f 78 79 2c 20 77 68 69 63 68 20 or.the.value.of.no_proxy,.which.
665c0 73 68 6f 75 6c 64 0a 20 20 20 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 63 6f 6d 6d 61 20 73 65 should.....be.a.list.of.comma.se
665e0 70 61 72 61 74 65 64 20 44 4e 53 20 73 75 66 66 69 78 65 73 2c 20 6f 72 20 27 2a 27 20 66 6f 72 parated.DNS.suffixes,.or.'*'.for
66600 20 61 6c 6c 20 68 6f 73 74 73 2e 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 69 66 20 70 72 6f 78 .all.hosts.......""".....if.prox
66620 69 65 73 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 20 3d 20 67 ies.is.None:.........proxies.=.g
66640 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 28 29 0a 20 20 20 20 23 20 64 6f etproxies_environment().....#.do
66660 6e 27 74 20 62 79 70 61 73 73 2c 20 69 66 20 6e 6f 5f 70 72 6f 78 79 20 69 73 6e 27 74 20 73 70 n't.bypass,.if.no_proxy.isn't.sp
66680 65 63 69 66 69 65 64 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 6e 6f 5f 70 72 6f 78 ecified.....try:.........no_prox
666a0 79 20 3d 20 70 72 6f 78 69 65 73 5b 27 6e 6f 27 5d 0a 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 y.=.proxies['no'].....except.Key
666c0 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a 20 20 20 20 23 20 27 2a Error:.........return.0.....#.'*
666e0 27 20 69 73 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 66 6f 72 20 61 6c 77 61 79 73 20 62 79 70 '.is.special.case.for.always.byp
66700 61 73 73 0a 20 20 20 20 69 66 20 6e 6f 5f 70 72 6f 78 79 20 3d 3d 20 27 2a 27 3a 0a 20 20 20 20 ass.....if.no_proxy.==.'*':.....
66720 20 20 20 20 72 65 74 75 72 6e 20 31 0a 20 20 20 20 23 20 73 74 72 69 70 20 70 6f 72 74 20 6f 66 ....return.1.....#.strip.port.of
66740 66 20 68 6f 73 74 0a 20 20 20 20 68 6f 73 74 6f 6e 6c 79 2c 20 70 6f 72 74 20 3d 20 73 70 6c 69 f.host.....hostonly,.port.=.spli
66760 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 23 20 63 68 65 63 6b 20 69 66 20 74 68 65 20 68 tport(host).....#.check.if.the.h
66780 6f 73 74 20 65 6e 64 73 20 77 69 74 68 20 61 6e 79 20 6f 66 20 74 68 65 20 44 4e 53 20 73 75 66 ost.ends.with.any.of.the.DNS.suf
667a0 66 69 78 65 73 0a 20 20 20 20 6e 6f 5f 70 72 6f 78 79 5f 6c 69 73 74 20 3d 20 5b 70 72 6f 78 79 fixes.....no_proxy_list.=.[proxy
667c0 2e 73 74 72 69 70 28 29 20 66 6f 72 20 70 72 6f 78 79 20 69 6e 20 6e 6f 5f 70 72 6f 78 79 2e 73 .strip().for.proxy.in.no_proxy.s
667e0 70 6c 69 74 28 27 2c 27 29 5d 0a 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 69 6e 20 6e 6f 5f 70 72 plit(',')].....for.name.in.no_pr
66800 6f 78 79 5f 6c 69 73 74 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 3a 0a 20 20 20 20 20 oxy_list:.........if.name:......
66820 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 6c 73 74 72 69 70 28 27 2e 27 29 20 20 .......name.=.name.lstrip('.')..
66840 23 20 69 67 6e 6f 72 65 20 6c 65 61 64 69 6e 67 20 64 6f 74 73 0a 20 20 20 20 20 20 20 20 20 20 #.ignore.leading.dots...........
66860 20 20 6e 61 6d 65 20 3d 20 72 65 2e 65 73 63 61 70 65 28 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 ..name.=.re.escape(name)........
66880 20 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 72 27 28 2e 2b 5c 2e 29 3f 25 73 24 27 20 25 20 6e .....pattern.=.r'(.+\.)?%s$'.%.n
668a0 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 2e 6d 61 74 63 68 28 70 61 74 ame.............if.(re.match(pat
668c0 74 65 72 6e 2c 20 68 6f 73 74 6f 6e 6c 79 2c 20 72 65 2e 49 29 0a 20 20 20 20 20 20 20 20 20 20 tern,.hostonly,.re.I)...........
668e0 20 20 20 20 20 20 20 20 20 20 6f 72 20 72 65 2e 6d 61 74 63 68 28 70 61 74 74 65 72 6e 2c 20 68 ..........or.re.match(pattern,.h
66900 6f 73 74 2c 20 72 65 2e 49 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ost,.re.I)):.................ret
66920 75 72 6e 20 31 0a 20 20 20 20 23 20 6f 74 68 65 72 77 69 73 65 2c 20 64 6f 6e 27 74 20 62 79 70 urn.1.....#.otherwise,.don't.byp
66940 61 73 73 0a 20 20 20 20 72 65 74 75 72 6e 20 30 0a 0a 0a 23 20 54 68 69 73 20 63 6f 64 65 20 74 ass.....return.0...#.This.code.t
66960 65 73 74 73 20 61 6e 20 4f 53 58 20 73 70 65 63 69 66 69 63 20 64 61 74 61 20 73 74 72 75 63 74 ests.an.OSX.specific.data.struct
66980 75 72 65 20 62 75 74 20 69 73 20 74 65 73 74 61 62 6c 65 20 6f 6e 20 61 6c 6c 0a 23 20 70 6c 61 ure.but.is.testable.on.all.#.pla
669a0 74 66 6f 72 6d 73 0a 64 65 66 20 5f 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 6d 61 63 6f 73 78 5f tforms.def._proxy_bypass_macosx_
669c0 73 79 73 63 6f 6e 66 28 68 6f 73 74 2c 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 29 3a 0a 20 sysconf(host,.proxy_settings):..
669e0 20 20 20 22 22 22 0a 20 20 20 20 52 65 74 75 72 6e 20 54 72 75 65 20 69 66 66 20 74 68 69 73 20 ...""".....Return.True.iff.this.
66a00 68 6f 73 74 20 73 68 6f 75 6c 64 6e 27 74 20 62 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 host.shouldn't.be.accessed.using
66a20 20 61 20 70 72 6f 78 79 0a 0a 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 .a.proxy......This.function.uses
66a40 20 74 68 65 20 4d 61 63 4f 53 58 20 66 72 61 6d 65 77 6f 72 6b 20 53 79 73 74 65 6d 43 6f 6e 66 .the.MacOSX.framework.SystemConf
66a60 69 67 75 72 61 74 69 6f 6e 0a 20 20 20 20 74 6f 20 66 65 74 63 68 20 74 68 65 20 70 72 6f 78 79 iguration.....to.fetch.the.proxy
66a80 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 .information.......proxy_setting
66aa0 73 20 63 6f 6d 65 20 66 72 6f 6d 20 5f 73 63 70 72 6f 78 79 2e 5f 67 65 74 5f 70 72 6f 78 79 5f s.come.from._scproxy._get_proxy_
66ac0 73 65 74 74 69 6e 67 73 20 6f 72 20 67 65 74 20 6d 6f 63 6b 65 64 20 69 65 3a 0a 20 20 20 20 7b settings.or.get.mocked.ie:.....{
66ae0 20 27 65 78 63 6c 75 64 65 5f 73 69 6d 70 6c 65 27 3a 20 62 6f 6f 6c 2c 0a 20 20 20 20 20 20 27 .'exclude_simple':.bool,.......'
66b00 65 78 63 65 70 74 69 6f 6e 73 27 3a 20 5b 27 66 6f 6f 2e 62 61 72 27 2c 20 27 2a 2e 62 61 72 2e exceptions':.['foo.bar',.'*.bar.
66b20 63 6f 6d 27 2c 20 27 31 32 37 2e 30 2e 30 2e 31 27 2c 20 27 31 30 2e 31 27 2c 20 27 31 30 2e 30 com',.'127.0.0.1',.'10.1',.'10.0
66b40 2f 31 36 27 5d 0a 20 20 20 20 7d 0a 20 20 20 20 22 22 22 0a 20 20 20 20 66 72 6f 6d 20 66 6e 6d /16'].....}.....""".....from.fnm
66b60 61 74 63 68 20 69 6d 70 6f 72 74 20 66 6e 6d 61 74 63 68 0a 0a 20 20 20 20 68 6f 73 74 6f 6e 6c atch.import.fnmatch......hostonl
66b80 79 2c 20 70 6f 72 74 20 3d 20 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 0a 20 20 20 20 64 y,.port.=.splitport(host)......d
66ba0 65 66 20 69 70 32 6e 75 6d 28 69 70 41 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 70 61 72 74 73 ef.ip2num(ipAddr):.........parts
66bc0 20 3d 20 69 70 41 64 64 72 2e 73 70 6c 69 74 28 27 2e 27 29 0a 20 20 20 20 20 20 20 20 70 61 72 .=.ipAddr.split('.').........par
66be0 74 73 20 3d 20 6c 69 73 74 28 6d 61 70 28 69 6e 74 2c 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 ts.=.list(map(int,.parts))......
66c00 20 20 20 69 66 20 6c 65 6e 28 70 61 72 74 73 29 20 21 3d 20 34 3a 0a 20 20 20 20 20 20 20 20 20 ...if.len(parts).!=.4:..........
66c20 20 20 20 70 61 72 74 73 20 3d 20 28 70 61 72 74 73 20 2b 20 5b 30 2c 20 30 2c 20 30 2c 20 30 5d ...parts.=.(parts.+.[0,.0,.0,.0]
66c40 29 5b 3a 34 5d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 61 72 74 73 5b 30 5d 20 3c )[:4].........return.(parts[0].<
66c60 3c 20 32 34 29 20 7c 20 28 70 61 72 74 73 5b 31 5d 20 3c 3c 20 31 36 29 20 7c 20 28 70 61 72 74 <.24).|.(parts[1].<<.16).|.(part
66c80 73 5b 32 5d 20 3c 3c 20 38 29 20 7c 20 70 61 72 74 73 5b 33 5d 0a 0a 20 20 20 20 23 20 43 68 65 s[2].<<.8).|.parts[3]......#.Che
66ca0 63 6b 20 66 6f 72 20 73 69 6d 70 6c 65 20 68 6f 73 74 20 6e 61 6d 65 73 3a 0a 20 20 20 20 69 66 ck.for.simple.host.names:.....if
66cc0 20 27 2e 27 20 6e 6f 74 20 69 6e 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f .'.'.not.in.host:.........if.pro
66ce0 78 79 5f 73 65 74 74 69 6e 67 73 5b 27 65 78 63 6c 75 64 65 5f 73 69 6d 70 6c 65 27 5d 3a 0a 20 xy_settings['exclude_simple']:..
66d00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 68 6f 73 74 ...........return.True......host
66d20 49 50 20 3d 20 4e 6f 6e 65 0a 0a 20 20 20 20 66 6f 72 20 76 61 6c 75 65 20 69 6e 20 70 72 6f 78 IP.=.None......for.value.in.prox
66d40 79 5f 73 65 74 74 69 6e 67 73 2e 67 65 74 28 27 65 78 63 65 70 74 69 6f 6e 73 27 2c 20 28 29 29 y_settings.get('exceptions',.())
66d60 3a 0a 20 20 20 20 20 20 20 20 23 20 49 74 65 6d 73 20 69 6e 20 74 68 65 20 6c 69 73 74 20 61 72 :.........#.Items.in.the.list.ar
66d80 65 20 73 74 72 69 6e 67 73 20 6c 69 6b 65 20 74 68 65 73 65 3a 20 2a 2e 6c 6f 63 61 6c 2c 20 31 e.strings.like.these:.*.local,.1
66da0 36 39 2e 32 35 34 2f 31 36 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 76 61 6c 75 65 3a 20 69.254/16.........if.not.value:.
66dc0 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 6d 20 3d 20 72 65 2e 6d 61 74 63 68 28 72 continue..........m.=.re.match(r
66de0 22 28 5c 64 2b 28 3f 3a 5c 2e 5c 64 2b 29 2a 29 28 2f 5c 64 2b 29 3f 22 2c 20 76 61 6c 75 65 29 "(\d+(?:\.\d+)*)(/\d+)?",.value)
66e00 0a 20 20 20 20 20 20 20 20 69 66 20 6d 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 .........if.m.is.not.None:......
66e20 20 20 20 20 20 20 20 69 66 20 68 6f 73 74 49 50 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 .......if.hostIP.is.None:.......
66e40 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........try:..................
66e60 20 20 20 68 6f 73 74 49 50 20 3d 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 ...hostIP.=.socket.gethostbyname
66e80 28 68 6f 73 74 6f 6e 6c 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 (hostonly).....................h
66ea0 6f 73 74 49 50 20 3d 20 69 70 32 6e 75 6d 28 68 6f 73 74 49 50 29 0a 20 20 20 20 20 20 20 20 20 ostIP.=.ip2num(hostIP)..........
66ec0 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 .......except.OSError:..........
66ee0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 0a 20 20 20 20 20 20 20 20 20 20 20 ...........continue.............
66f00 20 62 61 73 65 20 3d 20 69 70 32 6e 75 6d 28 6d 2e 67 72 6f 75 70 28 31 29 29 0a 20 20 20 20 20 .base.=.ip2num(m.group(1))......
66f20 20 20 20 20 20 20 20 6d 61 73 6b 20 3d 20 6d 2e 67 72 6f 75 70 28 32 29 0a 20 20 20 20 20 20 20 .......mask.=.m.group(2)........
66f40 20 20 20 20 20 69 66 20 6d 61 73 6b 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 .....if.mask.is.None:...........
66f60 20 20 20 20 20 20 6d 61 73 6b 20 3d 20 38 20 2a 20 28 6d 2e 67 72 6f 75 70 28 31 29 2e 63 6f 75 ......mask.=.8.*.(m.group(1).cou
66f80 6e 74 28 27 2e 27 29 20 2b 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 nt('.').+.1).............else:..
66fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 73 6b 20 3d 20 69 6e 74 28 6d 61 73 6b 5b 31 ...............mask.=.int(mask[1
66fc0 3a 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 73 6b 20 3d 20 33 32 20 2d 20 6d 61 73 6b :]).............mask.=.32.-.mask
66fe0 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 6f 73 74 49 50 20 3e 3e 20 6d 61 73 6b ..............if.(hostIP.>>.mask
67000 29 20 3d 3d 20 28 62 61 73 65 20 3e 3e 20 6d 61 73 6b 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ).==.(base.>>.mask):............
67020 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 .....return.True..........elif.f
67040 6e 6d 61 74 63 68 28 68 6f 73 74 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 nmatch(host,.value):............
67060 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 0a .return.True......return.False..
67080 0a 69 66 20 73 79 73 2e 70 6c 61 74 66 6f 72 6d 20 3d 3d 20 27 64 61 72 77 69 6e 27 3a 0a 20 20 .if.sys.platform.==.'darwin':...
670a0 20 20 66 72 6f 6d 20 5f 73 63 70 72 6f 78 79 20 69 6d 70 6f 72 74 20 5f 67 65 74 5f 70 72 6f 78 ..from._scproxy.import._get_prox
670c0 79 5f 73 65 74 74 69 6e 67 73 2c 20 5f 67 65 74 5f 70 72 6f 78 69 65 73 0a 0a 20 20 20 20 64 65 y_settings,._get_proxies......de
670e0 66 20 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 68 6f f.proxy_bypass_macosx_sysconf(ho
67100 73 74 29 3a 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 20 3d 20 5f 67 st):.........proxy_settings.=._g
67120 65 74 5f 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 et_proxy_settings().........retu
67140 72 6e 20 5f 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 rn._proxy_bypass_macosx_sysconf(
67160 68 6f 73 74 2c 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 29 0a 0a 20 20 20 20 64 65 66 20 67 host,.proxy_settings)......def.g
67180 65 74 70 72 6f 78 69 65 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 29 3a 0a 20 20 20 20 etproxies_macosx_sysconf():.....
671a0 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 6f 66 20 73 63 ...."""Return.a.dictionary.of.sc
671c0 68 65 6d 65 20 2d 3e 20 70 72 6f 78 79 20 73 65 72 76 65 72 20 55 52 4c 20 6d 61 70 70 69 6e 67 heme.->.proxy.server.URL.mapping
671e0 73 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 s...........This.function.uses.t
67200 68 65 20 4d 61 63 4f 53 58 20 66 72 61 6d 65 77 6f 72 6b 20 53 79 73 74 65 6d 43 6f 6e 66 69 67 he.MacOSX.framework.SystemConfig
67220 75 72 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 74 6f 20 66 65 74 63 68 20 74 68 65 20 70 72 6f uration.........to.fetch.the.pro
67240 78 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 xy.information..........""".....
67260 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 70 72 6f 78 69 65 73 28 29 0a 0a 0a 0a 20 20 20 ....return._get_proxies().......
67280 20 64 65 66 20 70 72 6f 78 79 5f 62 79 70 61 73 73 28 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 .def.proxy_bypass(host):........
672a0 20 22 22 22 52 65 74 75 72 6e 20 54 72 75 65 2c 20 69 66 20 68 6f 73 74 20 73 68 6f 75 6c 64 20 ."""Return.True,.if.host.should.
672c0 62 65 20 62 79 70 61 73 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 73 20 70 72 6f be.bypassed...........Checks.pro
672e0 78 79 20 73 65 74 74 69 6e 67 73 20 67 61 74 68 65 72 65 64 20 66 72 6f 6d 20 74 68 65 20 65 6e xy.settings.gathered.from.the.en
67300 76 69 72 6f 6e 6d 65 6e 74 2c 20 69 66 20 73 70 65 63 69 66 69 65 64 2c 0a 20 20 20 20 20 20 20 vironment,.if.specified,........
67320 20 6f 72 20 66 72 6f 6d 20 74 68 65 20 4d 61 63 4f 53 58 20 66 72 61 6d 65 77 6f 72 6b 20 53 79 .or.from.the.MacOSX.framework.Sy
67340 73 74 65 6d 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a stemConfiguration...........""".
67360 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 20 3d 20 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 ........proxies.=.getproxies_env
67380 69 72 6f 6e 6d 65 6e 74 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 69 65 73 3a 0a 20 ironment().........if.proxies:..
673a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 65 ...........return.proxy_bypass_e
673c0 6e 76 69 72 6f 6e 6d 65 6e 74 28 68 6f 73 74 2c 20 70 72 6f 78 69 65 73 29 0a 20 20 20 20 20 20 nvironment(host,.proxies).......
673e0 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 78 79 ..else:.............return.proxy
67400 5f 62 79 70 61 73 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 68 6f 73 74 29 0a 0a 20 20 _bypass_macosx_sysconf(host)....
67420 20 20 64 65 66 20 67 65 74 70 72 6f 78 69 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 ..def.getproxies():.........retu
67440 72 6e 20 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 28 29 20 6f 72 20 67 rn.getproxies_environment().or.g
67460 65 74 70 72 6f 78 69 65 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 29 0a 0a 0a 65 6c 69 etproxies_macosx_sysconf()...eli
67480 66 20 6f 73 2e 6e 61 6d 65 20 3d 3d 20 27 6e 74 27 3a 0a 20 20 20 20 64 65 66 20 67 65 74 70 72 f.os.name.==.'nt':.....def.getpr
674a0 6f 78 69 65 73 5f 72 65 67 69 73 74 72 79 28 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 oxies_registry():........."""Ret
674c0 75 72 6e 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 6f 66 20 73 63 68 65 6d 65 20 2d 3e 20 70 72 urn.a.dictionary.of.scheme.->.pr
674e0 6f 78 79 20 73 65 72 76 65 72 20 55 52 4c 20 6d 61 70 70 69 6e 67 73 2e 0a 0a 20 20 20 20 20 20 oxy.server.URL.mappings.........
67500 20 20 57 69 6e 33 32 20 75 73 65 73 20 74 68 65 20 72 65 67 69 73 74 72 79 20 74 6f 20 73 74 6f ..Win32.uses.the.registry.to.sto
67520 72 65 20 70 72 6f 78 69 65 73 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 re.proxies..........."""........
67540 20 70 72 6f 78 69 65 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 .proxies.=.{}.........try:......
67560 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 77 69 6e 72 65 67 0a 20 20 20 20 20 20 20 20 65 78 63 .......import.winreg.........exc
67580 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 ept.ImportError:.............#.S
675a0 74 64 20 6d 6f 64 75 6c 65 2c 20 73 6f 20 73 68 6f 75 6c 64 20 62 65 20 61 72 6f 75 6e 64 20 2d td.module,.so.should.be.around.-
675c0 20 62 75 74 20 79 6f 75 20 6e 65 76 65 72 20 6b 6e 6f 77 21 0a 20 20 20 20 20 20 20 20 20 20 20 .but.you.never.know!............
675e0 20 72 65 74 75 72 6e 20 70 72 6f 78 69 65 73 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 .return.proxies.........try:....
67600 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 65 74 53 65 74 74 69 6e 67 73 20 3d 20 77 69 6e 72 .........internetSettings.=.winr
67620 65 67 2e 4f 70 65 6e 4b 65 79 28 77 69 6e 72 65 67 2e 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 eg.OpenKey(winreg.HKEY_CURRENT_U
67640 53 45 52 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 27 53 6f 66 74 77 61 72 65 5c SER,.................r'Software\
67660 4d 69 63 72 6f 73 6f 66 74 5c 57 69 6e 64 6f 77 73 5c 43 75 72 72 65 6e 74 56 65 72 73 69 6f 6e Microsoft\Windows\CurrentVersion
67680 5c 49 6e 74 65 72 6e 65 74 20 53 65 74 74 69 6e 67 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 \Internet.Settings')............
676a0 20 70 72 6f 78 79 45 6e 61 62 6c 65 20 3d 20 77 69 6e 72 65 67 2e 51 75 65 72 79 56 61 6c 75 65 .proxyEnable.=.winreg.QueryValue
676c0 45 78 28 69 6e 74 65 72 6e 65 74 53 65 74 74 69 6e 67 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 Ex(internetSettings,............
676e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
67700 20 20 20 20 27 50 72 6f 78 79 45 6e 61 62 6c 65 27 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20 ....'ProxyEnable')[0]...........
67720 20 20 69 66 20 70 72 6f 78 79 45 6e 61 62 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..if.proxyEnable:...............
67740 20 20 23 20 52 65 74 75 72 6e 65 64 20 61 73 20 55 6e 69 63 6f 64 65 20 62 75 74 20 70 72 6f 62 ..#.Returned.as.Unicode.but.prob
67760 6c 65 6d 73 20 69 66 20 6e 6f 74 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 41 53 43 49 49 0a 20 lems.if.not.converted.to.ASCII..
67780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 53 65 72 76 65 72 20 3d 20 73 74 72 ...............proxyServer.=.str
677a0 28 77 69 6e 72 65 67 2e 51 75 65 72 79 56 61 6c 75 65 45 78 28 69 6e 74 65 72 6e 65 74 53 65 74 (winreg.QueryValueEx(internetSet
677c0 74 69 6e 67 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tings,..........................
677e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 50 ..............................'P
67800 72 6f 78 79 53 65 72 76 65 72 27 29 5b 30 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 roxyServer')[0])................
67820 20 69 66 20 27 3d 27 20 69 6e 20 70 72 6f 78 79 53 65 72 76 65 72 3a 0a 20 20 20 20 20 20 20 20 .if.'='.in.proxyServer:.........
67840 20 20 20 20 20 20 20 20 20 20 20 20 23 20 50 65 72 2d 70 72 6f 74 6f 63 6f 6c 20 73 65 74 74 69 ............#.Per-protocol.setti
67860 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 70 20 69 6e ngs.....................for.p.in
67880 20 70 72 6f 78 79 53 65 72 76 65 72 2e 73 70 6c 69 74 28 27 3b 27 29 3a 0a 20 20 20 20 20 20 20 .proxyServer.split(';'):........
678a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 2c 20 61 64 64 72 65 .................protocol,.addre
678c0 73 73 20 3d 20 70 2e 73 70 6c 69 74 28 27 3d 27 2c 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 ss.=.p.split('=',.1)............
678e0 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 65 65 20 69 66 20 61 64 64 72 65 73 73 20 68 61 .............#.See.if.address.ha
67900 73 20 61 20 74 79 70 65 3a 2f 2f 20 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.a.type://.prefix..............
67920 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 2e 6d 61 74 63 68 28 27 5e 28 5b 5e ...........if.not.re.match('^([^
67940 2f 3a 5d 2b 29 3a 2f 2f 27 2c 20 61 64 64 72 65 73 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 /:]+)://',.address):............
67960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65 73 73 20 3d 20 27 25 73 3a 2f .................address.=.'%s:/
67980 2f 25 73 27 20 25 20 28 70 72 6f 74 6f 63 6f 6c 2c 20 61 64 64 72 65 73 73 29 0a 20 20 20 20 20 /%s'.%.(protocol,.address)......
679a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 5b 70 72 6f 74 6f ...................proxies[proto
679c0 63 6f 6c 5d 20 3d 20 61 64 64 72 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 col].=.address.................e
679e0 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 55 73 65 20 6f lse:.....................#.Use.o
67a00 6e 65 20 73 65 74 74 69 6e 67 20 66 6f 72 20 61 6c 6c 20 70 72 6f 74 6f 63 6f 6c 73 0a 20 20 20 ne.setting.for.all.protocols....
67a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 53 65 72 76 65 72 5b .................if.proxyServer[
67a40 3a 35 5d 20 3d 3d 20 27 68 74 74 70 3a 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :5].==.'http:':.................
67a60 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 5b 27 68 74 74 70 27 5d 20 3d 20 70 72 6f 78 79 53 ........proxies['http'].=.proxyS
67a80 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a erver.....................else:.
67aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 5b ........................proxies[
67ac0 27 68 74 74 70 27 5d 20 3d 20 27 68 74 74 70 3a 2f 2f 25 73 27 20 25 20 70 72 6f 78 79 53 65 72 'http'].=.'http://%s'.%.proxySer
67ae0 76 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 ver.........................prox
67b00 69 65 73 5b 27 68 74 74 70 73 27 5d 20 3d 20 27 68 74 74 70 73 3a 2f 2f 25 73 27 20 25 20 70 72 ies['https'].=.'https://%s'.%.pr
67b20 6f 78 79 53 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oxyServer.......................
67b40 20 20 70 72 6f 78 69 65 73 5b 27 66 74 70 27 5d 20 3d 20 27 66 74 70 3a 2f 2f 25 73 27 20 25 20 ..proxies['ftp'].=.'ftp://%s'.%.
67b60 70 72 6f 78 79 53 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 65 74 proxyServer.............internet
67b80 53 65 74 74 69 6e 67 73 2e 43 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 Settings.Close().........except.
67ba0 28 4f 53 45 72 72 6f 72 2c 20 56 61 6c 75 65 45 72 72 6f 72 2c 20 54 79 70 65 45 72 72 6f 72 29 (OSError,.ValueError,.TypeError)
67bc0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 45 69 74 68 65 72 20 72 65 67 69 73 74 72 79 20 :.............#.Either.registry.
67be0 6b 65 79 20 6e 6f 74 20 66 6f 75 6e 64 20 65 74 63 2c 20 6f 72 20 74 68 65 20 76 61 6c 75 65 20 key.not.found.etc,.or.the.value.
67c00 69 6e 20 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 75 6e 65 78 70 65 63 74 65 64 20 66 in.an.............#.unexpected.f
67c20 6f 72 6d 61 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 72 6f 78 69 65 73 20 61 6c 72 ormat..............#.proxies.alr
67c40 65 61 64 79 20 73 65 74 20 75 70 20 74 6f 20 62 65 20 65 6d 70 74 79 20 73 6f 20 6e 6f 74 68 69 eady.set.up.to.be.empty.so.nothi
67c60 6e 67 20 74 6f 20 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 ng.to.do.............pass.......
67c80 20 20 72 65 74 75 72 6e 20 70 72 6f 78 69 65 73 0a 0a 20 20 20 20 64 65 66 20 67 65 74 70 72 6f ..return.proxies......def.getpro
67ca0 78 69 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 20 64 69 63 74 xies():........."""Return.a.dict
67cc0 69 6f 6e 61 72 79 20 6f 66 20 73 63 68 65 6d 65 20 2d 3e 20 70 72 6f 78 79 20 73 65 72 76 65 72 ionary.of.scheme.->.proxy.server
67ce0 20 55 52 4c 20 6d 61 70 70 69 6e 67 73 2e 0a 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 .URL.mappings...........Returns.
67d00 73 65 74 74 69 6e 67 73 20 67 61 74 68 65 72 65 64 20 66 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 settings.gathered.from.the.envir
67d20 6f 6e 6d 65 6e 74 2c 20 69 66 20 73 70 65 63 69 66 69 65 64 2c 0a 20 20 20 20 20 20 20 20 6f 72 onment,.if.specified,.........or
67d40 20 74 68 65 20 72 65 67 69 73 74 72 79 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 .the.registry...........""".....
67d60 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e ....return.getproxies_environmen
67d80 74 28 29 20 6f 72 20 67 65 74 70 72 6f 78 69 65 73 5f 72 65 67 69 73 74 72 79 28 29 0a 0a 20 20 t().or.getproxies_registry()....
67da0 20 20 64 65 66 20 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 72 65 67 69 73 74 72 79 28 68 6f 73 74 ..def.proxy_bypass_registry(host
67dc0 29 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f ):.........try:.............impo
67de0 72 74 20 77 69 6e 72 65 67 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 rt.winreg.........except.ImportE
67e00 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 74 64 20 6d 6f 64 75 6c 65 73 2c rror:.............#.Std.modules,
67e20 20 73 6f 20 73 68 6f 75 6c 64 20 62 65 20 61 72 6f 75 6e 64 20 2d 20 62 75 74 20 79 6f 75 20 6e .so.should.be.around.-.but.you.n
67e40 65 76 65 72 20 6b 6e 6f 77 21 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a ever.know!.............return.0.
67e60 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 65 ........try:.............interne
67e80 74 53 65 74 74 69 6e 67 73 20 3d 20 77 69 6e 72 65 67 2e 4f 70 65 6e 4b 65 79 28 77 69 6e 72 65 tSettings.=.winreg.OpenKey(winre
67ea0 67 2e 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 2c 0a 20 20 20 20 20 20 20 20 20 20 20 g.HKEY_CURRENT_USER,............
67ec0 20 20 20 20 20 72 27 53 6f 66 74 77 61 72 65 5c 4d 69 63 72 6f 73 6f 66 74 5c 57 69 6e 64 6f 77 .....r'Software\Microsoft\Window
67ee0 73 5c 43 75 72 72 65 6e 74 56 65 72 73 69 6f 6e 5c 49 6e 74 65 72 6e 65 74 20 53 65 74 74 69 6e s\CurrentVersion\Internet.Settin
67f00 67 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 45 6e 61 62 6c 65 20 3d 20 77 gs').............proxyEnable.=.w
67f20 69 6e 72 65 67 2e 51 75 65 72 79 56 61 6c 75 65 45 78 28 69 6e 74 65 72 6e 65 74 53 65 74 74 69 inreg.QueryValueEx(internetSetti
67f40 6e 67 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ngs,............................
67f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 50 72 6f 78 79 45 6e 61 62 6c 65 ....................'ProxyEnable
67f80 27 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 4f 76 65 72 72 69 64 65 20 ')[0].............proxyOverride.
67fa0 3d 20 73 74 72 28 77 69 6e 72 65 67 2e 51 75 65 72 79 56 61 6c 75 65 45 78 28 69 6e 74 65 72 6e =.str(winreg.QueryValueEx(intern
67fc0 65 74 53 65 74 74 69 6e 67 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 etSettings,.....................
67fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
68000 20 27 50 72 6f 78 79 4f 76 65 72 72 69 64 65 27 29 5b 30 5d 29 0a 20 20 20 20 20 20 20 20 20 20 .'ProxyOverride')[0])...........
68020 20 20 23 20 5e 5e 5e 5e 20 52 65 74 75 72 6e 65 64 20 61 73 20 55 6e 69 63 6f 64 65 20 62 75 74 ..#.^^^^.Returned.as.Unicode.but
68040 20 70 72 6f 62 6c 65 6d 73 20 69 66 20 6e 6f 74 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 41 53 .problems.if.not.converted.to.AS
68060 43 49 49 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 0a 20 20 20 20 CII.........except.OSError:.....
68080 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 ........return.0.........if.not.
680a0 70 72 6f 78 79 45 6e 61 62 6c 65 20 6f 72 20 6e 6f 74 20 70 72 6f 78 79 4f 76 65 72 72 69 64 65 proxyEnable.or.not.proxyOverride
680c0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a 20 20 20 20 20 20 20 20 23 :.............return.0.........#
680e0 20 74 72 79 20 74 6f 20 6d 61 6b 65 20 61 20 68 6f 73 74 20 6c 69 73 74 20 66 72 6f 6d 20 6e 61 .try.to.make.a.host.list.from.na
68100 6d 65 20 61 6e 64 20 49 50 20 61 64 64 72 65 73 73 2e 0a 20 20 20 20 20 20 20 20 72 61 77 48 6f me.and.IP.address..........rawHo
68120 73 74 2c 20 70 6f 72 74 20 3d 20 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 20 st,.port.=.splitport(host)......
68140 20 20 20 68 6f 73 74 20 3d 20 5b 72 61 77 48 6f 73 74 5d 0a 20 20 20 20 20 20 20 20 74 72 79 3a ...host.=.[rawHost].........try:
68160 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 20 3d 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f .............addr.=.socket.getho
68180 73 74 62 79 6e 61 6d 65 28 72 61 77 48 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 stbyname(rawHost).............if
681a0 20 61 64 64 72 20 21 3d 20 72 61 77 48 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .addr.!=.rawHost:...............
681c0 20 20 68 6f 73 74 2e 61 70 70 65 6e 64 28 61 64 64 72 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 ..host.append(addr).........exce
681e0 70 74 20 4f 53 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 20 20 20 pt.OSError:.............pass....
68200 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 71 64 6e 20 3d 20 73 6f 63 .....try:.............fqdn.=.soc
68220 6b 65 74 2e 67 65 74 66 71 64 6e 28 72 61 77 48 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 ket.getfqdn(rawHost)............
68240 20 69 66 20 66 71 64 6e 20 21 3d 20 72 61 77 48 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 .if.fqdn.!=.rawHost:............
68260 20 20 20 20 20 68 6f 73 74 2e 61 70 70 65 6e 64 28 66 71 64 6e 29 0a 20 20 20 20 20 20 20 20 65 .....host.append(fqdn).........e
68280 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a xcept.OSError:.............pass.
682a0 20 20 20 20 20 20 20 20 23 20 6d 61 6b 65 20 61 20 63 68 65 63 6b 20 76 61 6c 75 65 20 6c 69 73 ........#.make.a.check.value.lis
682c0 74 20 66 72 6f 6d 20 74 68 65 20 72 65 67 69 73 74 72 79 20 65 6e 74 72 79 3a 20 72 65 70 6c 61 t.from.the.registry.entry:.repla
682e0 63 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 20 27 3c 6c 6f 63 61 6c 3e 27 20 73 74 72 69 6e ce.the.........#.'<local>'.strin
68300 67 20 62 79 20 74 68 65 20 6c 6f 63 61 6c 68 6f 73 74 20 65 6e 74 72 79 20 61 6e 64 20 74 68 65 g.by.the.localhost.entry.and.the
68320 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 20 20 20 20 20 20 20 20 23 20 63 61 6e 6f 6e 69 63 .corresponding.........#.canonic
68340 61 6c 20 65 6e 74 72 79 2e 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 4f 76 65 72 72 69 64 65 20 al.entry..........proxyOverride.
68360 3d 20 70 72 6f 78 79 4f 76 65 72 72 69 64 65 2e 73 70 6c 69 74 28 27 3b 27 29 0a 20 20 20 20 20 =.proxyOverride.split(';')......
68380 20 20 20 23 20 6e 6f 77 20 63 68 65 63 6b 20 69 66 20 77 65 20 6d 61 74 63 68 20 6f 6e 65 20 6f ...#.now.check.if.we.match.one.o
683a0 66 20 74 68 65 20 72 65 67 69 73 74 72 79 20 76 61 6c 75 65 73 2e 0a 20 20 20 20 20 20 20 20 66 f.the.registry.values..........f
683c0 6f 72 20 74 65 73 74 20 69 6e 20 70 72 6f 78 79 4f 76 65 72 72 69 64 65 3a 0a 20 20 20 20 20 20 or.test.in.proxyOverride:.......
683e0 20 20 20 20 20 20 69 66 20 74 65 73 74 20 3d 3d 20 27 3c 6c 6f 63 61 6c 3e 27 3a 0a 20 20 20 20 ......if.test.==.'<local>':.....
68400 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 27 2e 27 20 6e 6f 74 20 69 6e 20 72 61 77 48 6f 73 ............if.'.'.not.in.rawHos
68420 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 0a t:.....................return.1.
68440 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73 74 20 3d 20 74 65 73 74 2e 72 65 70 6c 61 63 65 28 ............test.=.test.replace(
68460 22 2e 22 2c 20 72 22 5c 2e 22 29 20 20 20 20 20 23 20 6d 61 73 6b 20 64 6f 74 73 0a 20 20 20 20 ".",.r"\.").....#.mask.dots.....
68480 20 20 20 20 20 20 20 20 74 65 73 74 20 3d 20 74 65 73 74 2e 72 65 70 6c 61 63 65 28 22 2a 22 2c ........test.=.test.replace("*",
684a0 20 72 22 2e 2a 22 29 20 20 20 20 20 23 20 63 68 61 6e 67 65 20 67 6c 6f 62 20 73 65 71 75 65 6e .r".*").....#.change.glob.sequen
684c0 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73 74 20 3d 20 74 65 73 74 2e 72 65 70 6c 61 ce.............test.=.test.repla
684e0 63 65 28 22 3f 22 2c 20 72 22 2e 22 29 20 20 20 20 20 20 23 20 63 68 61 6e 67 65 20 67 6c 6f 62 ce("?",.r".")......#.change.glob
68500 20 63 68 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 76 61 6c 20 69 6e 20 68 6f 73 .char.............for.val.in.hos
68520 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 2e 6d 61 74 63 68 28 74 t:.................if.re.match(t
68540 65 73 74 2c 20 76 61 6c 2c 20 72 65 2e 49 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 est,.val,.re.I):................
68560 20 20 20 20 20 72 65 74 75 72 6e 20 31 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a 0a .....return.1.........return.0..
68580 20 20 20 20 64 65 66 20 70 72 6f 78 79 5f 62 79 70 61 73 73 28 68 6f 73 74 29 3a 0a 20 20 20 20 ....def.proxy_bypass(host):.....
685a0 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 54 72 75 65 2c 20 69 66 20 68 6f 73 74 20 73 68 6f 75 ...."""Return.True,.if.host.shou
685c0 6c 64 20 62 65 20 62 79 70 61 73 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 73 20 ld.be.bypassed...........Checks.
685e0 70 72 6f 78 79 20 73 65 74 74 69 6e 67 73 20 67 61 74 68 65 72 65 64 20 66 72 6f 6d 20 74 68 65 proxy.settings.gathered.from.the
68600 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2c 20 69 66 20 73 70 65 63 69 66 69 65 64 2c 0a 20 20 20 20 .environment,.if.specified,.....
68620 20 20 20 20 6f 72 20 74 68 65 20 72 65 67 69 73 74 72 79 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 ....or.the.registry...........""
68640 22 0a 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 20 3d 20 67 65 74 70 72 6f 78 69 65 73 5f 65 ".........proxies.=.getproxies_e
68660 6e 76 69 72 6f 6e 6d 65 6e 74 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 69 65 73 3a nvironment().........if.proxies:
68680 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 78 79 5f 62 79 70 61 73 73 .............return.proxy_bypass
686a0 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 28 68 6f 73 74 2c 20 70 72 6f 78 69 65 73 29 0a 20 20 20 20 _environment(host,.proxies).....
686c0 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f ....else:.............return.pro
686e0 78 79 5f 62 79 70 61 73 73 5f 72 65 67 69 73 74 72 79 28 68 6f 73 74 29 0a 0a 65 6c 73 65 3a 0a xy_bypass_registry(host)..else:.
68700 20 20 20 20 23 20 42 79 20 64 65 66 61 75 6c 74 20 75 73 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 ....#.By.default.use.environment
68720 20 76 61 72 69 61 62 6c 65 73 0a 20 20 20 20 67 65 74 70 72 6f 78 69 65 73 20 3d 20 67 65 74 70 .variables.....getproxies.=.getp
68740 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 20 20 20 20 70 72 6f 78 79 5f 62 79 70 roxies_environment.....proxy_byp
68760 61 73 73 20 3d 20 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 95 ass.=.proxy_bypass_environment..
68780 b7 20 01 00 00 00 00 00 94 7d 94 28 8c 07 75 72 6c 6f 70 65 6e 94 6a 74 1f 00 00 4b 8b 4b de 87 .........}.(..urlopen.jt...K.K..
687a0 94 8c 0e 69 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 94 6a 74 1f 00 00 4b e0 4b e2 87 94 8c 0b 75 ...install_opener.jt...K.K.....u
687c0 72 6c 72 65 74 72 69 65 76 65 94 6a 74 1f 00 00 4b e5 4d 22 01 87 94 8c 0a 75 72 6c 63 6c 65 61 rlretrieve.jt...K.M".....urlclea
687e0 6e 75 70 94 6a 74 1f 00 00 4d 24 01 4d 2f 01 87 94 8c 0c 72 65 71 75 65 73 74 5f 68 6f 73 74 94 nup.jt...M$.M/.....request_host.
68800 6a 74 1f 00 00 4d 33 01 4d 41 01 87 94 8c 10 52 65 71 75 65 73 74 2e 5f 5f 69 6e 69 74 5f 5f 94 jt...M3.MA.....Request.__init__.
68820 6a 74 1f 00 00 4d 45 01 4d 55 01 87 94 8c 10 52 65 71 75 65 73 74 2e 66 75 6c 6c 5f 75 72 6c 94 jt...ME.MU.....Request.full_url.
68840 6a 74 1f 00 00 4d 64 01 4d 68 01 87 94 8c 0c 52 65 71 75 65 73 74 2e 64 61 74 61 94 6a 74 1f 00 jt...Md.Mh.....Request.data.jt..
68860 00 4d 78 01 4d 7a 01 87 94 8c 0e 52 65 71 75 65 73 74 2e 5f 70 61 72 73 65 94 6a 74 1f 00 00 4d .Mx.Mz.....Request._parse.jt...M
68880 7c 01 4d 82 01 87 94 8c 12 52 65 71 75 65 73 74 2e 67 65 74 5f 6d 65 74 68 6f 64 94 6a 74 1f 00 |.M......Request.get_method.jt..
688a0 00 4d 84 01 4d 87 01 87 94 8c 14 52 65 71 75 65 73 74 2e 67 65 74 5f 66 75 6c 6c 5f 75 72 6c 94 .M..M......Request.get_full_url.
688c0 6a 74 1f 00 00 4d 89 01 4d 8a 01 87 94 8c 11 52 65 71 75 65 73 74 2e 73 65 74 5f 70 72 6f 78 79 jt...M..M......Request.set_proxy
688e0 94 6a 74 1f 00 00 4d 8c 01 4d 92 01 87 94 8c 11 52 65 71 75 65 73 74 2e 68 61 73 5f 70 72 6f 78 .jt...M..M......Request.has_prox
68900 79 94 6a 74 1f 00 00 4d 94 01 4d 95 01 87 94 8c 12 52 65 71 75 65 73 74 2e 61 64 64 5f 68 65 61 y.jt...M..M......Request.add_hea
68920 64 65 72 94 6a 74 1f 00 00 4d 97 01 4d 99 01 87 94 8c 1f 52 65 71 75 65 73 74 2e 61 64 64 5f 75 der.jt...M..M......Request.add_u
68940 6e 72 65 64 69 72 65 63 74 65 64 5f 68 65 61 64 65 72 94 6a 74 1f 00 00 4d 9b 01 4d 9d 01 87 94 nredirected_header.jt...M..M....
68960 8c 12 52 65 71 75 65 73 74 2e 68 61 73 5f 68 65 61 64 65 72 94 6a 74 1f 00 00 4d 9f 01 4d a1 01 ..Request.has_header.jt...M..M..
68980 87 94 8c 12 52 65 71 75 65 73 74 2e 67 65 74 5f 68 65 61 64 65 72 94 6a 74 1f 00 00 4d a3 01 4d ....Request.get_header.jt...M..M
689a0 a6 01 87 94 8c 15 52 65 71 75 65 73 74 2e 72 65 6d 6f 76 65 5f 68 65 61 64 65 72 94 6a 74 1f 00 ......Request.remove_header.jt..
689c0 00 4d a8 01 4d aa 01 87 94 8c 14 52 65 71 75 65 73 74 2e 68 65 61 64 65 72 5f 69 74 65 6d 73 94 .M..M......Request.header_items.
689e0 6a 74 1f 00 00 4d ac 01 4d af 01 87 94 8c 07 52 65 71 75 65 73 74 94 6a 7d 1f 00 00 4d 43 01 4d jt...M..M......Request.j}...MC.M
68a00 af 01 87 94 8c 17 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 ......OpenerDirector.__init__.jt
68a20 1f 00 00 4d b2 01 4d bb 01 87 94 8c 1a 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 61 64 64 5f ...M..M......OpenerDirector.add_
68a40 68 61 6e 64 6c 65 72 94 6a 74 1f 00 00 4d bd 01 4d ea 01 87 94 8c 14 4f 70 65 6e 65 72 44 69 72 handler.jt...M..M......OpenerDir
68a60 65 63 74 6f 72 2e 63 6c 6f 73 65 94 6a 74 1f 00 00 4d ec 01 4d ee 01 87 94 8c 1a 4f 70 65 6e 65 ector.close.jt...M..M......Opene
68a80 72 44 69 72 65 63 74 6f 72 2e 5f 63 61 6c 6c 5f 63 68 61 69 6e 94 6a 74 1f 00 00 4d f0 01 4d f9 rDirector._call_chain.jt...M..M.
68aa0 01 87 94 8c 13 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 6f 70 65 6e 94 6a 74 1f 00 00 4d fb .....OpenerDirector.open.jt...M.
68ac0 01 4d 15 02 87 94 8c 14 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 5f 6f 70 65 6e 94 6a 74 1f .M......OpenerDirector._open.jt.
68ae0 00 00 4d 17 02 4d 24 02 87 94 8c 14 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 65 72 72 6f 72 ..M..M$.....OpenerDirector.error
68b00 94 6a 74 1f 00 00 4d 26 02 4d 39 02 87 94 8c 0e 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 94 6a .jt...M&.M9.....OpenerDirector.j
68b20 7d 1f 00 00 4d b1 01 4d 39 02 87 94 8c 0c 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 6a 74 1f 00 00 }...M..M9.....build_opener.jt...
68b40 4d 3f 02 4d 61 02 87 94 8c 16 42 61 73 65 48 61 6e 64 6c 65 72 2e 61 64 64 5f 70 61 72 65 6e 74 M?.Ma.....BaseHandler.add_parent
68b60 94 6a 74 1f 00 00 4d 66 02 4d 67 02 87 94 8c 11 42 61 73 65 48 61 6e 64 6c 65 72 2e 63 6c 6f 73 .jt...Mf.Mg.....BaseHandler.clos
68b80 65 94 6a 74 1f 00 00 4d 69 02 4d 6b 02 87 94 8c 12 42 61 73 65 48 61 6e 64 6c 65 72 2e 5f 5f 6c e.jt...Mi.Mk.....BaseHandler.__l
68ba0 74 5f 5f 94 6a 74 1f 00 00 4d 6d 02 4d 73 02 87 94 8c 0b 42 61 73 65 48 61 6e 64 6c 65 72 94 6a t__.jt...Mm.Ms.....BaseHandler.j
68bc0 7d 1f 00 00 4d 63 02 4d 73 02 87 94 8c 20 48 54 54 50 45 72 72 6f 72 50 72 6f 63 65 73 73 6f 72 }...Mc.Ms.....HTTPErrorProcessor
68be0 2e 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 94 6a 74 1f 00 00 4d 7a 02 4d 83 02 87 94 8c 12 48 54 .http_response.jt...Mz.M......HT
68c00 54 50 45 72 72 6f 72 50 72 6f 63 65 73 73 6f 72 94 6a 7d 1f 00 00 4d 76 02 4d 85 02 87 94 8c 2a TPErrorProcessor.j}...Mv.M.....*
68c20 48 54 54 50 44 65 66 61 75 6c 74 45 72 72 6f 72 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 65 72 72 HTTPDefaultErrorHandler.http_err
68c40 6f 72 5f 64 65 66 61 75 6c 74 94 6a 74 1f 00 00 4d 88 02 4d 89 02 87 94 8c 17 48 54 54 50 44 65 or_default.jt...M..M......HTTPDe
68c60 66 61 75 6c 74 45 72 72 6f 72 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 87 02 4d 89 02 87 94 8c faultErrorHandler.j}...M..M.....
68c80 24 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 2e 72 65 64 69 72 65 63 74 5f 72 65 $HTTPRedirectHandler.redirect_re
68ca0 71 75 65 73 74 94 6a 74 1f 00 00 4d 93 02 4d b3 02 87 94 8c 22 48 54 54 50 52 65 64 69 72 65 63 quest.jt...M..M....."HTTPRedirec
68cc0 74 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 94 6a 74 1f 00 00 4d b9 02 tHandler.http_error_302.jt...M..
68ce0 4d f3 02 87 94 8c 13 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 M......HTTPRedirectHandler.j}...
68d00 4d 8b 02 4d f9 02 87 94 8c 0c 5f 70 61 72 73 65 5f 70 72 6f 78 79 94 6a 74 1f 00 00 4d fc 02 4d M..M......_parse_proxy.jt...M..M
68d20 17 03 87 94 8c 15 50 72 6f 78 79 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 ......ProxyHandler.__init__.jt..
68d40 00 4d 1d 03 4d 25 03 87 94 8c 17 50 72 6f 78 79 48 61 6e 64 6c 65 72 2e 70 72 6f 78 79 5f 6f 70 .M..M%.....ProxyHandler.proxy_op
68d60 65 6e 94 6a 74 1f 00 00 4d 27 03 4d 41 03 87 94 8c 0c 50 72 6f 78 79 48 61 6e 64 6c 65 72 94 6a en.jt...M'.MA.....ProxyHandler.j
68d80 7d 1f 00 00 4d 19 03 4d 41 03 87 94 8c 18 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 2e 5f 5f }...M..MA.....HTTPPasswordMgr.__
68da0 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 45 03 4d 46 03 87 94 8c 1c 48 54 54 50 50 61 73 73 77 6f init__.jt...ME.MF.....HTTPPasswo
68dc0 72 64 4d 67 72 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 94 6a 74 1f 00 00 4d 48 03 4d 51 03 87 94 rdMgr.add_password.jt...MH.MQ...
68de0 8c 22 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 2e 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 ."HTTPPasswordMgr.find_user_pass
68e00 77 6f 72 64 94 6a 74 1f 00 00 4d 53 03 4d 5b 03 87 94 8c 1a 48 54 54 50 50 61 73 73 77 6f 72 64 word.jt...MS.M[.....HTTPPassword
68e20 4d 67 72 2e 72 65 64 75 63 65 5f 75 72 69 94 6a 74 1f 00 00 4d 5d 03 4d 72 03 87 94 8c 19 48 54 Mgr.reduce_uri.jt...M].Mr.....HT
68e40 54 50 50 61 73 73 77 6f 72 64 4d 67 72 2e 69 73 5f 73 75 62 75 72 69 94 6a 74 1f 00 00 4d 74 03 TPPasswordMgr.is_suburi.jt...Mt.
68e60 4d 80 03 87 94 8c 0f 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 94 6a 7d 1f 00 00 4d 43 03 4d M......HTTPPasswordMgr.j}...MC.M
68e80 80 03 87 94 8c 32 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 44 65 66 61 75 6c 74 .....2HTTPPasswordMgrWithDefault
68ea0 52 65 61 6c 6d 2e 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 94 6a 74 1f 00 00 4d 85 Realm.find_user_password.jt...M.
68ec0 03 4d 8a 03 87 94 8c 1f 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 44 65 66 61 75 .M......HTTPPasswordMgrWithDefau
68ee0 6c 74 52 65 61 6c 6d 94 6a 7d 1f 00 00 4d 83 03 4d 8a 03 87 94 8c 25 48 54 54 50 50 61 73 73 77 ltRealm.j}...M..M.....%HTTPPassw
68f00 6f 72 64 4d 67 72 57 69 74 68 50 72 69 6f 72 41 75 74 68 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f ordMgrWithPriorAuth.__init__.jt.
68f20 00 00 4d 8f 03 4d 91 03 87 94 8c 29 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 50 ..M..M.....)HTTPPasswordMgrWithP
68f40 72 69 6f 72 41 75 74 68 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 94 6a 74 1f 00 00 4d 93 03 4d 98 riorAuth.add_password.jt...M..M.
68f60 03 87 94 8c 31 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 50 72 69 6f 72 41 75 74 ....1HTTPPasswordMgrWithPriorAut
68f80 68 2e 75 70 64 61 74 65 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 94 6a 74 1f 00 00 4d 9a 03 4d h.update_authenticated.jt...M..M
68fa0 a2 03 87 94 8c 2d 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 50 72 69 6f 72 41 75 .....-HTTPPasswordMgrWithPriorAu
68fc0 74 68 2e 69 73 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 94 6a 74 1f 00 00 4d a4 03 4d a9 03 87 th.is_authenticated.jt...M..M...
68fe0 94 8c 1c 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 50 72 69 6f 72 41 75 74 68 94 ...HTTPPasswordMgrWithPriorAuth.
69000 6a 7d 1f 00 00 4d 8d 03 4d a9 03 87 94 8c 21 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 j}...M..M.....!AbstractBasicAuth
69020 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d ba 03 4d be 03 87 94 8c 2e Handler.__init__.jt...M..M......
69040 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 65 72 AbstractBasicAuthHandler.http_er
69060 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 94 6a 74 1f 00 00 4d c0 03 4d d4 03 87 94 8c 2e 41 62 ror_auth_reqed.jt...M..M......Ab
69080 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 2e 72 65 74 72 79 5f 68 74 74 stractBasicAuthHandler.retry_htt
690a0 70 5f 62 61 73 69 63 5f 61 75 74 68 94 6a 74 1f 00 00 4d d6 03 4d e0 03 87 94 8c 25 41 62 73 74 p_basic_auth.jt...M..M.....%Abst
690c0 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 72 65 71 75 65 73 ractBasicAuthHandler.http_reques
690e0 74 94 6a 74 1f 00 00 4d e2 03 4d ed 03 87 94 8c 26 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 t.jt...M..M.....&AbstractBasicAu
69100 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 94 6a 74 1f 00 00 4d ef 03 thHandler.http_response.jt...M..
69120 4d f5 03 87 94 8c 18 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 94 M......AbstractBasicAuthHandler.
69140 6a 7d 1f 00 00 4d ac 03 4d f8 03 87 94 8c 23 48 54 54 50 42 61 73 69 63 41 75 74 68 48 61 6e 64 j}...M..M.....#HTTPBasicAuthHand
69160 6c 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 31 94 6a 74 1f 00 00 4d 00 04 4d 04 04 87 94 ler.http_error_401.jt...M..M....
69180 8c 14 48 54 54 50 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d fc 03 4d ..HTTPBasicAuthHandler.j}...M..M
691a0 04 04 87 94 8c 24 50 72 6f 78 79 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 .....$ProxyBasicAuthHandler.http
691c0 5f 65 72 72 6f 72 5f 34 30 37 94 6a 74 1f 00 00 4d 0b 04 4d 13 04 87 94 8c 15 50 72 6f 78 79 42 _error_407.jt...M..M......ProxyB
691e0 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 07 04 4d 13 04 87 94 8c 22 41 asicAuthHandler.j}...M..M....."A
69200 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f bstractDigestAuthHandler.__init_
69220 5f 94 6a 74 1f 00 00 4d 25 04 4d 2c 04 87 94 8c 2b 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 _.jt...M%.M,....+AbstractDigestA
69240 75 74 68 48 61 6e 64 6c 65 72 2e 72 65 73 65 74 5f 72 65 74 72 79 5f 63 6f 75 6e 74 94 6a 74 1f uthHandler.reset_retry_count.jt.
69260 00 00 4d 2e 04 4d 2f 04 87 94 8c 2f 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 ..M..M/..../AbstractDigestAuthHa
69280 6e 64 6c 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 94 6a 74 1f 00 ndler.http_error_auth_reqed.jt..
692a0 00 4d 31 04 4d 43 04 87 94 8c 30 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e .M1.MC....0AbstractDigestAuthHan
692c0 64 6c 65 72 2e 72 65 74 72 79 5f 68 74 74 70 5f 64 69 67 65 73 74 5f 61 75 74 68 94 6a 74 1f 00 dler.retry_http_digest_auth.jt..
692e0 00 4d 45 04 4d 4f 04 87 94 8c 24 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e .ME.MO....$AbstractDigestAuthHan
69300 64 6c 65 72 2e 67 65 74 5f 63 6e 6f 6e 63 65 94 6a 74 1f 00 00 4d 51 04 4d 5a 04 87 94 8c 2b 41 dler.get_cnonce.jt...MQ.MZ....+A
69320 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 67 65 74 5f 61 75 74 bstractDigestAuthHandler.get_aut
69340 68 6f 72 69 7a 61 74 69 6f 6e 94 6a 74 1f 00 00 4d 5c 04 4d 96 04 87 94 8c 2d 41 62 73 74 72 61 horization.jt...M\.M.....-Abstra
69360 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 67 65 74 5f 61 6c 67 6f 72 69 74 68 ctDigestAuthHandler.get_algorith
69380 6d 5f 69 6d 70 6c 73 94 6a 74 1f 00 00 4d 98 04 4d a3 04 87 94 8c 2b 41 62 73 74 72 61 63 74 44 m_impls.jt...M..M.....+AbstractD
693a0 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 67 65 74 5f 65 6e 74 69 74 79 5f 64 69 67 65 igestAuthHandler.get_entity_dige
693c0 73 74 94 6a 74 1f 00 00 4d a5 04 4d a7 04 87 94 8c 19 41 62 73 74 72 61 63 74 44 69 67 65 73 74 st.jt...M..M......AbstractDigest
693e0 41 75 74 68 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 1a 04 4d a7 04 87 94 8c 24 48 54 54 50 44 AuthHandler.j}...M..M.....$HTTPD
69400 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 31 94 igestAuthHandler.http_error_401.
69420 6a 74 1f 00 00 4d b4 04 4d b9 04 87 94 8c 15 48 54 54 50 44 69 67 65 73 74 41 75 74 68 48 61 6e jt...M..M......HTTPDigestAuthHan
69440 64 6c 65 72 94 6a 7d 1f 00 00 4d aa 04 4d b9 04 87 94 8c 25 50 72 6f 78 79 44 69 67 65 73 74 41 dler.j}...M..M.....%ProxyDigestA
69460 75 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 37 94 6a 74 1f 00 00 4d uthHandler.http_error_407.jt...M
69480 c1 04 4d c6 04 87 94 8c 16 50 72 6f 78 79 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 94 ..M......ProxyDigestAuthHandler.
694a0 6a 7d 1f 00 00 4d bc 04 4d c6 04 87 94 8c 1c 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c j}...M..M......AbstractHTTPHandl
694c0 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d ca 04 4d cb 04 87 94 8c 27 41 62 73 74 72 er.__init__.jt...M..M.....'Abstr
694e0 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 73 65 74 5f 68 74 74 70 5f 64 65 62 75 67 6c 65 76 actHTTPHandler.set_http_debuglev
69500 65 6c 94 6a 74 1f 00 00 4d cd 04 4d ce 04 87 94 8c 27 41 62 73 74 72 61 63 74 48 54 54 50 48 61 el.jt...M..M.....'AbstractHTTPHa
69520 6e 64 6c 65 72 2e 5f 67 65 74 5f 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 94 6a 74 1f 00 00 4d ndler._get_content_length.jt...M
69540 d0 04 4d d3 04 87 94 8c 1f 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 64 6f 5f ..M......AbstractHTTPHandler.do_
69560 72 65 71 75 65 73 74 5f 94 6a 74 1f 00 00 4d d5 04 4d f9 04 87 94 8c 1b 41 62 73 74 72 61 63 74 request_.jt...M..M......Abstract
69580 48 54 54 50 48 61 6e 64 6c 65 72 2e 64 6f 5f 6f 70 65 6e 94 6a 74 1f 00 00 4d fb 04 4d 3b 05 87 HTTPHandler.do_open.jt...M..M;..
695a0 94 8c 13 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d c8 04 4d ...AbstractHTTPHandler.j}...M..M
695c0 3b 05 87 94 8c 15 48 54 54 50 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 6f 70 65 6e 94 6a 74 1f 00 ;.....HTTPHandler.http_open.jt..
695e0 00 4d 40 05 4d 41 05 87 94 8c 0b 48 54 54 50 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 3e 05 4d .M@.MA.....HTTPHandler.j}...M>.M
69600 43 05 87 94 8c 15 48 54 54 50 53 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 C.....HTTPSHandler.__init__.jt..
69620 00 4d 49 05 4d 4c 05 87 94 8c 17 48 54 54 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 6f 70 .MI.ML.....HTTPSHandler.https_op
69640 65 6e 94 6a 74 1f 00 00 4d 4e 05 4d 50 05 87 94 8c 0c 48 54 54 50 53 48 61 6e 64 6c 65 72 94 6a en.jt...MN.MP.....HTTPSHandler.j
69660 7d 1f 00 00 4d 47 05 4d 52 05 87 94 8c 1c 48 54 54 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f }...MG.MR.....HTTPCookieProcesso
69680 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 57 05 4d 5b 05 87 94 8c 20 48 54 54 50 43 6f r.__init__.jt...MW.M[.....HTTPCo
696a0 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 2e 68 74 74 70 5f 72 65 71 75 65 73 74 94 6a 74 1f 00 00 okieProcessor.http_request.jt...
696c0 4d 5d 05 4d 5f 05 87 94 8c 21 48 54 54 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 2e 68 74 M].M_....!HTTPCookieProcessor.ht
696e0 74 70 5f 72 65 73 70 6f 6e 73 65 94 6a 74 1f 00 00 4d 61 05 4d 63 05 87 94 8c 13 48 54 54 50 43 tp_response.jt...Ma.Mc.....HTTPC
69700 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 94 6a 7d 1f 00 00 4d 56 05 4d 66 05 87 94 8c 1b 55 6e ookieProcessor.j}...MV.Mf.....Un
69720 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2e 75 6e 6b 6e 6f 77 6e 5f 6f 70 65 6e 94 6a 74 1f 00 00 4d knownHandler.unknown_open.jt...M
69740 69 05 4d 6b 05 87 94 8c 0e 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 68 05 i.Mk.....UnknownHandler.j}...Mh.
69760 4d 6b 05 87 94 8c 0f 70 61 72 73 65 5f 6b 65 71 76 5f 6c 69 73 74 94 6a 74 1f 00 00 4d 6d 05 4d Mk.....parse_keqv_list.jt...Mm.M
69780 75 05 87 94 8c 0f 70 61 72 73 65 5f 68 74 74 70 5f 6c 69 73 74 94 6a 74 1f 00 00 4d 77 05 4d a0 u.....parse_http_list.jt...Mw.M.
697a0 05 87 94 8c 15 46 69 6c 65 48 61 6e 64 6c 65 72 2e 66 69 6c 65 5f 6f 70 65 6e 94 6a 74 1f 00 00 .....FileHandler.file_open.jt...
697c0 4d a4 05 4d ab 05 87 94 8c 15 46 69 6c 65 48 61 6e 64 6c 65 72 2e 67 65 74 5f 6e 61 6d 65 73 94 M..M......FileHandler.get_names.
697e0 6a 74 1f 00 00 4d af 05 4d b7 05 87 94 8c 1b 46 69 6c 65 48 61 6e 64 6c 65 72 2e 6f 70 65 6e 5f jt...M..M......FileHandler.open_
69800 6c 6f 63 61 6c 5f 66 69 6c 65 94 6a 74 1f 00 00 4d ba 05 4d d3 05 87 94 8c 0b 46 69 6c 65 48 61 local_file.jt...M..M......FileHa
69820 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d a2 05 4d d3 05 87 94 8c 13 5f 73 61 66 65 5f 67 65 74 68 6f ndler.j}...M..M......_safe_getho
69840 73 74 62 79 6e 61 6d 65 94 6a 74 1f 00 00 4d d5 05 4d d9 05 87 94 8c 13 46 54 50 48 61 6e 64 6c stbyname.jt...M..M......FTPHandl
69860 65 72 2e 66 74 70 5f 6f 70 65 6e 94 6a 74 1f 00 00 4d dc 05 4d 0f 06 87 94 8c 16 46 54 50 48 61 er.ftp_open.jt...M..M......FTPHa
69880 6e 64 6c 65 72 2e 63 6f 6e 6e 65 63 74 5f 66 74 70 94 6a 74 1f 00 00 4d 11 06 4d 13 06 87 94 8c ndler.connect_ftp.jt...M..M.....
698a0 0a 46 54 50 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d db 05 4d 13 06 87 94 8c 18 43 61 63 68 65 .FTPHandler.j}...M..M......Cache
698c0 46 54 50 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 18 06 4d 1d 06 87 FTPHandler.__init__.jt...M..M...
698e0 94 8c 1a 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 73 65 74 54 69 6d 65 6f 75 74 94 6a 74 ...CacheFTPHandler.setTimeout.jt
69900 1f 00 00 4d 1f 06 4d 20 06 87 94 8c 1b 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 73 65 74 ...M..M......CacheFTPHandler.set
69920 4d 61 78 43 6f 6e 6e 73 94 6a 74 1f 00 00 4d 22 06 4d 23 06 87 94 8c 1b 43 61 63 68 65 46 54 50 MaxConns.jt...M".M#.....CacheFTP
69940 48 61 6e 64 6c 65 72 2e 63 6f 6e 6e 65 63 74 5f 66 74 70 94 6a 74 1f 00 00 4d 25 06 4d 2e 06 87 Handler.connect_ftp.jt...M%.M...
69960 94 8c 1b 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 63 68 65 63 6b 5f 63 61 63 68 65 94 6a ...CacheFTPHandler.check_cache.j
69980 74 1f 00 00 4d 30 06 4d 42 06 87 94 8c 1b 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 63 6c t...M0.MB.....CacheFTPHandler.cl
699a0 65 61 72 5f 63 61 63 68 65 94 6a 74 1f 00 00 4d 44 06 4d 48 06 87 94 8c 0f 43 61 63 68 65 46 54 ear_cache.jt...MD.MH.....CacheFT
699c0 50 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 15 06 4d 48 06 87 94 8c 15 44 61 74 61 48 61 6e 64 PHandler.j}...M..MH.....DataHand
699e0 6c 65 72 2e 64 61 74 61 5f 6f 70 65 6e 94 6a 74 1f 00 00 4d 4b 06 4d 66 06 87 94 8c 0b 44 61 74 ler.data_open.jt...MK.Mf.....Dat
69a00 61 48 61 6e 64 6c 65 72 94 6a 7d 1f 00 00 4d 4a 06 4d 66 06 87 94 8c 0c 75 72 6c 32 70 61 74 68 aHandler.j}...MJ.Mf.....url2path
69a20 6e 61 6d 65 94 6a 74 1f 00 00 4d 71 06 4d 74 06 87 94 8c 0c 70 61 74 68 6e 61 6d 65 32 75 72 6c name.jt...Mq.Mt.....pathname2url
69a40 94 6a 74 1f 00 00 4d 76 06 4d 79 06 87 94 8c 12 55 52 4c 6f 70 65 6e 65 72 2e 5f 5f 69 6e 69 74 .jt...Mv.My.....URLopener.__init
69a60 5f 5f 94 6a 74 1f 00 00 4d 8c 06 4d a0 06 87 94 8c 11 55 52 4c 6f 70 65 6e 65 72 2e 5f 5f 64 65 __.jt...M..M......URLopener.__de
69a80 6c 5f 5f 94 6a 74 1f 00 00 4d a6 06 4d a7 06 87 94 8c 0f 55 52 4c 6f 70 65 6e 65 72 2e 63 6c 6f l__.jt...M..M......URLopener.clo
69aa0 73 65 94 6a 74 1f 00 00 4d a9 06 4d aa 06 87 94 8c 11 55 52 4c 6f 70 65 6e 65 72 2e 63 6c 65 61 se.jt...M..M......URLopener.clea
69ac0 6e 75 70 94 6a 74 1f 00 00 4d ac 06 4d b8 06 87 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 61 64 64 nup.jt...M..M......URLopener.add
69ae0 68 65 61 64 65 72 94 6a 74 1f 00 00 4d ba 06 4d bd 06 87 94 8c 0e 55 52 4c 6f 70 65 6e 65 72 2e header.jt...M..M......URLopener.
69b00 6f 70 65 6e 94 6a 74 1f 00 00 4d c0 06 4d e2 06 87 94 8c 16 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 open.jt...M..M......URLopener.op
69b20 65 6e 5f 75 6e 6b 6e 6f 77 6e 94 6a 74 1f 00 00 4d e4 06 4d e7 06 87 94 8c 1c 55 52 4c 6f 70 65 en_unknown.jt...M..M......URLope
69b40 6e 65 72 2e 6f 70 65 6e 5f 75 6e 6b 6e 6f 77 6e 5f 70 72 6f 78 79 94 6a 74 1f 00 00 4d e9 06 4d ner.open_unknown_proxy.jt...M..M
69b60 ec 06 87 94 8c 12 55 52 4c 6f 70 65 6e 65 72 2e 72 65 74 72 69 65 76 65 94 6a 74 1f 00 00 4d ef ......URLopener.retrieve.jt...M.
69b80 06 4d 2c 07 87 94 8c 1c 55 52 4c 6f 70 65 6e 65 72 2e 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 5f .M,.....URLopener._open_generic_
69ba0 68 74 74 70 94 6a 74 1f 00 00 4d 30 07 4d 8a 07 87 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 http.jt...M0.M......URLopener.op
69bc0 65 6e 5f 68 74 74 70 94 6a 74 1f 00 00 4d 8c 07 4d 8e 07 87 94 8c 14 55 52 4c 6f 70 65 6e 65 72 en_http.jt...M..M......URLopener
69be0 2e 68 74 74 70 5f 65 72 72 6f 72 94 6a 74 1f 00 00 4d 90 07 4d 9e 07 87 94 8c 1c 55 52 4c 6f 70 .http_error.jt...M..M......URLop
69c00 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 65 66 61 75 6c 74 94 6a 74 1f 00 00 4d a0 07 ener.http_error_default.jt...M..
69c20 4d a3 07 87 94 8c 1b 55 52 4c 6f 70 65 6e 65 72 2e 5f 68 74 74 70 73 5f 63 6f 6e 6e 65 63 74 69 M......URLopener._https_connecti
69c40 6f 6e 94 6a 74 1f 00 00 4d a6 07 4d a9 07 87 94 8c 14 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e on.jt...M..M......URLopener.open
69c60 5f 68 74 74 70 73 94 6a 74 1f 00 00 4d ab 07 4d ad 07 87 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e _https.jt...M..M......URLopener.
69c80 6f 70 65 6e 5f 66 69 6c 65 94 6a 74 1f 00 00 4d af 07 4d b6 07 87 94 8c 19 55 52 4c 6f 70 65 6e open_file.jt...M..M......URLopen
69ca0 65 72 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 94 6a 74 1f 00 00 4d b8 07 4d d6 07 87 94 er.open_local_file.jt...M..M....
69cc0 8c 12 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 66 74 70 94 6a 74 1f 00 00 4d d8 07 4d 10 08 ..URLopener.open_ftp.jt...M..M..
69ce0 87 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 64 61 74 61 94 6a 74 1f 00 00 4d 12 08 ....URLopener.open_data.jt...M..
69d00 4d 39 08 87 94 8c 09 55 52 4c 6f 70 65 6e 65 72 94 6a 7d 1f 00 00 4d 7f 06 4d 39 08 87 94 8c 17 M9.....URLopener.j}...M..M9.....
69d20 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 3f 08 FancyURLopener.__init__.jt...M?.
69d40 4d 43 08 87 94 8c 21 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 MC....!FancyURLopener.http_error
69d60 5f 64 65 66 61 75 6c 74 94 6a 74 1f 00 00 4d 45 08 4d 47 08 87 94 8c 1d 46 61 6e 63 79 55 52 4c _default.jt...ME.MG.....FancyURL
69d80 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 94 6a 74 1f 00 00 4d 49 08 4d 59 opener.http_error_302.jt...MI.MY
69da0 08 87 94 8c 20 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 65 64 69 72 65 63 74 5f 69 6e 74 .....FancyURLopener.redirect_int
69dc0 65 72 6e 61 6c 94 6a 74 1f 00 00 4d 5b 08 4d 75 08 87 94 8c 1d 46 61 6e 63 79 55 52 4c 6f 70 65 ernal.jt...M[.Mu.....FancyURLope
69de0 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 31 94 6a 74 1f 00 00 4d 77 08 4d 79 08 87 94 ner.http_error_301.jt...Mw.My...
69e00 8c 1d 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 33 94 ..FancyURLopener.http_error_303.
69e20 6a 74 1f 00 00 4d 7b 08 4d 7d 08 87 94 8c 1d 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 68 74 jt...M{.M}.....FancyURLopener.ht
69e40 74 70 5f 65 72 72 6f 72 5f 33 30 37 94 6a 74 1f 00 00 4d 7f 08 4d 84 08 87 94 8c 1d 46 61 6e 63 tp_error_307.jt...M..M......Fanc
69e60 79 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 31 94 6a 74 1f 00 00 4d yURLopener.http_error_401.jt...M
69e80 86 08 4d 9d 08 87 94 8c 1d 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 ..M......FancyURLopener.http_err
69ea0 6f 72 5f 34 30 37 94 6a 74 1f 00 00 4d 9f 08 4d b6 08 87 94 8c 2a 46 61 6e 63 79 55 52 4c 6f 70 or_407.jt...M..M.....*FancyURLop
69ec0 65 6e 65 72 2e 72 65 74 72 79 5f 70 72 6f 78 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 ener.retry_proxy_http_basic_auth
69ee0 94 6a 74 1f 00 00 4d b8 08 4d c8 08 87 94 8c 2b 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 .jt...M..M.....+FancyURLopener.r
69f00 65 74 72 79 5f 70 72 6f 78 79 5f 68 74 74 70 73 5f 62 61 73 69 63 5f 61 75 74 68 94 6a 74 1f 00 etry_proxy_https_basic_auth.jt..
69f20 00 4d ca 08 4d da 08 87 94 8c 24 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 65 74 72 79 5f .M..M.....$FancyURLopener.retry_
69f40 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 94 6a 74 1f 00 00 4d dc 08 4d e8 08 87 94 8c 25 46 http_basic_auth.jt...M..M.....%F
69f60 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 65 74 72 79 5f 68 74 74 70 73 5f 62 61 73 69 63 5f ancyURLopener.retry_https_basic_
69f80 61 75 74 68 94 6a 74 1f 00 00 4d ea 08 4d f6 08 87 94 8c 1e 46 61 6e 63 79 55 52 4c 6f 70 65 6e auth.jt...M..M......FancyURLopen
69fa0 65 72 2e 67 65 74 5f 75 73 65 72 5f 70 61 73 73 77 64 94 6a 74 1f 00 00 4d f8 08 4d 01 09 87 94 er.get_user_passwd.jt...M..M....
69fc0 8c 21 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 70 72 6f 6d 70 74 5f 75 73 65 72 5f 70 61 73 .!FancyURLopener.prompt_user_pas
69fe0 73 77 64 94 6a 74 1f 00 00 4d 03 09 4d 0d 09 87 94 8c 0e 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 swd.jt...M..M......FancyURLopene
6a000 72 94 6a 7d 1f 00 00 4d 3c 08 4d 0d 09 87 94 8c 09 6c 6f 63 61 6c 68 6f 73 74 94 6a 74 1f 00 00 r.j}...M<.M......localhost.jt...
6a020 4d 13 09 4d 18 09 87 94 8c 08 74 68 69 73 68 6f 73 74 94 6a 74 1f 00 00 4d 1b 09 4d 23 09 87 94 M..M......thishost.jt...M..M#...
6a040 8c 09 66 74 70 65 72 72 6f 72 73 94 6a 74 1f 00 00 4d 26 09 4d 2c 09 87 94 8c 09 6e 6f 68 65 61 ..ftperrors.jt...M&.M,.....nohea
6a060 64 65 72 73 94 6a 74 1f 00 00 4d 2f 09 4d 34 09 87 94 8c 13 66 74 70 77 72 61 70 70 65 72 2e 5f ders.jt...M/.M4.....ftpwrapper._
6a080 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4d 3c 09 4d 4a 09 87 94 8c 0f 66 74 70 77 72 61 70 70 65 _init__.jt...M<.MJ.....ftpwrappe
6a0a0 72 2e 69 6e 69 74 94 6a 74 1f 00 00 4d 4c 09 4d 53 09 87 94 8c 13 66 74 70 77 72 61 70 70 65 72 r.init.jt...ML.MS.....ftpwrapper
6a0c0 2e 72 65 74 72 66 69 6c 65 94 6a 74 1f 00 00 4d 55 09 4d 80 09 87 94 8c 16 66 74 70 77 72 61 70 .retrfile.jt...MU.M......ftpwrap
6a0e0 70 65 72 2e 65 6e 64 74 72 61 6e 73 66 65 72 94 6a 74 1f 00 00 4d 82 09 4d 83 09 87 94 8c 10 66 per.endtransfer.jt...M..M......f
6a100 74 70 77 72 61 70 70 65 72 2e 63 6c 6f 73 65 94 6a 74 1f 00 00 4d 85 09 4d 88 09 87 94 8c 15 66 tpwrapper.close.jt...M..M......f
6a120 74 70 77 72 61 70 70 65 72 2e 66 69 6c 65 5f 63 6c 6f 73 65 94 6a 74 1f 00 00 4d 8a 09 4d 8e 09 tpwrapper.file_close.jt...M..M..
6a140 87 94 8c 15 66 74 70 77 72 61 70 70 65 72 2e 72 65 61 6c 5f 63 6c 6f 73 65 94 6a 74 1f 00 00 4d ....ftpwrapper.real_close.jt...M
6a160 90 09 4d 95 09 87 94 8c 0a 66 74 70 77 72 61 70 70 65 72 94 6a 7d 1f 00 00 4d 39 09 4d 95 09 87 ..M......ftpwrapper.j}...M9.M...
6a180 94 8c 16 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 94 6a 74 1f 00 00 4d ...getproxies_environment.jt...M
6a1a0 98 09 4d b5 09 87 94 8c 18 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e ..M......proxy_bypass_environmen
6a1c0 74 94 6a 74 1f 00 00 4d b7 09 4d d5 09 87 94 8c 1c 5f 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 6d t.jt...M..M......_proxy_bypass_m
6a1e0 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 94 6a 74 1f 00 00 4d da 09 4d 13 0a 87 94 8c 1b 70 72 6f acosx_sysconf.jt...M..M......pro
6a200 78 79 5f 62 79 70 61 73 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 94 6a 74 1f 00 00 4d 19 xy_bypass_macosx_sysconf.jt...M.
6a220 0a 4d 1b 0a 87 94 8c 19 67 65 74 70 72 6f 78 69 65 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e .M......getproxies_macosx_syscon
6a240 66 94 6a 74 1f 00 00 4d 1d 0a 4d 23 0a 87 94 8c 0c 70 72 6f 78 79 5f 62 79 70 61 73 73 94 6a 74 f.jt...M..M#.....proxy_bypass.jt
6a260 1f 00 00 4d a1 0a 4d ac 0a 87 94 8c 0a 67 65 74 70 72 6f 78 69 65 73 94 6a 74 1f 00 00 4d 66 0a ...M..M......getproxies.jt...Mf.
6a280 4d 6d 0a 87 94 8c 13 67 65 74 70 72 6f 78 69 65 73 5f 72 65 67 69 73 74 72 79 94 6a 74 1f 00 00 Mm.....getproxies_registry.jt...
6a2a0 4d 39 0a 4d 64 0a 87 94 8c 15 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 72 65 67 69 73 74 72 79 94 M9.Md.....proxy_bypass_registry.
6a2c0 6a 74 1f 00 00 4d 6f 0a 4d 9f 0a 87 94 75 7d 94 8c 12 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c jt...Mo.M....u}...M2Crypto.m2url
6a2e0 6c 69 62 32 94 74 94 8c 14 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 94 28 58 lib2.t...M2Crypto.m2xmlrpclib.(X
6a300 4e 09 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c N...from.__future__.import.absol
6a320 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 65 6e 68 61 6e 63 65 6d ute_import.."""M2Crypto.enhancem
6a340 65 6e 74 20 74 6f 20 78 6d 6c 72 70 63 6c 69 62 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 ent.to.xmlrpclib...Copyright.(c)
6a360 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 .1999-2003.Ng.Pheng.Siong..All.r
6a380 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 62 61 73 65 36 ights.reserved."""..import.base6
6a3a0 34 0a 0a 69 6d 70 6f 72 74 20 4d 32 43 72 79 70 74 6f 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 4..import.M2Crypto..from.M2Crypt
6a3c0 6f 20 69 6d 70 6f 72 74 20 53 53 4c 2c 20 68 74 74 70 73 6c 69 62 2c 20 6d 32 75 72 6c 6c 69 62 o.import.SSL,.httpslib,.m2urllib
6a3e0 2c 20 73 69 78 2c 20 75 74 69 6c 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 ,.six,.util.if.util.py27plus:...
6a400 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 41 6e 79 53 74 72 ..from.typing.import.Any,.AnyStr
6a420 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 66 72 ,.Callable,.Optional..#.noqa..fr
6a440 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 78 6d 6c 72 70 63 5f 63 6c 69 om.M2Crypto.six.moves.xmlrpc_cli
6a460 65 6e 74 20 69 6d 70 6f 72 74 20 50 72 6f 74 6f 63 6f 6c 45 72 72 6f 72 2c 20 54 72 61 6e 73 70 ent.import.ProtocolError,.Transp
6a480 6f 72 74 0a 23 20 73 69 78 2e 6d 6f 76 65 73 20 64 6f 65 73 6e 27 74 20 73 75 70 70 6f 72 74 20 ort.#.six.moves.doesn't.support.
6a4a0 73 74 61 72 20 69 6d 70 6f 72 74 73 0a 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 66 72 6f star.imports.if.six.PY3:.....fro
6a4c0 6d 20 78 6d 6c 72 70 63 2e 63 6c 69 65 6e 74 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 m.xmlrpc.client.import.*..#.noqa
6a4e0 0a 65 6c 73 65 3a 0a 20 20 20 20 66 72 6f 6d 20 78 6d 6c 72 70 63 6c 69 62 20 69 6d 70 6f 72 74 .else:.....from.xmlrpclib.import
6a500 20 2a 20 20 23 20 6e 6f 71 61 0a 0a 5f 5f 76 65 72 73 69 6f 6e 5f 5f 20 3d 20 4d 32 43 72 79 70 .*..#.noqa..__version__.=.M2Cryp
6a520 74 6f 2e 5f 5f 76 65 72 73 69 6f 6e 5f 5f 0a 0a 0a 63 6c 61 73 73 20 53 53 4c 5f 54 72 61 6e 73 to.__version__...class.SSL_Trans
6a540 70 6f 72 74 28 54 72 61 6e 73 70 6f 72 74 29 3a 0a 0a 20 20 20 20 75 73 65 72 5f 61 67 65 6e 74 port(Transport):......user_agent
6a560 20 3d 20 22 4d 32 43 72 79 70 74 6f 5f 58 4d 4c 52 50 43 2f 25 73 20 2d 20 25 73 22 20 25 20 28 .=."M2Crypto_XMLRPC/%s.-.%s".%.(
6a580 5f 5f 76 65 72 73 69 6f 6e 5f 5f 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 __version__,....................
6a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 6e 73 ...........................Trans
6a5c0 70 6f 72 74 2e 75 73 65 72 5f 61 67 65 6e 74 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 port.user_agent)......def.__init
6a5e0 5f 5f 28 73 65 6c 66 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 2c 20 2a 61 72 67 73 __(self,.ssl_context=None,.*args
6a600 2c 20 2a 2a 6b 77 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e ,.**kw):.........#.type:.(Option
6a620 61 6c 5b 53 53 4c 2e 43 6f 6e 74 65 78 74 5d 2c 20 2a 41 6e 79 2c 20 2a 2a 41 6e 79 29 20 2d 3e al[SSL.Context],.*Any,.**Any).->
6a640 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 54 72 61 6e 73 70 6f 72 74 2e 5f 5f 69 6e 69 74 5f 5f .None.........Transport.__init__
6a660 28 73 65 6c 66 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 (self,.*args,.**kw).........if.s
6a680 73 6c 5f 63 6f 6e 74 65 78 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 sl_context.is.None:.............
6a6a0 73 65 6c 66 2e 73 73 6c 5f 63 74 78 20 3d 20 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 20 20 20 self.ssl_ctx.=.SSL.Context()....
6a6c0 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 5f .....else:.............self.ssl_
6a6e0 63 74 78 20 3d 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 0a 20 20 20 20 64 65 66 20 72 65 71 75 65 ctx.=.ssl_context......def.reque
6a700 73 74 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 68 61 6e 64 6c 65 72 2c 20 72 65 71 75 65 73 74 5f st(self,.host,.handler,.request_
6a720 62 6f 64 79 2c 20 76 65 72 62 6f 73 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 body,.verbose=0):.........#.type
6a740 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 62 79 74 65 73 2c 20 69 6e 74 29 :.(AnyStr,.Callable,.bytes,.int)
6a760 20 2d 3e 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 23 20 48 61 6e 64 6c 65 20 75 73 65 72 .->.object.........#.Handle.user
6a780 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 77 6f 72 64 2e 0a 20 20 20 20 20 20 20 20 75 73 65 72 5f name.and.password..........user_
6a7a0 70 61 73 73 77 64 2c 20 68 6f 73 74 5f 70 6f 72 74 20 3d 20 6d 32 75 72 6c 6c 69 62 2e 73 70 6c passwd,.host_port.=.m2urllib.spl
6a7c0 69 74 75 73 65 72 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 5f 68 6f 73 74 2c 20 5f 70 6f 72 ituser(host)........._host,._por
6a7e0 74 20 3d 20 6d 32 75 72 6c 6c 69 62 2e 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 5f 70 6f 72 74 t.=.m2urllib.splitport(host_port
6a800 29 0a 20 20 20 20 20 20 20 20 68 20 3d 20 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e ).........h.=.httpslib.HTTPSConn
6a820 65 63 74 69 6f 6e 28 5f 68 6f 73 74 2c 20 69 6e 74 28 5f 70 6f 72 74 29 2c 0a 20 20 20 20 20 20 ection(_host,.int(_port),.......
6a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 ...............................s
6a860 73 6c 5f 63 6f 6e 74 65 78 74 3d 73 65 6c 66 2e 73 73 6c 5f 63 74 78 29 0a 20 20 20 20 20 20 20 sl_context=self.ssl_ctx)........
6a880 20 69 66 20 76 65 72 62 6f 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 73 65 74 5f 64 .if.verbose:.............h.set_d
6a8a0 65 62 75 67 6c 65 76 65 6c 28 31 29 0a 0a 20 20 20 20 20 20 20 20 23 20 57 68 61 74 20 66 6f 6c ebuglevel(1)..........#.What.fol
6a8c0 6c 6f 77 73 20 69 73 20 61 73 20 69 6e 20 78 6d 6c 72 70 63 6c 69 62 2e 54 72 61 6e 73 70 6f 72 lows.is.as.in.xmlrpclib.Transpor
6a8e0 74 2e 20 28 45 78 63 65 70 74 20 74 68 65 20 61 75 74 68 7a 20 62 69 74 2e 29 0a 20 20 20 20 20 t..(Except.the.authz.bit.)......
6a900 20 20 20 68 2e 70 75 74 72 65 71 75 65 73 74 28 22 50 4f 53 54 22 2c 20 68 61 6e 64 6c 65 72 29 ...h.putrequest("POST",.handler)
6a920 0a 0a 20 20 20 20 20 20 20 20 23 20 72 65 71 75 69 72 65 64 20 62 79 20 48 54 54 50 2f 31 2e 31 ..........#.required.by.HTTP/1.1
6a940 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 22 48 6f 73 74 22 2c 20 5f 68 6f .........h.putheader("Host",._ho
6a960 73 74 29 0a 0a 20 20 20 20 20 20 20 20 23 20 72 65 71 75 69 72 65 64 20 62 79 20 58 4d 4c 2d 52 st)..........#.required.by.XML-R
6a980 50 43 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 22 55 73 65 72 2d 41 67 65 PC.........h.putheader("User-Age
6a9a0 6e 74 22 2c 20 73 65 6c 66 2e 75 73 65 72 5f 61 67 65 6e 74 29 0a 20 20 20 20 20 20 20 20 68 2e nt",.self.user_agent).........h.
6a9c0 70 75 74 68 65 61 64 65 72 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 2c 20 22 74 65 78 74 2f putheader("Content-Type",."text/
6a9e0 78 6d 6c 22 29 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 22 43 6f 6e 74 65 xml").........h.putheader("Conte
6aa00 6e 74 2d 4c 65 6e 67 74 68 22 2c 20 73 74 72 28 6c 65 6e 28 72 65 71 75 65 73 74 5f 62 6f 64 79 nt-Length",.str(len(request_body
6aa20 29 29 29 0a 0a 20 20 20 20 20 20 20 20 23 20 41 75 74 68 6f 72 69 73 61 74 69 6f 6e 2e 0a 20 20 )))..........#.Authorisation....
6aa40 20 20 20 20 20 20 69 66 20 75 73 65 72 5f 70 61 73 73 77 64 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 ......if.user_passwd.is.not.None
6aa60 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 62 61 73 65 36 34 2e 65 6e 63 6f :.............auth.=.base64.enco
6aa80 64 65 73 74 72 69 6e 67 28 75 73 65 72 5f 70 61 73 73 77 64 29 2e 73 74 72 69 70 28 29 0a 20 20 destring(user_passwd).strip()...
6aaa0 20 20 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 27 41 75 74 68 6f 72 69 7a 61 ..........h.putheader('Authoriza
6aac0 74 69 6f 6e 27 2c 20 27 42 61 73 69 63 20 25 73 27 20 25 20 61 75 74 68 29 0a 0a 20 20 20 20 20 tion',.'Basic.%s'.%.auth).......
6aae0 20 20 20 68 2e 65 6e 64 68 65 61 64 65 72 73 28 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 ...h.endheaders()..........if.re
6ab00 71 75 65 73 74 5f 62 6f 64 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 73 65 6e 64 28 72 quest_body:.............h.send(r
6ab20 65 71 75 65 73 74 5f 62 6f 64 79 29 0a 0a 20 20 20 20 20 20 20 20 65 72 72 63 6f 64 65 2c 20 65 equest_body)..........errcode,.e
6ab40 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 20 3d 20 68 2e 67 65 74 72 65 70 6c 79 28 29 0a 0a 20 rrmsg,.headers.=.h.getreply()...
6ab60 20 20 20 20 20 20 20 69 66 20 65 72 72 63 6f 64 65 20 21 3d 20 32 30 30 3a 0a 20 20 20 20 20 20 .......if.errcode.!=.200:.......
6ab80 20 20 20 20 20 20 72 61 69 73 65 20 50 72 6f 74 6f 63 6f 6c 45 72 72 6f 72 28 0a 20 20 20 20 20 ......raise.ProtocolError(......
6aba0 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 2b 20 68 61 6e 64 6c 65 72 2c 0a 20 20 20 20 20 ...........host.+.handler,......
6abc0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d 73 67 2c 0a 20 20 20 20 ...........errcode,.errmsg,.....
6abe0 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 ............headers.............
6ac00 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 65 72 62 6f 73 65 20 3d 20 76 65 72 62 6f 73 )..........self.verbose.=.verbos
6ac20 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 61 72 73 65 5f 72 65 73 70 e.........return.self.parse_resp
6ac40 6f 6e 73 65 28 68 2e 67 65 74 66 69 6c 65 28 29 29 0a 94 7d 94 28 8c 16 53 53 4c 5f 54 72 61 6e onse(h.getfile())..}.(..SSL_Tran
6ac60 73 70 6f 72 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 1e 4b 24 87 94 8c 15 53 53 4c 5f sport.__init__.jt...K.K$....SSL_
6ac80 54 72 61 6e 73 70 6f 72 74 2e 72 65 71 75 65 73 74 94 6a 74 1f 00 00 4b 26 4b 4f 87 94 8c 0d 53 Transport.request.jt...K&KO....S
6aca0 53 4c 5f 54 72 61 6e 73 70 6f 72 74 94 6a 7d 1f 00 00 4b 19 4b 4f 87 94 75 7d 94 28 8c 0d 53 53 SL_Transport.j}...K.KO..u}.(..SS
6acc0 4c 5f 54 72 61 6e 73 70 6f 72 74 94 6a 53 02 00 00 8c 15 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 L_Transport.jS.....SSL_Transport
6ace0 2e 72 65 71 75 65 73 74 94 6a 53 02 00 00 75 8c 14 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 .request.jS...u..M2Crypto.m2xmlr
6ad00 70 63 6c 69 62 94 74 94 8c 12 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 94 28 58 bf pclib.t...M2Crypto.threading.(X.
6ad20 01 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 ...from.__future__.import.absolu
6ad40 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 0a 4d 32 43 72 79 70 74 6f 20 74 68 72 65 61 64 69 6e te_import..""".M2Crypto.threadin
6ad60 67 20 73 75 70 70 6f 72 74 2c 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 6d 75 6c 74 69 74 68 72 g.support,.required.for.multithr
6ad80 65 61 64 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 eaded.applications...Copyright.(
6ada0 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c c).1999-2003.Ng.Pheng.Siong..All
6adc0 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 23 20 4d 32 43 72 79 70 74 6f .rights.reserved."""..#.M2Crypto
6ade0 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 6d 32 0a 0a 0a 64 65 66 20 69 .from.M2Crypto.import.m2...def.i
6ae00 6e 69 74 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 nit():.....#.type:.().->.None...
6ae20 20 20 22 22 22 0a 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 72 65 61 64 69 6e 67 20 73 ..""".....Initialize.threading.s
6ae40 75 70 70 6f 72 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 6d 32 2e 74 68 72 65 61 64 69 6e 67 upport......""".....m2.threading
6ae60 5f 69 6e 69 74 28 29 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 75 70 28 29 3a 0a 20 20 20 20 23 20 74 _init()...def.cleanup():.....#.t
6ae80 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 0a 20 20 20 20 45 6e 64 20 ype:.().->.None.....""".....End.
6aea0 61 6e 64 20 63 6c 65 61 6e 75 70 20 74 68 72 65 61 64 69 6e 67 20 73 75 70 70 6f 72 74 2e 0a 20 and.cleanup.threading.support...
6aec0 20 20 20 22 22 22 0a 20 20 20 20 6d 32 2e 74 68 72 65 61 64 69 6e 67 5f 63 6c 65 61 6e 75 70 28 ...""".....m2.threading_cleanup(
6aee0 29 0a 94 7d 94 28 8c 04 69 6e 69 74 94 6a 74 1f 00 00 4b 0c 4b 11 87 94 8c 07 63 6c 65 61 6e 75 )..}.(..init.jt...K.K.....cleanu
6af00 70 94 6a 74 1f 00 00 4b 14 4b 19 87 94 75 7d 94 28 8c 07 63 6c 65 61 6e 75 70 94 6a 53 02 00 00 p.jt...K.K...u}.(..cleanup.jS...
6af20 8c 04 69 6e 69 74 94 6a 53 02 00 00 75 8c 12 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e ..init.jS...u..M2Crypto.threadin
6af40 67 94 74 94 8c 0d 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 94 28 58 fd 07 00 00 66 72 6f 6d 20 5f g.t...M2Crypto.util.(X....from._
6af60 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 _future__.import.absolute_import
6af80 0a 22 22 22 0a 20 20 20 20 4d 32 43 72 79 70 74 6f 20 75 74 69 6c 69 74 79 20 72 6f 75 74 69 6e .""".....M2Crypto.utility.routin
6afa0 65 73 2e 0a 0a 20 20 20 20 4e 4f 54 48 49 4e 47 20 49 4e 20 54 48 49 53 20 4d 4f 44 55 4c 45 20 es.......NOTHING.IN.THIS.MODULE.
6afc0 49 53 20 47 55 41 52 41 4e 54 45 45 44 20 54 4f 20 42 45 20 53 54 41 42 4c 45 2c 20 55 53 45 44 IS.GUARANTEED.TO.BE.STABLE,.USED
6afe0 20 4f 4e 4c 59 20 46 4f 52 0a 20 20 20 20 49 4e 54 45 52 4e 41 4c 20 50 55 52 50 4f 53 45 53 20 .ONLY.FOR.....INTERNAL.PURPOSES.
6b000 4f 46 20 4d 32 43 52 59 50 54 4f 2e 0a 0a 20 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 OF.M2CRYPTO.......Copyright.(c).
6b020 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 1999-2004.Ng.Pheng.Siong..All.ri
6b040 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 20 20 20 20 50 6f 72 74 69 6f 6e 73 20 63 72 65 ghts.reserved.......Portions.cre
6b060 61 74 65 64 20 62 79 20 4f 70 65 6e 20 53 6f 75 72 63 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 ated.by.Open.Source.Applications
6b080 20 46 6f 75 6e 64 61 74 69 6f 6e 20 28 4f 53 41 46 29 20 61 72 65 0a 20 20 20 20 43 6f 70 79 72 .Foundation.(OSAF).are.....Copyr
6b0a0 69 67 68 74 20 28 43 29 20 32 30 30 34 20 4f 53 41 46 2e 20 41 6c 6c 20 52 69 67 68 74 73 20 52 ight.(C).2004.OSAF..All.Rights.R
6b0c0 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 62 69 6e 61 73 63 69 69 0a 69 6d eserved.."""..import.binascii.im
6b0e0 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 69 6d 70 6f 72 74 20 73 79 73 0a 0a 66 72 6f 6d 20 4d 32 port.logging.import.sys..from.M2
6b100 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 2c 20 73 69 78 0a Crypto.import.m2,.py27plus,.six.
6b120 69 66 20 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 if.py27plus:.....from.typing.imp
6b140 6f 72 74 20 41 6e 79 2c 20 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 ort.Any,.AnyStr,.Optional,.Tuple
6b160 2c 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 20 20 20 20 23 20 73 65 65 20 68 74 74 70 73 3a ,.Union..#.noqa.....#.see.https:
6b180 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 79 74 68 6f 6e 2f 74 79 70 65 73 68 65 64 2f 69 73 73 //github.com/python/typeshed/iss
6b1a0 75 65 73 2f 32 32 32 0a 20 20 20 20 41 64 64 72 54 79 70 65 20 3d 20 55 6e 69 6f 6e 5b 54 75 70 ues/222.....AddrType.=.Union[Tup
6b1c0 6c 65 5b 73 74 72 2c 20 69 6e 74 5d 2c 20 73 74 72 5d 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e le[str,.int],.str]..log.=.loggin
6b1e0 67 2e 67 65 74 4c 6f 67 67 65 72 28 27 75 74 69 6c 27 29 0a 0a 0a 63 6c 61 73 73 20 55 74 69 6c g.getLogger('util')...class.Util
6b200 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 75 Error(Exception):.....pass..m2.u
6b220 74 69 6c 5f 69 6e 69 74 28 55 74 69 6c 45 72 72 6f 72 29 0a 0a 0a 64 65 66 20 70 6b 63 73 35 5f til_init(UtilError)...def.pkcs5_
6b240 70 61 64 28 64 61 74 61 2c 20 62 6c 6b 6c 65 6e 3d 38 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a pad(data,.blklen=8):.....#.type:
6b260 20 28 73 74 72 2c 20 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 70 61 64 20 3d 20 28 38 20 .(str,.int).->.str.....pad.=.(8.
6b280 2d 20 28 6c 65 6e 28 64 61 74 61 29 20 25 20 38 29 29 0a 20 20 20 20 72 65 74 75 72 6e 20 64 61 -.(len(data).%.8)).....return.da
6b2a0 74 61 20 2b 20 63 68 72 28 70 61 64 29 20 2a 20 70 61 64 0a 0a 0a 64 65 66 20 70 6b 63 73 37 5f ta.+.chr(pad).*.pad...def.pkcs7_
6b2c0 70 61 64 28 64 61 74 61 2c 20 62 6c 6b 6c 65 6e 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 pad(data,.blklen):.....#.type:.(
6b2e0 73 74 72 2c 20 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 69 66 20 62 6c 6b 6c 65 6e 20 3e str,.int).->.str.....if.blklen.>
6b300 20 32 35 35 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 .255:.........raise.ValueError('
6b320 69 6c 6c 65 67 61 6c 20 62 6c 6f 63 6b 20 73 69 7a 65 27 29 0a 20 20 20 20 70 61 64 20 3d 20 28 illegal.block.size').....pad.=.(
6b340 62 6c 6b 6c 65 6e 20 2d 20 28 6c 65 6e 28 64 61 74 61 29 20 25 20 62 6c 6b 6c 65 6e 29 29 0a 20 blklen.-.(len(data).%.blklen))..
6b360 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 20 2b 20 63 68 72 28 70 61 64 29 20 2a 20 70 61 64 0a ...return.data.+.chr(pad).*.pad.
6b380 0a 0a 64 65 66 20 62 69 6e 5f 74 6f 5f 68 65 78 28 62 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a ..def.bin_to_hex(b):.....#.type:
6b3a0 20 28 62 79 74 65 73 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 .(bytes).->.str.....return.six.e
6b3c0 6e 73 75 72 65 5f 74 65 78 74 28 62 69 6e 61 73 63 69 69 2e 62 32 61 5f 62 61 73 65 36 34 28 62 nsure_text(binascii.b2a_base64(b
6b3e0 29 5b 3a 2d 31 5d 29 0a 0a 0a 64 65 66 20 6f 63 74 78 5f 74 6f 5f 6e 75 6d 28 78 29 3a 0a 20 20 )[:-1])...def.octx_to_num(x):...
6b400 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 72 65 74 ..#.type:.(bytes).->.int.....ret
6b420 75 72 6e 20 69 6e 74 28 62 69 6e 61 73 63 69 69 2e 68 65 78 6c 69 66 79 28 78 29 2c 20 31 36 29 urn.int(binascii.hexlify(x),.16)
6b440 0a 0a 0a 64 65 66 20 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 28 70 2c 20 6e 2c 20 6f ...def.genparam_callback(p,.n,.o
6b460 75 74 3d 73 79 73 2e 73 74 64 6f 75 74 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 ut=sys.stdout):.....#.type:.(int
6b480 2c 20 41 6e 79 2c 20 66 69 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 63 68 20 3d 20 5b 27 ,.Any,.file).->.None.....ch.=.['
6b4a0 2e 27 2c 20 27 2b 27 2c 20 27 2a 27 2c 20 27 5c 6e 27 5d 0a 20 20 20 20 6f 75 74 2e 77 72 69 74 .',.'+',.'*',.'\n'].....out.writ
6b4c0 65 28 63 68 5b 70 5d 29 0a 20 20 20 20 6f 75 74 2e 66 6c 75 73 68 28 29 0a 0a 0a 64 65 66 20 71 e(ch[p]).....out.flush()...def.q
6b4e0 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 28 70 2c 20 6e 2c 20 6f 75 74 uiet_genparam_callback(p,.n,.out
6b500 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 2c 20 41 6e 79 2c 20 41 6e 79 29 20 2d ):.....#.type:.(Any,.Any,.Any).-
6b520 3e 20 4e 6f 6e 65 0a 20 20 20 20 70 61 73 73 0a 0a 0a 64 65 66 20 70 61 73 73 70 68 72 61 73 65 >.None.....pass...def.passphrase
6b540 5f 63 61 6c 6c 62 61 63 6b 28 76 2c 20 70 72 6f 6d 70 74 31 3d 27 45 6e 74 65 72 20 70 61 73 73 _callback(v,.prompt1='Enter.pass
6b560 70 68 72 61 73 65 3a 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 phrase:',.......................
6b580 20 20 70 72 6f 6d 70 74 32 3d 27 56 65 72 69 66 79 20 70 61 73 73 70 68 72 61 73 65 3a 27 29 3a ..prompt2='Verify.passphrase:'):
6b5a0 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 6f 6f 6c 2c 20 73 74 72 2c 20 73 74 72 29 20 2d 3e .....#.type:.(bool,.str,.str).->
6b5c0 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 0a 20 20 20 20 66 72 6f 6d 20 67 65 74 70 61 73 73 20 .Optional[str].....from.getpass.
6b5e0 69 6d 70 6f 72 74 20 67 65 74 70 61 73 73 0a 20 20 20 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 import.getpass.....while.1:.....
6b600 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 31 20 3d 20 67 65 74 70 61 73 ....try:.............p1.=.getpas
6b620 73 28 70 72 6f 6d 70 74 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 3a 0a 20 20 20 s(prompt1).............if.v:....
6b640 20 20 20 20 20 20 20 20 20 20 20 20 20 70 32 20 3d 20 67 65 74 70 61 73 73 28 70 72 6f 6d 70 74 .............p2.=.getpass(prompt
6b660 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 31 20 3d 3d 20 70 32 3a 0a 2).................if.p1.==.p2:.
6b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 ....................break.......
6b6a0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 ......else:.................brea
6b6c0 6b 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 62 6f 61 72 64 49 6e 74 65 72 72 75 k.........except.KeyboardInterru
6b6e0 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 pt:.............return.None.....
6b700 72 65 74 75 72 6e 20 70 31 0a 0a 0a 64 65 66 20 6e 6f 5f 70 61 73 73 70 68 72 61 73 65 5f 63 61 return.p1...def.no_passphrase_ca
6b720 6c 6c 62 61 63 6b 28 2a 61 72 67 73 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 2a 41 6e 79 llback(*args):.....#.type:.(*Any
6b740 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 72 6e 20 27 27 0a 94 7d 94 28 8c 09 55 74 69 ).->.str.....return.''..}.(..Uti
6b760 6c 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 1b 4b 1c 87 94 8c 09 70 6b 63 73 35 5f 70 61 64 94 6a 74 lError.j}...K.K.....pkcs5_pad.jt
6b780 1f 00 00 4b 21 4b 24 87 94 8c 09 70 6b 63 73 37 5f 70 61 64 94 6a 74 1f 00 00 4b 27 4b 2c 87 94 ...K!K$....pkcs7_pad.jt...K'K,..
6b7a0 8c 0a 62 69 6e 5f 74 6f 5f 68 65 78 94 6a 74 1f 00 00 4b 2f 4b 31 87 94 8c 0b 6f 63 74 78 5f 74 ..bin_to_hex.jt...K/K1....octx_t
6b7c0 6f 5f 6e 75 6d 94 6a 74 1f 00 00 4b 34 4b 36 87 94 8c 11 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c o_num.jt...K4K6....genparam_call
6b7e0 62 61 63 6b 94 6a 74 1f 00 00 4b 39 4b 3d 87 94 8c 17 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d back.jt...K9K=....quiet_genparam
6b800 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4b 40 4b 42 87 94 8c 13 70 61 73 73 70 68 72 61 73 _callback.jt...K@KB....passphras
6b820 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4b 45 4b 54 87 94 8c 16 6e 6f 5f 70 61 73 73 70 e_callback.jt...KEKT....no_passp
6b840 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4b 57 4b 59 87 94 75 7d 94 28 8c 09 hrase_callback.jt...KWKY..u}.(..
6b860 55 74 69 6c 45 72 72 6f 72 94 6a 53 02 00 00 8c 0a 62 69 6e 5f 74 6f 5f 68 65 78 94 6a 53 02 00 UtilError.jS.....bin_to_hex.jS..
6b880 00 8c 11 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 8c 16 6e 6f 5f 70 ...genparam_callback.jS.....no_p
6b8a0 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 53 02 00 00 8c 0b 6f 63 74 78 5f 74 assphrase_callback.jS.....octx_t
6b8c0 6f 5f 6e 75 6d 94 6a 53 02 00 00 8c 13 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b o_num.jS.....passphrase_callback
6b8e0 94 6a 53 02 00 00 8c 09 70 6b 63 73 35 5f 70 61 64 94 6a 53 02 00 00 8c 09 70 6b 63 73 37 5f 70 .jS.....pkcs5_pad.jS.....pkcs7_p
6b900 61 64 94 6a 53 02 00 00 8c 17 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 ad.jS.....quiet_genparam_callbac
6b920 6b 94 6a 53 02 00 00 75 8c 0d 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 94 74 94 8c 0c 4d 32 43 72 k.jS...u..M2Crypto.util.t...M2Cr
6b940 79 70 74 6f 2e 53 53 4c 94 28 58 aa 04 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 ypto.SSL.(X....from.__future__.i
6b960 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 4d 32 43 72 79 70 mport.absolute_import.."""M2Cryp
6b980 74 6f 20 53 53 4c 20 73 65 72 76 69 63 65 73 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 to.SSL.services...Copyright.(c).
6b9a0 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 1999-2004.Ng.Pheng.Siong..All.ri
6b9c0 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 ghts.reserved."""..import.socket
6b9e0 2c 20 6f 73 0a 0a 23 20 4d 32 43 72 79 70 74 6f 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 ,.os..#.M2Crypto.from.M2Crypto.i
6ba00 6d 70 6f 72 74 20 5f 6d 32 63 72 79 70 74 6f 20 61 73 20 6d 32 0a 0a 0a 63 6c 61 73 73 20 53 53 mport._m2crypto.as.m2...class.SS
6ba20 4c 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 63 6c LError(Exception):.....pass...cl
6ba40 61 73 73 20 53 53 4c 54 69 6d 65 6f 75 74 45 72 72 6f 72 28 53 53 4c 45 72 72 6f 72 2c 20 73 6f ass.SSLTimeoutError(SSLError,.so
6ba60 63 6b 65 74 2e 74 69 6d 65 6f 75 74 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 73 73 6c 5f cket.timeout):.....pass..m2.ssl_
6ba80 69 6e 69 74 28 53 53 4c 45 72 72 6f 72 2c 20 53 53 4c 54 69 6d 65 6f 75 74 45 72 72 6f 72 29 0a init(SSLError,.SSLTimeoutError).
6baa0 0a 23 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 .#.M2Crypto.SSL.from.M2Crypto.SS
6bac0 4c 2e 43 69 70 68 65 72 20 69 6d 70 6f 72 74 20 43 69 70 68 65 72 2c 20 43 69 70 68 65 72 5f 53 L.Cipher.import.Cipher,.Cipher_S
6bae0 74 61 63 6b 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f tack.from.M2Crypto.SSL.Connectio
6bb00 6e 20 69 6d 70 6f 72 74 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 n.import.Connection.from.M2Crypt
6bb20 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 20 69 6d 70 6f 72 74 20 43 6f 6e 74 65 78 74 0a 66 72 6f o.SSL.Context.import.Context.fro
6bb40 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 20 69 6d 70 6f 72 74 20 m.M2Crypto.SSL.SSLServer.import.
6bb60 53 53 4c 53 65 72 76 65 72 2c 20 54 68 72 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 0a 69 66 SSLServer,.ThreadingSSLServer.if
6bb80 20 6f 73 2e 6e 61 6d 65 20 21 3d 20 27 6e 74 27 3a 0a 20 20 20 20 66 72 6f 6d 20 4d 32 43 72 79 .os.name.!=.'nt':.....from.M2Cry
6bba0 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 20 69 6d 70 6f 72 74 20 46 6f 72 6b 69 6e 67 pto.SSL.SSLServer.import.Forking
6bbc0 53 53 4c 53 65 72 76 65 72 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f SSLServer.from.M2Crypto.SSL.ssl_
6bbe0 64 69 73 70 61 74 63 68 65 72 20 69 6d 70 6f 72 74 20 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 dispatcher.import.ssl_dispatcher
6bc00 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 20 69 6d 70 6f 72 .from.M2Crypto.SSL.timeout.impor
6bc20 74 20 74 69 6d 65 6f 75 74 2c 20 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 2c 20 73 74 t.timeout,.struct_to_timeout,.st
6bc40 72 75 63 74 5f 73 69 7a 65 0a 0a 76 65 72 69 66 79 5f 6e 6f 6e 65 20 3d 20 6d 32 2e 53 53 4c 5f ruct_size..verify_none.=.m2.SSL_
6bc60 56 45 52 49 46 59 5f 4e 4f 4e 45 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 76 65 72 69 66 79 5f VERIFY_NONE..#.type:.int.verify_
6bc80 70 65 65 72 20 3d 20 6d 32 2e 53 53 4c 5f 56 45 52 49 46 59 5f 50 45 45 52 20 20 23 20 74 79 70 peer.=.m2.SSL_VERIFY_PEER..#.typ
6bca0 65 3a 20 69 6e 74 0a 76 65 72 69 66 79 5f 66 61 69 6c 5f 69 66 5f 6e 6f 5f 70 65 65 72 5f 63 65 e:.int.verify_fail_if_no_peer_ce
6bcc0 72 74 20 3d 20 6d 32 2e 53 53 4c 5f 56 45 52 49 46 59 5f 46 41 49 4c 5f 49 46 5f 4e 4f 5f 50 45 rt.=.m2.SSL_VERIFY_FAIL_IF_NO_PE
6bce0 45 52 5f 43 45 52 54 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 76 65 72 69 66 79 5f 63 6c 69 65 ER_CERT..#.type:.int.verify_clie
6bd00 6e 74 5f 6f 6e 63 65 20 3d 20 6d 32 2e 53 53 4c 5f 56 45 52 49 46 59 5f 43 4c 49 45 4e 54 5f 4f nt_once.=.m2.SSL_VERIFY_CLIENT_O
6bd20 4e 43 45 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 0a 53 53 4c 5f 53 45 4e 54 5f 53 48 55 54 44 NCE..#.type:.int..SSL_SENT_SHUTD
6bd40 4f 57 4e 20 3d 20 6d 32 2e 53 53 4c 5f 53 45 4e 54 5f 53 48 55 54 44 4f 57 4e 20 20 23 20 74 79 OWN.=.m2.SSL_SENT_SHUTDOWN..#.ty
6bd60 70 65 3a 20 69 6e 74 0a 53 53 4c 5f 52 45 43 45 49 56 45 44 5f 53 48 55 54 44 4f 57 4e 20 3d 20 pe:.int.SSL_RECEIVED_SHUTDOWN.=.
6bd80 6d 32 2e 53 53 4c 5f 52 45 43 45 49 56 45 44 5f 53 48 55 54 44 4f 57 4e 20 20 23 20 74 79 70 65 m2.SSL_RECEIVED_SHUTDOWN..#.type
6bda0 3a 20 69 6e 74 0a 0a 6f 70 5f 61 6c 6c 20 3d 20 6d 32 2e 53 53 4c 5f 4f 50 5f 41 4c 4c 20 20 23 :.int..op_all.=.m2.SSL_OP_ALL..#
6bdc0 20 74 79 70 65 3a 20 69 6e 74 0a 6f 70 5f 6e 6f 5f 73 73 6c 76 32 20 3d 20 6d 32 2e 53 53 4c 5f .type:.int.op_no_sslv2.=.m2.SSL_
6bde0 4f 50 5f 4e 4f 5f 53 53 4c 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 94 7d 94 28 8c 08 53 OP_NO_SSLv2..#.type:.int..}.(..S
6be00 53 4c 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 0d 4b 0e 87 94 8c 0f 53 53 4c 54 69 6d 65 6f 75 74 45 SLError.j}...K.K.....SSLTimeoutE
6be20 72 72 6f 72 94 6a 7d 1f 00 00 4b 11 4b 12 87 94 75 7d 94 28 6a 38 1a 00 00 6a 5c 02 00 00 6a 3a rror.j}...K.K...u}.(j8...j\...j:
6be40 1a 00 00 6a 5c 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 74 94 8c 14 4d 32 43 72 ...j\...u..M2Crypto.SSL.t...M2Cr
6be60 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 28 58 3b 2b 00 00 22 22 22 0a 53 53 4c 20 70 ypto.SSL.Checker.(X;+..""".SSL.p
6be80 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68 65 63 6b 69 6e 67 20 72 6f 75 74 69 6e 65 eer.certificate.checking.routine
6bea0 73 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 34 2d 32 30 30 37 20 4f 70 65 6e 20 s..Copyright.(c).2004-2007.Open.
6bec0 53 6f 75 72 63 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 2e 0a Source.Applications.Foundation..
6bee0 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 All.rights.reserved...Copyright.
6bf00 32 30 30 38 20 48 65 69 6b 6b 69 20 54 6f 69 76 6f 6e 65 6e 2e 20 41 6c 6c 20 72 69 67 68 74 73 2008.Heikki.Toivonen..All.rights
6bf20 20 72 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 53 53 4c 56 .reserved.."""..__all__.=.['SSLV
6bf40 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 27 2c 20 27 4e 6f 43 65 72 74 69 66 69 63 61 74 erificationError',.'NoCertificat
6bf60 65 27 2c 20 27 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 27 2c 0a 20 20 20 20 20 20 20 20 e',.'WrongCertificate',.........
6bf80 20 20 20 27 57 72 6f 6e 67 48 6f 73 74 27 2c 20 27 43 68 65 63 6b 65 72 27 5d 0a 0a 69 6d 70 6f ...'WrongHost',.'Checker']..impo
6bfa0 72 74 20 72 65 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 rt.re.import.socket..from.M2Cryp
6bfc0 74 6f 20 69 6d 70 6f 72 74 20 58 35 30 39 2c 20 6d 32 2c 20 73 69 78 2c 20 75 74 69 6c 20 20 23 to.import.X509,.m2,.six,.util..#
6bfe0 20 6e 6f 71 61 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d .noqa.if.util.py27plus:.....from
6c000 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 20 .typing.import.AnyStr,.Optional.
6c020 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 .#.noqa...class.SSLVerificationE
6c040 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 63 6c 61 73 rror(Exception):.....pass...clas
6c060 73 20 4e 6f 43 65 72 74 69 66 69 63 61 74 65 28 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 s.NoCertificate(SSLVerificationE
6c080 72 72 6f 72 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 63 6c 61 73 73 20 57 72 6f 6e 67 43 65 72 rror):.....pass...class.WrongCer
6c0a0 74 69 66 69 63 61 74 65 28 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 29 3a 0a tificate(SSLVerificationError):.
6c0c0 20 20 20 20 70 61 73 73 0a 0a 0a 63 6c 61 73 73 20 57 72 6f 6e 67 48 6f 73 74 28 53 53 4c 56 65 ....pass...class.WrongHost(SSLVe
6c0e0 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 rificationError):.....def.__init
6c100 5f 5f 28 73 65 6c 66 2c 20 65 78 70 65 63 74 65 64 48 6f 73 74 2c 20 61 63 74 75 61 6c 48 6f 73 __(self,.expectedHost,.actualHos
6c120 74 2c 20 66 69 65 6c 64 4e 61 6d 65 3d 27 63 6f 6d 6d 6f 6e 4e 61 6d 65 27 29 3a 0a 20 20 20 20 t,.fieldName='commonName'):.....
6c140 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 41 6e 79 53 74 72 2c 20 73 74 72 29 20 2d ....#.type:.(str,.AnyStr,.str).-
6c160 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 >.None.........""".........This.
6c180 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 72 61 69 73 65 64 20 69 66 20 74 68 65 20 exception.will.be.raised.if.the.
6c1a0 63 65 72 74 69 66 69 63 61 74 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 0a 20 20 20 20 certificate.returned.by.the.....
6c1c0 20 20 20 20 70 65 65 72 20 77 61 73 20 69 73 73 75 65 64 20 66 6f 72 20 61 20 64 69 66 66 65 72 ....peer.was.issued.for.a.differ
6c1e0 65 6e 74 20 68 6f 73 74 20 74 68 61 6e 20 77 65 20 74 72 69 65 64 20 74 6f 20 63 6f 6e 6e 65 63 ent.host.than.we.tried.to.connec
6c200 74 20 74 6f 2e 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 63 6f 75 6c 64 20 62 65 20 64 75 65 20 t.to..........This.could.be.due.
6c220 74 6f 20 61 20 73 65 72 76 65 72 20 6d 69 73 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 72 20 to.a.server.misconfiguration.or.
6c240 61 6e 20 61 63 74 69 76 65 20 61 74 74 61 63 6b 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 an.active.attack...........:para
6c260 6d 20 65 78 70 65 63 74 65 64 48 6f 73 74 3a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 m.expectedHost:.The.name.of.the.
6c280 68 6f 73 74 20 77 65 20 65 78 70 65 63 74 65 64 20 74 6f 20 66 69 6e 64 20 69 6e 20 74 68 65 0a host.we.expected.to.find.in.the.
6c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 .............................cer
6c2c0 74 69 66 69 63 61 74 65 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 61 63 74 75 61 6c 48 tificate..........:param.actualH
6c2e0 6f 73 74 3a 20 20 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 68 6f 73 74 20 77 65 20 61 ost:...The.name.of.the.host.we.a
6c300 63 74 75 61 6c 6c 79 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 ctually.found.in.the............
6c320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 20 ..................certificate...
6c340 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 69 65 6c 64 4e 61 6d 65 3a 20 20 20 20 54 68 65 20 .......:param.fieldName:....The.
6c360 66 69 65 6c 64 20 6e 61 6d 65 20 77 68 65 72 65 20 77 65 20 6e 6f 74 69 63 65 64 20 74 68 65 20 field.name.where.we.noticed.the.
6c380 65 72 72 6f 72 2e 20 54 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 error..This.....................
6c3a0 20 20 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62 65 20 65 69 74 68 65 72 20 27 63 6f 6d 6d 6f .........should.be.either.'commo
6c3c0 6e 4e 61 6d 65 27 20 6f 72 20 27 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 27 2e 0a 20 20 20 20 nName'.or.'subjectAltName'......
6c3e0 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 66 69 65 6c 64 4e 61 6d 65 20 6e 6f 74 ....""".........if.fieldName.not
6c400 20 69 6e 20 28 27 63 6f 6d 6d 6f 6e 4e 61 6d 65 27 2c 20 27 73 75 62 6a 65 63 74 41 6c 74 4e 61 .in.('commonName',.'subjectAltNa
6c420 6d 65 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 me'):.............raise.ValueErr
6c440 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 55 6e 6b 6e 6f 77 6e 20 66 69 65 or(.................'Unknown.fie
6c460 6c 64 4e 61 6d 65 2c 20 73 68 6f 75 6c 64 20 62 65 20 65 69 74 68 65 72 20 63 6f 6d 6d 6f 6e 4e ldName,.should.be.either.commonN
6c480 61 6d 65 20 27 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 72 20 73 75 62 6a ame.'.+.................'or.subj
6c4a0 65 63 74 41 6c 74 4e 61 6d 65 27 29 0a 0a 20 20 20 20 20 20 20 20 53 53 4c 56 65 72 69 66 69 63 ectAltName')..........SSLVerific
6c4c0 61 74 69 6f 6e 45 72 72 6f 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 ationError.__init__(self).......
6c4e0 20 20 73 65 6c 66 2e 65 78 70 65 63 74 65 64 48 6f 73 74 20 3d 20 65 78 70 65 63 74 65 64 48 6f ..self.expectedHost.=.expectedHo
6c500 73 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 63 74 75 61 6c 48 6f 73 74 20 3d 20 61 63 74 st.........self.actualHost.=.act
6c520 75 61 6c 48 6f 73 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 69 65 6c 64 4e 61 6d 65 20 3d ualHost.........self.fieldName.=
6c540 20 66 69 65 6c 64 4e 61 6d 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f 5f 28 73 65 6c 66 .fieldName......def.__str__(self
6c560 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 ):.........#.type:.().->.str....
6c580 20 20 20 20 20 73 20 3d 20 27 50 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 25 73 20 64 6f .....s.=.'Peer.certificate.%s.do
6c5a0 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 68 6f 73 74 2c 20 65 78 70 65 63 74 65 64 20 25 73 2c 20 es.not.match.host,.expected.%s,.
6c5c0 67 6f 74 20 25 73 27 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 25 20 28 73 65 6c 66 2e 66 69 got.%s'.\.............%.(self.fi
6c5e0 65 6c 64 4e 61 6d 65 2c 20 73 65 6c 66 2e 65 78 70 65 63 74 65 64 48 6f 73 74 2c 20 73 65 6c 66 eldName,.self.expectedHost,.self
6c600 2e 61 63 74 75 61 6c 48 6f 73 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e .actualHost).........return.six.
6c620 65 6e 73 75 72 65 5f 74 65 78 74 28 73 29 0a 0a 0a 63 6c 61 73 73 20 43 68 65 63 6b 65 72 28 6f ensure_text(s)...class.Checker(o
6c640 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 6e 75 6d 65 72 69 63 49 70 4d 61 74 63 68 20 3d 20 72 65 bject):......numericIpMatch.=.re
6c660 2e 63 6f 6d 70 69 6c 65 28 27 5e 5b 30 2d 39 5d 2b 28 5c 2e 5b 30 2d 39 5d 2b 29 2a 24 27 29 0a .compile('^[0-9]+(\.[0-9]+)*$').
6c680 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 68 6f 73 74 3d 4e 6f 6e .....def.__init__(self,.host=Non
6c6a0 65 2c 20 70 65 65 72 43 65 72 74 48 61 73 68 3d 4e 6f 6e 65 2c 20 70 65 65 72 43 65 72 74 44 69 e,.peerCertHash=None,.peerCertDi
6c6c0 67 65 73 74 3d 27 73 68 61 31 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f gest='sha1'):.........#.type:.(O
6c6e0 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 73 ptional[str],.Optional[bytes],.s
6c700 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 tr).->.None.........self.host.=.
6c720 68 6f 73 74 0a 20 20 20 20 20 20 20 20 69 66 20 70 65 65 72 43 65 72 74 48 61 73 68 20 69 73 20 host.........if.peerCertHash.is.
6c740 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 65 65 72 43 65 72 74 48 61 not.None:.............peerCertHa
6c760 73 68 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 70 65 65 72 43 65 72 74 48 sh.=.six.ensure_binary(peerCertH
6c780 61 73 68 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 69 6e 67 65 72 70 72 69 6e 74 20 3d 20 ash).........self.fingerprint.=.
6c7a0 70 65 65 72 43 65 72 74 48 61 73 68 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 69 67 65 73 74 peerCertHash.........self.digest
6c7c0 20 3d 20 70 65 65 72 43 65 72 74 44 69 67 65 73 74 20 20 23 20 74 79 70 65 3a 20 73 74 72 0a 0a .=.peerCertDigest..#.type:.str..
6c7e0 20 20 20 20 64 65 66 20 5f 5f 63 61 6c 6c 5f 5f 28 73 65 6c 66 2c 20 70 65 65 72 43 65 72 74 2c ....def.__call__(self,.peerCert,
6c800 20 68 6f 73 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 .host=None):.........#.type:.(X5
6c820 30 39 2e 58 35 30 39 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 29 20 2d 3e 20 62 6f 6f 6c 0a 09.X509,.Optional[str]).->.bool.
6c840 20 20 20 20 20 20 20 20 69 66 20 70 65 65 72 43 65 72 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 ........if.peerCert.is.None:....
6c860 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4e 6f 43 65 72 74 69 66 69 63 61 74 65 28 27 70 65 .........raise.NoCertificate('pe
6c880 65 72 20 64 69 64 20 6e 6f 74 20 72 65 74 75 72 6e 20 63 65 72 74 69 66 69 63 61 74 65 27 29 0a er.did.not.return.certificate').
6c8a0 0a 20 20 20 20 20 20 20 20 69 66 20 68 6f 73 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 .........if.host.is.not.None:...
6c8c0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 68 6f 73 74 20 20 23 20 74 79 ..........self.host.=.host..#.ty
6c8e0 70 65 3a 20 73 74 72 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 66 69 6e 67 65 72 70 pe:.str..........if.self.fingerp
6c900 72 69 6e 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 64 69 67 65 73 74 rint:.............if.self.digest
6c920 20 6e 6f 74 20 69 6e 20 28 27 73 68 61 31 27 2c 20 27 6d 64 35 27 29 3a 0a 20 20 20 20 20 20 20 .not.in.('sha1',.'md5'):........
6c940 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 75 6e 73 75 70 .........raise.ValueError('unsup
6c960 70 6f 72 74 65 64 20 64 69 67 65 73 74 20 22 25 73 22 27 20 25 20 73 65 6c 66 2e 64 69 67 65 73 ported.digest."%s"'.%.self.diges
6c980 74 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 64 69 67 65 73 74 20 3d t)..............if.self.digest.=
6c9a0 3d 20 27 73 68 61 31 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 =.'sha1':.................expect
6c9c0 65 64 5f 6c 65 6e 20 3d 20 34 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c ed_len.=.40.............elif.sel
6c9e0 66 2e 64 69 67 65 73 74 20 3d 3d 20 27 6d 64 35 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 f.digest.==.'md5':..............
6ca00 20 20 20 65 78 70 65 63 74 65 64 5f 6c 65 6e 20 3d 20 33 32 0a 20 20 20 20 20 20 20 20 20 20 20 ...expected_len.=.32............
6ca20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c .else:.................raise.Val
6ca40 75 65 45 72 72 6f 72 28 27 55 6e 65 78 70 65 63 74 65 64 20 64 69 67 65 73 74 20 7b 30 7d 27 2e ueError('Unexpected.digest.{0}'.
6ca60 66 6f 72 6d 61 74 28 73 65 6c 66 2e 64 69 67 65 73 74 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 format(self.digest))............
6ca80 20 20 69 66 20 6c 65 6e 28 73 65 6c 66 2e 66 69 6e 67 65 72 70 72 69 6e 74 29 20 21 3d 20 65 78 ..if.len(self.fingerprint).!=.ex
6caa0 70 65 63 74 65 64 5f 6c 65 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 pected_len:.................rais
6cac0 65 20 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.WrongCertificate(.............
6cae0 20 20 20 20 20 20 20 20 28 27 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 66 69 6e 67 65 ........('peer.certificate.finge
6cb00 72 70 72 69 6e 74 20 6c 65 6e 67 74 68 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 5c 6e 27 20 rprint.length.does.not.match\n'.
6cb20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 69 6e 67 65 72 70 72 +......................'fingerpr
6cb40 69 6e 74 3a 20 7b 30 7d 5c 6e 65 78 70 65 63 74 65 64 20 3d 20 7b 31 7d 5c 6e 27 20 2b 0a 20 20 int:.{0}\nexpected.=.{1}\n'.+...
6cb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 62 73 65 72 76 65 64 20 3d 20 7b ...................'observed.=.{
6cb80 32 7d 27 29 2e 66 6f 72 6d 61 74 28 73 65 6c 66 2e 66 69 6e 67 65 72 70 72 69 6e 74 2c 0a 20 20 2}').format(self.fingerprint,...
6cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6cbc0 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 5f 6c 65 6e 2c 0a 20 20 20 20 20 20 ............expected_len,.......
6cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6cc00 20 20 20 20 20 20 20 20 6c 65 6e 28 73 65 6c 66 2e 66 69 6e 67 65 72 70 72 69 6e 74 29 29 29 0a ........len(self.fingerprint))).
6cc20 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 5f 66 69 6e 67 65 72 70 72 69 6e .............expected_fingerprin
6cc40 74 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 73 65 6c 66 2e 66 69 6e 67 65 72 70 t.=.six.ensure_text(self.fingerp
6cc60 72 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 73 65 72 76 65 64 5f 66 69 6e 67 65 rint).............observed_finge
6cc80 72 70 72 69 6e 74 20 3d 20 70 65 65 72 43 65 72 74 2e 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e rprint.=.peerCert.get_fingerprin
6cca0 74 28 6d 64 3d 73 65 6c 66 2e 64 69 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 t(md=self.digest).............if
6ccc0 20 6f 62 73 65 72 76 65 64 5f 66 69 6e 67 65 72 70 72 69 6e 74 20 21 3d 20 65 78 70 65 63 74 65 .observed_fingerprint.!=.expecte
6cce0 64 5f 66 69 6e 67 65 72 70 72 69 6e 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 d_fingerprint:.................r
6cd00 61 69 73 65 20 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 28 0a 20 20 20 20 20 20 20 20 20 aise.WrongCertificate(..........
6cd20 20 20 20 20 20 20 20 20 20 20 20 28 27 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 66 69 ...........('peer.certificate.fi
6cd40 6e 67 65 72 70 72 69 6e 74 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 5c 6e 27 20 2b 0a 20 20 ngerprint.does.not.match\n'.+...
6cd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 78 70 65 63 74 65 64 20 3d 20 7b ...................'expected.=.{
6cd80 30 7d 2c 5c 6e 27 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 0},\n'.+......................'o
6cda0 62 73 65 72 76 65 64 20 3d 20 7b 31 7d 27 29 2e 66 6f 72 6d 61 74 28 65 78 70 65 63 74 65 64 5f bserved.=.{1}').format(expected_
6cdc0 66 69 6e 67 65 72 70 72 69 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fingerprint,....................
6cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 73 65 72 ...........................obser
6ce00 76 65 64 5f 66 69 6e 67 65 72 70 72 69 6e 74 29 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 ved_fingerprint))..........if.se
6ce20 6c 66 2e 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 56 61 6c 69 64 61 74 lf.host:.............hostValidat
6ce40 69 6f 6e 50 61 73 73 65 64 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 ionPassed.=.False.............se
6ce60 6c 66 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 4f 6e 6c 79 20 3d 20 46 61 6c 73 65 lf.useSubjectAltNameOnly.=.False
6ce80 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 44 ..............#.subjectAltName=D
6cea0 4e 53 3a 73 6f 6d 65 68 6f 73 74 5b 2c 20 2e 2e 2e 5d 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 NS:somehost[,....]*.............
6cec0 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e try:.................subjectAltN
6cee0 61 6d 65 20 3d 20 70 65 65 72 43 65 72 74 2e 67 65 74 5f 65 78 74 28 27 73 75 62 6a 65 63 74 41 ame.=.peerCert.get_ext('subjectA
6cf00 6c 74 4e 61 6d 65 27 29 2e 67 65 74 5f 76 61 6c 75 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 ltName').get_value()............
6cf20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d .....if.self._splitSubjectAltNam
6cf40 65 28 73 65 6c 66 2e 68 6f 73 74 2c 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 29 3a 0a 20 20 e(self.host,.subjectAltName):...
6cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 56 61 6c 69 64 61 74 69 6f 6e ..................hostValidation
6cf80 50 61 73 73 65 64 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c Passed.=.True.................el
6cfa0 69 66 20 73 65 6c 66 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 4f 6e 6c 79 3a 0a 20 if.self.useSubjectAltNameOnly:..
6cfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 57 72 6f 6e 67 48 6f ...................raise.WrongHo
6cfe0 73 74 28 65 78 70 65 63 74 65 64 48 6f 73 74 3d 73 65 6c 66 2e 68 6f 73 74 2c 0a 20 20 20 20 20 st(expectedHost=self.host,......
6d000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 ...............................a
6d020 63 74 75 61 6c 48 6f 73 74 3d 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 2c 0a 20 20 20 20 20 20 ctualHost=subjectAltName,.......
6d040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 ..............................fi
6d060 65 6c 64 4e 61 6d 65 3d 27 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 27 29 0a 20 20 20 20 20 20 eldName='subjectAltName').......
6d080 20 20 20 20 20 20 65 78 63 65 70 74 20 4c 6f 6f 6b 75 70 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 ......except.LookupError:.......
6d0a0 20 20 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 6f ..........pass..............#.co
6d0c0 6d 6d 6f 6e 4e 61 6d 65 3d 73 6f 6d 65 68 6f 73 74 5b 2c 20 2e 2e 2e 5d 2a 0a 20 20 20 20 20 20 mmonName=somehost[,....]*.......
6d0e0 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 56 61 6c 69 64 61 74 69 6f 6e 50 61 73 73 65 ......if.not.hostValidationPasse
6d100 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 43 6f 6d 6d 6f 6e 4e 61 6d 65 d:.................hasCommonName
6d120 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 6f 6e 4e .=.False.................commonN
6d140 61 6d 65 73 20 3d 20 27 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 6e ames.=.''.................for.en
6d160 74 72 79 20 69 6e 20 70 65 65 72 43 65 72 74 2e 67 65 74 5f 73 75 62 6a 65 63 74 28 29 2e 67 65 try.in.peerCert.get_subject().ge
6d180 74 5f 65 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t_entries_by_nid(...............
6d1a0 20 20 20 20 20 20 20 20 20 20 6d 32 2e 4e 49 44 5f 63 6f 6d 6d 6f 6e 4e 61 6d 65 29 3a 0a 20 20 ..........m2.NID_commonName):...
6d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 43 6f 6d 6d 6f 6e 4e 61 6d 65 20 ..................hasCommonName.
6d1e0 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 6f =.True.....................commo
6d200 6e 4e 61 6d 65 20 3d 20 65 6e 74 72 79 2e 67 65 74 5f 64 61 74 61 28 29 2e 61 73 5f 74 65 78 74 nName.=.entry.get_data().as_text
6d220 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 6f ().....................if.not.co
6d240 6d 6d 6f 6e 4e 61 6d 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mmonNames:......................
6d260 20 20 20 63 6f 6d 6d 6f 6e 4e 61 6d 65 73 20 3d 20 63 6f 6d 6d 6f 6e 4e 61 6d 65 0a 20 20 20 20 ...commonNames.=.commonName.....
6d280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 ................else:...........
6d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 6f 6e 4e 61 6d 65 73 20 2b 3d 20 27 2c 27 ..............commonNames.+=.','
6d2c0 20 2b 20 63 6f 6d 6d 6f 6e 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .+.commonName...................
6d2e0 20 20 69 66 20 73 65 6c 66 2e 5f 6d 61 74 63 68 28 73 65 6c 66 2e 68 6f 73 74 2c 20 63 6f 6d 6d ..if.self._match(self.host,.comm
6d300 6f 6e 4e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 onName):........................
6d320 20 68 6f 73 74 56 61 6c 69 64 61 74 69 6f 6e 50 61 73 73 65 64 20 3d 20 54 72 75 65 0a 20 20 20 .hostValidationPassed.=.True....
6d340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 0a 20 20 20 20 .....................break......
6d360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 43 6f 6d 6d 6f 6e 4e 61 6d 65 ............if.not.hasCommonName
6d380 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 57 72 6f 6e :.....................raise.Wron
6d3a0 67 43 65 72 74 69 66 69 63 61 74 65 28 27 6e 6f 20 63 6f 6d 6d 6f 6e 4e 61 6d 65 20 69 6e 20 70 gCertificate('no.commonName.in.p
6d3c0 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 27 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 eer.certificate')...............
6d3e0 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 56 61 6c 69 64 61 74 69 6f 6e 50 61 73 73 65 64 3a 0a ...if.not.hostValidationPassed:.
6d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 57 72 6f 6e 67 48 ....................raise.WrongH
6d420 6f 73 74 28 65 78 70 65 63 74 65 64 48 6f 73 74 3d 73 65 6c 66 2e 68 6f 73 74 2c 0a 20 20 20 20 ost(expectedHost=self.host,.....
6d440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6d460 61 63 74 75 61 6c 48 6f 73 74 3d 63 6f 6d 6d 6f 6e 4e 61 6d 65 73 2c 0a 20 20 20 20 20 20 20 20 actualHost=commonNames,.........
6d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 65 6c ............................fiel
6d4a0 64 4e 61 6d 65 3d 27 63 6f 6d 6d 6f 6e 4e 61 6d 65 27 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 dName='commonName')..........ret
6d4c0 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 64 65 66 20 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 urn.True......def._splitSubjectA
6d4e0 6c 74 4e 61 6d 65 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d ltName(self,.host,.subjectAltNam
6d500 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 41 6e 79 e):.........#.type:.(AnyStr,.Any
6d520 53 74 72 29 20 2d 3e 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 Str).->.bool........."""........
6d540 20 3e 3e 3e 20 63 68 65 63 6b 20 3d 20 43 68 65 63 6b 65 72 28 29 0a 20 20 20 20 20 20 20 20 3e .>>>.check.=.Checker().........>
6d560 3e 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f >>.check._splitSubjectAltName(ho
6d580 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e st='my.example.com',............
6d5a0 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 44 4e 53 3a 6d 79 2e 65 78 61 6d .....subjectAltName='DNS:my.exam
6d5c0 70 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e ple.com').........True.........>
6d5e0 3e 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f >>.check._splitSubjectAltName(ho
6d600 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e st='my.example.com',............
6d620 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 44 4e 53 3a 2a 2e 65 78 61 6d 70 .....subjectAltName='DNS:*.examp
6d640 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e le.com').........True.........>>
6d660 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f 73 >.check._splitSubjectAltName(hos
6d680 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 t='my.example.com',.............
6d6a0 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 44 4e 53 3a 6d 2a 2e 65 78 61 6d 70 ....subjectAltName='DNS:m*.examp
6d6c0 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e le.com').........True.........>>
6d6e0 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f 73 >.check._splitSubjectAltName(hos
6d700 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 t='my.example.com',.............
6d720 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 44 4e 53 3a 6d 2a 61 6d 70 6c 65 2e ....subjectAltName='DNS:m*ample.
6d740 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 com').........False.........>>>.
6d760 63 68 65 63 6b 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 4f 6e 6c 79 0a 20 20 20 20 check.useSubjectAltNameOnly.....
6d780 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 ....True.........>>>.check._spli
6d7a0 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 tSubjectAltName(host='my.example
6d7c0 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c .com',.................subjectAl
6d7e0 74 4e 61 6d 65 3d 27 44 4e 53 3a 6d 2a 61 6d 70 6c 65 2e 63 6f 6d 2c 20 6f 74 68 65 72 6e 61 6d tName='DNS:m*ample.com,.othernam
6d800 65 3a 3c 75 6e 73 75 70 70 6f 72 74 65 64 3e 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a e:<unsupported>').........False.
6d820 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 ........>>>.check._splitSubjectA
6d840 6c 74 4e 61 6d 65 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 ltName(host='my.example.com',...
6d860 20 20 20 20 20 20 2e 2e 2e 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 44 4e ..............subjectAltName='DN
6d880 53 3a 6d 2a 61 6d 70 6c 65 2e 63 6f 6d 2c 20 44 4e 53 3a 6d 79 2e 65 78 61 6d 70 6c 65 2e 6f 72 S:m*ample.com,.DNS:my.example.or
6d8a0 67 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 g').........False.........>>>.ch
6d8c0 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f 73 74 3d 27 6d eck._splitSubjectAltName(host='m
6d8e0 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 20 20 20 20 y.example.com',.................
6d900 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 44 4e 53 3a 6d 2a 61 6d 70 6c 65 2e 63 6f 6d 2c subjectAltName='DNS:m*ample.com,
6d920 20 44 4e 53 3a 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 54 72 .DNS:my.example.com').........Tr
6d940 75 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 ue.........>>>.check._splitSubje
6d960 63 74 41 6c 74 4e 61 6d 65 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c ctAltName(host='my.example.com',
6d980 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d .................subjectAltName=
6d9a0 27 44 4e 53 3a 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 2c 20 44 4e 53 3a 6d 79 2e 65 78 61 6d 'DNS:my.example.com,.DNS:my.exam
6d9c0 70 6c 65 2e 6f 72 67 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e ple.org').........True.........>
6d9e0 3e 3e 20 63 68 65 63 6b 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 4f 6e 6c 79 0a 20 >>.check.useSubjectAltNameOnly..
6da00 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 73 .......True.........>>>.check._s
6da20 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d plitSubjectAltName(host='my.exam
6da40 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 20 20 20 20 73 75 62 6a 65 63 ple.com',.................subjec
6da60 74 41 6c 74 4e 61 6d 65 3d 27 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 tAltName='').........False......
6da80 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d ...>>>.check._splitSubjectAltNam
6daa0 65 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 0a 20 20 20 20 20 20 20 e(host='my.example.com',........
6dac0 20 2e 2e 2e 20 20 20 20 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 3d 27 6f 74 68 65 72 6e 61 .........subjectAltName='otherna
6dae0 6d 65 3a 3c 75 6e 73 75 70 70 6f 72 74 65 64 3e 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 me:<unsupported>').........False
6db00 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 .........>>>.check.useSubjectAlt
6db20 4e 61 6d 65 4f 6e 6c 79 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 22 NameOnly.........False........."
6db40 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d "".........self.useSubjectAltNam
6db60 65 4f 6e 6c 79 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 63 65 72 74 48 6f eOnly.=.False.........for.certHo
6db80 73 74 20 69 6e 20 73 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 2e 73 70 6c 69 74 28 27 2c 27 29 3a st.in.subjectAltName.split(','):
6dba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 48 6f 73 74 20 3d 20 63 65 72 74 48 6f 73 74 .............certHost.=.certHost
6dbc0 2e 6c 6f 77 65 72 28 29 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 .lower().strip().............if.
6dbe0 63 65 72 74 48 6f 73 74 5b 3a 34 5d 20 3d 3d 20 27 64 6e 73 3a 27 3a 0a 20 20 20 20 20 20 20 20 certHost[:4].==.'dns:':.........
6dc00 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 4f 6e ........self.useSubjectAltNameOn
6dc20 6c 79 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c ly.=.True.................if.sel
6dc40 66 2e 5f 6d 61 74 63 68 28 68 6f 73 74 2c 20 63 65 72 74 48 6f 73 74 5b 34 3a 5d 29 3a 0a 20 20 f._match(host,.certHost[4:]):...
6dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 ..................return.True...
6dc80 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 63 65 72 74 48 6f 73 74 5b 3a 31 31 5d 20 3d 3d 20 ..........elif.certHost[:11].==.
6dca0 27 69 70 20 61 64 64 72 65 73 73 3a 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 'ip.address:':.................s
6dcc0 65 6c 66 2e 75 73 65 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d 65 4f 6e 6c 79 20 3d 20 54 72 75 65 elf.useSubjectAltNameOnly.=.True
6dce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 6d 61 74 63 68 49 .................if.self._matchI
6dd00 50 41 64 64 72 65 73 73 28 68 6f 73 74 2c 20 63 65 72 74 48 6f 73 74 5b 31 31 3a 5d 29 3a 0a 20 PAddress(host,.certHost[11:]):..
6dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 ...................return.True..
6dd40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 0a 20 20 20 20 64 65 66 20 5f 6d 61 .......return.False......def._ma
6dd60 74 63 68 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 63 65 72 74 48 6f 73 74 29 3a 0a 20 20 20 20 20 tch(self,.host,.certHost):......
6dd80 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 73 74 72 29 20 2d 3e 20 62 6f 6f 6c 0a 20 20 ...#.type:.(str,.str).->.bool...
6dda0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 20 3d 20 43 68 ......""".........>>>.check.=.Ch
6ddc0 65 63 6b 65 72 28 29 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 ecker().........>>>.check._match
6dde0 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 63 65 72 74 48 6f 73 74 (host='my.example.com',.certHost
6de00 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a ='my.example.com').........True.
6de20 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 28 68 6f 73 74 3d 27 6d ........>>>.check._match(host='m
6de40 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 2a 2e 65 78 61 6d y.example.com',.certHost='*.exam
6de60 70 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e ple.com').........True.........>
6de80 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 >>.check._match(host='my.example
6dea0 2e 63 6f 6d 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 6d 2a 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 .com',.certHost='m*.example.com'
6dec0 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b ).........True.........>>>.check
6dee0 2e 5f 6d 61 74 63 68 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 63 ._match(host='my.example.com',.c
6df00 65 72 74 48 6f 73 74 3d 27 6d 2a 2e 45 58 41 4d 50 4c 45 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 ertHost='m*.EXAMPLE.com').......
6df20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 28 ..True.........>>>.check._match(
6df40 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 63 65 72 74 48 6f 73 74 3d host='my.example.com',.certHost=
6df60 27 6d 2a 61 6d 70 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 'm*ample.com').........False....
6df80 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 28 68 6f 73 74 3d 27 6d 79 2e 65 .....>>>.check._match(host='my.e
6dfa0 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 2a 2e 2a 2e 63 6f 6d 27 29 xample.com',.certHost='*.*.com')
6dfc0 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b .........False.........>>>.check
6dfe0 2e 5f 6d 61 74 63 68 28 68 6f 73 74 3d 27 31 2e 32 2e 33 2e 34 27 2c 20 63 65 72 74 48 6f 73 74 ._match(host='1.2.3.4',.certHost
6e000 3d 27 31 2e 32 2e 33 2e 34 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 ='1.2.3.4').........True........
6e020 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 28 68 6f 73 74 3d 27 31 2e 32 2e 33 2e 34 27 .>>>.check._match(host='1.2.3.4'
6e040 2c 20 63 65 72 74 48 6f 73 74 3d 27 2a 2e 32 2e 33 2e 34 27 29 0a 20 20 20 20 20 20 20 20 46 61 ,.certHost='*.2.3.4').........Fa
6e060 6c 73 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 28 68 6f 73 lse.........>>>.check._match(hos
6e080 74 3d 27 31 32 33 34 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 31 32 33 34 27 29 0a 20 20 20 20 20 t='1234',.certHost='1234')......
6e0a0 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 58 58 ...True.........""".........#.XX
6e0c0 58 20 53 65 65 20 52 46 43 20 32 38 31 38 20 61 6e 64 20 33 32 38 30 20 66 6f 72 20 6d 61 74 63 X.See.RFC.2818.and.3280.for.matc
6e0e0 68 69 6e 67 20 72 75 6c 65 73 2c 20 74 68 69 73 20 69 73 20 6d 61 79 20 6e 6f 74 0a 20 20 20 20 hing.rules,.this.is.may.not.....
6e100 20 20 20 20 23 20 58 58 58 20 79 65 74 20 62 65 20 63 6f 6d 70 6c 65 74 65 2e 0a 0a 20 20 20 20 ....#.XXX.yet.be.complete.......
6e120 20 20 20 20 68 6f 73 74 20 3d 20 68 6f 73 74 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 ....host.=.host.lower().........
6e140 63 65 72 74 48 6f 73 74 20 3d 20 63 65 72 74 48 6f 73 74 2e 6c 6f 77 65 72 28 29 0a 0a 20 20 20 certHost.=.certHost.lower().....
6e160 20 20 20 20 20 69 66 20 68 6f 73 74 20 3d 3d 20 63 65 72 74 48 6f 73 74 3a 0a 20 20 20 20 20 20 .....if.host.==.certHost:.......
6e180 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 63 65 ......return.True..........if.ce
6e1a0 72 74 48 6f 73 74 2e 63 6f 75 6e 74 28 27 2a 27 29 20 3e 20 31 3a 0a 20 20 20 20 20 20 20 20 20 rtHost.count('*').>.1:..........
6e1c0 20 20 20 23 20 4e 6f 74 20 73 75 72 65 20 61 62 6f 75 74 20 74 68 69 73 2c 20 62 75 74 20 62 65 ...#.Not.sure.about.this,.but.be
6e1e0 69 6e 67 20 63 6f 6e 73 65 72 76 61 74 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ing.conservative.............ret
6e200 75 72 6e 20 46 61 6c 73 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 6e 75 6d 65 72 urn.False..........if.self.numer
6e220 69 63 49 70 4d 61 74 63 68 2e 6d 61 74 63 68 28 68 6f 73 74 29 20 6f 72 20 5c 0a 20 20 20 20 20 icIpMatch.match(host).or.\......
6e240 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 75 6d 65 72 69 63 49 70 4d 61 74 63 68 2e 6d ...........self.numericIpMatch.m
6e260 61 74 63 68 28 63 65 72 74 48 6f 73 74 2e 72 65 70 6c 61 63 65 28 27 2a 27 2c 20 27 27 29 29 3a atch(certHost.replace('*',.'')):
6e280 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 6f 74 20 73 75 72 65 20 69 66 20 2a 20 61 6c 6c .............#.Not.sure.if.*.all
6e2a0 6f 77 65 64 20 69 6e 20 6e 75 6d 65 72 69 63 20 49 50 2c 20 62 75 74 20 74 68 69 6e 6b 20 6e 6f owed.in.numeric.IP,.but.think.no
6e2c0 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 0a 20 20 20 t..............return.False.....
6e2e0 20 20 20 20 20 69 66 20 63 65 72 74 48 6f 73 74 2e 66 69 6e 64 28 27 5c 5c 27 29 20 3e 20 2d 31 .....if.certHost.find('\\').>.-1
6e300 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 6f 74 20 73 75 72 65 20 61 62 6f 75 74 20 74 :.............#.Not.sure.about.t
6e320 68 69 73 2c 20 6d 61 79 62 65 20 73 6f 6d 65 20 65 6e 63 6f 64 69 6e 67 20 6d 69 67 68 74 20 68 his,.maybe.some.encoding.might.h
6e340 61 76 65 20 74 68 65 73 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 42 75 74 20 62 65 69 ave.these..............#.But.bei
6e360 6e 67 20 63 6f 6e 73 65 72 76 61 74 69 76 65 20 66 6f 72 20 6e 6f 77 2c 20 62 65 63 61 75 73 65 ng.conservative.for.now,.because
6e380 20 72 65 67 65 78 20 62 65 6c 6f 77 20 72 65 6c 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 .regex.below.relies.............
6e3a0 23 20 6f 6e 20 74 68 69 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 #.on.this..............return.Fa
6e3c0 6c 73 65 0a 0a 20 20 20 20 20 20 20 20 23 20 4d 61 73 73 61 67 65 20 63 65 72 74 48 6f 73 74 20 lse..........#.Massage.certHost.
6e3e0 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 72 65 67 65 78 0a so.that.it.can.be.used.in.regex.
6e400 20 20 20 20 20 20 20 20 63 65 72 74 48 6f 73 74 20 3d 20 63 65 72 74 48 6f 73 74 2e 72 65 70 6c ........certHost.=.certHost.repl
6e420 61 63 65 28 27 2e 27 2c 20 27 5c 2e 27 29 0a 20 20 20 20 20 20 20 20 63 65 72 74 48 6f 73 74 20 ace('.',.'\.').........certHost.
6e440 3d 20 63 65 72 74 48 6f 73 74 2e 72 65 70 6c 61 63 65 28 27 2a 27 2c 20 27 5b 5e 5c 2e 5d 2a 27 =.certHost.replace('*',.'[^\.]*'
6e460 29 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 2e 63 6f 6d 70 69 6c 65 28 27 5e 25 73 24 27 20 25 ).........if.re.compile('^%s$'.%
6e480 20 63 65 72 74 48 6f 73 74 29 2e 6d 61 74 63 68 28 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 20 .certHost).match(host):.........
6e4a0 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ....return.True..........return.
6e4c0 46 61 6c 73 65 0a 0a 20 20 20 20 64 65 66 20 5f 6d 61 74 63 68 49 50 41 64 64 72 65 73 73 28 73 False......def._matchIPAddress(s
6e4e0 65 6c 66 2c 20 68 6f 73 74 2c 20 63 65 72 74 48 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 elf,.host,.certHost):.........#.
6e500 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 41 6e 79 53 74 72 29 20 2d 3e 20 62 6f 6f 6c 0a 20 type:.(AnyStr,.AnyStr).->.bool..
6e520 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 20 3d 20 43 .......""".........>>>.check.=.C
6e540 68 65 63 6b 65 72 28 29 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 hecker().........>>>.check._matc
6e560 68 49 50 41 64 64 72 65 73 73 28 68 6f 73 74 3d 27 6d 79 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 hIPAddress(host='my.example.com'
6e580 2c 0a 20 20 20 20 20 20 20 20 2e 2e 2e 20 20 20 20 20 63 65 72 74 48 6f 73 74 3d 27 6d 79 2e 65 ,.................certHost='my.e
6e5a0 78 61 6d 70 6c 65 2e 63 6f 6d 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 xample.com').........False......
6e5c0 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 49 50 41 64 64 72 65 73 73 28 68 6f 73 ...>>>.check._matchIPAddress(hos
6e5e0 74 3d 27 31 2e 32 2e 33 2e 34 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 31 2e 32 2e 33 2e 34 27 29 t='1.2.3.4',.certHost='1.2.3.4')
6e600 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e .........True.........>>>.check.
6e620 5f 6d 61 74 63 68 49 50 41 64 64 72 65 73 73 28 68 6f 73 74 3d 27 31 2e 32 2e 33 2e 34 27 2c 20 _matchIPAddress(host='1.2.3.4',.
6e640 63 65 72 74 48 6f 73 74 3d 27 2a 2e 32 2e 33 2e 34 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 certHost='*.2.3.4').........Fals
6e660 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 49 50 41 64 64 72 e.........>>>.check._matchIPAddr
6e680 65 73 73 28 68 6f 73 74 3d 27 31 2e 32 2e 33 2e 34 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 31 2e ess(host='1.2.3.4',.certHost='1.
6e6a0 32 2e 33 2e 34 30 27 29 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 3e 2.3.40').........False.........>
6e6c0 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 49 50 41 64 64 72 65 73 73 28 68 6f 73 74 3d 27 3a >>.check._matchIPAddress(host=':
6e6e0 3a 31 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 3a 3a 31 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 :1',.certHost='::1').........Tru
6e700 65 0a 20 20 20 20 20 20 20 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 49 50 41 64 64 72 e.........>>>.check._matchIPAddr
6e720 65 73 73 28 68 6f 73 74 3d 27 3a 3a 31 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 30 3a 30 3a 30 3a ess(host='::1',.certHost='0:0:0:
6e740 30 3a 30 3a 30 3a 30 3a 31 27 29 0a 20 20 20 20 20 20 20 20 54 72 75 65 0a 20 20 20 20 20 20 20 0:0:0:0:1').........True........
6e760 20 3e 3e 3e 20 63 68 65 63 6b 2e 5f 6d 61 74 63 68 49 50 41 64 64 72 65 73 73 28 68 6f 73 74 3d .>>>.check._matchIPAddress(host=
6e780 27 3a 3a 31 27 2c 20 63 65 72 74 48 6f 73 74 3d 27 3a 3a 32 27 29 0a 20 20 20 20 20 20 20 20 46 '::1',.certHost='::2').........F
6e7a0 61 6c 73 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 alse.........""".........try:...
6e7c0 20 20 20 20 20 20 20 20 20 20 63 61 6e 6f 6e 69 63 61 6c 20 3d 20 73 6f 63 6b 65 74 2e 67 65 74 ..........canonical.=.socket.get
6e7e0 61 64 64 72 69 6e 66 6f 28 68 6f 73 74 2c 20 30 2c 20 30 2c 20 73 6f 63 6b 65 74 2e 53 4f 43 4b addrinfo(host,.0,.0,.socket.SOCK
6e800 5f 53 54 52 45 41 4d 2c 20 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _STREAM,.0,.....................
6e820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 2e 41 49 .......................socket.AI
6e840 5f 4e 55 4d 45 52 49 43 48 4f 53 54 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 43 61 _NUMERICHOST).............certCa
6e860 6e 6f 6e 69 63 61 6c 20 3d 20 73 6f 63 6b 65 74 2e 67 65 74 61 64 64 72 69 6e 66 6f 28 63 65 72 nonical.=.socket.getaddrinfo(cer
6e880 74 48 6f 73 74 2c 20 30 2c 20 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tHost,.0,.0,....................
6e8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b ............................sock
6e8c0 65 74 2e 53 4f 43 4b 5f 53 54 52 45 41 4d 2c 20 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 et.SOCK_STREAM,.0,..............
6e8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6e900 20 20 73 6f 63 6b 65 74 2e 41 49 5f 4e 55 4d 45 52 49 43 48 4f 53 54 29 0a 20 20 20 20 20 20 20 ..socket.AI_NUMERICHOST)........
6e920 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 .except:.............return.Fals
6e940 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 6e 6f 6e 69 63 61 6c 20 3d 3d 20 63 65 e.........return.canonical.==.ce
6e960 72 74 43 61 6e 6f 6e 69 63 61 6c 0a 0a 0a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 27 5f 5f rtCanonical...if.__name__.==.'__
6e980 6d 61 69 6e 5f 5f 27 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20 64 6f 63 74 65 73 74 0a 20 20 20 20 main__':.....import.doctest.....
6e9a0 64 6f 63 74 65 73 74 2e 74 65 73 74 6d 6f 64 28 29 0a 94 7d 94 28 8c 14 53 53 4c 56 65 72 69 66 doctest.testmod()..}.(..SSLVerif
6e9c0 69 63 61 74 69 6f 6e 45 72 72 6f 72 94 6a 7d 1f 00 00 4b 15 4b 16 87 94 8c 0d 4e 6f 43 65 72 74 icationError.j}...K.K.....NoCert
6e9e0 69 66 69 63 61 74 65 94 6a 7d 1f 00 00 4b 19 4b 1a 87 94 8c 10 57 72 6f 6e 67 43 65 72 74 69 66 ificate.j}...K.K.....WrongCertif
6ea00 69 63 61 74 65 94 6a 7d 1f 00 00 4b 1d 4b 1e 87 94 8c 12 57 72 6f 6e 67 48 6f 73 74 2e 5f 5f 69 icate.j}...K.K.....WrongHost.__i
6ea20 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 22 4b 38 87 94 8c 11 57 72 6f 6e 67 48 6f 73 74 2e 5f 5f 73 nit__.jt...K"K8....WrongHost.__s
6ea40 74 72 5f 5f 94 6a 74 1f 00 00 4b 3a 4b 3e 87 94 8c 09 57 72 6f 6e 67 48 6f 73 74 94 6a 7d 1f 00 tr__.jt...K:K>....WrongHost.j}..
6ea60 00 4b 21 4b 3e 87 94 8c 10 43 68 65 63 6b 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b .K!K>....Checker.__init__.jt...K
6ea80 45 4b 4b 87 94 8c 10 43 68 65 63 6b 65 72 2e 5f 5f 63 61 6c 6c 5f 5f 94 6a 74 1f 00 00 4b 4d 4b EKK....Checker.__call__.jt...KMK
6eaa0 99 87 94 8c 1c 43 68 65 63 6b 65 72 2e 5f 73 70 6c 69 74 53 75 62 6a 65 63 74 41 6c 74 4e 61 6d .....Checker._splitSubjectAltNam
6eac0 65 94 6a 74 1f 00 00 4b 9b 4b cf 87 94 8c 0e 43 68 65 63 6b 65 72 2e 5f 6d 61 74 63 68 94 6a 74 e.jt...K.K.....Checker._match.jt
6eae0 1f 00 00 4b d1 4d 06 01 87 94 8c 17 43 68 65 63 6b 65 72 2e 5f 6d 61 74 63 68 49 50 41 64 64 72 ...K.M......Checker._matchIPAddr
6eb00 65 73 73 94 6a 74 1f 00 00 4d 08 01 4d 24 01 87 94 8c 07 43 68 65 63 6b 65 72 94 6a 7d 1f 00 00 ess.jt...M..M$.....Checker.j}...
6eb20 4b 41 4d 24 01 87 94 75 7d 94 28 6a 3f 1a 00 00 6a 5c 02 00 00 6a 41 1a 00 00 6a 5c 02 00 00 6a KAM$...u}.(j?...j\...jA...j\...j
6eb40 43 1a 00 00 6a 5c 02 00 00 6a 45 1a 00 00 6a 5c 02 00 00 8c 07 43 68 65 63 6b 65 72 94 6a 5c 02 C...j\...jE...j\.....Checker.j\.
6eb60 00 00 75 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 74 94 8c 13 4d 32 ..u..M2Crypto.SSL.Checker.t...M2
6eb80 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 28 58 14 06 00 00 22 22 22 53 53 4c 20 43 Crypto.SSL.Cipher.(X...."""SSL.C
6eba0 69 70 68 65 72 73 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 iphers..Copyright.(c).1999-2003.
6ebc0 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 Ng.Pheng.Siong..All.rights.reser
6ebe0 76 65 64 2e 22 22 22 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 43 69 70 68 65 72 27 2c 20 27 43 ved."""..__all__.=.['Cipher',.'C
6ec00 69 70 68 65 72 5f 53 74 61 63 6b 27 5d 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 ipher_Stack']..from.M2Crypto.imp
6ec20 6f 72 74 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 2c 20 73 69 78 0a 69 66 20 70 79 32 37 70 6c 75 ort.m2,.py27plus,.six.if.py27plu
6ec40 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 49 74 65 72 61 62 s:.....from.typing.import.Iterab
6ec60 6c 65 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 65 72 28 6f 62 6a 65 63 74 le..#.noqa...class.Cipher(object
6ec80 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 63 69 70 68 65 72 ):.....def.__init__(self,.cipher
6eca0 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 4e 6f 6e 65 ):.........#.type:.(str).->.None
6ecc0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 69 70 68 65 72 20 3d 20 63 69 70 68 65 72 0a 0a 20 .........self.cipher.=.cipher...
6ece0 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ...def.__len__(self):.........#.
6ed00 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d type:.().->.int.........return.m
6ed20 32 2e 73 73 6c 5f 63 69 70 68 65 72 5f 67 65 74 5f 62 69 74 73 28 73 65 6c 66 2e 63 69 70 68 65 2.ssl_cipher_get_bits(self.ciphe
6ed40 72 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 72 65 70 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 r)......def.__repr__(self):.....
6ed60 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 72 65 ....#.type:.().->.str.........re
6ed80 74 75 72 6e 20 22 25 73 2d 25 73 22 20 25 20 28 73 65 6c 66 2e 6e 61 6d 65 28 29 2c 20 6c 65 6e turn."%s-%s".%.(self.name(),.len
6eda0 28 73 65 6c 66 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f 5f 28 73 65 6c 66 29 3a 0a (self))......def.__str__(self):.
6edc0 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 ........#.type:.().->.str.......
6ede0 20 20 72 65 74 75 72 6e 20 22 25 73 2d 25 73 22 20 25 20 28 73 65 6c 66 2e 6e 61 6d 65 28 29 2c ..return."%s-%s".%.(self.name(),
6ee00 20 6c 65 6e 28 73 65 6c 66 29 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 73 69 6f 6e 28 73 65 6c .len(self))......def.version(sel
6ee20 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 f):.........#.type:.().->.int...
6ee40 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 69 70 68 65 72 5f 67 65 74 5f 76 ......return.m2.ssl_cipher_get_v
6ee60 65 72 73 69 6f 6e 28 73 65 6c 66 2e 63 69 70 68 65 72 29 0a 0a 20 20 20 20 64 65 66 20 6e 61 6d ersion(self.cipher)......def.nam
6ee80 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 e(self):.........#.type:.().->.s
6eea0 74 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 tr.........return.six.ensure_tex
6eec0 74 28 6d 32 2e 73 73 6c 5f 63 69 70 68 65 72 5f 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 63 69 t(m2.ssl_cipher_get_name(self.ci
6eee0 70 68 65 72 29 29 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 65 72 5f 53 74 61 63 6b 28 6f 62 6a 65 pher))...class.Cipher_Stack(obje
6ef00 63 74 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 74 61 63 ct):.....def.__init__(self,.stac
6ef20 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 4e k):.........#.type:.(bytes).->.N
6ef40 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 one.........""".........:param.s
6ef60 74 61 63 6b 3a 20 62 69 6e 61 72 79 20 6f 66 20 74 68 65 20 43 2d 74 79 70 65 20 53 54 41 43 4b tack:.binary.of.the.C-type.STACK
6ef80 5f 4f 46 28 53 53 4c 5f 43 49 50 48 45 52 29 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 _OF(SSL_CIPHER).........""".....
6efa0 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 ....self.stack.=.stack......def.
6efc0 5f 5f 6c 65 6e 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 __len__(self):.........#.type:.(
6efe0 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 6b 5f 73 73 ).->.int.........return.m2.sk_ss
6f000 6c 5f 63 69 70 68 65 72 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 0a 20 20 20 20 64 65 l_cipher_num(self.stack)......de
6f020 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 69 64 78 29 3a 0a 20 20 20 20 20 20 f.__getitem__(self,.idx):.......
6f040 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 43 69 70 68 65 72 0a 20 20 20 20 20 20 ..#.type:.(int).->.Cipher.......
6f060 20 20 69 66 20 6e 6f 74 20 30 20 3c 3d 20 69 64 78 20 3c 20 6d 32 2e 73 6b 5f 73 73 6c 5f 63 69 ..if.not.0.<=.idx.<.m2.sk_ssl_ci
6f080 70 68 65 72 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 20 20 pher_num(self.stack):...........
6f0a0 20 20 72 61 69 73 65 20 49 6e 64 65 78 45 72 72 6f 72 28 27 69 6e 64 65 78 20 6f 75 74 20 6f 66 ..raise.IndexError('index.out.of
6f0c0 20 72 61 6e 67 65 27 29 0a 20 20 20 20 20 20 20 20 76 20 3d 20 6d 32 2e 73 6b 5f 73 73 6c 5f 63 .range').........v.=.m2.sk_ssl_c
6f0e0 69 70 68 65 72 5f 76 61 6c 75 65 28 73 65 6c 66 2e 73 74 61 63 6b 2c 20 69 64 78 29 0a 20 20 20 ipher_value(self.stack,.idx)....
6f100 20 20 20 20 20 72 65 74 75 72 6e 20 43 69 70 68 65 72 28 76 29 0a 0a 20 20 20 20 64 65 66 20 5f .....return.Cipher(v)......def._
6f120 5f 69 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 _iter__(self):.........#.type:.(
6f140 29 20 2d 3e 20 49 74 65 72 61 62 6c 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 73 ).->.Iterable.........for.i.in.s
6f160 69 78 2e 6d 6f 76 65 73 2e 72 61 6e 67 65 28 6d 32 2e 73 6b 5f 73 73 6c 5f 63 69 70 68 65 72 5f ix.moves.range(m2.sk_ssl_cipher_
6f180 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 79 69 num(self.stack)):.............yi
6f1a0 65 6c 64 20 73 65 6c 66 5b 69 5d 0a 94 7d 94 28 8c 0f 43 69 70 68 65 72 2e 5f 5f 69 6e 69 74 5f eld.self[i]..}.(..Cipher.__init_
6f1c0 5f 94 6a 74 1f 00 00 4b 0d 4b 0f 87 94 8c 0e 43 69 70 68 65 72 2e 5f 5f 6c 65 6e 5f 5f 94 6a 74 _.jt...K.K.....Cipher.__len__.jt
6f1e0 1f 00 00 4b 11 4b 13 87 94 8c 0f 43 69 70 68 65 72 2e 5f 5f 72 65 70 72 5f 5f 94 6a 74 1f 00 00 ...K.K.....Cipher.__repr__.jt...
6f200 4b 15 4b 17 87 94 8c 0e 43 69 70 68 65 72 2e 5f 5f 73 74 72 5f 5f 94 6a 74 1f 00 00 4b 19 4b 1b K.K.....Cipher.__str__.jt...K.K.
6f220 87 94 8c 0e 43 69 70 68 65 72 2e 76 65 72 73 69 6f 6e 94 6a 74 1f 00 00 4b 1d 4b 1f 87 94 8c 0b ....Cipher.version.jt...K.K.....
6f240 43 69 70 68 65 72 2e 6e 61 6d 65 94 6a 74 1f 00 00 4b 21 4b 23 87 94 8c 06 43 69 70 68 65 72 94 Cipher.name.jt...K!K#....Cipher.
6f260 6a 7d 1f 00 00 4b 0c 4b 23 87 94 8c 15 43 69 70 68 65 72 5f 53 74 61 63 6b 2e 5f 5f 69 6e 69 74 j}...K.K#....Cipher_Stack.__init
6f280 5f 5f 94 6a 74 1f 00 00 4b 27 4b 2c 87 94 8c 14 43 69 70 68 65 72 5f 53 74 61 63 6b 2e 5f 5f 6c __.jt...K'K,....Cipher_Stack.__l
6f2a0 65 6e 5f 5f 94 6a 74 1f 00 00 4b 2e 4b 30 87 94 8c 18 43 69 70 68 65 72 5f 53 74 61 63 6b 2e 5f en__.jt...K.K0....Cipher_Stack._
6f2c0 5f 67 65 74 69 74 65 6d 5f 5f 94 6a 74 1f 00 00 4b 32 4b 37 87 94 8c 15 43 69 70 68 65 72 5f 53 _getitem__.jt...K2K7....Cipher_S
6f2e0 74 61 63 6b 2e 5f 5f 69 74 65 72 5f 5f 94 6a 74 1f 00 00 4b 39 4b 3c 87 94 8c 0c 43 69 70 68 65 tack.__iter__.jt...K9K<....Ciphe
6f300 72 5f 53 74 61 63 6b 94 6a 7d 1f 00 00 4b 26 4b 3c 87 94 75 7d 94 28 8c 06 43 69 70 68 65 72 94 r_Stack.j}...K&K<..u}.(..Cipher.
6f320 6a 5c 02 00 00 8c 0b 43 69 70 68 65 72 2e 6e 61 6d 65 94 6a 5c 02 00 00 8c 0e 43 69 70 68 65 72 j\.....Cipher.name.j\.....Cipher
6f340 2e 76 65 72 73 69 6f 6e 94 6a 5c 02 00 00 8c 0c 43 69 70 68 65 72 5f 53 74 61 63 6b 94 6a 5c 02 .version.j\.....Cipher_Stack.j\.
6f360 00 00 75 8c 13 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 74 94 8c 17 4d 32 43 ..u..M2Crypto.SSL.Cipher.t...M2C
6f380 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 28 58 30 60 00 00 66 72 6f 6d 20 rypto.SSL.Connection.(X0`..from.
6f3a0 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 __future__.import.absolute_impor
6f3c0 74 0a 0a 22 22 22 53 53 4c 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 61 6b 61 20 73 6f 63 6b 65 74 0a t.."""SSL.Connection.aka.socket.
6f3e0 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 34 20 4e 67 20 50 68 65 6e .Copyright.(c).1999-2004.Ng.Phen
6f400 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 50 g.Siong..All.rights.reserved...P
6f420 6f 72 74 69 6f 6e 73 20 63 72 65 61 74 65 64 20 62 79 20 4f 70 65 6e 20 53 6f 75 72 63 65 20 41 ortions.created.by.Open.Source.A
6f440 70 70 6c 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 20 28 4f 53 41 46 29 20 61 72 pplications.Foundation.(OSAF).ar
6f460 65 0a 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 30 34 2d 32 30 30 37 20 4f 53 41 46 2e 20 e.Copyright.(C).2004-2007.OSAF..
6f480 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 All.Rights.Reserved...Copyright.
6f4a0 32 30 30 38 20 48 65 69 6b 6b 69 20 54 6f 69 76 6f 6e 65 6e 2e 20 41 6c 6c 20 72 69 67 68 74 73 2008.Heikki.Toivonen..All.rights
6f4c0 20 72 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 69 .reserved.."""..import.logging.i
6f4e0 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f mport.socket..from.M2Crypto.impo
6f500 72 74 20 42 49 4f 2c 20 45 72 72 2c 20 58 35 30 39 2c 20 6d 32 2c 20 70 79 32 37 70 6c 75 73 2c rt.BIO,.Err,.X509,.m2,.py27plus,
6f520 20 73 69 78 2c 20 75 74 69 6c 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f .six,.util..#.noqa.from.M2Crypto
6f540 2e 53 53 4c 20 69 6d 70 6f 72 74 20 43 68 65 63 6b 65 72 2c 20 43 6f 6e 74 65 78 74 2c 20 74 69 .SSL.import.Checker,.Context,.ti
6f560 6d 65 6f 75 74 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 20 meout..#.noqa.from.M2Crypto.SSL.
6f580 69 6d 70 6f 72 74 20 53 53 4c 45 72 72 6f 72 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 import.SSLError.from.M2Crypto.SS
6f5a0 4c 2e 43 69 70 68 65 72 20 69 6d 70 6f 72 74 20 43 69 70 68 65 72 2c 20 43 69 70 68 65 72 5f 53 L.Cipher.import.Cipher,.Cipher_S
6f5c0 74 61 63 6b 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 20 69 tack.from.M2Crypto.SSL.Session.i
6f5e0 6d 70 6f 72 74 20 53 65 73 73 69 6f 6e 0a 69 66 20 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 mport.Session.if.py27plus:.....f
6f600 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 41 6e 79 53 74 72 2c 20 43 rom.typing.import.Any,.AnyStr,.C
6f620 61 6c 6c 61 62 6c 65 2c 20 44 69 63 74 2c 20 4c 69 73 74 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 allable,.Dict,.List,.Optional,.T
6f640 75 70 6c 65 2c 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b uple,.Union..#.noqa..__all__.=.[
6f660 27 43 6f 6e 6e 65 63 74 69 6f 6e 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 74 69 6d 65 6f 75 'Connection',............'timeou
6f680 74 27 2c 20 20 23 20 58 58 58 20 4e 6f 74 20 72 65 61 6c 6c 79 2c 20 62 75 74 20 66 6f 72 20 64 t',..#.XXX.Not.really,.but.for.d
6f6a0 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 0a 20 20 20 20 20 20 20 20 20 20 ocumentation.purposes...........
6f6c0 20 5d 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 65 72 28 5f 5f 6e 61 .]..log.=.logging.getLogger(__na
6f6e0 6d 65 5f 5f 29 0a 0a 0a 64 65 66 20 5f 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f me__)...def._serverPostConnectio
6f700 6e 43 68 65 63 6b 28 2a 61 72 67 73 2c 20 2a 2a 6b 77 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a nCheck(*args,.**kw):.....#.type:
6f720 20 28 2a 41 6e 79 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 72 65 74 75 72 6e .(*Any,.**Any).->.int.....return
6f740 20 31 0a 0a 0a 63 6c 61 73 73 20 43 6f 6e 6e 65 63 74 69 6f 6e 28 6f 62 6a 65 63 74 29 3a 0a 20 .1...class.Connection(object):..
6f760 20 20 20 22 22 22 41 6e 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 22 22 0a 0a 20 20 20 ..."""An.SSL.connection.""".....
6f780 20 63 6c 69 65 6e 74 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 20 3d 20 43 68 65 .clientPostConnectionCheck.=.Che
6f7a0 63 6b 65 72 2e 43 68 65 63 6b 65 72 28 29 0a 20 20 20 20 73 65 72 76 65 72 50 6f 73 74 43 6f 6e cker.Checker().....serverPostCon
6f7c0 6e 65 63 74 69 6f 6e 43 68 65 63 6b 20 3d 20 5f 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e 65 63 nectionCheck.=._serverPostConnec
6f7e0 74 69 6f 6e 43 68 65 63 6b 0a 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 66 72 65 65 20 3d 20 6d 32 2e tionCheck......m2_bio_free.=.m2.
6f800 62 69 6f 5f 66 72 65 65 0a 20 20 20 20 6d 32 5f 73 73 6c 5f 66 72 65 65 20 3d 20 6d 32 2e 73 73 bio_free.....m2_ssl_free.=.m2.ss
6f820 6c 5f 66 72 65 65 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 20 3d 20 6d 32 2e 62 l_free.....m2_bio_noclose.=.m2.b
6f840 69 6f 5f 6e 6f 63 6c 6f 73 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c io_noclose......def.__init__(sel
6f860 66 2c 20 63 74 78 2c 20 73 6f 63 6b 3d 4e 6f 6e 65 2c 20 66 61 6d 69 6c 79 3d 73 6f 63 6b 65 74 f,.ctx,.sock=None,.family=socket
6f880 2e 41 46 5f 49 4e 45 54 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 43 6f 6e 74 .AF_INET):.........#.type:.(Cont
6f8a0 65 78 74 2c 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 ext,.socket.socket,.int).->.None
6f8c0 0a 20 20 20 20 20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 74 78 ........."""..........:param.ctx
6f8e0 3a 20 53 53 4c 2e 43 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 6f 63 :.SSL.Context.........:param.soc
6f900 6b 3a 20 73 6f 63 6b 65 74 20 74 6f 20 62 65 20 75 73 65 64 0a 20 20 20 20 20 20 20 20 3a 70 61 k:.socket.to.be.used.........:pa
6f920 72 61 6d 20 66 61 6d 69 6c 79 3a 20 73 6f 63 6b 65 74 20 66 61 6d 69 6c 79 0a 20 20 20 20 20 20 ram.family:.socket.family.......
6f940 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 63 74 78 0a 20 20 20 ..""".........self.ctx.=.ctx....
6f960 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 20 3d 20 6d 32 2e 73 73 6c 5f 6e 65 77 28 73 65 6c 66 2e .....self.ssl.=.m2.ssl_new(self.
6f980 63 74 78 2e 63 74 78 29 20 20 23 20 74 79 70 65 3a 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 ctx.ctx)..#.type:.bytes.........
6f9a0 69 66 20 73 6f 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 if.sock.is.not.None:............
6f9c0 20 73 65 6c 66 2e 73 6f 63 6b 65 74 20 3d 20 73 6f 63 6b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 .self.socket.=.sock.........else
6f9e0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 20 3d 20 73 6f 63 6b :.............self.socket.=.sock
6fa00 65 74 2e 73 6f 63 6b 65 74 28 66 61 6d 69 6c 79 2c 20 73 6f 63 6b 65 74 2e 53 4f 43 4b 5f 53 54 et.socket(family,.socket.SOCK_ST
6fa20 52 45 41 4d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 REAM).............self.socket.se
6fa40 74 73 6f 63 6b 6f 70 74 28 73 6f 63 6b 65 74 2e 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 73 6f 63 6b tsockopt(socket.SOL_SOCKET,.sock
6fa60 65 74 2e 53 4f 5f 52 45 55 53 45 41 44 44 52 2c 20 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 et.SO_REUSEADDR,.1).........self
6fa80 2e 5f 66 69 6c 65 6e 6f 20 3d 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 66 69 6c 65 6e 6f 28 29 0a ._fileno.=.self.socket.fileno().
6faa0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 20 3d 20 73 65 6c 66 2e 73 6f .........self._timeout.=.self.so
6fac0 63 6b 65 74 2e 67 65 74 74 69 6d 65 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c cket.gettimeout().........if.sel
6fae0 66 2e 5f 74 69 6d 65 6f 75 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 f._timeout.is.None:.............
6fb00 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 20 3d 20 2d 31 2e 30 0a 0a 20 20 20 20 20 20 20 20 73 65 self._timeout.=.-1.0..........se
6fb20 6c 66 2e 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 20 3d 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f lf.ssl_close_flag.=.m2.bio_noclo
6fb40 73 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 63 74 78 2e 70 6f 73 74 5f 63 6f 6e se..........if.self.ctx.post_con
6fb60 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 nection_check.is.not.None:......
6fb80 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f .......self.set_post_connection_
6fba0 63 68 65 63 6b 5f 63 61 6c 6c 62 61 63 6b 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 check_callback(.................
6fbc0 73 65 6c 66 2e 63 74 78 2e 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 29 0a self.ctx.post_connection_check).
6fbe0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 4e 6f 6e 65 0a 0a 20 20 20 20 64 .........self.host.=.None......d
6fc00 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 ef.__del__(self):.........#.type
6fc20 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 74 69 63 65 20 74 68 :.().->.None.........#.Notice.th
6fc40 61 74 20 4d 32 43 72 79 70 74 6f 20 64 6f 65 73 6e 27 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c at.M2Crypto.doesn't.automaticall
6fc60 79 20 73 68 75 74 73 20 64 6f 77 6e 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 20 63 6f 6e 6e 65 y.shuts.down.the.........#.conne
6fc80 63 74 69 6f 6e 20 68 65 72 65 2e 20 59 6f 75 20 68 61 76 65 20 74 6f 20 63 61 6c 6c 20 73 65 6c ction.here..You.have.to.call.sel
6fca0 66 2e 63 6c 6f 73 65 28 29 20 69 6e 20 79 6f 75 72 0a 20 20 20 20 20 20 20 20 23 20 70 72 6f 67 f.close().in.your.........#.prog
6fcc0 72 61 6d 2c 20 4d 32 43 72 79 70 74 6f 20 77 6f 6e 27 74 20 64 6f 20 69 74 20 61 75 74 6f 6d 61 ram,.M2Crypto.won't.do.it.automa
6fce0 74 69 63 61 6c 6c 79 20 66 6f 72 20 79 6f 75 2e 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 tically.for.you..........if.geta
6fd00 74 74 72 28 73 65 6c 66 2c 20 27 73 73 6c 62 69 6f 27 2c 20 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 ttr(self,.'sslbio',.None):......
6fd20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 73 73 6c .......self.m2_bio_free(self.ssl
6fd40 62 69 6f 29 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 73 bio).........if.getattr(self,.'s
6fd60 6f 63 6b 62 69 6f 27 2c 20 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ockbio',.None):.............self
6fd80 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 73 6f 63 6b 62 69 6f 29 0a 20 20 20 20 20 .m2_bio_free(self.sockbio)......
6fda0 20 20 20 69 66 20 73 65 6c 66 2e 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 20 3d 3d 20 73 65 6c ...if.self.ssl_close_flag.==.sel
6fdc0 66 2e 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 20 61 6e 64 20 5c 0a 20 20 20 20 20 20 20 20 20 f.m2_bio_noclose.and.\..........
6fde0 20 20 20 20 20 20 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 73 73 6c 27 2c 20 4e 6f 6e 65 .......getattr(self,.'ssl',.None
6fe00 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 73 73 6c 5f 66 72 65 65 28 ):.............self.m2_ssl_free(
6fe20 73 65 6c 66 2e 73 73 6c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 63 6c self.ssl).........self.socket.cl
6fe40 6f 73 65 28 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 ose()......def.close(self):.....
6fe60 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 6d ....#.type:.().->.None.........m
6fe80 32 2e 73 73 6c 5f 73 68 75 74 64 6f 77 6e 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 2.ssl_shutdown(self.ssl)......de
6fea0 66 20 63 6c 65 61 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 f.clear(self):.........#.type:.(
6fec0 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 49 66 20 ).->.int.........""".........If.
6fee0 74 68 65 72 65 20 77 65 72 65 20 65 72 72 6f 72 73 20 69 6e 20 74 68 69 73 20 63 6f 6e 6e 65 63 there.were.errors.in.this.connec
6ff00 74 69 6f 6e 2c 20 63 61 6c 6c 20 63 6c 65 61 72 28 29 20 72 61 74 68 65 72 0a 20 20 20 20 20 20 tion,.call.clear().rather.......
6ff20 20 20 74 68 61 6e 20 63 6c 6f 73 65 28 29 20 74 6f 20 65 6e 64 20 69 74 2c 20 73 6f 20 74 68 61 ..than.close().to.end.it,.so.tha
6ff40 74 20 62 61 64 20 73 65 73 73 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20 63 6c 65 61 72 65 64 0a 20 t.bad.sessions.will.be.cleared..
6ff60 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 63 68 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 .......from.cache.........."""..
6ff80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 6c 65 61 72 28 73 65 6c 66 2e .......return.m2.ssl_clear(self.
6ffa0 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 68 75 74 64 6f 77 6e 28 73 65 6c 66 2c ssl)......def.set_shutdown(self,
6ffc0 20 6d 6f 64 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e .mode):.........#.type:.(int).->
6ffe0 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 73 20 74 68 65 20 73 68 75 74 64 6f .None........."""Sets.the.shutdo
70000 77 6e 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 6d 6f wn.state.of.the.Connection.to.mo
70020 64 65 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 73 68 75 74 64 6f 77 6e 20 73 74 61 74 65 20 de...........The.shutdown.state.
70040 6f 66 20 61 6e 20 73 73 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 61 20 62 69 74 6d 61 73 of.an.ssl.connection.is.a.bitmas
70060 6b 20 6f 66 20 28 75 73 65 0a 20 20 20 20 20 20 20 20 6d 32 2e 53 53 4c 5f 2a 20 63 6f 6e 73 74 k.of.(use.........m2.SSL_*.const
70080 61 6e 74 73 29 3a 0a 0a 20 20 20 20 20 20 20 20 30 20 20 20 4e 6f 20 73 68 75 74 64 6f 77 6e 20 ants):..........0...No.shutdown.
700a0 73 65 74 74 69 6e 67 2c 20 79 65 74 2e 0a 0a 20 20 20 20 20 20 20 20 53 53 4c 5f 53 45 4e 54 5f setting,.yet...........SSL_SENT_
700c0 53 48 55 54 44 4f 57 4e 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 20 22 63 6c 6f 73 65 20 6e 6f SHUTDOWN.............A."close.no
700e0 74 69 66 79 22 20 73 68 75 74 64 6f 77 6e 20 61 6c 65 72 74 20 77 61 73 20 73 65 6e 74 20 74 6f tify".shutdown.alert.was.sent.to
70100 20 74 68 65 20 70 65 65 72 2c 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 .the.peer,.the.............conne
70120 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 63 6f 6e 73 69 64 65 72 65 64 20 63 6c 6f 73 65 64 ction.is.being.considered.closed
70140 20 61 6e 64 20 74 68 65 20 73 65 73 73 69 6f 6e 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 .and.the.session.is.............
70160 63 6c 6f 73 65 64 20 61 6e 64 20 63 6f 72 72 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 53 53 4c closed.and.correct...........SSL
70180 5f 52 45 43 45 49 56 45 44 5f 53 48 55 54 44 4f 57 4e 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 _RECEIVED_SHUTDOWN.............A
701a0 20 73 68 75 74 64 6f 77 6e 20 61 6c 65 72 74 20 77 61 73 20 72 65 63 65 69 76 65 64 20 66 6f 72 .shutdown.alert.was.received.for
701c0 6d 20 74 68 65 20 70 65 65 72 2c 20 65 69 74 68 65 72 20 61 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 m.the.peer,.either.a.normal.....
701e0 20 20 20 20 20 20 20 20 22 63 6c 6f 73 65 20 6e 6f 74 69 66 79 22 20 6f 72 20 61 20 66 61 74 61 ........"close.notify".or.a.fata
70200 6c 20 65 72 72 6f 72 2e 0a 0a 20 20 20 20 20 20 20 20 53 53 4c 5f 53 45 4e 54 5f 53 48 55 54 44 l.error...........SSL_SENT_SHUTD
70220 4f 57 4e 20 61 6e 64 20 53 53 4c 5f 52 45 43 45 49 56 45 44 5f 53 48 55 54 44 4f 57 4e 20 63 61 OWN.and.SSL_RECEIVED_SHUTDOWN.ca
70240 6e 20 62 65 20 73 65 74 20 61 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 73 61 6d 65 20 74 69 6d n.be.set.at.the.........same.tim
70260 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 6f 64 65 3a 20 73 65 74 20 74 68 65 e...........:param.mode:.set.the
70280 20 6d 6f 64 65 20 62 69 74 6d 61 73 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .mode.bitmask.........."""......
702a0 20 20 20 6d 32 2e 73 73 6c 5f 73 65 74 5f 73 68 75 74 64 6f 77 6e 31 28 73 65 6c 66 2e 73 73 6c ...m2.ssl_set_shutdown1(self.ssl
702c0 2c 20 6d 6f 64 65 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 68 75 74 64 6f 77 6e 28 73 65 ,.mode)......def.get_shutdown(se
702e0 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a lf):.........#.type:.().->.None.
70300 20 20 20 20 20 20 20 20 22 22 22 47 65 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 68 75 74 64 ........"""Get.the.current.shutd
70320 6f 77 6e 20 6d 6f 64 65 20 6f 66 20 74 68 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 2e 22 22 22 0a 20 own.mode.of.the.Connection."""..
70340 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 73 68 75 74 64 6f 77 .......return.m2.ssl_get_shutdow
70360 6e 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 62 69 6e 64 28 73 65 6c 66 2c 20 n(self.ssl)......def.bind(self,.
70380 61 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 75 74 69 6c 2e 41 64 64 addr):.........#.type:.(util.Add
703a0 72 54 79 70 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b rType).->.None.........self.sock
703c0 65 74 2e 62 69 6e 64 28 61 64 64 72 29 0a 0a 20 20 20 20 64 65 66 20 6c 69 73 74 65 6e 28 73 65 et.bind(addr)......def.listen(se
703e0 6c 66 2c 20 71 6c 65 6e 3d 35 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e lf,.qlen=5):.........#.type:.(in
70400 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 6c t).->.None.........self.socket.l
70420 69 73 74 65 6e 28 71 6c 65 6e 29 0a 0a 20 20 20 20 64 65 66 20 73 73 6c 5f 67 65 74 5f 65 72 72 isten(qlen)......def.ssl_get_err
70440 6f 72 28 73 65 6c 66 2c 20 72 65 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 or(self,.ret):.........#.type:.(
70460 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 int).->.int.........return.m2.ss
70480 6c 5f 67 65 74 5f 65 72 72 6f 72 28 73 65 6c 66 2e 73 73 6c 2c 20 72 65 74 29 0a 0a 20 20 20 20 l_get_error(self.ssl,.ret)......
704a0 64 65 66 20 73 65 74 5f 62 69 6f 28 73 65 6c 66 2c 20 72 65 61 64 62 69 6f 2c 20 77 72 69 74 65 def.set_bio(self,.readbio,.write
704c0 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 bio):.........#.type:.(BIO.BIO,.
704e0 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 45 78 70 6c BIO.BIO).->.None........."""Expl
70500 69 63 69 74 6c 79 20 73 65 74 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 62 69 6f 73 0a 0a icitly.set.read.and.write.bios..
70520 20 20 20 20 20 20 20 20 43 6f 6e 6e 65 63 74 73 20 74 68 65 20 42 49 4f 73 20 66 6f 72 20 74 68 ........Connects.the.BIOs.for.th
70540 65 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f 66 20 74 e.read.and.write.operations.of.t
70560 68 65 0a 20 20 20 20 20 20 20 20 54 4c 53 2f 53 53 4c 20 28 65 6e 63 72 79 70 74 65 64 29 20 73 he.........TLS/SSL.(encrypted).s
70580 69 64 65 20 6f 66 20 73 73 6c 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 53 53 4c 20 65 6e 67 ide.of.ssl...........The.SSL.eng
705a0 69 6e 65 20 69 6e 68 65 72 69 74 73 20 74 68 65 20 62 65 68 61 76 69 6f 75 72 20 6f 66 20 62 6f ine.inherits.the.behaviour.of.bo
705c0 74 68 20 42 49 4f 20 6f 62 6a 65 63 74 73 2c 0a 20 20 20 20 20 20 20 20 72 65 73 70 65 63 74 69 th.BIO.objects,.........respecti
705e0 76 65 6c 79 2e 20 49 66 20 61 20 42 49 4f 20 69 73 20 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e 67 2c 20 vely..If.a.BIO.is.non-blocking,.
70600 74 68 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 0a 20 20 20 20 20 20 20 the.Connection.will.also........
70620 20 68 61 76 65 20 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e 67 20 62 65 68 61 76 69 6f 75 72 2e 0a 0a 20 .have.non-blocking.behaviour....
70640 20 20 20 20 20 20 20 49 66 20 74 68 65 72 65 20 77 61 73 20 61 6c 72 65 61 64 79 20 61 20 42 49 .......If.there.was.already.a.BI
70660 4f 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 43 6f 6e 6e 65 63 74 69 6f 6e 2c 20 42 49 4f 5f 66 O.connected.to.Connection,.BIO_f
70680 72 65 65 28 29 0a 20 20 20 20 20 20 20 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 28 66 6f ree().........will.be.called.(fo
706a0 72 20 62 6f 74 68 20 74 68 65 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 20 73 r.both.the.reading.and.writing.s
706c0 69 64 65 2c 20 69 66 0a 20 20 20 20 20 20 20 20 64 69 66 66 65 72 65 6e 74 29 2e 0a 0a 20 20 20 ide,.if.........different)......
706e0 20 20 20 20 20 3a 70 61 72 61 6d 20 72 65 61 64 62 69 6f 3a 20 42 49 4f 20 66 6f 72 20 72 65 61 .....:param.readbio:.BIO.for.rea
70700 64 69 6e 67 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 77 72 69 74 65 62 69 6f 3a 20 42 49 ding.........:param.writebio:.BI
70720 4f 20 66 6f 72 20 77 72 69 74 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 O.for.writing.........."""......
70740 20 20 20 6d 32 2e 73 73 6c 5f 73 65 74 5f 62 69 6f 28 73 65 6c 66 2e 73 73 6c 2c 20 72 65 61 64 ...m2.ssl_set_bio(self.ssl,.read
70760 62 69 6f 2e 5f 70 74 72 28 29 2c 20 77 72 69 74 65 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 bio._ptr(),.writebio._ptr())....
70780 20 20 64 65 66 20 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 ..def.set_client_CA_list_from_fi
707a0 6c 65 28 73 65 6c 66 2c 20 63 61 66 69 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 le(self,.cafile):.........#.type
707c0 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 :.(AnyStr).->.None........."""Se
707e0 74 20 74 68 65 20 61 63 63 65 70 74 61 62 6c 65 20 63 6c 69 65 6e 74 20 43 41 20 6c 69 73 74 2e t.the.acceptable.client.CA.list.
70800 0a 0a 20 20 20 20 20 20 20 20 49 66 20 74 68 65 20 63 6c 69 65 6e 74 20 72 65 74 75 72 6e 73 20 ..........If.the.client.returns.
70820 61 20 63 65 72 74 69 66 69 63 61 74 65 2c 20 69 74 20 6d 75 73 74 20 68 61 76 65 20 62 65 65 6e a.certificate,.it.must.have.been
70840 20 69 73 73 75 65 64 20 62 79 0a 20 20 20 20 20 20 20 20 6f 6e 65 20 6f 66 20 74 68 65 20 43 41 .issued.by.........one.of.the.CA
70860 73 20 6c 69 73 74 65 64 20 69 6e 20 63 61 66 69 6c 65 2e 0a 0a 20 20 20 20 20 20 20 20 4d 61 6b s.listed.in.cafile...........Mak
70880 65 73 20 73 65 6e 73 65 20 6f 6e 6c 79 20 66 6f 72 20 73 65 72 76 65 72 73 2e 0a 0a 20 20 20 20 es.sense.only.for.servers.......
708a0 20 20 20 20 3a 70 61 72 61 6d 20 63 61 66 69 6c 65 3a 20 46 69 6c 65 6e 61 6d 65 20 66 72 6f 6d ....:param.cafile:.Filename.from
708c0 20 77 68 69 63 68 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 43 41 20 6c 69 73 74 2e 0a 0a 20 20 20 .which.to.load.the.CA.list......
708e0 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 41 20 66 61 69 6c 75 72 65 20 77 68 69 6c 65 20 .....:return:.0.A.failure.while.
70900 6d 61 6e 69 70 75 6c 61 74 69 6e 67 20 74 68 65 20 53 54 41 43 4b 5f 4f 46 28 58 35 30 39 5f 4e manipulating.the.STACK_OF(X509_N
70920 41 4d 45 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f AME)....................object.o
70940 63 63 75 72 72 65 64 20 6f 72 20 74 68 65 20 58 35 30 39 5f 4e 41 4d 45 20 63 6f 75 6c 64 20 6e ccurred.or.the.X509_NAME.could.n
70960 6f 74 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 72 61 63 74 ot.be....................extract
70980 65 64 20 66 72 6f 6d 20 63 61 63 65 72 74 2e 20 43 68 65 63 6b 20 74 68 65 20 65 72 72 6f 72 20 ed.from.cacert..Check.the.error.
709a0 73 74 61 63 6b 20 74 6f 20 66 69 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 stack.to.find...................
709c0 20 6f 75 74 20 74 68 65 20 72 65 61 73 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .out.the.reason.................
709e0 20 20 20 31 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 75 63 63 65 65 64 65 64 2e 0a 20 20 ...1.The.operation.succeeded....
70a00 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 73 65 74 5f 63 6c 69 ......""".........m2.ssl_set_cli
70a20 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 28 73 65 6c 66 2e 73 73 6c 2c 20 ent_CA_list_from_file(self.ssl,.
70a40 63 61 66 69 6c 65 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c cafile)......def.set_client_CA_l
70a60 69 73 74 5f 66 72 6f 6d 5f 63 6f 6e 74 65 78 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 ist_from_context(self):.........
70a80 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 #.type:.().->.None........."""..
70aa0 20 20 20 20 20 20 20 53 65 74 20 74 68 65 20 61 63 63 65 70 74 61 62 6c 65 20 63 6c 69 65 6e 74 .......Set.the.acceptable.client
70ac0 20 43 41 20 6c 69 73 74 2e 20 49 66 20 74 68 65 20 63 6c 69 65 6e 74 0a 20 20 20 20 20 20 20 20 .CA.list..If.the.client.........
70ae0 72 65 74 75 72 6e 73 20 61 20 63 65 72 74 69 66 69 63 61 74 65 2c 20 69 74 20 6d 75 73 74 20 68 returns.a.certificate,.it.must.h
70b00 61 76 65 20 62 65 65 6e 20 69 73 73 75 65 64 20 62 79 0a 20 20 20 20 20 20 20 20 6f 6e 65 20 6f ave.been.issued.by.........one.o
70b20 66 20 74 68 65 20 43 41 73 20 6c 69 73 74 65 64 20 69 6e 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 f.the.CAs.listed.in.context.....
70b40 20 20 20 20 20 20 4d 61 6b 65 73 20 73 65 6e 73 65 20 6f 6e 6c 79 20 66 6f 72 20 73 65 72 76 65 ......Makes.sense.only.for.serve
70b60 72 73 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 73 rs..........""".........m2.ssl_s
70b80 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 63 6f 6e 74 65 78 74 28 73 et_client_CA_list_from_context(s
70ba0 65 6c 66 2e 73 73 6c 2c 20 73 65 6c 66 2e 63 74 78 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 elf.ssl,.self.ctx.ctx)......def.
70bc0 73 65 74 75 70 5f 61 64 64 72 28 73 65 6c 66 2c 20 61 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 setup_addr(self,.addr):.........
70be0 23 20 74 79 70 65 3a 20 28 75 74 69 6c 2e 41 64 64 72 54 79 70 65 29 20 2d 3e 20 4e 6f 6e 65 0a #.type:.(util.AddrType).->.None.
70c00 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 72 20 3d 20 61 64 64 72 0a 0a 20 20 20 20 64 65 ........self.addr.=.addr......de
70c20 66 20 73 65 74 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 28 73 65 6c 66 2c 20 66 6c 61 67 29 f.set_ssl_close_flag(self,.flag)
70c40 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a :.........#.type:.(int).->.None.
70c60 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 ........""".........By.default,.
70c80 53 53 4c 20 73 74 72 75 63 74 20 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 69 6e 20 5f 5f 64 65 SSL.struct.will.be.freed.in.__de
70ca0 6c 5f 5f 2e 20 43 61 6c 6c 20 77 69 74 68 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 63 6c l__..Call.with.........m2.bio_cl
70cc0 6f 73 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 64 65 66 61 75 6c 74 2e 0a 0a 20 ose.to.override.this.default....
70ce0 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6c 61 67 3a 20 65 69 74 68 65 72 20 6d 32 2e 62 69 .......:param.flag:.either.m2.bi
70d00 6f 5f 63 6c 6f 73 65 20 6f 72 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 0a 20 20 20 20 20 20 o_close.or.m2.bio_noclose.......
70d20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 66 6c 61 67 20 6e 6f 74 20 69 6e 20 28 6d 32 ..""".........if.flag.not.in.(m2
70d40 2e 62 69 6f 5f 63 6c 6f 73 65 2c 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 29 3a 0a 20 20 20 .bio_close,.m2.bio_noclose):....
70d60 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 66 6c 61 67 20 .........raise.ValueError("flag.
70d80 6d 75 73 74 20 62 65 20 6d 32 2e 62 69 6f 5f 63 6c 6f 73 65 20 6f 72 20 6d 32 2e 62 69 6f 5f 6e must.be.m2.bio_close.or.m2.bio_n
70da0 6f 63 6c 6f 73 65 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 5f 63 6c 6f 73 65 5f oclose").........self.ssl_close_
70dc0 66 6c 61 67 20 3d 20 66 6c 61 67 0a 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 5f 73 73 6c 28 73 flag.=.flag......def.setup_ssl(s
70de0 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 elf):.........#.type:.().->.None
70e00 0a 20 20 20 20 20 20 20 20 23 20 4d 61 6b 65 20 61 20 42 49 4f 5f 73 5f 73 6f 63 6b 65 74 2e 0a .........#.Make.a.BIO_s_socket..
70e20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 ........self.sockbio.=.m2.bio_ne
70e40 77 5f 73 6f 63 6b 65 74 28 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 66 69 6c 65 6e 6f 28 29 2c 20 30 w_socket(self.socket.fileno(),.0
70e60 29 0a 20 20 20 20 20 20 20 20 23 20 4c 69 6e 6b 20 53 53 4c 20 73 74 72 75 63 74 20 77 69 74 68 ).........#.Link.SSL.struct.with
70e80 20 74 68 65 20 42 49 4f 5f 73 6f 63 6b 65 74 2e 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f .the.BIO_socket..........m2.ssl_
70ea0 73 65 74 5f 62 69 6f 28 73 65 6c 66 2e 73 73 6c 2c 20 73 65 6c 66 2e 73 6f 63 6b 62 69 6f 2c 20 set_bio(self.ssl,.self.sockbio,.
70ec0 73 65 6c 66 2e 73 6f 63 6b 62 69 6f 29 0a 20 20 20 20 20 20 20 20 23 20 4d 61 6b 65 20 61 20 42 self.sockbio).........#.Make.a.B
70ee0 49 4f 5f 66 5f 73 73 6c 2e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 62 69 6f 20 3d 20 IO_f_ssl..........self.sslbio.=.
70f00 6d 32 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f 5f 66 5f 73 73 6c 28 29 29 0a 20 20 20 20 20 m2.bio_new(m2.bio_f_ssl())......
70f20 20 20 20 23 20 4c 69 6e 6b 20 42 49 4f 5f 66 5f 73 73 6c 20 77 69 74 68 20 74 68 65 20 53 53 4c ...#.Link.BIO_f_ssl.with.the.SSL
70f40 20 73 74 72 75 63 74 2e 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 73 65 74 5f 73 73 6c 28 .struct..........m2.bio_set_ssl(
70f60 73 65 6c 66 2e 73 73 6c 62 69 6f 2c 20 73 65 6c 66 2e 73 73 6c 2c 20 6d 32 2e 62 69 6f 5f 6e 6f self.sslbio,.self.ssl,.m2.bio_no
70f80 63 6c 6f 73 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 73 65 74 75 70 5f 73 73 6c 28 73 65 6c 66 2c close)......def._setup_ssl(self,
70fa0 20 61 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 75 74 69 6c 2e 41 64 .addr):.........#.type:.(util.Ad
70fc0 64 72 54 79 70 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 44 65 70 72 65 drType).->.None........."""Depre
70fe0 63 61 74 65 64 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 75 70 5f 61 64 64 72 cated""".........self.setup_addr
71000 28 61 64 64 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 75 70 5f 73 73 6c 28 29 0a (addr).........self.setup_ssl().
71020 0a 20 20 20 20 64 65 66 20 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 28 73 65 6c 66 29 3a .....def.set_accept_state(self):
71040 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 .........#.type:.().->.None.....
71060 20 20 20 20 22 22 22 53 65 74 73 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 77 6f 72 6b 20 69 ...."""Sets.Connection.to.work.i
71080 6e 20 74 68 65 20 73 65 72 76 65 72 20 6d 6f 64 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 n.the.server.mode.""".........m2
710a0 2e 73 73 6c 5f 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 28 73 65 6c 66 2e 73 73 6c 29 0a .ssl_set_accept_state(self.ssl).
710c0 0a 20 20 20 20 64 65 66 20 61 63 63 65 70 74 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 .....def.accept_ssl(self):......
710e0 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 0a 20 ...#.type:.().->.Optional[int]..
71100 20 20 20 20 20 20 20 22 22 22 57 61 69 74 73 20 66 6f 72 20 61 20 54 4c 53 2f 53 53 4c 20 63 6c ......."""Waits.for.a.TLS/SSL.cl
71120 69 65 6e 74 20 74 6f 20 69 6e 69 74 69 61 74 65 20 74 68 65 20 54 4c 53 2f 53 53 4c 20 68 61 6e ient.to.initiate.the.TLS/SSL.han
71140 64 73 68 61 6b 65 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 63 6f 6d 6d 75 6e 69 63 61 74 69 dshake...........The.communicati
71160 6f 6e 20 63 68 61 6e 6e 65 6c 20 6d 75 73 74 20 61 6c 72 65 61 64 79 20 68 61 76 65 20 62 65 65 on.channel.must.already.have.bee
71180 6e 20 73 65 74 20 61 6e 64 0a 20 20 20 20 20 20 20 20 61 73 73 69 67 6e 65 64 20 74 6f 20 74 68 n.set.and.........assigned.to.th
711a0 65 20 73 73 6c 20 62 79 20 73 65 74 74 69 6e 67 20 61 6e 20 75 6e 64 65 72 6c 79 69 6e 67 20 42 e.ssl.by.setting.an.underlying.B
711c0 49 4f 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 54 68 65 20 54 4c 53 2f IO...........:return:.0.The.TLS/
711e0 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 20 77 61 73 20 6e 6f 74 20 73 75 63 63 65 73 73 66 75 6c SSL.handshake.was.not.successful
71200 20 62 75 74 20 77 61 73 20 73 68 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .but.was.shut...................
71220 20 64 6f 77 6e 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 61 6e 64 20 62 79 20 74 68 65 20 73 70 65 63 .down.controlled.and.by.the.spec
71240 69 66 69 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ifications.of.the...............
71260 20 20 20 20 20 54 4c 53 2f 53 53 4c 20 70 72 6f 74 6f 63 6f 6c 2e 20 43 61 6c 6c 20 67 65 74 5f .....TLS/SSL.protocol..Call.get_
71280 65 72 72 6f 72 28 29 20 77 69 74 68 20 74 68 65 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 error().with.the.return.........
712a0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 72 65 74 20 74 6f 20 66 69 6e 64 20 6f 75 74 ...........value.ret.to.find.out
712c0 20 74 68 65 20 72 65 61 73 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 .the.reason....................1
712e0 20 54 68 65 20 54 4c 53 2f 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 20 77 61 73 20 73 75 63 63 65 .The.TLS/SSL.handshake.was.succe
71300 73 73 66 75 6c 6c 79 20 63 6f 6d 70 6c 65 74 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ssfully.completed,..............
71320 20 20 20 20 20 20 61 20 54 4c 53 2f 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20 62 ......a.TLS/SSL.connection.has.b
71340 65 65 6e 20 65 73 74 61 62 6c 69 73 68 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 een.established.................
71360 20 20 20 3c 30 20 54 68 65 20 54 4c 53 2f 53 53 4c 20 68 61 6e 64 73 68 61 6b 65 20 77 61 73 20 ...<0.The.TLS/SSL.handshake.was.
71380 6e 6f 74 20 73 75 63 63 65 73 73 66 75 6c 20 62 65 63 61 75 73 65 0a 20 20 20 20 20 20 20 20 20 not.successful.because..........
713a0 20 20 20 20 20 20 20 20 20 20 20 61 20 66 61 74 61 6c 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 ...........a.fatal.error.occurre
713c0 64 20 65 69 74 68 65 72 20 61 74 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 20 6c 65 76 65 6c 0a 20 d.either.at.the.protocol.level..
713e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 20 61 20 63 6f 6e 6e 65 63 74 69 ...................or.a.connecti
71400 6f 6e 20 66 61 69 6c 75 72 65 20 6f 63 63 75 72 72 65 64 2e 20 54 68 65 20 73 68 75 74 64 6f 77 on.failure.occurred..The.shutdow
71420 6e 20 77 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 20 63 6c n.was.....................not.cl
71440 65 61 6e 2e 20 49 74 20 63 61 6e 20 61 6c 73 6f 20 6f 63 63 75 72 20 6f 66 20 61 63 74 69 6f 6e ean..It.can.also.occur.of.action
71460 20 69 73 20 6e 65 65 64 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .is.need.to.....................
71480 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 6f 72 20 6e 6f 6e 2d 62 continue.the.operation.for.non-b
714a0 6c 6f 63 6b 69 6e 67 20 42 49 4f 73 2e 20 43 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 locking.BIOs..Call..............
714c0 20 20 20 20 20 20 20 67 65 74 5f 65 72 72 6f 72 28 29 20 77 69 74 68 20 74 68 65 20 72 65 74 75 .......get_error().with.the.retu
714e0 72 6e 20 76 61 6c 75 65 20 72 65 74 20 74 6f 20 66 69 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 rn.value.ret.to.find............
71500 20 20 20 20 20 20 20 20 20 6f 75 74 20 74 68 65 20 72 65 61 73 6f 6e 2e 0a 20 20 20 20 20 20 20 .........out.the.reason.........
71520 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 61 63 63 65 70 .""".........return.m2.ssl_accep
71540 74 28 73 65 6c 66 2e 73 73 6c 2c 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 29 0a 0a 20 20 20 20 t(self.ssl,.self._timeout)......
71560 64 65 66 20 61 63 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 def.accept(self):.........#.type
71580 3a 20 28 29 20 2d 3e 20 54 75 70 6c 65 5b 43 6f 6e 6e 65 63 74 69 6f 6e 2c 20 75 74 69 6c 2e 41 :.().->.Tuple[Connection,.util.A
715a0 64 64 72 54 79 70 65 5d 0a 20 20 20 20 20 20 20 20 22 22 22 41 63 63 65 70 74 20 61 6e 20 53 53 ddrType]........."""Accept.an.SS
715c0 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 72 65 74 75 72 L.connection...........The.retur
715e0 6e 20 76 61 6c 75 65 20 69 73 20 61 20 70 61 69 72 20 28 73 73 6c 2c 20 61 64 64 72 29 20 77 68 n.value.is.a.pair.(ssl,.addr).wh
71600 65 72 65 20 73 73 6c 20 69 73 20 61 20 6e 65 77 20 53 53 4c 0a 20 20 20 20 20 20 20 20 63 6f 6e ere.ssl.is.a.new.SSL.........con
71620 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 61 6e 64 20 61 64 64 72 20 69 73 20 74 68 65 20 61 nection.object.and.addr.is.the.a
71640 64 64 72 65 73 73 20 62 6f 75 6e 64 20 74 6f 20 74 68 65 20 6f 74 68 65 72 20 65 6e 64 0a 20 20 ddress.bound.to.the.other.end...
71660 20 20 20 20 20 20 6f 66 20 74 68 65 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 ......of.the.SSL.connection.....
71680 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 75 70 6c 65 20 6f 66 20 43 6f 6e 6e 65 63 74 69 ......:return:.tuple.of.Connecti
716a0 6f 6e 20 61 6e 64 20 61 64 64 72 2e 20 41 64 64 72 65 73 73 20 63 61 6e 20 74 61 6b 65 20 76 65 on.and.addr..Address.can.take.ve
716c0 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 69 6f 75 73 20 66 6f 72 6d ry..................various.form
716e0 73 20 28 73 65 65 20 73 6f 63 6b 65 74 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 29 2c 20 66 6f s.(see.socket.documentation),.fo
71700 72 20 49 50 76 34 20 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 74 75 r.IPv4.it..................is.tu
71720 70 6c 65 28 73 74 72 2c 20 69 6e 74 29 2c 20 66 6f 72 20 49 50 76 36 20 61 20 74 75 70 6c 65 20 ple(str,.int),.for.IPv6.a.tuple.
71740 6f 66 20 66 6f 75 72 20 28 68 6f 73 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 of.four.(host,..................
71760 70 6f 72 74 2c 20 66 6c 6f 77 69 6e 66 6f 2c 20 73 63 6f 70 65 69 64 29 2c 20 77 68 65 72 65 20 port,.flowinfo,.scopeid),.where.
71780 74 68 65 20 6c 61 73 74 20 74 77 6f 20 61 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 the.last.two.are................
717a0 20 20 6f 70 74 69 6f 6e 61 6c 20 69 6e 74 73 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 ..optional.ints.........."""....
717c0 20 20 20 20 20 73 6f 63 6b 2c 20 61 64 64 72 20 3d 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 61 63 .....sock,.addr.=.self.socket.ac
717e0 63 65 70 74 28 29 0a 20 20 20 20 20 20 20 20 73 73 6c 20 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 28 cept().........ssl.=.Connection(
71800 73 65 6c 66 2e 63 74 78 2c 20 73 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 73 73 6c 2e 61 64 64 72 self.ctx,.sock).........ssl.addr
71820 20 3d 20 61 64 64 72 0a 20 20 20 20 20 20 20 20 73 73 6c 2e 73 65 74 75 70 5f 73 73 6c 28 29 0a .=.addr.........ssl.setup_ssl().
71840 20 20 20 20 20 20 20 20 73 73 6c 2e 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 28 29 0a 20 ........ssl.set_accept_state()..
71860 20 20 20 20 20 20 20 73 73 6c 2e 61 63 63 65 70 74 5f 73 73 6c 28 29 0a 20 20 20 20 20 20 20 20 .......ssl.accept_ssl().........
71880 63 68 65 63 6b 20 3d 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 70 6f 73 74 43 6f 6e 6e 65 check.=.getattr(self,.'postConne
718a0 63 74 69 6f 6e 43 68 65 63 6b 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ctionCheck',....................
718c0 20 20 20 20 20 73 65 6c 66 2e 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 .....self.serverPostConnectionCh
718e0 65 63 6b 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 68 65 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e eck).........if.check.is.not.Non
71900 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 68 65 63 6b 28 73 73 6c 2e e:.............if.not.check(ssl.
71920 67 65 74 5f 70 65 65 72 5f 63 65 72 74 28 29 2c 20 73 73 6c 2e 61 64 64 72 5b 30 5d 29 3a 0a 20 get_peer_cert(),.ssl.addr[0]):..
71940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 43 68 65 63 6b 65 72 2e 53 53 4c ...............raise.Checker.SSL
71960 56 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 VerificationError(..............
71980 20 20 20 20 20 20 20 27 70 6f 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 68 65 63 6b 20 66 61 .......'post.connection.check.fa
719a0 69 6c 65 64 27 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 73 6c 2c 20 61 64 64 72 0a iled').........return.ssl,.addr.
719c0 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 28 73 65 6c 66 29 .....def.set_connect_state(self)
719e0 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 :.........#.type:.().->.None....
71a00 20 20 20 20 20 22 22 22 53 65 74 73 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 77 6f 72 6b 20 ....."""Sets.Connection.to.work.
71a20 69 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6d 6f 64 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 6d in.the.client.mode.""".........m
71a40 32 2e 73 73 6c 5f 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 28 73 65 6c 66 2e 73 73 6c 2.ssl_set_connect_state(self.ssl
71a60 29 0a 0a 20 20 20 20 64 65 66 20 63 6f 6e 6e 65 63 74 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 )......def.connect_ssl(self):...
71a80 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 ......#.type:.().->.Optional[int
71aa0 5d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 6f 6e 6e 65 63 74 28 ].........return.m2.ssl_connect(
71ac0 73 65 6c 66 2e 73 73 6c 2c 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 29 0a 0a 20 20 20 20 64 65 self.ssl,.self._timeout)......de
71ae0 66 20 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2c 20 61 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 23 f.connect(self,.addr):.........#
71b00 20 74 79 70 65 3a 20 28 75 74 69 6c 2e 41 64 64 72 54 79 70 65 29 20 2d 3e 20 69 6e 74 0a 20 20 .type:.(util.AddrType).->.int...
71b20 20 20 20 20 20 20 22 22 22 4f 76 65 72 6c 6f 61 64 69 6e 67 20 73 6f 63 6b 65 74 2e 63 6f 6e 6e ......"""Overloading.socket.conn
71b40 65 63 74 28 29 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 61 64 64 72 3a 20 61 64 64 72 ect()..........:param.addr:.addr
71b60 65 73 73 65 73 20 68 61 76 65 20 76 61 72 69 6f 75 73 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 esses.have.various.depending.on.
71b80 74 68 65 69 72 20 74 79 70 65 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 73 74 61 74 their.type..........:return:stat
71ba0 75 73 20 6f 66 20 73 73 6c 5f 63 6f 6e 6e 65 63 74 28 29 0a 20 20 20 20 20 20 20 20 22 22 22 0a us.of.ssl_connect().........""".
71bc0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 63 6f 6e 6e 65 63 74 28 61 64 64 72 ........self.socket.connect(addr
71be0 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 72 20 3d 20 61 64 64 72 0a 20 20 20 20 20 ).........self.addr.=.addr......
71c00 20 20 20 73 65 6c 66 2e 73 65 74 75 70 5f 73 73 6c 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 ...self.setup_ssl().........self
71c20 2e 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 .set_connect_state().........ret
71c40 20 3d 20 73 65 6c 66 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 28 29 0a 20 20 20 20 20 20 20 20 63 68 .=.self.connect_ssl().........ch
71c60 65 63 6b 20 3d 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 70 6f 73 74 43 6f 6e 6e 65 63 74 eck.=.getattr(self,.'postConnect
71c80 69 6f 6e 43 68 65 63 6b 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ionCheck',......................
71ca0 20 20 20 73 65 6c 66 2e 63 6c 69 65 6e 74 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 ...self.clientPostConnectionChec
71cc0 6b 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 68 65 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a k).........if.check.is.not.None:
71ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 68 65 63 6b 28 73 65 6c 66 2e 67 .............if.not.check(self.g
71d00 65 74 5f 70 65 65 72 5f 63 65 72 74 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et_peer_cert(),.................
71d20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 69 66 20 73 65 6c 66 2e 68 6f 73 74 20 .........self.host.if.self.host.
71d40 65 6c 73 65 20 73 65 6c 66 2e 61 64 64 72 5b 30 5d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 else.self.addr[0]):.............
71d60 20 20 20 20 72 61 69 73 65 20 43 68 65 63 6b 65 72 2e 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f ....raise.Checker.SSLVerificatio
71d80 6e 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 70 6f 73 nError(.....................'pos
71da0 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 68 65 63 6b 20 66 61 69 6c 65 64 27 29 0a 20 20 20 20 t.connection.check.failed').....
71dc0 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 73 68 75 74 64 6f 77 6e ....return.ret......def.shutdown
71de0 28 73 65 6c 66 2c 20 68 6f 77 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e (self,.how):.........#.type:.(in
71e00 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 73 65 74 5f 73 68 t).->.None.........m2.ssl_set_sh
71e20 75 74 64 6f 77 6e 28 73 65 6c 66 2e 73 73 6c 2c 20 68 6f 77 29 0a 0a 20 20 20 20 64 65 66 20 72 utdown(self.ssl,.how)......def.r
71e40 65 6e 65 67 6f 74 69 61 74 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 enegotiate(self):.........#.type
71e60 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 6e 65 67 6f 74 69 61 :.().->.int........."""Renegotia
71e80 74 65 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 27 73 20 53 53 4c 20 70 61 72 61 6d 65 74 te.this.connection's.SSL.paramet
71ea0 65 72 73 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 72 65 ers.""".........return.m2.ssl_re
71ec0 6e 65 67 6f 74 69 61 74 65 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 70 65 6e negotiate(self.ssl)......def.pen
71ee0 64 69 6e 67 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d ding(self):.........#.type:.().-
71f00 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 >.int........."""Return.the.numb
71f20 65 72 73 20 6f 66 20 6f 63 74 65 74 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 72 65 61 64 20 66 ers.of.octets.that.can.be.read.f
71f40 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 rom.the.connection.""".........r
71f60 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 70 65 6e 64 69 6e 67 28 73 65 6c 66 2e 73 73 6c 29 0a 0a eturn.m2.ssl_pending(self.ssl)..
71f80 20 20 20 20 64 65 66 20 5f 77 72 69 74 65 5f 62 69 6f 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a ....def._write_bio(self,.data):.
71fa0 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 ........#.type:.(bytes).->.int..
71fc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 77 72 69 74 65 28 73 65 6c 66 2e .......return.m2.ssl_write(self.
71fe0 73 73 6c 2c 20 64 61 74 61 2c 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 29 0a 0a 20 20 20 20 64 ssl,.data,.self._timeout)......d
72000 65 66 20 5f 77 72 69 74 65 5f 6e 62 69 6f 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 ef._write_nbio(self,.data):.....
72020 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 ....#.type:.(bytes).->.int......
72040 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 77 72 69 74 65 5f 6e 62 69 6f 28 73 65 6c 66 ...return.m2.ssl_write_nbio(self
72060 2e 73 73 6c 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 5f 72 65 61 64 5f 62 69 6f 28 73 .ssl,.data)......def._read_bio(s
72080 65 6c 66 2c 20 73 69 7a 65 3d 31 30 32 34 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a elf,.size=1024):.........#.type:
720a0 20 28 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 7a 65 20 .(int).->.bytes.........if.size.
720c0 3c 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 <=.0:.............raise.ValueErr
720e0 6f 72 28 27 73 69 7a 65 20 3c 3d 20 30 27 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d or('size.<=.0').........return.m
72100 32 2e 73 73 6c 5f 72 65 61 64 28 73 65 6c 66 2e 73 73 6c 2c 20 73 69 7a 65 2c 20 73 65 6c 66 2e 2.ssl_read(self.ssl,.size,.self.
72120 5f 74 69 6d 65 6f 75 74 29 0a 0a 20 20 20 20 64 65 66 20 5f 72 65 61 64 5f 6e 62 69 6f 28 73 65 _timeout)......def._read_nbio(se
72140 6c 66 2c 20 73 69 7a 65 3d 31 30 32 34 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 lf,.size=1024):.........#.type:.
72160 28 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 7a 65 20 3c (int).->.bytes.........if.size.<
72180 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f =.0:.............raise.ValueErro
721a0 72 28 27 73 69 7a 65 20 3c 3d 20 30 27 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 r('size.<=.0').........return.m2
721c0 2e 73 73 6c 5f 72 65 61 64 5f 6e 62 69 6f 28 73 65 6c 66 2e 73 73 6c 2c 20 73 69 7a 65 29 0a 0a .ssl_read_nbio(self.ssl,.size)..
721e0 20 20 20 20 64 65 66 20 77 72 69 74 65 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 ....def.write(self,.data):......
72200 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 ...#.type:.(bytes).->.int.......
72220 20 20 69 66 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 20 21 3d 20 30 2e 30 3a 0a 20 20 20 20 20 ..if.self._timeout.!=.0.0:......
72240 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 77 72 69 74 65 5f 62 69 6f 28 64 61 .......return.self._write_bio(da
72260 74 61 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 77 72 69 74 65 5f 6e ta).........return.self._write_n
72280 62 69 6f 28 64 61 74 61 29 0a 20 20 20 20 73 65 6e 64 61 6c 6c 20 3d 20 73 65 6e 64 20 3d 20 77 bio(data).....sendall.=.send.=.w
722a0 72 69 74 65 0a 0a 20 20 20 20 64 65 66 20 5f 64 65 63 72 65 66 5f 73 6f 63 6b 65 74 69 6f 73 28 rite......def._decref_socketios(
722c0 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 70 61 73 73 0a 0a 20 20 20 20 64 65 66 20 72 65 63 self):.........pass......def.rec
722e0 76 5f 69 6e 74 6f 28 73 65 6c 66 2c 20 62 75 66 66 2c 20 6e 62 79 74 65 73 3d 30 29 3a 0a 20 20 v_into(self,.buff,.nbytes=0):...
72300 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 55 6e 69 6f 6e 5b 62 79 74 65 61 72 72 61 79 2c 20 ......#.type:.(Union[bytearray,.
72320 6d 65 6d 6f 72 79 76 69 65 77 5d 2c 20 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 memoryview],.int).->.int........
72340 20 22 22 22 0a 20 20 20 20 20 20 20 20 41 20 76 65 72 73 69 6f 6e 20 6f 66 20 72 65 63 76 28 29 .""".........A.version.of.recv()
72360 20 74 68 61 74 20 73 74 6f 72 65 73 20 69 74 73 20 64 61 74 61 20 69 6e 74 6f 20 61 20 62 75 66 .that.stores.its.data.into.a.buf
72380 66 65 72 20 72 61 74 68 65 72 0a 20 20 20 20 20 20 20 20 74 68 61 6e 20 63 72 65 61 74 69 6e 67 fer.rather.........than.creating
723a0 20 61 20 6e 65 77 20 73 74 72 69 6e 67 2e 20 20 52 65 63 65 69 76 65 20 75 70 20 74 6f 20 62 75 .a.new.string...Receive.up.to.bu
723c0 66 66 65 72 73 69 7a 65 20 62 79 74 65 73 20 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 74 68 65 20 ffersize.bytes.from.........the.
723e0 73 6f 63 6b 65 74 2e 20 20 49 66 20 62 75 66 66 65 72 73 69 7a 65 20 69 73 20 6e 6f 74 20 73 70 socket...If.buffersize.is.not.sp
72400 65 63 69 66 69 65 64 20 28 6f 72 20 30 29 2c 20 72 65 63 65 69 76 65 20 75 70 0a 20 20 20 20 20 ecified.(or.0),.receive.up......
72420 20 20 20 74 6f 20 74 68 65 20 73 69 7a 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 ...to.the.size.available.in.the.
72440 67 69 76 65 6e 20 62 75 66 66 65 72 2e 0a 0a 20 20 20 20 20 20 20 20 49 66 20 62 75 66 66 20 69 given.buffer...........If.buff.i
72460 73 20 62 79 74 65 61 72 72 61 79 2c 20 69 74 20 77 69 6c 6c 20 68 61 76 65 20 61 66 74 65 72 20 s.bytearray,.it.will.have.after.
72480 72 65 74 75 72 6e 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 20 20 61 63 74 return.length.of.the.........act
724a0 75 61 6c 6c 79 20 72 65 74 75 72 6e 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 2e 20 ually.returned.number.of.bytes..
724c0 49 66 20 62 75 66 66 20 69 73 20 6d 65 6d 6f 72 79 76 69 65 77 2c 20 74 68 65 6e 0a 20 20 20 20 If.buff.is.memoryview,.then.....
724e0 20 20 20 20 74 68 65 20 73 69 7a 65 20 6f 66 20 62 75 66 66 20 77 6f 6e 27 74 20 63 68 61 6e 67 ....the.size.of.buff.won't.chang
72500 65 20 28 69 74 20 63 61 6e 6e 6f 74 29 2c 20 62 75 74 20 61 6c 6c 20 62 79 74 65 73 20 61 66 74 e.(it.cannot),.but.all.bytes.aft
72520 65 72 0a 20 20 20 20 20 20 20 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 74 75 72 6e 65 er.........the.number.of.returne
72540 64 20 62 79 74 65 73 20 77 69 6c 6c 20 62 65 20 4e 55 4c 4c 2e 0a 0a 20 20 20 20 20 20 20 20 3a d.bytes.will.be.NULL...........:
72560 70 61 72 61 6d 20 62 75 66 66 65 72 3a 20 61 20 62 75 66 66 65 72 20 66 6f 72 20 74 68 65 20 72 param.buffer:.a.buffer.for.the.r
72580 65 63 65 69 76 65 64 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6e 62 79 eceived.bytes.........:param.nby
725a0 74 65 73 3a 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 tes:.maximum.number.of.bytes.to.
725c0 72 65 61 64 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 6e 75 6d 62 65 72 20 6f 66 20 read.........:return:.number.of.
725e0 62 79 74 65 73 20 72 65 61 64 0a 0a 20 20 20 20 20 20 20 20 53 65 65 20 72 65 63 76 28 29 20 66 bytes.read..........See.recv().f
72600 6f 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 66 6c 61 67 73 or.documentation.about.the.flags
72620 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6e 20 3d 20 6c 65 6e 28 62 75 ..........""".........n.=.len(bu
72640 66 66 29 20 69 66 20 6e 62 79 74 65 73 20 3d 3d 20 30 20 65 6c 73 65 20 6e 62 79 74 65 73 0a 0a ff).if.nbytes.==.0.else.nbytes..
72660 20 20 20 20 20 20 20 20 69 66 20 6e 20 3c 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ........if.n.<=.0:.............r
72680 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 73 69 7a 65 20 3c 3d 20 30 27 29 0a 0a 20 20 aise.ValueError('size.<=.0')....
726a0 20 20 20 20 20 20 23 20 62 75 66 66 5f 62 79 74 65 73 20 61 72 65 20 61 63 74 75 61 6c 20 62 79 ......#.buff_bytes.are.actual.by
726c0 74 65 73 20 72 65 74 75 72 6e 65 64 0a 20 20 20 20 20 20 20 20 62 75 66 66 5f 62 79 74 65 73 20 tes.returned.........buff_bytes.
726e0 3d 20 6d 32 2e 73 73 6c 5f 72 65 61 64 28 73 65 6c 66 2e 73 73 6c 2c 20 6e 2c 20 73 65 6c 66 2e =.m2.ssl_read(self.ssl,.n,.self.
72700 5f 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 20 62 75 66 6c 65 6e 20 3d 20 6c 65 6e 28 62 _timeout).........buflen.=.len(b
72720 75 66 66 5f 62 79 74 65 73 29 0a 0a 20 20 20 20 20 20 20 20 23 20 6d 65 6d 6f 72 79 76 69 65 77 uff_bytes)..........#.memoryview
72740 20 74 79 70 65 20 68 61 73 20 62 65 65 6e 20 61 64 64 65 64 20 69 6e 20 32 2e 37 0a 20 20 20 20 .type.has.been.added.in.2.7.....
72760 20 20 20 20 69 66 20 70 79 32 37 70 6c 75 73 20 61 6e 64 20 69 73 69 6e 73 74 61 6e 63 65 28 62 ....if.py27plus.and.isinstance(b
72780 75 66 66 2c 20 6d 65 6d 6f 72 79 76 69 65 77 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 uff,.memoryview):.............bu
727a0 66 66 5b 3a 62 75 66 6c 65 6e 5d 20 3d 20 62 75 66 66 5f 62 79 74 65 73 0a 20 20 20 20 20 20 20 ff[:buflen].=.buff_bytes........
727c0 20 20 20 20 20 62 75 66 66 5b 62 75 66 6c 65 6e 3a 5d 20 3d 20 62 27 5c 78 30 30 27 20 2a 20 28 .....buff[buflen:].=.b'\x00'.*.(
727e0 6c 65 6e 28 62 75 66 66 29 20 2d 20 62 75 66 6c 65 6e 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 len(buff).-.buflen).........else
72800 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 66 5b 3a 5d 20 3d 20 62 75 66 66 5f 62 79 74 :.............buff[:].=.buff_byt
72820 65 73 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 6c 65 6e 0a 0a 20 20 20 20 64 es..........return.buflen......d
72840 65 66 20 72 65 61 64 28 73 65 6c 66 2c 20 73 69 7a 65 3d 31 30 32 34 29 3a 0a 20 20 20 20 20 20 ef.read(self,.size=1024):.......
72860 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 ..#.type:.(int).->.bytes........
72880 20 69 66 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 20 21 3d 20 30 2e 30 3a 0a 20 20 20 20 20 20 .if.self._timeout.!=.0.0:.......
728a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 72 65 61 64 5f 62 69 6f 28 73 69 7a 65 ......return.self._read_bio(size
728c0 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 72 65 61 64 5f 6e 62 69 6f ).........return.self._read_nbio
728e0 28 73 69 7a 65 29 0a 20 20 20 20 72 65 63 76 20 3d 20 72 65 61 64 0a 0a 20 20 20 20 64 65 66 20 (size).....recv.=.read......def.
72900 73 65 74 62 6c 6f 63 6b 69 6e 67 28 73 65 6c 66 2c 20 6d 6f 64 65 29 3a 0a 20 20 20 20 20 20 20 setblocking(self,.mode):........
72920 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 .#.type:.(int).->.None........."
72940 22 22 53 65 74 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 27 73 20 75 6e 64 65 72 6c 79 69 ""Set.this.connection's.underlyi
72960 6e 67 20 73 6f 63 6b 65 74 20 74 6f 20 5f 6d 6f 64 65 5f 2e 0a 0a 20 20 20 20 20 20 20 20 53 65 ng.socket.to._mode_...........Se
72980 74 20 62 6c 6f 63 6b 69 6e 67 20 6f 72 20 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 t.blocking.or.non-blocking.mode.
729a0 6f 66 20 74 68 65 20 73 6f 63 6b 65 74 3a 20 69 66 20 66 6c 61 67 20 69 73 20 30 2c 0a 20 20 20 of.the.socket:.if.flag.is.0,....
729c0 20 20 20 20 20 74 68 65 20 73 6f 63 6b 65 74 20 69 73 20 73 65 74 20 74 6f 20 6e 6f 6e 2d 62 6c .....the.socket.is.set.to.non-bl
729e0 6f 63 6b 69 6e 67 2c 20 65 6c 73 65 20 74 6f 20 62 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a 20 ocking,.else.to.blocking.mode...
72a00 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c 6c 79 20 61 6c 6c 20 73 6f 63 6b 65 74 73 20 61 72 65 .......Initially.all.sockets.are
72a20 20 69 6e 20 62 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 20 49 6e 20 6e 6f 6e 2d 62 6c 6f 63 6b 69 .in.blocking.mode..In.non-blocki
72a40 6e 67 20 6d 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 69 66 20 61 20 72 65 63 76 28 29 20 63 61 6c ng.mode,.........if.a.recv().cal
72a60 6c 20 64 6f 65 73 6e 27 74 20 66 69 6e 64 20 61 6e 79 20 64 61 74 61 2c 20 6f 72 20 69 66 20 61 l.doesn't.find.any.data,.or.if.a
72a80 20 73 65 6e 64 28 29 20 63 61 6c 6c 20 63 61 6e 27 74 0a 20 20 20 20 20 20 20 20 69 6d 6d 65 64 .send().call.can't.........immed
72aa0 69 61 74 65 6c 79 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20 64 61 74 61 2c 20 61 20 65 72 iately.dispose.of.the.data,.a.er
72ac0 72 6f 72 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20 72 61 69 73 65 64 3b 0a 20 20 20 20 20 20 20 ror.exception.is.raised;........
72ae0 20 69 6e 20 62 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2c 20 74 68 65 20 63 61 6c 6c 73 20 62 6c 6f .in.blocking.mode,.the.calls.blo
72b00 63 6b 20 75 6e 74 69 6c 20 74 68 65 79 20 63 61 6e 20 70 72 6f 63 65 65 64 2e 0a 20 20 20 20 20 ck.until.they.can.proceed.......
72b20 20 20 20 73 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 28 30 29 20 69 73 20 65 71 75 69 76 61 6c 65 6e ...s.setblocking(0).is.equivalen
72b40 74 20 74 6f 20 73 2e 73 65 74 74 69 6d 65 6f 75 74 28 30 2e 30 29 3b 0a 20 20 20 20 20 20 20 20 t.to.s.settimeout(0.0);.........
72b60 73 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 28 31 29 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 s.setblocking(1).is.equivalent.t
72b80 6f 20 73 2e 73 65 74 74 69 6d 65 6f 75 74 28 4e 6f 6e 65 29 2e 0a 0a 20 20 20 20 20 20 20 20 3a o.s.settimeout(None)...........:
72ba0 70 61 72 61 6d 20 6d 6f 64 65 3a 20 6e 65 77 20 6d 6f 64 65 20 74 6f 20 62 65 20 73 65 74 0a 20 param.mode:.new.mode.to.be.set..
72bc0 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 .......""".........self.socket.s
72be0 65 74 62 6c 6f 63 6b 69 6e 67 28 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6d 6f 64 65 etblocking(mode).........if.mode
72c00 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 20 3d 20 2d 31 :.............self._timeout.=.-1
72c20 2e 30 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c .0.........else:.............sel
72c40 66 2e 5f 74 69 6d 65 6f 75 74 20 3d 20 30 2e 30 0a 0a 20 20 20 20 64 65 66 20 73 65 74 74 69 6d f._timeout.=.0.0......def.settim
72c60 65 6f 75 74 28 73 65 6c 66 2c 20 74 69 6d 65 6f 75 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 eout(self,.timeout):.........#.t
72c80 79 70 65 3a 20 28 66 6c 6f 61 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 ype:.(float).->.None........."""
72ca0 53 65 74 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 27 73 20 75 6e 64 65 72 6c 79 69 6e 67 Set.this.connection's.underlying
72cc0 20 73 6f 63 6b 65 74 27 73 20 74 69 6d 65 6f 75 74 20 74 6f 20 5f 74 69 6d 65 6f 75 74 5f 2e 22 .socket's.timeout.to._timeout_."
72ce0 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 74 74 69 6d 65 6f 75 "".........self.socket.settimeou
72d00 74 28 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 69 6d 65 6f 75 74 t(timeout).........self._timeout
72d20 20 3d 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 74 69 6d 65 .=.timeout.........if.self._time
72d40 6f 75 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 out.is.None:.............self._t
72d60 69 6d 65 6f 75 74 20 3d 20 2d 31 2e 30 0a 0a 20 20 20 20 64 65 66 20 66 69 6c 65 6e 6f 28 73 65 imeout.=.-1.0......def.fileno(se
72d80 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 lf):.........#.type:.().->.int..
72da0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 66 69 6c 65 6e 6f .......return.self.socket.fileno
72dc0 28 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 73 6f 63 6b 6f 70 74 28 73 65 6c 66 2c 20 6c 65 76 ()......def.getsockopt(self,.lev
72de0 65 6c 2c 20 6f 70 74 6e 61 6d 65 2c 20 62 75 66 6c 65 6e 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 el,.optname,.buflen=None):......
72e00 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 69 ...#.type:.(int,.int,.Optional[i
72e20 6e 74 5d 29 20 2d 3e 20 55 6e 69 6f 6e 5b 69 6e 74 2c 20 62 79 74 65 73 5d 0a 20 20 20 20 20 20 nt]).->.Union[int,.bytes].......
72e40 20 20 22 22 22 47 65 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 .."""Get.the.value.of.the.given.
72e60 73 6f 63 6b 65 74 20 6f 70 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6c socket.option...........:param.l
72e80 65 76 65 6c 3a 20 6c 65 76 65 6c 20 61 74 20 77 68 69 63 68 20 74 68 65 20 6f 70 74 69 6f 6e 20 evel:.level.at.which.the.option.
72ea0 72 65 73 69 64 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 20 6d 61 6e 69 70 resides.................To.manip
72ec0 75 6c 61 74 65 20 6f 70 74 69 6f 6e 73 20 61 74 20 74 68 65 20 73 6f 63 6b 65 74 73 20 41 50 49 ulate.options.at.the.sockets.API
72ee0 20 6c 65 76 65 6c 2c 20 6c 65 76 65 6c 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .level,.level.is................
72f00 73 70 65 63 69 66 69 65 64 20 61 73 20 73 6f 63 6b 65 74 2e 53 4f 4c 5f 53 4f 43 4b 45 54 2e 20 specified.as.socket.SOL_SOCKET..
72f20 54 6f 20 6d 61 6e 69 70 75 6c 61 74 65 20 6f 70 74 69 6f 6e 73 20 61 74 0a 20 20 20 20 20 20 20 To.manipulate.options.at........
72f40 20 20 20 20 20 20 20 20 61 6e 79 20 6f 74 68 65 72 20 6c 65 76 65 6c 20 74 68 65 20 70 72 6f 74 ........any.other.level.the.prot
72f60 6f 63 6f 6c 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0a 20 ocol.number.of.the.appropriate..
72f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 20 63 6f 6e 74 72 6f 6c 6c 69 ..............protocol.controlli
72fa0 6e 67 20 74 68 65 20 6f 70 74 69 6f 6e 20 69 73 20 73 75 70 70 6c 69 65 64 2e 20 46 6f 72 20 65 ng.the.option.is.supplied..For.e
72fc0 78 61 6d 70 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 69 6e 64 69 63 61 xample,................to.indica
72fe0 74 65 20 74 68 61 74 20 61 6e 20 6f 70 74 69 6f 6e 20 69 73 20 74 6f 20 62 65 20 69 6e 74 65 72 te.that.an.option.is.to.be.inter
73000 70 72 65 74 65 64 20 62 79 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 43 50 preted.by.the................TCP
73020 20 70 72 6f 74 6f 63 6f 6c 2c 20 6c 65 76 65 6c 20 73 68 6f 75 6c 64 20 62 65 20 73 65 74 20 74 .protocol,.level.should.be.set.t
73040 6f 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 20 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 20 20 o.the.protocol.number...........
73060 20 20 20 20 20 6f 66 20 73 6f 63 6b 65 74 2e 53 4f 4c 5f 54 43 50 3b 20 73 65 65 20 67 65 74 70 .....of.socket.SOL_TCP;.see.getp
73080 72 6f 74 6f 65 6e 74 28 33 29 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6f 70 74 6e rotoent(3)...........:param.optn
730a0 61 6d 65 3a 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 73 6f 63 6b ame:.The.value.of.the.given.sock
730c0 65 74 20 6f 70 74 69 6f 6e 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 et.option.is................desc
730e0 72 69 62 65 64 20 69 6e 20 74 68 65 20 55 6e 69 78 20 6d 61 6e 20 70 61 67 65 20 67 65 74 73 6f ribed.in.the.Unix.man.page.getso
73100 63 6b 6f 70 74 28 32 29 29 2e 20 54 68 65 20 6e 65 65 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 ckopt(2))..The.needed...........
73120 20 20 20 20 20 73 79 6d 62 6f 6c 69 63 20 63 6f 6e 73 74 61 6e 74 73 20 28 53 4f 5f 2a 20 65 74 .....symbolic.constants.(SO_*.et
73140 63 2e 29 20 61 72 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 73 6f 63 6b 65 74 0a 20 20 c.).are.defined.in.the.socket...
73160 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 .............module...........:p
73180 61 72 61 6d 20 62 75 66 6c 65 6e 3a 20 49 66 20 69 74 20 69 73 20 61 62 73 65 6e 74 2c 20 61 6e aram.buflen:.If.it.is.absent,.an
731a0 20 69 6e 74 65 67 65 72 20 6f 70 74 69 6f 6e 20 69 73 20 61 73 73 75 6d 65 64 0a 20 20 20 20 20 .integer.option.is.assumed......
731c0 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 69 74 73 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 ..........and.its.integer.value.
731e0 69 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 20 49 66 0a is.returned.by.the.function..If.
73200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 6c 65 6e 20 69 73 20 70 72 65 73 65 6e 74 ...............buflen.is.present
73220 2c 20 69 74 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 ,.it.specifies.the.maximum.lengt
73240 68 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 20 75 h.of.the................buffer.u
73260 73 65 64 20 74 6f 20 72 65 63 65 69 76 65 20 74 68 65 20 6f 70 74 69 6f 6e 20 69 6e 2c 20 61 6e sed.to.receive.the.option.in,.an
73280 64 20 74 68 69 73 20 62 75 66 66 65 72 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.this.buffer.is................
732a0 72 65 74 75 72 6e 65 64 20 61 73 20 61 20 62 79 74 65 73 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 returned.as.a.bytes.object......
732c0 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 45 69 74 68 65 72 20 69 6e 74 65 67 65 72 20 6f 72 20 .....:return:.Either.integer.or.
732e0 62 79 74 65 73 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6f 70 74 69 6f 6e 2e 20 49 74 20 69 73 bytes.value.of.the.option..It.is
73300 20 75 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 74 68 65 20 63 61 6c 6c .up..................to.the.call
73320 65 72 20 74 6f 20 64 65 63 6f 64 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 er.to.decode.the.contents.of.the
73340 20 62 75 66 66 65 72 20 28 73 65 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .buffer.(see..................th
73360 65 20 6f 70 74 69 6f 6e 61 6c 20 62 75 69 6c 74 2d 69 6e 20 6d 6f 64 75 6c 65 20 73 74 72 75 63 e.optional.built-in.module.struc
73380 74 20 66 6f 72 20 61 20 77 61 79 20 74 6f 20 64 65 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 t.for.a.way.to.decode...........
733a0 20 20 20 20 20 20 20 43 20 73 74 72 75 63 74 75 72 65 73 20 65 6e 63 6f 64 65 64 20 61 73 20 62 .......C.structures.encoded.as.b
733c0 79 74 65 20 73 74 72 69 6e 67 73 29 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 yte.strings)..........""".......
733e0 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 67 65 74 73 6f 63 6b 6f 70 74 28 ..return.self.socket.getsockopt(
73400 6c 65 76 65 6c 2c 20 6f 70 74 6e 61 6d 65 2c 20 62 75 66 6c 65 6e 29 0a 0a 20 20 20 20 64 65 66 level,.optname,.buflen)......def
73420 20 73 65 74 73 6f 63 6b 6f 70 74 28 73 65 6c 66 2c 20 6c 65 76 65 6c 2c 20 6f 70 74 6e 61 6d 65 .setsockopt(self,.level,.optname
73440 2c 20 76 61 6c 75 65 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 ,.value=None):.........#.type:.(
73460 69 6e 74 2c 20 69 6e 74 2c 20 55 6e 69 6f 6e 5b 69 6e 74 2c 20 62 79 74 65 73 2c 20 4e 6f 6e 65 int,.int,.Union[int,.bytes,.None
73480 5d 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 22 22 ]).->.Optional[bytes].........""
734a0 22 53 65 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 73 6f 63 6b "Set.the.value.of.the.given.sock
734c0 65 74 20 6f 70 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6c 65 76 65 6c et.option...........:param.level
734e0 3a 20 73 61 6d 65 20 61 73 20 77 69 74 68 20 67 65 74 73 6f 63 6b 6f 70 74 28 29 20 61 62 6f 76 :.same.as.with.getsockopt().abov
73500 65 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6f 70 74 6e 61 6d 65 3a 20 73 61 6d 65 20 e..........:param.optname:.same.
73520 61 73 20 77 69 74 68 20 67 65 74 73 6f 63 6b 6f 70 74 28 29 20 61 62 6f 76 65 0a 0a 20 20 20 20 as.with.getsockopt().above......
73540 20 20 20 20 3a 70 61 72 61 6d 20 76 61 6c 75 65 3a 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 ....:param.value:.an.integer.or.
73560 61 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 62 75 66 66 65 72 2e 20 a.string.representing.a.buffer..
73580 49 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 6c 61 74 In.......................the.lat
735a0 74 65 72 20 63 61 73 65 20 69 74 20 69 73 20 75 70 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72 20 ter.case.it.is.up.to.the.caller.
735c0 74 6f 20 65 6e 73 75 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to.ensure.......................
735e0 74 68 61 74 20 74 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 72 6f that.the.string.contains.the.pro
73600 70 65 72 20 62 69 74 73 20 28 73 65 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 per.bits.(see.the...............
73620 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 61 6c 20 62 75 69 6c 74 2d 69 6e 20 6d 6f 64 75 6c 65 ........optional.built-in.module
73640 20 73 74 72 75 63 74 20 66 6f 72 20 61 20 77 61 79 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 .struct.for.a.way.to............
73660 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 6f 64 65 20 43 20 73 74 72 75 63 74 75 72 65 73 20 61 ...........encode.C.structures.a
73680 73 20 73 74 72 69 6e 67 73 29 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4e 6f s.strings)...........:return:.No
736a0 6e 65 20 66 6f 72 20 73 75 63 63 65 73 73 20 6f 72 20 74 68 65 20 65 72 72 6f 72 20 68 61 6e 64 ne.for.success.or.the.error.hand
736c0 6c 65 72 20 66 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 ler.for.failure.........."""....
736e0 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 74 73 6f 63 6b 6f .....return.self.socket.setsocko
73700 70 74 28 6c 65 76 65 6c 2c 20 6f 70 74 6e 61 6d 65 2c 20 76 61 6c 75 65 29 0a 0a 20 20 20 20 64 pt(level,.optname,.value)......d
73720 65 66 20 67 65 74 5f 63 6f 6e 74 65 78 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ef.get_context(self):.........#.
73740 74 79 70 65 3a 20 28 29 20 2d 3e 20 43 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 type:.().->.Context........."""R
73760 65 74 75 72 6e 20 74 68 65 20 43 6f 6e 74 65 78 74 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69 61 eturn.the.Context.object.associa
73780 74 65 64 20 77 69 74 68 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 22 22 0a 20 20 20 ted.with.this.connection."""....
737a0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 73 73 6c 5f 63 74 78 28 73 .....return.m2.ssl_get_ssl_ctx(s
737c0 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 74 61 74 65 28 73 65 6c 66 elf.ssl)......def.get_state(self
737e0 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 ):.........#.type:.().->.bytes..
73800 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 53 53 4c 20 73 74 61 74 65 20 6f ......."""Return.the.SSL.state.o
73820 66 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 44 75 72 69 f.this.connection...........Duri
73840 6e 67 20 69 74 73 20 75 73 65 2c 20 61 6e 20 53 53 4c 20 6f 62 6a 65 63 74 73 20 70 61 73 73 65 ng.its.use,.an.SSL.objects.passe
73860 73 20 73 65 76 65 72 61 6c 20 73 74 61 74 65 73 2e 20 54 68 65 20 73 74 61 74 65 0a 20 20 20 20 s.several.states..The.state.....
73880 20 20 20 20 69 73 20 69 6e 74 65 72 6e 61 6c 6c 79 20 6d 61 69 6e 74 61 69 6e 65 64 2e 20 51 75 ....is.internally.maintained..Qu
738a0 65 72 79 69 6e 67 20 74 68 65 20 73 74 61 74 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 erying.the.state.information.is.
738c0 6e 6f 74 0a 20 20 20 20 20 20 20 20 76 65 72 79 20 69 6e 66 6f 72 6d 61 74 69 76 65 20 62 65 66 not.........very.informative.bef
738e0 6f 72 65 20 6f 72 20 77 68 65 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20 62 65 65 ore.or.when.a.connection.has.bee
73900 6e 0a 20 20 20 20 20 20 20 20 65 73 74 61 62 6c 69 73 68 65 64 2e 20 49 74 20 68 6f 77 65 76 65 n.........established..It.howeve
73920 72 20 63 61 6e 20 62 65 20 6f 66 20 73 69 67 6e 69 66 69 63 61 6e 74 20 69 6e 74 65 72 65 73 74 r.can.be.of.significant.interest
73940 20 64 75 72 69 6e 67 0a 20 20 20 20 20 20 20 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65 2e 0a 0a .during.........the.handshake...
73960 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 36 20 6c 65 74 74 65 72 20 73 74 72 69 6e 67 ........:return:.6.letter.string
73980 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 .indicating.the.current.state.of
739a0 20 74 68 65 20 53 53 4c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 .the.SSL..................object
739c0 20 73 73 6c 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .ssl..........""".........return
739e0 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 73 74 61 74 65 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 .m2.ssl_get_state(self.ssl).....
73a00 20 64 65 66 20 76 65 72 69 66 79 5f 6f 6b 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 .def.verify_ok(self):.........#.
73a20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 type:.().->.bool.........return.
73a40 28 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 28 73 65 6c 66 2e 73 (m2.ssl_get_verify_result(self.s
73a60 73 6c 29 20 3d 3d 20 6d 32 2e 58 35 30 39 5f 56 5f 4f 4b 29 0a 0a 20 20 20 20 64 65 66 20 67 65 sl).==.m2.X509_V_OK)......def.ge
73a80 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 t_verify_mode(self):.........#.t
73aa0 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e ype:.().->.int........."""Return
73ac0 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74 69 .the.peer.certificate.verificati
73ae0 6f 6e 20 6d 6f 64 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 on.mode.""".........return.m2.ss
73b00 6c 5f 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 l_get_verify_mode(self.ssl).....
73b20 20 64 65 66 20 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 73 65 6c 66 29 3a 0a 20 20 20 .def.get_verify_depth(self):....
73b40 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 .....#.type:.().->.int........."
73b60 22 22 52 65 74 75 72 6e 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 76 65 ""Return.the.peer.certificate.ve
73b80 72 69 66 69 63 61 74 69 6f 6e 20 64 65 70 74 68 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 rification.depth.""".........ret
73ba0 75 72 6e 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 73 65 6c 66 urn.m2.ssl_get_verify_depth(self
73bc0 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 .ssl)......def.get_verify_result
73be0 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e (self):.........#.type:.().->.in
73c00 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 70 65 65 72 20 63 65 72 t........."""Return.the.peer.cer
73c20 74 69 66 69 63 61 74 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 72 65 73 75 6c 74 2e 22 22 22 tificate.verification.result."""
73c40 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 65 72 69 66 .........return.m2.ssl_get_verif
73c60 79 5f 72 65 73 75 6c 74 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f y_result(self.ssl)......def.get_
73c80 70 65 65 72 5f 63 65 72 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a peer_cert(self):.........#.type:
73ca0 20 28 29 20 2d 3e 20 58 35 30 39 2e 58 35 30 39 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 .().->.X509.X509........."""Retu
73cc0 72 6e 20 74 68 65 20 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 rn.the.peer.certificate.........
73ce0 20 20 49 66 20 74 68 65 20 70 65 65 72 20 64 69 64 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 61 20 ..If.the.peer.did.not.provide.a.
73d00 63 65 72 74 69 66 69 63 61 74 65 2c 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2e 0a 20 20 20 20 20 20 certificate,.return.None........
73d20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 63 20 3d 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 70 65 65 ..""".........c.=.m2.ssl_get_pee
73d40 72 5f 63 65 72 74 28 73 65 6c 66 2e 73 73 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 20 69 73 r_cert(self.ssl).........if.c.is
73d60 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 .None:.............return.None..
73d80 20 20 20 20 20 20 20 23 20 4e 65 65 64 20 74 6f 20 66 72 65 65 20 74 68 65 20 70 6f 69 6e 74 65 .......#.Need.to.free.the.pointe
73da0 72 20 63 6f 7a 20 4f 70 65 6e 53 53 4c 20 64 6f 65 73 6e 27 74 2e 0a 20 20 20 20 20 20 20 20 72 r.coz.OpenSSL.doesn't..........r
73dc0 65 74 75 72 6e 20 58 35 30 39 2e 58 35 30 39 28 63 2c 20 31 29 0a 0a 20 20 20 20 64 65 66 20 67 eturn.X509.X509(c,.1)......def.g
73de0 65 74 5f 70 65 65 72 5f 63 65 72 74 5f 63 68 61 69 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 et_peer_cert_chain(self):.......
73e00 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 58 35 30 39 2e 58 35 ..#.type:.().->.Optional[X509.X5
73e20 30 39 5f 53 74 61 63 6b 5d 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 09_Stack]........."""Return.the.
73e40 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e 3b 20 69 66 20 74 68 65 20 70 peer.certificate.chain;.if.the.p
73e60 65 65 72 20 64 69 64 20 6e 6f 74 20 70 72 6f 76 69 64 65 0a 20 20 20 20 20 20 20 20 61 20 63 65 eer.did.not.provide.........a.ce
73e80 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e 2c 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2e 0a 0a 20 rtificate.chain,.return.None....
73ea0 20 20 20 20 20 20 20 3a 77 61 72 6e 69 6e 67 3a 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 63 68 .......:warning:.The.returned.ch
73ec0 61 69 6e 20 77 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 6f 6e 6c 79 20 66 6f 72 20 61 73 20 6c 6f ain.will.be.valid.only.for.as.lo
73ee0 6e 67 20 61 73 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e ng.as.the...................conn
73f00 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 69 73 20 61 6c 69 76 65 2e 20 4f 6e 63 65 20 74 68 65 ection.object.is.alive..Once.the
73f20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .connection.object..............
73f40 20 20 20 20 20 67 65 74 73 20 66 72 65 65 64 2c 20 74 68 65 20 63 68 61 69 6e 20 77 69 6c 6c 20 .....gets.freed,.the.chain.will.
73f60 62 65 20 66 72 65 65 64 20 61 73 20 77 65 6c 6c 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 be.freed.as.well.........."""...
73f80 20 20 20 20 20 20 63 20 3d 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 70 65 65 72 5f 63 65 72 74 5f 63 ......c.=.m2.ssl_get_peer_cert_c
73fa0 68 61 69 6e 28 73 65 6c 66 2e 73 73 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 20 69 73 20 4e hain(self.ssl).........if.c.is.N
73fc0 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 one:.............return.None....
73fe0 20 20 20 20 20 23 20 4e 6f 20 6e 65 65 64 20 74 6f 20 66 72 65 65 20 74 68 65 20 70 6f 69 6e 74 .....#.No.need.to.free.the.point
74000 65 72 20 63 6f 7a 20 4f 70 65 6e 53 53 4c 20 64 6f 65 73 2e 0a 20 20 20 20 20 20 20 20 72 65 74 er.coz.OpenSSL.does..........ret
74020 75 72 6e 20 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 28 63 29 0a 0a 20 20 20 20 64 65 66 20 urn.X509.X509_Stack(c)......def.
74040 67 65 74 5f 63 69 70 68 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 get_cipher(self):.........#.type
74060 3a 20 28 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 43 69 70 68 65 72 5d 0a 20 20 20 20 20 20 20 :.().->.Optional[Cipher]........
74080 20 22 22 22 52 65 74 75 72 6e 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 ."""Return.an.M2Crypto.SSL.Ciphe
740a0 72 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 3b 20 69 66 r.object.for.this.connection;.if
740c0 20 74 68 65 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 .the.........connection.has.not.
740e0 62 65 65 6e 20 69 6e 69 74 69 61 6c 69 73 65 64 20 77 69 74 68 20 61 20 63 69 70 68 65 72 20 73 been.initialised.with.a.cipher.s
74100 75 69 74 65 2c 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 uite,.return.None.........."""..
74120 20 20 20 20 20 20 20 63 20 3d 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 69 .......c.=.m2.ssl_get_current_ci
74140 70 68 65 72 28 73 65 6c 66 2e 73 73 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 20 69 73 20 4e pher(self.ssl).........if.c.is.N
74160 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 one:.............return.None....
74180 20 20 20 20 20 72 65 74 75 72 6e 20 43 69 70 68 65 72 28 63 29 0a 0a 20 20 20 20 64 65 66 20 67 .....return.Cipher(c)......def.g
741a0 65 74 5f 63 69 70 68 65 72 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 et_ciphers(self):.........#.type
741c0 3a 20 28 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 43 69 70 68 65 72 5f 53 74 61 63 6b 5d 0a 20 :.().->.Optional[Cipher_Stack]..
741e0 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c ......."""Return.an.M2Crypto.SSL
74200 2e 43 69 70 68 65 72 5f 53 74 61 63 6b 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 69 73 0a 20 20 .Cipher_Stack.object.for.this...
74220 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 3b 20 69 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 ......connection;.if.the.connect
74240 69 6f 6e 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 69 6e 69 74 69 61 6c 69 73 65 64 20 77 69 74 ion.has.not.been.initialised.wit
74260 68 0a 20 20 20 20 20 20 20 20 63 69 70 68 65 72 20 73 75 69 74 65 73 2c 20 72 65 74 75 72 6e 20 h.........cipher.suites,.return.
74280 4e 6f 6e 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 63 20 3d 20 6d 32 None..........""".........c.=.m2
742a0 2e 73 73 6c 5f 67 65 74 5f 63 69 70 68 65 72 73 28 73 65 6c 66 2e 73 73 6c 29 0a 20 20 20 20 20 .ssl_get_ciphers(self.ssl)......
742c0 20 20 20 69 66 20 63 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ...if.c.is.None:.............ret
742e0 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 43 69 70 68 65 72 5f 53 urn.None.........return.Cipher_S
74300 74 61 63 6b 28 63 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 tack(c)......def.get_cipher_list
74320 28 73 65 6c 66 2c 20 69 64 78 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 (self,.idx=0):.........#.type:.(
74340 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 int).->.str........."""Return.th
74360 65 20 63 69 70 68 65 72 20 73 75 69 74 65 73 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 e.cipher.suites.for.this.connect
74380 69 6f 6e 20 61 73 20 61 20 73 74 72 69 6e 67 20 6f 62 6a 65 63 74 2e 22 22 22 0a 20 20 20 20 20 ion.as.a.string.object."""......
743a0 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 73 73 6c ...return.six.ensure_text(m2.ssl
743c0 5f 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 73 65 6c 66 2e 73 73 6c 2c 20 69 64 78 29 29 _get_cipher_list(self.ssl,.idx))
743e0 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 73 65 6c 66 2c 20 ......def.set_cipher_list(self,.
74400 63 69 70 68 65 72 5f 6c 69 73 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 cipher_list):.........#.type:.(s
74420 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 68 65 20 63 69 tr).->.int........."""Set.the.ci
74440 70 68 65 72 20 73 75 69 74 65 73 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e pher.suites.for.this.connection.
74460 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 73 65 74 5f 63 69 """.........return.m2.ssl_set_ci
74480 70 68 65 72 5f 6c 69 73 74 28 73 65 6c 66 2e 73 73 6c 2c 20 63 69 70 68 65 72 5f 6c 69 73 74 29 pher_list(self.ssl,.cipher_list)
744a0 0a 0a 20 20 20 20 64 65 66 20 6d 61 6b 65 66 69 6c 65 28 73 65 6c 66 2c 20 6d 6f 64 65 3d 27 72 ......def.makefile(self,.mode='r
744c0 62 27 2c 20 62 75 66 73 69 7a 65 3d 2d 31 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a b',.bufsize=-1):.........#.type:
744e0 20 28 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 .(AnyStr,.int).->.socket._fileob
74500 6a 65 63 74 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 20 20 20 ject.........if.six.PY3:........
74520 20 20 20 20 20 72 65 74 75 72 6e 20 73 6f 63 6b 65 74 2e 53 6f 63 6b 65 74 49 4f 28 73 65 6c 66 .....return.socket.SocketIO(self
74540 2c 20 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 ,.mode).........else:...........
74560 20 20 72 65 74 75 72 6e 20 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 74 28 73 65 6c 66 ..return.socket._fileobject(self
74580 2c 20 6d 6f 64 65 2c 20 62 75 66 73 69 7a 65 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 73 6f 63 ,.mode,.bufsize)......def.getsoc
745a0 6b 6e 61 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 kname(self):.........#.type:.().
745c0 2d 3e 20 75 74 69 6c 2e 41 64 64 72 54 79 70 65 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 ->.util.AddrType........."""Retu
745e0 72 6e 20 74 68 65 20 73 6f 63 6b 65 74 27 73 20 6f 77 6e 20 61 64 64 72 65 73 73 2e 0a 0a 20 20 rn.the.socket's.own.address.....
74600 20 20 20 20 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 66 69 6e 64 20 6f 75 74 ......This.is.useful.to.find.out
74620 20 74 68 65 20 70 6f 72 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 6e 20 49 50 76 34 2f 76 36 20 73 .the.port.number.of.an.IPv4/v6.s
74640 6f 63 6b 65 74 2c 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 6e 73 74 61 6e 63 65 2e 20 28 54 68 ocket,.........for.instance..(Th
74660 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 61 64 64 72 65 73 73 20 72 65 74 75 72 6e 65 64 e.format.of.the.address.returned
74680 20 64 65 70 65 6e 64 73 0a 20 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 61 64 64 72 65 73 73 20 .depends.........on.the.address.
746a0 66 61 6d 69 6c 79 20 2d 2d 20 73 65 65 20 61 62 6f 76 65 2e 29 0a 0a 20 20 20 20 20 20 20 20 3a family.--.see.above.)..........:
746c0 72 65 74 75 72 6e 3a 73 6f 63 6b 65 74 27 73 20 61 64 64 72 65 73 73 20 61 73 20 61 64 64 72 20 return:socket's.address.as.addr.
746e0 74 79 70 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 type.........""".........return.
74700 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 67 65 74 73 6f 63 6b 6e 61 6d 65 28 29 0a 0a 20 20 20 20 64 self.socket.getsockname()......d
74720 65 66 20 67 65 74 70 65 65 72 6e 61 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ef.getpeername(self):.........#.
74740 74 79 70 65 3a 20 28 29 20 2d 3e 20 75 74 69 6c 2e 41 64 64 72 54 79 70 65 0a 20 20 20 20 20 20 type:.().->.util.AddrType.......
74760 20 20 22 22 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 6d 6f 74 65 20 61 64 64 72 65 73 73 20 74 .."""Return.the.remote.address.t
74780 6f 20 77 68 69 63 68 20 74 68 65 20 73 6f 63 6b 65 74 20 69 73 20 63 6f 6e 6e 65 63 74 65 64 2e o.which.the.socket.is.connected.
747a0 0a 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 66 69 6e 64 ..........This.is.useful.to.find
747c0 20 6f 75 74 20 74 68 65 20 70 6f 72 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 20 72 65 6d 6f 74 65 .out.the.port.number.of.a.remote
747e0 20 49 50 76 34 2f 76 36 20 73 6f 63 6b 65 74 2c 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 6e 73 .IPv4/v6.socket,.........for.ins
74800 74 61 6e 63 65 2e 0a 20 20 20 20 20 20 20 20 4f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73 20 74 tance..........On.some.systems.t
74820 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 0a 0a his.function.is.not.supported...
74840 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 ........:return:........."""....
74860 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 67 65 74 70 65 65 72 6e .....return.self.socket.getpeern
74880 61 6d 65 28 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 ame()......def.set_session_id_ct
748a0 78 28 73 65 6c 66 2c 20 69 64 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 x(self,.id):.........#.type:.(by
748c0 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 73 73 6c tes).->.int.........ret.=.m2.ssl
748e0 5f 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 6f 6e 74 65 78 74 28 73 65 6c 66 2e 73 73 6c _set_session_id_context(self.ssl
74900 2c 20 69 64 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 3a 0a 20 20 20 20 20 20 ,.id).........if.not.ret:.......
74920 20 20 20 20 20 20 72 61 69 73 65 20 53 53 4c 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 ......raise.SSLError(Err.get_err
74940 6f 72 5f 6d 65 73 73 61 67 65 28 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 65 73 73 69 or_message())......def.get_sessi
74960 6f 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 on(self):.........#.type:.().->.
74980 53 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 73 73 20 3d 20 6d 32 2e 73 73 6c 5f 67 65 Session.........sess.=.m2.ssl_ge
749a0 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 t_session(self.ssl).........retu
749c0 72 6e 20 53 65 73 73 69 6f 6e 28 73 65 73 73 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 rn.Session(sess)......def.set_se
749e0 73 73 69 6f 6e 28 73 65 6c 66 2c 20 73 65 73 73 69 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ssion(self,.session):.........#.
74a00 74 79 70 65 3a 20 28 53 65 73 73 69 6f 6e 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 type:.(Session).->.None.........
74a20 6d 32 2e 73 73 6c 5f 73 65 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 2c 20 73 65 73 m2.ssl_set_session(self.ssl,.ses
74a40 73 69 6f 6e 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 64 65 66 61 75 6c sion._ptr())......def.get_defaul
74a60 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 t_session_timeout(self):........
74a80 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .#.type:.().->.int.........retur
74aa0 6e 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 64 65 66 61 75 6c 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d n.m2.ssl_get_default_session_tim
74ac0 65 6f 75 74 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 6f 63 6b eout(self.ssl)......def.get_sock
74ae0 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 et_read_timeout(self):.........#
74b00 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 72 65 74 .type:.().->.timeout.........ret
74b20 75 72 6e 20 74 69 6d 65 6f 75 74 2e 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 28 0a 20 urn.timeout.struct_to_timeout(..
74b40 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 67 65 74 73 6f 63 6b 6f 70 ...........self.socket.getsockop
74b60 74 28 73 6f 63 6b 65 74 2e 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 73 6f 63 6b 65 74 2e 53 4f 5f 52 t(socket.SOL_SOCKET,.socket.SO_R
74b80 43 56 54 49 4d 45 4f 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 CVTIMEO,........................
74ba0 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 6f 75 74 2e 73 74 72 75 63 74 5f 73 69 7a 65 28 ............timeout.struct_size(
74bc0 29 29 29 0a 0a 20 20 20 20 40 73 74 61 74 69 63 6d 65 74 68 6f 64 0a 20 20 20 20 64 65 66 20 5f )))......@staticmethod.....def._
74be0 68 65 78 64 75 6d 70 28 73 29 3a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 hexdump(s):.........assert.isins
74c00 74 61 6e 63 65 28 73 2c 20 73 69 78 2e 62 69 6e 61 72 79 5f 74 79 70 65 29 0a 20 20 20 20 20 20 tance(s,.six.binary_type).......
74c20 20 20 72 65 74 75 72 6e 20 22 3a 22 2e 6a 6f 69 6e 28 22 7b 30 3a 30 32 78 7d 22 2e 66 6f 72 6d ..return.":".join("{0:02x}".form
74c40 61 74 28 6f 72 64 28 63 29 20 69 66 20 73 69 78 2e 50 59 32 20 65 6c 73 65 20 63 29 20 66 6f 72 at(ord(c).if.six.PY2.else.c).for
74c60 20 63 20 69 6e 20 73 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 .c.in.s)......def.get_socket_wri
74c80 74 65 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 te_timeout(self):.........#.type
74ca0 3a 20 28 29 20 2d 3e 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 62 69 6e 73 74 72 20 3d :.().->.timeout.........binstr.=
74cc0 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 67 65 74 73 6f 63 6b 6f 70 74 28 0a 20 20 20 20 20 20 20 .self.socket.getsockopt(........
74ce0 20 20 20 20 20 73 6f 63 6b 65 74 2e 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 73 6f 63 6b 65 74 2e 53 .....socket.SOL_SOCKET,.socket.S
74d00 4f 5f 53 4e 44 54 49 4d 45 4f 2c 20 74 69 6d 65 6f 75 74 2e 73 74 72 75 63 74 5f 73 69 7a 65 28 O_SNDTIMEO,.timeout.struct_size(
74d20 29 29 0a 20 20 20 20 20 20 20 20 74 69 6d 65 6f 20 3d 20 74 69 6d 65 6f 75 74 2e 73 74 72 75 63 )).........timeo.=.timeout.struc
74d40 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 28 62 69 6e 73 74 72 29 0a 20 20 20 20 20 20 20 20 23 70 72 t_to_timeout(binstr).........#pr
74d60 69 6e 74 28 22 44 65 62 75 67 3a 20 67 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d int("Debug:.get_socket_write_tim
74d80 65 6f 75 74 3a 20 22 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 22 67 65 74 20 73 6f 63 6b eout:.".........#......"get.sock
74da0 6f 70 74 20 76 61 6c 75 65 3a 20 25 73 20 2d 3e 20 72 65 74 75 72 6e 65 64 20 74 69 6d 65 6f 75 opt.value:.%s.->.returned.timeou
74dc0 74 28 73 65 63 3d 25 72 2c 20 6d 69 63 72 6f 73 65 63 3d 25 72 29 22 20 25 0a 20 20 20 20 20 20 t(sec=%r,.microsec=%r)".%.......
74de0 20 20 23 20 20 20 20 20 20 28 73 65 6c 66 2e 5f 68 65 78 64 75 6d 70 28 62 69 6e 73 74 72 29 2c ..#......(self._hexdump(binstr),
74e00 20 74 69 6d 65 6f 2e 73 65 63 2c 20 74 69 6d 65 6f 2e 6d 69 63 72 6f 73 65 63 29 29 0a 20 20 20 .timeo.sec,.timeo.microsec))....
74e20 20 20 20 20 20 72 65 74 75 72 6e 20 74 69 6d 65 6f 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 .....return.timeo......def.set_s
74e40 6f 63 6b 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 2c 20 74 69 6d 65 6f 29 3a ocket_read_timeout(self,.timeo):
74e60 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 74 69 6d 65 6f 75 74 29 20 2d 3e 20 4e 6f .........#.type:.(timeout).->.No
74e80 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 74 69 6d ne.........assert.isinstance(tim
74ea0 65 6f 2c 20 74 69 6d 65 6f 75 74 2e 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c eo,.timeout.timeout).........sel
74ec0 66 2e 73 6f 63 6b 65 74 2e 73 65 74 73 6f 63 6b 6f 70 74 28 0a 20 20 20 20 20 20 20 20 20 20 20 f.socket.setsockopt(............
74ee0 20 73 6f 63 6b 65 74 2e 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 73 6f 63 6b 65 74 2e 53 4f 5f 52 43 .socket.SOL_SOCKET,.socket.SO_RC
74f00 56 54 49 4d 45 4f 2c 20 74 69 6d 65 6f 2e 70 61 63 6b 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 VTIMEO,.timeo.pack())......def.s
74f20 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 2c 20 74 69 et_socket_write_timeout(self,.ti
74f40 6d 65 6f 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 74 69 6d 65 6f 75 74 29 20 meo):.........#.type:.(timeout).
74f60 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 ->.None.........assert.isinstanc
74f80 65 28 74 69 6d 65 6f 2c 20 74 69 6d 65 6f 75 74 2e 74 69 6d 65 6f 75 74 29 0a 20 20 20 20 20 20 e(timeo,.timeout.timeout).......
74fa0 20 20 62 69 6e 73 74 72 20 3d 20 74 69 6d 65 6f 2e 70 61 63 6b 28 29 0a 20 20 20 20 20 20 20 20 ..binstr.=.timeo.pack().........
74fc0 23 70 72 69 6e 74 28 22 44 65 62 75 67 3a 20 73 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f #print("Debug:.set_socket_write_
74fe0 74 69 6d 65 6f 75 74 3a 20 22 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 22 69 6e 70 75 74 timeout:.".........#......"input
75000 20 74 69 6d 65 6f 75 74 28 73 65 63 3d 25 72 2c 20 6d 69 63 72 6f 73 65 63 3d 25 72 29 20 2d 3e .timeout(sec=%r,.microsec=%r).->
75020 20 73 65 74 20 73 6f 63 6b 6f 70 74 20 76 61 6c 75 65 3a 20 25 73 22 20 25 0a 20 20 20 20 20 20 .set.sockopt.value:.%s".%.......
75040 20 20 23 20 20 20 20 20 20 28 74 69 6d 65 6f 2e 73 65 63 2c 20 74 69 6d 65 6f 2e 6d 69 63 72 6f ..#......(timeo.sec,.timeo.micro
75060 73 65 63 2c 20 73 65 6c 66 2e 5f 68 65 78 64 75 6d 70 28 62 69 6e 73 74 72 29 29 29 0a 20 20 20 sec,.self._hexdump(binstr)))....
75080 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 74 73 6f 63 6b 6f 70 74 28 0a 20 20 20 .....self.socket.setsockopt(....
750a0 20 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 2e 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 73 6f 63 6b .........socket.SOL_SOCKET,.sock
750c0 65 74 2e 53 4f 5f 53 4e 44 54 49 4d 45 4f 2c 20 62 69 6e 73 74 72 29 0a 0a 20 20 20 20 64 65 66 et.SO_SNDTIMEO,.binstr)......def
750e0 20 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 .get_version(self):.........#.ty
75100 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 pe:.().->.str........."""Return.
75120 74 68 65 20 54 4c 53 2f 53 53 4c 20 70 72 6f 74 6f 63 6f 6c 20 76 65 72 73 69 6f 6e 20 66 6f 72 the.TLS/SSL.protocol.version.for
75140 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 .this.connection.""".........ret
75160 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 urn.six.ensure_text(m2.ssl_get_v
75180 65 72 73 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 70 ersion(self.ssl))......def.set_p
751a0 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 5f 63 61 6c 6c 62 61 63 6b 28 73 65 ost_connection_check_callback(se
751c0 6c 66 2c 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 29 3a 20 20 23 20 6e 6f 71 lf,.postConnectionCheck):..#.noq
751e0 61 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 a.........#.type:.(Callable).->.
75200 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e None.........self.postConnection
75220 43 68 65 63 6b 20 3d 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 0a 0a 20 20 20 Check.=.postConnectionCheck.....
75240 20 64 65 66 20 73 65 74 5f 74 6c 73 65 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 28 73 65 6c 66 2c 20 .def.set_tlsext_host_name(self,.
75260 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d name):.........#.type:.(bytes).-
75280 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 68 65 20 72 65 71 75 65 73 >.None........."""Set.the.reques
752a0 74 65 64 20 68 6f 73 74 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 53 4e 49 20 28 53 65 72 76 65 72 ted.hostname.for.the.SNI.(Server
752c0 20 4e 61 6d 65 20 49 6e 64 69 63 61 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 65 78 74 65 6e 73 .Name.Indication).........extens
752e0 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f ion..........""".........m2.ssl_
75300 73 65 74 5f 74 6c 73 65 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 73 73 6c 2c 20 6e set_tlsext_host_name(self.ssl,.n
75320 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 31 5f 68 6f 73 74 28 73 65 6c 66 2c 20 6e 61 ame)......def.set1_host(self,.na
75340 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 me):.........#.type:.(bytes).->.
75360 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 68 65 20 72 65 71 75 65 73 74 65 None........."""Set.the.requeste
75380 64 20 68 6f 73 74 6e 61 6d 65 20 74 6f 20 63 68 65 63 6b 20 69 6e 20 74 68 65 20 73 65 72 76 65 d.hostname.to.check.in.the.serve
753a0 72 20 63 65 72 74 69 66 69 63 61 74 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 r.certificate.""".........self.h
753c0 6f 73 74 20 3d 20 6e 61 6d 65 0a 94 7d 94 28 8c 1a 5f 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e ost.=.name..}.(.._serverPostConn
753e0 65 63 74 69 6f 6e 43 68 65 63 6b 94 6a 74 1f 00 00 4b 1f 4b 21 87 94 8c 13 43 6f 6e 6e 65 63 74 ectionCheck.jt...K.K!....Connect
75400 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 2e 4b 49 87 94 8c 12 43 6f 6e 6e 65 63 ion.__init__.jt...K.KI....Connec
75420 74 69 6f 6e 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 4b 4b 57 87 94 8c 10 43 6f 6e 6e 65 63 tion.__del__.jt...KKKW....Connec
75440 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 74 1f 00 00 4b 59 4b 5b 87 94 8c 10 43 6f 6e 6e 65 63 74 69 tion.close.jt...KYK[....Connecti
75460 6f 6e 2e 63 6c 65 61 72 94 6a 74 1f 00 00 4b 5d 4b 64 87 94 8c 17 43 6f 6e 6e 65 63 74 69 6f 6e on.clear.jt...K]Kd....Connection
75480 2e 73 65 74 5f 73 68 75 74 64 6f 77 6e 94 6a 74 1f 00 00 4b 66 4b 7d 87 94 8c 17 43 6f 6e 6e 65 .set_shutdown.jt...KfK}....Conne
754a0 63 74 69 6f 6e 2e 67 65 74 5f 73 68 75 74 64 6f 77 6e 94 6a 74 1f 00 00 4b 7f 4b 82 87 94 8c 0f ction.get_shutdown.jt...K.K.....
754c0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 62 69 6e 64 94 6a 74 1f 00 00 4b 84 4b 86 87 94 8c 11 43 6f 6e Connection.bind.jt...K.K.....Con
754e0 6e 65 63 74 69 6f 6e 2e 6c 69 73 74 65 6e 94 6a 74 1f 00 00 4b 88 4b 8a 87 94 8c 18 43 6f 6e 6e nection.listen.jt...K.K.....Conn
75500 65 63 74 69 6f 6e 2e 73 73 6c 5f 67 65 74 5f 65 72 72 6f 72 94 6a 74 1f 00 00 4b 8c 4b 8e 87 94 ection.ssl_get_error.jt...K.K...
75520 8c 12 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 62 69 6f 94 6a 74 1f 00 00 4b 90 4b a2 87 94 ..Connection.set_bio.jt...K.K...
75540 8c 27 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f .'Connection.set_client_CA_list_
75560 66 72 6f 6d 5f 66 69 6c 65 94 6a 74 1f 00 00 4b a4 4b b6 87 94 8c 2a 43 6f 6e 6e 65 63 74 69 6f from_file.jt...K.K....*Connectio
75580 6e 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 63 6f 6e 74 65 78 n.set_client_CA_list_from_contex
755a0 74 94 6a 74 1f 00 00 4b b8 4b c1 87 94 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 75 70 5f t.jt...K.K.....Connection.setup_
755c0 61 64 64 72 94 6a 74 1f 00 00 4b c3 4b c5 87 94 8c 1d 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 addr.jt...K.K.....Connection.set
755e0 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 94 6a 74 1f 00 00 4b c7 4b d1 87 94 8c 14 43 6f 6e _ssl_close_flag.jt...K.K.....Con
75600 6e 65 63 74 69 6f 6e 2e 73 65 74 75 70 5f 73 73 6c 94 6a 74 1f 00 00 4b d3 4b dc 87 94 8c 15 43 nection.setup_ssl.jt...K.K.....C
75620 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 65 74 75 70 5f 73 73 6c 94 6a 74 1f 00 00 4b de 4b e2 87 94 onnection._setup_ssl.jt...K.K...
75640 8c 1b 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 94 6a 74 ..Connection.set_accept_state.jt
75660 1f 00 00 4b e4 4b e7 87 94 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 5f 73 73 6c ...K.K.....Connection.accept_ssl
75680 94 6a 74 1f 00 00 4b e9 4d 00 01 87 94 8c 11 43 6f 6e 6e 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 .jt...K.M......Connection.accept
756a0 94 6a 74 1f 00 00 4d 02 01 4d 1c 01 87 94 8c 1c 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 .jt...M..M......Connection.set_c
756c0 6f 6e 6e 65 63 74 5f 73 74 61 74 65 94 6a 74 1f 00 00 4d 1e 01 4d 21 01 87 94 8c 16 43 6f 6e 6e onnect_state.jt...M..M!.....Conn
756e0 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 94 6a 74 1f 00 00 4d 23 01 4d 25 01 87 94 ection.connect_ssl.jt...M#.M%...
75700 8c 12 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 74 1f 00 00 4d 27 01 4d 3b 01 ..Connection.connect.jt...M'.M;.
75720 87 94 8c 13 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 68 75 74 64 6f 77 6e 94 6a 74 1f 00 00 4d 3d 01 ....Connection.shutdown.jt...M=.
75740 4d 3f 01 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 6e 65 67 6f 74 69 61 74 65 94 6a 74 M?.....Connection.renegotiate.jt
75760 1f 00 00 4d 41 01 4d 44 01 87 94 8c 12 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 65 6e 64 69 6e 67 94 ...MA.MD.....Connection.pending.
75780 6a 74 1f 00 00 4d 46 01 4d 49 01 87 94 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 77 72 69 74 65 jt...MF.MI.....Connection._write
757a0 5f 62 69 6f 94 6a 74 1f 00 00 4d 4b 01 4d 4d 01 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f _bio.jt...MK.MM.....Connection._
757c0 77 72 69 74 65 5f 6e 62 69 6f 94 6a 74 1f 00 00 4d 4f 01 4d 51 01 87 94 8c 14 43 6f 6e 6e 65 63 write_nbio.jt...MO.MQ.....Connec
757e0 74 69 6f 6e 2e 5f 72 65 61 64 5f 62 69 6f 94 6a 74 1f 00 00 4d 53 01 4d 57 01 87 94 8c 15 43 6f tion._read_bio.jt...MS.MW.....Co
75800 6e 6e 65 63 74 69 6f 6e 2e 5f 72 65 61 64 5f 6e 62 69 6f 94 6a 74 1f 00 00 4d 59 01 4d 5d 01 87 nnection._read_nbio.jt...MY.M]..
75820 94 8c 10 43 6f 6e 6e 65 63 74 69 6f 6e 2e 77 72 69 74 65 94 6a 74 1f 00 00 4d 5f 01 4d 63 01 87 ...Connection.write.jt...M_.Mc..
75840 94 8c 1c 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 64 65 63 72 65 66 5f 73 6f 63 6b 65 74 69 6f 73 94 ...Connection._decref_socketios.
75860 6a 74 1f 00 00 4d 66 01 4d 67 01 87 94 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 63 76 5f 69 jt...Mf.Mg.....Connection.recv_i
75880 6e 74 6f 94 6a 74 1f 00 00 4d 69 01 4d 8c 01 87 94 8c 0f 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 nto.jt...Mi.M......Connection.re
758a0 61 64 94 6a 74 1f 00 00 4d 8e 01 4d 92 01 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 ad.jt...M..M......Connection.set
758c0 62 6c 6f 63 6b 69 6e 67 94 6a 74 1f 00 00 4d 95 01 4d a8 01 87 94 8c 15 43 6f 6e 6e 65 63 74 69 blocking.jt...M..M......Connecti
758e0 6f 6e 2e 73 65 74 74 69 6d 65 6f 75 74 94 6a 74 1f 00 00 4d aa 01 4d b0 01 87 94 8c 11 43 6f 6e on.settimeout.jt...M..M......Con
75900 6e 65 63 74 69 6f 6e 2e 66 69 6c 65 6e 6f 94 6a 74 1f 00 00 4d b2 01 4d b4 01 87 94 8c 15 43 6f nection.fileno.jt...M..M......Co
75920 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 73 6f 63 6b 6f 70 74 94 6a 74 1f 00 00 4d b6 01 4d d3 01 87 nnection.getsockopt.jt...M..M...
75940 94 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 73 6f 63 6b 6f 70 74 94 6a 74 1f 00 00 4d d5 ...Connection.setsockopt.jt...M.
75960 01 4d e5 01 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 6f 6e 74 65 78 74 94 6a .M......Connection.get_context.j
75980 74 1f 00 00 4d e7 01 4d ea 01 87 94 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 74 61 t...M..M......Connection.get_sta
759a0 74 65 94 6a 74 1f 00 00 4d ec 01 4d f9 01 87 94 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 76 65 72 te.jt...M..M......Connection.ver
759c0 69 66 79 5f 6f 6b 94 6a 74 1f 00 00 4d fb 01 4d fd 01 87 94 8c 1a 43 6f 6e 6e 65 63 74 69 6f 6e ify_ok.jt...M..M......Connection
759e0 2e 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 94 6a 74 1f 00 00 4d ff 01 4d 02 02 87 94 8c 1b .get_verify_mode.jt...M..M......
75a00 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 6a 74 1f 00 Connection.get_verify_depth.jt..
75a20 00 4d 04 02 4d 07 02 87 94 8c 1c 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 .M..M......Connection.get_verify
75a40 5f 72 65 73 75 6c 74 94 6a 74 1f 00 00 4d 09 02 4d 0c 02 87 94 8c 18 43 6f 6e 6e 65 63 74 69 6f _result.jt...M..M......Connectio
75a60 6e 2e 67 65 74 5f 70 65 65 72 5f 63 65 72 74 94 6a 74 1f 00 00 4d 0e 02 4d 18 02 87 94 8c 1e 43 n.get_peer_cert.jt...M..M......C
75a80 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 70 65 65 72 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 74 onnection.get_peer_cert_chain.jt
75aa0 1f 00 00 4d 1a 02 4d 27 02 87 94 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 ...M..M'.....Connection.get_ciph
75ac0 65 72 94 6a 74 1f 00 00 4d 29 02 4d 31 02 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 er.jt...M).M1.....Connection.get
75ae0 5f 63 69 70 68 65 72 73 94 6a 74 1f 00 00 4d 33 02 4d 3c 02 87 94 8c 1a 43 6f 6e 6e 65 63 74 69 _ciphers.jt...M3.M<.....Connecti
75b00 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 74 1f 00 00 4d 3e 02 4d 41 02 87 94 on.get_cipher_list.jt...M>.MA...
75b20 8c 1a 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 74 1f ..Connection.set_cipher_list.jt.
75b40 00 00 4d 43 02 4d 46 02 87 94 8c 13 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6d 61 6b 65 66 69 6c 65 94 ..MC.MF.....Connection.makefile.
75b60 6a 74 1f 00 00 4d 48 02 4d 4d 02 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 73 6f 63 jt...MH.MM.....Connection.getsoc
75b80 6b 6e 61 6d 65 94 6a 74 1f 00 00 4d 4f 02 4d 59 02 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e kname.jt...MO.MY.....Connection.
75ba0 67 65 74 70 65 65 72 6e 61 6d 65 94 6a 74 1f 00 00 4d 5b 02 4d 65 02 87 94 8c 1d 43 6f 6e 6e 65 getpeername.jt...M[.Me.....Conne
75bc0 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 74 1f 00 00 4d 67 ction.set_session_id_ctx.jt...Mg
75be0 02 4d 6b 02 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a .Mk.....Connection.get_session.j
75c00 74 1f 00 00 4d 6d 02 4d 70 02 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 t...Mm.Mp.....Connection.set_ses
75c20 73 69 6f 6e 94 6a 74 1f 00 00 4d 72 02 4d 74 02 87 94 8c 26 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 sion.jt...Mr.Mt....&Connection.g
75c40 65 74 5f 64 65 66 61 75 6c 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 74 1f 00 00 et_default_session_timeout.jt...
75c60 4d 76 02 4d 78 02 87 94 8c 22 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 6f 63 6b 65 74 5f Mv.Mx...."Connection.get_socket_
75c80 72 65 61 64 5f 74 69 6d 65 6f 75 74 94 6a 74 1f 00 00 4d 7a 02 4d 7e 02 87 94 8c 13 43 6f 6e 6e read_timeout.jt...Mz.M~.....Conn
75ca0 65 63 74 69 6f 6e 2e 5f 68 65 78 64 75 6d 70 94 6a 74 1f 00 00 4d 80 02 4d 83 02 87 94 8c 23 43 ection._hexdump.jt...M..M.....#C
75cc0 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f onnection.get_socket_write_timeo
75ce0 75 74 94 6a 74 1f 00 00 4d 85 02 4d 8d 02 87 94 8c 22 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 ut.jt...M..M....."Connection.set
75d00 5f 73 6f 63 6b 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 94 6a 74 1f 00 00 4d 8f 02 4d 93 02 _socket_read_timeout.jt...M..M..
75d20 87 94 8c 23 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f ...#Connection.set_socket_write_
75d40 74 69 6d 65 6f 75 74 94 6a 74 1f 00 00 4d 95 02 4d 9d 02 87 94 8c 16 43 6f 6e 6e 65 63 74 69 6f timeout.jt...M..M......Connectio
75d60 6e 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 74 1f 00 00 4d 9f 02 4d a2 02 87 94 8c 2d 43 6f 6e n.get_version.jt...M..M.....-Con
75d80 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 nection.set_post_connection_chec
75da0 6b 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4d a4 02 4d a6 02 87 94 8c 1f 43 6f 6e 6e 65 63 k_callback.jt...M..M......Connec
75dc0 74 69 6f 6e 2e 73 65 74 5f 74 6c 73 65 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 94 6a 74 1f 00 00 4d tion.set_tlsext_host_name.jt...M
75de0 a8 02 4d ad 02 87 94 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 31 5f 68 6f 73 74 94 6a 74 ..M......Connection.set1_host.jt
75e00 1f 00 00 4d af 02 4d b2 02 87 94 8c 0a 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 7d 1f 00 00 4b 24 4d ...M..M......Connection.j}...K$M
75e20 b2 02 87 94 75 7d 94 28 8c 0a 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 5c 02 00 00 8c 11 43 6f 6e 6e ....u}.(..Connection.j\.....Conn
75e40 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 94 6a 5c 02 00 00 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e ection.accept.j\.....Connection.
75e60 61 63 63 65 70 74 5f 73 73 6c 94 6a 5c 02 00 00 8c 0f 43 6f 6e 6e 65 63 74 69 6f 6e 2e 62 69 6e accept_ssl.j\.....Connection.bin
75e80 64 94 6a 5c 02 00 00 8c 10 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 65 61 72 94 6a 5c 02 00 00 8c d.j\.....Connection.clear.j\....
75ea0 10 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 5c 02 00 00 8c 12 43 6f 6e 6e 65 63 74 .Connection.close.j\.....Connect
75ec0 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f ion.connect.j\.....Connection.co
75ee0 6e 6e 65 63 74 5f 73 73 6c 94 6a 5c 02 00 00 8c 11 43 6f 6e 6e 65 63 74 69 6f 6e 2e 66 69 6c 65 nnect_ssl.j\.....Connection.file
75f00 6e 6f 94 6a 5c 02 00 00 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 94 no.j\.....Connection.get_cipher.
75f20 6a 5c 02 00 00 8c 1a 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 j\.....Connection.get_cipher_lis
75f40 74 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 73 94 t.j\.....Connection.get_ciphers.
75f60 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 6f 6e 74 65 78 74 94 6a 5c j\.....Connection.get_context.j\
75f80 02 00 00 8c 26 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 64 65 66 61 75 6c 74 5f 73 65 73 73 ....&Connection.get_default_sess
75fa0 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 18 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 ion_timeout.j\.....Connection.ge
75fc0 74 5f 70 65 65 72 5f 63 65 72 74 94 6a 5c 02 00 00 8c 1e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 t_peer_cert.j\.....Connection.ge
75fe0 74 5f 70 65 65 72 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 t_peer_cert_chain.j\.....Connect
76000 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 17 43 6f 6e 6e 65 63 74 69 6f ion.get_session.j\.....Connectio
76020 6e 2e 67 65 74 5f 73 68 75 74 64 6f 77 6e 94 6a 5c 02 00 00 8c 22 43 6f 6e 6e 65 63 74 69 6f 6e n.get_shutdown.j\...."Connection
76040 2e 67 65 74 5f 73 6f 63 6b 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 23 .get_socket_read_timeout.j\....#
76060 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 Connection.get_socket_write_time
76080 6f 75 74 94 6a 5c 02 00 00 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 74 61 74 65 94 out.j\.....Connection.get_state.
760a0 6a 5c 02 00 00 8c 1b 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 j\.....Connection.get_verify_dep
760c0 74 68 94 6a 5c 02 00 00 8c 1a 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f th.j\.....Connection.get_verify_
760e0 6d 6f 64 65 94 6a 5c 02 00 00 8c 1c 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 mode.j\.....Connection.get_verif
76100 79 5f 72 65 73 75 6c 74 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 y_result.j\.....Connection.get_v
76120 65 72 73 69 6f 6e 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 70 65 65 72 ersion.j\.....Connection.getpeer
76140 6e 61 6d 65 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 73 6f 63 6b 6e 61 name.j\.....Connection.getsockna
76160 6d 65 94 6a 5c 02 00 00 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 73 6f 63 6b 6f 70 74 94 me.j\.....Connection.getsockopt.
76180 6a 5c 02 00 00 8c 11 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6c 69 73 74 65 6e 94 6a 5c 02 00 00 8c 13 j\.....Connection.listen.j\.....
761a0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6d 61 6b 65 66 69 6c 65 94 6a 5c 02 00 00 8c 12 43 6f 6e 6e 65 Connection.makefile.j\.....Conne
761c0 63 74 69 6f 6e 2e 70 65 6e 64 69 6e 67 94 6a 5c 02 00 00 8c 0f 43 6f 6e 6e 65 63 74 69 6f 6e 2e ction.pending.j\.....Connection.
761e0 72 65 61 64 94 6a 5c 02 00 00 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 63 76 5f 69 6e 74 6f read.j\.....Connection.recv_into
76200 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 6e 65 67 6f 74 69 61 74 65 94 6a .j\.....Connection.renegotiate.j
76220 5c 02 00 00 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 31 5f 68 6f 73 74 94 6a 5c 02 00 00 \.....Connection.set1_host.j\...
76240 8c 1b 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 94 6a 5c ..Connection.set_accept_state.j\
76260 02 00 00 8c 12 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 62 69 6f 94 6a 5c 02 00 00 8c 1a 43 .....Connection.set_bio.j\.....C
76280 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 5c 02 00 00 8c onnection.set_cipher_list.j\....
762a0 2a 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 *Connection.set_client_CA_list_f
762c0 72 6f 6d 5f 63 6f 6e 74 65 78 74 94 6a 5c 02 00 00 8c 27 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 rom_context.j\....'Connection.se
762e0 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 94 6a 5c 02 00 00 t_client_CA_list_from_file.j\...
76300 8c 1c 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 94 6a ..Connection.set_connect_state.j
76320 5c 02 00 00 8c 2d 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 70 6f 73 74 5f 63 6f 6e 6e 65 63 \....-Connection.set_post_connec
76340 74 69 6f 6e 5f 63 68 65 63 6b 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 16 43 6f 6e 6e 65 tion_check_callback.j\.....Conne
76360 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 1d 43 6f 6e 6e 65 63 74 ction.set_session.j\.....Connect
76380 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 5c 02 00 00 8c 17 43 6f ion.set_session_id_ctx.j\.....Co
763a0 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 68 75 74 64 6f 77 6e 94 6a 5c 02 00 00 8c 22 43 6f 6e nnection.set_shutdown.j\...."Con
763c0 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 6f 63 6b 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 94 nection.set_socket_read_timeout.
763e0 6a 5c 02 00 00 8c 23 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 j\....#Connection.set_socket_wri
76400 74 65 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 1d 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 te_timeout.j\.....Connection.set
76420 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 94 6a 5c 02 00 00 8c 1f 43 6f 6e 6e 65 63 74 69 6f _ssl_close_flag.j\.....Connectio
76440 6e 2e 73 65 74 5f 74 6c 73 65 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 94 6a 5c 02 00 00 8c 16 43 6f n.set_tlsext_host_name.j\.....Co
76460 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 94 6a 5c 02 00 00 8c 15 43 6f 6e 6e nnection.setblocking.j\.....Conn
76480 65 63 74 69 6f 6e 2e 73 65 74 73 6f 63 6b 6f 70 74 94 6a 5c 02 00 00 8c 15 43 6f 6e 6e 65 63 74 ection.setsockopt.j\.....Connect
764a0 69 6f 6e 2e 73 65 74 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 15 43 6f 6e 6e 65 63 74 69 6f 6e ion.settimeout.j\.....Connection
764c0 2e 73 65 74 75 70 5f 61 64 64 72 94 6a 5c 02 00 00 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 .setup_addr.j\.....Connection.se
764e0 74 75 70 5f 73 73 6c 94 6a 5c 02 00 00 8c 13 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 68 75 74 64 6f tup_ssl.j\.....Connection.shutdo
76500 77 6e 94 6a 5c 02 00 00 8c 18 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 73 6c 5f 67 65 74 5f 65 72 72 wn.j\.....Connection.ssl_get_err
76520 6f 72 94 6a 5c 02 00 00 8c 14 43 6f 6e 6e 65 63 74 69 6f 6e 2e 76 65 72 69 66 79 5f 6f 6b 94 6a or.j\.....Connection.verify_ok.j
76540 5c 02 00 00 8c 10 43 6f 6e 6e 65 63 74 69 6f 6e 2e 77 72 69 74 65 94 6a 5c 02 00 00 75 8c 17 4d \.....Connection.write.j\...u..M
76560 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 74 94 8c 14 4d 32 43 72 79 2Crypto.SSL.Connection.t...M2Cry
76580 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 28 58 a8 42 00 00 66 72 6f 6d 20 5f 5f 66 75 74 pto.SSL.Context.(X.B..from.__fut
765a0 75 72 65 5f 5f 20 69 6d 70 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 ure__.import.absolute_import..""
765c0 22 53 53 4c 20 43 6f 6e 74 65 78 74 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 "SSL.Context..Copyright.(c).1999
765e0 2d 32 30 30 34 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 -2004.Ng.Pheng.Siong..All.rights
76600 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 .reserved."""..from.M2Crypto.imp
76620 6f 72 74 20 42 49 4f 2c 20 45 72 72 2c 20 52 53 41 2c 20 58 35 30 39 2c 20 6d 32 2c 20 75 74 69 ort.BIO,.Err,.RSA,.X509,.m2,.uti
76640 6c 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 20 69 6d 70 6f l..#.noqa.from.M2Crypto.SSL.impo
76660 72 74 20 63 62 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e rt.cb..#.noqa.from.M2Crypto.SSL.
76680 53 65 73 73 69 6f 6e 20 69 6d 70 6f 72 74 20 53 65 73 73 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 66 Session.import.Session..#.noqa.f
766a0 72 6f 6d 20 77 65 61 6b 72 65 66 20 69 6d 70 6f 72 74 20 57 65 61 6b 56 61 6c 75 65 44 69 63 74 rom.weakref.import.WeakValueDict
766c0 69 6f 6e 61 72 79 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f ionary.if.util.py27plus:.....fro
766e0 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 41 6e 79 53 74 72 2c 20 43 61 6c m.typing.import.Any,.AnyStr,.Cal
76700 6c 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 0a lable,.Optional,.Union..#.noqa..
76720 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 63 74 78 6d 61 70 27 2c 20 27 43 6f 6e 74 65 78 74 27 2c 20 __all__.=.['ctxmap',.'Context',.
76740 27 6d 61 70 27 5d 0a 0a 0a 63 6c 61 73 73 20 5f 63 74 78 6d 61 70 28 6f 62 6a 65 63 74 29 3a 0a 'map']...class._ctxmap(object):.
76760 20 20 20 20 73 69 6e 67 6c 65 74 6f 6e 20 3d 20 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 4f 70 ....singleton.=.None..#.type:.Op
76780 74 69 6f 6e 61 6c 5b 5f 63 74 78 6d 61 70 5d 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f tional[_ctxmap]......def.__init_
767a0 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e _(self):.........#.type:.().->.N
767c0 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 69 6d 70 6c 65 20 57 65 61 6b 52 65 66 66 65 64 one........."""Simple.WeakReffed
767e0 20 6c 69 73 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e .list..........""".........self.
76800 5f 63 74 78 6d 61 70 20 3d 20 57 65 61 6b 56 61 6c 75 65 44 69 63 74 69 6f 6e 61 72 79 28 29 0a _ctxmap.=.WeakValueDictionary().
76820 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 29 3a .....def.__getitem__(self,.key):
76840 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 41 6e 79 0a 20 20 .........#.type:.(int).->.Any...
76860 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 63 74 78 6d 61 70 5b 6b 65 79 5d 0a 0a ......return.self._ctxmap[key]..
76880 20 20 20 20 64 65 66 20 5f 5f 73 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 2c 20 76 ....def.__setitem__(self,.key,.v
768a0 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 41 6e 79 alue):.........#.type:.(int,.Any
768c0 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 74 78 6d 61 70 5b 6b ).->.None.........self._ctxmap[k
768e0 65 79 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 69 74 65 6d 5f 5f ey].=.value......def.__delitem__
76900 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e (self,.key):.........#.type:.(in
76920 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 5f 63 74 78 t).->.None.........del.self._ctx
76940 6d 61 70 5b 6b 65 79 5d 0a 0a 0a 64 65 66 20 63 74 78 6d 61 70 28 29 3a 0a 20 20 20 20 23 20 74 map[key]...def.ctxmap():.....#.t
76960 79 70 65 3a 20 28 29 20 2d 3e 20 5f 63 74 78 6d 61 70 0a 20 20 20 20 69 66 20 5f 63 74 78 6d 61 ype:.().->._ctxmap.....if._ctxma
76980 70 2e 73 69 6e 67 6c 65 74 6f 6e 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 5f 63 74 p.singleton.is.None:........._ct
769a0 78 6d 61 70 2e 73 69 6e 67 6c 65 74 6f 6e 20 3d 20 5f 63 74 78 6d 61 70 28 29 0a 20 20 20 20 72 xmap.singleton.=._ctxmap().....r
769c0 65 74 75 72 6e 20 5f 63 74 78 6d 61 70 2e 73 69 6e 67 6c 65 74 6f 6e 0a 23 20 64 65 70 72 65 63 eturn._ctxmap.singleton.#.deprec
769e0 61 74 65 64 21 21 21 0a 6d 61 70 20 3d 20 63 74 78 6d 61 70 0a 0a 0a 63 6c 61 73 73 20 43 6f 6e ated!!!.map.=.ctxmap...class.Con
76a00 74 65 78 74 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 22 22 22 27 43 6f 6e 74 65 78 74 27 20 text(object):......"""'Context'.
76a20 66 6f 72 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 22 22 22 0a 0a 20 20 20 20 6d 32 5f for.SSL.connections."""......m2_
76a40 73 73 6c 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 66 72 65 65 0a 0a ssl_ctx_free.=.m2.ssl_ctx_free..
76a60 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 72 6f 74 6f 63 6f 6c 3d ....def.__init__(self,.protocol=
76a80 27 74 6c 73 27 2c 20 77 65 61 6b 5f 63 72 79 70 74 6f 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 'tls',.weak_crypto=None,........
76aa0 20 20 20 20 20 20 20 20 20 20 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 3d ..........post_connection_check=
76ac0 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 4f 70 74 None):.........#.type:.(str,.Opt
76ae0 69 6f 6e 61 6c 5b 69 6e 74 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 5d 29 20 ional[int],.Optional[Callable]).
76b00 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 70 72 6f 74 6f 20 3d 20 67 65 74 61 74 74 72 28 ->.None.........proto.=.getattr(
76b20 6d 32 2c 20 70 72 6f 74 6f 63 6f 6c 20 2b 20 27 5f 6d 65 74 68 6f 64 27 2c 20 4e 6f 6e 65 29 0a m2,.protocol.+.'_method',.None).
76b40 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 74 6f 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 ........if.proto.is.None:.......
76b60 20 20 20 20 20 20 23 20 64 65 66 61 75 6c 74 20 69 73 20 27 73 73 6c 76 32 33 27 20 66 6f 72 20 ......#.default.is.'sslv23'.for.
76b80 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 4f 70 65 6e 53 53 4c 0a 20 20 20 20 20 20 older.versions.of.OpenSSL.......
76ba0 20 20 20 20 20 20 69 66 20 70 72 6f 74 6f 63 6f 6c 20 3d 3d 20 27 74 6c 73 27 3a 0a 20 20 20 20 ......if.protocol.==.'tls':.....
76bc0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 ............proto.=.getattr(m2,.
76be0 27 73 73 6c 76 32 33 5f 6d 65 74 68 6f 64 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 'sslv23_method').............els
76c00 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 e:.................raise.ValueEr
76c20 72 6f 72 28 22 6e 6f 20 73 75 63 68 20 70 72 6f 74 6f 63 6f 6c 20 27 25 73 27 22 20 25 20 70 72 ror("no.such.protocol.'%s'".%.pr
76c40 6f 74 6f 63 6f 6c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 6d 32 2e 73 73 otocol).........self.ctx.=.m2.ss
76c60 6c 5f 63 74 78 5f 6e 65 77 28 70 72 6f 74 6f 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e l_ctx_new(proto()).........self.
76c80 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 20 3d 20 30 20 20 23 20 74 79 70 65 3a 20 55 6e allow_unknown_ca.=.0..#.type:.Un
76ca0 69 6f 6e 5b 69 6e 74 2c 20 62 6f 6f 6c 5d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 73 74 ion[int,.bool].........self.post
76cc0 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 20 3d 20 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 _connection_check.=.post_connect
76ce0 69 6f 6e 5f 63 68 65 63 6b 0a 20 20 20 20 20 20 20 20 63 74 78 6d 61 70 28 29 5b 69 6e 74 28 73 ion_check.........ctxmap()[int(s
76d00 65 6c 66 2e 63 74 78 29 5d 20 3d 20 73 65 6c 66 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f elf.ctx)].=.self.........m2.ssl_
76d20 63 74 78 5f 73 65 74 5f 63 61 63 68 65 5f 73 69 7a 65 28 73 65 6c 66 2e 63 74 78 2c 20 31 32 38 ctx_set_cache_size(self.ctx,.128
76d40 29 0a 20 20 20 20 20 20 20 20 69 66 20 77 65 61 6b 5f 63 72 79 70 74 6f 20 69 73 20 4e 6f 6e 65 ).........if.weak_crypto.is.None
76d60 20 61 6e 64 20 70 72 6f 74 6f 63 6f 6c 20 69 6e 20 28 27 73 73 6c 76 32 33 27 2c 20 27 74 6c 73 .and.protocol.in.('sslv23',.'tls
76d80 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 '):.............self.set_options
76da0 28 6d 32 2e 53 53 4c 5f 4f 50 5f 41 4c 4c 20 7c 20 6d 32 2e 53 53 4c 5f 4f 50 5f 4e 4f 5f 53 53 (m2.SSL_OP_ALL.|.m2.SSL_OP_NO_SS
76dc0 4c 76 32 20 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Lv2.|...........................
76de0 20 20 20 6d 32 2e 53 53 4c 5f 4f 50 5f 4e 4f 5f 53 53 4c 76 33 29 0a 0a 20 20 20 20 64 65 66 20 ...m2.SSL_OP_NO_SSLv3)......def.
76e00 5f 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 __del__(self):.........#.type:.(
76e20 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c ).->.None.........if.getattr(sel
76e40 66 2c 20 27 63 74 78 27 2c 20 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c f,.'ctx',.None):.............sel
76e60 66 2e 6d 32 5f 73 73 6c 5f 63 74 78 5f 66 72 65 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 f.m2_ssl_ctx_free(self.ctx).....
76e80 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 .def.close(self):.........#.type
76ea0 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 64 65 6c 20 63 74 78 6d 61 70 28 :.().->.None.........del.ctxmap(
76ec0 29 5b 69 6e 74 28 73 65 6c 66 2e 63 74 78 29 5d 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 63 )[int(self.ctx)]......def.load_c
76ee0 65 72 74 28 73 65 6c 66 2c 20 63 65 72 74 66 69 6c 65 2c 20 6b 65 79 66 69 6c 65 3d 4e 6f 6e 65 ert(self,.certfile,.keyfile=None
76f00 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 ,...................callback=uti
76f20 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 l.passphrase_callback):.........
76f40 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 #.type:.(AnyStr,.Optional[AnyStr
76f60 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 ],.Callable).->.None........."""
76f80 4c 6f 61 64 20 63 65 72 74 69 66 69 63 61 74 65 20 61 6e 64 20 70 72 69 76 61 74 65 20 6b 65 79 Load.certificate.and.private.key
76fa0 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 .into.the.context...........:par
76fc0 61 6d 20 63 65 72 74 66 69 6c 65 3a 20 46 69 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 am.certfile:.File.that.contains.
76fe0 74 68 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 20 20 20 the.PEM-encoded.certificate.....
77000 20 20 20 20 20 3a 70 61 72 61 6d 20 6b 65 79 66 69 6c 65 3a 20 20 46 69 6c 65 20 74 68 61 74 20 .....:param.keyfile:..File.that.
77020 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 70 72 69 76 61 74 65 contains.the.PEM-encoded.private
77040 20 6b 65 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 .key...........................D
77060 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 4e 6f 6e 65 20 69 6e 64 69 63 61 74 65 73 20 74 efault.value.of.None.indicates.t
77080 68 61 74 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 hat.the.private.key.............
770a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 74 6f 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 27 .............is.to.be.found.in.'
770c0 63 65 72 74 66 69 6c 65 27 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 certfile'..........:param.callba
770e0 63 6b 3a 20 43 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 ck:.Callable.object.to.be.invoke
77100 64 20 69 66 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 20 69 73 0a 20 20 20 20 20 20 20 20 d.if.the.private.key.is.........
77120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 70 68 72 61 73 65 2d 70 72 6f 74 .................passphrase-prot
77140 65 63 74 65 64 2e 20 44 65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 20 70 72 6f 76 69 64 65 73 ected..Default.callback.provides
77160 20 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 6d 70 .a..........................simp
77180 6c 65 20 74 65 72 6d 69 6e 61 6c 2d 73 74 79 6c 65 20 69 6e 70 75 74 20 66 6f 72 20 74 68 65 20 le.terminal-style.input.for.the.
771a0 70 61 73 73 70 68 72 61 73 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 passphrase..........""".........
771c0 6d 32 2e 73 73 6c 5f 63 74 78 5f 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 28 73 m2.ssl_ctx_passphrase_callback(s
771e0 65 6c 66 2e 63 74 78 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 elf.ctx,.callback).........m2.ss
77200 6c 5f 63 74 78 5f 75 73 65 5f 63 65 72 74 28 73 65 6c 66 2e 63 74 78 2c 20 63 65 72 74 66 69 6c l_ctx_use_cert(self.ctx,.certfil
77220 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6b 65 79 66 69 6c 65 3a 0a 20 20 20 20 20 e).........if.not.keyfile:......
77240 20 20 20 20 20 20 20 6b 65 79 66 69 6c 65 20 3d 20 63 65 72 74 66 69 6c 65 0a 20 20 20 20 20 20 .......keyfile.=.certfile.......
77260 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 75 73 65 5f 70 72 69 76 6b 65 79 28 73 65 6c 66 2e 63 74 ..m2.ssl_ctx_use_privkey(self.ct
77280 78 2c 20 6b 65 79 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 32 2e 73 73 x,.keyfile).........if.not.m2.ss
772a0 6c 5f 63 74 78 5f 63 68 65 63 6b 5f 70 72 69 76 6b 65 79 28 73 65 6c 66 2e 63 74 78 29 3a 0a 20 l_ctx_check_privkey(self.ctx):..
772c0 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 70 75 62 ...........raise.ValueError('pub
772e0 6c 69 63 2f 70 72 69 76 61 74 65 20 6b 65 79 20 6d 69 73 6d 61 74 63 68 27 29 0a 0a 20 20 20 20 lic/private.key.mismatch')......
77300 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 5f 63 68 61 69 6e 28 73 65 6c 66 2c 20 63 65 72 74 63 68 def.load_cert_chain(self,.certch
77320 61 69 6e 66 69 6c 65 2c 20 6b 65 79 66 69 6c 65 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 ainfile,.keyfile=None,..........
77340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 ...............callback=util.pas
77360 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 sphrase_callback):.........#.typ
77380 65 3a 20 28 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 43 61 e:.(AnyStr,.Optional[AnyStr],.Ca
773a0 6c 6c 61 62 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 llable).->.None........."""Load.
773c0 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e 20 61 6e 64 20 70 72 69 76 61 74 65 20 6b 65 certificate.chain.and.private.ke
773e0 79 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 y.into.the.context...........:pa
77400 72 61 6d 20 63 65 72 74 63 68 61 69 6e 66 69 6c 65 3a 20 46 69 6c 65 20 6f 62 6a 65 63 74 20 63 ram.certchainfile:.File.object.c
77420 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 0a 20 20 20 20 20 20 ontaining.the.PEM-encoded.......
77440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 ........................certific
77460 61 74 65 20 63 68 61 69 6e 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6b 65 79 66 69 6c ate.chain..........:param.keyfil
77480 65 3a 20 20 20 20 20 20 20 46 69 6c 65 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 e:.......File.object.containing.
774a0 74 68 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 20 20 20 the.PEM-encoded.private.........
774c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 20 44 65 66 61 75 ......................key..Defau
774e0 6c 74 20 76 61 6c 75 65 20 6f 66 20 4e 6f 6e 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 lt.value.of.None.indicates.that.
77500 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 the.............................
77520 20 20 70 72 69 76 61 74 65 20 6b 65 79 20 69 73 20 74 6f 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 ..private.key.is.to.be.found.in.
77540 27 63 65 72 74 63 68 61 69 6e 66 69 6c 65 27 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 'certchainfile'..........:param.
77560 63 61 6c 6c 62 61 63 6b 3a 20 20 20 20 20 20 43 61 6c 6c 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 callback:......Callable.object.t
77580 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 69 66 20 74 68 65 20 70 72 69 76 61 74 65 20 6b 65 79 0a o.be.invoked.if.the.private.key.
775a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 ..............................is
775c0 20 70 61 73 73 70 68 72 61 73 65 2d 70 72 6f 74 65 63 74 65 64 2e 20 44 65 66 61 75 6c 74 20 63 .passphrase-protected..Default.c
775e0 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 allback.........................
77600 20 20 20 20 20 20 70 72 6f 76 69 64 65 73 20 61 20 73 69 6d 70 6c 65 20 74 65 72 6d 69 6e 61 6c ......provides.a.simple.terminal
77620 2d 73 74 79 6c 65 20 69 6e 70 75 74 20 66 6f 72 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 -style.input.for.the............
77640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 70 68 72 61 73 65 2e 0a 20 ...................passphrase...
77660 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 70 61 .......""".........m2.ssl_ctx_pa
77680 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2e 63 74 78 2c 20 63 61 6c 6c ssphrase_callback(self.ctx,.call
776a0 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 75 73 65 5f 63 65 72 back).........m2.ssl_ctx_use_cer
776c0 74 5f 63 68 61 69 6e 28 73 65 6c 66 2e 63 74 78 2c 20 63 65 72 74 63 68 61 69 6e 66 69 6c 65 29 t_chain(self.ctx,.certchainfile)
776e0 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6b 65 79 66 69 6c 65 3a 0a 20 20 20 20 20 20 20 .........if.not.keyfile:........
77700 20 20 20 20 20 6b 65 79 66 69 6c 65 20 3d 20 63 65 72 74 63 68 61 69 6e 66 69 6c 65 0a 20 20 20 .....keyfile.=.certchainfile....
77720 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 75 73 65 5f 70 72 69 76 6b 65 79 28 73 65 6c 66 .....m2.ssl_ctx_use_privkey(self
77740 2e 63 74 78 2c 20 6b 65 79 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 32 .ctx,.keyfile).........if.not.m2
77760 2e 73 73 6c 5f 63 74 78 5f 63 68 65 63 6b 5f 70 72 69 76 6b 65 79 28 73 65 6c 66 2e 63 74 78 29 .ssl_ctx_check_privkey(self.ctx)
77780 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 :.............raise.ValueError('
777a0 70 75 62 6c 69 63 2f 70 72 69 76 61 74 65 20 6b 65 79 20 6d 69 73 6d 61 74 63 68 27 29 0a 0a 20 public/private.key.mismatch')...
777c0 20 20 20 64 65 66 20 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 ...def.set_client_CA_list_from_f
777e0 69 6c 65 28 73 65 6c 66 2c 20 63 61 66 69 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ile(self,.cafile):.........#.typ
77800 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 4c e:.(AnyStr).->.None........."""L
77820 6f 61 64 20 43 41 20 63 65 72 74 73 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 20 54 oad.CA.certs.into.the.context..T
77840 68 65 73 65 20 43 41 20 63 65 72 74 73 20 61 72 65 20 73 65 6e 74 20 74 6f 20 74 68 65 0a 20 20 hese.CA.certs.are.sent.to.the...
77860 20 20 20 20 20 20 70 65 65 72 20 64 75 72 69 6e 67 20 2a 53 53 4c 76 33 20 63 65 72 74 69 66 69 ......peer.during.*SSLv3.certifi
77880 63 61 74 65 20 72 65 71 75 65 73 74 2a 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 cate.request*...........:param.c
778a0 61 66 69 6c 65 3a 20 46 69 6c 65 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6f 6e afile:.File.object.containing.on
778c0 65 20 6f 72 20 6d 6f 72 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 43 41 0a 20 20 20 20 20 20 20 e.or.more.PEM-encoded.CA........
778e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 73 20 63 6f 6e ................certificates.con
77900 63 61 74 65 6e 61 74 65 64 20 74 6f 67 65 74 68 65 72 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a catenated.together..........""".
77920 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 ........m2.ssl_ctx_set_client_CA
77940 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 28 73 65 6c 66 2e 63 74 78 2c 20 63 61 66 69 6c 65 _list_from_file(self.ctx,.cafile
77960 29 0a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 74 65 64 2e 0a 20 20 20 20 6c 6f 61 64 5f 63 6c )......#.Deprecated......load_cl
77980 69 65 6e 74 5f 43 41 20 3d 20 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 63 61 20 3d 20 73 65 74 5f 63 ient_CA.=.load_client_ca.=.set_c
779a0 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 0a 0a 20 20 20 20 64 65 66 lient_CA_list_from_file......def
779c0 20 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 28 73 65 6c 66 2c 20 63 61 66 .load_verify_locations(self,.caf
779e0 69 6c 65 3d 4e 6f 6e 65 2c 20 63 61 70 61 74 68 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 ile=None,.capath=None):.........
77a00 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 4f 70 74 69 6f #.type:.(Optional[AnyStr],.Optio
77a20 6e 61 6c 5b 41 6e 79 53 74 72 5d 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 4c nal[AnyStr]).->.int........."""L
77a40 6f 61 64 20 43 41 20 63 65 72 74 73 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a oad.CA.certs.into.the.context...
77a60 20 20 20 20 20 20 20 20 54 68 65 73 65 20 43 41 20 63 65 72 74 73 20 61 72 65 20 75 73 65 64 20 ........These.CA.certs.are.used.
77a80 64 75 72 69 6e 67 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 65 65 72 27 during.verification.of.the.peer'
77aa0 73 0a 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 s.........certificate...........
77ac0 3a 70 61 72 61 6d 20 63 61 66 69 6c 65 3a 20 46 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6f :param.cafile:.File.containing.o
77ae0 6e 65 20 6f 72 20 6d 6f 72 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 43 41 0a 20 20 20 20 20 20 ne.or.more.PEM-encoded.CA.......
77b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 73 20 63 6f .................certificates.co
77b20 6e 63 61 74 65 6e 61 74 65 64 20 74 6f 67 65 74 68 65 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 ncatenated.together...........:p
77b40 61 72 61 6d 20 63 61 70 61 74 68 3a 20 44 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e aram.capath:.Directory.containin
77b60 67 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 43 41 20 63 65 72 74 69 66 69 63 61 74 65 73 0a 20 20 g.PEM-encoded.CA.certificates...
77b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 6e 65 20 63 65 72 74 69 66 .....................(one.certif
77ba0 69 63 61 74 65 20 70 65 72 20 66 69 6c 65 29 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 icate.per.file)...........:retur
77bc0 6e 3a 20 30 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 n:.0.if.the.operation.failed.bec
77be0 61 75 73 65 20 43 41 66 69 6c 65 20 61 6e 64 20 43 41 70 61 74 68 20 61 72 65 20 4e 55 4c 4c 0a ause.CAfile.and.CApath.are.NULL.
77c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 ..................or.the.process
77c20 69 6e 67 20 61 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 73 20 73 70 65 63 ing.at.one.of.the.locations.spec
77c40 69 66 69 65 64 20 66 61 69 6c 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ified.failed....................
77c60 43 68 65 63 6b 20 74 68 65 20 65 72 72 6f 72 20 73 74 61 63 6b 20 74 6f 20 66 69 6e 64 20 6f 75 Check.the.error.stack.to.find.ou
77c80 74 20 74 68 65 20 72 65 61 73 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 t.the.reason...................1
77ca0 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 75 63 63 65 65 64 65 64 2e 0a 20 20 20 20 20 20 .The.operation.succeeded........
77cc0 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 63 61 66 69 6c 65 20 69 73 20 4e 6f 6e 65 20 ..""".........if.cafile.is.None.
77ce0 61 6e 64 20 63 61 70 61 74 68 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 and.capath.is.None:.............
77d00 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 63 61 66 69 6c 65 20 61 6e 64 20 63 61 70 raise.ValueError("cafile.and.cap
77d20 61 74 68 20 63 61 6e 20 6e 6f 74 20 62 6f 74 68 20 62 65 20 4e 6f 6e 65 2e 22 29 0a 20 20 20 20 ath.can.not.both.be.None.").....
77d40 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 6c 6f 61 64 5f 76 65 72 69 66 ....return.m2.ssl_ctx_load_verif
77d60 79 5f 6c 6f 63 61 74 69 6f 6e 73 28 73 65 6c 66 2e 63 74 78 2c 20 63 61 66 69 6c 65 2c 20 63 61 y_locations(self.ctx,.cafile,.ca
77d80 70 61 74 68 29 0a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 74 65 64 2e 0a 20 20 20 20 6c 6f 61 path)......#.Deprecated......loa
77da0 64 5f 76 65 72 69 66 79 5f 69 6e 66 6f 20 3d 20 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 d_verify_info.=.load_verify_loca
77dc0 74 69 6f 6e 73 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 tions......def.set_session_id_ct
77de0 78 28 73 65 6c 66 2c 20 69 64 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 x(self,.id):.........#.type:.(by
77e00 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 73 20 74 68 65 tes).->.None........."""Sets.the
77e20 20 73 65 73 73 69 6f 6e 20 69 64 20 66 6f 72 20 74 68 65 20 53 53 4c 2e 43 6f 6e 74 65 78 74 20 .session.id.for.the.SSL.Context.
77e40 77 2f 69 6e 20 61 20 73 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 72 65 75 73 65 64 2e 0a 0a 20 w/in.a.session.can.be.reused....
77e60 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 64 3a 20 53 65 73 73 69 6f 6e 73 20 61 72 65 20 67 .......:param.id:.Sessions.are.g
77e80 65 6e 65 72 61 74 65 64 20 77 69 74 68 69 6e 20 61 20 63 65 72 74 61 69 6e 20 63 6f 6e 74 65 78 enerated.within.a.certain.contex
77ea0 74 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 6f 72 t..When....................expor
77ec0 74 69 6e 67 2f 69 6d 70 6f 72 74 69 6e 67 20 73 65 73 73 69 6f 6e 73 20 77 69 74 68 0a 20 20 20 ting/importing.sessions.with....
77ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 32 64 5f 53 53 4c 5f 53 45 53 53 49 4f 4e 2f ................i2d_SSL_SESSION/
77f00 64 32 69 5f 53 53 4c 5f 53 45 53 53 49 4f 4e 20 69 74 20 77 6f 75 6c 64 20 62 65 20 70 6f 73 73 d2i_SSL_SESSION.it.would.be.poss
77f20 69 62 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 72 65 2d 69 ible,....................to.re-i
77f40 6d 70 6f 72 74 20 61 20 73 65 73 73 69 6f 6e 20 67 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 61 mport.a.session.generated.from.a
77f60 6e 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nother.context..................
77f80 20 20 28 65 2e 67 2e 20 61 6e 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 29 2c 20 77 68 ..(e.g..another.application),.wh
77fa0 69 63 68 20 6d 69 67 68 74 20 6c 65 61 64 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ich.might.lead.to...............
77fc0 20 20 20 20 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 73 2e 20 54 68 65 72 65 66 6f 72 65 20 65 61 63 .....malfunctions..Therefore.eac
77fe0 68 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 73 65 74 20 69 74 73 0a 20 20 20 20 20 h.application.must.set.its......
78000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 77 6e 20 73 65 73 73 69 6f 6e 20 69 64 20 63 6f 6e ..............own.session.id.con
78020 74 65 78 74 20 73 69 64 5f 63 74 78 20 77 68 69 63 68 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20 text.sid_ctx.which.is.used.to...
78040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 74 69 6e 67 75 69 73 68 20 74 68 65 .................distinguish.the
78060 20 63 6f 6e 74 65 78 74 73 20 61 6e 64 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 65 78 70 6f 72 .contexts.and.is.stored.in.expor
78080 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e 73 2e ted....................sessions.
780a0 20 54 68 65 20 73 69 64 5f 63 74 78 20 63 61 6e 20 62 65 20 61 6e 79 20 6b 69 6e 64 20 6f 66 20 .The.sid_ctx.can.be.any.kind.of.
780c0 62 69 6e 61 72 79 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 binary.data....................w
780e0 69 74 68 20 61 20 67 69 76 65 6e 20 6c 65 6e 67 74 68 2c 20 69 74 20 69 73 20 74 68 65 72 65 66 ith.a.given.length,.it.is.theref
78100 6f 72 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ore.possible.to.use.............
78120 20 20 20 20 20 20 20 65 2e 67 2e 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 70 70 6c .......e.g..the.name.of.the.appl
78140 69 63 61 74 69 6f 6e 20 61 6e 64 2f 6f 72 20 74 68 65 20 68 6f 73 74 6e 61 6d 65 0a 20 20 20 20 ication.and/or.the.hostname.....
78160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 2f 6f 72 20 73 65 72 76 69 63 65 20 6e 61 ...............and/or.service.na
78180 6d 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 me..........""".........ret.=.m2
781a0 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 6f 6e 74 65 78 74 28 .ssl_ctx_set_session_id_context(
781c0 73 65 6c 66 2e 63 74 78 2c 20 69 64 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 self.ctx,.id).........if.not.ret
781e0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 72 72 2e 53 53 4c 45 72 72 6f 72 :.............raise.Err.SSLError
78200 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 29 2c 20 27 27 29 0a 0a 20 20 20 20 (Err.get_error_code(),.'')......
78220 64 65 66 20 73 65 74 5f 64 65 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 28 73 65 6c def.set_default_verify_paths(sel
78240 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 f):.........#.type:.().->.int...
78260 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 70 65 63 69 66 69 65 73 20 74 68 61 74 ......""".........Specifies.that
78280 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 61 74 69 6f 6e 73 20 66 72 6f 6d 20 77 68 69 63 .the.default.locations.from.whic
782a0 68 20 43 41 20 63 65 72 74 73 20 61 72 65 0a 20 20 20 20 20 20 20 20 6c 6f 61 64 65 64 20 73 68 h.CA.certs.are.........loaded.sh
782c0 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20 ould.be.used...........There.is.
782e0 6f 6e 65 20 64 65 66 61 75 6c 74 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 6f 6e 65 20 64 65 one.default.directory.and.one.de
78300 66 61 75 6c 74 20 66 69 6c 65 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 fault.file..The.default.........
78320 43 41 20 63 65 72 74 69 66 69 63 61 74 65 73 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 63 61 6c CA.certificates.directory.is.cal
78340 6c 65 64 20 22 63 65 72 74 73 22 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 led."certs".in.the.default......
78360 20 20 20 4f 70 65 6e 53 53 4c 20 64 69 72 65 63 74 6f 72 79 2e 20 41 6c 74 65 72 6e 61 74 69 76 ...OpenSSL.directory..Alternativ
78380 65 6c 79 20 74 68 65 20 53 53 4c 5f 43 45 52 54 5f 44 49 52 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 ely.the.SSL_CERT_DIR.environment
783a0 0a 20 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 61 6e 20 62 65 20 64 65 66 69 6e 65 64 .........variable.can.be.defined
783c0 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6c 6f 63 61 74 69 6f 6e 2e 20 54 68 65 20 .to.override.this.location..The.
783e0 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 43 41 20 63 65 72 74 69 66 69 63 61 74 65 73 20 default.........CA.certificates.
78400 66 69 6c 65 20 69 73 20 63 61 6c 6c 65 64 20 22 63 65 72 74 2e 70 65 6d 22 20 69 6e 20 74 68 65 file.is.called."cert.pem".in.the
78420 20 64 65 66 61 75 6c 74 20 4f 70 65 6e 53 53 4c 0a 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f .default.OpenSSL.........directo
78440 72 79 2e 20 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 20 74 68 65 20 53 53 4c 5f 43 45 52 54 5f 46 ry..Alternatively.the.SSL_CERT_F
78460 49 4c 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0a 20 20 20 20 20 20 20 ILE.environment.variable........
78480 20 63 61 6e 20 62 65 20 64 65 66 69 6e 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 .can.be.defined.to.override.this
784a0 20 6c 6f 63 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 40 72 65 74 75 72 6e 20 30 20 69 66 .location...........@return.0.if
784c0 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 61 69 6c 65 64 2e 20 41 20 6d 69 73 73 69 6e 67 .the.operation.failed..A.missing
784e0 20 64 65 66 61 75 6c 74 20 6c 6f 63 61 74 69 6f 6e 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 .default.location.is............
78500 20 20 20 20 20 20 20 73 74 69 6c 6c 20 74 72 65 61 74 65 64 20 61 73 20 61 20 73 75 63 63 65 73 .......still.treated.as.a.succes
78520 73 2e 20 4e 6f 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 73 65 74 2e 0a 0a 20 20 20 20 20 20 s..No.error.code.is.set.........
78540 20 20 20 20 20 20 20 20 20 20 31 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 75 63 63 65 65 ..........1.The.operation.succee
78560 64 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d ded..........""".........ret.=.m
78580 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 64 65 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 2.ssl_ctx_set_default_verify_pat
785a0 68 73 28 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 3a hs(self.ctx).........if.not.ret:
785c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 43 .............raise.ValueError('C
785e0 61 6e 6e 6f 74 20 75 73 65 20 64 65 66 61 75 6c 74 20 53 53 4c 20 63 65 72 74 69 66 69 63 61 74 annot.use.default.SSL.certificat
78600 65 20 73 74 6f 72 65 21 27 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e e.store!')......def.set_allow_un
78620 6b 6e 6f 77 6e 5f 63 61 28 73 65 6c 66 2c 20 6f 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 known_ca(self,.ok):.........#.ty
78640 70 65 3a 20 28 55 6e 69 6f 6e 5b 69 6e 74 2c 20 62 6f 6f 6c 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 pe:.(Union[int,.bool]).->.None..
78660 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 68 65 20 63 6f 6e 74 65 78 74 20 74 6f 20 61 63 63 ......."""Set.the.context.to.acc
78680 65 70 74 2f 72 65 6a 65 63 74 20 61 20 70 65 65 72 20 63 65 72 74 69 66 69 63 61 74 65 20 69 66 ept/reject.a.peer.certificate.if
786a0 20 74 68 65 0a 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 27 73 20 43 41 20 69 73 .the.........certificate's.CA.is
786c0 20 75 6e 6b 6e 6f 77 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6f 6b 3a 20 20 20 .unknown...........:param.ok:...
786e0 20 20 20 20 54 72 75 65 20 74 6f 20 61 63 63 65 70 74 2c 20 46 61 6c 73 65 20 74 6f 20 72 65 6a ....True.to.accept,.False.to.rej
78700 65 63 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 6c ect..........""".........self.al
78720 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 20 3d 20 6f 6b 0a 0a 20 20 20 20 64 65 66 20 67 65 74 low_unknown_ca.=.ok......def.get
78740 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 _allow_unknown_ca(self):........
78760 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 55 6e 69 6f 6e 5b 69 6e 74 2c 20 62 6f 6f 6c 5d 0a .#.type:.().->.Union[int,.bool].
78780 20 20 20 20 20 20 20 20 22 22 22 47 65 74 20 74 68 65 20 63 6f 6e 74 65 78 74 27 73 20 73 65 74 ........"""Get.the.context's.set
787a0 74 69 6e 67 20 74 68 61 74 20 61 63 63 65 70 74 73 2f 72 65 6a 65 63 74 73 20 61 20 70 65 65 72 ting.that.accepts/rejects.a.peer
787c0 0a 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 20 69 66 20 74 68 65 20 63 65 72 74 .........certificate.if.the.cert
787e0 69 66 69 63 61 74 65 27 73 20 43 41 20 69 73 20 75 6e 6b 6e 6f 77 6e 2e 0a 0a 20 20 20 20 20 20 ificate's.CA.is.unknown.........
78800 20 20 46 49 58 4d 45 20 32 42 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 62 6f 6f 6c 0a 20 20 20 20 ..FIXME.2Bconverted.to.bool.....
78820 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 61 6c 6c 6f ....""".........return.self.allo
78840 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 76 65 72 69 66 79 w_unknown_ca......def.set_verify
78860 28 73 65 6c 66 2c 20 6d 6f 64 65 2c 20 64 65 70 74 68 2c 20 63 61 6c 6c 62 61 63 6b 3d 4e 6f 6e (self,.mode,.depth,.callback=Non
78880 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 4f e):.........#.type:.(int,.int,.O
788a0 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 ptional[Callable]).->.None......
788c0 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 76 65 72 69 66 79 20 6f 70 74 69 6f 6e ...""".........Set.verify.option
788e0 73 2e 20 4d 6f 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 69 6c 6c 20 6e 65 65 64 20 74 s..Most.applications.will.need.t
78900 6f 20 63 61 6c 6c 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20 77 69 74 68 20 o.call.this.........method.with.
78920 74 68 65 20 72 69 67 68 74 20 6f 70 74 69 6f 6e 73 20 74 6f 20 6d 61 6b 65 20 61 20 73 65 63 75 the.right.options.to.make.a.secu
78940 72 65 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 re.SSL.connection...........:par
78960 61 6d 20 6d 6f 64 65 3a 20 20 20 20 20 54 68 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6d 6f am.mode:.....The.verification.mo
78980 64 65 20 74 6f 20 75 73 65 2e 20 54 79 70 69 63 61 6c 6c 79 20 61 74 20 6c 65 61 73 74 0a 20 20 de.to.use..Typically.at.least...
789a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 53 4c 2e 76 65 72 69 66 .......................SSL.verif
789c0 79 5f 70 65 65 72 20 69 73 20 75 73 65 64 2e 20 43 6c 69 65 6e 74 73 20 77 6f 75 6c 64 20 61 6c y_peer.is.used..Clients.would.al
789e0 73 6f 20 74 79 70 69 63 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 so.typically....................
78a00 20 20 20 20 20 20 61 64 64 20 53 53 4c 2e 76 65 72 69 66 79 5f 66 61 69 6c 5f 69 66 5f 6e 6f 5f ......add.SSL.verify_fail_if_no_
78a20 70 65 65 72 5f 63 65 72 74 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 65 70 74 68 3a peer_cert..........:param.depth:
78a40 20 20 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77 65 64 20 64 65 70 74 68 20 6f 66 ....The.maximum.allowed.depth.of
78a60 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e 0a 20 20 20 20 20 20 20 20 20 .the.certificate.chain..........
78a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 ................returned.by.the.
78aa0 70 65 65 72 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 43 peer..........:param.callback:.C
78ac0 61 6c 6c 61 62 6c 65 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 allable.that.can.be.used.to.spec
78ae0 69 66 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ify.custom......................
78b00 20 20 20 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 63 68 65 63 6b 73 2e 0a 20 20 20 20 20 20 20 ....verification.checks.........
78b20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 6f 6e 65 .""".........if.callback.is.None
78b40 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 76 65 72 :.............m2.ssl_ctx_set_ver
78b60 69 66 79 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2e 63 74 78 2c 20 6d 6f 64 65 29 0a 20 20 20 20 ify_default(self.ctx,.mode).....
78b80 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 ....else:.............m2.ssl_ctx
78ba0 5f 73 65 74 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 63 74 78 2c 20 6d 6f 64 65 2c 20 63 61 6c 6c _set_verify(self.ctx,.mode,.call
78bc0 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 76 65 72 back).........m2.ssl_ctx_set_ver
78be0 69 66 79 5f 64 65 70 74 68 28 73 65 6c 66 2e 63 74 78 2c 20 64 65 70 74 68 29 0a 0a 20 20 20 20 ify_depth(self.ctx,.depth)......
78c00 64 65 66 20 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 def.get_verify_mode(self):......
78c20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 ...#.type:.().->.int.........ret
78c40 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 73 urn.m2.ssl_ctx_get_verify_mode(s
78c60 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 elf.ctx)......def.get_verify_dep
78c80 74 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 th(self):.........#.type:.().->.
78ca0 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 73 20 74 68 65 20 76 65 72 69 66 int........."""Returns.the.verif
78cc0 69 63 61 74 69 6f 6e 20 6d 6f 64 65 20 63 75 72 72 65 6e 74 6c 79 20 73 65 74 20 69 6e 20 74 68 ication.mode.currently.set.in.th
78ce0 65 20 53 53 4c 20 43 6f 6e 74 65 78 74 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e e.SSL.Context.""".........return
78d00 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 73 65 6c .m2.ssl_ctx_get_verify_depth(sel
78d20 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 6d 70 5f 64 68 28 73 65 6c 66 2c f.ctx)......def.set_tmp_dh(self,
78d40 20 64 68 70 66 69 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 .dhpfile):.........#.type:.(AnyS
78d60 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 65 70 68 65 6d tr).->.int........."""Load.ephem
78d80 65 72 61 6c 20 44 48 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 eral.DH.parameters.into.the.cont
78da0 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 68 70 66 69 6c 65 3a 20 46 69 ext...........:param.dhpfile:.Fi
78dc0 6c 65 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 lename.of.the.file.containing.th
78de0 65 20 50 45 4d 2d 65 6e 63 6f 64 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.PEM-encoded...................
78e00 20 20 20 20 20 20 44 48 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 20 20 20 20 22 22 22 ......DH.parameters.........."""
78e20 0a 20 20 20 20 20 20 20 20 66 20 3d 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 64 68 70 66 69 6c .........f.=.BIO.openfile(dhpfil
78e40 65 29 0a 20 20 20 20 20 20 20 20 64 68 70 20 3d 20 6d 32 2e 64 68 5f 72 65 61 64 5f 70 61 72 61 e).........dhp.=.m2.dh_read_para
78e60 6d 65 74 65 72 73 28 66 2e 62 69 6f 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 meters(f.bio_ptr()).........retu
78e80 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 74 6d 70 5f 64 68 28 73 65 6c 66 2e 63 74 rn.m2.ssl_ctx_set_tmp_dh(self.ct
78ea0 78 2c 20 64 68 70 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c x,.dhp)......def.set_tmp_dh_call
78ec0 62 61 63 6b 28 73 65 6c 66 2c 20 63 61 6c 6c 62 61 63 6b 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 back(self,.callback=None):......
78ee0 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 5d 29 20 ...#.type:.(Optional[Callable]).
78f00 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 73 20 74 68 65 20 63 61 6c 6c ->.None........."""Sets.the.call
78f20 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 0a 0a back.function.for.SSL.Context...
78f40 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 43 61 6c 6c 61 62 6c ........:param.callback:.Callabl
78f60 65 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 61 20 44 48 20 70 61 72 61 6d 65 74 65 72 e.to.be.used.when.a.DH.parameter
78f80 73 20 61 72 65 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 s.are.required..........""".....
78fa0 20 20 20 20 69 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 ....if.callback.is.not.None:....
78fc0 20 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 74 6d 70 5f 64 68 5f 63 .........m2.ssl_ctx_set_tmp_dh_c
78fe0 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2e 63 74 78 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 allback(self.ctx,.callback).....
79000 20 64 65 66 20 73 65 74 5f 74 6d 70 5f 72 73 61 28 73 65 6c 66 2c 20 72 73 61 29 3a 0a 20 20 20 .def.set_tmp_rsa(self,.rsa):....
79020 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 52 53 41 2e 52 53 41 29 20 2d 3e 20 69 6e 74 0a 20 20 .....#.type:.(RSA.RSA).->.int...
79040 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 65 70 68 65 6d 65 72 61 6c 20 52 53 41 20 6b 65 79 20 ......"""Load.ephemeral.RSA.key.
79060 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 into.the.context...........:para
79080 6d 20 72 73 61 3a 20 52 53 41 2e 52 53 41 20 69 6e 73 74 61 6e 63 65 2e 0a 20 20 20 20 20 20 20 m.rsa:.RSA.RSA.instance.........
790a0 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 72 73 61 2c 20 .""".........if.isinstance(rsa,.
790c0 52 53 41 2e 52 53 41 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e RSA.RSA):.............return.m2.
790e0 73 73 6c 5f 63 74 78 5f 73 65 74 5f 74 6d 70 5f 72 73 61 28 73 65 6c 66 2e 63 74 78 2c 20 72 73 ssl_ctx_set_tmp_rsa(self.ctx,.rs
79100 61 2e 72 73 61 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 a.rsa).........else:............
79120 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 22 45 78 70 65 63 74 65 64 20 61 6e 20 69 6e .raise.TypeError("Expected.an.in
79140 73 74 61 6e 63 65 20 6f 66 20 52 53 41 2e 52 53 41 2c 20 67 6f 74 20 25 73 2e 22 20 25 20 72 73 stance.of.RSA.RSA,.got.%s.".%.rs
79160 61 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b a)......def.set_tmp_rsa_callback
79180 28 73 65 6c 66 2c 20 63 61 6c 6c 62 61 63 6b 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 (self,.callback=None):.........#
791a0 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 5d 29 20 2d 3e 20 4e .type:.(Optional[Callable]).->.N
791c0 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b one........."""Sets.the.callback
791e0 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 0a 20 20 20 20 20 20 .function.to.be.used.when.......
79200 20 20 61 20 74 65 6d 70 6f 72 61 72 79 2f 65 70 68 65 6d 65 72 61 6c 20 52 53 41 20 6b 65 79 20 ..a.temporary/ephemeral.RSA.key.
79220 69 73 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 is.required.........."""........
79240 20 69 66 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 .if.callback.is.not.None:.......
79260 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c ......m2.ssl_ctx_set_tmp_rsa_cal
79280 6c 62 61 63 6b 28 73 65 6c 66 2e 63 74 78 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 lback(self.ctx,.callback)......d
792a0 65 66 20 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2c 20 63 61 6c 6c 62 ef.set_info_callback(self,.callb
792c0 61 63 6b 3d 63 62 2e 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 ack=cb.ssl_info_callback):......
792e0 20 20 20 23 20 74 79 70 65 3a 20 28 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 ...#.type:.(Callable).->.None...
79300 20 20 20 20 20 20 22 22 22 53 65 74 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e ......"""Set.a.callback.function
79320 20 74 6f 20 67 65 74 20 73 74 61 74 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 .to.get.state.information.......
79340 20 20 20 20 49 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 67 65 74 20 73 74 61 74 65 20 ....It.can.be.used.to.get.state.
79360 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 53 53 4c 0a 20 20 20 20 20 20 information.about.the.SSL.......
79380 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 63 72 65 61 74 65 64 20 66 ..connections.that.are.created.f
793a0 72 6f 6d 20 74 68 69 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 rom.this.context...........:para
793c0 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 20 54 m.callback:.Callback.function..T
793e0 68 65 20 64 65 66 61 75 6c 74 20 70 72 69 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 he.default.prints...............
79400 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 73 74 64 65 72 72 ...........information.to.stderr
79420 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 ..........""".........m2.ssl_ctx
79440 5f 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2e 63 74 78 2c 20 63 61 6c _set_info_callback(self.ctx,.cal
79460 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 lback)......def.set_cipher_list(
79480 73 65 6c 66 2c 20 63 69 70 68 65 72 5f 6c 69 73 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 self,.cipher_list):.........#.ty
794a0 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 73 pe:.(str).->.int........."""Sets
794c0 20 74 68 65 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 63 69 70 68 65 72 73 2e 0a .the.list.of.available.ciphers..
794e0 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 69 70 68 65 72 5f 6c 69 73 74 3a 20 54 68 65 .........:param.cipher_list:.The
79500 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20 69 73 20 64 65 73 63 72 69 62 .format.of.the.string.is.describ
79520 65 64 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ed.in...........................
79540 20 20 63 69 70 68 65 72 73 28 31 29 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 ..ciphers(1)..........:return:.1
79560 20 69 66 20 61 6e 79 20 63 69 70 68 65 72 20 63 6f 75 6c 64 20 62 65 20 73 65 6c 65 63 74 65 64 .if.any.cipher.could.be.selected
79580 20 61 6e 64 20 30 20 6f 6e 20 63 6f 6d 70 6c 65 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .and.0.on.complete..............
795a0 20 20 20 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 ....failure.........."""........
795c0 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 .return.m2.ssl_ctx_set_cipher_li
795e0 73 74 28 73 65 6c 66 2e 63 74 78 2c 20 63 69 70 68 65 72 5f 6c 69 73 74 29 0a 0a 20 20 20 20 64 st(self.ctx,.cipher_list)......d
79600 65 66 20 61 64 64 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2c 20 73 65 73 73 69 6f 6e 29 3a 0a 20 ef.add_session(self,.session):..
79620 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 53 65 73 73 69 6f 6e 29 20 2d 3e 20 69 6e 74 0a .......#.type:.(Session).->.int.
79640 20 20 20 20 20 20 20 20 22 22 22 41 64 64 20 74 68 65 20 73 65 73 73 69 6f 6e 20 74 6f 20 74 68 ........"""Add.the.session.to.th
79660 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 65 73 73 69 e.context...........:param.sessi
79680 6f 6e 3a 20 74 68 65 20 73 65 73 73 69 6f 6e 20 74 6f 20 62 65 20 61 64 64 65 64 2e 0a 0a 20 20 on:.the.session.to.be.added.....
796a0 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 ......:return:.0.The.operation.f
796c0 61 69 6c 65 64 2e 20 49 74 20 77 61 73 20 74 72 69 65 64 20 74 6f 20 61 64 64 20 74 68 65 20 73 ailed..It.was.tried.to.add.the.s
796e0 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 64 65 6e 74 69 63 61 ame....................(identica
79700 6c 29 20 73 65 73 73 69 6f 6e 20 74 77 69 63 65 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 l).session.twice................
79720 20 20 20 20 31 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 75 63 63 65 65 64 65 64 2e 0a 20 ....1.The.operation.succeeded...
79740 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c .......""".........return.m2.ssl
79760 5f 63 74 78 5f 61 64 64 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 73 73 69 _ctx_add_session(self.ctx,.sessi
79780 6f 6e 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 72 65 6d 6f 76 65 5f 73 65 73 73 69 on._ptr())......def.remove_sessi
797a0 6f 6e 28 73 65 6c 66 2c 20 73 65 73 73 69 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 on(self,.session):.........#.typ
797c0 65 3a 20 28 53 65 73 73 69 6f 6e 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 e:.(Session).->.int........."""R
797e0 65 6d 6f 76 65 20 74 68 65 20 73 65 73 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 emove.the.session.from.the.conte
79800 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 65 73 73 69 6f 6e 3a 20 74 68 65 xt...........:param.session:.the
79820 20 73 65 73 73 69 6f 6e 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 0a 20 20 20 20 20 20 20 .session.to.be.removed..........
79840 20 3a 72 65 74 75 72 6e 3a 20 30 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 61 69 6c 65 64 .:return:.0.The.operation.failed
79860 2e 20 54 68 65 20 73 65 73 73 69 6f 6e 20 77 61 73 20 6e 6f 74 20 66 6f 75 6e 64 20 69 6e 0a 20 ..The.session.was.not.found.in..
79880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 63 61 63 68 65 2e 0a 0a 20 20 ..................the.cache.....
798a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 ...............1.The.operation.s
798c0 75 63 63 65 65 64 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 ucceeded..........""".........re
798e0 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 28 73 turn.m2.ssl_ctx_remove_session(s
79900 65 6c 66 2e 63 74 78 2c 20 73 65 73 73 69 6f 6e 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 elf.ctx,.session._ptr())......de
79920 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 29 3a 0a 20 20 20 f.get_session_timeout(self):....
79940 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 .....#.type:.().->.int........."
79960 22 22 47 65 74 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e 20 74 69 6d 65 6f 75 74 2e 0a 0a ""Get.current.session.timeout...
79980 20 20 20 20 20 20 20 20 57 68 65 6e 65 76 65 72 20 61 20 6e 65 77 20 73 65 73 73 69 6f 6e 20 69 ........Whenever.a.new.session.i
799a0 73 20 63 72 65 61 74 65 64 2c 20 69 74 20 69 73 20 61 73 73 69 67 6e 65 64 20 61 20 6d 61 78 69 s.created,.it.is.assigned.a.maxi
799c0 6d 75 6d 0a 20 20 20 20 20 20 20 20 6c 69 66 65 74 69 6d 65 2e 20 20 54 68 69 73 20 6c 69 66 65 mum.........lifetime...This.life
799e0 74 69 6d 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20 73 74 6f 72 69 6e 67 20 74 68 65 time.is.specified.by.storing.the
79a00 20 63 72 65 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 74 69 6d 65 20 6f 66 20 74 68 65 20 73 65 .creation.........time.of.the.se
79a20 73 73 69 6f 6e 20 61 6e 64 20 74 68 65 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 20 76 61 6c 69 ssion.and.the.timeout.value.vali
79a40 64 20 61 74 20 74 68 69 73 20 74 69 6d 65 2e 20 49 66 0a 20 20 20 20 20 20 20 20 74 68 65 20 61 d.at.this.time..If.........the.a
79a60 63 74 75 61 6c 20 74 69 6d 65 20 69 73 20 6c 61 74 65 72 20 74 68 61 6e 20 63 72 65 61 74 69 6f ctual.time.is.later.than.creatio
79a80 6e 20 74 69 6d 65 20 70 6c 75 73 20 74 69 6d 65 6f 75 74 2c 20 74 68 65 0a 20 20 20 20 20 20 20 n.time.plus.timeout,.the........
79aa0 20 73 65 73 73 69 6f 6e 20 69 73 20 6e 6f 74 20 72 65 75 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 .session.is.not.reused..........
79ac0 20 44 75 65 20 74 6f 20 74 68 69 73 20 72 65 61 6c 69 7a 61 74 69 6f 6e 2c 20 61 6c 6c 20 73 65 .Due.to.this.realization,.all.se
79ae0 73 73 69 6f 6e 73 20 62 65 68 61 76 65 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 0a 20 ssions.behave.according.to.the..
79b00 20 20 20 20 20 20 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 20 76 61 6c 69 64 20 61 74 20 74 68 .......timeout.value.valid.at.th
79b20 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 73 65 73 73 69 6f 6e 20 6e 65 67 6f 74 69 61 74 69 6f e.time.of.the.session.negotiatio
79b40 6e 2e 0a 20 20 20 20 20 20 20 20 43 68 61 6e 67 65 73 20 6f 66 20 74 68 65 20 74 69 6d 65 6f 75 n..........Changes.of.the.timeou
79b60 74 20 76 61 6c 75 65 20 64 6f 20 6e 6f 74 20 61 66 66 65 63 74 20 61 6c 72 65 61 64 79 20 65 73 t.value.do.not.affect.already.es
79b80 74 61 62 6c 69 73 68 65 64 0a 20 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e 73 2e 0a 0a 20 20 20 tablished.........sessions......
79ba0 20 20 20 20 20 45 78 70 69 72 65 64 20 73 65 73 73 69 6f 6e 73 20 61 72 65 20 72 65 6d 6f 76 65 .....Expired.sessions.are.remove
79bc0 64 20 66 72 6f 6d 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 65 73 73 69 6f 6e 20 63 61 63 68 d.from.the.internal.session.cach
79be0 65 2c 0a 20 20 20 20 20 20 20 20 77 68 65 6e 65 76 65 72 20 53 53 4c 5f 43 54 58 5f 66 6c 75 73 e,.........whenever.SSL_CTX_flus
79c00 68 5f 73 65 73 73 69 6f 6e 73 28 33 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 65 69 74 68 65 72 20 h_sessions(3).is.called,.either.
79c20 64 69 72 65 63 74 6c 79 20 62 79 0a 20 20 20 20 20 20 20 20 74 68 65 20 61 70 70 6c 69 63 61 74 directly.by.........the.applicat
79c40 69 6f 6e 20 6f 72 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 28 73 65 65 0a 20 20 20 20 20 20 ion.or.automatically.(see.......
79c60 20 20 53 53 4c 5f 43 54 58 5f 73 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 ..SSL_CTX_set_session_cache_mode
79c80 28 33 29 29 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 (3))..........The.default.value.
79ca0 66 6f 72 20 73 65 73 73 69 6f 6e 20 74 69 6d 65 6f 75 74 20 69 73 20 64 65 63 69 64 65 64 20 6f for.session.timeout.is.decided.o
79cc0 6e 20 61 20 70 65 72 0a 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 20 62 61 73 69 73 2c 20 n.a.per.........protocol.basis,.
79ce0 73 65 65 20 53 53 4c 5f 67 65 74 5f 64 65 66 61 75 6c 74 5f 74 69 6d 65 6f 75 74 28 33 29 2e 20 see.SSL_get_default_timeout(3)..
79d00 20 41 6c 6c 20 63 75 72 72 65 6e 74 6c 79 0a 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 65 64 .All.currently.........supported
79d20 20 70 72 6f 74 6f 63 6f 6c 73 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 64 65 66 61 75 6c 74 .protocols.have.the.same.default
79d40 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 20 6f 66 20 33 30 30 0a 20 20 20 20 20 20 20 20 73 65 .timeout.value.of.300.........se
79d60 63 6f 6e 64 73 2e 0a 0a 20 20 20 20 20 20 20 20 53 53 4c 5f 43 54 58 5f 73 65 74 5f 74 69 6d 65 conds...........SSL_CTX_set_time
79d80 6f 75 74 28 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 out().returns.the.previously.set
79da0 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e .timeout.value...........:return
79dc0 3a 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 73 65 74 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 :.the.currently.set.timeout.valu
79de0 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 e..........""".........return.m2
79e00 2e 73 73 6c 5f 63 74 78 5f 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 73 65 6c .ssl_ctx_get_session_timeout(sel
79e20 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 f.ctx)......def.set_session_time
79e40 6f 75 74 28 73 65 6c 66 2c 20 74 69 6d 65 6f 75 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 out(self,.timeout):.........#.ty
79e60 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 pe:.(int).->.int........."""Set.
79e80 6e 65 77 20 73 65 73 73 69 6f 6e 20 74 69 6d 65 6f 75 74 2e 0a 0a 20 20 20 20 20 20 20 20 53 65 new.session.timeout...........Se
79ea0 65 20 73 65 6c 66 2e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 29 20 66 6f 72 e.self.get_session_timeout().for
79ec0 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 .explanation.of.the.session.....
79ee0 20 20 20 20 74 69 6d 65 6f 75 74 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 74 69 ....timeouts...........:param.ti
79f00 6d 65 6f 75 74 3a 20 6e 65 77 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 20 meout:.new.timeout.value........
79f20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 74 ...:return:.the.previously.set.t
79f40 69 6d 65 6f 75 74 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 imeout.value..........""".......
79f60 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 73 65 73 73 69 6f 6e 5f ..return.m2.ssl_ctx_set_session_
79f80 74 69 6d 65 6f 75 74 28 73 65 6c 66 2e 63 74 78 2c 20 74 69 6d 65 6f 75 74 29 0a 0a 20 20 20 20 timeout(self.ctx,.timeout)......
79fa0 64 65 66 20 73 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c 66 2c def.set_session_cache_mode(self,
79fc0 20 6d 6f 64 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e .mode):.........#.type:.(int).->
79fe0 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 45 6e 61 62 6c 65 73 2f 64 69 73 61 62 6c 65 73 .int........."""Enables/disables
7a000 20 73 65 73 73 69 6f 6e 20 63 61 63 68 69 6e 67 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 6d .session.caching...........The.m
7a020 6f 64 65 20 69 73 20 73 65 74 20 62 79 20 75 73 69 6e 67 20 6d 32 2e 53 53 4c 5f 53 45 53 53 5f ode.is.set.by.using.m2.SSL_SESS_
7a040 43 41 43 48 45 5f 2a 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 CACHE_*.constants...........:par
7a060 61 6d 20 6d 6f 64 65 3a 20 6e 65 77 20 6d 6f 64 65 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 20 20 am.mode:.new.mode.value.........
7a080 20 20 3a 72 65 74 75 72 6e 3a 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 63 61 ..:return:.the.previously.set.ca
7a0a0 63 68 65 20 6d 6f 64 65 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 che.mode.value..........""".....
7a0c0 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 73 65 73 73 69 6f ....return.m2.ssl_ctx_set_sessio
7a0e0 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c 66 2e 63 74 78 2c 20 6d 6f 64 65 29 0a 0a 20 20 n_cache_mode(self.ctx,.mode)....
7a100 20 20 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c ..def.get_session_cache_mode(sel
7a120 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 f):.........#.type:.().->.int...
7a140 20 20 20 20 20 20 22 22 22 47 65 74 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f ......"""Gets.the.current.sessio
7a160 6e 20 63 61 63 68 69 6e 67 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 6d 6f 64 65 20 69 73 20 n.caching...........The.mode.is.
7a180 73 65 74 20 74 6f 20 6d 32 2e 53 53 4c 5f 53 45 53 53 5f 43 41 43 48 45 5f 2a 20 63 6f 6e 73 74 set.to.m2.SSL_SESS_CACHE_*.const
7a1a0 61 6e 74 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 68 65 20 70 72 65 76 ants...........:return:.the.prev
7a1c0 69 6f 75 73 6c 79 20 73 65 74 20 63 61 63 68 65 20 6d 6f 64 65 20 76 61 6c 75 65 2e 0a 20 20 20 iously.set.cache.mode.value.....
7a1e0 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 .....""".........return.m2.ssl_c
7a200 74 78 5f 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c 66 2e 63 tx_get_session_cache_mode(self.c
7a220 74 78 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 6f 70 74 69 6f 6e 73 28 73 65 6c 66 2c 20 6f tx)......def.set_options(self,.o
7a240 70 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 p):.........#.type:.(int).->.int
7a260 0a 20 20 20 20 20 20 20 20 22 22 22 41 64 64 73 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 73 65 74 ........."""Adds.the.options.set
7a280 20 76 69 61 20 62 69 74 6d 61 73 6b 20 69 6e 20 6f 70 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 43 .via.bitmask.in.options.to.the.C
7a2a0 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 21 21 21 20 4f 70 74 69 6f 6e 73 20 61 6c 72 ontext...........!!!.Options.alr
7a2c0 65 61 64 79 20 73 65 74 20 62 65 66 6f 72 65 20 61 72 65 20 6e 6f 74 20 63 6c 65 61 72 65 64 21 eady.set.before.are.not.cleared!
7a2e0 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 62 65 68 61 76 69 6f 75 72 20 6f 66 20 74 68 65 20 53 ..........The.behaviour.of.the.S
7a300 53 4c 20 6c 69 62 72 61 72 79 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20 62 79 20 73 65 74 SL.library.can.be.changed.by.set
7a320 74 69 6e 67 0a 20 20 20 20 20 20 20 20 73 65 76 65 72 61 6c 20 6f 70 74 69 6f 6e 73 2e 20 20 54 ting.........several.options...T
7a340 68 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 63 6f 64 65 64 20 61 73 20 62 69 74 6d 61 73 6b 73 he.options.are.coded.as.bitmasks
7a360 20 61 6e 64 20 63 61 6e 20 62 65 0a 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 64 20 62 79 20 .and.can.be.........combined.by.
7a380 61 20 6c 6f 67 69 63 61 6c 20 6f 72 20 6f 70 65 72 61 74 69 6f 6e 20 28 7c 29 2e 0a 0a 20 20 20 a.logical.or.operation.(|)......
7a3a0 20 20 20 20 20 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 28 29 20 61 .....SSL.Context.set_options().a
7a3c0 6e 64 20 53 53 4c 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 28 29 20 61 66 66 65 63 74 20 74 68 65 0a nd.SSL.set_options().affect.the.
7a3e0 20 20 20 20 20 20 20 20 28 65 78 74 65 72 6e 61 6c 29 20 70 72 6f 74 6f 63 6f 6c 20 62 65 68 61 ........(external).protocol.beha
7a400 76 69 6f 75 72 20 6f 66 20 74 68 65 20 53 53 4c 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 28 69 viour.of.the.SSL.library..The.(i
7a420 6e 74 65 72 6e 61 6c 29 0a 20 20 20 20 20 20 20 20 62 65 68 61 76 69 6f 75 72 20 6f 66 20 74 68 nternal).........behaviour.of.th
7a440 65 20 41 50 49 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20 62 79 20 75 73 69 6e 67 20 74 68 e.API.can.be.changed.by.using.th
7a460 65 20 73 69 6d 69 6c 61 72 0a 20 20 20 20 20 20 20 20 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 73 65 e.similar.........SSL.Context.se
7a480 74 5f 6d 6f 64 65 28 29 20 61 6e 64 20 53 53 4c 2e 73 65 74 5f 6d 6f 64 65 28 29 20 66 75 6e 63 t_mode().and.SSL.set_mode().func
7a4a0 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 20 20 20 20 44 75 72 69 6e 67 20 61 20 68 61 6e 64 73 68 61 tions...........During.a.handsha
7a4c0 6b 65 2c 20 74 68 65 20 6f 70 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 6f 66 20 74 68 65 20 53 ke,.the.option.settings.of.the.S
7a4e0 53 4c 20 6f 62 6a 65 63 74 20 61 72 65 0a 20 20 20 20 20 20 20 20 75 73 65 64 2e 20 57 68 65 6e SL.object.are.........used..When
7a500 20 61 20 6e 65 77 20 53 53 4c 20 6f 62 6a 65 63 74 20 69 73 20 63 72 65 61 74 65 64 20 66 72 6f .a.new.SSL.object.is.created.fro
7a520 6d 20 61 20 63 6f 6e 74 65 78 74 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20 53 53 4c 28 29 2c m.a.context.using.........SSL(),
7a540 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 69 73 20 63 .the.current.option.setting.is.c
7a560 6f 70 69 65 64 2e 20 43 68 61 6e 67 65 73 20 74 6f 20 63 74 78 0a 20 20 20 20 20 20 20 20 64 6f opied..Changes.to.ctx.........do
7a580 20 6e 6f 74 20 61 66 66 65 63 74 20 61 6c 72 65 61 64 79 20 63 72 65 61 74 65 64 20 53 53 4c 20 .not.affect.already.created.SSL.
7a5a0 6f 62 6a 65 63 74 73 2e 20 53 53 4c 2e 63 6c 65 61 72 28 29 20 64 6f 65 73 20 6e 6f 74 0a 20 20 objects..SSL.clear().does.not...
7a5c0 20 20 20 20 20 20 61 66 66 65 63 74 20 74 68 65 20 73 65 74 74 69 6e 67 73 2e 0a 0a 20 20 20 20 ......affect.the.settings.......
7a5e0 20 20 20 20 3a 70 61 72 61 6d 20 6f 70 3a 20 62 69 74 6d 61 73 6b 20 6f 66 20 61 64 64 69 74 69 ....:param.op:.bitmask.of.additi
7a600 6f 6e 61 6c 20 6f 70 74 69 6f 6e 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 0a 20 20 20 20 20 20 onal.options.specified.in.......
7a620 20 20 20 20 20 20 20 20 20 20 20 20 20 53 53 4c 5f 43 54 58 5f 73 65 74 5f 6f 70 74 69 6f 6e 73 .............SSL_CTX_set_options
7a640 28 33 29 20 6d 61 6e 70 61 67 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 (3).manpage...........:return:.t
7a660 68 65 20 6e 65 77 20 6f 70 74 69 6f 6e 73 20 62 69 74 6d 61 73 6b 20 61 66 74 65 72 20 61 64 64 he.new.options.bitmask.after.add
7a680 69 6e 67 20 6f 70 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 ing.options.........."""........
7a6a0 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 6f 70 74 69 6f 6e 73 28 73 .return.m2.ssl_ctx_set_options(s
7a6c0 65 6c 66 2e 63 74 78 2c 20 6f 70 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 63 65 72 74 5f 73 elf.ctx,.op)......def.get_cert_s
7a6e0 74 6f 72 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d tore(self):.........#.type:.().-
7a700 3e 20 58 35 30 39 2e 58 35 30 39 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 >.X509.X509.........""".........
7a720 47 65 74 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73 74 6f 72 65 20 61 73 73 6f 63 69 Get.the.certificate.store.associ
7a740 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 ated.with.this.context..........
7a760 20 3a 77 61 72 6e 69 6e 67 3a 20 54 68 65 20 73 74 6f 72 65 20 69 73 20 4e 4f 54 20 72 65 66 63 .:warning:.The.store.is.NOT.refc
7a780 6f 75 6e 74 65 64 2c 20 61 6e 64 20 61 73 20 73 75 63 68 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 ounted,.and.as.such.can.not.be.r
7a7a0 65 6c 69 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 62 65 20 76 61 elied...................to.be.va
7a7c0 6c 69 64 20 6f 6e 63 65 20 74 68 65 20 63 6f 6e 74 65 78 74 20 67 6f 65 73 20 61 77 61 79 20 6f lid.once.the.context.goes.away.o
7a7e0 72 20 69 73 20 63 68 61 6e 67 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 r.is.changed..........""".......
7a800 20 20 72 65 74 75 72 6e 20 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 28 6d 32 2e 73 73 6c 5f ..return.X509.X509_Store(m2.ssl_
7a820 63 74 78 5f 67 65 74 5f 63 65 72 74 5f 73 74 6f 72 65 28 73 65 6c 66 2e 63 74 78 29 29 0a 94 95 ctx_get_cert_store(self.ctx))...
7a840 0a 82 00 00 00 00 00 00 7d 94 28 8c 10 5f 63 74 78 6d 61 70 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 ........}.(.._ctxmap.__init__.jt
7a860 1f 00 00 4b 14 4b 18 87 94 8c 13 5f 63 74 78 6d 61 70 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 94 6a ...K.K....._ctxmap.__getitem__.j
7a880 74 1f 00 00 4b 1a 4b 1c 87 94 8c 13 5f 63 74 78 6d 61 70 2e 5f 5f 73 65 74 69 74 65 6d 5f 5f 94 t...K.K....._ctxmap.__setitem__.
7a8a0 6a 74 1f 00 00 4b 1e 4b 20 87 94 8c 13 5f 63 74 78 6d 61 70 2e 5f 5f 64 65 6c 69 74 65 6d 5f 5f jt...K.K....._ctxmap.__delitem__
7a8c0 94 6a 74 1f 00 00 4b 22 4b 24 87 94 8c 07 5f 63 74 78 6d 61 70 94 6a 7d 1f 00 00 4b 11 4b 24 87 .jt...K"K$...._ctxmap.j}...K.K$.
7a8e0 94 8c 06 63 74 78 6d 61 70 94 6a 74 1f 00 00 4b 27 4b 2b 87 94 8c 10 43 6f 6e 74 65 78 74 2e 5f ...ctxmap.jt...K'K+....Context._
7a900 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 36 4b 47 87 94 8c 0f 43 6f 6e 74 65 78 74 2e 5f 5f 64 _init__.jt...K6KG....Context.__d
7a920 65 6c 5f 5f 94 6a 74 1f 00 00 4b 49 4b 4c 87 94 8c 0d 43 6f 6e 74 65 78 74 2e 63 6c 6f 73 65 94 el__.jt...KIKL....Context.close.
7a940 6a 74 1f 00 00 4b 4e 4b 50 87 94 8c 11 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 94 6a jt...KNKP....Context.load_cert.j
7a960 74 1f 00 00 4b 52 4b 65 87 94 8c 17 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 5f 63 68 t...KRKe....Context.load_cert_ch
7a980 61 69 6e 94 6a 74 1f 00 00 4b 67 4b 7c 87 94 8c 24 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 6c 69 ain.jt...KgK|...$Context.set_cli
7a9a0 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 94 6a 74 1f 00 00 4b 7e 4b 86 87 ent_CA_list_from_file.jt...K~K..
7a9c0 94 8c 1d 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 ...Context.load_verify_locations
7a9e0 94 6a 74 1f 00 00 4b 8b 4b a0 87 94 8c 1a 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f .jt...K.K.....Context.set_sessio
7aa00 6e 5f 69 64 5f 63 74 78 94 6a 74 1f 00 00 4b a5 4b b8 87 94 8c 20 43 6f 6e 74 65 78 74 2e 73 65 n_id_ctx.jt...K.K.....Context.se
7aa20 74 5f 64 65 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 94 6a 74 1f 00 00 4b ba 4b cf t_default_verify_paths.jt...K.K.
7aa40 87 94 8c 1c 43 6f 6e 74 65 78 74 2e 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 ....Context.set_allow_unknown_ca
7aa60 94 6a 74 1f 00 00 4b d1 4b d8 87 94 8c 1c 43 6f 6e 74 65 78 74 2e 67 65 74 5f 61 6c 6c 6f 77 5f .jt...K.K.....Context.get_allow_
7aa80 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 74 1f 00 00 4b da 4b e1 87 94 8c 12 43 6f 6e 74 65 78 74 2e unknown_ca.jt...K.K.....Context.
7aaa0 73 65 74 5f 76 65 72 69 66 79 94 6a 74 1f 00 00 4b e3 4b f5 87 94 8c 17 43 6f 6e 74 65 78 74 2e set_verify.jt...K.K.....Context.
7aac0 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 94 6a 74 1f 00 00 4b f7 4b f9 87 94 8c 18 43 6f 6e get_verify_mode.jt...K.K.....Con
7aae0 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 6a 74 1f 00 00 4b fb 4b fe 87 text.get_verify_depth.jt...K.K..
7ab00 94 8c 12 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 68 94 6a 74 1f 00 00 4d 00 01 4d 09 ...Context.set_tmp_dh.jt...M..M.
7ab20 01 87 94 8c 1b 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b .....Context.set_tmp_dh_callback
7ab40 94 6a 74 1f 00 00 4d 0b 01 4d 12 01 87 94 8c 13 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f .jt...M..M......Context.set_tmp_
7ab60 72 73 61 94 6a 74 1f 00 00 4d 14 01 4d 1d 01 87 94 8c 1c 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 rsa.jt...M..M......Context.set_t
7ab80 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4d 1f 01 4d 25 01 87 94 8c 19 43 mp_rsa_callback.jt...M..M%.....C
7aba0 6f 6e 74 65 78 74 2e 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4d 27 ontext.set_info_callback.jt...M'
7abc0 01 4d 31 01 87 94 8c 17 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 .M1.....Context.set_cipher_list.
7abe0 6a 74 1f 00 00 4d 33 01 4d 3c 01 87 94 8c 13 43 6f 6e 74 65 78 74 2e 61 64 64 5f 73 65 73 73 69 jt...M3.M<.....Context.add_sessi
7ac00 6f 6e 94 6a 74 1f 00 00 4d 3e 01 4d 49 01 87 94 8c 16 43 6f 6e 74 65 78 74 2e 72 65 6d 6f 76 65 on.jt...M>.MI.....Context.remove
7ac20 5f 73 65 73 73 69 6f 6e 94 6a 74 1f 00 00 4d 4b 01 4d 56 01 87 94 8c 1b 43 6f 6e 74 65 78 74 2e _session.jt...MK.MV.....Context.
7ac40 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 74 1f 00 00 4d 58 01 4d 75 01 87 get_session_timeout.jt...MX.Mu..
7ac60 94 8c 1b 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a ...Context.set_session_timeout.j
7ac80 74 1f 00 00 4d 77 01 4d 82 01 87 94 8c 1e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f t...Mw.M......Context.set_sessio
7aca0 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 74 1f 00 00 4d 84 01 4d 8e 01 87 94 8c 1e 43 6f 6e 74 n_cache_mode.jt...M..M......Cont
7acc0 65 78 74 2e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 74 1f 00 00 ext.get_session_cache_mode.jt...
7ace0 4d 90 01 4d 98 01 87 94 8c 13 43 6f 6e 74 65 78 74 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 94 6a 74 M..M......Context.set_options.jt
7ad00 1f 00 00 4d 9a 01 4d b4 01 87 94 8c 16 43 6f 6e 74 65 78 74 2e 67 65 74 5f 63 65 72 74 5f 73 74 ...M..M......Context.get_cert_st
7ad20 6f 72 65 94 6a 74 1f 00 00 4d b6 01 4d be 01 87 94 8c 07 43 6f 6e 74 65 78 74 94 6a 7d 1f 00 00 ore.jt...M..M......Context.j}...
7ad40 4b 30 4d be 01 87 94 75 7d 94 28 8c 06 63 74 78 6d 61 70 94 6a 5c 02 00 00 8c 07 43 6f 6e 74 65 K0M....u}.(..ctxmap.j\.....Conte
7ad60 78 74 94 6a 5c 02 00 00 8c 13 43 6f 6e 74 65 78 74 2e 61 64 64 5f 73 65 73 73 69 6f 6e 94 6a 5c xt.j\.....Context.add_session.j\
7ad80 02 00 00 8c 0d 43 6f 6e 74 65 78 74 2e 63 6c 6f 73 65 94 6a 5c 02 00 00 8c 1c 43 6f 6e 74 65 78 .....Context.close.j\.....Contex
7ada0 74 2e 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 5c 02 00 00 8c 16 43 6f t.get_allow_unknown_ca.j\.....Co
7adc0 6e 74 65 78 74 2e 67 65 74 5f 63 65 72 74 5f 73 74 6f 72 65 94 6a 5c 02 00 00 8c 1e 43 6f 6e 74 ntext.get_cert_store.j\.....Cont
7ade0 65 78 74 2e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 5c 02 00 00 ext.get_session_cache_mode.j\...
7ae00 8c 1b 43 6f 6e 74 65 78 74 2e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 5c ..Context.get_session_timeout.j\
7ae20 02 00 00 8c 18 43 6f 6e 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 6a 5c .....Context.get_verify_depth.j\
7ae40 02 00 00 8c 17 43 6f 6e 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 94 6a 5c 02 .....Context.get_verify_mode.j\.
7ae60 00 00 8c 11 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 94 6a 5c 02 00 00 8c 17 43 6f 6e ....Context.load_cert.j\.....Con
7ae80 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 5c 02 00 00 8c 1d 43 6f 6e 74 text.load_cert_chain.j\.....Cont
7aea0 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 94 6a 5c 02 00 00 8c ext.load_verify_locations.j\....
7aec0 16 43 6f 6e 74 65 78 74 2e 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 1c 43 .Context.remove_session.j\.....C
7aee0 6f 6e 74 65 78 74 2e 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 5c 02 00 ontext.set_allow_unknown_ca.j\..
7af00 00 8c 17 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 5c 02 00 00 ...Context.set_cipher_list.j\...
7af20 8c 24 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f .$Context.set_client_CA_list_fro
7af40 6d 5f 66 69 6c 65 94 6a 5c 02 00 00 8c 20 43 6f 6e 74 65 78 74 2e 73 65 74 5f 64 65 66 61 75 6c m_file.j\.....Context.set_defaul
7af60 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 94 6a 5c 02 00 00 8c 19 43 6f 6e 74 65 78 74 2e 73 65 t_verify_paths.j\.....Context.se
7af80 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 13 43 6f 6e 74 65 78 74 2e 73 t_info_callback.j\.....Context.s
7afa0 65 74 5f 6f 70 74 69 6f 6e 73 94 6a 5c 02 00 00 8c 1e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 et_options.j\.....Context.set_se
7afc0 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 5c 02 00 00 8c 1a 43 6f 6e 74 65 78 74 2e ssion_cache_mode.j\.....Context.
7afe0 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 5c 02 00 00 8c 1b 43 6f 6e 74 65 78 set_session_id_ctx.j\.....Contex
7b000 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 12 43 6f 6e t.set_session_timeout.j\.....Con
7b020 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 68 94 6a 5c 02 00 00 8c 1b 43 6f 6e 74 65 78 74 2e 73 text.set_tmp_dh.j\.....Context.s
7b040 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 13 43 6f 6e 74 65 78 et_tmp_dh_callback.j\.....Contex
7b060 74 2e 73 65 74 5f 74 6d 70 5f 72 73 61 94 6a 5c 02 00 00 8c 1c 43 6f 6e 74 65 78 74 2e 73 65 74 t.set_tmp_rsa.j\.....Context.set
7b080 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 12 43 6f 6e 74 65 78 74 _tmp_rsa_callback.j\.....Context
7b0a0 2e 73 65 74 5f 76 65 72 69 66 79 94 6a 5c 02 00 00 75 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c .set_verify.j\...u..M2Crypto.SSL
7b0c0 2e 43 6f 6e 74 65 78 74 94 74 94 8c 16 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 .Context.t...M2Crypto.SSL.SSLSer
7b0e0 76 65 72 94 28 58 32 08 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 74 ver.(X2...from.__future__.import
7b100 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 2c 20 70 72 69 6e 74 5f 66 75 6e 63 74 69 6f 6e .absolute_import,.print_function
7b120 0a 0a 22 22 22 53 53 4c 53 65 72 76 65 72 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 .."""SSLServer..Copyright.(c).19
7b140 39 39 2d 32 30 30 32 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 99-2002.Ng.Pheng.Siong..All.righ
7b160 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 0a 23 20 4d 32 43 72 79 70 74 6f 0a 66 72 6f ts.reserved."""...#.M2Crypto.fro
7b180 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 20 69 6d 70 6f 72 74 20 53 53 4c 45 72 72 6f 72 0a 66 m.M2Crypto.SSL.import.SSLError.f
7b1a0 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 69 6d 70 6f rom.M2Crypto.SSL.Connection.impo
7b1c0 72 74 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e rt.Connection.from.M2Crypto.SSL.
7b1e0 43 6f 6e 74 65 78 74 20 69 6d 70 6f 72 74 20 43 6f 6e 74 65 78 74 20 20 23 20 6e 6f 71 61 0a 66 Context.import.Context..#.noqa.f
7b200 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 73 69 78 20 20 23 20 6e 6f 71 61 0a rom.M2Crypto.import.six..#.noqa.
7b220 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 75 74 69 6c 20 20 23 20 6e 6f 71 from.M2Crypto.import.util..#.noq
7b240 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 73 6f 63 6b 65 74 a.from.M2Crypto.six.moves.socket
7b260 73 65 72 76 65 72 20 69 6d 70 6f 72 74 20 28 42 61 73 65 53 65 72 76 65 72 2c 20 54 43 50 53 65 server.import.(BaseServer,.TCPSe
7b280 72 76 65 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rver,...........................
7b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 72 65 61 64 69 6e 67 4d 69 78 49 ...................ThreadingMixI
7b2c0 6e 29 0a 69 6d 70 6f 72 74 20 6f 73 0a 69 66 20 6f 73 2e 6e 61 6d 65 20 21 3d 20 27 6e 74 27 3a n).import.os.if.os.name.!=.'nt':
7b2e0 0a 20 20 20 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 73 6f 63 6b ....from.M2Crypto.six.moves.sock
7b300 65 74 73 65 72 76 65 72 20 69 6d 70 6f 72 74 20 46 6f 72 6b 69 6e 67 4d 69 78 49 6e 0a 66 72 6f etserver.import.ForkingMixIn.fro
7b320 6d 20 73 6f 63 6b 65 74 20 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 20 20 23 20 6e 6f 71 61 0a 69 m.socket.import.socket..#.noqa.i
7b340 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 f.util.py27plus:.....from.typing
7b360 20 69 6d 70 6f 72 74 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d .import.Union..#.noqa..__all__.=
7b380 20 5b 27 53 53 4c 53 65 72 76 65 72 27 2c 20 27 46 6f 72 6b 69 6e 67 53 53 4c 53 65 72 76 65 72 .['SSLServer',.'ForkingSSLServer
7b3a0 27 2c 20 27 54 68 72 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 27 5d 0a 0a 0a 63 6c 61 73 73 ',.'ThreadingSSLServer']...class
7b3c0 20 53 53 4c 53 65 72 76 65 72 28 54 43 50 53 65 72 76 65 72 29 3a 0a 20 20 20 20 64 65 66 20 5f .SSLServer(TCPServer):.....def._
7b3e0 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 65 72 76 65 72 5f 61 64 64 72 65 73 73 2c 20 52 65 _init__(self,.server_address,.Re
7b400 71 75 65 73 74 48 61 6e 64 6c 65 72 43 6c 61 73 73 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 2c 20 questHandlerClass,.ssl_context,.
7b420 20 23 20 6e 6f 71 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6e 64 5f 61 6e .#.noqa..................bind_an
7b440 64 5f 61 63 74 69 76 61 74 65 3d 54 72 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 d_activate=True):.........#.type
7b460 3a 20 28 75 74 69 6c 2e 41 64 64 72 54 79 70 65 2c 20 73 6f 63 6b 65 74 73 65 72 76 65 72 2e 42 :.(util.AddrType,.socketserver.B
7b480 61 73 65 52 65 71 75 65 73 74 48 61 6e 64 6c 65 72 2c 20 43 6f 6e 74 65 78 74 2c 20 62 6f 6f 6c aseRequestHandler,.Context,.bool
7b4a0 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 75 ).->.None.........""".........Su
7b4c0 70 65 72 63 6c 61 73 73 20 73 61 79 73 3a 20 43 6f 6e 73 74 72 75 63 74 6f 72 2e 20 4d 61 79 20 perclass.says:.Constructor..May.
7b4e0 62 65 20 65 78 74 65 6e 64 65 64 2c 20 64 6f 20 6e 6f 74 20 6f 76 65 72 72 69 64 65 2e 0a 20 20 be.extended,.do.not.override....
7b500 20 20 20 20 20 20 54 68 69 73 20 63 6c 61 73 73 20 73 61 79 73 3a 20 48 6f 2d 68 75 6d 2e 0a 20 ......This.class.says:.Ho-hum...
7b520 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 42 61 73 65 53 65 72 76 65 72 2e 5f 5f .......""".........BaseServer.__
7b540 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 65 72 76 65 72 5f 61 64 64 72 65 73 73 2c 20 52 65 71 init__(self,.server_address,.Req
7b560 75 65 73 74 48 61 6e 64 6c 65 72 43 6c 61 73 73 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 uestHandlerClass).........self.s
7b580 73 6c 5f 63 74 78 20 3d 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 73 65 6c sl_ctx.=.ssl_context.........sel
7b5a0 66 2e 73 6f 63 6b 65 74 20 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 5f 63 f.socket.=.Connection(self.ssl_c
7b5c0 74 78 29 0a 20 20 20 20 20 20 20 20 69 66 20 62 69 6e 64 5f 61 6e 64 5f 61 63 74 69 76 61 74 65 tx).........if.bind_and_activate
7b5e0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 72 76 65 72 5f 62 69 6e 64 28 29 :.............self.server_bind()
7b600 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 72 76 65 72 5f 61 63 74 69 76 61 74 .............self.server_activat
7b620 65 28 29 0a 0a 20 20 20 20 64 65 66 20 68 61 6e 64 6c 65 5f 72 65 71 75 65 73 74 28 73 65 6c 66 e()......def.handle_request(self
7b640 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 ):.........#.type:.().->.None...
7b660 20 20 20 20 20 20 72 65 71 75 65 73 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 63 6c 69 ......request.=.None.........cli
7b680 65 6e 74 5f 61 64 64 72 65 73 73 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a ent_address.=.None.........try:.
7b6a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2c 20 63 6c 69 65 6e 74 5f 61 64 64 72 ............request,.client_addr
7b6c0 65 73 73 20 3d 20 73 65 6c 66 2e 67 65 74 5f 72 65 71 75 65 73 74 28 29 0a 20 20 20 20 20 20 20 ess.=.self.get_request()........
7b6e0 20 20 20 20 20 69 66 20 73 65 6c 66 2e 76 65 72 69 66 79 5f 72 65 71 75 65 73 74 28 72 65 71 75 .....if.self.verify_request(requ
7b700 65 73 74 2c 20 63 6c 69 65 6e 74 5f 61 64 64 72 65 73 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 est,.client_address):...........
7b720 20 20 20 20 20 20 73 65 6c 66 2e 70 72 6f 63 65 73 73 5f 72 65 71 75 65 73 74 28 72 65 71 75 65 ......self.process_request(reque
7b740 73 74 2c 20 63 6c 69 65 6e 74 5f 61 64 64 72 65 73 73 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 st,.client_address).........exce
7b760 70 74 20 53 53 4c 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 61 pt.SSLError:.............self.ha
7b780 6e 64 6c 65 5f 65 72 72 6f 72 28 72 65 71 75 65 73 74 2c 20 63 6c 69 65 6e 74 5f 61 64 64 72 65 ndle_error(request,.client_addre
7b7a0 73 73 29 0a 0a 20 20 20 20 64 65 66 20 68 61 6e 64 6c 65 5f 65 72 72 6f 72 28 73 65 6c 66 2c 20 ss)......def.handle_error(self,.
7b7c0 72 65 71 75 65 73 74 2c 20 63 6c 69 65 6e 74 5f 61 64 64 72 65 73 73 29 3a 0a 20 20 20 20 20 20 request,.client_address):.......
7b7e0 20 20 23 20 74 79 70 65 3a 20 28 55 6e 69 6f 6e 5b 73 6f 63 6b 65 74 2c 20 43 6f 6e 6e 65 63 74 ..#.type:.(Union[socket,.Connect
7b800 69 6f 6e 5d 2c 20 75 74 69 6c 2e 41 64 64 72 54 79 70 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 ion],.util.AddrType).->.None....
7b820 20 20 20 20 20 70 72 69 6e 74 28 27 2d 27 20 2a 20 34 30 29 0a 20 20 20 20 20 20 20 20 69 6d 70 .....print('-'.*.40).........imp
7b840 6f 72 74 20 74 72 61 63 65 62 61 63 6b 0a 20 20 20 20 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e ort.traceback.........traceback.
7b860 70 72 69 6e 74 5f 65 78 63 28 29 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 2d 27 20 2a 20 print_exc().........print('-'.*.
7b880 34 30 29 0a 0a 0a 63 6c 61 73 73 20 54 68 72 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 28 54 40)...class.ThreadingSSLServer(T
7b8a0 68 72 65 61 64 69 6e 67 4d 69 78 49 6e 2c 20 53 53 4c 53 65 72 76 65 72 29 3a 0a 20 20 20 20 70 hreadingMixIn,.SSLServer):.....p
7b8c0 61 73 73 0a 0a 0a 69 66 20 6f 73 2e 6e 61 6d 65 20 21 3d 20 27 6e 74 27 3a 0a 20 20 20 20 63 6c ass...if.os.name.!=.'nt':.....cl
7b8e0 61 73 73 20 46 6f 72 6b 69 6e 67 53 53 4c 53 65 72 76 65 72 28 46 6f 72 6b 69 6e 67 4d 69 78 49 ass.ForkingSSLServer(ForkingMixI
7b900 6e 2c 20 53 53 4c 53 65 72 76 65 72 29 3a 0a 20 20 20 20 20 20 20 20 70 61 73 73 0a 94 7d 94 28 n,.SSLServer):.........pass..}.(
7b920 8c 12 53 53 4c 53 65 72 76 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 1b 4b 27 87 94 ..SSLServer.__init__.jt...K.K'..
7b940 8c 18 53 53 4c 53 65 72 76 65 72 2e 68 61 6e 64 6c 65 5f 72 65 71 75 65 73 74 94 6a 74 1f 00 00 ..SSLServer.handle_request.jt...
7b960 4b 29 4b 32 87 94 8c 16 53 53 4c 53 65 72 76 65 72 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 94 6a K)K2....SSLServer.handle_error.j
7b980 74 1f 00 00 4b 34 4b 39 87 94 8c 09 53 53 4c 53 65 72 76 65 72 94 6a 7d 1f 00 00 4b 1a 4b 39 87 t...K4K9....SSLServer.j}...K.K9.
7b9a0 94 8c 12 54 68 72 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a 7d 1f 00 00 4b 3c 4b 3d 87 ...ThreadingSSLServer.j}...K<K=.
7b9c0 94 8c 10 46 6f 72 6b 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a 7d 1f 00 00 4b 41 4b 42 87 94 75 ...ForkingSSLServer.j}...KAKB..u
7b9e0 7d 94 28 8c 09 53 53 4c 53 65 72 76 65 72 94 6a 5c 02 00 00 8c 16 53 53 4c 53 65 72 76 65 72 2e }.(..SSLServer.j\.....SSLServer.
7ba00 68 61 6e 64 6c 65 5f 65 72 72 6f 72 94 6a 5c 02 00 00 8c 18 53 53 4c 53 65 72 76 65 72 2e 68 61 handle_error.j\.....SSLServer.ha
7ba20 6e 64 6c 65 5f 72 65 71 75 65 73 74 94 6a 5c 02 00 00 8c 10 46 6f 72 6b 69 6e 67 53 53 4c 53 65 ndle_request.j\.....ForkingSSLSe
7ba40 72 76 65 72 94 6a 5c 02 00 00 8c 12 54 68 72 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a rver.j\.....ThreadingSSLServer.j
7ba60 5c 02 00 00 75 8c 16 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 94 74 94 \...u..M2Crypto.SSL.SSLServer.t.
7ba80 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 28 58 1d 07 00 00 22 22 22 ..M2Crypto.SSL.Session.(X...."""
7baa0 53 53 4c 20 53 65 73 73 69 6f 6e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d SSL.Session..Copyright.(c).1999-
7bac0 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 2003.Ng.Pheng.Siong..All.rights.
7bae0 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 53 65 73 73 69 6f reserved."""..__all__.=.['Sessio
7bb00 6e 27 2c 20 27 6c 6f 61 64 5f 73 65 73 73 69 6f 6e 27 5d 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 n',.'load_session']..from.M2Cryp
7bb20 74 6f 20 69 6d 70 6f 72 74 20 42 49 4f 2c 20 45 72 72 2c 20 6d 32 2c 20 75 74 69 6c 0a 66 72 6f to.import.BIO,.Err,.m2,.util.fro
7bb40 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 20 69 6d 70 6f 72 74 20 53 53 4c 45 72 72 6f 72 0a 69 m.M2Crypto.SSL.import.SSLError.i
7bb60 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 f.util.py27plus:.....from.typing
7bb80 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 53 .import.AnyStr..#.noqa...class.S
7bba0 65 73 73 69 6f 6e 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 6d 32 5f 73 73 6c 5f 73 65 73 73 ession(object):......m2_ssl_sess
7bbc0 69 6f 6e 5f 66 72 65 65 20 3d 20 6d 32 2e 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 66 72 65 65 0a 0a ion_free.=.m2.ssl_session_free..
7bbe0 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 65 73 73 69 6f 6e 2c 20 ....def.__init__(self,.session,.
7bc00 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 _pyfree=0):.........#.type:.(byt
7bc20 65 73 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 es,.int).->.None.........assert.
7bc40 73 65 73 73 69 6f 6e 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 session.is.not.None.........self
7bc60 2e 73 65 73 73 69 6f 6e 20 3d 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e .session.=.session.........self.
7bc80 5f 70 79 66 72 65 65 20 3d 20 5f 70 79 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c _pyfree.=._pyfree......def.__del
7bca0 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 __(self):.........#.type:.().->.
7bcc0 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 5f None.........if.getattr(self,.'_
7bce0 70 79 66 72 65 65 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 pyfree',.0):.............self.m2
7bd00 5f 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 66 72 65 65 28 73 65 6c 66 2e 73 65 73 73 69 6f 6e 29 0a _ssl_session_free(self.session).
7bd20 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 .....def._ptr(self):.........#.t
7bd40 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ype:.().->.bytes.........return.
7bd60 73 65 6c 66 2e 73 65 73 73 69 6f 6e 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 74 65 78 74 28 73 65 self.session......def.as_text(se
7bd80 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 62 79 74 65 73 lf):.........#.type:.().->.bytes
7bda0 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 .........buf.=.BIO.MemoryBuffer(
7bdc0 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 70 72 69 6e 74 28 62 ).........m2.ssl_session_print(b
7bde0 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 73 65 73 73 69 6f 6e 29 0a 20 20 20 20 uf.bio_ptr(),.self.session).....
7be00 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 20 64 ....return.buf.read_all()......d
7be20 65 66 20 61 73 5f 64 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a ef.as_der(self):.........#.type:
7be40 20 28 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f 2e 4d .().->.bytes.........buf.=.BIO.M
7be60 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 69 32 64 5f 73 73 6c emoryBuffer().........m2.i2d_ssl
7be80 5f 73 65 73 73 69 6f 6e 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 73 65 73 _session(buf.bio_ptr(),.self.ses
7bea0 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 2e 72 65 61 64 5f 61 6c sion).........return.buf.read_al
7bec0 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f l()......def.write_bio(self,.bio
7bee0 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 ):.........#.type:.(BIO.BIO).->.
7bf00 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 73 65 73 73 69 6f int.........return.m2.ssl_sessio
7bf20 6e 5f 77 72 69 74 65 5f 62 69 6f 28 62 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e n_write_bio(bio.bio_ptr(),.self.
7bf40 73 65 73 73 69 6f 6e 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 74 69 6d 65 28 73 65 6c 66 29 session)......def.get_time(self)
7bf60 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 :.........#.type:.().->.int.....
7bf80 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 67 65 74 5f 74 69 ....return.m2.ssl_session_get_ti
7bfa0 6d 65 28 73 65 6c 66 2e 73 65 73 73 69 6f 6e 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 69 me(self.session)......def.set_ti
7bfc0 6d 65 28 73 65 6c 66 2c 20 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e me(self,.t):.........#.type:.(in
7bfe0 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f t).->.int.........return.m2.ssl_
7c000 73 65 73 73 69 6f 6e 5f 73 65 74 5f 74 69 6d 65 28 73 65 6c 66 2e 73 65 73 73 69 6f 6e 2c 20 74 session_set_time(self.session,.t
7c020 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 29 3a 0a 20 20 )......def.get_timeout(self):...
7c040 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 ......#.type:.().->.int.........
7c060 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 73 65 73 73 69 6f 6e 5f 67 65 74 5f 74 69 6d 65 6f 75 return.m2.ssl_session_get_timeou
7c080 74 28 73 65 6c 66 2e 73 65 73 73 69 6f 6e 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 69 6d t(self.session)......def.set_tim
7c0a0 65 6f 75 74 28 73 65 6c 66 2c 20 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 eout(self,.t):.........#.type:.(
7c0c0 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 int).->.int.........return.m2.ss
7c0e0 6c 5f 73 65 73 73 69 6f 6e 5f 73 65 74 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 2e 73 65 73 73 69 l_session_set_timeout(self.sessi
7c100 6f 6e 2c 20 74 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 73 65 73 73 69 6f 6e 28 70 65 6d 66 69 6c on,.t)...def.load_session(pemfil
7c120 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 53 65 73 73 e):.....#.type:.(AnyStr).->.Sess
7c140 69 6f 6e 0a 20 20 20 20 77 69 74 68 20 42 49 4f 2e 6f 70 65 6e 66 69 6c 65 28 70 65 6d 66 69 6c ion.....with.BIO.openfile(pemfil
7c160 65 29 20 61 73 20 66 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 73 73 6c 5f 73 e).as.f:.........cptr.=.m2.ssl_s
7c180 65 73 73 69 6f 6e 5f 72 65 61 64 5f 70 65 6d 28 66 2e 62 69 6f 5f 70 74 72 28 29 29 0a 0a 20 20 ession_read_pem(f.bio_ptr())....
7c1a0 20 20 72 65 74 75 72 6e 20 53 65 73 73 69 6f 6e 28 63 70 74 72 2c 20 31 29 0a 94 7d 94 28 8c 10 ..return.Session(cptr,.1)..}.(..
7c1c0 53 65 73 73 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 11 4b 15 87 94 8c 0f 53 65 Session.__init__.jt...K.K.....Se
7c1e0 73 73 69 6f 6e 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 17 4b 1a 87 94 8c 0c 53 65 73 73 69 ssion.__del__.jt...K.K.....Sessi
7c200 6f 6e 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 1c 4b 1e 87 94 8c 0f 53 65 73 73 69 6f 6e 2e 61 73 5f on._ptr.jt...K.K.....Session.as_
7c220 74 65 78 74 94 6a 74 1f 00 00 4b 20 4b 24 87 94 8c 0e 53 65 73 73 69 6f 6e 2e 61 73 5f 64 65 72 text.jt...K.K$....Session.as_der
7c240 94 6a 74 1f 00 00 4b 26 4b 2a 87 94 8c 11 53 65 73 73 69 6f 6e 2e 77 72 69 74 65 5f 62 69 6f 94 .jt...K&K*....Session.write_bio.
7c260 6a 74 1f 00 00 4b 2c 4b 2e 87 94 8c 10 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 6d 65 94 6a 74 jt...K,K.....Session.get_time.jt
7c280 1f 00 00 4b 30 4b 32 87 94 8c 10 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 94 6a 74 1f 00 ...K0K2....Session.set_time.jt..
7c2a0 00 4b 34 4b 36 87 94 8c 13 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 6d 65 6f 75 74 94 6a 74 1f .K4K6....Session.get_timeout.jt.
7c2c0 00 00 4b 38 4b 3a 87 94 8c 13 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 6f 75 74 94 6a 74 ..K8K:....Session.set_timeout.jt
7c2e0 1f 00 00 4b 3c 4b 3e 87 94 8c 07 53 65 73 73 69 6f 6e 94 6a 7d 1f 00 00 4b 0d 4b 3e 87 94 8c 0c ...K<K>....Session.j}...K.K>....
7c300 6c 6f 61 64 5f 73 65 73 73 69 6f 6e 94 6a 74 1f 00 00 4b 41 4b 46 87 94 75 7d 94 28 8c 07 53 65 load_session.jt...KAKF..u}.(..Se
7c320 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 0e 53 65 73 73 69 6f 6e 2e 61 73 5f 64 65 72 94 6a 5c 02 00 ssion.j\.....Session.as_der.j\..
7c340 00 8c 0f 53 65 73 73 69 6f 6e 2e 61 73 5f 74 65 78 74 94 6a 5c 02 00 00 8c 10 53 65 73 73 69 6f ...Session.as_text.j\.....Sessio
7c360 6e 2e 67 65 74 5f 74 69 6d 65 94 6a 5c 02 00 00 8c 13 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 n.get_time.j\.....Session.get_ti
7c380 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 10 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 94 6a 5c meout.j\.....Session.set_time.j\
7c3a0 02 00 00 8c 13 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 11 .....Session.set_timeout.j\.....
7c3c0 53 65 73 73 69 6f 6e 2e 77 72 69 74 65 5f 62 69 6f 94 6a 5c 02 00 00 8c 0c 6c 6f 61 64 5f 73 65 Session.write_bio.j\.....load_se
7c3e0 73 73 69 6f 6e 94 6a 5c 02 00 00 75 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 ssion.j\...u..M2Crypto.SSL.Sessi
7c400 6f 6e 94 74 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 6f on.t..#M2Crypto.SSL.TwistedProto
7c420 63 6f 6c 57 72 61 70 70 65 72 94 28 58 52 46 00 00 22 22 22 0a 4d 61 6b 65 20 54 77 69 73 74 65 colWrapper.(XRF..""".Make.Twiste
7c440 64 20 75 73 65 20 4d 32 43 72 79 70 74 6f 20 66 6f 72 20 53 53 4c 0a 0a 43 6f 70 79 72 69 67 68 d.use.M2Crypto.for.SSL..Copyrigh
7c460 74 20 28 63 29 20 32 30 30 34 2d 32 30 30 37 20 4f 70 65 6e 20 53 6f 75 72 63 65 20 41 70 70 6c t.(c).2004-2007.Open.Source.Appl
7c480 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 2e 0a 41 6c 6c 20 72 69 67 68 74 73 20 ications.Foundation..All.rights.
7c4a0 72 65 73 65 72 76 65 64 2e 0a 0a 46 49 58 4d 45 20 54 48 49 53 20 48 41 53 20 4e 4f 54 20 42 45 reserved...FIXME.THIS.HAS.NOT.BE
7c4c0 45 4e 20 46 49 4e 49 53 48 45 44 2e 20 4e 45 49 54 48 45 52 20 50 45 50 34 38 34 20 4e 4f 52 20 EN.FINISHED..NEITHER.PEP484.NOR.
7c4e0 50 4f 52 54 20 50 59 54 48 4f 4e 33 20 48 41 53 0a 42 45 45 4e 20 46 49 4e 49 53 48 45 44 2e 20 PORT.PYTHON3.HAS.BEEN.FINISHED..
7c500 54 48 45 20 46 55 52 54 48 45 52 20 57 4f 52 4b 20 57 49 4c 4c 20 42 45 20 44 4f 4e 45 20 57 48 THE.FURTHER.WORK.WILL.BE.DONE.WH
7c520 45 4e 20 54 48 45 20 53 54 41 54 55 53 20 4f 46 20 54 57 49 53 54 45 44 0a 49 4e 20 54 48 45 20 EN.THE.STATUS.OF.TWISTED.IN.THE.
7c540 50 59 54 48 4f 4e 20 33 20 28 41 4e 44 20 41 53 59 4e 43 49 4f 29 20 57 4f 52 4c 44 20 57 49 4c PYTHON.3.(AND.ASYNCIO).WORLD.WIL
7c560 4c 20 42 45 20 43 4c 45 41 52 2e 0a 22 22 22 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 63 6f 6e L.BE.CLEAR.."""..__all__.=.['con
7c580 6e 65 63 74 53 53 4c 27 2c 20 27 63 6f 6e 6e 65 63 74 54 43 50 27 2c 20 27 6c 69 73 74 65 6e 53 nectSSL',.'connectTCP',.'listenS
7c5a0 53 4c 27 2c 20 27 6c 69 73 74 65 6e 54 43 50 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 54 4c SL',.'listenTCP',............'TL
7c5c0 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 27 5d 0a 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 SProtocolWrapper']..import.loggi
7c5e0 6e 67 0a 0a 66 72 6f 6d 20 66 75 6e 63 74 6f 6f 6c 73 20 69 6d 70 6f 72 74 20 70 61 72 74 69 61 ng..from.functools.import.partia
7c600 6c 0a 0a 69 6d 70 6f 72 74 20 74 77 69 73 74 65 64 2e 69 6e 74 65 72 6e 65 74 2e 72 65 61 63 74 l..import.twisted.internet.react
7c620 6f 72 0a 69 6d 70 6f 72 74 20 74 77 69 73 74 65 64 2e 70 72 6f 74 6f 63 6f 6c 73 2e 70 6f 6c 69 or.import.twisted.protocols.poli
7c640 63 69 65 73 20 61 73 20 70 6f 6c 69 63 69 65 73 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 cies.as.policies..from.M2Crypto.
7c660 69 6d 70 6f 72 74 20 42 49 4f 2c 20 58 35 30 39 2c 20 6d 32 2c 20 75 74 69 6c 0a 66 72 6f 6d 20 import.BIO,.X509,.m2,.util.from.
7c680 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 20 69 6d 70 6f 72 74 20 43 68 65 63 M2Crypto.SSL.Checker.import.Chec
7c6a0 6b 65 72 2c 20 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 0a 0a 66 72 6f 6d 20 ker,.SSLVerificationError..from.
7c6c0 74 77 69 73 74 65 64 2e 69 6e 74 65 72 6e 65 74 2e 69 6e 74 65 72 66 61 63 65 73 20 69 6d 70 6f twisted.internet.interfaces.impo
7c6e0 72 74 20 49 54 4c 53 54 72 61 6e 73 70 6f 72 74 0a 66 72 6f 6d 20 74 77 69 73 74 65 64 2e 70 72 rt.ITLSTransport.from.twisted.pr
7c700 6f 74 6f 63 6f 6c 73 2e 70 6f 6c 69 63 69 65 73 20 69 6d 70 6f 72 74 20 50 72 6f 74 6f 63 6f 6c otocols.policies.import.Protocol
7c720 57 72 61 70 70 65 72 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c 75 73 3a 0a 20 20 20 20 66 72 Wrapper.if.util.py27plus:.....fr
7c740 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c om.typing.import.AnyStr,.Callabl
7c760 65 2c 20 49 74 65 72 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 20 20 e,.Iterable,.Optional..#.noqa...
7c780 20 20 66 72 6f 6d 20 7a 6f 70 65 2e 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6f 72 74 20 69 6d 70 ..from.zope.interface.import.imp
7c7a0 6c 65 6d 65 6e 74 65 72 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 65 lementer..log.=.logging.getLogge
7c7c0 72 28 5f 5f 6e 61 6d 65 5f 5f 29 0a 0a 0a 64 65 66 20 5f 61 6c 77 61 79 73 53 75 63 63 65 65 64 r(__name__)...def._alwaysSucceed
7c7e0 73 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 28 70 65 65 72 58 35 30 39 2c 20 65 sPostConnectionCheck(peerX509,.e
7c800 78 70 65 63 74 65 64 48 6f 73 74 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 31 0a 0a 0a 64 65 66 xpectedHost):.....return.1...def
7c820 20 63 6f 6e 6e 65 63 74 53 53 4c 28 68 6f 73 74 2c 20 70 6f 72 74 2c 20 66 61 63 74 6f 72 79 2c .connectSSL(host,.port,.factory,
7c840 20 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 2c 20 74 69 6d 65 6f 75 74 3d 33 30 2c 0a 20 20 20 .contextFactory,.timeout=30,....
7c860 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6e 64 41 64 64 72 65 73 73 3d 4e 6f 6e 65 2c 0a 20 20 ............bindAddress=None,...
7c880 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 63 74 6f 72 3d 74 77 69 73 74 65 64 2e 69 6e 74 .............reactor=twisted.int
7c8a0 65 72 6e 65 74 2e 72 65 61 63 74 6f 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f ernet.reactor,................po
7c8c0 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 43 68 65 63 6b 65 72 28 29 29 3a 0a 20 20 stConnectionCheck=Checker()):...
7c8e0 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 69 6e 74 2c 20 6f 62 6a 65 63 74 2c 20 6f 62 6a ..#.type:.(str,.int,.object,.obj
7c900 65 63 74 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 2c 20 74 77 69 73 74 65 64 ect,.int,.Optional[str],.twisted
7c920 2e 69 6e 74 65 72 6e 65 74 2e 72 65 61 63 74 6f 72 2c 20 43 68 65 63 6b 65 72 29 20 2d 3e 20 72 .internet.reactor,.Checker).->.r
7c940 65 61 63 74 6f 72 2e 63 6f 6e 6e 65 63 74 54 43 50 0a 20 20 20 20 22 22 22 0a 20 20 20 20 41 20 eactor.connectTCP.....""".....A.
7c960 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 74 61 72 74 20 61 6e convenience.function.to.start.an
7c980 20 53 53 4c 2f 54 4c 53 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 54 77 69 73 74 65 .SSL/TLS.connection.using.Twiste
7c9a0 64 2e 0a 0a 20 20 20 20 53 65 65 20 49 52 65 61 63 74 6f 72 53 53 4c 20 69 6e 74 65 72 66 61 63 d.......See.IReactorSSL.interfac
7c9c0 65 20 69 6e 20 54 77 69 73 74 65 64 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 77 72 61 70 70 69 e.in.Twisted......""".....wrappi
7c9e0 6e 67 46 61 63 74 6f 72 79 20 3d 20 70 6f 6c 69 63 69 65 73 2e 57 72 61 70 70 69 6e 67 46 61 63 ngFactory.=.policies.WrappingFac
7ca00 74 6f 72 79 28 66 61 63 74 6f 72 79 29 0a 20 20 20 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 tory(factory).....wrappingFactor
7ca20 79 2e 70 72 6f 74 6f 63 6f 6c 20 3d 20 6c 61 6d 62 64 61 20 66 61 63 74 6f 72 79 2c 20 77 72 61 y.protocol.=.lambda.factory,.wra
7ca40 70 70 65 64 50 72 6f 74 6f 63 6f 6c 3a 20 5c 0a 20 20 20 20 20 20 20 20 54 4c 53 50 72 6f 74 6f ppedProtocol:.\.........TLSProto
7ca60 63 6f 6c 57 72 61 70 70 65 72 28 66 61 63 74 6f 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 colWrapper(factory,.............
7ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 2c 0a ...............wrappedProtocol,.
7caa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 ...........................start
7cac0 50 61 73 73 54 68 72 6f 75 67 68 3d 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PassThrough=0,..................
7cae0 20 20 20 20 20 20 20 20 20 20 63 6c 69 65 6e 74 3d 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..........client=1,.............
7cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 3d 63 6f ...............contextFactory=co
7cb20 6e 74 65 78 74 46 61 63 74 6f 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ntextFactory,...................
7cb40 20 20 20 20 20 20 20 20 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 70 6f 73 .........postConnectionCheck=pos
7cb60 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 61 tConnectionCheck).....return.rea
7cb80 63 74 6f 72 2e 63 6f 6e 6e 65 63 74 54 43 50 28 68 6f 73 74 2c 20 70 6f 72 74 2c 20 77 72 61 70 ctor.connectTCP(host,.port,.wrap
7cba0 70 69 6e 67 46 61 63 74 6f 72 79 2c 20 74 69 6d 65 6f 75 74 2c 20 62 69 6e 64 41 64 64 72 65 73 pingFactory,.timeout,.bindAddres
7cbc0 73 29 0a 0a 0a 64 65 66 20 63 6f 6e 6e 65 63 74 54 43 50 28 68 6f 73 74 2c 20 70 6f 72 74 2c 20 s)...def.connectTCP(host,.port,.
7cbe0 66 61 63 74 6f 72 79 2c 20 74 69 6d 65 6f 75 74 3d 33 30 2c 20 62 69 6e 64 41 64 64 72 65 73 73 factory,.timeout=30,.bindAddress
7cc00 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 63 74 6f 72 3d 74 77 =None,................reactor=tw
7cc20 69 73 74 65 64 2e 69 6e 74 65 72 6e 65 74 2e 72 65 61 63 74 6f 72 2c 0a 20 20 20 20 20 20 20 20 isted.internet.reactor,.........
7cc40 20 20 20 20 20 20 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 43 68 65 63 6b .......postConnectionCheck=Check
7cc60 65 72 28 29 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 69 6e 74 2c 20 6f 62 er()):.....#.type:.(str,.int,.ob
7cc80 6a 65 63 74 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 75 74 69 6c 2e 41 64 64 72 54 79 70 ject,.int,.Optional[util.AddrTyp
7cca0 65 5d 2c 20 6f 62 6a 65 63 74 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 6f 62 6a 65 63 74 0a e],.object,.Callable).->.object.
7ccc0 20 20 20 20 22 22 22 0a 20 20 20 20 41 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 ....""".....A.convenience.functi
7cce0 6f 6e 20 74 6f 20 73 74 61 72 74 20 61 20 54 43 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 on.to.start.a.TCP.connection.usi
7cd00 6e 67 20 54 77 69 73 74 65 64 2e 0a 0a 20 20 20 20 4e 4f 54 45 3a 20 59 6f 75 20 6d 75 73 74 20 ng.Twisted.......NOTE:.You.must.
7cd20 63 61 6c 6c 20 73 74 61 72 74 54 4c 53 28 63 74 78 29 20 74 6f 20 67 6f 20 69 6e 74 6f 20 53 53 call.startTLS(ctx).to.go.into.SS
7cd40 4c 2f 54 4c 53 20 6d 6f 64 65 2e 0a 0a 20 20 20 20 53 65 65 20 49 52 65 61 63 74 6f 72 54 43 50 L/TLS.mode.......See.IReactorTCP
7cd60 20 69 6e 74 65 72 66 61 63 65 20 69 6e 20 54 77 69 73 74 65 64 2e 0a 20 20 20 20 22 22 22 0a 20 .interface.in.Twisted......"""..
7cd80 20 20 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 20 3d 20 70 6f 6c 69 63 69 65 73 2e 57 72 ...wrappingFactory.=.policies.Wr
7cda0 61 70 70 69 6e 67 46 61 63 74 6f 72 79 28 66 61 63 74 6f 72 79 29 0a 20 20 20 20 77 72 61 70 70 appingFactory(factory).....wrapp
7cdc0 69 6e 67 46 61 63 74 6f 72 79 2e 70 72 6f 74 6f 63 6f 6c 20 3d 20 6c 61 6d 62 64 61 20 66 61 63 ingFactory.protocol.=.lambda.fac
7cde0 74 6f 72 79 2c 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 3a 20 5c 0a 20 20 20 20 20 20 20 tory,.wrappedProtocol:.\........
7ce00 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 28 66 61 63 74 6f 72 79 2c 0a 20 20 20 .TLSProtocolWrapper(factory,....
7ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 61 70 70 65 64 50 ........................wrappedP
7ce40 72 6f 74 6f 63 6f 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rotocol,........................
7ce60 20 20 20 20 73 74 61 72 74 50 61 73 73 54 68 72 6f 75 67 68 3d 31 2c 0a 20 20 20 20 20 20 20 20 ....startPassThrough=1,.........
7ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 69 65 6e 74 3d 31 2c 0a 20 20 20 ...................client=1,....
7cea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 46 ........................contextF
7cec0 61 63 74 6f 72 79 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 actory=None,....................
7cee0 20 20 20 20 20 20 20 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 70 6f 73 74 ........postConnectionCheck=post
7cf00 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 61 63 ConnectionCheck).....return.reac
7cf20 74 6f 72 2e 63 6f 6e 6e 65 63 74 54 43 50 28 68 6f 73 74 2c 20 70 6f 72 74 2c 20 77 72 61 70 70 tor.connectTCP(host,.port,.wrapp
7cf40 69 6e 67 46 61 63 74 6f 72 79 2c 20 74 69 6d 65 6f 75 74 2c 20 62 69 6e 64 41 64 64 72 65 73 73 ingFactory,.timeout,.bindAddress
7cf60 29 0a 0a 0a 64 65 66 20 6c 69 73 74 65 6e 53 53 4c 28 70 6f 72 74 2c 20 66 61 63 74 6f 72 79 2c )...def.listenSSL(port,.factory,
7cf80 20 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 2c 20 62 61 63 6b 6c 6f 67 3d 35 2c 20 69 6e 74 65 .contextFactory,.backlog=5,.inte
7cfa0 72 66 61 63 65 3d 27 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 63 74 6f 72 3d rface='',...............reactor=
7cfc0 74 77 69 73 74 65 64 2e 69 6e 74 65 72 6e 65 74 2e 72 65 61 63 74 6f 72 2c 0a 20 20 20 20 20 20 twisted.internet.reactor,.......
7cfe0 20 20 20 20 20 20 20 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 5f 61 6c 77 ........postConnectionCheck=_alw
7d000 61 79 73 53 75 63 63 65 65 64 73 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 29 3a aysSucceedsPostConnectionCheck):
7d020 0a 20 20 20 20 22 22 22 0a 20 20 20 20 41 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 .....""".....A.convenience.funct
7d040 69 6f 6e 20 74 6f 20 6c 69 73 74 65 6e 20 66 6f 72 20 53 53 4c 2f 54 4c 53 20 63 6f 6e 6e 65 63 ion.to.listen.for.SSL/TLS.connec
7d060 74 69 6f 6e 73 20 75 73 69 6e 67 20 54 77 69 73 74 65 64 2e 0a 0a 20 20 20 20 53 65 65 20 49 52 tions.using.Twisted.......See.IR
7d080 65 61 63 74 6f 72 53 53 4c 20 69 6e 74 65 72 66 61 63 65 20 69 6e 20 54 77 69 73 74 65 64 2e 0a eactorSSL.interface.in.Twisted..
7d0a0 20 20 20 20 22 22 22 0a 20 20 20 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 20 3d 20 70 6f ....""".....wrappingFactory.=.po
7d0c0 6c 69 63 69 65 73 2e 57 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 28 66 61 63 74 6f 72 79 29 0a licies.WrappingFactory(factory).
7d0e0 20 20 20 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 2e 70 72 6f 74 6f 63 6f 6c 20 3d 20 6c ....wrappingFactory.protocol.=.l
7d100 61 6d 62 64 61 20 66 61 63 74 6f 72 79 2c 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 3a 20 ambda.factory,.wrappedProtocol:.
7d120 5c 0a 20 20 20 20 20 20 20 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 28 66 61 63 \.........TLSProtocolWrapper(fac
7d140 74 6f 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tory,...........................
7d160 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .wrappedProtocol,...............
7d180 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 50 61 73 73 54 68 72 6f 75 67 68 3d 30 2c .............startPassThrough=0,
7d1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 69 65 ............................clie
7d1c0 6e 74 3d 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt=0,...........................
7d1e0 20 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 3d 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 2c 0a .contextFactory=contextFactory,.
7d200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 74 43 ...........................postC
7d220 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 onnectionCheck=postConnectionChe
7d240 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 61 63 74 6f 72 2e 6c 69 73 74 65 6e 54 43 50 ck).....return.reactor.listenTCP
7d260 28 70 6f 72 74 2c 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 2c 20 62 61 63 6b 6c 6f 67 2c (port,.wrappingFactory,.backlog,
7d280 20 69 6e 74 65 72 66 61 63 65 29 0a 0a 0a 64 65 66 20 6c 69 73 74 65 6e 54 43 50 28 70 6f 72 74 .interface)...def.listenTCP(port
7d2a0 2c 20 66 61 63 74 6f 72 79 2c 20 62 61 63 6b 6c 6f 67 3d 35 2c 20 69 6e 74 65 72 66 61 63 65 3d ,.factory,.backlog=5,.interface=
7d2c0 27 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 63 74 6f 72 3d 74 77 69 73 74 65 '',...............reactor=twiste
7d2e0 64 2e 69 6e 74 65 72 6e 65 74 2e 72 65 61 63 74 6f 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 d.internet.reactor,.............
7d300 20 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 4e 6f 6e 65 29 3a 0a 20 20 20 ..postConnectionCheck=None):....
7d320 20 22 22 22 0a 20 20 20 20 41 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 20 .""".....A.convenience.function.
7d340 74 6f 20 6c 69 73 74 65 6e 20 66 6f 72 20 54 43 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 75 73 to.listen.for.TCP.connections.us
7d360 69 6e 67 20 54 77 69 73 74 65 64 2e 0a 0a 20 20 20 20 4e 4f 54 45 3a 20 59 6f 75 20 6d 75 73 74 ing.Twisted.......NOTE:.You.must
7d380 20 63 61 6c 6c 20 73 74 61 72 74 54 4c 53 28 63 74 78 29 20 74 6f 20 67 6f 20 69 6e 74 6f 20 53 .call.startTLS(ctx).to.go.into.S
7d3a0 53 4c 2f 54 4c 53 20 6d 6f 64 65 2e 0a 0a 20 20 20 20 53 65 65 20 49 52 65 61 63 74 6f 72 54 43 SL/TLS.mode.......See.IReactorTC
7d3c0 50 20 69 6e 74 65 72 66 61 63 65 20 69 6e 20 54 77 69 73 74 65 64 2e 0a 20 20 20 20 22 22 22 0a P.interface.in.Twisted......""".
7d3e0 20 20 20 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 20 3d 20 70 6f 6c 69 63 69 65 73 2e 57 ....wrappingFactory.=.policies.W
7d400 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 28 66 61 63 74 6f 72 79 29 0a 20 20 20 20 77 72 61 70 rappingFactory(factory).....wrap
7d420 70 69 6e 67 46 61 63 74 6f 72 79 2e 70 72 6f 74 6f 63 6f 6c 20 3d 20 6c 61 6d 62 64 61 20 66 61 pingFactory.protocol.=.lambda.fa
7d440 63 74 6f 72 79 2c 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 3a 20 5c 0a 20 20 20 20 20 20 ctory,.wrappedProtocol:.\.......
7d460 20 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 28 66 61 63 74 6f 72 79 2c 0a 20 20 ..TLSProtocolWrapper(factory,...
7d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 61 70 70 65 64 .........................wrapped
7d4a0 50 72 6f 74 6f 63 6f 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Protocol,.......................
7d4c0 20 20 20 20 20 73 74 61 72 74 50 61 73 73 54 68 72 6f 75 67 68 3d 31 2c 0a 20 20 20 20 20 20 20 .....startPassThrough=1,........
7d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 69 65 6e 74 3d 30 2c 0a 20 20 ....................client=0,...
7d500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 .........................context
7d520 46 61 63 74 6f 72 79 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Factory=None,...................
7d540 20 20 20 20 20 20 20 20 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 3d 70 6f 73 .........postConnectionCheck=pos
7d560 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 61 tConnectionCheck).....return.rea
7d580 63 74 6f 72 2e 6c 69 73 74 65 6e 54 43 50 28 70 6f 72 74 2c 20 77 72 61 70 70 69 6e 67 46 61 63 ctor.listenTCP(port,.wrappingFac
7d5a0 74 6f 72 79 2c 20 62 61 63 6b 6c 6f 67 2c 20 69 6e 74 65 72 66 61 63 65 29 0a 0a 0a 63 6c 61 73 tory,.backlog,.interface)...clas
7d5c0 73 20 5f 42 69 6f 50 72 6f 78 79 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 s._BioProxy(object):....."""....
7d5e0 20 54 68 65 20 70 75 72 70 6f 73 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 69 73 20 74 6f .The.purpose.of.this.class.is.to
7d600 20 65 6c 69 6d 69 6e 61 74 65 20 74 68 65 20 5f 5f 64 65 6c 5f 5f 20 6d 65 74 68 6f 64 20 66 72 .eliminate.the.__del__.method.fr
7d620 6f 6d 0a 20 20 20 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2c 20 61 6e 64 20 74 om.....TLSProtocolWrapper,.and.t
7d640 68 75 73 20 6c 65 74 74 69 6e 67 20 69 74 20 62 65 20 67 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 hus.letting.it.be.garbage.collec
7d660 74 65 64 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 66 72 65 65 5f 61 6c ted......"""......m2_bio_free_al
7d680 6c 20 3d 20 6d 32 2e 62 69 6f 5f 66 72 65 65 5f 61 6c 6c 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 l.=.m2.bio_free_all......def.__i
7d6a0 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 nit__(self,.bio):.........self.b
7d6c0 69 6f 20 3d 20 62 69 6f 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 io.=.bio......def._ptr(self):...
7d6e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 62 69 6f 0a 0a 20 20 20 20 64 65 66 20 5f ......return.self.bio......def._
7d700 5f 64 65 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 62 69 _del__(self):.........if.self.bi
7d720 6f 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e o.is.not.None:.............self.
7d740 6d 32 5f 62 69 6f 5f 66 72 65 65 5f 61 6c 6c 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 0a 63 6c 61 73 m2_bio_free_all(self.bio)...clas
7d760 73 20 5f 53 53 4c 50 72 6f 78 79 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 s._SSLProxy(object):....."""....
7d780 20 54 68 65 20 70 75 72 70 6f 73 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 69 73 20 74 6f .The.purpose.of.this.class.is.to
7d7a0 20 65 6c 69 6d 69 6e 61 74 65 20 74 68 65 20 5f 5f 64 65 6c 5f 5f 20 6d 65 74 68 6f 64 20 66 72 .eliminate.the.__del__.method.fr
7d7c0 6f 6d 0a 20 20 20 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2c 20 61 6e 64 20 74 om.....TLSProtocolWrapper,.and.t
7d7e0 68 75 73 20 6c 65 74 74 69 6e 67 20 69 74 20 62 65 20 67 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 hus.letting.it.be.garbage.collec
7d800 74 65 64 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 73 73 6c 5f 66 72 65 65 20 3d 20 ted......"""......m2_ssl_free.=.
7d820 6d 32 2e 73 73 6c 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 m2.ssl_free......def.__init__(se
7d840 6c 66 2c 20 73 73 6c 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 20 3d 20 73 73 6c lf,.ssl):.........self.ssl.=.ssl
7d860 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 ......def._ptr(self):.........re
7d880 74 75 72 6e 20 73 65 6c 66 2e 73 73 6c 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c 5f 5f 28 73 turn.self.ssl......def.__del__(s
7d8a0 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 73 73 6c 20 69 73 20 6e 6f 74 elf):.........if.self.ssl.is.not
7d8c0 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 73 73 6c 5f 66 .None:.............self.m2_ssl_f
7d8e0 72 65 65 28 73 65 6c 66 2e 73 73 6c 29 0a 0a 0a 40 69 6d 70 6c 65 6d 65 6e 74 65 72 28 49 54 4c ree(self.ssl)...@implementer(ITL
7d900 53 54 72 61 6e 73 70 6f 72 74 29 0a 63 6c 61 73 73 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 STransport).class.TLSProtocolWra
7d920 70 70 65 72 28 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 3a 0a 20 20 20 20 22 22 22 0a 20 pper(ProtocolWrapper):....."""..
7d940 20 20 20 41 20 53 53 4c 2f 54 4c 53 20 70 72 6f 74 6f 63 6f 6c 20 77 72 61 70 70 65 72 20 74 6f ...A.SSL/TLS.protocol.wrapper.to
7d960 20 62 65 20 75 73 65 64 20 77 69 74 68 20 54 77 69 73 74 65 64 2e 20 54 79 70 69 63 61 6c 6c 79 .be.used.with.Twisted..Typically
7d980 0a 20 20 20 20 79 6f 75 20 77 6f 75 6c 64 20 6e 6f 74 20 75 73 65 20 74 68 69 73 20 63 6c 61 73 .....you.would.not.use.this.clas
7d9a0 73 20 64 69 72 65 63 74 6c 79 2e 20 55 73 65 20 63 6f 6e 6e 65 63 74 54 43 50 2c 0a 20 20 20 20 s.directly..Use.connectTCP,.....
7d9c0 63 6f 6e 6e 65 63 74 53 53 4c 2c 20 6c 69 73 74 65 6e 54 43 50 2c 20 6c 69 73 74 65 6e 53 53 4c connectSSL,.listenTCP,.listenSSL
7d9e0 20 66 75 6e 63 74 69 6f 6e 73 20 64 65 66 69 6e 65 64 20 61 62 6f 76 65 2c 0a 20 20 20 20 77 68 .functions.defined.above,.....wh
7da00 69 63 68 20 77 69 6c 6c 20 68 6f 6f 6b 20 69 6e 20 74 68 69 73 20 63 6c 61 73 73 2e 0a 20 20 20 ich.will.hook.in.this.class.....
7da20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 66 61 63 ."""......def.__init__(self,.fac
7da40 74 6f 72 79 2c 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 2c 20 73 74 61 72 74 50 61 73 73 tory,.wrappedProtocol,.startPass
7da60 54 68 72 6f 75 67 68 2c 20 63 6c 69 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Through,.client,................
7da80 20 20 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 2c 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e ..contextFactory,.postConnection
7daa0 43 68 65 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 70 6f 6c 69 63 69 65 Check):.........#.type:.(policie
7dac0 73 2e 57 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 2c 20 6f 62 6a 65 63 74 2c 20 69 6e 74 2c 20 s.WrappingFactory,.object,.int,.
7dae0 69 6e 74 2c 20 6f 62 6a 65 63 74 2c 20 43 68 65 63 6b 65 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 int,.object,.Checker).->.None...
7db00 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 61 63 74 6f 72 79 ......""".........:param.factory
7db20 3a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c :.........:param.wrappedProtocol
7db40 3a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 74 61 72 74 50 61 73 73 54 68 72 6f 75 67 :.........:param.startPassThroug
7db60 68 3a 20 20 20 20 49 66 20 74 72 75 65 20 77 65 20 77 6f 6e 27 74 20 65 6e 63 72 79 70 74 20 61 h:....If.true.we.won't.encrypt.a
7db80 74 20 61 6c 6c 2e 20 4e 65 65 64 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.all..Need.to..................
7dba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 20 73 74 61 72 74 54 4c 53 ...................call.startTLS
7dbc0 28 29 20 6c 61 74 65 72 20 74 6f 20 73 77 69 74 63 68 20 74 6f 20 53 53 4c 2f 54 4c 53 2e 0a 20 ().later.to.switch.to.SSL/TLS...
7dbe0 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 6c 69 65 6e 74 3a 20 20 20 20 20 20 20 20 20 20 20 .......:param.client:...........
7dc00 20 20 20 54 72 75 65 20 69 66 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 61 20 63 6c 69 65 ...True.if.this.should.be.a.clie
7dc20 6e 74 20 70 72 6f 74 6f 63 6f 6c 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 6f 6e 74 nt.protocol..........:param.cont
7dc40 65 78 74 46 61 63 74 6f 72 79 3a 20 20 20 20 20 20 46 61 63 74 6f 72 79 20 74 68 61 74 20 63 72 extFactory:......Factory.that.cr
7dc60 65 61 74 65 73 20 53 53 4c 2e 43 6f 6e 74 65 78 74 20 6f 62 6a 65 63 74 73 2e 0a 20 20 20 20 20 eates.SSL.Context.objects.......
7dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 ...............................T
7dca0 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 67 65 74 43 6f 6e 74 65 78 74 he.called.function.is.getContext
7dcc0 28 29 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f ()..........:param.postConnectio
7dce0 6e 43 68 65 63 6b 3a 20 54 68 65 20 70 6f 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 68 65 63 nCheck:.The.post.connection.chec
7dd00 6b 20 63 61 6c 6c 62 61 63 6b 20 74 68 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 k.callback.that.................
7dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c ....................will.be.call
7dd40 65 64 20 6a 75 73 74 20 61 66 74 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 0a 20 20 20 ed.just.after.connection.has....
7dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7dd80 20 62 65 65 6e 20 65 73 74 61 62 6c 69 73 68 65 64 20 62 75 74 20 62 65 66 6f 72 65 20 61 6e 79 .been.established.but.before.any
7dda0 20 72 65 61 6c 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .real.data......................
7ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20 65 78 63 68 61 6e 67 65 ...............has.been.exchange
7dde0 64 2e 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 20 20 20 20 20 20 20 d..The.first.argument.to........
7de00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 .............................thi
7de20 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 6e 20 58 35 30 39 20 6f 62 6a 65 63 74 2c 20 74 68 s.function.is.an.X509.object,.th
7de40 65 20 73 65 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.second........................
7de60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 74 68 65 20 65 78 70 65 63 74 65 64 20 68 6f 73 .............is.the.expected.hos
7de80 74 20 6e 61 6d 65 20 73 74 72 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 t.name.string.........."""......
7dea0 20 20 20 23 20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 ...#.ProtocolWrapper.__init__(se
7dec0 6c 66 2c 20 66 61 63 74 6f 72 79 2c 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 29 0a 20 20 lf,.factory,.wrappedProtocol)...
7dee0 20 20 20 20 20 20 23 20 58 58 58 3a 20 54 77 69 73 74 65 64 20 32 2e 30 20 68 61 73 20 61 20 6e ......#.XXX:.Twisted.2.0.has.a.n
7df00 65 77 20 61 64 64 69 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 20 77 72 61 70 70 69 6e 67 46 61 ew.addition.where.the.wrappingFa
7df20 63 74 6f 72 79 20 69 73 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 73 65 74 20 61 73 20 74 ctory.is.........#......set.as.t
7df40 68 65 20 66 61 63 74 6f 72 79 20 6f 66 20 74 68 65 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f he.factory.of.the.wrappedProtoco
7df60 6c 2e 20 54 68 69 73 20 69 73 20 61 6e 20 69 73 73 75 65 0a 20 20 20 20 20 20 20 20 23 20 20 20 l..This.is.an.issue.........#...
7df80 20 20 20 61 73 20 74 68 65 20 77 72 61 70 20 73 68 6f 75 6c 64 20 62 65 20 74 72 61 6e 73 70 61 ...as.the.wrap.should.be.transpa
7dfa0 72 65 6e 74 2e 20 57 68 61 74 20 77 65 20 77 61 6e 74 20 69 73 0a 20 20 20 20 20 20 20 20 23 20 rent..What.we.want.is.........#.
7dfc0 20 20 20 20 20 74 68 65 20 66 61 63 74 6f 72 79 20 6f 66 20 74 68 65 20 77 72 61 70 70 65 64 50 .....the.factory.of.the.wrappedP
7dfe0 72 6f 74 6f 63 6f 6c 20 74 6f 20 62 65 20 74 68 65 20 77 72 61 70 70 65 64 46 61 63 74 6f 72 79 rotocol.to.be.the.wrappedFactory
7e000 20 61 6e 64 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 6e 6f 74 20 74 68 65 20 6f 75 74 65 .and.........#......not.the.oute
7e020 72 20 77 72 61 70 70 69 6e 67 46 61 63 74 6f 72 79 2e 20 54 68 69 73 20 69 73 20 68 6f 77 20 69 r.wrappingFactory..This.is.how.i
7e040 74 20 77 61 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 0a 20 20 20 20 20 20 20 20 23 20 20 t.was.implemented.in.........#..
7e060 20 20 20 20 54 77 69 73 74 65 64 20 31 2e 33 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 61 63 ....Twisted.1.3.........self.fac
7e080 74 6f 72 79 20 3d 20 66 61 63 74 6f 72 79 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 77 72 61 70 tory.=.factory.........self.wrap
7e0a0 70 65 64 50 72 6f 74 6f 63 6f 6c 20 3d 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 0a 0a 20 pedProtocol.=.wrappedProtocol...
7e0c0 20 20 20 20 20 20 20 23 20 77 72 61 70 70 65 64 50 72 6f 74 6f 63 6f 6c 20 3d 3d 20 63 6c 69 65 .......#.wrappedProtocol.==.clie
7e0e0 6e 74 2f 73 65 72 76 65 72 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 23 20 66 61 63 nt/server.instance.........#.fac
7e100 74 6f 72 79 2e 77 72 61 70 70 65 64 46 61 63 74 6f 72 79 20 3d 3d 20 63 6c 69 65 6e 74 2f 73 65 tory.wrappedFactory.==.client/se
7e120 72 76 65 72 20 66 61 63 74 6f 72 79 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 61 74 61 20 rver.factory..........self.data.
7e140 3d 20 62 27 27 20 20 23 20 43 6c 65 61 72 20 74 65 78 74 20 74 6f 20 65 6e 63 72 79 70 74 20 61 =.b''..#.Clear.text.to.encrypt.a
7e160 6e 64 20 73 65 6e 64 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 63 72 79 70 74 65 64 20 3d nd.send.........self.encrypted.=
7e180 20 62 27 27 20 20 23 20 45 6e 63 72 79 70 74 65 64 20 64 61 74 61 20 77 65 20 6e 65 65 64 20 74 .b''..#.Encrypted.data.we.need.t
7e1a0 6f 20 64 65 63 72 79 70 74 20 61 6e 64 20 70 61 73 73 20 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 o.decrypt.and.pass.on.........se
7e1c0 6c 66 2e 74 6c 73 53 74 61 72 74 65 64 20 3d 20 30 20 20 23 20 53 53 4c 2f 54 4c 53 20 6d 6f 64 lf.tlsStarted.=.0..#.SSL/TLS.mod
7e1e0 65 20 6f 72 20 70 61 73 73 20 74 68 72 6f 75 67 68 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 e.or.pass.through.........self.c
7e200 68 65 63 6b 65 64 20 3d 20 30 20 20 23 20 50 6f 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 68 hecked.=.0..#.Post.connection.ch
7e220 65 63 6b 20 64 6f 6e 65 20 6f 72 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 73 43 eck.done.or.not.........self.isC
7e240 6c 69 65 6e 74 20 3d 20 63 6c 69 65 6e 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 6c 6c lient.=.client.........self.hell
7e260 6f 44 6f 6e 65 20 3d 20 30 20 20 23 20 54 72 75 65 20 77 68 65 6e 20 68 65 6c 6c 6f 20 68 61 73 oDone.=.0..#.True.when.hello.has
7e280 20 62 65 65 6e 20 73 65 6e 74 0a 20 20 20 20 20 20 20 20 69 66 20 70 6f 73 74 43 6f 6e 6e 65 63 .been.sent.........if.postConnec
7e2a0 74 69 6f 6e 43 68 65 63 6b 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 tionCheck.is.None:.............s
7e2c0 65 6c 66 2e 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 20 3d 20 5f 61 6c 77 61 79 elf.postConnectionCheck.=._alway
7e2e0 73 53 75 63 63 65 65 64 73 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 0a 20 20 20 sSucceedsPostConnectionCheck....
7e300 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 73 74 .....else:.............self.post
7e320 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 20 3d 20 70 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e ConnectionCheck.=.postConnection
7e340 43 68 65 63 6b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 74 61 72 74 50 61 73 73 54 Check..........if.not.startPassT
7e360 68 72 6f 75 67 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 72 74 54 4c hrough:.............self.startTL
7e380 53 28 63 6f 6e 74 65 78 74 46 61 63 74 6f 72 79 2e 67 65 74 43 6f 6e 74 65 78 74 28 29 29 0a 0a S(contextFactory.getContext())..
7e3a0 20 20 20 20 64 65 66 20 63 6c 65 61 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 ....def.clear(self):........."""
7e3c0 0a 20 20 20 20 20 20 20 20 43 6c 65 61 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2c 20 61 66 .........Clear.this.instance,.af
7e3e0 74 65 72 20 77 68 69 63 68 20 69 74 20 69 73 20 72 65 61 64 79 20 66 6f 72 20 72 65 75 73 65 2e ter.which.it.is.ready.for.reuse.
7e400 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 .........""".........if.getattr(
7e420 73 65 6c 66 2c 20 27 74 6c 73 53 74 61 72 74 65 64 27 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 self,.'tlsStarted',.0):.........
7e440 20 20 20 20 73 65 6c 66 2e 73 73 6c 42 69 6f 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 ....self.sslBio.=.None..........
7e460 20 20 20 73 65 6c 66 2e 73 73 6c 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ...self.ssl.=.None.............s
7e480 65 6c 66 2e 69 6e 74 65 72 6e 61 6c 42 69 6f 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 elf.internalBio.=.None..........
7e4a0 20 20 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 ...self.networkBio.=.None.......
7e4c0 20 20 73 65 6c 66 2e 64 61 74 61 20 3d 20 62 27 27 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 ..self.data.=.b''.........self.e
7e4e0 6e 63 72 79 70 74 65 64 20 3d 20 62 27 27 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6c 73 53 ncrypted.=.b''.........self.tlsS
7e500 74 61 72 74 65 64 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 65 64 20 tarted.=.0.........self.checked.
7e520 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 73 43 6c 69 65 6e 74 20 3d 20 31 0a 20 20 =.0.........self.isClient.=.1...
7e540 20 20 20 20 20 20 73 65 6c 66 2e 68 65 6c 6c 6f 44 6f 6e 65 20 3d 20 30 0a 20 20 20 20 20 20 20 ......self.helloDone.=.0........
7e560 20 23 20 57 65 20 63 61 6e 20 72 65 75 73 65 20 73 65 6c 66 2e 63 74 78 20 61 6e 64 20 69 74 20 .#.We.can.reuse.self.ctx.and.it.
7e580 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 will.be.deleted.automatically...
7e5a0 20 20 20 20 20 20 23 20 77 68 65 6e 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 20 64 69 65 73 0a ......#.when.this.instance.dies.
7e5c0 0a 20 20 20 20 64 65 66 20 73 74 61 72 74 54 4c 53 28 73 65 6c 66 2c 20 63 74 78 29 3a 0a 20 20 .....def.startTLS(self,.ctx):...
7e5e0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 74 61 72 74 20 53 53 4c 2f 54 4c 53 2e ......""".........Start.SSL/TLS.
7e600 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 63 61 6c 6c 65 64 2c 20 74 68 69 73 20 69 6e 73 .If.this.is.not.called,.this.ins
7e620 74 61 6e 63 65 20 6a 75 73 74 20 70 61 73 73 65 73 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 74 tance.just.passes.data.........t
7e640 68 72 6f 75 67 68 20 75 6e 74 6f 75 63 68 65 64 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 hrough.untouched.........."""...
7e660 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 69 67 6e 61 74 ......#.NOTE:.This.method.signat
7e680 75 72 65 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 73 74 61 72 74 54 4c 53 28 29 20 6d 65 ure.must.match.the.startTLS().me
7e6a0 74 68 6f 64 20 54 77 69 73 74 65 64 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 65 78 70 thod.Twisted.........#.......exp
7e6c0 65 63 74 73 20 74 72 61 6e 73 70 6f 72 74 73 20 74 6f 20 68 61 76 65 2e 20 54 68 69 73 20 77 69 ects.transports.to.have..This.wi
7e6e0 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 20 20 20 ll.be.called.automatically......
7e700 20 20 20 23 20 20 20 20 20 20 20 62 79 20 54 77 69 73 74 65 64 20 69 6e 20 53 54 41 52 54 54 4c ...#.......by.Twisted.in.STARTTL
7e720 53 20 73 69 74 75 61 74 69 6f 6e 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 77 69 74 68 20 53 S.situations,.for.example.with.S
7e740 4d 54 50 2e 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 74 6c 73 53 74 61 72 74 65 64 3a MTP..........if.self.tlsStarted:
7e760 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 78 63 65 70 74 69 6f 6e 28 27 54 4c .............raise.Exception('TL
7e780 53 20 61 6c 72 65 61 64 79 20 73 74 61 72 74 65 64 27 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c S.already.started')..........sel
7e7a0 66 2e 63 74 78 20 3d 20 63 74 78 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 74 65 72 6e f.ctx.=.ctx..........self.intern
7e7c0 61 6c 42 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f 5f 73 5f 62 69 6f 28 alBio.=.m2.bio_new(m2.bio_s_bio(
7e7e0 29 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 73 65 74 5f 77 72 69 74 65 5f 62 75 66 5f )).........m2.bio_set_write_buf_
7e800 73 69 7a 65 28 73 65 6c 66 2e 69 6e 74 65 72 6e 61 6c 42 69 6f 2c 20 30 29 0a 20 20 20 20 20 20 size(self.internalBio,.0).......
7e820 20 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f 20 3d 20 5f 42 69 6f 50 72 6f 78 79 28 6d 32 ..self.networkBio.=._BioProxy(m2
7e840 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f 5f 73 5f 62 69 6f 28 29 29 29 0a 20 20 20 20 20 20 .bio_new(m2.bio_s_bio())).......
7e860 20 20 6d 32 2e 62 69 6f 5f 73 65 74 5f 77 72 69 74 65 5f 62 75 66 5f 73 69 7a 65 28 73 65 6c 66 ..m2.bio_set_write_buf_size(self
7e880 2e 6e 65 74 77 6f 72 6b 42 69 6f 2e 5f 70 74 72 28 29 2c 20 30 29 0a 20 20 20 20 20 20 20 20 6d .networkBio._ptr(),.0).........m
7e8a0 32 2e 62 69 6f 5f 6d 61 6b 65 5f 62 69 6f 5f 70 61 69 72 28 73 65 6c 66 2e 69 6e 74 65 72 6e 61 2.bio_make_bio_pair(self.interna
7e8c0 6c 42 69 6f 2c 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 lBio,.self.networkBio._ptr())...
7e8e0 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 42 69 6f 20 3d 20 5f 42 69 6f 50 72 6f 78 79 28 6d .......self.sslBio.=._BioProxy(m
7e900 32 2e 62 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f 5f 66 5f 73 73 6c 28 29 29 29 0a 0a 20 20 20 20 2.bio_new(m2.bio_f_ssl()))......
7e920 20 20 20 20 73 65 6c 66 2e 73 73 6c 20 3d 20 5f 53 53 4c 50 72 6f 78 79 28 6d 32 2e 73 73 6c 5f ....self.ssl.=._SSLProxy(m2.ssl_
7e940 6e 65 77 28 73 65 6c 66 2e 63 74 78 2e 63 74 78 29 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 73 new(self.ctx.ctx))..........if.s
7e960 65 6c 66 2e 69 73 43 6c 69 65 6e 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c elf.isClient:.............m2.ssl
7e980 5f 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 _set_connect_state(self.ssl._ptr
7e9a0 28 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 ()).........else:.............m2
7e9c0 2e 73 73 6c 5f 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 28 73 65 6c 66 2e 73 73 6c 2e 5f .ssl_set_accept_state(self.ssl._
7e9e0 70 74 72 28 29 29 0a 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 73 65 74 5f 62 69 6f 28 73 ptr())..........m2.ssl_set_bio(s
7ea00 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 69 6e 74 65 72 6e 61 6c 42 69 6f elf.ssl._ptr(),.self.internalBio
7ea20 2c 20 73 65 6c 66 2e 69 6e 74 65 72 6e 61 6c 42 69 6f 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 ,.self.internalBio).........m2.b
7ea40 69 6f 5f 73 65 74 5f 73 73 6c 28 73 65 6c 66 2e 73 73 6c 42 69 6f 2e 5f 70 74 72 28 29 2c 20 73 io_set_ssl(self.sslBio._ptr(),.s
7ea60 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 2c 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 29 0a elf.ssl._ptr(),.m2.bio_noclose).
7ea80 0a 20 20 20 20 20 20 20 20 23 20 4e 65 65 64 20 74 68 69 73 20 66 6f 72 20 77 72 69 74 65 73 20 .........#.Need.this.for.writes.
7eaa0 74 68 61 74 20 61 72 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 42 49 4f 20 70 61 69 72 20 62 75 that.are.larger.than.BIO.pair.bu
7eac0 66 66 65 72 73 0a 20 20 20 20 20 20 20 20 6d 6f 64 65 20 3d 20 6d 32 2e 73 73 6c 5f 67 65 74 5f ffers.........mode.=.m2.ssl_get_
7eae0 6d 6f 64 65 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 6d 32 mode(self.ssl._ptr()).........m2
7eb00 2e 73 73 6c 5f 73 65 74 5f 6d 6f 64 65 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 2c 0a 20 .ssl_set_mode(self.ssl._ptr(),..
7eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 20 7c 0a 20 20 .......................mode.|...
7eb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 53 53 4c 5f 4d 4f 44 ......................m2.SSL_MOD
7eb60 45 5f 45 4e 41 42 4c 45 5f 50 41 52 54 49 41 4c 5f 57 52 49 54 45 20 7c 0a 20 20 20 20 20 20 20 E_ENABLE_PARTIAL_WRITE.|........
7eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 53 53 4c 5f 4d 4f 44 45 5f 41 43 43 .................m2.SSL_MODE_ACC
7eba0 45 50 54 5f 4d 4f 56 49 4e 47 5f 57 52 49 54 45 5f 42 55 46 46 45 52 29 0a 0a 20 20 20 20 20 20 EPT_MOVING_WRITE_BUFFER)........
7ebc0 20 20 73 65 6c 66 2e 74 6c 73 53 74 61 72 74 65 64 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 77 ..self.tlsStarted.=.1......def.w
7ebe0 72 69 74 65 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 rite(self,.data):.........#.type
7ec00 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 :.(bytes).->.None.........if.not
7ec20 20 73 65 6c 66 2e 74 6c 73 53 74 61 72 74 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72 .self.tlsStarted:.............Pr
7ec40 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 28 73 65 6c 66 2c 20 64 61 74 61 29 0a otocolWrapper.write(self,.data).
7ec60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 20 20 20 20 74 72 79 3a ............return..........try:
7ec80 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 72 79 70 74 65 64 44 61 74 61 20 3d 20 73 65 6c .............encryptedData.=.sel
7eca0 66 2e 5f 65 6e 63 72 79 70 74 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f f._encrypt(data).............Pro
7ecc0 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 28 73 65 6c 66 2c 20 65 6e 63 72 79 70 74 tocolWrapper.write(self,.encrypt
7ece0 65 64 44 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 6c 6c 6f 44 6f edData).............self.helloDo
7ed00 6e 65 20 3d 20 31 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 42 49 4f 2e 42 49 4f 45 72 72 ne.=.1.........except.BIO.BIOErr
7ed20 6f 72 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 65 65 20 68 74 74 70 3a or.as.e:.............#.See.http:
7ed40 2f 2f 77 77 77 2e 6f 70 65 6e 73 73 6c 2e 6f 72 67 2f 64 6f 63 73 2f 61 70 70 73 2f 76 65 72 69 //www.openssl.org/docs/apps/veri
7ed60 66 79 2e 68 74 6d 6c 23 44 49 41 47 4e 4f 53 54 49 43 53 0a 20 20 20 20 20 20 20 20 20 20 20 20 fy.html#DIAGNOSTICS.............
7ed80 23 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 73 20 72 65 74 75 72 6e 65 64 20 62 #.for.the.error.codes.returned.b
7eda0 79 20 53 53 4c 5f 67 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 2e 0a 20 20 20 20 20 20 20 y.SSL_get_verify_result.........
7edc0 20 20 20 20 20 65 2e 61 72 67 73 20 3d 20 28 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 65 72 69 66 79 .....e.args.=.(m2.ssl_get_verify
7ede0 5f 72 65 73 75 6c 74 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 29 2c 20 65 2e 61 72 67 73 _result(self.ssl._ptr()),.e.args
7ee00 5b 30 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 65 0a 0a 20 20 20 20 64 65 [0]).............raise.e......de
7ee20 66 20 77 72 69 74 65 53 65 71 75 65 6e 63 65 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 20 20 f.writeSequence(self,.data):....
7ee40 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 49 74 65 72 61 62 6c 65 5b 62 79 74 65 73 5d 29 20 2d .....#.type:.(Iterable[bytes]).-
7ee60 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 74 6c 73 53 74 >.None.........if.not.self.tlsSt
7ee80 61 72 74 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 arted:.............ProtocolWrapp
7eea0 65 72 2e 77 72 69 74 65 53 65 71 75 65 6e 63 65 28 73 65 6c 66 2c 20 62 27 27 2e 6a 6f 69 6e 28 er.writeSequence(self,.b''.join(
7eec0 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 20 data)).............return.......
7eee0 20 20 20 73 65 6c 66 2e 77 72 69 74 65 28 62 27 27 2e 6a 6f 69 6e 28 64 61 74 61 29 29 0a 0a 20 ...self.write(b''.join(data))...
7ef00 20 20 20 64 65 66 20 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 29 3a 0a 20 20 20 ...def.loseConnection(self):....
7ef20 20 20 20 20 20 23 20 58 58 58 20 44 6f 20 77 65 20 6e 65 65 64 20 74 6f 20 64 6f 20 6d 32 2e 73 .....#.XXX.Do.we.need.to.do.m2.s
7ef40 73 6c 5f 73 68 75 74 64 6f 77 6e 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 29 3f 0a 20 20 sl_shutdown(self.ssl._ptr())?...
7ef60 20 20 20 20 20 20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c 6f 73 65 43 6f 6e 6e 65 63 ......ProtocolWrapper.loseConnec
7ef80 74 69 6f 6e 28 73 65 6c 66 29 0a 0a 20 20 20 20 64 65 66 20 63 6f 6e 6e 65 63 74 69 6f 6e 4d 61 tion(self)......def.connectionMa
7efa0 64 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 de(self):.........ProtocolWrappe
7efc0 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4d 61 64 65 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 69 r.connectionMade(self).........i
7efe0 66 20 73 65 6c 66 2e 74 6c 73 53 74 61 72 74 65 64 20 61 6e 64 20 73 65 6c 66 2e 69 73 43 6c 69 f.self.tlsStarted.and.self.isCli
7f000 65 6e 74 20 61 6e 64 20 6e 6f 74 20 73 65 6c 66 2e 68 65 6c 6c 6f 44 6f 6e 65 3a 0a 20 20 20 20 ent.and.not.self.helloDone:.....
7f020 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 6c 69 65 6e 74 48 65 6c 6c 6f 28 29 0a 0a 20 20 20 ........self._clientHello().....
7f040 20 64 65 66 20 64 61 74 61 52 65 63 65 69 76 65 64 28 73 65 6c 66 2c 20 64 61 74 61 29 3a 0a 20 .def.dataReceived(self,.data):..
7f060 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 .......#.type:.(bytes).->.None..
7f080 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 74 6c 73 53 74 61 72 74 65 64 3a 0a 20 .......if.not.self.tlsStarted:..
7f0a0 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 64 61 74 61 52 ...........ProtocolWrapper.dataR
7f0c0 65 63 65 69 76 65 64 28 73 65 6c 66 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 eceived(self,.data).............
7f0e0 72 65 74 75 72 6e 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 63 72 79 70 74 65 64 20 2b return..........self.encrypted.+
7f100 3d 20 64 61 74 61 0a 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 =.data..........try:............
7f120 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 63 72 79 70 .while.1:.................decryp
7f140 74 65 64 44 61 74 61 20 3d 20 73 65 6c 66 2e 5f 64 65 63 72 79 70 74 28 29 0a 0a 20 20 20 20 20 tedData.=.self._decrypt().......
7f160 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 68 65 63 6b 28 29 0a 0a 20 20 20 20 20 20 ...........self._check()........
7f180 20 20 20 20 20 20 20 20 20 20 65 6e 63 72 79 70 74 65 64 44 61 74 61 20 3d 20 73 65 6c 66 2e 5f ..........encryptedData.=.self._
7f1a0 65 6e 63 72 79 70 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 74 6f 63 encrypt().................Protoc
7f1c0 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 28 73 65 6c 66 2c 20 65 6e 63 72 79 70 74 65 64 44 olWrapper.write(self,.encryptedD
7f1e0 61 74 61 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 74 6f 63 6f 6c 57 72 ata)..................ProtocolWr
7f200 61 70 70 65 72 2e 64 61 74 61 52 65 63 65 69 76 65 64 28 73 65 6c 66 2c 20 64 65 63 72 79 70 74 apper.dataReceived(self,.decrypt
7f220 65 64 44 61 74 61 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 65 63 72 edData)..................if.decr
7f240 79 70 74 65 64 44 61 74 61 20 3d 3d 20 62 27 27 20 61 6e 64 20 65 6e 63 72 79 70 74 65 64 44 61 yptedData.==.b''.and.encryptedDa
7f260 74 61 20 3d 3d 20 62 27 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 ta.==.b'':.....................b
7f280 72 65 61 6b 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 42 49 4f 2e 42 49 4f 45 72 72 6f 72 reak.........except.BIO.BIOError
7f2a0 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53 65 65 20 68 74 74 70 3a 2f 2f .as.e:.............#.See.http://
7f2c0 77 77 77 2e 6f 70 65 6e 73 73 6c 2e 6f 72 67 2f 64 6f 63 73 2f 61 70 70 73 2f 76 65 72 69 66 79 www.openssl.org/docs/apps/verify
7f2e0 2e 68 74 6d 6c 23 44 49 41 47 4e 4f 53 54 49 43 53 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 .html#DIAGNOSTICS.............#.
7f300 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 for.the.error.codes.returned.by.
7f320 53 53 4c 5f 67 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 2e 0a 20 20 20 20 20 20 20 20 20 SSL_get_verify_result...........
7f340 20 20 20 65 2e 61 72 67 73 20 3d 20 28 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 65 72 69 66 79 5f 72 ...e.args.=.(m2.ssl_get_verify_r
7f360 65 73 75 6c 74 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 29 29 2c 20 65 2e 61 72 67 73 5b 30 esult(self.ssl._ptr()),.e.args[0
7f380 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 65 0a 0a 20 20 20 20 64 65 66 20 ]).............raise.e......def.
7f3a0 63 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 73 74 28 73 65 6c 66 2c 20 72 65 61 73 6f 6e 29 3a 0a 20 20 connectionLost(self,.reason):...
7f3c0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 ......#.type:.(AnyStr).->.None..
7f3e0 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 50 72 6f 74 .......self.clear().........Prot
7f400 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 73 74 28 73 65 6c 66 2c ocolWrapper.connectionLost(self,
7f420 20 72 65 61 73 6f 6e 29 0a 0a 20 20 20 20 64 65 66 20 5f 63 68 65 63 6b 28 73 65 6c 66 29 3a 0a .reason)......def._check(self):.
7f440 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 63 68 65 63 6b 65 64 20 61 6e 64 20 ........if.not.self.checked.and.
7f460 6d 32 2e 73 73 6c 5f 69 73 5f 69 6e 69 74 5f 66 69 6e 69 73 68 65 64 28 73 65 6c 66 2e 73 73 6c m2.ssl_is_init_finished(self.ssl
7f480 2e 5f 70 74 72 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 35 30 39 20 3d 20 6d 32 2e ._ptr()):.............x509.=.m2.
7f4a0 73 73 6c 5f 67 65 74 5f 70 65 65 72 5f 63 65 72 74 28 73 65 6c 66 2e 73 73 6c 2e 5f 70 74 72 28 ssl_get_peer_cert(self.ssl._ptr(
7f4c0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 78 35 30 39 20 69 73 20 6e 6f 74 20 4e 6f )).............if.x509.is.not.No
7f4e0 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 35 30 39 20 3d 20 58 35 30 39 2e ne:.................x509.=.X509.
7f500 58 35 30 39 28 78 35 30 39 2c 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c X509(x509,.1).............if.sel
7f520 66 2e 69 73 43 6c 69 65 6e 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 f.isClient:.................host
7f540 20 3d 20 73 65 6c 66 2e 74 72 61 6e 73 70 6f 72 74 2e 61 64 64 72 5b 30 5d 0a 20 20 20 20 20 20 .=.self.transport.addr[0].......
7f560 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 ......else:.................host
7f580 20 3d 20 73 65 6c 66 2e 74 72 61 6e 73 70 6f 72 74 2e 67 65 74 50 65 65 72 28 29 2e 68 6f 73 74 .=.self.transport.getPeer().host
7f5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 70 6f 73 74 43 6f 6e .............if.not.self.postCon
7f5c0 6e 65 63 74 69 6f 6e 43 68 65 63 6b 28 78 35 30 39 2c 20 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 nectionCheck(x509,.host):.......
7f5e0 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 ..........raise.SSLVerificationE
7f600 72 72 6f 72 28 27 70 6f 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 68 65 63 6b 27 29 0a 20 20 rror('post.connection.check')...
7f620 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 65 64 20 3d 20 31 0a 0a 20 20 20 20 ..........self.checked.=.1......
7f640 64 65 66 20 5f 63 6c 69 65 6e 74 48 65 6c 6c 6f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 def._clientHello(self):.........
7f660 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 65 20 72 65 6c 79 20 6f 6e 20 4f 70 try:.............#.We.rely.on.Op
7f680 65 6e 53 53 4c 20 69 6d 70 6c 69 63 69 74 6c 79 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 63 enSSL.implicitly.starting.with.c
7f6a0 6c 69 65 6e 74 20 68 65 6c 6c 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 68 65 6e 20 77 lient.hello.............#.when.w
7f6c0 65 20 68 61 76 65 6e 27 74 20 79 65 74 20 65 73 74 61 62 6c 69 73 68 65 64 20 61 6e 20 53 53 4c e.haven't.yet.established.an.SSL
7f6e0 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 72 79 70 74 65 .connection.............encrypte
7f700 64 44 61 74 61 20 3d 20 73 65 6c 66 2e 5f 65 6e 63 72 79 70 74 28 63 6c 69 65 6e 74 48 65 6c 6c dData.=.self._encrypt(clientHell
7f720 6f 3d 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 o=1).............ProtocolWrapper
7f740 2e 77 72 69 74 65 28 73 65 6c 66 2c 20 65 6e 63 72 79 70 74 65 64 44 61 74 61 29 0a 20 20 20 20 .write(self,.encryptedData).....
7f760 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 6c 6c 6f 44 6f 6e 65 20 3d 20 31 0a 20 20 20 20 20 ........self.helloDone.=.1......
7f780 20 20 20 65 78 63 65 70 74 20 42 49 4f 2e 42 49 4f 45 72 72 6f 72 20 61 73 20 65 3a 0a 20 20 20 ...except.BIO.BIOError.as.e:....
7f7a0 20 20 20 20 20 20 20 20 20 23 20 53 65 65 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6f 70 65 6e 73 73 .........#.See.http://www.openss
7f7c0 6c 2e 6f 72 67 2f 64 6f 63 73 2f 61 70 70 73 2f 76 65 72 69 66 79 2e 68 74 6d 6c 23 44 49 41 47 l.org/docs/apps/verify.html#DIAG
7f7e0 4e 4f 53 54 49 43 53 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66 6f 72 20 74 68 65 20 65 72 NOSTICS.............#.for.the.er
7f800 72 6f 72 20 63 6f 64 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 53 53 4c 5f 67 65 74 5f 76 65 ror.codes.returned.by.SSL_get_ve
7f820 72 69 66 79 5f 72 65 73 75 6c 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 2e 61 72 67 73 20 rify_result..............e.args.
7f840 3d 20 28 6d 32 2e 73 73 6c 5f 67 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 28 73 65 6c 66 =.(m2.ssl_get_verify_result(self
7f860 2e 73 73 6c 2e 5f 70 74 72 28 29 29 2c 20 65 2e 61 72 67 73 5b 30 5d 29 0a 20 20 20 20 20 20 20 .ssl._ptr()),.e.args[0])........
7f880 20 20 20 20 20 72 61 69 73 65 20 65 0a 0a 20 20 20 20 23 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e .....raise.e......#.Optimization
7f8a0 73 20 74 6f 20 72 65 64 75 63 65 20 61 74 74 72 69 62 75 74 65 20 61 63 63 65 73 73 65 73 0a 0a s.to.reduce.attribute.accesses..
7f8c0 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 67 65 74 5f 77 72 5f 67 75 ....@property.....def._get_wr_gu
7f8e0 61 72 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 ar_ssl(self):.........#.type:.()
7f900 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 5d 2c 20 69 6e 74 5d 0a 20 20 20 20 20 20 20 20 22 22 .->.Callable[[],.int].........""
7f920 22 52 65 74 75 72 6e 20 6d 61 78 2e 20 6c 65 6e 67 74 68 20 6f 66 20 64 61 74 61 20 63 61 6e 20 "Return.max..length.of.data.can.
7f940 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 42 49 4f 2e 0a 0a 20 20 20 20 20 20 20 20 be.written.to.the.BIO...........
7f960 57 72 69 74 65 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68 69 73 20 76 61 6c 75 65 20 77 69 Writes.larger.than.this.value.wi
7f980 6c 6c 20 72 65 74 75 72 6e 20 61 20 76 61 6c 75 65 20 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 42 ll.return.a.value.from.........B
7f9a0 49 4f 5f 77 72 69 74 65 28 29 20 6c 65 73 73 20 74 68 61 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 IO_write().less.than.the.amount.
7f9c0 72 65 71 75 65 73 74 65 64 20 6f 72 20 69 66 20 74 68 65 20 62 75 66 66 65 72 20 69 73 0a 20 20 requested.or.if.the.buffer.is...
7f9e0 20 20 20 20 20 20 66 75 6c 6c 20 72 65 71 75 65 73 74 20 61 20 72 65 74 72 79 2e 0a 20 20 20 20 ......full.request.a.retry......
7fa00 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d ....""".........return.partial(m
7fa20 32 2e 62 69 6f 5f 63 74 72 6c 5f 67 65 74 5f 77 72 69 74 65 5f 67 75 61 72 61 6e 74 65 65 2c 0a 2.bio_ctrl_get_write_guarantee,.
7fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 73 6c 42 .......................self.sslB
7fa60 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 io._ptr())......@property.....de
7fa80 66 20 5f 67 65 74 5f 77 72 5f 67 75 61 72 5f 6e 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 f._get_wr_guar_net(self):.......
7faa0 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 5d 2c 20 69 6e 74 ..#.type:.().->.Callable[[],.int
7fac0 5d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d 32 2e 62 69 6f 5f ].........return.partial(m2.bio_
7fae0 63 74 72 6c 5f 67 65 74 5f 77 72 69 74 65 5f 67 75 61 72 61 6e 74 65 65 2c 0a 20 20 20 20 20 20 ctrl_get_write_guarantee,.......
7fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f .................self.networkBio
7fb20 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 ._ptr())......@property.....def.
7fb40 5f 73 68 6f 75 64 5f 72 65 74 72 79 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 _shoud_retry_ssl(self):.........
7fb60 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 5d 2c 20 69 6e 74 5d 0a #.type:.().->.Callable[[],.int].
7fb80 20 20 20 20 20 20 20 20 23 20 42 49 4f 5f 73 68 6f 75 6c 64 5f 72 65 74 72 79 28 29 20 69 73 20 ........#.BIO_should_retry().is.
7fba0 74 72 75 65 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74 68 61 74 20 70 72 6f 64 75 63 65 64 20 74 true.if.the.call.that.produced.t
7fbc0 68 69 73 0a 20 20 20 20 20 20 20 20 23 20 63 6f 6e 64 69 74 69 6f 6e 20 73 68 6f 75 6c 64 20 74 his.........#.condition.should.t
7fbe0 68 65 6e 20 62 65 20 72 65 74 72 69 65 64 20 61 74 20 61 20 6c 61 74 65 72 20 74 69 6d 65 2e 0a hen.be.retried.at.a.later.time..
7fc00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d 32 2e 62 69 6f 5f 73 68 ........return.partial(m2.bio_sh
7fc20 6f 75 6c 64 5f 72 65 74 72 79 2c 20 73 65 6c 66 2e 73 73 6c 42 69 6f 2e 5f 70 74 72 28 29 29 0a ould_retry,.self.sslBio._ptr()).
7fc40 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 73 68 6f 75 64 5f 72 65 .....@property.....def._shoud_re
7fc60 74 72 79 5f 6e 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 try_net(self):.........#.type:.(
7fc80 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 5d 2c 20 69 6e 74 5d 0a 20 20 20 20 20 20 20 20 72 ).->.Callable[[],.int].........r
7fca0 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d 32 2e 62 69 6f 5f 73 68 6f 75 6c 64 5f 72 65 74 72 eturn.partial(m2.bio_should_retr
7fcc0 79 2c 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 y,.self.networkBio._ptr())......
7fce0 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 63 74 72 6c 5f 70 65 6e 64 5f 73 73 6c @property.....def._ctrl_pend_ssl
7fd00 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 43 61 (self):.........#.type:.().->.Ca
7fd20 6c 6c 61 62 6c 65 5b 5b 5d 2c 20 69 6e 74 5d 0a 20 20 20 20 20 20 20 20 23 20 73 69 7a 65 5f 74 llable[[],.int].........#.size_t
7fd40 20 42 49 4f 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 28 42 49 4f 20 2a 62 29 3b 0a 20 20 20 20 20 .BIO_ctrl_pending(BIO.*b);......
7fd60 20 20 20 23 20 42 49 4f 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 28 29 20 72 65 74 75 72 6e 20 74 ...#.BIO_ctrl_pending().return.t
7fd80 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 65 6e 64 69 6e 67 20 63 68 61 72 61 63 74 65 72 73 20 he.number.of.pending.characters.
7fda0 69 6e 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 42 49 4f 73 20 72 65 61 64 20 61 6e 64 20 77 in.........#.the.BIOs.read.and.w
7fdc0 72 69 74 65 20 62 75 66 66 65 72 73 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 rite.buffers..........return.par
7fde0 74 69 61 6c 28 6d 32 2e 62 69 6f 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 2c 20 73 65 6c 66 2e 73 tial(m2.bio_ctrl_pending,.self.s
7fe00 73 6c 42 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 slBio._ptr())......@property....
7fe20 20 64 65 66 20 5f 63 74 72 6c 5f 70 65 6e 64 5f 6e 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 .def._ctrl_pend_net(self):......
7fe40 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 5d 2c 20 69 6e ...#.type:.().->.Callable[[],.in
7fe60 74 5d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d 32 2e 62 69 6f t].........return.partial(m2.bio
7fe80 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 2c 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f 2e 5f _ctrl_pending,.self.networkBio._
7fea0 70 74 72 28 29 29 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 77 ptr())......@property.....def._w
7fec0 72 69 74 65 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 rite_ssl(self):.........#.type:.
7fee0 28 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 62 79 74 65 73 5d 2c 20 69 6e 74 5d 0a 20 20 20 ().->.Callable[[bytes],.int]....
7ff00 20 20 20 20 20 23 20 41 6c 6c 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 .....#.All.these.functions.retur
7ff20 6e 20 65 69 74 68 65 72 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 0a 20 20 20 20 n.either.the.amount.of.data.....
7ff40 20 20 20 20 23 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 72 65 61 64 20 6f 72 20 77 72 69 74 74 ....#.successfully.read.or.writt
7ff60 65 6e 20 28 69 66 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 0a 20 20 20 20 20 en.(if.the.return.value.is......
7ff80 20 20 20 23 20 70 6f 73 69 74 69 76 65 29 20 6f 72 20 74 68 61 74 20 6e 6f 20 64 61 74 61 20 77 ...#.positive).or.that.no.data.w
7ffa0 61 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 72 65 61 64 20 6f 72 20 77 72 69 74 74 65 6e 0a as.successfully.read.or.written.
7ffc0 20 20 20 20 20 20 20 20 23 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 30 20 6f 72 20 ........#.if.the.result.is.0.or.
7ffe0 2d 31 2e 20 49 66 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 2d 32 20 74 68 -1..If.the.return.value.is.-2.th
80000 65 6e 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 6e 6f en.........#.the.operation.is.no
80020 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 74 68 65 20 73 70 65 63 69 66 69 63 20 42 49 t.implemented.in.the.specific.BI
80040 4f 20 74 79 70 65 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d O.type..........return.partial(m
80060 32 2e 62 69 6f 5f 77 72 69 74 65 2c 20 73 65 6c 66 2e 73 73 6c 42 69 6f 2e 5f 70 74 72 28 29 29 2.bio_write,.self.sslBio._ptr())
80080 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 77 72 69 74 65 5f 6e ......@property.....def._write_n
800a0 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 et(self):.........#.type:.().->.
800c0 43 61 6c 6c 61 62 6c 65 5b 5b 62 79 74 65 73 5d 2c 20 69 6e 74 5d 0a 20 20 20 20 20 20 20 20 72 Callable[[bytes],.int].........r
800e0 65 74 75 72 6e 20 70 61 72 74 69 61 6c 28 6d 32 2e 62 69 6f 5f 77 72 69 74 65 2c 20 73 65 6c 66 eturn.partial(m2.bio_write,.self
80100 2e 6e 65 74 77 6f 72 6b 42 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 .networkBio._ptr())......@proper
80120 74 79 0a 20 20 20 20 64 65 66 20 5f 72 65 61 64 5f 73 73 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 ty.....def._read_ssl(self):.....
80140 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 69 6e 74 5d ....#.type:.().->.Callable[[int]
80160 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 5d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ,.Optional[bytes]].........retur
80180 6e 20 70 61 72 74 69 61 6c 28 6d 32 2e 62 69 6f 5f 72 65 61 64 2c 20 73 65 6c 66 2e 73 73 6c 42 n.partial(m2.bio_read,.self.sslB
801a0 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 io._ptr())......@property.....de
801c0 66 20 5f 72 65 61 64 5f 6e 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 f._read_net(self):.........#.typ
801e0 65 3a 20 28 29 20 2d 3e 20 43 61 6c 6c 61 62 6c 65 5b 5b 69 6e 74 5d 2c 20 4f 70 74 69 6f 6e 61 e:.().->.Callable[[int],.Optiona
80200 6c 5b 62 79 74 65 73 5d 5d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c l[bytes]].........return.partial
80220 28 6d 32 2e 62 69 6f 5f 72 65 61 64 2c 20 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 69 6f 2e 5f 70 (m2.bio_read,.self.networkBio._p
80240 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 2c 20 64 61 tr())......def._encrypt(self,.da
80260 74 61 3d 62 27 27 2c 20 63 6c 69 65 6e 74 48 65 6c 6c 6f 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 ta=b'',.clientHello=0):.........
80280 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 #.type:.(bytes,.int).->.bytes...
802a0 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 3a 0a 20 ......""".........:param.data:..
802c0 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 6c 69 65 6e 74 48 65 6c 6c 6f 3a 0a 20 20 20 20 20 .......:param.clientHello:......
802e0 20 20 20 3a 72 65 74 75 72 6e 3a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 ...:return:.........""".........
80300 65 6e 63 72 79 70 74 65 64 44 61 74 61 20 3d 20 62 27 27 0a 20 20 20 20 20 20 20 20 73 65 6c 66 encryptedData.=.b''.........self
80320 2e 64 61 74 61 20 2b 3d 20 64 61 74 61 0a 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 31 3a 0a .data.+=.data..........while.1:.
80340 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 6c 66 2e 5f 67 65 74 5f 77 72 5f 67 75 61 ............if.(self._get_wr_gua
80360 72 5f 73 73 6c 28 29 20 3e 20 30 20 61 6e 64 20 73 65 6c 66 2e 64 61 74 61 20 21 3d 20 62 27 27 r_ssl().>.0.and.self.data.!=.b''
80380 29 20 6f 72 20 63 6c 69 65 6e 74 48 65 6c 6c 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).or.clientHello:...............
803a0 20 20 72 20 3d 20 73 65 6c 66 2e 5f 77 72 69 74 65 5f 73 73 6c 28 73 65 6c 66 2e 64 61 74 61 29 ..r.=.self._write_ssl(self.data)
803c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 20 3c 3d 20 30 3a 0a 20 20 20 20 .................if.r.<=.0:.....
803e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 5f 73 68 6f ................if.not.self._sho
80400 75 64 5f 72 65 74 72 79 5f 73 73 6c 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ud_retry_ssl():.................
80420 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 ........raise.IOError(..........
80440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 44 61 74 61 20 6c 65 66 74 20 74 ...................('Data.left.t
80460 6f 20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 7b 7d 2c 20 27 20 2b 0a 20 20 20 20 20 20 20 20 o.be.written.to.{},.'.+.........
80480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 62 75 74 20 63 61 6e 6e 6f 74 .....................'but.cannot
804a0 20 72 65 74 72 79 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 21 27 29 2e 66 6f 72 6d 61 74 28 .retry.SSL.connection!').format(
804c0 73 65 6c 66 2e 73 73 6c 42 69 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c self.sslBio)).................el
804e0 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 73 se:.....................assert.s
80500 65 6c 66 2e 63 68 65 63 6b 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elf.checked.....................
80520 73 65 6c 66 2e 64 61 74 61 20 3d 20 73 65 6c 66 2e 64 61 74 61 5b 72 3a 5d 0a 0a 20 20 20 20 20 self.data.=.self.data[r:].......
80540 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 20 3d 20 73 65 6c 66 2e 5f 63 74 72 6c 5f 70 65 6e 64 .......pending.=.self._ctrl_pend
80560 5f 6e 65 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 65 6e 64 69 6e 67 3a 0a 20 _net().............if.pending:..
80580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 20 3d 20 73 65 6c 66 2e 5f 72 65 61 64 5f 6e 65 ...............d.=.self._read_ne
805a0 74 28 70 65 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 20 t(pending).................if.d.
805c0 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 20 20 23 20 54 68 69 73 20 69 73 20 73 74 72 61 6e 67 65 2c is.not.None:..#.This.is.strange,
805e0 20 62 75 74 20 64 20 63 61 6e 20 62 65 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .but.d.can.be.None..............
80600 20 20 20 20 20 20 20 65 6e 63 72 79 70 74 65 64 44 61 74 61 20 2b 3d 20 64 0a 20 20 20 20 20 20 .......encryptedData.+=.d.......
80620 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........else:.................
80640 20 20 20 20 61 73 73 65 72 74 28 73 65 6c 66 2e 5f 73 68 6f 75 64 5f 72 65 74 72 79 5f 6e 65 74 ....assert(self._shoud_retry_net
80660 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 ()).............else:...........
80680 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 6e 63 72 79 ......break.........return.encry
806a0 70 74 65 64 44 61 74 61 0a 0a 20 20 20 20 64 65 66 20 5f 64 65 63 72 79 70 74 28 73 65 6c 66 2c ptedData......def._decrypt(self,
806c0 20 64 61 74 61 3d 62 27 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 .data=b''):.........#.type:.(byt
806e0 65 73 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 63 72 79 70 es).->.bytes.........self.encryp
80700 74 65 64 20 2b 3d 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 64 65 63 72 79 70 74 65 64 44 61 74 ted.+=.data.........decryptedDat
80720 61 20 3d 20 62 27 27 0a 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 a.=.b''..........while.1:.......
80740 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 67 65 74 5f 77 72 5f 67 75 61 72 5f 73 73 6c 28 29 ......if.self._get_wr_guar_ssl()
80760 20 3e 20 30 20 61 6e 64 20 73 65 6c 66 2e 65 6e 63 72 79 70 74 65 64 20 21 3d 20 62 27 27 3a 0a .>.0.and.self.encrypted.!=.b'':.
80780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 20 3d 20 73 65 6c 66 2e 5f 77 72 69 74 65 5f ................r.=.self._write_
807a0 6e 65 74 28 73 65 6c 66 2e 65 6e 63 72 79 70 74 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 net(self.encrypted).............
807c0 20 20 20 20 69 66 20 72 20 3c 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....if.r.<=.0:..................
807e0 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 5f 73 68 6f 75 64 5f 72 65 74 72 79 5f 6e 65 74 28 ...if.not.self._shoud_retry_net(
80800 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 ):.........................raise
80820 20 49 4f 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .IOError(.......................
80840 20 20 20 20 20 20 28 27 44 61 74 61 20 6c 65 66 74 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 ......('Data.left.to.be.written.
80860 74 6f 20 7b 7d 2c 20 27 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to.{},.'.+......................
80880 20 20 20 20 20 20 20 20 27 62 75 74 20 63 61 6e 6e 6f 74 20 72 65 74 72 79 20 53 53 4c 20 63 6f ........'but.cannot.retry.SSL.co
808a0 6e 6e 65 63 74 69 6f 6e 21 27 29 2e 66 6f 72 6d 61 74 28 73 65 6c 66 2e 6e 65 74 77 6f 72 6b 42 nnection!').format(self.networkB
808c0 69 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 io)).................else:......
808e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 6e 63 72 79 70 74 65 64 20 3d 20 ...............self.encrypted.=.
80900 73 65 6c 66 2e 65 6e 63 72 79 70 74 65 64 5b 72 3a 5d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 self.encrypted[r:]..............
80920 70 65 6e 64 69 6e 67 20 3d 20 73 65 6c 66 2e 5f 63 74 72 6c 5f 70 65 6e 64 5f 73 73 6c 28 29 0a pending.=.self._ctrl_pend_ssl().
80940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 65 6e 64 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 ............if.pending:.........
80960 20 20 20 20 20 20 20 20 64 20 3d 20 73 65 6c 66 2e 5f 72 65 61 64 5f 73 73 6c 28 70 65 6e 64 69 ........d.=.self._read_ssl(pendi
80980 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 20 69 73 20 6e 6f 74 20 ng).................if.d.is.not.
809a0 4e 6f 6e 65 3a 20 20 23 20 54 68 69 73 20 69 73 20 73 74 72 61 6e 67 65 2c 20 62 75 74 20 64 20 None:..#.This.is.strange,.but.d.
809c0 63 61 6e 20 62 65 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 can.be.None.....................
809e0 64 65 63 72 79 70 74 65 64 44 61 74 61 20 2b 3d 20 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 decryptedData.+=.d..............
80a00 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 ...else:.....................ass
80a20 65 72 74 28 73 65 6c 66 2e 5f 73 68 6f 75 64 5f 72 65 74 72 79 5f 73 73 6c 28 29 29 0a 20 20 20 ert(self._shoud_retry_ssl())....
80a40 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 .........else:.................b
80a60 72 65 61 6b 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 72 79 70 74 65 64 44 61 reak..........return.decryptedDa
80a80 74 61 0a 94 7d 94 28 8c 22 5f 61 6c 77 61 79 73 53 75 63 63 65 65 64 73 50 6f 73 74 43 6f 6e 6e ta..}.(."_alwaysSucceedsPostConn
80aa0 65 63 74 69 6f 6e 43 68 65 63 6b 94 6a 74 1f 00 00 4b 22 4b 23 87 94 8c 0a 63 6f 6e 6e 65 63 74 ectionCheck.jt...K"K#....connect
80ac0 53 53 4c 94 6a 74 1f 00 00 4b 26 4b 38 87 94 8c 0a 63 6f 6e 6e 65 63 74 54 43 50 94 6a 74 1f 00 SSL.jt...K&K8....connectTCP.jt..
80ae0 00 4b 3b 4b 4e 87 94 8c 09 6c 69 73 74 65 6e 53 53 4c 94 6a 74 1f 00 00 4b 51 4b 61 87 94 8c 09 .K;KN....listenSSL.jt...KQKa....
80b00 6c 69 73 74 65 6e 54 43 50 94 6a 74 1f 00 00 4b 64 4b 76 87 94 8c 12 5f 42 69 6f 50 72 6f 78 79 listenTCP.jt...KdKv...._BioProxy
80b20 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 81 4b 82 87 94 8c 0e 5f 42 69 6f 50 72 6f 78 79 .__init__.jt...K.K....._BioProxy
80b40 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 84 4b 85 87 94 8c 11 5f 42 69 6f 50 72 6f 78 79 2e 5f 5f 64 ._ptr.jt...K.K....._BioProxy.__d
80b60 65 6c 5f 5f 94 6a 74 1f 00 00 4b 87 4b 89 87 94 8c 09 5f 42 69 6f 50 72 6f 78 79 94 6a 7d 1f 00 el__.jt...K.K....._BioProxy.j}..
80b80 00 4b 79 4b 89 87 94 8c 12 5f 53 53 4c 50 72 6f 78 79 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 .KyK....._SSLProxy.__init__.jt..
80ba0 00 4b 94 4b 95 87 94 8c 0e 5f 53 53 4c 50 72 6f 78 79 2e 5f 70 74 72 94 6a 74 1f 00 00 4b 97 4b .K.K....._SSLProxy._ptr.jt...K.K
80bc0 98 87 94 8c 11 5f 53 53 4c 50 72 6f 78 79 2e 5f 5f 64 65 6c 5f 5f 94 6a 74 1f 00 00 4b 9a 4b 9c ....._SSLProxy.__del__.jt...K.K.
80be0 87 94 8c 09 5f 53 53 4c 50 72 6f 78 79 94 6a 7d 1f 00 00 4b 8c 4b 9c 87 94 8c 1b 54 4c 53 50 72 ...._SSLProxy.j}...K.K.....TLSPr
80c00 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b a8 4b d3 otocolWrapper.__init__.jt...K.K.
80c20 87 94 8c 18 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6c 65 61 72 94 6a 74 1f ....TLSProtocolWrapper.clear.jt.
80c40 00 00 4b d5 4b e3 87 94 8c 1b 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 73 74 61 ..K.K.....TLSProtocolWrapper.sta
80c60 72 74 54 4c 53 94 6a 74 1f 00 00 4b e7 4d 0d 01 87 94 8c 18 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 rtTLS.jt...K.M......TLSProtocolW
80c80 72 61 70 70 65 72 2e 77 72 69 74 65 94 6a 74 1f 00 00 4d 0f 01 4d 1d 01 87 94 8c 20 54 4c 53 50 rapper.write.jt...M..M......TLSP
80ca0 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 53 65 71 75 65 6e 63 65 94 6a 74 1f rotocolWrapper.writeSequence.jt.
80cc0 00 00 4d 1f 01 4d 25 01 87 94 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c ..M..M%....!TLSProtocolWrapper.l
80ce0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 74 1f 00 00 4d 27 01 4d 29 01 87 94 8c 21 54 4c 53 oseConnection.jt...M'.M)....!TLS
80d00 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4d 61 64 65 94 6a ProtocolWrapper.connectionMade.j
80d20 74 1f 00 00 4d 2b 01 4d 2e 01 87 94 8c 1f 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 t...M+.M......TLSProtocolWrapper
80d40 2e 64 61 74 61 52 65 63 65 69 76 65 64 94 6a 74 1f 00 00 4d 30 01 4d 49 01 87 94 8c 21 54 4c 53 .dataReceived.jt...M0.MI....!TLS
80d60 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 73 74 94 6a ProtocolWrapper.connectionLost.j
80d80 74 1f 00 00 4d 4b 01 4d 4e 01 87 94 8c 19 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 t...MK.MN.....TLSProtocolWrapper
80da0 2e 5f 63 68 65 63 6b 94 6a 74 1f 00 00 4d 50 01 4d 5b 01 87 94 8c 1f 54 4c 53 50 72 6f 74 6f 63 ._check.jt...MP.M[.....TLSProtoc
80dc0 6f 6c 57 72 61 70 70 65 72 2e 5f 63 6c 69 65 6e 74 48 65 6c 6c 6f 94 6a 74 1f 00 00 4d 5d 01 4d olWrapper._clientHello.jt...M].M
80de0 68 01 87 94 8c 23 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 67 65 74 5f 77 72 h....#TLSProtocolWrapper._get_wr
80e00 5f 67 75 61 72 5f 73 73 6c 94 6a 74 1f 00 00 4d 6c 01 4d 76 01 87 94 8c 23 54 4c 53 50 72 6f 74 _guar_ssl.jt...Ml.Mv....#TLSProt
80e20 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 67 65 74 5f 77 72 5f 67 75 61 72 5f 6e 65 74 94 6a 74 1f ocolWrapper._get_wr_guar_net.jt.
80e40 00 00 4d 78 01 4d 7c 01 87 94 8c 23 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f ..Mx.M|....#TLSProtocolWrapper._
80e60 73 68 6f 75 64 5f 72 65 74 72 79 5f 73 73 6c 94 6a 74 1f 00 00 4d 7e 01 4d 83 01 87 94 8c 23 54 shoud_retry_ssl.jt...M~.M.....#T
80e80 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 73 68 6f 75 64 5f 72 65 74 72 79 5f 6e LSProtocolWrapper._shoud_retry_n
80ea0 65 74 94 6a 74 1f 00 00 4d 85 01 4d 88 01 87 94 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 et.jt...M..M.....!TLSProtocolWra
80ec0 70 70 65 72 2e 5f 63 74 72 6c 5f 70 65 6e 64 5f 73 73 6c 94 6a 74 1f 00 00 4d 8a 01 4d 90 01 87 pper._ctrl_pend_ssl.jt...M..M...
80ee0 94 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 63 74 72 6c 5f 70 65 6e 64 ..!TLSProtocolWrapper._ctrl_pend
80f00 5f 6e 65 74 94 6a 74 1f 00 00 4d 92 01 4d 95 01 87 94 8c 1d 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 _net.jt...M..M......TLSProtocolW
80f20 72 61 70 70 65 72 2e 5f 77 72 69 74 65 5f 73 73 6c 94 6a 74 1f 00 00 4d 97 01 4d 9f 01 87 94 8c rapper._write_ssl.jt...M..M.....
80f40 1d 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 77 72 69 74 65 5f 6e 65 74 94 6a .TLSProtocolWrapper._write_net.j
80f60 74 1f 00 00 4d a1 01 4d a4 01 87 94 8c 1c 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 t...M..M......TLSProtocolWrapper
80f80 2e 5f 72 65 61 64 5f 73 73 6c 94 6a 74 1f 00 00 4d a6 01 4d a9 01 87 94 8c 1c 54 4c 53 50 72 6f ._read_ssl.jt...M..M......TLSPro
80fa0 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 72 65 61 64 5f 6e 65 74 94 6a 74 1f 00 00 4d ab 01 4d tocolWrapper._read_net.jt...M..M
80fc0 ae 01 87 94 8c 1b 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 65 6e 63 72 79 70 ......TLSProtocolWrapper._encryp
80fe0 74 94 6a 74 1f 00 00 4d b0 01 4d cf 01 87 94 8c 1b 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 t.jt...M..M......TLSProtocolWrap
81000 70 65 72 2e 5f 64 65 63 72 79 70 74 94 6a 74 1f 00 00 4d d1 01 4d eb 01 87 94 8c 12 54 4c 53 50 per._decrypt.jt...M..M......TLSP
81020 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 6a 7d 1f 00 00 4b 9f 4d eb 01 87 94 75 7d 94 28 8c rotocolWrapper.j}...K.M....u}.(.
81040 0a 63 6f 6e 6e 65 63 74 53 53 4c 94 6a 5c 02 00 00 8c 0a 63 6f 6e 6e 65 63 74 54 43 50 94 6a 5c .connectSSL.j\.....connectTCP.j\
81060 02 00 00 8c 09 6c 69 73 74 65 6e 53 53 4c 94 6a 5c 02 00 00 8c 09 6c 69 73 74 65 6e 54 43 50 94 .....listenSSL.j\.....listenTCP.
81080 6a 5c 02 00 00 8c 12 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 6a 5c 02 00 00 8c j\.....TLSProtocolWrapper.j\....
810a0 18 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6c 65 61 72 94 6a 5c 02 00 00 8c .TLSProtocolWrapper.clear.j\....
810c0 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4c 6f !TLSProtocolWrapper.connectionLo
810e0 73 74 94 6a 5c 02 00 00 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e st.j\....!TLSProtocolWrapper.con
81100 6e 65 63 74 69 6f 6e 4d 61 64 65 94 6a 5c 02 00 00 8c 1f 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 nectionMade.j\.....TLSProtocolWr
81120 61 70 70 65 72 2e 64 61 74 61 52 65 63 65 69 76 65 64 94 6a 5c 02 00 00 8c 21 54 4c 53 50 72 6f apper.dataReceived.j\....!TLSPro
81140 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 5c 02 00 tocolWrapper.loseConnection.j\..
81160 00 8c 1b 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 73 74 61 72 74 54 4c 53 94 6a ...TLSProtocolWrapper.startTLS.j
81180 5c 02 00 00 8c 18 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 94 6a \.....TLSProtocolWrapper.write.j
811a0 5c 02 00 00 8c 20 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 53 65 \.....TLSProtocolWrapper.writeSe
811c0 71 75 65 6e 63 65 94 6a 5c 02 00 00 75 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 quence.j\...u.#M2Crypto.SSL.Twis
811e0 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 74 94 8c 0f 4d 32 43 72 79 70 74 6f 2e tedProtocolWrapper.t...M2Crypto.
81200 53 53 4c 2e 63 62 94 28 58 a7 0a 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 SSL.cb.(X....from.__future__.imp
81220 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 53 53 4c 20 63 61 6c 6c ort.absolute_import.."""SSL.call
81240 62 61 63 6b 73 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e backs..Copyright.(c).1999-2003.N
81260 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 g.Pheng.Siong..All.rights.reserv
81280 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 73 79 73 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 ed."""..import.sys..from.M2Crypt
812a0 6f 20 69 6d 70 6f 72 74 20 6d 32 2c 20 75 74 69 6c 0a 69 66 20 75 74 69 6c 2e 70 79 32 37 70 6c o.import.m2,.util.if.util.py27pl
812c0 75 73 3a 0a 20 20 20 20 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 us:.....from.typing.import.Any,.
812e0 4c 69 73 74 20 20 23 20 6e 6f 71 61 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 75 6e 6b 6e 6f 77 List..#.noqa..__all__.=.['unknow
81300 6e 5f 69 73 73 75 65 72 27 2c 20 27 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f n_issuer',.'ssl_verify_callback_
81320 73 74 75 62 27 2c 20 27 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 27 2c 0a 20 20 stub',.'ssl_verify_callback',...
81340 20 20 20 20 20 20 20 20 20 27 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 61 6c .........'ssl_verify_callback_al
81360 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 27 2c 20 27 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 low_unknown_ca',.'ssl_info_callb
81380 61 63 6b 27 5d 0a 0a 0a 64 65 66 20 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f ack']...def.ssl_verify_callback_
813a0 73 74 75 62 28 73 73 6c 5f 63 74 78 5f 70 74 72 2c 20 78 35 30 39 5f 70 74 72 2c 20 65 72 72 6e stub(ssl_ctx_ptr,.x509_ptr,.errn
813c0 75 6d 2c 20 65 72 72 64 65 70 74 68 2c 20 6f 6b 29 3a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 um,.errdepth,.ok):.....#.Depreca
813e0 74 65 64 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 6b 0a 0a 75 6e 6b 6e 6f 77 6e 5f 69 73 73 75 65 ted.....return.ok..unknown_issue
81400 72 20 3d 20 5b 0a 20 20 20 20 6d 32 2e 58 35 30 39 5f 56 5f 45 52 52 5f 44 45 50 54 48 5f 5a 45 r.=.[.....m2.X509_V_ERR_DEPTH_ZE
81420 52 4f 5f 53 45 4c 46 5f 53 49 47 4e 45 44 5f 43 45 52 54 2c 0a 20 20 20 20 6d 32 2e 58 35 30 39 RO_SELF_SIGNED_CERT,.....m2.X509
81440 5f 56 5f 45 52 52 5f 55 4e 41 42 4c 45 5f 54 4f 5f 47 45 54 5f 49 53 53 55 45 52 5f 43 45 52 54 _V_ERR_UNABLE_TO_GET_ISSUER_CERT
81460 5f 4c 4f 43 41 4c 4c 59 2c 0a 20 20 20 20 6d 32 2e 58 35 30 39 5f 56 5f 45 52 52 5f 55 4e 41 42 _LOCALLY,.....m2.X509_V_ERR_UNAB
81480 4c 45 5f 54 4f 5f 56 45 52 49 46 59 5f 4c 45 41 46 5f 53 49 47 4e 41 54 55 52 45 2c 0a 20 20 20 LE_TO_VERIFY_LEAF_SIGNATURE,....
814a0 20 6d 32 2e 58 35 30 39 5f 56 5f 45 52 52 5f 43 45 52 54 5f 55 4e 54 52 55 53 54 45 44 2c 0a 5d .m2.X509_V_ERR_CERT_UNTRUSTED,.]
814c0 0a 0a 0a 64 65 66 20 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 28 73 73 6c 5f 63 ...def.ssl_verify_callback(ssl_c
814e0 74 78 5f 70 74 72 2c 20 78 35 30 39 5f 70 74 72 2c 20 65 72 72 6e 75 6d 2c 20 65 72 72 64 65 70 tx_ptr,.x509_ptr,.errnum,.errdep
81500 74 68 2c 20 6f 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 62 79 74 th,.ok):.....#.type:.(bytes,.byt
81520 65 73 2c 20 69 6e 74 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 23 20 es,.int,.int,.int).->.int.....#.
81540 44 65 70 72 65 63 61 74 65 64 0a 0a 20 20 20 20 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 Deprecated......from.M2Crypto.SS
81560 4c 2e 43 6f 6e 74 65 78 74 20 69 6d 70 6f 72 74 20 43 6f 6e 74 65 78 74 0a 20 20 20 20 73 73 6c L.Context.import.Context.....ssl
81580 5f 63 74 78 20 3d 20 43 6f 6e 74 65 78 74 2e 63 74 78 6d 61 70 28 29 5b 69 6e 74 28 73 73 6c 5f _ctx.=.Context.ctxmap()[int(ssl_
815a0 63 74 78 5f 70 74 72 29 5d 0a 20 20 20 20 69 66 20 65 72 72 6e 75 6d 20 69 6e 20 75 6e 6b 6e 6f ctx_ptr)].....if.errnum.in.unkno
815c0 77 6e 5f 69 73 73 75 65 72 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 73 6c 5f 63 74 78 2e 67 65 wn_issuer:.........if.ssl_ctx.ge
815e0 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 t_allow_unknown_ca():...........
81600 20 20 73 79 73 2e 73 74 64 65 72 72 2e 77 72 69 74 65 28 22 70 6f 6c 69 63 79 3a 20 25 73 3a 20 ..sys.stderr.write("policy:.%s:.
81620 70 65 72 6d 69 74 74 65 64 2e 2e 2e 5c 6e 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 permitted...\n".%...............
81640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 76 65 72 69 ...............(m2.x509_get_veri
81660 66 79 5f 65 72 72 6f 72 28 65 72 72 6e 75 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 fy_error(errnum))).............s
81680 79 73 2e 73 74 64 65 72 72 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6b ys.stderr.flush().............ok
816a0 20 3d 20 31 0a 20 20 20 20 23 20 43 52 4c 20 63 68 65 63 6b 69 6e 67 20 67 6f 65 73 20 68 65 72 .=.1.....#.CRL.checking.goes.her
816c0 65 2e 2e 2e 0a 20 20 20 20 69 66 20 6f 6b 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 73 6c 5f 63 e........if.ok:.........if.ssl_c
816e0 74 78 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 29 20 3e 3d 20 65 72 72 64 65 70 74 tx.get_verify_depth().>=.errdept
81700 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6b 20 3d 20 31 0a 20 20 20 20 20 20 20 20 65 6c h:.............ok.=.1.........el
81720 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6b 20 3d 20 30 0a 20 20 20 20 72 65 74 75 72 se:.............ok.=.0.....retur
81740 6e 20 6f 6b 0a 0a 0a 64 65 66 20 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 61 n.ok...def.ssl_verify_callback_a
81760 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 6f 6b 2c 20 73 74 6f 72 65 29 3a 0a 20 20 20 20 llow_unknown_ca(ok,.store):.....
81780 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 41 6e 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 65 72 #.type:.(int,.Any).->.int.....er
817a0 72 6e 75 6d 20 3d 20 73 74 6f 72 65 2e 67 65 74 5f 65 72 72 6f 72 28 29 0a 20 20 20 20 69 66 20 rnum.=.store.get_error().....if.
817c0 65 72 72 6e 75 6d 20 69 6e 20 75 6e 6b 6e 6f 77 6e 5f 69 73 73 75 65 72 3a 0a 20 20 20 20 20 20 errnum.in.unknown_issuer:.......
817e0 20 20 6f 6b 20 3d 20 31 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 6b 0a 0a 0a 23 20 43 72 69 62 62 ..ok.=.1.....return.ok...#.Cribb
81800 65 64 20 66 72 6f 6d 20 4f 70 65 6e 53 53 4c 27 73 20 61 70 70 73 2f 73 5f 63 62 2e 63 2e 0a 64 ed.from.OpenSSL's.apps/s_cb.c..d
81820 65 66 20 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 28 77 68 65 72 65 2c 20 72 65 74 2c ef.ssl_info_callback(where,.ret,
81840 20 73 73 6c 5f 70 74 72 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 .ssl_ptr):.....#.type:.(int,.int
81860 2c 20 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 0a 20 20 20 20 77 20 3d 20 77 68 65 72 65 20 ,.bytes).->.None......w.=.where.
81880 26 20 7e 6d 32 2e 53 53 4c 5f 53 54 5f 4d 41 53 4b 0a 20 20 20 20 69 66 20 77 20 26 20 6d 32 2e &.~m2.SSL_ST_MASK.....if.w.&.m2.
818a0 53 53 4c 5f 53 54 5f 43 4f 4e 4e 45 43 54 3a 0a 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 SSL_ST_CONNECT:.........state.=.
818c0 22 53 53 4c 20 63 6f 6e 6e 65 63 74 22 0a 20 20 20 20 65 6c 69 66 20 77 20 26 20 6d 32 2e 53 53 "SSL.connect".....elif.w.&.m2.SS
818e0 4c 5f 53 54 5f 41 43 43 45 50 54 3a 0a 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 22 53 53 L_ST_ACCEPT:.........state.=."SS
81900 4c 20 61 63 63 65 70 74 22 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 73 74 61 74 L.accept".....else:.........stat
81920 65 20 3d 20 22 53 53 4c 20 73 74 61 74 65 20 75 6e 6b 6e 6f 77 6e 22 0a 0a 20 20 20 20 69 66 20 e.=."SSL.state.unknown"......if.
81940 77 68 65 72 65 20 26 20 6d 32 2e 53 53 4c 5f 43 42 5f 4c 4f 4f 50 3a 0a 20 20 20 20 20 20 20 20 where.&.m2.SSL_CB_LOOP:.........
81960 73 79 73 2e 73 74 64 65 72 72 2e 77 72 69 74 65 28 22 4c 4f 4f 50 3a 20 25 73 3a 20 25 73 5c 6e sys.stderr.write("LOOP:.%s:.%s\n
81980 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 ".%..........................(st
819a0 61 74 65 2c 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 73 74 61 74 65 5f 76 28 73 73 6c 5f 70 74 72 29 ate,.m2.ssl_get_state_v(ssl_ptr)
819c0 29 29 0a 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 65 72 72 2e 66 6c 75 73 68 28 29 0a 20 20 )).........sys.stderr.flush()...
819e0 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 69 66 20 77 68 65 72 65 20 26 20 6d 32 2e ......return......if.where.&.m2.
81a00 53 53 4c 5f 43 42 5f 45 58 49 54 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 3a SSL_CB_EXIT:.........if.not.ret:
81a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 65 72 72 2e 77 72 69 74 65 28 22 46 .............sys.stderr.write("F
81a40 41 49 4c 45 44 3a 20 25 73 3a 20 25 73 5c 6e 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 AILED:.%s:.%s\n".%..............
81a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 74 65 2c 20 6d 32 2e 73 73 6c 5f 67 ................(state,.m2.ssl_g
81a80 65 74 5f 73 74 61 74 65 5f 76 28 73 73 6c 5f 70 74 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 et_state_v(ssl_ptr)))...........
81aa0 20 20 73 79 73 2e 73 74 64 65 72 72 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 65 6c 73 ..sys.stderr.flush().........els
81ac0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 65 72 72 2e 77 72 69 74 65 28 e:.............sys.stderr.write(
81ae0 22 49 4e 46 4f 3a 20 25 73 3a 20 25 73 5c 6e 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 "INFO:.%s:.%s\n".%..............
81b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 74 65 2c 20 6d 32 2e 73 73 6c 5f 67 ................(state,.m2.ssl_g
81b20 65 74 5f 73 74 61 74 65 5f 76 28 73 73 6c 5f 70 74 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 et_state_v(ssl_ptr)))...........
81b40 20 20 73 79 73 2e 73 74 64 65 72 72 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 ..sys.stderr.flush().........ret
81b60 75 72 6e 0a 0a 20 20 20 20 69 66 20 77 68 65 72 65 20 26 20 6d 32 2e 53 53 4c 5f 43 42 5f 41 4c urn......if.where.&.m2.SSL_CB_AL
81b80 45 52 54 3a 0a 20 20 20 20 20 20 20 20 69 66 20 77 68 65 72 65 20 26 20 6d 32 2e 53 53 4c 5f 43 ERT:.........if.where.&.m2.SSL_C
81ba0 42 5f 52 45 41 44 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 20 3d 20 27 72 65 61 64 27 0a 20 B_READ:.............w.=.'read'..
81bc0 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 20 3d 20 27 77 72 .......else:.............w.=.'wr
81be0 69 74 65 27 0a 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 65 72 72 2e 77 72 69 74 65 28 22 41 ite'.........sys.stderr.write("A
81c00 4c 45 52 54 3a 20 25 73 3a 20 25 73 3a 20 25 73 5c 6e 22 20 25 0a 20 20 20 20 20 20 20 20 20 20 LERT:.%s:.%s:.%s\n".%...........
81c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 2c 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 61 6c ...............(w,.m2.ssl_get_al
81c40 65 72 74 5f 74 79 70 65 5f 76 28 72 65 74 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ert_type_v(ret),................
81c60 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 67 65 74 5f 61 6c 65 72 74 5f 64 65 73 63 ...........m2.ssl_get_alert_desc
81c80 5f 76 28 72 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 65 72 72 2e 66 6c 75 _v(ret))).........sys.stderr.flu
81ca0 73 68 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 94 7d 94 28 8c 18 73 73 6c 5f 76 65 sh().........return..}.(..ssl_ve
81cc0 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 73 74 75 62 94 6a 74 1f 00 00 4b 11 4b 13 87 94 8c 13 rify_callback_stub.jt...K.K.....
81ce0 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 94 6a 74 1f 00 00 4b 1d 4b 2f 87 94 8c ssl_verify_callback.jt...K.K/...
81d00 24 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f $ssl_verify_callback_allow_unkno
81d20 77 6e 5f 63 61 94 6a 74 1f 00 00 4b 32 4b 37 87 94 8c 11 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c wn_ca.jt...K2K7....ssl_info_call
81d40 62 61 63 6b 94 6a 74 1f 00 00 4b 3b 4b 60 87 94 75 7d 94 28 8c 18 73 73 6c 5f 76 65 72 69 66 79 back.jt...K;K`..u}.(..ssl_verify
81d60 5f 63 61 6c 6c 62 61 63 6b 5f 73 74 75 62 94 6a 5c 02 00 00 8c 13 73 73 6c 5f 76 65 72 69 66 79 _callback_stub.j\.....ssl_verify
81d80 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 24 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c _callback.j\....$ssl_verify_call
81da0 62 61 63 6b 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 5c 02 00 00 8c 11 73 73 6c back_allow_unknown_ca.j\.....ssl
81dc0 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 75 8c 0f 4d 32 43 72 79 70 74 6f 2e _info_callback.j\...u..M2Crypto.
81de0 53 53 4c 2e 63 62 94 74 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 SSL.cb.t...M2Crypto.SSL.ssl_disp
81e00 61 74 63 68 65 72 94 28 58 69 04 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 atcher.(Xi...from.__future__.imp
81e20 6f 72 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 22 22 22 53 53 4c 20 64 69 73 70 ort.absolute_import.."""SSL.disp
81e40 61 74 63 68 65 72 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 32 20 atcher..Copyright.(c).1999-2002.
81e60 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 Ng.Pheng.Siong..All.rights.reser
81e80 76 65 64 2e 22 22 22 0a 0a 23 20 50 79 74 68 6f 6e 0a 69 6d 70 6f 72 74 20 61 73 79 6e 63 6f 72 ved."""..#.Python.import.asyncor
81ea0 65 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 0a 23 20 4d 32 43 72 79 70 74 6f 0a 66 72 6f 6d e.import.socket..#.M2Crypto.from
81ec0 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 75 74 69 6c 20 20 23 20 6e 6f 71 61 0a 66 72 .M2Crypto.import.util..#.noqa.fr
81ee0 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 69 6d 70 6f 72 om.M2Crypto.SSL.Connection.impor
81f00 74 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 t.Connection.from.M2Crypto.SSL.C
81f20 6f 6e 74 65 78 74 20 69 6d 70 6f 72 74 20 43 6f 6e 74 65 78 74 20 20 23 20 6e 6f 71 61 0a 0a 5f ontext.import.Context..#.noqa.._
81f40 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 27 5d 0a 0a 0a 63 6c _all__.=.['ssl_dispatcher']...cl
81f60 61 73 73 20 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 28 61 73 79 6e 63 6f 72 65 2e 64 69 73 70 ass.ssl_dispatcher(asyncore.disp
81f80 61 74 63 68 65 72 29 3a 0a 0a 20 20 20 20 64 65 66 20 63 72 65 61 74 65 5f 73 6f 63 6b 65 74 28 atcher):......def.create_socket(
81fa0 73 65 6c 66 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 self,.ssl_context):.........#.ty
81fc0 70 65 3a 20 28 43 6f 6e 74 65 78 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 pe:.(Context).->.None.........se
81fe0 6c 66 2e 66 61 6d 69 6c 79 5f 61 6e 64 5f 74 79 70 65 20 3d 20 73 6f 63 6b 65 74 2e 41 46 5f 49 lf.family_and_type.=.socket.AF_I
82000 4e 45 54 2c 20 73 6f 63 6b 65 74 2e 53 4f 43 4b 5f 53 54 52 45 41 4d 0a 20 20 20 20 20 20 20 20 NET,.socket.SOCK_STREAM.........
82020 73 65 6c 66 2e 73 73 6c 5f 63 74 78 20 3d 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 self.ssl_ctx.=.ssl_context......
82040 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 20 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 6c 66 ...self.socket.=.Connection(self
82060 2e 73 73 6c 5f 63 74 78 29 0a 20 20 20 20 20 20 20 20 23 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e .ssl_ctx).........#.self.socket.
82080 73 65 74 62 6c 6f 63 6b 69 6e 67 28 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 5f setblocking(0).........self.add_
820a0 63 68 61 6e 6e 65 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2c channel()......def.connect(self,
820c0 20 61 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 75 74 69 6c 2e 41 64 .addr):.........#.type:.(util.Ad
820e0 64 72 54 79 70 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 drType).->.None.........self.soc
82100 6b 65 74 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 28 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ket.setblocking(1).........self.
82120 73 6f 63 6b 65 74 2e 63 6f 6e 6e 65 63 74 28 61 64 64 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c socket.connect(addr).........sel
82140 66 2e 73 6f 63 6b 65 74 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 28 30 29 0a 0a 20 20 20 20 64 65 66 f.socket.setblocking(0)......def
82160 20 72 65 63 76 28 73 65 6c 66 2c 20 62 75 66 66 65 72 5f 73 69 7a 65 3d 34 30 39 36 29 3a 0a 20 .recv(self,.buffer_size=4096):..
82180 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 .......#.type:.(int).->.bytes...
821a0 20 20 20 20 20 20 22 22 22 52 65 63 65 69 76 65 20 64 61 74 61 20 6f 76 65 72 20 53 53 4c 2e 22 ......"""Receive.data.over.SSL."
821c0 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 72 65 "".........return.self.socket.re
821e0 63 76 28 62 75 66 66 65 72 5f 73 69 7a 65 29 0a 0a 20 20 20 20 64 65 66 20 73 65 6e 64 28 73 65 cv(buffer_size)......def.send(se
82200 6c 66 2c 20 62 75 66 66 65 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 lf,.buffer):.........#.type:.(by
82220 74 65 73 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 6e 64 20 64 61 74 61 tes).->.int........."""Send.data
82240 20 6f 76 65 72 20 53 53 4c 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c .over.SSL.""".........return.sel
82260 66 2e 73 6f 63 6b 65 74 2e 73 65 6e 64 28 62 75 66 66 65 72 29 0a 94 7d 94 28 8c 1c 73 73 6c 5f f.socket.send(buffer)..}.(..ssl_
82280 64 69 73 70 61 74 63 68 65 72 2e 63 72 65 61 74 65 5f 73 6f 63 6b 65 74 94 6a 74 1f 00 00 4b 15 dispatcher.create_socket.jt...K.
822a0 4b 1b 87 94 8c 16 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 6f 6e 6e 65 63 74 94 6a 74 1f K.....ssl_dispatcher.connect.jt.
822c0 00 00 4b 1d 4b 21 87 94 8c 13 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 72 65 63 76 94 6a 74 ..K.K!....ssl_dispatcher.recv.jt
822e0 1f 00 00 4b 23 4b 26 87 94 8c 13 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 65 6e 64 94 6a ...K#K&....ssl_dispatcher.send.j
82300 74 1f 00 00 4b 28 4b 2b 87 94 8c 0e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 6a 7d 1f 00 00 t...K(K+....ssl_dispatcher.j}...
82320 4b 13 4b 2b 87 94 75 7d 94 28 8c 0e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 6a 5c 02 00 00 K.K+..u}.(..ssl_dispatcher.j\...
82340 8c 16 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 6f 6e 6e 65 63 74 94 6a 5c 02 00 00 8c 1c ..ssl_dispatcher.connect.j\.....
82360 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 72 65 61 74 65 5f 73 6f 63 6b 65 74 94 6a 5c 02 ssl_dispatcher.create_socket.j\.
82380 00 00 8c 13 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 72 65 63 76 94 6a 5c 02 00 00 8c 13 73 ....ssl_dispatcher.recv.j\.....s
823a0 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 65 6e 64 94 6a 5c 02 00 00 75 8c 1b 4d 32 43 72 79 sl_dispatcher.send.j\...u..M2Cry
823c0 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 74 94 8c 14 4d 32 43 72 79 pto.SSL.ssl_dispatcher.t...M2Cry
823e0 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 28 58 62 05 00 00 22 22 22 53 75 70 70 6f 72 74 pto.SSL.timeout.(Xb..."""Support
82400 20 66 6f 72 20 53 53 4c 20 73 6f 63 6b 65 74 20 74 69 6d 65 6f 75 74 73 2e 0a 0a 43 6f 70 79 72 .for.SSL.socket.timeouts...Copyr
82420 69 67 68 74 20 28 63 29 20 31 39 39 39 2d 32 30 30 33 20 4e 67 20 50 68 65 6e 67 20 53 69 6f 6e ight.(c).1999-2003.Ng.Pheng.Sion
82440 67 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 0a 43 6f 70 79 72 69 67 g..All.rights.reserved...Copyrig
82460 68 74 20 32 30 30 38 20 48 65 69 6b 6b 69 20 54 6f 69 76 6f 6e 65 6e 2e 20 41 6c 6c 20 72 69 67 ht.2008.Heikki.Toivonen..All.rig
82480 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 44 hts.reserved.."""..__all__.=.['D
824a0 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 27 2c 20 27 74 69 6d 65 6f 75 74 27 2c 20 27 73 74 72 EFAULT_TIMEOUT',.'timeout',.'str
824c0 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 27 2c 20 27 73 74 72 75 63 74 5f 73 69 7a 65 27 5d 0a uct_to_timeout',.'struct_size'].
824e0 0a 69 6d 70 6f 72 74 20 73 79 73 0a 69 6d 70 6f 72 74 20 73 74 72 75 63 74 0a 0a 44 45 46 41 55 .import.sys.import.struct..DEFAU
82500 4c 54 5f 54 49 4d 45 4f 55 54 20 3d 20 36 30 30 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 0a 0a LT_TIMEOUT.=.600..#.type:.int...
82520 63 6c 61 73 73 20 74 69 6d 65 6f 75 74 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 64 65 66 20 class.timeout(object):......def.
82540 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 65 63 3d 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f __init__(self,.sec=DEFAULT_TIMEO
82560 55 54 2c 20 6d 69 63 72 6f 73 65 63 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a UT,.microsec=0):.........#.type:
82580 20 28 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 .(int,.int).->.None.........self
825a0 2e 73 65 63 20 3d 20 73 65 63 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 69 63 72 6f 73 65 63 .sec.=.sec.........self.microsec
825c0 20 3d 20 6d 69 63 72 6f 73 65 63 0a 0a 20 20 20 20 64 65 66 20 70 61 63 6b 28 73 65 6c 66 29 3a .=.microsec......def.pack(self):
825e0 0a 20 20 20 20 20 20 20 20 69 66 20 73 79 73 2e 70 6c 61 74 66 6f 72 6d 20 3d 3d 20 27 77 69 6e .........if.sys.platform.==.'win
82600 33 32 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6c 6c 69 73 65 63 20 3d 20 69 6e 74 28 32':.............millisec.=.int(
82620 73 65 6c 66 2e 73 65 63 20 2a 20 31 30 30 30 20 2b 20 72 6f 75 6e 64 28 66 6c 6f 61 74 28 73 65 self.sec.*.1000.+.round(float(se
82640 6c 66 2e 6d 69 63 72 6f 73 65 63 29 20 2f 20 31 30 30 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 lf.microsec)./.1000))...........
82660 20 20 62 69 6e 73 74 72 20 3d 20 73 74 72 75 63 74 2e 70 61 63 6b 28 27 6c 27 2c 20 6d 69 6c 6c ..binstr.=.struct.pack('l',.mill
82680 69 73 65 63 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 isec).........else:.............
826a0 62 69 6e 73 74 72 20 3d 20 73 74 72 75 63 74 2e 70 61 63 6b 28 27 6c 6c 27 2c 20 73 65 6c 66 2e binstr.=.struct.pack('ll',.self.
826c0 73 65 63 2c 20 73 65 6c 66 2e 6d 69 63 72 6f 73 65 63 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 sec,.self.microsec).........retu
826e0 72 6e 20 62 69 6e 73 74 72 0a 0a 0a 64 65 66 20 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 rn.binstr...def.struct_to_timeou
82700 74 28 62 69 6e 73 74 72 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d t(binstr):.....#.type:.(bytes).-
82720 3e 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 69 66 20 73 79 73 2e 70 6c 61 74 66 6f 72 6d 20 3d 3d >.timeout.....if.sys.platform.==
82740 20 27 77 69 6e 33 32 27 3a 0a 20 20 20 20 20 20 20 20 6d 69 6c 6c 69 73 65 63 20 3d 20 73 74 72 .'win32':.........millisec.=.str
82760 75 63 74 2e 75 6e 70 61 63 6b 28 27 6c 27 2c 20 62 69 6e 73 74 72 29 5b 30 5d 0a 20 20 20 20 20 uct.unpack('l',.binstr)[0]......
82780 20 20 20 23 20 4f 6e 20 70 79 33 2c 20 69 6e 74 2f 69 6e 74 20 70 65 72 66 6f 72 6d 73 20 65 78 ...#.On.py3,.int/int.performs.ex
827a0 61 63 74 20 64 69 76 69 73 69 6f 6e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 66 6c 6f 61 74 2e 20 act.division.and.returns.float..
827c0 57 65 20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 We.want.........#.the.whole.numb
827e0 65 72 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 78 61 63 74 20 64 69 76 69 73 69 6f 6e er.portion.of.the.exact.division
82800 20 72 65 73 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 73 65 63 20 3d 20 69 6e 74 28 6d 69 6c 6c 69 .result:.........sec.=.int(milli
82820 73 65 63 20 2f 20 31 30 30 30 29 0a 20 20 20 20 20 20 20 20 6d 69 63 72 6f 73 65 63 20 3d 20 28 sec./.1000).........microsec.=.(
82840 6d 69 6c 6c 69 73 65 63 20 25 20 31 30 30 30 29 20 2a 20 31 30 30 30 0a 20 20 20 20 65 6c 73 65 millisec.%.1000).*.1000.....else
82860 3a 0a 20 20 20 20 20 20 20 20 28 73 65 63 2c 20 6d 69 63 72 6f 73 65 63 29 20 3d 20 73 74 72 75 :.........(sec,.microsec).=.stru
82880 63 74 2e 75 6e 70 61 63 6b 28 27 6c 6c 27 2c 20 62 69 6e 73 74 72 29 0a 20 20 20 20 72 65 74 75 ct.unpack('ll',.binstr).....retu
828a0 72 6e 20 74 69 6d 65 6f 75 74 28 73 65 63 2c 20 6d 69 63 72 6f 73 65 63 29 0a 0a 0a 64 65 66 20 rn.timeout(sec,.microsec)...def.
828c0 73 74 72 75 63 74 5f 73 69 7a 65 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e struct_size():.....#.type:.().->
828e0 20 69 6e 74 0a 20 20 20 20 69 66 20 73 79 73 2e 70 6c 61 74 66 6f 72 6d 20 3d 3d 20 27 77 69 6e .int.....if.sys.platform.==.'win
82900 33 32 27 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 2e 63 61 6c 63 73 32':.........return.struct.calcs
82920 69 7a 65 28 27 6c 27 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ize('l').....else:.........retur
82940 6e 20 73 74 72 75 63 74 2e 63 61 6c 63 73 69 7a 65 28 27 6c 6c 27 29 0a 94 7d 94 28 8c 10 74 69 n.struct.calcsize('ll')..}.(..ti
82960 6d 65 6f 75 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 74 1f 00 00 4b 12 4b 15 87 94 8c 0c 74 69 6d 65 meout.__init__.jt...K.K.....time
82980 6f 75 74 2e 70 61 63 6b 94 6a 74 1f 00 00 4b 17 4b 1d 87 94 8c 07 74 69 6d 65 6f 75 74 94 6a 7d out.pack.jt...K.K.....timeout.j}
829a0 1f 00 00 4b 10 4b 1d 87 94 8c 11 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 94 6a 74 1f ...K.K.....struct_to_timeout.jt.
829c0 00 00 4b 20 4b 2a 87 94 8c 0b 73 74 72 75 63 74 5f 73 69 7a 65 94 6a 74 1f 00 00 4b 2d 4b 32 87 ..K.K*....struct_size.jt...K-K2.
829e0 94 75 7d 94 28 8c 07 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 0c 74 69 6d 65 6f 75 74 2e 70 61 .u}.(..timeout.j\.....timeout.pa
82a00 63 6b 94 6a 5c 02 00 00 8c 11 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 ck.j\.....struct_to_timeout.j\..
82a20 00 8c 0b 73 74 72 75 63 74 5f 73 69 7a 65 94 6a 5c 02 00 00 75 8c 14 4d 32 43 72 79 70 74 6f 2e ...struct_size.j\...u..M2Crypto.
82a40 53 53 4c 2e 74 69 6d 65 6f 75 74 94 74 94 75 75 62 2e SSL.timeout.t.uub.