summaryrefslogtreecommitdiff
path: root/doc/doctrees/environment.pickle
blob: 880df3795941f79f3372c8c6d0e6e3217accdf7c (plain)
ofshex dumpascii
0000 80 05 95 1a 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 11 68 74 6d phinx...html_static_path.]...htm
0260 6c 68 65 6c 70 5f 62 61 73 65 6e 61 6d 65 94 8c 0b 4d 32 43 72 79 70 74 6f 64 6f 63 94 8c 0e 6c lhelp_basename...M2Cryptodoc...l
0280 61 74 65 78 5f 65 6c 65 6d 65 6e 74 73 94 7d 94 8c 0f 6c 61 74 65 78 5f 64 6f 63 75 6d 65 6e 74 atex_elements.}...latex_document
02a0 73 94 5d 94 28 68 21 8c 0c 4d 32 43 72 79 70 74 6f 2e 74 65 78 94 8c 16 4d 32 43 72 79 70 74 6f s.].(h!..M2Crypto.tex...M2Crypto
02c0 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 94 8c 31 4d 61 74 65 6a 20 43 65 70 6c 20 5c 74 65 78 .Documentation..1Matej.Cepl.\tex
02e0 74 6c 65 73 73 7b 7d 6d 63 65 70 6c 40 63 65 70 6c 2e 65 75 5c 74 65 78 74 67 72 65 61 74 65 72 tless{}mcepl@cepl.eu\textgreater
0300 7b 7d 94 8c 06 6d 61 6e 75 61 6c 94 74 94 61 8c 09 6d 61 6e 5f 70 61 67 65 73 94 5d 94 28 68 21 {}...manual.t.a..man_pages.].(h!
0320 8c 08 6d 32 63 72 79 70 74 6f 94 68 37 5d 94 8c 1a 4d 61 74 65 6a 20 43 65 70 6c 20 3c 6d 63 65 ..m2crypto.h7]...Matej.Cepl.<mce
0340 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 63 75 pl@cepl.eu>.aK.t.a..texinfo_docu
0360 6d 65 6e 74 73 94 5d 94 28 68 21 68 23 68 37 68 3f 68 23 8c 20 4f 6e 65 20 6c 69 6e 65 20 64 65 ments.].(h!h#h7h?h#..One.line.de
0380 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 70 72 6f 6a 65 63 74 2e 94 8c 0d 4d 69 73 63 65 6c 6c 61 scription.of.project....Miscella
03a0 6e 65 6f 75 73 94 74 94 61 8c 0a 65 70 75 62 5f 74 69 74 6c 65 94 68 23 8c 0b 65 70 75 62 5f 61 neous.t.a..epub_title.h#..epub_a
03c0 75 74 68 6f 72 94 68 3f 8c 0e 65 70 75 62 5f 70 75 62 6c 69 73 68 65 72 94 68 3f 8c 0e 65 70 75 uthor.h?..epub_publisher.h?..epu
03e0 62 5f 63 6f 70 79 72 69 67 68 74 94 68 25 8c 0e 65 70 75 62 5f 63 73 73 5f 66 69 6c 65 73 94 5d b_copyright.h%..epub_css_files.]
0400 94 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 69 ...html_css_files.]...html_js_fi
0420 6c 65 73 94 5d 94 8c 0d 6e 75 6d 66 69 67 5f 66 6f 72 6d 61 74 94 7d 94 28 8c 07 73 65 63 74 69 les.]...numfig_format.}.(..secti
0440 6f 6e 94 8c 0a 53 65 63 74 69 6f 6e 20 25 73 94 8c 06 66 69 67 75 72 65 94 8c 07 46 69 67 2e 20 on...Section.%s...figure...Fig..
0460 25 73 94 8c 05 74 61 62 6c 65 94 8c 08 54 61 62 6c 65 20 25 73 94 8c 0a 63 6f 64 65 2d 62 6c 6f %s...table...Table.%s...code-blo
0480 63 6b 94 8c 0a 4c 69 73 74 69 6e 67 20 25 73 94 75 8c 1a 61 75 74 6f 64 6f 63 5f 69 6e 68 65 72 ck...Listing.%s.u..autodoc_inher
04a0 69 74 5f 64 6f 63 73 74 72 69 6e 67 73 94 88 8c 06 76 61 6c 75 65 73 94 7d 94 28 68 22 68 23 8c it_docstrings....values.}.(h"h#.
04c0 03 65 6e 76 94 4e 87 94 8c 06 61 75 74 68 6f 72 94 8c 07 75 6e 6b 6e 6f 77 6e 94 68 5d 4e 87 94 .env.N....author...unknown.h]N..
04e0 68 24 68 25 8c 04 68 74 6d 6c 94 4e 87 94 68 26 68 27 68 5d 4e 87 94 68 28 68 27 68 5d 4e 87 94 h$h%..html.N..h&h'h]N..h(h'h]N..
0500 8c 05 74 6f 64 61 79 94 68 27 68 5d 4e 87 94 8c 09 74 6f 64 61 79 5f 66 6d 74 94 4e 68 5d 4e 87 ..today.h'h]N....today_fmt.Nh]N.
0520 94 8c 08 6c 61 6e 67 75 61 67 65 94 4e 68 5d 4e 87 94 8c 0b 6c 6f 63 61 6c 65 5f 64 69 72 73 94 ...language.Nh]N....locale_dirs.
0540 5d 94 8c 07 6c 6f 63 61 6c 65 73 94 61 68 5d 4e 87 94 8c 18 66 69 67 75 72 65 5f 6c 61 6e 67 75 ]...locales.ah]N....figure_langu
0560 61 67 65 5f 66 69 6c 65 6e 61 6d 65 94 8c 16 7b 72 6f 6f 74 7d 2e 7b 6c 61 6e 67 75 61 67 65 7d age_filename...{root}.{language}
0580 7b 65 78 74 7d 94 68 5d 4e 87 94 68 20 68 21 68 5d 4e 87 94 68 1a 68 1e 68 5d 4e 87 94 8c 0f 73 {ext}.h]N..h.h!h]N..h.h.h]N....s
05a0 6f 75 72 63 65 5f 65 6e 63 6f 64 69 6e 67 94 8c 09 75 74 66 2d 38 2d 73 69 67 94 68 5d 4e 87 94 ource_encoding...utf-8-sig.h]N..
05c0 8c 0e 73 6f 75 72 63 65 5f 70 61 72 73 65 72 73 94 7d 94 68 5d 4e 87 94 68 29 68 2a 68 5d 4e 87 ..source_parsers.}.h]N..h)h*h]N.
05e0 94 8c 0c 64 65 66 61 75 6c 74 5f 72 6f 6c 65 94 4e 68 5d 4e 87 94 8c 18 61 64 64 5f 66 75 6e 63 ...default_role.Nh]N....add_func
0600 74 69 6f 6e 5f 70 61 72 65 6e 74 68 65 73 65 73 94 88 68 5d 4e 87 94 8c 10 61 64 64 5f 6d 6f 64 tion_parentheses..h]N....add_mod
0620 75 6c 65 5f 6e 61 6d 65 73 94 88 68 5d 4e 87 94 8c 1d 74 72 69 6d 5f 66 6f 6f 74 6e 6f 74 65 5f ule_names..h]N....trim_footnote_
0640 72 65 66 65 72 65 6e 63 65 5f 73 70 61 63 65 94 89 68 5d 4e 87 94 8c 0c 73 68 6f 77 5f 61 75 74 reference_space..h]N....show_aut
0660 68 6f 72 73 94 89 68 5d 4e 87 94 68 2c 68 2d 68 62 4e 87 94 8c 12 68 69 67 68 6c 69 67 68 74 5f hors..h]N..h,h-hbN....highlight_
0680 6c 61 6e 67 75 61 67 65 94 8c 07 64 65 66 61 75 6c 74 94 68 5d 4e 87 94 8c 11 68 69 67 68 6c 69 language...default.h]N....highli
06a0 67 68 74 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 5d 4e 87 94 68 17 68 18 68 62 4e 87 94 8c 0f 74 65 ght_options.}.h]N..h.h.hbN....te
06c0 6d 70 6c 61 74 65 5f 62 72 69 64 67 65 94 4e 68 62 4e 87 94 8c 0d 6b 65 65 70 5f 77 61 72 6e 69 mplate_bridge.NhbN....keep_warni
06e0 6e 67 73 94 89 68 5d 4e 87 94 8c 11 73 75 70 70 72 65 73 73 5f 77 61 72 6e 69 6e 67 73 94 5d 94 ngs..h]N....suppress_warnings.].
0700 68 5d 4e 87 94 8c 16 6d 6f 64 69 6e 64 65 78 5f 63 6f 6d 6d 6f 6e 5f 70 72 65 66 69 78 94 5d 94 h]N....modindex_common_prefix.].
0720 68 62 4e 87 94 8c 0a 72 73 74 5f 65 70 69 6c 6f 67 94 4e 68 5d 4e 87 94 8c 0a 72 73 74 5f 70 72 hbN....rst_epilog.Nh]N....rst_pr
0740 6f 6c 6f 67 94 4e 68 5d 4e 87 94 8c 12 74 72 69 6d 5f 64 6f 63 74 65 73 74 5f 66 6c 61 67 73 94 olog.Nh]N....trim_doctest_flags.
0760 88 68 5d 4e 87 94 8c 0e 70 72 69 6d 61 72 79 5f 64 6f 6d 61 69 6e 94 8c 02 70 79 94 68 5d 4e 87 .h]N....primary_domain...py.h]N.
0780 94 8c 0c 6e 65 65 64 73 5f 73 70 68 69 6e 78 94 4e 4e 4e 87 94 8c 10 6e 65 65 64 73 5f 65 78 74 ...needs_sphinx.NNN....needs_ext
07a0 65 6e 73 69 6f 6e 73 94 7d 94 4e 4e 87 94 8c 0c 6d 61 6e 70 61 67 65 73 5f 75 72 6c 94 4e 68 5d ensions.}.NN....manpages_url.Nh]
07c0 4e 87 94 8c 08 6e 69 74 70 69 63 6b 79 94 89 4e 4e 87 94 8c 0e 6e 69 74 70 69 63 6b 5f 69 67 6e N....nitpicky..NN....nitpick_ign
07e0 6f 72 65 94 5d 94 4e 4e 87 94 8c 06 6e 75 6d 66 69 67 94 89 68 5d 4e 87 94 8c 13 6e 75 6d 66 69 ore.].NN....numfig..h]N....numfi
0800 67 5f 73 65 63 6e 75 6d 5f 64 65 70 74 68 94 4b 01 68 5d 4e 87 94 68 50 68 51 68 5d 4e 87 94 8c g_secnum_depth.K.h]N..hPhQh]N...
0820 0f 6d 61 74 68 5f 6e 75 6d 62 65 72 5f 61 6c 6c 94 89 68 5d 4e 87 94 8c 11 6d 61 74 68 5f 65 71 .math_number_all..h]N....math_eq
0840 72 65 66 5f 66 6f 72 6d 61 74 94 4e 68 5d 4e 87 94 8c 0b 6d 61 74 68 5f 6e 75 6d 66 69 67 94 88 ref_format.Nh]N....math_numfig..
0860 68 5d 4e 87 94 8c 0a 74 6c 73 5f 76 65 72 69 66 79 94 88 68 5d 4e 87 94 8c 0b 74 6c 73 5f 63 61 h]N....tls_verify..h]N....tls_ca
0880 63 65 72 74 73 94 4e 68 5d 4e 87 94 8c 0a 75 73 65 72 5f 61 67 65 6e 74 94 4e 68 5d 4e 87 94 8c certs.Nh]N....user_agent.Nh]N...
08a0 0b 73 6d 61 72 74 71 75 6f 74 65 73 94 88 68 5d 4e 87 94 8c 12 73 6d 61 72 74 71 75 6f 74 65 73 .smartquotes..h]N....smartquotes
08c0 5f 61 63 74 69 6f 6e 94 8c 03 71 44 65 94 68 5d 4e 87 94 8c 14 73 6d 61 72 74 71 75 6f 74 65 73 _action...qDe.h]N....smartquotes
08e0 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 6a 61 94 _excludes.}.(..languages.]...ja.
0900 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 75 68 5d a..builders.].(..man...text.euh]
0920 4e 87 94 8c 0d 65 70 75 62 5f 62 61 73 65 6e 61 6d 65 94 68 23 4e 4e 87 94 8c 0c 65 70 75 62 5f N....epub_basename.h#NN....epub_
0940 76 65 72 73 69 6f 6e 94 47 40 08 00 00 00 00 00 00 8c 04 65 70 75 62 94 4e 87 94 8c 0a 65 70 75 version.G@.........epub.N....epu
0960 62 5f 74 68 65 6d 65 94 68 d0 68 d0 4e 87 94 8c 12 65 70 75 62 5f 74 68 65 6d 65 5f 6f 70 74 69 b_theme.h.h.N....epub_theme_opti
0980 6f 6e 73 94 7d 94 68 d0 4e 87 94 68 46 68 23 68 d0 4e 87 94 68 47 68 3f 68 d0 4e 87 94 8c 0d 65 ons.}.h.N..hFh#h.N..hGh?h.N....e
09a0 70 75 62 5f 6c 61 6e 67 75 61 67 65 94 8c 02 65 6e 94 68 d0 4e 87 94 68 48 68 3f 68 d0 4e 87 94 pub_language...en.h.N..hHh?h.N..
09c0 68 49 68 25 68 d0 4e 87 94 8c 0f 65 70 75 62 5f 69 64 65 6e 74 69 66 69 65 72 94 68 60 68 d0 4e hIh%h.N....epub_identifier.h`h.N
09e0 87 94 8c 0b 65 70 75 62 5f 73 63 68 65 6d 65 94 68 60 68 d0 4e 87 94 8c 08 65 70 75 62 5f 75 69 ....epub_scheme.h`h.N....epub_ui
0a00 64 94 68 60 68 5d 4e 87 94 8c 0a 65 70 75 62 5f 63 6f 76 65 72 94 29 68 5d 4e 87 94 8c 0a 65 70 d.h`h]N....epub_cover.)h]N....ep
0a20 75 62 5f 67 75 69 64 65 94 29 68 5d 4e 87 94 8c 0e 65 70 75 62 5f 70 72 65 5f 66 69 6c 65 73 94 ub_guide.)h]N....epub_pre_files.
0a40 5d 94 68 5d 4e 87 94 8c 0f 65 70 75 62 5f 70 6f 73 74 5f 66 69 6c 65 73 94 5d 94 68 5d 4e 87 94 ].h]N....epub_post_files.].h]N..
0a60 68 4a 68 4b 68 d0 4e 87 94 8c 12 65 70 75 62 5f 65 78 63 6c 75 64 65 5f 66 69 6c 65 73 94 5d 94 hJhKh.N....epub_exclude_files.].
0a80 68 5d 4e 87 94 8c 0d 65 70 75 62 5f 74 6f 63 64 65 70 74 68 94 4b 03 68 5d 4e 87 94 8c 0b 65 70 h]N....epub_tocdepth.K.h]N....ep
0aa0 75 62 5f 74 6f 63 64 75 70 94 88 68 5d 4e 87 94 8c 0d 65 70 75 62 5f 74 6f 63 73 63 6f 70 65 94 ub_tocdup..h]N....epub_tocscope.
0ac0 68 88 68 5d 4e 87 94 8c 0f 65 70 75 62 5f 66 69 78 5f 69 6d 61 67 65 73 94 89 68 5d 4e 87 94 8c h.h]N....epub_fix_images..h]N...
0ae0 14 65 70 75 62 5f 6d 61 78 5f 69 6d 61 67 65 5f 77 69 64 74 68 94 4b 00 68 5d 4e 87 94 8c 0e 65 .epub_max_image_width.K.h]N....e
0b00 70 75 62 5f 73 68 6f 77 5f 75 72 6c 73 94 8c 06 69 6e 6c 69 6e 65 94 68 d0 4e 87 94 8c 0e 65 70 pub_show_urls...inline.h.N....ep
0b20 75 62 5f 75 73 65 5f 69 6e 64 65 78 94 88 68 d0 4e 87 94 8c 10 65 70 75 62 5f 64 65 73 63 72 69 ub_use_index..h.N....epub_descri
0b40 70 74 69 6f 6e 94 68 60 68 d0 4e 87 94 8c 10 65 70 75 62 5f 63 6f 6e 74 72 69 62 75 74 6f 72 94 ption.h`h.N....epub_contributor.
0b60 68 60 68 d0 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 6f 72 h`h.N....epub_writing_mode...hor
0b80 69 7a 6f 6e 74 61 6c 94 68 d0 4e 87 94 8c 0a 68 74 6d 6c 5f 74 68 65 6d 65 94 8c 09 61 6c 61 62 izontal.h.N....html_theme...alab
0ba0 61 73 74 65 72 94 68 62 4e 87 94 8c 0f 68 74 6d 6c 5f 74 68 65 6d 65 5f 70 61 74 68 94 5d 94 68 aster.hbN....html_theme_path.].h
0bc0 62 4e 87 94 8c 12 68 74 6d 6c 5f 74 68 65 6d 65 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 62 4e 87 94 bN....html_theme_options.}.hbN..
0be0 8c 0a 68 74 6d 6c 5f 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 ..html_title...M2Crypto..documen
0c00 74 61 74 69 6f 6e 94 68 62 4e 87 94 8c 10 68 74 6d 6c 5f 73 68 6f 72 74 5f 74 69 74 6c 65 94 8c tation.hbN....html_short_title..
0c20 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 68 62 4e 87 94 8c 0a .M2Crypto..documentation.hbN....
0c40 68 74 6d 6c 5f 73 74 79 6c 65 94 4e 68 62 4e 87 94 8c 09 68 74 6d 6c 5f 6c 6f 67 6f 94 4e 68 62 html_style.NhbN....html_logo.Nhb
0c60 4e 87 94 8c 0c 68 74 6d 6c 5f 66 61 76 69 63 6f 6e 94 4e 68 62 4e 87 94 68 4c 68 4d 68 62 4e 87 N....html_favicon.NhbN..hLhMhbN.
0c80 94 68 4e 68 4f 68 62 4e 87 94 68 2e 68 2f 68 62 4e 87 94 8c 0f 68 74 6d 6c 5f 65 78 74 72 61 5f .hNhOhbN..h.h/hbN....html_extra_
0ca0 70 61 74 68 94 5d 94 68 62 4e 87 94 8c 15 68 74 6d 6c 5f 6c 61 73 74 5f 75 70 64 61 74 65 64 5f path.].hbN....html_last_updated_
0cc0 66 6d 74 94 4e 68 62 4e 87 94 8c 0d 68 74 6d 6c 5f 73 69 64 65 62 61 72 73 94 7d 94 68 62 4e 87 fmt.NhbN....html_sidebars.}.hbN.
0ce0 94 8c 15 68 74 6d 6c 5f 61 64 64 69 74 69 6f 6e 61 6c 5f 70 61 67 65 73 94 7d 94 68 62 4e 87 94 ...html_additional_pages.}.hbN..
0d00 8c 13 68 74 6d 6c 5f 64 6f 6d 61 69 6e 5f 69 6e 64 69 63 65 73 94 88 68 62 4e 87 94 8c 13 68 74 ..html_domain_indices..hbN....ht
0d20 6d 6c 5f 61 64 64 5f 70 65 72 6d 61 6c 69 6e 6b 73 94 8c 02 c2 b6 94 68 62 4e 87 94 8c 0e 68 74 ml_add_permalinks......hbN....ht
0d40 6d 6c 5f 75 73 65 5f 69 6e 64 65 78 94 88 68 62 4e 87 94 8c 10 68 74 6d 6c 5f 73 70 6c 69 74 5f ml_use_index..hbN....html_split_
0d60 69 6e 64 65 78 94 89 68 62 4e 87 94 8c 10 68 74 6d 6c 5f 63 6f 70 79 5f 73 6f 75 72 63 65 94 88 index..hbN....html_copy_source..
0d80 68 62 4e 87 94 8c 14 68 74 6d 6c 5f 73 68 6f 77 5f 73 6f 75 72 63 65 6c 69 6e 6b 94 88 68 62 4e hbN....html_show_sourcelink..hbN
0da0 87 94 8c 16 68 74 6d 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 ....html_sourcelink_suffix....tx
0dc0 74 94 68 62 4e 87 94 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 t.hbN....html_use_opensearch.h'h
0de0 62 4e 87 94 8c 10 68 74 6d 6c 5f 66 69 6c 65 5f 73 75 66 66 69 78 94 4e 68 62 4e 87 94 8c 10 68 bN....html_file_suffix.NhbN....h
0e00 74 6d 6c 5f 6c 69 6e 6b 5f 73 75 66 66 69 78 94 4e 68 62 4e 87 94 8c 13 68 74 6d 6c 5f 73 68 6f tml_link_suffix.NhbN....html_sho
0e20 77 5f 63 6f 70 79 72 69 67 68 74 94 88 68 62 4e 87 94 8c 10 68 74 6d 6c 5f 73 68 6f 77 5f 73 70 w_copyright..hbN....html_show_sp
0e40 68 69 6e 78 94 88 68 62 4e 87 94 8c 0c 68 74 6d 6c 5f 63 6f 6e 74 65 78 74 94 7d 94 68 62 4e 87 hinx..hbN....html_context.}.hbN.
0e60 94 8c 14 68 74 6d 6c 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 ...html_output_encoding...utf-8.
0e80 68 62 4e 87 94 8c 12 68 74 6d 6c 5f 63 6f 6d 70 61 63 74 5f 6c 69 73 74 73 94 88 68 62 4e 87 94 hbN....html_compact_lists..hbN..
0ea0 8c 15 68 74 6d 6c 5f 73 65 63 6e 75 6d 62 65 72 5f 73 75 66 66 69 78 94 8c 02 2e 20 94 68 62 4e ..html_secnumber_suffix......hbN
0ec0 87 94 8c 14 68 74 6d 6c 5f 73 65 61 72 63 68 5f 6c 61 6e 67 75 61 67 65 94 4e 68 62 4e 87 94 8c ....html_search_language.NhbN...
0ee0 13 68 74 6d 6c 5f 73 65 61 72 63 68 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 62 4e 87 94 8c 12 68 74 .html_search_options.}.hbN....ht
0f00 6d 6c 5f 73 65 61 72 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 ml_search_scorer.h'NN....html_sc
0f20 61 6c 65 64 5f 69 6d 61 67 65 5f 6c 69 6e 6b 94 88 68 62 4e 87 94 8c 0c 68 74 6d 6c 5f 62 61 73 aled_image_link..hbN....html_bas
0f40 65 75 72 6c 94 68 27 68 62 4e 87 94 8c 1c 68 74 6d 6c 5f 63 6f 64 65 62 6c 6f 63 6b 5f 6c 69 6e eurl.h'hbN....html_codeblock_lin
0f60 65 6e 6f 73 5f 73 74 79 6c 65 94 68 56 68 62 4e 87 94 8c 12 68 74 6d 6c 5f 6d 61 74 68 5f 72 65 enos_style.hVhbN....html_math_re
0f80 6e 64 65 72 65 72 94 4e 68 5d 4e 87 94 8c 0c 68 74 6d 6c 34 5f 77 72 69 74 65 72 94 89 68 62 4e nderer.Nh]N....html4_writer..hbN
0fa0 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 6a 73 ....mathjax_path..[https://cdnjs
0fc0 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 6a 61 .cloudflare.com/ajax/libs/mathja
0fe0 78 2f 32 2e 37 2e 37 2f 6c 61 74 65 73 74 2e 6a 73 3f 63 6f 6e 66 69 67 3d 54 65 58 2d 41 4d 53 x/2.7.7/latest.js?config=TeX-AMS
1000 2d 4d 4d 4c 5f 48 54 4d 4c 6f 72 4d 4d 4c 94 68 62 4e 87 94 8c 0f 6d 61 74 68 6a 61 78 5f 6f 70 -MML_HTMLorMML.hbN....mathjax_op
1020 74 69 6f 6e 73 94 7d 94 68 62 4e 87 94 8c 0e 6d 61 74 68 6a 61 78 5f 69 6e 6c 69 6e 65 94 5d 94 tions.}.hbN....mathjax_inline.].
1040 28 8c 02 5c 28 94 8c 02 5c 29 94 65 68 62 4e 87 94 8c 0f 6d 61 74 68 6a 61 78 5f 64 69 73 70 6c (..\(...\).ehbN....mathjax_displ
1060 61 79 94 5d 94 28 8c 02 5c 5b 94 8c 02 5c 5d 94 65 68 62 4e 87 94 8c 0e 6d 61 74 68 6a 61 78 5f ay.].(..\[...\].ehbN....mathjax_
1080 63 6f 6e 66 69 67 94 4e 68 62 4e 87 94 8c 0f 67 65 74 74 65 78 74 5f 63 6f 6d 70 61 63 74 94 88 config.NhbN....gettext_compact..
10a0 8c 07 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 ..gettext.N....gettext_location.
10c0 88 6a 74 01 00 00 4e 87 94 8c 0c 67 65 74 74 65 78 74 5f 75 75 69 64 94 89 6a 74 01 00 00 4e 87 .jt...N....gettext_uuid..jt...N.
10e0 94 8c 12 67 65 74 74 65 78 74 5f 61 75 74 6f 5f 62 75 69 6c 64 94 88 68 5d 4e 87 94 8c 1a 67 65 ...gettext_auto_build..h]N....ge
1100 74 74 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 5d 4e 87 94 ttext_additional_targets.].h]N..
1120 8c 17 67 65 74 74 65 78 74 5f 6c 61 73 74 5f 74 72 61 6e 73 6c 61 74 6f 72 94 8c 19 46 55 4c 4c ..gettext_last_translator...FULL
1140 20 4e 41 4d 45 20 3c 45 4d 41 49 4c 40 41 44 44 52 45 53 53 3e 94 6a 74 01 00 00 4e 87 94 8c 15 .NAME.<EMAIL@ADDRESS>.jt...N....
1160 67 65 74 74 65 78 74 5f 6c 61 6e 67 75 61 67 65 5f 74 65 61 6d 94 8c 14 4c 41 4e 47 55 41 47 45 gettext_language_team...LANGUAGE
1180 20 3c 4c 4c 40 6c 69 2e 6f 72 67 3e 94 6a 74 01 00 00 4e 87 94 8c 0c 6c 61 74 65 78 5f 65 6e 67 .<LL@li.org>.jt...N....latex_eng
11a0 69 6e 65 94 8c 08 70 64 66 6c 61 74 65 78 94 4e 4e 87 94 68 34 68 35 4e 4e 87 94 8c 0a 6c 61 74 ine...pdflatex.NN..h4h5NN....lat
11c0 65 78 5f 6c 6f 67 6f 94 4e 4e 4e 87 94 8c 10 6c 61 74 65 78 5f 61 70 70 65 6e 64 69 63 65 73 94 ex_logo.NNN....latex_appendices.
11e0 5d 94 4e 4e 87 94 8c 1b 6c 61 74 65 78 5f 75 73 65 5f 6c 61 74 65 78 5f 6d 75 6c 74 69 63 6f 6c ].NN....latex_use_latex_multicol
1200 75 6d 6e 94 89 4e 4e 87 94 8c 0f 6c 61 74 65 78 5f 75 73 65 5f 78 69 6e 64 79 94 89 4e 4e 87 94 umn..NN....latex_use_xindy..NN..
1220 8c 19 6c 61 74 65 78 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 63 74 69 6f 6e 69 6e 67 94 4e 4e 4e 87 ..latex_toplevel_sectioning.NNN.
1240 94 8c 14 6c 61 74 65 78 5f 64 6f 6d 61 69 6e 5f 69 6e 64 69 63 65 73 94 88 4e 4e 87 94 8c 0f 6c ...latex_domain_indices..NN....l
1260 61 74 65 78 5f 73 68 6f 77 5f 75 72 6c 73 94 8c 02 6e 6f 94 4e 4e 87 94 8c 13 6c 61 74 65 78 5f atex_show_urls...no.NN....latex_
1280 73 68 6f 77 5f 70 61 67 65 72 65 66 73 94 89 4e 4e 87 94 68 32 68 33 4e 4e 87 94 8c 16 6c 61 74 show_pagerefs..NN..h2h3NN....lat
12a0 65 78 5f 61 64 64 69 74 69 6f 6e 61 6c 5f 66 69 6c 65 73 94 5d 94 4e 4e 87 94 8c 0b 6c 61 74 65 ex_additional_files.].NN....late
12c0 78 5f 74 68 65 6d 65 94 68 39 4e 4e 87 94 8c 13 6c 61 74 65 78 5f 74 68 65 6d 65 5f 6f 70 74 69 x_theme.h9NN....latex_theme_opti
12e0 6f 6e 73 94 7d 94 4e 4e 87 94 8c 10 6c 61 74 65 78 5f 74 68 65 6d 65 5f 70 61 74 68 94 5d 94 4e ons.}.NN....latex_theme_path.].N
1300 4e 87 94 8c 0e 6c 61 74 65 78 5f 64 6f 63 63 6c 61 73 73 94 7d 94 4e 4e 87 94 8c 10 6c 69 6e 6b N....latex_docclass.}.NN....link
1320 63 68 65 63 6b 5f 69 67 6e 6f 72 65 94 5d 94 4e 4e 87 94 8c 0e 6c 69 6e 6b 63 68 65 63 6b 5f 61 check_ignore.].NN....linkcheck_a
1340 75 74 68 94 5d 94 4e 4e 87 94 8c 19 6c 69 6e 6b 63 68 65 63 6b 5f 72 65 71 75 65 73 74 5f 68 65 uth.].NN....linkcheck_request_he
1360 61 64 65 72 73 94 7d 94 4e 4e 87 94 8c 11 6c 69 6e 6b 63 68 65 63 6b 5f 72 65 74 72 69 65 73 94 aders.}.NN....linkcheck_retries.
1380 4b 01 4e 4e 87 94 8c 11 6c 69 6e 6b 63 68 65 63 6b 5f 74 69 6d 65 6f 75 74 94 4e 4e 4e 87 94 8c K.NN....linkcheck_timeout.NNN...
13a0 11 6c 69 6e 6b 63 68 65 63 6b 5f 77 6f 72 6b 65 72 73 94 4b 05 4e 4e 87 94 8c 11 6c 69 6e 6b 63 .linkcheck_workers.K.NN....linkc
13c0 68 65 63 6b 5f 61 6e 63 68 6f 72 73 94 88 4e 4e 87 94 8c 18 6c 69 6e 6b 63 68 65 63 6b 5f 61 6e heck_anchors..NN....linkcheck_an
13e0 63 68 6f 72 73 5f 69 67 6e 6f 72 65 94 5d 94 8c 02 5e 21 94 61 4e 4e 87 94 68 3b 68 3c 4e 4e 87 chors_ignore.]...^!.aNN..h;h<NN.
1400 94 8c 0d 6d 61 6e 5f 73 68 6f 77 5f 75 72 6c 73 94 89 4e 4e 87 94 8c 13 73 69 6e 67 6c 65 68 74 ...man_show_urls..NN....singleht
1420 6d 6c 5f 73 69 64 65 62 61 72 73 94 6a 26 01 00 00 68 62 4e 87 94 68 41 68 42 4e 4e 87 94 8c 12 ml_sidebars.j&...hbN..hAhBNN....
1440 74 65 78 69 6e 66 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 texinfo_appendices.].NN....texin
1460 66 6f 5f 65 6c 65 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 fo_elements.}.NN....texinfo_doma
1480 69 6e 5f 69 6e 64 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 in_indices..NN....texinfo_show_u
14a0 72 6c 73 94 8c 08 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 rls...footnote.NN....texinfo_no_
14c0 64 65 74 61 69 6c 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 detailmenu..NN....text_sectionch
14e0 61 72 73 94 8c 07 2a 3d 2d 7e 22 2b 60 94 68 5d 4e 87 94 8c 0d 74 65 78 74 5f 6e 65 77 6c 69 6e ars...*=-~"+`.h]N....text_newlin
1500 65 73 94 8c 04 75 6e 69 78 94 68 5d 4e 87 94 8c 13 74 65 78 74 5f 61 64 64 5f 73 65 63 6e 75 6d es...unix.h]N....text_add_secnum
1520 62 65 72 73 94 88 68 5d 4e 87 94 8c 15 74 65 78 74 5f 73 65 63 6e 75 6d 62 65 72 5f 73 75 66 66 bers..h]N....text_secnumber_suff
1540 69 78 94 8c 02 2e 20 94 68 5d 4e 87 94 8c 0a 78 6d 6c 5f 70 72 65 74 74 79 94 88 68 5d 4e 87 94 ix......h]N....xml_pretty..h]N..
1560 8c 0f 63 5f 69 64 5f 61 74 74 72 69 62 75 74 65 73 94 5d 94 68 5d 4e 87 94 8c 12 63 5f 70 61 72 ..c_id_attributes.].h]N....c_par
1580 65 6e 5f 61 74 74 72 69 62 75 74 65 73 94 5d 94 68 5d 4e 87 94 8c 0e 63 5f 61 6c 6c 6f 77 5f 70 en_attributes.].h]N....c_allow_p
15a0 72 65 5f 76 33 94 89 68 5d 4e 87 94 8c 18 63 5f 77 61 72 6e 5f 6f 6e 5f 61 6c 6c 6f 77 65 64 5f re_v3..h]N....c_warn_on_allowed_
15c0 70 72 65 5f 76 33 94 88 68 5d 4e 87 94 8c 17 63 70 70 5f 69 6e 64 65 78 5f 63 6f 6d 6d 6f 6e 5f pre_v3..h]N....cpp_index_common_
15e0 70 72 65 66 69 78 94 5d 94 68 5d 4e 87 94 8c 11 63 70 70 5f 69 64 5f 61 74 74 72 69 62 75 74 65 prefix.].h]N....cpp_id_attribute
1600 73 94 5d 94 68 5d 4e 87 94 8c 14 63 70 70 5f 70 61 72 65 6e 5f 61 74 74 72 69 62 75 74 65 73 94 s.].h]N....cpp_paren_attributes.
1620 5d 94 68 5d 4e 87 94 8c 10 63 70 70 5f 64 65 62 75 67 5f 6c 6f 6f 6b 75 70 94 89 68 27 4e 87 94 ].h]N....cpp_debug_lookup..h'N..
1640 8c 13 63 70 70 5f 64 65 62 75 67 5f 73 68 6f 77 5f 74 72 65 65 94 89 68 27 4e 87 94 8c 19 73 74 ..cpp_debug_show_tree..h'N....st
1660 72 69 70 5f 73 69 67 6e 61 74 75 72 65 5f 62 61 63 6b 73 6c 61 73 68 94 89 68 5d 4e 87 94 8c 15 rip_signature_backslash..h]N....
1680 61 70 70 6c 65 68 65 6c 70 5f 62 75 6e 64 6c 65 5f 6e 61 6d 65 94 68 23 8c 09 61 70 70 6c 65 68 applehelp_bundle_name.h#..appleh
16a0 65 6c 70 94 4e 87 94 8c 13 61 70 70 6c 65 68 65 6c 70 5f 62 75 6e 64 6c 65 5f 69 64 94 4e 6a f9 elp.N....applehelp_bundle_id.Nj.
16c0 01 00 00 4e 87 94 8c 14 61 70 70 6c 65 68 65 6c 70 5f 64 65 76 5f 72 65 67 69 6f 6e 94 8c 05 65 ...N....applehelp_dev_region...e
16e0 6e 2d 75 73 94 6a f9 01 00 00 4e 87 94 8c 18 61 70 70 6c 65 68 65 6c 70 5f 62 75 6e 64 6c 65 5f n-us.j....N....applehelp_bundle_
1700 76 65 72 73 69 6f 6e 94 8c 01 31 94 6a f9 01 00 00 4e 87 94 8c 0e 61 70 70 6c 65 68 65 6c 70 5f version...1.j....N....applehelp_
1720 69 63 6f 6e 94 4e 6a f9 01 00 00 4e 87 94 8c 14 61 70 70 6c 65 68 65 6c 70 5f 6b 62 5f 70 72 6f icon.Nj....N....applehelp_kb_pro
1740 64 75 63 74 94 8c 09 4d 32 43 72 79 70 74 6f 2d 94 6a f9 01 00 00 4e 87 94 8c 10 61 70 70 6c 65 duct...M2Crypto-.j....N....apple
1760 68 65 6c 70 5f 6b 62 5f 75 72 6c 94 4e 6a f9 01 00 00 4e 87 94 8c 14 61 70 70 6c 65 68 65 6c 70 help_kb_url.Nj....N....applehelp
1780 5f 72 65 6d 6f 74 65 5f 75 72 6c 94 4e 6a f9 01 00 00 4e 87 94 8c 17 61 70 70 6c 65 68 65 6c 70 _remote_url.Nj....N....applehelp
17a0 5f 69 6e 64 65 78 5f 61 6e 63 68 6f 72 73 94 89 6a f9 01 00 00 4e 87 94 8c 19 61 70 70 6c 65 68 _index_anchors..j....N....appleh
17c0 65 6c 70 5f 6d 69 6e 5f 74 65 72 6d 5f 6c 65 6e 67 74 68 94 4e 6a f9 01 00 00 4e 87 94 8c 13 61 elp_min_term_length.Nj....N....a
17e0 70 70 6c 65 68 65 6c 70 5f 73 74 6f 70 77 6f 72 64 73 94 68 da 6a f9 01 00 00 4e 87 94 8c 10 61 pplehelp_stopwords.h.j....N....a
1800 70 70 6c 65 68 65 6c 70 5f 6c 6f 63 61 6c 65 94 68 da 6a f9 01 00 00 4e 87 94 8c 0f 61 70 70 6c pplehelp_locale.h.j....N....appl
1820 65 68 65 6c 70 5f 74 69 74 6c 65 94 8c 0d 4d 32 43 72 79 70 74 6f 20 48 65 6c 70 94 6a f9 01 00 ehelp_title...M2Crypto.Help.j...
1840 00 4e 87 94 8c 1b 61 70 70 6c 65 68 65 6c 70 5f 63 6f 64 65 73 69 67 6e 5f 69 64 65 6e 74 69 74 .N....applehelp_codesign_identit
1860 79 94 4e 6a f9 01 00 00 4e 87 94 8c 18 61 70 70 6c 65 68 65 6c 70 5f 63 6f 64 65 73 69 67 6e 5f y.Nj....N....applehelp_codesign_
1880 66 6c 61 67 73 94 5d 94 6a f9 01 00 00 4e 87 94 8c 16 61 70 70 6c 65 68 65 6c 70 5f 69 6e 64 65 flags.].j....N....applehelp_inde
18a0 78 65 72 5f 70 61 74 68 94 8c 0f 2f 75 73 72 2f 62 69 6e 2f 68 69 75 74 69 6c 94 6a f9 01 00 00 xer_path.../usr/bin/hiutil.j....
18c0 4e 87 94 8c 17 61 70 70 6c 65 68 65 6c 70 5f 63 6f 64 65 73 69 67 6e 5f 70 61 74 68 94 8c 11 2f N....applehelp_codesign_path.../
18e0 75 73 72 2f 62 69 6e 2f 63 6f 64 65 73 69 67 6e 94 6a f9 01 00 00 4e 87 94 8c 20 61 70 70 6c 65 usr/bin/codesign.j....N....apple
1900 68 65 6c 70 5f 64 69 73 61 62 6c 65 5f 65 78 74 65 72 6e 61 6c 5f 74 6f 6f 6c 73 94 89 6a f9 01 help_disable_external_tools..j..
1920 00 00 4e 87 94 8c 10 64 65 76 68 65 6c 70 5f 62 61 73 65 6e 61 6d 65 94 68 23 8c 07 64 65 76 68 ..N....devhelp_basename.h#..devh
1940 65 6c 70 94 4e 87 94 68 30 68 31 68 27 4e 87 94 8c 14 68 74 6d 6c 68 65 6c 70 5f 66 69 6c 65 5f elp.N..h0h1h'N....htmlhelp_file_
1960 73 75 66 66 69 78 94 4e 68 62 4e 87 94 8c 14 68 74 6d 6c 68 65 6c 70 5f 6c 69 6e 6b 5f 73 75 66 suffix.NhbN....htmlhelp_link_suf
1980 66 69 78 94 4e 68 62 4e 87 94 8c 0f 71 74 68 65 6c 70 5f 62 61 73 65 6e 61 6d 65 94 68 23 68 62 fix.NhbN....qthelp_basename.h#hb
19a0 4e 87 94 8c 10 71 74 68 65 6c 70 5f 6e 61 6d 65 73 70 61 63 65 94 4e 68 62 4e 87 94 8c 0c 71 74 N....qthelp_namespace.NhbN....qt
19c0 68 65 6c 70 5f 74 68 65 6d 65 94 8c 05 6e 6f 6e 61 76 94 68 62 4e 87 94 8c 14 71 74 68 65 6c 70 help_theme...nonav.hbN....qthelp
19e0 5f 74 68 65 6d 65 5f 6f 70 74 69 6f 6e 73 94 7d 94 68 62 4e 87 94 8c 11 61 75 74 6f 63 6c 61 73 _theme_options.}.hbN....autoclas
1a00 73 5f 63 6f 6e 74 65 6e 74 94 8c 05 63 6c 61 73 73 94 68 5d 4e 87 94 8c 14 61 75 74 6f 64 6f 63 s_content...class.h]N....autodoc
1a20 5f 6d 65 6d 62 65 72 5f 6f 72 64 65 72 94 8c 0c 61 6c 70 68 61 62 65 74 69 63 61 6c 94 68 5d 4e _member_order...alphabetical.h]N
1a40 87 94 8c 17 61 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 5d ....autodoc_default_options.}.h]
1a60 4e 87 94 8c 1b 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 N....autodoc_docstring_signature
1a80 94 88 68 5d 4e 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 ..h]N....autodoc_mock_imports.].
1aa0 68 5d 4e 87 94 8c 11 61 75 74 6f 64 6f 63 5f 74 79 70 65 68 69 6e 74 73 94 8c 09 73 69 67 6e 61 h]N....autodoc_typehints...signa
1ac0 74 75 72 65 94 68 5d 4e 87 94 8c 16 61 75 74 6f 64 6f 63 5f 77 61 72 6e 69 6e 67 69 73 65 72 72 ture.h]N....autodoc_warningiserr
1ae0 6f 72 94 88 68 5d 4e 87 94 68 5a 88 68 5d 4e 87 94 8c 0f 76 69 65 77 63 6f 64 65 5f 69 6d 70 6f or..h]N..hZ.h]N....viewcode_impo
1b00 72 74 94 4e 68 27 4e 87 94 8c 14 76 69 65 77 63 6f 64 65 5f 65 6e 61 62 6c 65 5f 65 70 75 62 94 rt.Nh'N....viewcode_enable_epub.
1b20 89 68 27 4e 87 94 8c 20 76 69 65 77 63 6f 64 65 5f 66 6f 6c 6c 6f 77 5f 69 6d 70 6f 72 74 65 64 .h'N....viewcode_follow_imported
1b40 5f 6d 65 6d 62 65 72 73 94 88 68 27 4e 87 94 75 75 62 8c 0d 63 6f 6e 66 69 67 5f 73 74 61 74 75 _members..h'N..uub..config_statu
1b60 73 94 4b 01 8c 13 63 6f 6e 66 69 67 5f 73 74 61 74 75 73 5f 65 78 74 72 61 94 68 27 8c 06 65 76 s.K...config_status_extra.h'..ev
1b80 65 6e 74 73 94 4e 68 22 8c 0e 73 70 68 69 6e 78 2e 70 72 6f 6a 65 63 74 94 8c 07 50 72 6f 6a 65 ents.Nh"..sphinx.project...Proje
1ba0 63 74 94 93 94 29 81 94 7d 94 28 68 08 68 09 68 1a 68 1e 8c 08 64 6f 63 6e 61 6d 65 73 94 8f 94 ct...)..}.(h.h.h.h...docnames...
1bc0 28 8c 08 68 6f 77 74 6f 2e 63 61 94 8c 10 5a 53 65 72 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 8c (..howto.ca...ZServerSSL-HOWTO..
1be0 0c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 8c 0b 68 6f 77 74 6f 2e 73 6d 69 6d 65 94 8c 09 68 6f .M2Crypto.SSL...howto.smime...ho
1c00 77 74 6f 2e 73 73 6c 94 8c 05 69 6e 64 65 78 94 8c 08 4d 32 43 72 79 70 74 6f 94 90 75 62 68 26 wto.ssl...index...M2Crypto..ubh&
1c20 7d 94 28 8c 10 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 63 94 4b 02 8c 18 73 70 68 69 6e 78 }.(..sphinx.domains.c.K...sphinx
1c40 2e 64 6f 6d 61 69 6e 73 2e 63 68 61 6e 67 65 73 65 74 94 4b 01 8c 17 73 70 68 69 6e 78 2e 64 6f .domains.changeset.K...sphinx.do
1c60 6d 61 69 6e 73 2e 63 69 74 61 74 69 6f 6e 94 4b 01 8c 12 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e mains.citation.K...sphinx.domain
1c80 73 2e 63 70 70 94 4b 03 8c 14 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 69 6e 64 65 78 94 4b s.cpp.K...sphinx.domains.index.K
1ca0 01 8c 19 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 6a 61 76 61 73 63 72 69 70 74 94 4b 02 8c ...sphinx.domains.javascript.K..
1cc0 13 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 6d 61 74 68 94 4b 02 8c 15 73 70 68 69 6e 78 2e .sphinx.domains.math.K...sphinx.
1ce0 64 6f 6d 61 69 6e 73 2e 70 79 74 68 6f 6e 94 4b 02 8c 12 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e domains.python.K...sphinx.domain
1d00 73 2e 72 73 74 94 4b 02 8c 12 73 70 68 69 6e 78 2e 64 6f 6d 61 69 6e 73 2e 73 74 64 94 4b 01 68 s.rst.K...sphinx.domains.std.K.h
1d20 16 4b 01 68 2d 4b 38 75 8c 14 76 65 72 73 69 6f 6e 69 6e 67 5f 63 6f 6e 64 69 74 69 6f 6e 94 89 .K.h-K8u..versioning_condition..
1d40 8c 12 76 65 72 73 69 6f 6e 69 6e 67 5f 63 6f 6d 70 61 72 65 94 89 8c 07 64 6f 6d 61 69 6e 73 94 ..versioning_compare....domains.
1d60 7d 94 8c 08 73 65 74 74 69 6e 67 73 94 7d 94 28 8c 10 65 6d 62 65 64 5f 73 74 79 6c 65 73 68 65 }...settings.}.(..embed_styleshe
1d80 65 74 94 89 8c 15 63 6c 6f 61 6b 5f 65 6d 61 69 6c 5f 61 64 64 72 65 73 73 65 73 94 88 8c 0c 70 et....cloak_email_addresses....p
1da0 65 70 5f 62 61 73 65 5f 75 72 6c 94 8c 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 70 79 74 68 6f 6e ep_base_url...https://www.python
1dc0 2e 6f 72 67 2f 64 65 76 2f 70 65 70 73 2f 94 8c 0e 70 65 70 5f 72 65 66 65 72 65 6e 63 65 73 94 .org/dev/peps/...pep_references.
1de0 4e 8c 0c 72 66 63 5f 62 61 73 65 5f 75 72 6c 94 8c 1c 68 74 74 70 73 3a 2f 2f 74 6f 6f 6c 73 2e N..rfc_base_url...https://tools.
1e00 69 65 74 66 2e 6f 72 67 2f 68 74 6d 6c 2f 94 8c 0e 72 66 63 5f 72 65 66 65 72 65 6e 63 65 73 94 ietf.org/html/...rfc_references.
1e20 4e 8c 0e 69 6e 70 75 74 5f 65 6e 63 6f 64 69 6e 67 94 68 76 8c 0e 64 6f 63 74 69 74 6c 65 5f 78 N..input_encoding.hv..doctitle_x
1e40 66 6f 72 6d 94 89 8c 12 73 65 63 74 73 75 62 74 69 74 6c 65 5f 78 66 6f 72 6d 94 89 8c 0a 68 61 form....sectsubtitle_xform....ha
1e60 6c 74 5f 6c 65 76 65 6c 94 4b 05 8c 16 66 69 6c 65 5f 69 6e 73 65 72 74 69 6f 6e 5f 65 6e 61 62 lt_level.K...file_insertion_enab
1e80 6c 65 64 94 88 8c 13 73 6d 61 72 74 71 75 6f 74 65 73 5f 6c 6f 63 61 6c 65 73 94 5d 94 68 5d 68 led....smartquotes_locales.].h]h
1ea0 03 68 82 89 8c 0d 6c 61 6e 67 75 61 67 65 5f 63 6f 64 65 94 68 da 8c 0c 73 6d 61 72 74 5f 71 75 .h....language_code.h...smart_qu
1ec0 6f 74 65 73 94 88 75 8c 08 61 6c 6c 5f 64 6f 63 73 94 7d 94 28 6a 60 02 00 00 47 41 d7 f3 e1 69 otes..u..all_docs.}.(j`...GA...i
1ee0 8f cf a1 6a 5c 02 00 00 47 41 d7 f3 e1 69 cb 6a da 6a 5b 02 00 00 47 41 d7 f3 e1 69 ce ea 48 6a ...j\...GA...i.j.j[...GA...i..Hj
1f00 5a 02 00 00 47 41 d7 f3 e1 69 d0 57 1b 6a 5d 02 00 00 47 41 d7 f3 e1 69 d2 c6 40 6a 5e 02 00 00 Z...GA...i.W.j]...GA...i..@j^...
1f20 47 41 d7 f3 e1 69 d3 c3 60 6a 5f 02 00 00 47 41 d7 f3 e1 69 d4 4a 49 75 8c 0c 64 65 70 65 6e 64 GA...i..`j_...GA...i.JIu..depend
1f40 65 6e 63 69 65 73 94 68 1b 8c 0b 64 65 66 61 75 6c 74 64 69 63 74 94 93 94 8c 08 62 75 69 6c 74 encies.h...defaultdict.....built
1f60 69 6e 73 94 8c 03 73 65 74 94 93 94 85 94 52 94 28 6a 60 02 00 00 8f 94 28 8c 17 2e 2e 2f 4d 32 ins...set.....R.(j`.....(..../M2
1f80 43 72 79 70 74 6f 2f 63 61 6c 6c 62 61 63 6b 2e 70 79 94 8c 15 2e 2e 2f 4d 32 43 72 79 70 74 6f Crypto/callback.py...../M2Crypto
1fa0 2f 45 6e 67 69 6e 65 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 /Engine.py...../M2Crypto/httpsli
1fc0 62 2e 70 79 94 8c 24 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 68 74 74 70 b.py..$/usr/lib64/python3.8/http
1fe0 2f 63 6f 6f 6b 69 65 73 2e 70 79 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 45 72 72 2e 70 79 /cookies.py...../M2Crypto/Err.py
2000 94 8c 1e 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 66 74 70 6c 69 62 2e 70 .../usr/lib64/python3.8/ftplib.p
2020 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 8c 14 2e y...../M2Crypto/threading.py....
2040 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 32 43 72 79 70 74 ./M2Crypto/SMIME.py...../M2Crypt
2060 6f 2f 42 49 4f 2e 70 79 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 52 53 41 2e 70 79 94 8c 12 o/BIO.py...../M2Crypto/RSA.py...
2080 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 52 43 34 2e 70 79 94 8c 27 2f 75 73 72 2f 6c 69 62 36 34 2f ../M2Crypto/RC4.py..'/usr/lib64/
20a0 70 79 74 68 6f 6e 33 2e 38 2f 75 72 6c 6c 69 62 2f 72 65 73 70 6f 6e 73 65 2e 70 79 94 8c 26 2f python3.8/urllib/response.py..&/
20c0 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 75 72 6c 6c 69 62 2f 72 65 71 75 65 usr/lib64/python3.8/urllib/reque
20e0 73 74 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 38 2f 73 6f 63 st.py.../usr/lib64/python3.8/soc
2100 6b 65 74 2e 70 79 94 8c 13 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 58 35 30 39 2e 70 79 94 8c 24 2f ket.py...../M2Crypto/X509.py..$/
2120 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 75 72 6c 6c 69 62 2f 70 61 72 73 65 usr/lib64/python3.8/urllib/parse
2140 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 70 79 94 .py...../M2Crypto/AuthCookie.py.
2160 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 6d 32 78 6d 6c 72 70 63 6c 69 62 2e 70 79 94 8c 24 2f ..../M2Crypto/m2xmlrpclib.py..$/
2180 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 75 72 6c 6c 69 62 2f 65 72 72 6f 72 usr/lib64/python3.8/urllib/error
21a0 2e 70 79 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 1e .py...../M2Crypto/m2crypto.py...
21c0 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 74 79 70 69 6e 67 2e 70 79 94 8c /usr/lib64/python3.8/typing.py..
21e0 1f 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 64 65 63 69 6d 61 6c 2e 70 79 ./usr/lib64/python3.8/decimal.py
2200 94 8c 11 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 44 48 2e 70 79 94 8c 16 2e 2e 2f 4d 32 43 72 79 70 ...../M2Crypto/DH.py...../M2Cryp
2220 74 6f 2f 66 74 70 73 6c 69 62 2e 70 79 94 8c 29 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 6f to/ftpslib.py..)/usr/lib64/pytho
2240 6e 33 2e 38 2f 64 69 73 74 75 74 69 6c 73 2f 76 65 72 73 69 6f 6e 2e 70 79 94 8c 11 2e 2e 2f 4d n3.8/distutils/version.py...../M
2260 32 43 72 79 70 74 6f 2f 42 4e 2e 70 79 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 44 53 41 2e 2Crypto/BN.py...../M2Crypto/DSA.
2280 70 79 94 8c 11 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 45 43 2e 70 79 94 8c 25 2f 75 73 72 2f 6c 69 py...../M2Crypto/EC.py..%/usr/li
22a0 62 36 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 78 6d 6c 72 70 63 2f 63 6c 69 65 6e 74 2e 70 79 94 8c b64/python3.8/xmlrpc/client.py..
22c0 13 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 75 74 69 6c 2e 70 79 94 8c 23 2f 75 73 72 2f 6c 69 62 36 .../M2Crypto/util.py..#/usr/lib6
22e0 34 2f 70 79 74 68 6f 6e 33 2e 38 2f 68 74 74 70 2f 63 6c 69 65 6e 74 2e 70 79 94 8c 17 2e 2e 2f 4/python3.8/http/client.py...../
2300 4d 32 43 72 79 70 74 6f 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 94 8c 18 2e 2e 2f 4d 32 43 72 79 70 M2Crypto/__init__.py...../M2Cryp
2320 74 6f 2f 6d 32 75 72 6c 6c 69 62 32 2e 70 79 94 8c 11 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 6d 32 to/m2urllib2.py...../M2Crypto/m2
2340 2e 70 79 94 8c 12 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 45 56 50 2e 70 79 94 8c 13 2e 2e 2f 4d 32 .py...../M2Crypto/EVP.py...../M2
2360 43 72 79 70 74 6f 2f 41 53 4e 31 2e 70 79 94 8c 20 2f 75 73 72 2f 6c 69 62 36 34 2f 70 79 74 68 Crypto/ASN1.py.../usr/lib64/pyth
2380 6f 6e 33 2e 38 2f 64 61 74 65 74 69 6d 65 2e 70 79 94 8c 13 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f on3.8/datetime.py...../M2Crypto/
23a0 52 61 6e 64 2e 70 79 94 8c 17 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 6d 32 75 72 6c 6c 69 62 2e 70 Rand.py...../M2Crypto/m2urllib.p
23c0 79 94 90 6a 5c 02 00 00 8f 94 28 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 53 65 73 y..j\.....(..../M2Crypto/SSL/Ses
23e0 73 69 6f 6e 2e 70 79 94 8c 21 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 73 73 6c 5f 64 69 sion.py..!../M2Crypto/SSL/ssl_di
2400 73 70 61 74 63 68 65 72 2e 70 79 94 8c 1b 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 5f 5f spatcher.py...../M2Crypto/SSL/__
2420 69 6e 69 74 5f 5f 2e 70 79 94 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 43 6f 6e 74 init__.py...../M2Crypto/SSL/Cont
2440 65 78 74 2e 70 79 94 8c 1a 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 43 68 65 63 6b 65 72 ext.py...../M2Crypto/SSL/Checker
2460 2e 70 79 94 8c 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 .py...../M2Crypto/SSL/timeout.py
2480 94 8c 19 2e 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 43 69 70 68 65 72 2e 70 79 94 8c 15 2e ...../M2Crypto/SSL/Cipher.py....
24a0 2e 2f 4d 32 43 72 79 70 74 6f 2f 53 53 4c 2f 63 62 2e 70 79 94 8c 1c 2e 2e 2f 4d 32 43 72 79 70 ./M2Crypto/SSL/cb.py...../M2Cryp
24c0 74 6f 2f 53 53 4c 2f 53 53 4c 53 65 72 76 65 72 2e 70 79 94 8c 1d 2e 2e 2f 4d 32 43 72 79 70 74 to/SSL/SSLServer.py...../M2Crypt
24e0 6f 2f 53 53 4c 2f 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 79 94 8c 29 2e 2e 2f 4d 32 43 72 79 70 74 o/SSL/Connection.py..)../M2Crypt
2500 6f 2f 53 53 4c 2f 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 70 79 94 o/SSL/TwistedProtocolWrapper.py.
2520 90 75 8c 08 69 6e 63 6c 75 64 65 64 94 6a 87 02 00 00 6a 8a 02 00 00 85 94 52 94 8c 0d 72 65 72 .u..included.j....j......R...rer
2540 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 87 02 00 00 6a 88 02 ead_always.....metadata.j....j..
2560 00 00 8c 04 64 69 63 74 94 93 94 85 94 52 94 28 6a 5b 02 00 00 7d 94 8c 06 6f 72 70 68 61 6e 94 ....dict.....R.(j[...}...orphan.
2580 68 27 73 6a 5a 02 00 00 7d 94 8c 06 6f 72 70 68 61 6e 94 68 27 73 6a 5d 02 00 00 7d 94 8c 06 6f h'sjZ...}...orphan.h'sj]...}...o
25a0 72 70 68 61 6e 94 68 27 73 6a 5e 02 00 00 7d 94 8c 06 6f 72 70 68 61 6e 94 68 27 73 75 8c 06 74 rphan.h'sj^...}...orphan.h'su..t
25c0 69 74 6c 65 73 94 7d 94 28 6a 60 02 00 00 8c 0e 64 6f 63 75 74 69 6c 73 2e 6e 6f 64 65 73 94 8c itles.}.(j`.....docutils.nodes..
25e0 05 74 69 74 6c 65 94 93 94 29 81 94 7d 94 28 8c 09 72 61 77 73 6f 75 72 63 65 94 68 27 8c 08 63 .title...)..}.(..rawsource.h'..c
2600 68 69 6c 64 72 65 6e 94 5d 94 6a d5 02 00 00 8c 04 54 65 78 74 94 93 94 8c 10 4d 32 43 72 79 70 hildren.].j......Text.....M2Cryp
2620 74 6f 20 50 61 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 10 4d 32 43 72 79 70 74 to.Package.....}.(j......M2Crypt
2640 6f 20 50 61 63 6b 61 67 65 94 8c 06 70 61 72 65 6e 74 94 6a d8 02 00 00 75 62 61 8c 0a 61 74 74 o.Package...parent.j....uba..att
2660 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 65 73 94 5d 94 8c ributes.}.(..ids.]...classes.]..
2680 05 6e 61 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 .names.]...dupnames.]...backrefs
26a0 94 5d 94 75 8c 07 74 61 67 6e 61 6d 65 94 6a d6 02 00 00 75 62 6a 5c 02 00 00 6a d7 02 00 00 29 .].u..tagname.j....ubj\...j....)
26c0 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0b 53 53 4c 20 50 61 ..}.(j....h'j....].j......SSL.Pa
26e0 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0b 53 53 4c 20 50 61 63 6b 61 67 65 94 ckage.....}.(j......SSL.Package.
2700 6a e4 02 00 00 6a f2 02 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....j....ubaj....}.(j....].j...
2720 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a d6 .].j....].j....].j....].uj....j.
2740 02 00 00 75 62 6a 5b 02 00 00 6a d7 02 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 ...ubj[...j....)..}.(j....h'j...
2760 00 5d 94 28 6a d5 02 00 00 8c 09 67 65 6e 65 72 61 74 65 64 94 93 94 29 81 94 7d 94 28 6a da 02 .].(j......generated...)..}.(j..
2780 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 08 31 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d ..h'j....].j......1............}
27a0 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 05 03 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 .(j....h'j....j....ubaj....}.(j.
27c0 02 00 00 5d 94 6a e9 02 00 00 5d 94 8c 07 73 65 63 74 6e 75 6d 94 61 6a eb 02 00 00 5d 94 6a ed ...].j....]...sectnum.aj....].j.
27e0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 8c 06 73 6f 75 72 63 65 94 ...].j....].uj....j......source.
2800 4e 8c 04 6c 69 6e 65 94 4e 6a e4 02 00 00 6a 00 03 00 00 75 62 6a de 02 00 00 8c 10 5a 53 65 72 N..line.Nj....j....ubj......ZSer
2820 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 10 5a 53 65 72 76 verSSL-HOWTO.....}.(j......ZServ
2840 65 72 53 53 4c 2d 48 4f 57 54 4f 94 6a e4 02 00 00 6a 00 03 00 00 75 62 65 6a e5 02 00 00 7d 94 erSSL-HOWTO.j....j....ubej....}.
2860 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
2880 00 00 5d 94 75 6a f1 02 00 00 6a d6 02 00 00 75 62 6a 5a 02 00 00 6a d7 02 00 00 29 81 94 7d 94 ..].uj....j....ubjZ...j....)..}.
28a0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 28 48 4f 57 54 4f 3a 20 43 72 65 (j....h'j....].j.....(HOWTO:.Cre
28c0 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 65 6e 53 53 4c 94 85 ating.your.own.CA.with.OpenSSL..
28e0 94 81 94 7d 94 28 6a da 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
2900 72 20 6f 77 6e 20 43 41 20 77 69 74 68 20 4f 70 65 6e 53 53 4c 94 6a e4 02 00 00 6a 20 03 00 00 r.own.CA.with.OpenSSL.j....j....
2920 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
2940 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a d6 02 00 00 75 62 6a 5d 02 00 00 j....].j....].uj....j....ubj]...
2960 6a d7 02 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 31 j....)..}.(j....h'j....].j.....1
2980 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 2f 4d 49 4d 45 20 69 6e 20 50 79 74 HOWTO:.Programming.S/MIME.in.Pyt
29a0 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 da 02 00 00 8c 31 hon.with.M2Crypto.....}.(j.....1
29c0 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 2f 4d 49 4d 45 20 69 6e 20 50 79 74 HOWTO:.Programming.S/MIME.in.Pyt
29e0 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 74 6f 94 6a e4 02 00 00 6a 2e 03 00 00 75 62 61 6a hon.with.M2Crypto.j....j....ubaj
2a00 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
2a20 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a d6 02 00 00 75 62 6a 5e 02 00 00 6a d7 02 00 .].j....].uj....j....ubj^...j...
2a40 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 2e 48 4f 57 54 .)..}.(j....h'j....].j......HOWT
2a60 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 69 74 O:.Programming.SSL.in.Python.wit
2a80 68 20 4d 32 43 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 2e 48 4f 57 54 4f 3a 20 h.M2Crypto.....}.(j......HOWTO:.
2aa0 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 69 74 68 20 4d Programming.SSL.in.Python.with.M
2ac0 32 43 72 79 70 74 6f 94 6a e4 02 00 00 6a 3c 03 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 2Crypto.j....j<...ubaj....}.(j..
2ae0 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
2b00 75 6a f1 02 00 00 6a d6 02 00 00 75 62 6a 5f 02 00 00 6a d7 02 00 00 29 81 94 7d 94 28 6a da 02 uj....j....ubj_...j....)..}.(j..
2b20 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 26 57 65 6c 63 6f 6d 65 20 74 6f 20 4d 32 43 ..h'j....].j.....&Welcome.to.M2C
2b40 72 79 70 74 6f e2 80 99 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 21 94 85 94 81 94 7d 94 28 rypto...s.documentation!.....}.(
2b60 6a da 02 00 00 8c 24 57 65 6c 63 6f 6d 65 20 74 6f 20 4d 32 43 72 79 70 74 6f 27 73 20 64 6f 63 j.....$Welcome.to.M2Crypto's.doc
2b80 75 6d 65 6e 74 61 74 69 6f 6e 21 94 6a e4 02 00 00 6a 4a 03 00 00 75 62 61 6a e5 02 00 00 7d 94 umentation!.j....jJ...ubaj....}.
2ba0 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
2bc0 00 00 5d 94 75 6a f1 02 00 00 6a d6 02 00 00 75 62 75 8c 0a 6c 6f 6e 67 74 69 74 6c 65 73 94 7d ..].uj....j....ubu..longtitles.}
2be0 94 28 6a 60 02 00 00 6a d8 02 00 00 6a 5c 02 00 00 6a f2 02 00 00 6a 5b 02 00 00 6a 00 03 00 00 .(j`...j....j\...j....j[...j....
2c00 6a 5a 02 00 00 6a 20 03 00 00 6a 5d 02 00 00 6a 2e 03 00 00 6a 5e 02 00 00 6a 3c 03 00 00 6a 5f jZ...j....j]...j....j^...j<...j_
2c20 02 00 00 6a 4a 03 00 00 75 8c 04 74 6f 63 73 94 7d 94 28 6a 60 02 00 00 6a d5 02 00 00 8c 0b 62 ...jJ...u..tocs.}.(j`...j......b
2c40 75 6c 6c 65 74 5f 6c 69 73 74 94 93 94 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d ullet_list...)..}.(j....h'j....]
2c60 94 6a d5 02 00 00 8c 09 6c 69 73 74 5f 69 74 65 6d 94 93 94 29 81 94 7d 94 28 6a da 02 00 00 68 .j......list_item...)..}.(j....h
2c80 27 6a db 02 00 00 5d 94 28 8c 0f 73 70 68 69 6e 78 2e 61 64 64 6e 6f 64 65 73 94 8c 11 63 6f 6d 'j....].(..sphinx.addnodes...com
2ca0 70 61 63 74 5f 70 61 72 61 67 72 61 70 68 94 93 94 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db pact_paragraph...)..}.(j....h'j.
2cc0 02 00 00 5d 94 6a d5 02 00 00 8c 09 72 65 66 65 72 65 6e 63 65 94 93 94 29 81 94 7d 94 28 6a da ...].j......reference...)..}.(j.
2ce0 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 10 4d 32 43 72 79 70 74 6f 20 50 61 63 6b ...h'j....].j......M2Crypto.Pack
2d00 61 67 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 6a e3 02 00 00 6a e4 02 00 00 6a 6e 03 00 00 75 age.....}.(j....j....j....jn...u
2d20 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
2d40 ed 02 00 00 5d 94 6a ef 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
2d60 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a f1 02 00 00 6a 6c 03 00 i.j`.....anchorname.h'uj....jl..
2d80 00 6a e4 02 00 00 6a 69 03 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....ji...ubaj....}.(j....].j..
2da0 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
2dc0 67 03 00 00 6a e4 02 00 00 6a 63 03 00 00 75 62 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 g...j....jc...ubj]...)..}.(j....
2de0 68 27 6a db 02 00 00 5d 94 28 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 h'j....].(jb...)..}.(j....h'j...
2e00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 .].jh...)..}.(j....h'j....].jm..
2e20 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a d5 02 00 00 8c 07 6c 69 74 .)..}.(j....h'j....].(j......lit
2e40 65 72 61 6c 94 93 94 29 81 94 7d 94 28 6a da 02 00 00 8c 0f 3a 6d 6f 64 3a 60 4d 32 43 72 79 70 eral...)..}.(j......:mod:`M2Cryp
2e60 74 6f 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 08 4d 32 43 72 79 70 74 6f 94 85 94 81 94 7d to`.j....].j......M2Crypto.....}
2e80 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 92 03 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 .(j....h'j....j....ubaj....}.(j.
2ea0 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 8c 04 78 72 65 66 94 8c 02 70 79 94 8c 06 70 79 2d 6d 6f ...].j....].(..xref...py...py-mo
2ec0 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 d.ej....].j....].j....].uj....j.
2ee0 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 8d 03 00 00 75 62 6a de 02 00 00 ...j....Nj....Nj....j....ubj....
2f00 8c 08 20 50 61 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 08 20 50 61 63 6b 61 67 ...Package.....}.(j.......Packag
2f20 65 94 6a e4 02 00 00 6a 8d 03 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 e.j....j....ubej....}.(j....].j.
2f40 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 ...].j....].j....].j....]...inte
2f60 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 rnal....refuri.j`.....anchorname
2f80 94 8c 04 23 69 64 31 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 8a 03 00 00 75 62 61 ...#id1.uj....jl...j....j....uba
2fa0 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
2fc0 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 87 03 00 00 ..].j....].uj....jg...j....j....
2fe0 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
3000 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 j....].j....].uj....ja...j....j.
3020 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 ...ubjb...)..}.(j....h'j....].jh
3040 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jm...)..}
3060 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 .(j....h'j....].(j....)..}.(j...
3080 00 8c 0b 3a 6d 6f 64 3a 60 41 53 4e 31 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 04 41 53 4e ...:mod:`ASN1`.j....].j......ASN
30a0 31 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a c7 03 00 00 75 62 61 6a e5 02 1.....}.(j....h'j....j....ubaj..
30c0 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 ..}.(j....].j....].(j......py...
30e0 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 py-mod.ej....].j....].j....].uj.
3100 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a c4 03 00 00 75 62 ...j....j....Nj....Nj....j....ub
3120 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f j.......Module.....}.(j.......Mo
3140 64 75 6c 65 94 6a e4 02 00 00 6a c4 03 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d dule.j....j....ubej....}.(j....]
3160 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 .j....].j....].j....].j....]...i
3180 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e nternal....refuri.j`.....anchorn
31a0 61 6d 65 94 8c 15 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 94 75 6a f1 02 ame...#module-M2Crypto.ASN1.uj..
31c0 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a c1 03 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jl...j....j....ubaj....}.(j...
31e0 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
3200 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a be 03 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a j....jg...j....j....ubaj....}.(j
3220 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 ....].j....].j....].j....].j....
3240 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 ].uj....ja...j....j....ubjb...).
3260 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 .}.(j....h'j....].jh...)..}.(j..
3280 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 ..h'j....].jm...)..}.(j....h'j..
32a0 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 11 3a 6d 6f 64 3a 60 41 75 74 ..].(j....)..}.(j......:mod:`Aut
32c0 68 43 6f 6f 6b 69 65 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 41 75 74 68 43 6f 6f 6b 69 hCookie`.j....].j......AuthCooki
32e0 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a fb 03 00 00 75 62 61 6a e5 02 e.....}.(j....h'j....j....ubaj..
3300 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 ..}.(j....].j....].(j......py...
3320 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 py-mod.ej....].j....].j....].uj.
3340 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a f8 03 00 00 75 62 ...j....j....Nj....Nj....j....ub
3360 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f j.......Module.....}.(j.......Mo
3380 64 75 6c 65 94 6a e4 02 00 00 6a f8 03 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d dule.j....j....ubej....}.(j....]
33a0 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 .j....].j....].j....].j....]...i
33c0 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e nternal....refuri.j`.....anchorn
33e0 61 6d 65 94 8c 1b 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 ame...#module-M2Crypto.AuthCooki
3400 65 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a f5 03 00 00 75 62 61 6a e5 02 00 00 7d e.uj....jl...j....j....ubaj....}
3420 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
3440 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a f2 03 00 00 75 62 61 6a e5 02 ...].uj....jg...j....j....ubaj..
3460 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
3480 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a .j....].uj....ja...j....j....ubj
34a0 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 b...)..}.(j....h'j....].jh...)..
34c0 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jm...)..}.(j...
34e0 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0a 3a 6d 6f .h'j....].(j....)..}.(j......:mo
3500 64 3a 60 42 49 4f 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 03 42 49 4f 94 85 94 81 94 7d 94 d:`BIO`.j....].j......BIO.....}.
3520 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 2f 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 (j....h'j....j/...ubaj....}.(j..
3540 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 ..].j....].(j......py...py-mod.e
3560 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 j....].j....].j....].uj....j....
3580 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 2c 04 00 00 75 62 6a de 02 00 00 8c 07 20 j....Nj....Nj....j,...ubj.......
35a0 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 Module.....}.(j.......Module.j..
35c0 00 00 6a 2c 04 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j,...ubej....}.(j....].j....].
35e0 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
3600 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 14 23 6d ...refuri.j`.....anchorname...#m
3620 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 42 49 4f 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 odule-M2Crypto.BIO.uj....jl...j.
3640 02 00 00 6a 29 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j)...ubaj....}.(j....].j....]
3660 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 .j....].j....].j....].uj....jg..
3680 00 6a e4 02 00 00 6a 26 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....j&...ubaj....}.(j....].j..
36a0 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
36c0 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 a...j....j....ubjb...)..}.(j....
36e0 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 h'j....].jh...)..}.(j....h'j....
3700 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 ].jm...)..}.(j....h'j....].(j...
3720 00 29 81 94 7d 94 28 6a da 02 00 00 8c 09 3a 6d 6f 64 3a 60 42 4e 60 94 6a db 02 00 00 5d 94 6a .)..}.(j......:mod:`BN`.j....].j
3740 de 02 00 00 8c 02 42 4e 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 63 04 00 ......BN.....}.(j....h'j....jc..
3760 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 .ubaj....}.(j....].j....].(j....
3780 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 ..py...py-mod.ej....].j....].j..
37a0 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 ..].uj....j....j....Nj....Nj....
37c0 6a 60 04 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 j`...ubj.......Module.....}.(j..
37e0 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 60 04 00 00 75 62 65 6a e5 02 00 00 7d 94 .....Module.j....j`...ubej....}.
3800 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
3820 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 60 02 00 00 8c 0a ..]...internal....refuri.j`.....
3840 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 42 4e anchorname...#module-M2Crypto.BN
3860 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 5d 04 00 00 75 62 61 6a e5 02 00 00 7d 94 .uj....jl...j....j]...ubaj....}.
3880 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
38a0 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 5a 04 00 00 75 62 61 6a e5 02 00 ..].uj....jg...j....jZ...ubaj...
38c0 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
38e0 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 j....].uj....ja...j....j....ubjb
3900 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jh...)..}
3920 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 .(j....h'j....].jm...)..}.(j....
3940 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 09 3a 6d 6f 64 h'j....].(j....)..}.(j......:mod
3960 3a 60 44 48 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 02 44 48 94 85 94 81 94 7d 94 28 6a da :`DH`.j....].j......DH.....}.(j.
3980 02 00 00 68 27 6a e4 02 00 00 6a 97 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d ...h'j....j....ubaj....}.(j....]
39a0 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 .j....].(j......py...py-mod.ej..
39c0 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 ..].j....].j....].uj....j....j..
39e0 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 94 04 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 ..Nj....Nj....j....ubj.......Mod
3a00 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a ule.....}.(j.......Module.j....j
3a20 94 04 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubej....}.(j....].j....].j..
3a40 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 ..].j....].j....]...internal....
3a60 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 13 23 6d 6f 64 75 refuri.j`.....anchorname...#modu
3a80 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 44 48 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a le-M2Crypto.DH.uj....jl...j....j
3aa0 91 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubaj....}.(j....].j....].j..
3ac0 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 ..].j....].j....].uj....jg...j..
3ae0 00 00 6a 8e 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
3b00 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 j....].j....].j....].uj....ja...
3b20 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db j....j....ubjb...)..}.(j....h'j.
3b40 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d ...].jh...)..}.(j....h'j....].jm
3b60 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 ...)..}.(j....h'j....].(j....)..
3b80 7d 94 28 6a da 02 00 00 8c 0a 3a 6d 6f 64 3a 60 44 53 41 60 94 6a db 02 00 00 5d 94 6a de 02 00 }.(j......:mod:`DSA`.j....].j...
3ba0 00 8c 03 44 53 41 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a cb 04 00 00 75 ...DSA.....}.(j....h'j....j....u
3bc0 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 baj....}.(j....].j....].(j......
3be0 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 py...py-mod.ej....].j....].j....
3c00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a c8 ].uj....j....j....Nj....Nj....j.
3c20 04 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 ...ubj.......Module.....}.(j....
3c40 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a c8 04 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a ...Module.j....j....ubej....}.(j
3c60 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 ....].j....].j....].j....].j....
3c80 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e ]...internal....refuri.j`.....an
3ca0 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 6f 2e 44 53 41 94 chorname...#module-M2Crypto.DSA.
3cc0 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a c5 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 uj....jl...j....j....ubaj....}.(
3ce0 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 j....].j....].j....].j....].j...
3d00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a c2 04 00 00 75 62 61 6a e5 02 00 00 .].uj....jg...j....j....ubaj....
3d20 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
3d40 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 ....].uj....ja...j....j....ubjb.
3d60 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].jh...)..}.
3d80 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jm...)..}.(j....h
3da0 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 09 3a 6d 6f 64 3a 'j....].(j....)..}.(j......:mod:
3dc0 60 45 43 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 02 45 43 94 85 94 81 94 7d 94 28 6a da 02 `EC`.j....].j......EC.....}.(j..
3de0 00 00 68 27 6a e4 02 00 00 6a ff 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 ..h'j....j....ubaj....}.(j....].
3e00 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 j....].(j......py...py-mod.ej...
3e20 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 .].j....].j....].uj....j....j...
3e40 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a fc 04 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 .Nj....Nj....j....ubj.......Modu
3e60 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a fc le.....}.(j.......Module.j....j.
3e80 04 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubej....}.(j....].j....].j...
3ea0 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 .].j....].j....]...internal....r
3ec0 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 13 23 6d 6f 64 75 6c efuri.j`.....anchorname...#modul
3ee0 65 2d 4d 32 43 72 79 70 74 6f 2e 45 43 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a f9 e-M2Crypto.EC.uj....jl...j....j.
3f00 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubaj....}.(j....].j....].j...
3f20 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 .].j....].j....].uj....jg...j...
3f40 00 6a f6 04 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
3f60 eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a ....].j....].j....].uj....ja...j
3f80 e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 ....j....ubjb...)..}.(j....h'j..
3fa0 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 ..].jh...)..}.(j....h'j....].jm.
3fc0 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d ..)..}.(j....h'j....].(j....)..}
3fe0 94 28 6a da 02 00 00 8c 0a 3a 6d 6f 64 3a 60 45 56 50 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 .(j......:mod:`EVP`.j....].j....
4000 8c 03 45 56 50 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 33 05 00 00 75 62 ..EVP.....}.(j....h'j....j3...ub
4020 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 aj....}.(j....].j....].(j......p
4040 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d y...py-mod.ej....].j....].j....]
4060 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 30 05 .uj....j....j....Nj....Nj....j0.
4080 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c ..ubj.......Module.....}.(j.....
40a0 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 30 05 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 ..Module.j....j0...ubej....}.(j.
40c0 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
40e0 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 ...internal....refuri.j`.....anc
4100 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 6f 2e 45 56 50 94 75 horname...#module-M2Crypto.EVP.u
4120 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 2d 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a j....jl...j....j-...ubaj....}.(j
4140 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 ....].j....].j....].j....].j....
4160 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 2a 05 00 00 75 62 61 6a e5 02 00 00 7d ].uj....jg...j....j*...ubaj....}
4180 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
41a0 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 ...].uj....ja...j....j....ubjb..
41c0 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jh...)..}.(
41e0 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 j....h'j....].jm...)..}.(j....h'
4200 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0d 3a 6d 6f 64 3a 60 j....].(j....)..}.(j......:mod:`
4220 45 6e 67 69 6e 65 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 06 45 6e 67 69 6e 65 94 85 94 81 Engine`.j....].j......Engine....
4240 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 67 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 .}.(j....h'j....jg...ubaj....}.(
4260 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f j....].j....].(j......py...py-mo
4280 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 d.ej....].j....].j....].uj....j.
42a0 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 64 05 00 00 75 62 6a de 02 00 00 ...j....Nj....Nj....jd...ubj....
42c0 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 ...Module.....}.(j.......Module.
42e0 6a e4 02 00 00 6a 64 05 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....jd...ubej....}.(j....].j...
4300 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e .].j....].j....].j....]...intern
4320 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c al....refuri.j`.....anchorname..
4340 17 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 94 75 6a f1 02 00 00 6a .#module-M2Crypto.Engine.uj....j
4360 6c 03 00 00 6a e4 02 00 00 6a 61 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 l...j....ja...ubaj....}.(j....].
4380 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
43a0 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 5e 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jg...j....j^...ubaj....}.(j...
43c0 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
43e0 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 j....ja...j....j....ubjb...)..}.
4400 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jh...)..}.(j....h
4420 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 'j....].jm...)..}.(j....h'j....]
4440 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0a 3a 6d 6f 64 3a 60 45 72 72 60 94 6a .(j....)..}.(j......:mod:`Err`.j
4460 db 02 00 00 5d 94 6a de 02 00 00 8c 03 45 72 72 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a ....].j......Err.....}.(j....h'j
4480 e4 02 00 00 6a 9b 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 ....j....ubaj....}.(j....].j....
44a0 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed ].(j......py...py-mod.ej....].j.
44c0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 ...].j....].uj....j....j....Nj..
44e0 00 00 4e 6a e4 02 00 00 6a 98 05 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 ..Nj....j....ubj.......Module...
4500 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 98 05 00 00 75 62 ..}.(j.......Module.j....j....ub
4520 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed ej....}.(j....].j....].j....].j.
4540 02 00 00 5d 94 6a ef 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
4560 94 6a 60 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 .j`.....anchorname...#module-M2C
4580 72 79 70 74 6f 2e 45 72 72 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 95 05 00 00 75 rypto.Err.uj....jl...j....j....u
45a0 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
45c0 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 92 05 ....].j....].uj....jg...j....j..
45e0 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
4600 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 ].j....].j....].uj....ja...j....
4620 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 j....ubjb...)..}.(j....h'j....].
4640 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 jh...)..}.(j....h'j....].jm...).
4660 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da .}.(j....h'j....].(j....)..}.(j.
4680 02 00 00 8c 0a 3a 6d 6f 64 3a 60 52 43 34 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 03 52 43 .....:mod:`RC4`.j....].j......RC
46a0 34 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a cf 05 00 00 75 62 61 6a e5 02 4.....}.(j....h'j....j....ubaj..
46c0 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 ..}.(j....].j....].(j......py...
46e0 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 py-mod.ej....].j....].j....].uj.
4700 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a cc 05 00 00 75 62 ...j....j....Nj....Nj....j....ub
4720 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f j.......Module.....}.(j.......Mo
4740 64 75 6c 65 94 6a e4 02 00 00 6a cc 05 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d dule.j....j....ubej....}.(j....]
4760 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 .j....].j....].j....].j....]...i
4780 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e nternal....refuri.j`.....anchorn
47a0 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 f1 02 00 ame...#module-M2Crypto.RC4.uj...
47c0 00 6a 6c 03 00 00 6a e4 02 00 00 6a c9 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .jl...j....j....ubaj....}.(j....
47e0 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
4800 f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a c6 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 ....jg...j....j....ubaj....}.(j.
4820 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
4840 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 .uj....ja...j....j....ubjb...)..
4860 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jh...)..}.(j...
4880 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 .h'j....].jm...)..}.(j....h'j...
48a0 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0a 3a 6d 6f 64 3a 60 52 53 41 60 .].(j....)..}.(j......:mod:`RSA`
48c0 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 03 52 53 41 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 .j....].j......RSA.....}.(j....h
48e0 27 6a e4 02 00 00 6a 03 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 'j....j....ubaj....}.(j....].j..
4900 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 ..].(j......py...py-mod.ej....].
4920 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a j....].j....].uj....j....j....Nj
4940 14 03 00 00 4e 6a e4 02 00 00 6a 00 06 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 ....Nj....j....ubj.......Module.
4960 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 00 06 00 00 ....}.(j.......Module.j....j....
4980 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubej....}.(j....].j....].j....].
49a0 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 j....].j....]...internal....refu
49c0 72 69 94 6a 60 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 ri.j`.....anchorname...#module-M
49e0 32 43 72 79 70 74 6f 2e 52 53 41 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a fd 05 00 2Crypto.RSA.uj....jl...j....j...
4a00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
4a20 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a .j....].j....].uj....jg...j....j
4a40 fa 05 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubaj....}.(j....].j....].j..
4a60 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 ..].j....].j....].uj....ja...j..
4a80 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 ..j....ubjb...)..}.(j....h'j....
4aa0 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 ].jh...)..}.(j....h'j....].jm...
4ac0 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 )..}.(j....h'j....].(j....)..}.(
4ae0 6a da 02 00 00 8c 0b 3a 6d 6f 64 3a 60 52 61 6e 64 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c j......:mod:`Rand`.j....].j.....
4b00 04 52 61 6e 64 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 37 06 00 00 75 62 .Rand.....}.(j....h'j....j7...ub
4b20 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 aj....}.(j....].j....].(j......p
4b40 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d y...py-mod.ej....].j....].j....]
4b60 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 34 06 .uj....j....j....Nj....Nj....j4.
4b80 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c ..ubj.......Module.....}.(j.....
4ba0 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 34 06 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 ..Module.j....j4...ubej....}.(j.
4bc0 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
4be0 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 ...internal....refuri.j`.....anc
4c00 68 6f 72 6e 61 6d 65 94 8c 15 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 94 horname...#module-M2Crypto.Rand.
4c20 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 31 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 uj....jl...j....j1...ubaj....}.(
4c40 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 j....].j....].j....].j....].j...
4c60 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 2e 06 00 00 75 62 61 6a e5 02 00 00 .].uj....jg...j....j....ubaj....
4c80 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
4ca0 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 ....].uj....ja...j....j....ubjb.
4cc0 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].jh...)..}.
4ce0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jm...)..}.(j....h
4d00 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0c 3a 6d 6f 64 3a 'j....].(j....)..}.(j......:mod:
4d20 60 53 4d 49 4d 45 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 05 53 4d 49 4d 45 94 85 94 81 94 `SMIME`.j....].j......SMIME.....
4d40 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 6b 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a }.(j....h'j....jk...ubaj....}.(j
4d60 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 ....].j....].(j......py...py-mod
4d80 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 .ej....].j....].j....].uj....j..
4da0 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 68 06 00 00 75 62 6a de 02 00 00 8c ..j....Nj....Nj....jh...ubj.....
4dc0 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a ..Module.....}.(j.......Module.j
4de0 e4 02 00 00 6a 68 06 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 ....jh...ubej....}.(j....].j....
4e00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 ].j....].j....].j....]...interna
4e20 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 16 l....refuri.j`.....anchorname...
4e40 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 75 6a f1 02 00 00 6a 6c 03 #module-M2Crypto.SMIME.uj....jl.
4e60 00 00 6a e4 02 00 00 6a 65 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 ..j....je...ubaj....}.(j....].j.
4e80 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 ...].j....].j....].j....].uj....
4ea0 6a 67 03 00 00 6a e4 02 00 00 6a 62 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d jg...j....jb...ubaj....}.(j....]
4ec0 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 .j....].j....].j....].j....].uj.
4ee0 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a ...ja...j....j....ubjb...)..}.(j
4f00 da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a ....h'j....].jh...)..}.(j....h'j
4f20 db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 ....].jm...)..}.(j....h'j....].(
4f40 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0b 3a 6d 6f 64 3a 60 58 35 30 39 60 94 6a db j....)..}.(j......:mod:`X509`.j.
4f60 02 00 00 5d 94 6a de 02 00 00 8c 04 58 35 30 39 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a ...].j......X509.....}.(j....h'j
4f80 e4 02 00 00 6a 9f 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 ....j....ubaj....}.(j....].j....
4fa0 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed ].(j......py...py-mod.ej....].j.
4fc0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 ...].j....].uj....j....j....Nj..
4fe0 00 00 4e 6a e4 02 00 00 6a 9c 06 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 ..Nj....j....ubj.......Module...
5000 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 9c 06 00 00 75 62 ..}.(j.......Module.j....j....ub
5020 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed ej....}.(j....].j....].j....].j.
5040 02 00 00 5d 94 6a ef 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
5060 94 6a 60 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 .j`.....anchorname...#module-M2C
5080 72 79 70 74 6f 2e 58 35 30 39 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 99 06 00 00 rypto.X509.uj....jl...j....j....
50a0 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
50c0 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 96 j....].j....].uj....jg...j....j.
50e0 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubaj....}.(j....].j....].j...
5100 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 .].j....].j....].uj....ja...j...
5120 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d .j....ubjb...)..}.(j....h'j....]
5140 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 .jh...)..}.(j....h'j....].jm...)
5160 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a ..}.(j....h'j....].(j....)..}.(j
5180 da 02 00 00 8c 0f 3a 6d 6f 64 3a 60 63 61 6c 6c 62 61 63 6b 60 94 6a db 02 00 00 5d 94 6a de 02 ......:mod:`callback`.j....].j..
51a0 00 00 8c 08 63 61 6c 6c 62 61 63 6b 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 ....callback.....}.(j....h'j....
51c0 6a d3 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a j....ubaj....}.(j....].j....].(j
51e0 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ......py...py-mod.ej....].j....]
5200 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a .j....].uj....j....j....Nj....Nj
5220 e4 02 00 00 6a d0 06 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 ....j....ubj.......Module.....}.
5240 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a d0 06 00 00 75 62 65 6a e5 02 (j.......Module.j....j....ubej..
5260 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
5280 94 6a ef 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 60 02 .j....]...internal....refuri.j`.
52a0 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 43 72 79 70 74 ....anchorname...#module-M2Crypt
52c0 6f 2e 63 61 6c 6c 62 61 63 6b 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a cd 06 00 00 o.callback.uj....jl...j....j....
52e0 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
5300 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a ca j....].j....].uj....jg...j....j.
5320 06 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubaj....}.(j....].j....].j...
5340 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 .].j....].j....].uj....ja...j...
5360 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d .j....ubjb...)..}.(j....h'j....]
5380 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 .jh...)..}.(j....h'j....].jm...)
53a0 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a ..}.(j....h'j....].(j....)..}.(j
53c0 da 02 00 00 8c 0e 3a 6d 6f 64 3a 60 66 74 70 73 6c 69 62 60 94 6a db 02 00 00 5d 94 6a de 02 00 ......:mod:`ftpslib`.j....].j...
53e0 00 8c 07 66 74 70 73 6c 69 62 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 07 ...ftpslib.....}.(j....h'j....j.
5400 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 ...ubaj....}.(j....].j....].(j..
5420 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ....py...py-mod.ej....].j....].j
5440 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 ....].uj....j....j....Nj....Nj..
5460 00 00 6a 04 07 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a ..j....ubj.......Module.....}.(j
5480 da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 04 07 00 00 75 62 65 6a e5 02 00 00 .......Module.j....j....ubej....
54a0 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
54c0 ef 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 60 02 00 00 ....]...internal....refuri.j`...
54e0 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 18 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e ..anchorname...#module-M2Crypto.
5500 66 74 70 73 6c 69 62 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 01 07 00 00 75 62 61 ftpslib.uj....jl...j....j....uba
5520 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
5540 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a fe 06 00 00 ..].j....].uj....jg...j....j....
5560 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
5580 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 j....].j....].uj....ja...j....j.
55a0 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 ...ubjb...)..}.(j....h'j....].jh
55c0 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jm...)..}
55e0 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 .(j....h'j....].(j....)..}.(j...
5600 00 8c 0f 3a 6d 6f 64 3a 60 68 74 74 70 73 6c 69 62 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c ...:mod:`httpslib`.j....].j.....
5620 08 68 74 74 70 73 6c 69 62 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 3b 07 .httpslib.....}.(j....h'j....j;.
5640 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 ..ubaj....}.(j....].j....].(j...
5660 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef ...py...py-mod.ej....].j....].j.
5680 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 ...].uj....j....j....Nj....Nj...
56a0 00 6a 38 07 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da .j8...ubj.......Module.....}.(j.
56c0 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 38 07 00 00 75 62 65 6a e5 02 00 00 7d ......Module.j....j8...ubej....}
56e0 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
5700 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 60 02 00 00 8c ...]...internal....refuri.j`....
5720 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 68 .anchorname...#module-M2Crypto.h
5740 74 74 70 73 6c 69 62 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 35 07 00 00 75 62 61 ttpslib.uj....jl...j....j5...uba
5760 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
5780 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 32 07 00 00 ..].j....].uj....jg...j....j2...
57a0 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
57c0 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 j....].j....].uj....ja...j....j.
57e0 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 ...ubjb...)..}.(j....h'j....].jh
5800 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jm...)..}
5820 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 .(j....h'j....].(j....)..}.(j...
5840 00 8c 09 3a 6d 6f 64 3a 60 6d 32 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 02 6d 32 94 85 94 ...:mod:`m2`.j....].j......m2...
5860 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 6f 07 00 00 75 62 61 6a e5 02 00 00 7d 94 ..}.(j....h'j....jo...ubaj....}.
5880 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d (j....].j....].(j......py...py-m
58a0 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a od.ej....].j....].j....].uj....j
58c0 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 6c 07 00 00 75 62 6a de 02 00 ....j....Nj....Nj....jl...ubj...
58e0 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 ....Module.....}.(j.......Module
5900 94 6a e4 02 00 00 6a 6c 07 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....jl...ubej....}.(j....].j..
5920 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 ..].j....].j....].j....]...inter
5940 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 nal....refuri.j`.....anchorname.
5960 8c 13 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 94 75 6a f1 02 00 00 6a 6c 03 00 ..#module-M2Crypto.m2.uj....jl..
5980 00 6a e4 02 00 00 6a 69 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....ji...ubaj....}.(j....].j..
59a0 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
59c0 67 03 00 00 6a e4 02 00 00 6a 66 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 g...j....jf...ubaj....}.(j....].
59e0 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
5a00 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da ..ja...j....j....ubjb...)..}.(j.
5a20 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db ...h'j....].jh...)..}.(j....h'j.
5a40 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a ...].jm...)..}.(j....h'j....].(j
5a60 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0f 3a 6d 6f 64 3a 60 6d 32 63 72 79 70 74 6f 60 ....)..}.(j......:mod:`m2crypto`
5a80 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 08 6d 32 63 72 79 70 74 6f 94 85 94 81 94 7d 94 28 6a .j....].j......m2crypto.....}.(j
5aa0 da 02 00 00 68 27 6a e4 02 00 00 6a a3 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 ....h'j....j....ubaj....}.(j....
5ac0 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb ].j....].(j......py...py-mod.ej.
5ae0 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 ...].j....].j....].uj....j....j.
5b00 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a a0 07 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f ...Nj....Nj....j....ubj.......Mo
5b20 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 dule.....}.(j.......Module.j....
5b40 6a a0 07 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubej....}.(j....].j....].j.
5b60 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c ...].j....].j....]...internal...
5b80 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 19 23 6d 6f 64 .refuri.j`.....anchorname...#mod
5ba0 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 63 72 79 70 74 6f 94 75 6a f1 02 00 00 6a 6c 03 00 ule-M2Crypto.m2crypto.uj....jl..
5bc0 00 6a e4 02 00 00 6a 9d 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....j....ubaj....}.(j....].j..
5be0 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
5c00 67 03 00 00 6a e4 02 00 00 6a 9a 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 g...j....j....ubaj....}.(j....].
5c20 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
5c40 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da ..ja...j....j....ubjb...)..}.(j.
5c60 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db ...h'j....].jh...)..}.(j....h'j.
5c80 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a ...].jm...)..}.(j....h'j....].(j
5ca0 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0f 3a 6d 6f 64 3a 60 6d 32 75 72 6c 6c 69 62 60 ....)..}.(j......:mod:`m2urllib`
5cc0 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 08 6d 32 75 72 6c 6c 69 62 94 85 94 81 94 7d 94 28 6a .j....].j......m2urllib.....}.(j
5ce0 da 02 00 00 68 27 6a e4 02 00 00 6a d7 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 ....h'j....j....ubaj....}.(j....
5d00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb ].j....].(j......py...py-mod.ej.
5d20 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 ...].j....].j....].uj....j....j.
5d40 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a d4 07 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f ...Nj....Nj....j....ubj.......Mo
5d60 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 dule.....}.(j.......Module.j....
5d80 6a d4 07 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubej....}.(j....].j....].j.
5da0 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c ...].j....].j....]...internal...
5dc0 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 19 23 6d 6f 64 .refuri.j`.....anchorname...#mod
5de0 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 94 75 6a f1 02 00 00 6a 6c 03 00 ule-M2Crypto.m2urllib.uj....jl..
5e00 00 6a e4 02 00 00 6a d1 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....j....ubaj....}.(j....].j..
5e20 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
5e40 67 03 00 00 6a e4 02 00 00 6a ce 07 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 g...j....j....ubaj....}.(j....].
5e60 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
5e80 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da ..ja...j....j....ubjb...)..}.(j.
5ea0 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db ...h'j....].jh...)..}.(j....h'j.
5ec0 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a ...].jm...)..}.(j....h'j....].(j
5ee0 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 10 3a 6d 6f 64 3a 60 6d 32 75 72 6c 6c 69 62 32 ....)..}.(j......:mod:`m2urllib2
5f00 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 09 6d 32 75 72 6c 6c 69 62 32 94 85 94 81 94 7d 94 `.j....].j......m2urllib2.....}.
5f20 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 0b 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 (j....h'j....j....ubaj....}.(j..
5f40 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 ..].j....].(j......py...py-mod.e
5f60 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 j....].j....].j....].uj....j....
5f80 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 08 08 00 00 75 62 6a de 02 00 00 8c 07 20 j....Nj....Nj....j....ubj.......
5fa0 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 Module.....}.(j.......Module.j..
5fc0 00 00 6a 08 08 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubej....}.(j....].j....].
5fe0 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
6000 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1a 23 6d ...refuri.j`.....anchorname...#m
6020 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 75 6a f1 02 00 00 6a odule-M2Crypto.m2urllib2.uj....j
6040 6c 03 00 00 6a e4 02 00 00 6a 05 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 l...j....j....ubaj....}.(j....].
6060 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
6080 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 02 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jg...j....j....ubaj....}.(j...
60a0 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
60c0 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 j....ja...j....j....ubjb...)..}.
60e0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jh...)..}.(j....h
6100 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 'j....].jm...)..}.(j....h'j....]
6120 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 12 3a 6d 6f 64 3a 60 6d 32 78 6d 6c 72 .(j....)..}.(j......:mod:`m2xmlr
6140 70 63 6c 69 62 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0b 6d 32 78 6d 6c 72 70 63 6c 69 62 pclib`.j....].j......m2xmlrpclib
6160 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 3f 08 00 00 75 62 61 6a e5 02 00 .....}.(j....h'j....j?...ubaj...
6180 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 .}.(j....].j....].(j......py...p
61a0 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 y-mod.ej....].j....].j....].uj..
61c0 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 3c 08 00 00 75 62 6a ..j....j....Nj....Nj....j<...ubj
61e0 de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 .......Module.....}.(j.......Mod
6200 75 6c 65 94 6a e4 02 00 00 6a 3c 08 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 ule.j....j<...ubej....}.(j....].
6220 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e j....].j....].j....].j....]...in
6240 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 ternal....refuri.j`.....anchorna
6260 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 6c 69 me...#module-M2Crypto.m2xmlrpcli
6280 62 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 39 08 00 00 75 62 61 6a e5 02 00 00 7d b.uj....jl...j....j9...ubaj....}
62a0 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
62c0 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 36 08 00 00 75 62 61 6a e5 02 ...].uj....jg...j....j6...ubaj..
62e0 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
6300 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a .j....].uj....ja...j....j....ubj
6320 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 b...)..}.(j....h'j....].jh...)..
6340 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jm...)..}.(j...
6360 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 10 3a 6d 6f .h'j....].(j....)..}.(j......:mo
6380 64 3a 60 74 68 72 65 61 64 69 6e 67 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 09 74 68 72 65 d:`threading`.j....].j......thre
63a0 61 64 69 6e 67 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 73 08 00 00 75 62 ading.....}.(j....h'j....js...ub
63c0 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 aj....}.(j....].j....].(j......p
63e0 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d y...py-mod.ej....].j....].j....]
6400 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 70 08 .uj....j....j....Nj....Nj....jp.
6420 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c ..ubj.......Module.....}.(j.....
6440 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 70 08 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 ..Module.j....jp...ubej....}.(j.
6460 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
6480 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 ...internal....refuri.j`.....anc
64a0 68 6f 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 74 68 72 65 61 horname...#module-M2Crypto.threa
64c0 64 69 6e 67 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 6d 08 00 00 75 62 61 6a e5 02 ding.uj....jl...j....jm...ubaj..
64e0 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
6500 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 6a 08 00 00 75 62 61 .j....].uj....jg...j....jj...uba
6520 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
6540 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 ..].j....].uj....ja...j....j....
6560 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 ubjb...)..}.(j....h'j....].jh...
6580 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].jm...)..}.(j
65a0 da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0b ....h'j....].(j....)..}.(j......
65c0 3a 6d 6f 64 3a 60 75 74 69 6c 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 04 75 74 69 6c 94 85 :mod:`util`.j....].j......util..
65e0 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a a7 08 00 00 75 62 61 6a e5 02 00 00 7d ...}.(j....h'j....j....ubaj....}
6600 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d .(j....].j....].(j......py...py-
6620 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 mod.ej....].j....].j....].uj....
6640 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a a4 08 00 00 75 62 6a de 02 j....j....Nj....Nj....j....ubj..
6660 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c .....Module.....}.(j.......Modul
6680 65 94 6a e4 02 00 00 6a a4 08 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 e.j....j....ubej....}.(j....].j.
66a0 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 ...].j....].j....].j....]...inte
66c0 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 60 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 rnal....refuri.j`.....anchorname
66e0 94 8c 15 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 94 75 6a f1 02 00 00 6a ...#module-M2Crypto.util.uj....j
6700 6c 03 00 00 6a e4 02 00 00 6a a1 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 l...j....j....ubaj....}.(j....].
6720 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
6740 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 9e 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jg...j....j....ubaj....}.(j...
6760 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
6780 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 j....ja...j....j....ubjb...)..}.
67a0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 (j....h'j....].(jh...)..}.(j....
67c0 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 h'j....].jm...)..}.(j....h'j....
67e0 5d 94 6a de 02 00 00 8c 0b 53 75 62 70 61 63 6b 61 67 65 73 94 85 94 81 94 7d 94 28 6a da 02 00 ].j......Subpackages.....}.(j...
6800 00 8c 0b 53 75 62 70 61 63 6b 61 67 65 73 94 6a e4 02 00 00 6a d8 08 00 00 75 62 61 6a e5 02 00 ...Subpackages.j....j....ubaj...
6820 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
6840 6a ef 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 60 02 00 j....]...internal....refuri.j`..
6860 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0c 23 73 75 62 70 61 63 6b 61 67 65 73 94 75 6a f1 ...anchorname...#subpackages.uj.
6880 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a d5 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 ...jl...j....j....ubaj....}.(j..
68a0 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
68c0 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a d2 08 00 00 75 62 6a 5d 03 00 00 29 81 94 7d uj....jg...j....j....ubj]...)..}
68e0 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 66 03 00 00 8c 07 74 6f 63 74 72 65 65 94 93 .(j....h'j....].jf.....toctree..
6900 94 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a e5 02 00 00 7d 94 28 6a e7 02 .)..}.(j....h'j....].j....}.(j..
6920 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
6940 8c 06 70 61 72 65 6e 74 94 6a 60 02 00 00 8c 07 65 6e 74 72 69 65 73 94 5d 94 4e 8c 0c 4d 32 43 ..parent.j`.....entries.].N..M2C
6960 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 73 94 5d 94 6a 01 rypto.SSL...a..includefiles.].j.
6980 09 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 69 6f 6e 94 4e 8c ...a..maxdepth.J......caption.N.
69a0 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 68 69 64 64 65 6e .glob....hidden....includehidden
69c0 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 79 94 89 8c 0a 72 ....numbered.K...titlesonly....r
69e0 61 77 65 6e 74 72 69 65 73 94 5d 94 75 6a f1 02 00 00 6a f3 08 00 00 6a 13 03 00 00 8c 3b 2f 68 awentries.].uj....j....j.....;/h
6a00 6f 6d 65 2f 6d 61 74 65 6a 2f 61 72 63 68 69 76 2f 6b 6e 69 68 6f 76 6e 61 2f 72 65 70 6f 73 2f ome/matej/archiv/knihovna/repos/
6a20 6d 32 63 72 79 70 74 6f 2f 64 6f 63 2f 4d 32 43 72 79 70 74 6f 2e 72 73 74 94 6a 14 03 00 00 4b m2crypto/doc/M2Crypto.rst.j....K
6a40 d7 6a e4 02 00 00 6a f0 08 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....j....ubaj....}.(j....].j..
6a60 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
6a80 5c 03 00 00 6a e4 02 00 00 6a d2 08 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 \...j....j....ubej....}.(j....].
6aa0 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
6ac0 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 84 03 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..ja...j....j....ubej....}.(j...
6ae0 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
6b00 6a f1 02 00 00 6a 5c 03 00 00 6a e4 02 00 00 6a 63 03 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a j....j\...j....jc...ubej....}.(j
6b20 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 ....].j....].j....].j....].j....
6b40 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 5e 03 00 00 75 62 61 6a e5 02 00 00 7d ].uj....ja...j....j^...ubaj....}
6b60 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
6b80 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 75 62 6a 5c 02 00 00 6a 5d 03 00 00 29 81 94 7d ...].uj....j\...ubj\...j]...)..}
6ba0 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 .(j....h'j....].jb...)..}.(j....
6bc0 68 27 6a db 02 00 00 5d 94 28 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 h'j....].(jh...)..}.(j....h'j...
6be0 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 .].jm...)..}.(j....h'j....].j...
6c00 00 8c 0b 53 53 4c 20 50 61 63 6b 61 67 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 6a f9 02 00 00 ...SSL.Package.....}.(j....j....
6c20 6a e4 02 00 00 6a 36 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....j6...ubaj....}.(j....].j...
6c40 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e .].j....].j....].j....]...intern
6c60 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 68 al....refuri.j\.....anchorname.h
6c80 27 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 33 09 00 00 75 62 61 6a e5 02 00 00 7d 94 'uj....jl...j....j3...ubaj....}.
6ca0 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
6cc0 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 30 09 00 00 75 62 6a 5d 03 00 00 ..].uj....jg...j....j0...ubj]...
6ce0 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 62 03 00 00 29 81 94 7d 94 28 )..}.(j....h'j....].(jb...)..}.(
6d00 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 j....h'j....].jh...)..}.(j....h'
6d20 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 j....].jm...)..}.(j....h'j....].
6d40 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0a 3a 6d 6f 64 3a 60 53 53 4c 60 94 6a db (j....)..}.(j......:mod:`SSL`.j.
6d60 02 00 00 5d 94 6a de 02 00 00 8c 03 53 53 4c 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 ...].j......SSL.....}.(j....h'j.
6d80 02 00 00 6a 58 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...jX...ubaj....}.(j....].j....]
6da0 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 .(j......py...py-mod.ej....].j..
6dc0 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 ..].j....].uj....j....j....Nj...
6de0 00 4e 6a e4 02 00 00 6a 55 09 00 00 75 62 6a de 02 00 00 8c 08 20 50 61 63 6b 61 67 65 94 85 94 .Nj....jU...ubj.......Package...
6e00 81 94 7d 94 28 6a da 02 00 00 8c 08 20 50 61 63 6b 61 67 65 94 6a e4 02 00 00 6a 55 09 00 00 75 ..}.(j.......Package.j....jU...u
6e20 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a bej....}.(j....].j....].j....].j
6e40 ed 02 00 00 5d 94 6a ef 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
6e60 69 94 6a 5c 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 04 23 69 64 31 94 75 6a f1 02 00 i.j\.....anchorname...#id1.uj...
6e80 00 6a 6c 03 00 00 6a e4 02 00 00 6a 52 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .jl...j....jR...ubaj....}.(j....
6ea0 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
6ec0 f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 4f 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 ....jg...j....jO...ubaj....}.(j.
6ee0 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
6f00 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 94 .uj....ja...j....jL...ubjb...)..
6f20 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jh...)..}.(j...
6f40 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 .h'j....].jm...)..}.(j....h'j...
6f60 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0e 3a 6d 6f 64 3a 60 43 68 65 63 .].(j....)..}.(j......:mod:`Chec
6f80 6b 65 72 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 07 43 68 65 63 6b 65 72 94 85 94 81 94 7d ker`.j....].j......Checker.....}
6fa0 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 8c 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 .(j....h'j....j....ubaj....}.(j.
6fc0 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 ...].j....].(j......py...py-mod.
6fe0 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 ej....].j....].j....].uj....j...
7000 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 89 09 00 00 75 62 6a de 02 00 00 8c 07 .j....Nj....Nj....j....ubj......
7020 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 .Module.....}.(j.......Module.j.
7040 02 00 00 6a 89 09 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j....ubej....}.(j....].j....]
7060 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c .j....].j....].j....]...internal
7080 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 1c 23 ....refuri.j\.....anchorname...#
70a0 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 75 6a f1 02 module-M2Crypto.SSL.Checker.uj..
70c0 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 86 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jl...j....j....ubaj....}.(j...
70e0 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
7100 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 83 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a j....jg...j....j....ubaj....}.(j
7120 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 ....].j....].j....].j....].j....
7140 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 ].uj....ja...j....jL...ubjb...).
7160 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 .}.(j....h'j....].jh...)..}.(j..
7180 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 ..h'j....].jm...)..}.(j....h'j..
71a0 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0d 3a 6d 6f 64 3a 60 43 69 70 ..].(j....)..}.(j......:mod:`Cip
71c0 68 65 72 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 06 43 69 70 68 65 72 94 85 94 81 94 7d 94 her`.j....].j......Cipher.....}.
71e0 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a c0 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 (j....h'j....j....ubaj....}.(j..
7200 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 ..].j....].(j......py...py-mod.e
7220 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 j....].j....].j....].uj....j....
7240 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a bd 09 00 00 75 62 6a de 02 00 00 8c 07 20 j....Nj....Nj....j....ubj.......
7260 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 Module.....}.(j.......Module.j..
7280 00 00 6a bd 09 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubej....}.(j....].j....].
72a0 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
72c0 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 1b 23 6d ...refuri.j\.....anchorname...#m
72e0 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 75 6a f1 02 00 00 odule-M2Crypto.SSL.Cipher.uj....
7300 6a 6c 03 00 00 6a e4 02 00 00 6a ba 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d jl...j....j....ubaj....}.(j....]
7320 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 .j....].j....].j....].j....].uj.
7340 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a b7 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 ...jg...j....j....ubaj....}.(j..
7360 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
7380 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 94 7d uj....ja...j....jL...ubjb...)..}
73a0 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 .(j....h'j....].jh...)..}.(j....
73c0 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 h'j....].jm...)..}.(j....h'j....
73e0 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 11 3a 6d 6f 64 3a 60 43 6f 6e 6e 65 ].(j....)..}.(j......:mod:`Conne
7400 63 74 69 6f 6e 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 43 6f 6e 6e 65 63 74 69 6f 6e 94 ction`.j....].j......Connection.
7420 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a f4 09 00 00 75 62 61 6a e5 02 00 00 ....}.(j....h'j....j....ubaj....
7440 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 }.(j....].j....].(j......py...py
7460 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 -mod.ej....].j....].j....].uj...
7480 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a f1 09 00 00 75 62 6a de .j....j....Nj....Nj....j....ubj.
74a0 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 ......Module.....}.(j.......Modu
74c0 6c 65 94 6a e4 02 00 00 6a f1 09 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a le.j....j....ubej....}.(j....].j
74e0 e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 ....].j....].j....].j....]...int
7500 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 6d ernal....refuri.j\.....anchornam
7520 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 74 e...#module-M2Crypto.SSL.Connect
7540 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a ee 09 00 00 75 62 61 6a e5 02 00 ion.uj....jl...j....j....ubaj...
7560 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
7580 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a eb 09 00 00 75 62 61 6a j....].uj....jg...j....j....ubaj
75a0 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
75c0 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 .].j....].uj....ja...j....jL...u
75e0 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 bjb...)..}.(j....h'j....].jh...)
7600 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da ..}.(j....h'j....].jm...)..}.(j.
7620 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0e 3a ...h'j....].(j....)..}.(j......:
7640 6d 6f 64 3a 60 43 6f 6e 74 65 78 74 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 07 43 6f 6e 74 mod:`Context`.j....].j......Cont
7660 65 78 74 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 28 0a 00 00 75 62 61 6a ext.....}.(j....h'j....j(...ubaj
7680 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 ....}.(j....].j....].(j......py.
76a0 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 ..py-mod.ej....].j....].j....].u
76c0 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 25 0a 00 00 j....j....j....Nj....Nj....j%...
76e0 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 ubj.......Module.....}.(j.......
7700 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 25 0a 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 Module.j....j%...ubej....}.(j...
7720 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
7740 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
7760 72 6e 61 6d 65 94 8c 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 rname...#module-M2Crypto.SSL.Con
7780 74 65 78 74 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 22 0a 00 00 75 62 61 6a e5 02 text.uj....jl...j....j"...ubaj..
77a0 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
77c0 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 1f 0a 00 00 75 62 61 .j....].uj....jg...j....j....uba
77e0 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
7800 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 ..].j....].uj....ja...j....jL...
7820 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 ubjb...)..}.(j....h'j....].jh...
7840 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].jm...)..}.(j
7860 da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 10 ....h'j....].(j....)..}.(j......
7880 3a 6d 6f 64 3a 60 53 53 4c 53 65 72 76 65 72 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 09 53 :mod:`SSLServer`.j....].j......S
78a0 53 4c 53 65 72 76 65 72 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 5c 0a 00 SLServer.....}.(j....h'j....j\..
78c0 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 .ubaj....}.(j....].j....].(j....
78e0 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 ..py...py-mod.ej....].j....].j..
7900 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 ..].uj....j....j....Nj....Nj....
7920 6a 59 0a 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 jY...ubj.......Module.....}.(j..
7940 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 59 0a 00 00 75 62 65 6a e5 02 00 00 7d 94 .....Module.j....jY...ubej....}.
7960 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
7980 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 0a ..]...internal....refuri.j\.....
79a0 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 1e 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 anchorname...#module-M2Crypto.SS
79c0 4c 2e 53 53 4c 53 65 72 76 65 72 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 56 0a 00 L.SSLServer.uj....jl...j....jV..
79e0 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
7a00 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a .j....].j....].uj....jg...j....j
7a20 53 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 S...ubaj....}.(j....].j....].j..
7a40 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 ..].j....].j....].uj....ja...j..
7a60 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 ..jL...ubjb...)..}.(j....h'j....
7a80 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 ].jh...)..}.(j....h'j....].jm...
7aa0 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 )..}.(j....h'j....].(j....)..}.(
7ac0 6a da 02 00 00 8c 0e 3a 6d 6f 64 3a 60 53 65 73 73 69 6f 6e 60 94 6a db 02 00 00 5d 94 6a de 02 j......:mod:`Session`.j....].j..
7ae0 00 00 8c 07 53 65 73 73 69 6f 6e 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a ....Session.....}.(j....h'j....j
7b00 90 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d ....ubaj....}.(j....].j....].(j.
7b20 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .....py...py-mod.ej....].j....].
7b40 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 j....].uj....j....j....Nj....Nj.
7b60 02 00 00 6a 8d 0a 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 ...j....ubj.......Module.....}.(
7b80 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a 8d 0a 00 00 75 62 65 6a e5 02 00 j.......Module.j....j....ubej...
7ba0 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
7bc0 6a ef 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 5c 02 00 j....]...internal....refuri.j\..
7be0 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
7c00 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 8a 0a .SSL.Session.uj....jl...j....j..
7c20 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
7c40 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 ].j....].j....].uj....jg...j....
7c60 6a 87 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubaj....}.(j....].j....].j.
7c80 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 ...].j....].j....].uj....ja...j.
7ca0 02 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 ...jL...ubjb...)..}.(j....h'j...
7cc0 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 .].jh...)..}.(j....h'j....].jm..
7ce0 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 .)..}.(j....h'j....].(j....)..}.
7d00 28 6a da 02 00 00 8c 1d 3a 6d 6f 64 3a 60 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 (j......:mod:`TwistedProtocolWra
7d20 70 70 65 72 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 16 54 77 69 73 74 65 64 50 72 6f 74 6f pper`.j....].j......TwistedProto
7d40 63 6f 6c 57 72 61 70 70 65 72 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a c4 colWrapper.....}.(j....h'j....j.
7d60 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 ...ubaj....}.(j....].j....].(j..
7d80 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ....py...py-mod.ej....].j....].j
7da0 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 ....].uj....j....j....Nj....Nj..
7dc0 00 00 6a c1 0a 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a ..j....ubj.......Module.....}.(j
7de0 da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a c1 0a 00 00 75 62 65 6a e5 02 00 00 .......Module.j....j....ubej....
7e00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
7e20 ef 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 5c 02 00 00 ....]...internal....refuri.j\...
7e40 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 2e ..anchorname..+#module-M2Crypto.
7e60 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 f1 02 00 SSL.TwistedProtocolWrapper.uj...
7e80 00 6a 6c 03 00 00 6a e4 02 00 00 6a be 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .jl...j....j....ubaj....}.(j....
7ea0 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
7ec0 f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a bb 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 ....jg...j....j....ubaj....}.(j.
7ee0 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
7f00 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 94 .uj....ja...j....jL...ubjb...)..
7f20 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jh...)..}.(j...
7f40 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 .h'j....].jm...)..}.(j....h'j...
7f60 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 09 3a 6d 6f 64 3a 60 63 62 60 94 .].(j....)..}.(j......:mod:`cb`.
7f80 6a db 02 00 00 5d 94 6a de 02 00 00 8c 02 63 62 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a j....].j......cb.....}.(j....h'j
7fa0 e4 02 00 00 6a f8 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 ....j....ubaj....}.(j....].j....
7fc0 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed ].(j......py...py-mod.ej....].j.
7fe0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 ...].j....].uj....j....j....Nj..
8000 00 00 4e 6a e4 02 00 00 6a f5 0a 00 00 75 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 ..Nj....j....ubj.......Module...
8020 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 02 00 00 6a f5 0a 00 00 75 62 ..}.(j.......Module.j....j....ub
8040 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed ej....}.(j....].j....].j....].j.
8060 02 00 00 5d 94 6a ef 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
8080 94 6a 5c 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 .j\.....anchorname...#module-M2C
80a0 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a f2 0a rypto.SSL.cb.uj....jl...j....j..
80c0 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
80e0 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 ].j....].j....].uj....jg...j....
8100 6a ef 0a 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubaj....}.(j....].j....].j.
8120 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 ...].j....].j....].uj....ja...j.
8140 02 00 00 6a 4c 09 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 ...jL...ubjb...)..}.(j....h'j...
8160 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 .].jh...)..}.(j....h'j....].jm..
8180 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 .)..}.(j....h'j....].(j....)..}.
81a0 28 6a da 02 00 00 8c 15 3a 6d 6f 64 3a 60 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 60 94 6a db (j......:mod:`ssl_dispatcher`.j.
81c0 02 00 00 5d 94 6a de 02 00 00 8c 0e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 85 94 81 94 7d ...].j......ssl_dispatcher.....}
81e0 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 2c 0b 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 .(j....h'j....j,...ubaj....}.(j.
8200 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c 06 70 79 2d 6d 6f 64 94 ...].j....].(j......py...py-mod.
8220 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 90 03 00 ej....].j....].j....].uj....j...
8240 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 29 0b 00 00 75 62 6a de 02 00 00 8c 07 .j....Nj....Nj....j)...ubj......
8260 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 6a e4 .Module.....}.(j.......Module.j.
8280 02 00 00 6a 29 0b 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j)...ubej....}.(j....].j....]
82a0 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c .j....].j....].j....]...internal
82c0 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 23 23 ....refuri.j\.....anchorname..##
82e0 6d 6f 64 75 6c 65 2d 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 module-M2Crypto.SSL.ssl_dispatch
8300 65 72 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 26 0b 00 00 75 62 61 6a e5 02 00 00 er.uj....jl...j....j&...ubaj....
8320 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
8340 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 23 0b 00 00 75 62 61 6a e5 ....].uj....jg...j....j#...ubaj.
8360 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 ...}.(j....].j....].j....].j....
8380 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 62 ].j....].uj....ja...j....jL...ub
83a0 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 jb...)..}.(j....h'j....].jh...).
83c0 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 .}.(j....h'j....].jm...)..}.(j..
83e0 00 00 68 27 6a db 02 00 00 5d 94 28 6a 91 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 8c 0e 3a 6d ..h'j....].(j....)..}.(j......:m
8400 6f 64 3a 60 74 69 6d 65 6f 75 74 60 94 6a db 02 00 00 5d 94 6a de 02 00 00 8c 07 74 69 6d 65 6f od:`timeout`.j....].j......timeo
8420 75 74 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 60 0b 00 00 75 62 61 6a e5 ut.....}.(j....h'j....j`...ubaj.
8440 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 28 6a 9d 03 00 00 8c 02 70 79 94 8c ...}.(j....].j....].(j......py..
8460 06 70 79 2d 6d 6f 64 94 65 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a .py-mod.ej....].j....].j....].uj
8480 f1 02 00 00 6a 90 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 5d 0b 00 00 75 ....j....j....Nj....Nj....j]...u
84a0 62 6a de 02 00 00 8c 07 20 4d 6f 64 75 6c 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 20 4d bj.......Module.....}.(j.......M
84c0 6f 64 75 6c 65 94 6a e4 02 00 00 6a 5d 0b 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 odule.j....j]...ubej....}.(j....
84e0 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 ].j....].j....].j....].j....]...
8500 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
8520 6e 61 6d 65 94 8c 1c 23 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 name...#module-M2Crypto.SSL.time
8540 6f 75 74 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 5a 0b 00 00 75 62 61 6a e5 02 00 out.uj....jl...j....jZ...ubaj...
8560 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
8580 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 57 0b 00 00 75 62 61 6a j....].uj....jg...j....jW...ubaj
85a0 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
85c0 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 4c 09 00 00 75 .].j....].uj....ja...j....jL...u
85e0 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a bej....}.(j....].j....].j....].j
8600 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 6a e4 02 00 00 6a 30 09 ....].j....].uj....j\...j....j0.
8620 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubej....}.(j....].j....].j....
8640 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 ].j....].j....].uj....ja...j....
8660 6a 2d 09 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j-...ubaj....}.(j....].j....].j.
8680 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 75 62 ...].j....].j....].uj....j\...ub
86a0 6a 5b 02 00 00 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 62 j[...j]...)..}.(j....h'j....].jb
86c0 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 68 03 00 00 29 81 94 ...)..}.(j....h'j....].(jh...)..
86e0 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jm...)..}.(j...
8700 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 .h'j....].(j....)..}.(j....h'j..
8720 00 00 5d 94 6a de 02 00 00 8c 08 31 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 00 00 ..].j......1............}.(j....
8740 68 27 6a e4 02 00 00 6a a9 0b 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 h'j....j....ubaj....}.(j....].j.
8760 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ...].j....aj....].j....].j....].
8780 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a a6 0b 00 uj....j....j....Nj....Nj....j...
87a0 00 75 62 6a de 02 00 00 8c 10 5a 53 65 72 76 65 72 53 53 4c 2d 48 4f 57 54 4f 94 85 94 81 94 7d .ubj......ZServerSSL-HOWTO.....}
87c0 94 28 6a da 02 00 00 6a 19 03 00 00 6a e4 02 00 00 6a a6 0b 00 00 75 62 65 6a e5 02 00 00 7d 94 .(j....j....j....j....ubej....}.
87e0 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
8800 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 8c 0a ..]...internal....refuri.j[.....
8820 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a a3 0b anchorname.h'uj....jl...j....j..
8840 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
8860 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 ].j....].j....].uj....jg...j....
8880 6a a0 0b 00 00 75 62 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 j....ubj]...)..}.(j....h'j....].
88a0 28 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 (jb...)..}.(j....h'j....].jh...)
88c0 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da ..}.(j....h'j....].jm...)..}.(j.
88e0 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a ...h'j....].(j....)..}.(j....h'j
8900 db 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 31 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a ....].j......1.1............}.(j
8920 da 02 00 00 68 27 6a e4 02 00 00 6a d5 0b 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 ....h'j....j....ubaj....}.(j....
8940 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 ].j....].j....aj....].j....].j..
8960 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 ..].uj....j....j....Nj....Nj....
8980 6a d2 0b 00 00 75 62 6a de 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 85 94 81 94 7d j....ubj......Introduction.....}
89a0 94 28 6a da 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a e4 02 00 00 6a d2 0b 00 00 .(j......Introduction.j....j....
89c0 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubej....}.(j....].j....].j....].
89e0 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 j....].j....]...internal....refu
8a00 72 69 94 6a 5b 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 ri.j[.....anchorname...#introduc
8a20 74 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a cf 0b 00 00 75 62 61 6a e5 02 tion.uj....jl...j....j....ubaj..
8a40 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
8a60 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a cc 0b 00 00 75 62 61 .j....].uj....jg...j....j....uba
8a80 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
8aa0 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 ..].j....].uj....ja...j....j....
8ac0 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 ubjb...)..}.(j....h'j....].jh...
8ae0 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].jm...)..}.(j
8b00 da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 ....h'j....].(j....)..}.(j....h'
8b20 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 32 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 j....].j......1.2............}.(
8b40 6a da 02 00 00 68 27 6a e4 02 00 00 6a 06 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 j....h'j....j....ubaj....}.(j...
8b60 00 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .].j....].j....aj....].j....].j.
8b80 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 ...].uj....j....j....Nj....Nj...
8ba0 00 6a 03 0c 00 00 75 62 6a de 02 00 00 8c 0b 50 72 65 70 61 72 61 74 69 6f 6e 94 85 94 81 94 7d .j....ubj......Preparation.....}
8bc0 94 28 6a da 02 00 00 8c 0b 50 72 65 70 61 72 61 74 69 6f 6e 94 6a e4 02 00 00 6a 03 0c 00 00 75 .(j......Preparation.j....j....u
8be0 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a bej....}.(j....].j....].j....].j
8c00 ed 02 00 00 5d 94 6a ef 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
8c20 69 94 6a 5b 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0c 23 70 72 65 70 61 72 61 74 69 i.j[.....anchorname...#preparati
8c40 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 00 0c 00 00 75 62 61 6a e5 02 00 00 on.uj....jl...j....j....ubaj....
8c60 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
8c80 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a fd 0b 00 00 75 62 61 6a e5 ....].uj....jg...j....j....ubaj.
8ca0 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 ...}.(j....].j....].j....].j....
8cc0 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 ].j....].uj....ja...j....j....ub
8ce0 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 jb...)..}.(j....h'j....].jh...).
8d00 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 .}.(j....h'j....].jm...)..}.(j..
8d20 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db ..h'j....].(j....)..}.(j....h'j.
8d40 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 33 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da ...].j......1.3............}.(j.
8d60 02 00 00 68 27 6a e4 02 00 00 6a 37 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d ...h'j....j7...ubaj....}.(j....]
8d80 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 .j....].j....aj....].j....].j...
8da0 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a .].uj....j....j....Nj....Nj....j
8dc0 34 0c 00 00 75 62 6a de 02 00 00 8c 0c 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 94 85 94 81 94 7d 94 4...ubj......Installation.....}.
8de0 28 6a da 02 00 00 8c 0c 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 94 6a e4 02 00 00 6a 34 0c 00 00 75 (j......Installation.j....j4...u
8e00 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a bej....}.(j....].j....].j....].j
8e20 ed 02 00 00 5d 94 6a ef 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
8e40 69 94 6a 5b 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d 23 69 6e 73 74 61 6c 6c 61 74 i.j[.....anchorname...#installat
8e60 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 31 0c 00 00 75 62 61 6a e5 02 00 ion.uj....jl...j....j1...ubaj...
8e80 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
8ea0 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 2e 0c 00 00 75 62 61 6a j....].uj....jg...j....j....ubaj
8ec0 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
8ee0 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 .].j....].uj....ja...j....j....u
8f00 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 bjb...)..}.(j....h'j....].jh...)
8f20 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da ..}.(j....h'j....].jm...)..}.(j.
8f40 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a ...h'j....].(j....)..}.(j....h'j
8f60 db 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 34 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a ....].j......1.4............}.(j
8f80 da 02 00 00 68 27 6a e4 02 00 00 6a 68 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 ....h'j....jh...ubaj....}.(j....
8fa0 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 ].j....].j....aj....].j....].j..
8fc0 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 ..].uj....j....j....Nj....Nj....
8fe0 6a 65 0c 00 00 75 62 6a de 02 00 00 8c 07 54 65 73 74 69 6e 67 94 85 94 81 94 7d 94 28 6a da 02 je...ubj......Testing.....}.(j..
9000 00 00 8c 07 54 65 73 74 69 6e 67 94 6a e4 02 00 00 6a 65 0c 00 00 75 62 65 6a e5 02 00 00 7d 94 ....Testing.j....je...ubej....}.
9020 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
9040 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 8c 0a ..]...internal....refuri.j[.....
9060 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 74 65 73 74 69 6e 67 94 75 6a f1 02 00 00 6a 6c 03 00 anchorname...#testing.uj....jl..
9080 00 6a e4 02 00 00 6a 62 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....jb...ubaj....}.(j....].j..
90a0 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a ..].j....].j....].j....].uj....j
90c0 67 03 00 00 6a e4 02 00 00 6a 5f 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 g...j....j_...ubaj....}.(j....].
90e0 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
9100 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da ..ja...j....j....ubjb...)..}.(j.
9120 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db ...h'j....].jh...)..}.(j....h'j.
9140 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a ...].jm...)..}.(j....h'j....].(j
9160 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 ....)..}.(j....h'j....].j......1
9180 2e 35 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 99 0c .5............}.(j....h'j....j..
91a0 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 ..ubaj....}.(j....].j....].j....
91c0 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 aj....].j....].j....].uj....j...
91e0 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 96 0c 00 00 75 62 6a de 02 00 00 8c 05 .j....Nj....Nj....j....ubj......
9200 48 54 54 50 53 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 05 48 54 54 50 53 94 6a e4 02 00 00 6a HTTPS.....}.(j......HTTPS.j....j
9220 96 0c 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubej....}.(j....].j....].j..
9240 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 ..].j....].j....]...internal....
9260 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 06 23 68 74 74 70 refuri.j[.....anchorname...#http
9280 73 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 93 0c 00 00 75 62 61 6a e5 02 00 00 7d s.uj....jl...j....j....ubaj....}
92a0 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
92c0 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 90 0c 00 00 75 62 61 6a e5 02 ...].uj....jg...j....j....ubaj..
92e0 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d ..}.(j....].j....].j....].j....]
9300 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 6a .j....].uj....ja...j....j....ubj
9320 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 b...)..}.(j....h'j....].jh...)..
9340 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jm...)..}.(j...
9360 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 .h'j....].(j....)..}.(j....h'j..
9380 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 36 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 ..].j......1.6............}.(j..
93a0 00 00 68 27 6a e4 02 00 00 6a ca 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 ..h'j....j....ubaj....}.(j....].
93c0 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 j....].j....aj....].j....].j....
93e0 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a c7 ].uj....j....j....Nj....Nj....j.
9400 0c 00 00 75 62 6a de 02 00 00 8c 11 57 65 62 44 41 56 2d 6f 76 65 72 2d 48 54 54 50 53 94 85 94 ...ubj......WebDAV-over-HTTPS...
9420 81 94 7d 94 28 6a da 02 00 00 8c 11 57 65 62 44 41 56 2d 6f 76 65 72 2d 48 54 54 50 53 94 6a e4 ..}.(j......WebDAV-over-HTTPS.j.
9440 02 00 00 6a c7 0c 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j....ubej....}.(j....].j....]
9460 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c .j....].j....].j....]...internal
9480 94 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 8c 12 23 ....refuri.j[.....anchorname...#
94a0 77 65 62 64 61 76 2d 6f 76 65 72 2d 68 74 74 70 73 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 webdav-over-https.uj....jl...j..
94c0 00 00 6a c4 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
94e0 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 j....].j....].j....].uj....jg...
9500 6a e4 02 00 00 6a c1 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....j....ubaj....}.(j....].j...
9520 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 .].j....].j....].j....].uj....ja
9540 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 ...j....j....ubjb...)..}.(j....h
9560 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 'j....].jh...)..}.(j....h'j....]
9580 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 .jm...)..}.(j....h'j....].(j....
95a0 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 37 2e c2 )..}.(j....h'j....].j......1.7..
95c0 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a fb 0c 00 00 75 62 ..........}.(j....h'j....j....ub
95e0 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 aj....}.(j....].j....].j....aj..
9600 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 ..].j....].j....].uj....j....j..
9620 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a f8 0c 00 00 75 62 6a de 02 00 00 8c 18 57 65 62 44 ..Nj....Nj....j....ubj......WebD
9640 41 56 2d 53 6f 75 72 63 65 2d 6f 76 65 72 2d 48 54 54 50 53 94 85 94 81 94 7d 94 28 6a da 02 00 AV-Source-over-HTTPS.....}.(j...
9660 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 53 94 6a e4 02 00 ...WebDAV-Source-over-HTTPS.j...
9680 00 6a f8 0c 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a .j....ubej....}.(j....].j....].j
96a0 eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
96c0 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 8c 19 23 77 65 ..refuri.j[.....anchorname...#we
96e0 62 64 61 76 2d 73 6f 75 72 63 65 2d 6f 76 65 72 2d 68 74 74 70 73 94 75 6a f1 02 00 00 6a 6c 03 bdav-source-over-https.uj....jl.
9700 00 00 6a e4 02 00 00 6a f5 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 ..j....j....ubaj....}.(j....].j.
9720 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 ...].j....].j....].j....].uj....
9740 6a 67 03 00 00 6a e4 02 00 00 6a f2 0c 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d jg...j....j....ubaj....}.(j....]
9760 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 .j....].j....].j....].j....].uj.
9780 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a ...ja...j....j....ubjb...)..}.(j
97a0 da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a ....h'j....].jh...)..}.(j....h'j
97c0 db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 ....].jm...)..}.(j....h'j....].(
97e0 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a j....)..}.(j....h'j....].j......
9800 31 2e 38 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 2c 1.8............}.(j....h'j....j,
9820 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 ...ubaj....}.(j....].j....].j...
9840 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 .aj....].j....].j....].uj....j..
9860 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 29 0d 00 00 75 62 6a de 02 00 00 8c ..j....Nj....Nj....j)...ubj.....
9880 14 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 da 02 .Python.with.M2Crypto.....}.(j..
98a0 00 00 8c 14 50 79 74 68 6f 6e 20 77 69 74 68 20 4d 32 43 72 79 70 74 6f 94 6a e4 02 00 00 6a 29 ....Python.with.M2Crypto.j....j)
98c0 0d 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubej....}.(j....].j....].j...
98e0 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 .].j....].j....]...internal....r
9900 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 15 23 70 79 74 68 6f efuri.j[.....anchorname...#pytho
9920 6e 2d 77 69 74 68 2d 6d 32 63 72 79 70 74 6f 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 n-with-m2crypto.uj....jl...j....
9940 6a 26 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j&...ubaj....}.(j....].j....].j.
9960 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 ...].j....].j....].uj....jg...j.
9980 02 00 00 6a 23 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j#...ubaj....}.(j....].j....]
99a0 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 .j....].j....].j....].uj....ja..
99c0 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a .j....j....ubjb...)..}.(j....h'j
99e0 db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a ....].jh...)..}.(j....h'j....].j
9a00 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 m...)..}.(j....h'j....].(j....).
9a20 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 31 2e 39 2e c2 a0 c2 .}.(j....h'j....].j......1.9....
9a40 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a 5d 0d 00 00 75 62 61 6a ........}.(j....h'j....j]...ubaj
9a60 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 ....}.(j....].j....].j....aj....
9a80 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 ].j....].j....].uj....j....j....
9aa0 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 5a 0d 00 00 75 62 6a de 02 00 00 8c 05 48 54 54 50 53 94 Nj....Nj....jZ...ubj......HTTPS.
9ac0 85 94 81 94 7d 94 28 6a da 02 00 00 8c 05 48 54 54 50 53 94 6a e4 02 00 00 6a 5a 0d 00 00 75 62 ....}.(j......HTTPS.j....jZ...ub
9ae0 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed ej....}.(j....].j....].j....].j.
9b00 02 00 00 5d 94 6a ef 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
9b20 94 6a 5b 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 04 23 69 64 32 94 75 6a f1 02 00 00 .j[.....anchorname...#id2.uj....
9b40 6a 6c 03 00 00 6a e4 02 00 00 6a 57 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d jl...j....jW...ubaj....}.(j....]
9b60 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 .j....].j....].j....].j....].uj.
9b80 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 54 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 ...jg...j....jT...ubaj....}.(j..
9ba0 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
9bc0 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b 00 00 75 62 6a 62 03 00 00 29 81 94 7d uj....ja...j....j....ubjb...)..}
9be0 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 .(j....h'j....].jh...)..}.(j....
9c00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 h'j....].jm...)..}.(j....h'j....
9c20 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 ].(j....)..}.(j....h'j....].j...
9c40 00 8c 0b 31 2e 31 30 2e c2 a0 c2 a0 c2 a0 94 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 ...1.10............}.(j....h'j..
9c60 00 00 6a 8e 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
9c80 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 j....aj....].j....].j....].uj...
9ca0 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 00 00 4e 6a e4 02 00 00 6a 8b 0d 00 00 75 62 6a de .j....j....Nj....Nj....j....ubj.
9cc0 02 00 00 8c 11 58 4d 4c 52 50 43 2d 6f 76 65 72 2d 48 54 54 50 53 94 85 94 81 94 7d 94 28 6a da .....XMLRPC-over-HTTPS.....}.(j.
9ce0 02 00 00 8c 11 58 4d 4c 52 50 43 2d 6f 76 65 72 2d 48 54 54 50 53 94 6a e4 02 00 00 6a 8b 0d 00 .....XMLRPC-over-HTTPS.j....j...
9d00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubej....}.(j....].j....].j....]
9d20 94 6a ed 02 00 00 5d 94 6a ef 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
9d40 75 72 69 94 6a 5b 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 12 23 78 6d 6c 72 70 63 2d uri.j[.....anchorname...#xmlrpc-
9d60 6f 76 65 72 2d 68 74 74 70 73 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 88 0d 00 00 over-https.uj....jl...j....j....
9d80 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
9da0 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 85 j....].j....].uj....jg...j....j.
9dc0 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubaj....}.(j....].j....].j...
9de0 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 .].j....].j....].uj....ja...j...
9e00 00 6a c9 0b 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d .j....ubjb...)..}.(j....h'j....]
9e20 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 .jh...)..}.(j....h'j....].jm...)
9e40 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 04 03 00 00 29 81 94 7d 94 28 6a ..}.(j....h'j....].(j....)..}.(j
9e60 da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0b 31 2e 31 31 2e c2 a0 c2 a0 c2 a0 94 ....h'j....].j......1.11........
9e80 85 94 81 94 7d 94 28 6a da 02 00 00 68 27 6a e4 02 00 00 6a bf 0d 00 00 75 62 61 6a e5 02 00 00 ....}.(j....h'j....j....ubaj....
9ea0 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a 0f 03 00 00 61 6a eb 02 00 00 5d 94 6a ed }.(j....].j....].j....aj....].j.
9ec0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 03 03 00 00 6a 13 03 00 00 4e 6a 14 03 ...].j....].uj....j....j....Nj..
9ee0 00 00 4e 6a e4 02 00 00 6a bc 0d 00 00 75 62 6a de 02 00 00 8c 0a 43 6f 6e 63 6c 75 73 69 6f 6e ..Nj....j....ubj......Conclusion
9f00 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0a 43 6f 6e 63 6c 75 73 69 6f 6e 94 6a e4 02 00 00 6a .....}.(j......Conclusion.j....j
9f20 bc 0d 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubej....}.(j....].j....].j..
9f40 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 ..].j....].j....]...internal....
9f60 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 0b 23 63 6f 6e 63 refuri.j[.....anchorname...#conc
9f80 6c 75 73 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a b9 0d 00 00 75 62 61 6a lusion.uj....jl...j....j....ubaj
9fa0 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
9fc0 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a b6 0d 00 00 75 .].j....].uj....jg...j....j....u
9fe0 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
a000 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a c9 0b ....].j....].uj....ja...j....j..
a020 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubej....}.(j....].j....].j....
a040 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 6a e4 02 00 00 ].j....].j....].uj....j\...j....
a060 6a a0 0b 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubej....}.(j....].j....].j.
a080 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 ...].j....].j....].uj....ja...j.
a0a0 02 00 00 6a 9d 0b 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j....ubaj....}.(j....].j....]
a0c0 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 .j....].j....].j....].uj....j\..
a0e0 00 75 62 6a 5a 02 00 00 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d .ubjZ...j]...)..}.(j....h'j....]
a100 94 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 68 03 00 00 .jb...)..}.(j....h'j....].(jh...
a120 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a )..}.(j....h'j....].jm...)..}.(j
a140 da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 28 48 4f 57 54 4f 3a 20 43 72 65 61 74 ....h'j....].j.....(HOWTO:.Creat
a160 69 6e 67 20 79 6f 75 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 ing.your.own.CA.with.OpenSSL....
a180 94 7d 94 28 6a da 02 00 00 6a 27 03 00 00 6a e4 02 00 00 6a 02 0e 00 00 75 62 61 6a e5 02 00 00 .}.(j....j'...j....j....ubaj....
a1a0 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
a1c0 ef 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 ....]...internal....refuri.jZ...
a1e0 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a ..anchorname.h'uj....jl...j....j
a200 ff 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubaj....}.(j....].j....].j..
a220 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 ..].j....].j....].uj....jg...j..
a240 00 00 6a fc 0d 00 00 75 62 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 ..j....ubj]...)..}.(j....h'j....
a260 5d 94 28 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 ].(jb...)..}.(j....h'j....].jh..
a280 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jm...)..}.(
a2a0 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f j....h'j....].j......Introductio
a2c0 6e 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a e4 02 n.....}.(j......Introduction.j..
a2e0 00 00 6a 21 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j!...ubaj....}.(j....].j....].
a300 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
a320 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 23 69 ...refuri.jZ.....anchorname...#i
a340 6e 74 72 6f 64 75 63 74 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 1e 0e 00 ntroduction.uj....jl...j....j...
a360 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
a380 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a .j....].j....].uj....jg...j....j
a3a0 1b 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubaj....}.(j....].j....].j..
a3c0 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 ..].j....].j....].uj....ja...j..
a3e0 00 00 6a 18 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 ..j....ubjb...)..}.(j....h'j....
a400 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 ].jh...)..}.(j....h'j....].jm...
a420 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0d 54 68 65 20 50 )..}.(j....h'j....].j......The.P
a440 72 6f 63 65 64 75 72 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0d 54 68 65 20 50 72 6f 63 65 rocedure.....}.(j......The.Proce
a460 64 75 72 65 94 6a e4 02 00 00 6a 45 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d dure.j....jE...ubaj....}.(j....]
a480 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 .j....].j....].j....].j....]...i
a4a0 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 72 6e nternal....refuri.jZ.....anchorn
a4c0 61 6d 65 94 8c 0e 23 74 68 65 2d 70 72 6f 63 65 64 75 72 65 94 75 6a f1 02 00 00 6a 6c 03 00 00 ame...#the-procedure.uj....jl...
a4e0 6a e4 02 00 00 6a 42 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....jB...ubaj....}.(j....].j...
a500 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 .].j....].j....].j....].uj....jg
a520 03 00 00 6a e4 02 00 00 6a 3f 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a ...j....j?...ubaj....}.(j....].j
a540 e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 ....].j....].j....].j....].uj...
a560 00 6a 61 03 00 00 6a e4 02 00 00 6a 18 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 .ja...j....j....ubjb...)..}.(j..
a580 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 ..h'j....].jh...)..}.(j....h'j..
a5a0 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 ..].jm...)..}.(j....h'j....].j..
a5c0 00 00 8c 0a 43 6f 6e 63 6c 75 73 69 6f 6e 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0a 43 6f 6e ....Conclusion.....}.(j......Con
a5e0 63 6c 75 73 69 6f 6e 94 6a e4 02 00 00 6a 69 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 clusion.j....ji...ubaj....}.(j..
a600 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
a620 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 0a 61 6e 63 68 ..internal....refuri.jZ.....anch
a640 6f 72 6e 61 6d 65 94 8c 0b 23 63 6f 6e 63 6c 75 73 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 orname...#conclusion.uj....jl...
a660 6a e4 02 00 00 6a 66 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....jf...ubaj....}.(j....].j...
a680 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 .].j....].j....].j....].uj....jg
a6a0 03 00 00 6a e4 02 00 00 6a 63 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a ...j....jc...ubaj....}.(j....].j
a6c0 e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 ....].j....].j....].j....].uj...
a6e0 00 6a 61 03 00 00 6a e4 02 00 00 6a 18 0e 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .ja...j....j....ubej....}.(j....
a700 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
a720 f1 02 00 00 6a 5c 03 00 00 6a e4 02 00 00 6a fc 0d 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 ....j\...j....j....ubej....}.(j.
a740 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
a760 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a f9 0d 00 00 75 62 61 6a e5 02 00 00 7d 94 .uj....ja...j....j....ubaj....}.
a780 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
a7a0 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 75 62 6a 5d 02 00 00 6a 5d 03 00 00 29 81 94 7d 94 ..].uj....j\...ubj]...j]...)..}.
a7c0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 (j....h'j....].(jb...)..}.(j....
a7e0 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 h'j....].jh...)..}.(j....h'j....
a800 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 ].jm...)..}.(j....h'j....].j....
a820 8c 31 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 2f 4d 49 4d 45 20 69 6e 20 50 .1HOWTO:.Programming.S/MIME.in.P
a840 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 da 02 00 00 ython.with.M2Crypto.....}.(j....
a860 6a 35 03 00 00 6a e4 02 00 00 6a a2 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d j5...j....j....ubaj....}.(j....]
a880 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 .j....].j....].j....].j....]...i
a8a0 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e nternal....refuri.j].....anchorn
a8c0 61 6d 65 94 68 27 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 9f 0e 00 00 75 62 61 6a e5 ame.h'uj....jl...j....j....ubaj.
a8e0 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 ...}.(j....].j....].j....].j....
a900 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 9c 0e 00 00 75 62 ].j....].uj....jg...j....j....ub
a920 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed aj....}.(j....].j....].j....].j.
a940 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 ...].j....].uj....ja...j....j...
a960 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 .ubjb...)..}.(j....h'j....].jh..
a980 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jm...)..}.(
a9a0 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f j....h'j....].j......Introductio
a9c0 6e 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 6a e4 02 n.....}.(j......Introduction.j..
a9e0 00 00 6a c4 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
aa00 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
aa20 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0d 23 69 ...refuri.j].....anchorname...#i
aa40 6e 74 72 6f 64 75 63 74 69 6f 6e 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a c1 0e 00 ntroduction.uj....jl...j....j...
aa60 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
aa80 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a .j....].j....].uj....jg...j....j
aaa0 be 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubaj....}.(j....].j....].j..
aac0 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 ..].j....].j....].uj....ja...j..
aae0 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 ..j....ubjb...)..}.(j....h'j....
ab00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 ].jh...)..}.(j....h'j....].jm...
ab20 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 06 53 2f 4d 49 4d )..}.(j....h'j....].j......S/MIM
ab40 45 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 06 53 2f 4d 49 4d 45 94 6a e4 02 00 00 6a e8 0e 00 E.....}.(j......S/MIME.j....j...
ab60 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
ab80 94 6a ed 02 00 00 5d 94 6a ef 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
aba0 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 07 23 73 2d 6d 69 6d 65 94 uri.j].....anchorname...#s-mime.
abc0 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a e5 0e 00 00 75 62 61 6a e5 02 00 00 7d 94 28 uj....jl...j....j....ubaj....}.(
abe0 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 j....].j....].j....].j....].j...
ac00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a e2 0e 00 00 75 62 61 6a e5 02 00 00 .].uj....jg...j....j....ubaj....
ac20 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
ac40 ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 ....].uj....ja...j....j....ubjb.
ac60 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].jh...)..}.
ac80 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jm...)..}.(j....h
aca0 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 15 4b 65 79 73 20 61 6e 64 20 43 65 72 74 69 66 69 63 'j....].j......Keys.and.Certific
acc0 61 74 65 73 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 15 4b 65 79 73 20 61 6e 64 20 43 65 72 74 ates.....}.(j......Keys.and.Cert
ace0 69 66 69 63 61 74 65 73 94 6a e4 02 00 00 6a 0c 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 ificates.j....j....ubaj....}.(j.
ad00 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
ad20 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 ...internal....refuri.j].....anc
ad40 68 6f 72 6e 61 6d 65 94 8c 16 23 6b 65 79 73 2d 61 6e 64 2d 63 65 72 74 69 66 69 63 61 74 65 73 horname...#keys-and-certificates
ad60 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 09 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 .uj....jl...j....j....ubaj....}.
ad80 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 (j....].j....].j....].j....].j..
ada0 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 06 0f 00 00 75 62 61 6a e5 02 00 ..].uj....jg...j....j....ubaj...
adc0 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 .}.(j....].j....].j....].j....].
ade0 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 j....].uj....ja...j....j....ubjb
ae00 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jh...)..}
ae20 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 .(j....h'j....].jm...)..}.(j....
ae40 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 85 h'j....].j......M2Crypto.SMIME..
ae60 94 81 94 7d 94 28 6a da 02 00 00 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 6a e4 02 00 ...}.(j......M2Crypto.SMIME.j...
ae80 00 6a 30 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a .j0...ubaj....}.(j....].j....].j
aea0 eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
aec0 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0f 23 6d 32 ..refuri.j].....anchorname...#m2
aee0 63 72 79 70 74 6f 2d 73 6d 69 6d 65 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 2d 0f crypto-smime.uj....jl...j....j-.
af00 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
af20 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 ].j....].j....].uj....jg...j....
af40 6a 2a 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j*...ubaj....}.(j....].j....].j.
af60 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 ...].j....].j....].uj....ja...j.
af80 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 ...j....ubjb...)..}.(j....h'j...
afa0 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 .].jh...)..}.(j....h'j....].jm..
afc0 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 04 53 69 67 6e .)..}.(j....h'j....].j......Sign
afe0 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 04 53 69 67 6e 94 6a e4 02 00 00 6a 54 0f 00 00 75 62 .....}.(j......Sign.j....jT...ub
b000 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed aj....}.(j....].j....].j....].j.
b020 02 00 00 5d 94 6a ef 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
b040 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 05 23 73 69 67 6e 94 75 6a f1 02 00 .j].....anchorname...#sign.uj...
b060 00 6a 6c 03 00 00 6a e4 02 00 00 6a 51 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .jl...j....jQ...ubaj....}.(j....
b080 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
b0a0 f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 4e 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 ....jg...j....jN...ubaj....}.(j.
b0c0 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
b0e0 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 .uj....ja...j....j....ubjb...)..
b100 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jh...)..}.(j...
b120 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 .h'j....].jm...)..}.(j....h'j...
b140 00 5d 94 6a de 02 00 00 8c 06 56 65 72 69 66 79 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 06 56 .].j......Verify.....}.(j......V
b160 65 72 69 66 79 94 6a e4 02 00 00 6a 78 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 erify.j....jx...ubaj....}.(j....
b180 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 ].j....].j....].j....].j....]...
b1a0 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 internal....refuri.j].....anchor
b1c0 6e 61 6d 65 94 8c 07 23 76 65 72 69 66 79 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a name...#verify.uj....jl...j....j
b1e0 75 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 u...ubaj....}.(j....].j....].j..
b200 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 ..].j....].j....].uj....jg...j..
b220 00 00 6a 72 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..jr...ubaj....}.(j....].j....].
b240 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 j....].j....].j....].uj....ja...
b260 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db j....j....ubjb...)..}.(j....h'j.
b280 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d ...].jh...)..}.(j....h'j....].jm
b2a0 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 07 45 6e ...)..}.(j....h'j....].j......En
b2c0 63 72 79 70 74 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 45 6e 63 72 79 70 74 94 6a e4 02 00 crypt.....}.(j......Encrypt.j...
b2e0 00 6a 9c 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
b300 eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
b320 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 65 6e ..refuri.j].....anchorname...#en
b340 63 72 79 70 74 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 99 0f 00 00 75 62 61 6a e5 crypt.uj....jl...j....j....ubaj.
b360 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 ...}.(j....].j....].j....].j....
b380 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 96 0f 00 00 75 62 ].j....].uj....jg...j....j....ub
b3a0 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed aj....}.(j....].j....].j....].j.
b3c0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 ...].j....].uj....ja...j....j...
b3e0 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 .ubjb...)..}.(j....h'j....].jh..
b400 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jm...)..}.(
b420 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 07 44 65 63 72 79 70 74 94 85 94 81 j....h'j....].j......Decrypt....
b440 94 7d 94 28 6a da 02 00 00 8c 07 44 65 63 72 79 70 74 94 6a e4 02 00 00 6a c0 0f 00 00 75 62 61 .}.(j......Decrypt.j....j....uba
b460 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
b480 00 00 5d 94 6a ef 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.
b4a0 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 64 65 63 72 79 70 74 94 75 6a f1 j].....anchorname...#decrypt.uj.
b4c0 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a bd 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 ...jl...j....j....ubaj....}.(j..
b4e0 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
b500 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a ba 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 uj....jg...j....j....ubaj....}.(
b520 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 j....].j....].j....].j....].j...
b540 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 .].uj....ja...j....j....ubjb...)
b560 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da ..}.(j....h'j....].jh...)..}.(j.
b580 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db ...h'j....].jm...)..}.(j....h'j.
b5a0 02 00 00 5d 94 6a de 02 00 00 8c 10 53 69 67 6e 20 61 6e 64 20 45 6e 63 72 79 70 74 94 85 94 81 ...].j......Sign.and.Encrypt....
b5c0 94 7d 94 28 6a da 02 00 00 8c 10 53 69 67 6e 20 61 6e 64 20 45 6e 63 72 79 70 74 94 6a e4 02 00 .}.(j......Sign.and.Encrypt.j...
b5e0 00 6a e4 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a .j....ubaj....}.(j....].j....].j
b600 eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 ....].j....].j....]...internal..
b620 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 11 23 73 69 ..refuri.j].....anchorname...#si
b640 67 6e 2d 61 6e 64 2d 65 6e 63 72 79 70 74 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a gn-and-encrypt.uj....jl...j....j
b660 e1 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 ....ubaj....}.(j....].j....].j..
b680 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 ..].j....].j....].uj....jg...j..
b6a0 00 00 6a de 0f 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
b6c0 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 j....].j....].j....].uj....ja...
b6e0 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db j....j....ubjb...)..}.(j....h'j.
b700 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d ...].jh...)..}.(j....h'j....].jm
b720 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 12 44 65 ...)..}.(j....h'j....].j......De
b740 63 72 79 70 74 20 61 6e 64 20 56 65 72 69 66 79 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 12 44 crypt.and.Verify.....}.(j......D
b760 65 63 72 79 70 74 20 61 6e 64 20 56 65 72 69 66 79 94 6a e4 02 00 00 6a 08 10 00 00 75 62 61 6a ecrypt.and.Verify.j....j....ubaj
b780 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
b7a0 00 5d 94 6a ef 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
b7c0 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 13 23 64 65 63 72 79 70 74 2d 61 6e 64 2d ].....anchorname...#decrypt-and-
b7e0 76 65 72 69 66 79 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 05 10 00 00 75 62 61 6a verify.uj....jl...j....j....ubaj
b800 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
b820 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 02 10 00 00 75 .].j....].uj....jg...j....j....u
b840 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
b860 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e ....].j....].uj....ja...j....j..
b880 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 ..ubjb...)..}.(j....h'j....].jh.
b8a0 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 ..)..}.(j....h'j....].jm...)..}.
b8c0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 20 53 65 6e 64 69 6e 67 20 53 2f (j....h'j....].j......Sending.S/
b8e0 4d 49 4d 45 20 6d 65 73 73 61 67 65 73 20 76 69 61 20 53 4d 54 50 94 85 94 81 94 7d 94 28 6a da MIME.messages.via.SMTP.....}.(j.
b900 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 67 65 73 20 76 69 61 .....Sending.S/MIME.messages.via
b920 20 53 4d 54 50 94 6a e4 02 00 00 6a 2c 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .SMTP.j....j,...ubaj....}.(j....
b940 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 ].j....].j....].j....].j....]...
b960 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 internal....refuri.j].....anchor
b980 6e 61 6d 65 94 8c 21 23 73 65 6e 64 69 6e 67 2d 73 2d 6d 69 6d 65 2d 6d 65 73 73 61 67 65 73 2d name..!#sending-s-mime-messages-
b9a0 76 69 61 2d 73 6d 74 70 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 29 10 00 00 75 62 via-smtp.uj....jl...j....j)...ub
b9c0 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed aj....}.(j....].j....].j....].j.
b9e0 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 26 10 00 ...].j....].uj....jg...j....j&..
ba00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
ba20 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a .j....].j....].uj....ja...j....j
ba40 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a ....ubjb...)..}.(j....h'j....].j
ba60 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 h...)..}.(j....h'j....].jm...)..
ba80 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 23 56 65 72 69 66 79 69 6e }.(j....h'j....].j.....#Verifyin
baa0 67 20 6f 72 69 67 69 6e 20 6f 66 20 53 2f 4d 49 4d 45 20 6d 65 73 73 61 67 65 73 94 85 94 81 94 g.origin.of.S/MIME.messages.....
bac0 7d 94 28 6a da 02 00 00 8c 23 56 65 72 69 66 79 69 6e 67 20 6f 72 69 67 69 6e 20 6f 66 20 53 2f }.(j.....#Verifying.origin.of.S/
bae0 4d 49 4d 45 20 6d 65 73 73 61 67 65 73 94 6a e4 02 00 00 6a 50 10 00 00 75 62 61 6a e5 02 00 00 MIME.messages.j....jP...ubaj....
bb00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a }.(j....].j....].j....].j....].j
bb20 ef 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 5d 02 00 00 ....]...internal....refuri.j]...
bb40 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 24 23 76 65 72 69 66 79 69 6e 67 2d 6f 72 69 67 69 6e ..anchorname..$#verifying-origin
bb60 2d 6f 66 2d 73 2d 6d 69 6d 65 2d 6d 65 73 73 61 67 65 73 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a -of-s-mime-messages.uj....jl...j
bb80 e4 02 00 00 6a 4d 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 ....jM...ubaj....}.(j....].j....
bba0 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 ].j....].j....].j....].uj....jg.
bbc0 00 00 6a e4 02 00 00 6a 4a 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 ..j....jJ...ubaj....}.(j....].j.
bbe0 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 ...].j....].j....].j....].uj....
bc00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 ja...j....j....ubjb...)..}.(j...
bc20 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 .h'j....].jh...)..}.(j....h'j...
bc40 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 .].jm...)..}.(j....h'j....].j...
bc60 00 8c 26 49 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 20 77 69 74 68 20 4e 65 74 73 63 61 70 65 20 ..&Interoperating.with.Netscape.
bc80 4d 65 73 73 65 6e 67 65 72 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 26 49 6e 74 65 72 6f 70 65 Messenger.....}.(j.....&Interope
bca0 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 6a rating.with.Netscape.Messenger.j
bcc0 e4 02 00 00 6a 74 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 ....jt...ubaj....}.(j....].j....
bce0 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 ].j....].j....].j....]...interna
bd00 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 27 l....refuri.j].....anchorname..'
bd20 23 69 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 2d 77 69 74 68 2d 6e 65 74 73 63 61 70 65 2d 6d 65 #interoperating-with-netscape-me
bd40 73 73 65 6e 67 65 72 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 71 10 00 00 75 62 61 ssenger.uj....jl...j....jq...uba
bd60 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
bd80 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 6e 10 00 00 ..].j....].uj....jg...j....jn...
bda0 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
bdc0 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 j....].j....].uj....ja...j....j.
bde0 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 ...ubjb...)..}.(j....h'j....].jh
be00 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d ...)..}.(j....h'j....].jm...)..}
be20 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 25 49 6e 74 65 72 6f 70 65 72 .(j....h'j....].j.....%Interoper
be40 61 74 69 6e 67 20 77 69 74 68 20 4d 69 63 72 6f 73 6f 66 74 20 4f 75 74 6c 6f 6f 6b 94 85 94 81 ating.with.Microsoft.Outlook....
be60 94 7d 94 28 6a da 02 00 00 8c 25 49 6e 74 65 72 6f 70 65 72 61 74 69 6e 67 20 77 69 74 68 20 4d .}.(j.....%Interoperating.with.M
be80 69 63 72 6f 73 6f 66 74 20 4f 75 74 6c 6f 6f 6b 94 6a e4 02 00 00 6a 98 10 00 00 75 62 61 6a e5 icrosoft.Outlook.j....j....ubaj.
bea0 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 ...}.(j....].j....].j....].j....
bec0 5d 94 6a ef 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 5d ].j....]...internal....refuri.j]
bee0 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 26 23 69 6e 74 65 72 6f 70 65 72 61 74 69 6e .....anchorname..&#interoperatin
bf00 67 2d 77 69 74 68 2d 6d 69 63 72 6f 73 6f 66 74 2d 6f 75 74 6c 6f 6f 6b 94 75 6a f1 02 00 00 6a g-with-microsoft-outlook.uj....j
bf20 6c 03 00 00 6a e4 02 00 00 6a 95 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 l...j....j....ubaj....}.(j....].
bf40 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 j....].j....].j....].j....].uj..
bf60 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 92 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jg...j....j....ubaj....}.(j...
bf80 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 .].j....].j....].j....].j....].u
bfa0 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 j....ja...j....j....ubjb...)..}.
bfc0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jh...)..}.(j....h
bfe0 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 'j....].jm...)..}.(j....h'j....]
c000 94 6a de 02 00 00 8c 06 5a 53 6d 69 6d 65 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 06 5a 53 6d .j......ZSmime.....}.(j......ZSm
c020 69 6d 65 94 6a e4 02 00 00 6a bc 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 ime.j....j....ubaj....}.(j....].
c040 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e j....].j....].j....].j....]...in
c060 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 ternal....refuri.j].....anchorna
c080 6d 65 94 8c 07 23 7a 73 6d 69 6d 65 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a b9 10 me...#zsmime.uj....jl...j....j..
c0a0 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
c0c0 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 ].j....].j....].uj....jg...j....
c0e0 6a b6 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubaj....}.(j....].j....].j.
c100 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 ...].j....].j....].uj....ja...j.
c120 02 00 00 6a 99 0e 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 ...j....ubjb...)..}.(j....h'j...
c140 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 .].jh...)..}.(j....h'j....].jm..
c160 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 09 52 65 73 6f .)..}.(j....h'j....].j......Reso
c180 75 72 63 65 73 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 09 52 65 73 6f 75 72 63 65 73 94 6a e4 urces.....}.(j......Resources.j.
c1a0 02 00 00 6a e0 10 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j....ubaj....}.(j....].j....]
c1c0 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c .j....].j....].j....]...internal
c1e0 94 88 8c 06 72 65 66 75 72 69 94 6a 5d 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0a 23 ....refuri.j].....anchorname...#
c200 72 65 73 6f 75 72 63 65 73 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a dd 10 00 00 75 resources.uj....jl...j....j....u
c220 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
c240 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a da 10 ....].j....].uj....jg...j....j..
c260 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
c280 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 ].j....].j....].uj....ja...j....
c2a0 6a 99 0e 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubej....}.(j....].j....].j.
c2c0 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 75 62 ...].j....].j....].uj....j\...ub
c2e0 6a 5e 02 00 00 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a j^...j]...)..}.(j....h'j....].(j
c300 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 b...)..}.(j....h'j....].jh...)..
c320 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 }.(j....h'j....].jm...)..}.(j...
c340 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 2e 48 4f 57 54 4f 3a 20 50 72 6f 67 72 61 6d 6d .h'j....].j......HOWTO:.Programm
c360 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 6f 94 ing.SSL.in.Python.with.M2Crypto.
c380 85 94 81 94 7d 94 28 6a da 02 00 00 6a 43 03 00 00 6a e4 02 00 00 6a 0d 11 00 00 75 62 61 6a e5 ....}.(j....jC...j....j....ubaj.
c3a0 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 ...}.(j....].j....].j....].j....
c3c0 5d 94 6a ef 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 5e ].j....]...internal....refuri.j^
c3e0 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 68 27 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 .....anchorname.h'uj....jl...j..
c400 00 00 6a 0a 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
c420 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 j....].j....].j....].uj....jg...
c440 6a e4 02 00 00 6a 07 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 j....j....ubaj....}.(j....].j...
c460 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 .].j....].j....].j....].uj....ja
c480 03 00 00 6a e4 02 00 00 6a 04 11 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 ...j....j....ubjb...)..}.(j....h
c4a0 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 'j....].jh...)..}.(j....h'j....]
c4c0 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c .jm...)..}.(j....h'j....].j.....
c4e0 0c 49 6e 74 72 6f 64 75 63 74 69 6f 6e 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0c 49 6e 74 72 .Introduction.....}.(j......Intr
c500 6f 64 75 63 74 69 6f 6e 94 6a e4 02 00 00 6a 2f 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 oduction.j....j/...ubaj....}.(j.
c520 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d ...].j....].j....].j....].j....]
c540 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5e 02 00 00 8c 0a 61 6e 63 ...internal....refuri.j^.....anc
c560 68 6f 72 6e 61 6d 65 94 8c 0d 23 69 6e 74 72 6f 64 75 63 74 69 6f 6e 94 75 6a f1 02 00 00 6a 6c horname...#introduction.uj....jl
c580 03 00 00 6a e4 02 00 00 6a 2c 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a ...j....j,...ubaj....}.(j....].j
c5a0 e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 ....].j....].j....].j....].uj...
c5c0 00 6a 67 03 00 00 6a e4 02 00 00 6a 29 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 .jg...j....j)...ubaj....}.(j....
c5e0 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a ].j....].j....].j....].j....].uj
c600 f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 04 11 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 ....ja...j....j....ubjb...)..}.(
c620 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 j....h'j....].jh...)..}.(j....h'
c640 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 j....].jm...)..}.(j....h'j....].
c660 6a de 02 00 00 8c 10 41 20 62 69 74 20 6f 66 20 68 69 73 74 6f 72 79 94 85 94 81 94 7d 94 28 6a j......A.bit.of.history.....}.(j
c680 da 02 00 00 8c 10 41 20 62 69 74 20 6f 66 20 68 69 73 74 6f 72 79 94 6a e4 02 00 00 6a 53 11 00 ......A.bit.of.history.j....jS..
c6a0 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d .ubaj....}.(j....].j....].j....]
c6c0 94 6a ed 02 00 00 5d 94 6a ef 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
c6e0 75 72 69 94 6a 5e 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 11 23 61 2d 62 69 74 2d 6f uri.j^.....anchorname...#a-bit-o
c700 66 2d 68 69 73 74 6f 72 79 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 50 11 00 00 75 f-history.uj....jl...j....jP...u
c720 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
c740 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 4d 11 ....].j....].uj....jg...j....jM.
c760 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
c780 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 ].j....].j....].uj....ja...j....
c7a0 6a 04 11 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 j....ubjb...)..}.(j....h'j....].
c7c0 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 jh...)..}.(j....h'j....].jm...).
c7e0 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0a 53 65 63 75 72 65 20 .}.(j....h'j....].j......Secure.
c800 53 53 4c 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0a 53 65 63 75 72 65 20 53 53 4c 94 6a e4 02 SSL.....}.(j......Secure.SSL.j..
c820 00 00 6a 77 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..jw...ubaj....}.(j....].j....].
c840 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
c860 88 8c 06 72 65 66 75 72 69 94 6a 5e 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 0b 23 73 ...refuri.j^.....anchorname...#s
c880 65 63 75 72 65 2d 73 73 6c 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 74 11 00 00 75 ecure-ssl.uj....jl...j....jt...u
c8a0 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
c8c0 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 71 11 ....].j....].uj....jg...j....jq.
c8e0 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubaj....}.(j....].j....].j....
c900 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 ].j....].j....].uj....ja...j....
c920 6a 04 11 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 j....ubjb...)..}.(j....h'j....].
c940 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 jh...)..}.(j....h'j....].jm...).
c960 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 0c 43 6f 64 65 20 53 61 .}.(j....h'j....].j......Code.Sa
c980 6d 70 6c 65 73 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 0c 43 6f 64 65 20 53 61 6d 70 6c 65 73 mples.....}.(j......Code.Samples
c9a0 94 6a e4 02 00 00 6a 9b 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 .j....j....ubaj....}.(j....].j..
c9c0 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 ..].j....].j....].j....]...inter
c9e0 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5e 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 nal....refuri.j^.....anchorname.
ca00 8c 0d 23 63 6f 64 65 2d 73 61 6d 70 6c 65 73 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 ..#code-samples.uj....jl...j....
ca20 6a 98 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb j....ubaj....}.(j....].j....].j.
ca40 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 ...].j....].j....].uj....jg...j.
ca60 02 00 00 6a 95 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d ...j....ubaj....}.(j....].j....]
ca80 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 .j....].j....].j....].uj....ja..
caa0 00 6a e4 02 00 00 6a 04 11 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a .j....j....ubjb...)..}.(j....h'j
cac0 db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a ....].jh...)..}.(j....h'j....].j
cae0 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 07 73 m...)..}.(j....h'j....].j......s
cb00 73 6c 64 75 6d 70 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 07 73 73 6c 64 75 6d 70 94 6a e4 02 sldump.....}.(j......ssldump.j..
cb20 00 00 6a bf 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 ..j....ubaj....}.(j....].j....].
cb40 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 j....].j....].j....]...internal.
cb60 88 8c 06 72 65 66 75 72 69 94 6a 5e 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 08 23 73 ...refuri.j^.....anchorname...#s
cb80 73 6c 64 75 6d 70 94 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a bc 11 00 00 75 62 61 6a sldump.uj....jl...j....j....ubaj
cba0 e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 ....}.(j....].j....].j....].j...
cbc0 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a b9 11 00 00 75 .].j....].uj....jg...j....j....u
cbe0 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a baj....}.(j....].j....].j....].j
cc00 ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a 04 11 ....].j....].uj....ja...j....j..
cc20 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 ..ubej....}.(j....].j....].j....
cc40 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 75 62 6a 5f 02 ].j....].j....].uj....j\...ubj_.
cc60 00 00 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 62 03 00 ..j]...)..}.(j....h'j....].(jb..
cc80 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 28 6a 68 03 00 00 29 81 94 7d 94 .)..}.(j....h'j....].(jh...)..}.
cca0 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 (j....h'j....].jm...)..}.(j....h
ccc0 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 26 57 65 6c 63 6f 6d 65 20 74 6f 20 4d 32 43 72 79 70 'j....].j.....&Welcome.to.M2Cryp
cce0 74 6f e2 80 99 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 21 94 85 94 81 94 7d 94 28 6a da 02 to...s.documentation!.....}.(j..
cd00 00 00 6a 51 03 00 00 6a e4 02 00 00 6a ec 11 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 ..jQ...j....j....ubaj....}.(j...
cd20 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
cd40 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5f 02 00 00 8c 0a 61 6e 63 68 6f .internal....refuri.j_.....ancho
cd60 72 6e 61 6d 65 94 68 27 75 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a e9 11 00 00 75 62 61 rname.h'uj....jl...j....j....uba
cd80 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 j....}.(j....].j....].j....].j..
cda0 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a e6 11 00 00 ..].j....].uj....jg...j....j....
cdc0 75 62 6a 5d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a f4 08 00 00 ubj]...)..}.(j....h'j....].j....
cde0 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a e5 02 00 00 7d 94 28 6a e7 02 00 )..}.(j....h'j....].j....}.(j...
ce00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c .].j....].j....].j....].j....]..
ce20 06 70 61 72 65 6e 74 94 6a 5f 02 00 00 8c 07 65 6e 74 72 69 65 73 94 5d 94 4e 8c 08 4d 32 43 72 .parent.j_.....entries.].N..M2Cr
ce40 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 11 12 00 00 61 8c ypto...a..includefiles.].j....a.
ce60 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 89 8c .maxdepth.K...caption.N..glob...
ce80 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 6d 62 .hidden....includehidden....numb
cea0 65 72 65 64 94 4b 00 8c 0a 74 69 74 6c 65 73 6f 6e 6c 79 94 89 8c 0a 72 61 77 65 6e 74 72 69 65 ered.K...titlesonly....rawentrie
cec0 73 94 5d 94 75 6a f1 02 00 00 6a f3 08 00 00 6a 13 03 00 00 8c 38 2f 68 6f 6d 65 2f 6d 61 74 65 s.].uj....j....j.....8/home/mate
cee0 6a 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 j/archiv/knihovna/repos/m2crypto
cf00 2f 64 6f 63 2f 69 6e 64 65 78 2e 72 73 74 94 6a 14 03 00 00 4b 06 6a e4 02 00 00 6a 02 12 00 00 /doc/index.rst.j....K.j....j....
cf20 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
cf40 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 5c 03 00 00 6a e4 02 00 00 6a e6 j....].j....].uj....j\...j....j.
cf60 11 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 ...ubej....}.(j....].j....].j...
cf80 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 .].j....].j....].uj....ja...j...
cfa0 00 6a e3 11 00 00 75 62 6a 62 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d .j....ubjb...)..}.(j....h'j....]
cfc0 94 6a 68 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 .jh...)..}.(j....h'j....].jm...)
cfe0 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a de 02 00 00 8c 06 48 4f 57 54 4f 73 ..}.(j....h'j....].j......HOWTOs
d000 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 06 48 4f 57 54 4f 73 94 6a e4 02 00 00 6a 31 12 00 00 .....}.(j......HOWTOs.j....j1...
d020 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 ubaj....}.(j....].j....].j....].
d040 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 72 6e 61 6c 94 88 8c 06 72 65 66 75 j....].j....]...internal....refu
d060 72 69 94 6a 5f 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 94 8c 07 23 68 6f 77 74 6f 73 94 75 ri.j_.....anchorname...#howtos.u
d080 6a f1 02 00 00 6a 6c 03 00 00 6a e4 02 00 00 6a 2e 12 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a j....jl...j....j....ubaj....}.(j
d0a0 e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 ....].j....].j....].j....].j....
d0c0 5d 94 75 6a f1 02 00 00 6a 67 03 00 00 6a e4 02 00 00 6a 2b 12 00 00 75 62 61 6a e5 02 00 00 7d ].uj....jg...j....j+...ubaj....}
d0e0 94 28 6a e7 02 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef .(j....].j....].j....].j....].j.
d100 02 00 00 5d 94 75 6a f1 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a e3 11 00 00 75 62 6a 62 03 00 ...].uj....ja...j....j....ubjb..
d120 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 68 03 00 00 29 81 94 7d 94 28 .)..}.(j....h'j....].jh...)..}.(
d140 6a da 02 00 00 68 27 6a db 02 00 00 5d 94 6a 6d 03 00 00 29 81 94 7d 94 28 6a da 02 00 00 68 27 j....h'j....].jm...)..}.(j....h'
d160 6a db 02 00 00 5d 94 6a de 02 00 00 8c 12 49 6e 64 69 63 65 73 20 61 6e 64 20 74 61 62 6c 65 73 j....].j......Indices.and.tables
d180 94 85 94 81 94 7d 94 28 6a da 02 00 00 8c 12 49 6e 64 69 63 65 73 20 61 6e 64 20 74 61 62 6c 65 .....}.(j......Indices.and.table
d1a0 73 94 6a e4 02 00 00 6a 55 12 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 s.j....jU...ubaj....}.(j....].j.
d1c0 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 8c 08 69 6e 74 65 ...].j....].j....].j....]...inte
d1e0 72 6e 61 6c 94 88 8c 06 72 65 66 75 72 69 94 6a 5f 02 00 00 8c 0a 61 6e 63 68 6f 72 6e 61 6d 65 rnal....refuri.j_.....anchorname
d200 94 8c 13 23 69 6e 64 69 63 65 73 2d 61 6e 64 2d 74 61 62 6c 65 73 94 75 6a f1 02 00 00 6a 6c 03 ...#indices-and-tables.uj....jl.
d220 00 00 6a e4 02 00 00 6a 52 12 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d 94 6a e9 ..j....jR...ubaj....}.(j....].j.
d240 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 02 00 00 ...].j....].j....].j....].uj....
d260 6a 67 03 00 00 6a e4 02 00 00 6a 4f 12 00 00 75 62 61 6a e5 02 00 00 7d 94 28 6a e7 02 00 00 5d jg...j....jO...ubaj....}.(j....]
d280 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 75 6a f1 .j....].j....].j....].j....].uj.
d2a0 02 00 00 6a 61 03 00 00 6a e4 02 00 00 6a e3 11 00 00 75 62 65 6a e5 02 00 00 7d 94 28 6a e7 02 ...ja...j....j....ubej....}.(j..
d2c0 00 00 5d 94 6a e9 02 00 00 5d 94 6a eb 02 00 00 5d 94 6a ed 02 00 00 5d 94 6a ef 02 00 00 5d 94 ..].j....].j....].j....].j....].
d2e0 75 6a f1 02 00 00 6a 5c 03 00 00 75 62 75 8c 0f 74 6f 63 5f 6e 75 6d 5f 65 6e 74 72 69 65 73 94 uj....j\...ubu..toc_num_entries.
d300 7d 94 28 6a 60 02 00 00 4b 1c 6a 5c 02 00 00 4b 0c 6a 5b 02 00 00 4b 0c 6a 5a 02 00 00 4b 04 6a }.(j`...K.j\...K.j[...K.jZ...K.j
d320 5d 02 00 00 4b 11 6a 5e 02 00 00 4b 06 6a 5f 02 00 00 4b 03 75 8c 0e 74 6f 63 5f 73 65 63 6e 75 ]...K.j^...K.j_...K.u..toc_secnu
d340 6d 62 65 72 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 mbers.}...toc_fignumbers.}...toc
d360 74 72 65 65 5f 69 6e 63 6c 75 64 65 73 94 7d 94 28 6a 60 02 00 00 5d 94 6a 01 09 00 00 61 6a 5f tree_includes.}.(j`...].j....aj_
d380 02 00 00 5d 94 6a 11 12 00 00 61 75 8c 10 66 69 6c 65 73 5f 74 6f 5f 72 65 62 75 69 6c 64 94 7d ...].j....au..files_to_rebuild.}
d3a0 94 28 6a 01 09 00 00 8f 94 28 6a 60 02 00 00 90 6a 11 12 00 00 8f 94 28 6a 5f 02 00 00 90 75 8c .(j......(j`....j......(j_....u.
d3c0 0d 67 6c 6f 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 .glob_toctrees.....numbered_toct
d3e0 72 65 65 73 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 0b rees.....domaindata.}.(..c.}.(..
d400 72 6f 6f 74 5f 73 79 6d 62 6f 6c 94 6a 62 02 00 00 8c 06 53 79 6d 62 6f 6c 94 93 94 29 81 94 7d root_symbol.jb.....Symbol...)..}
d420 94 28 6a e4 02 00 00 4e 8c 0c 73 69 62 6c 69 6e 67 41 62 6f 76 65 94 4e 8c 0c 73 69 62 6c 69 6e .(j....N..siblingAbove.N..siblin
d440 67 42 65 6c 6f 77 94 4e 8c 05 69 64 65 6e 74 94 4e 8c 0b 64 65 63 6c 61 72 61 74 69 6f 6e 94 4e gBelow.N..ident.N..declaration.N
d460 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 8c 09 ..docname.N..isRedeclaration....
d480 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 75 62 _children.]..._anonChildren.].ub
d4a0 8c 07 6f 62 6a 65 63 74 73 94 7d 94 68 26 4b 00 75 8c 09 63 68 61 6e 67 65 73 65 74 94 7d 94 28 ..objects.}.h&K.u..changeset.}.(
d4c0 8c 07 63 68 61 6e 67 65 73 94 7d 94 68 26 4b 00 75 8c 08 63 69 74 61 74 69 6f 6e 94 7d 94 28 68 ..changes.}.h&K.u..citation.}.(h
d4e0 26 4b 00 8c 09 63 69 74 61 74 69 6f 6e 73 94 7d 94 8c 0d 63 69 74 61 74 69 6f 6e 5f 72 65 66 73 &K...citations.}...citation_refs
d500 94 7d 94 75 8c 03 63 70 70 94 7d 94 28 6a 8f 12 00 00 6a 65 02 00 00 6a 90 12 00 00 93 94 29 81 .}.u..cpp.}.(j....je...j......).
d520 94 7d 94 28 6a e4 02 00 00 4e 6a 94 12 00 00 4e 6a 95 12 00 00 4e 8c 09 69 64 65 6e 74 4f 72 4f .}.(j....Nj....Nj....N..identOrO
d540 70 94 4e 8c 0e 74 65 6d 70 6c 61 74 65 50 61 72 61 6d 73 94 4e 8c 0c 74 65 6d 70 6c 61 74 65 41 p.N..templateParams.N..templateA
d560 72 67 73 94 4e 6a 97 12 00 00 4e 6a 98 12 00 00 4e 6a 99 12 00 00 89 6a 9a 12 00 00 5d 94 6a 9c rgs.Nj....Nj....Nj.....j....].j.
d580 12 00 00 5d 94 75 62 6a eb 02 00 00 7d 94 68 26 4b 00 75 68 21 7d 94 28 68 26 4b 00 8c 07 65 6e ...].ubj....}.h&K.uh!}.(h&K...en
d5a0 74 72 69 65 73 94 7d 94 28 6a 60 02 00 00 5d 94 28 28 8c 04 70 61 69 72 94 8c 19 6d 6f 64 75 6c tries.}.(j`...].((..pair...modul
d5c0 65 3b 20 4d 32 43 72 79 70 74 6f 2e 5f 5f 69 6e 69 74 5f 5f 94 8c 18 6d 6f 64 75 6c 65 2d 4d 32 e;.M2Crypto.__init__...module-M2
d5e0 43 72 79 70 74 6f 2e 5f 5f 69 6e 69 74 5f 5f 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 15 6d 6f 64 Crypto.__init__.h'Nt.(j......mod
d600 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 94 8c 14 6d 6f 64 75 6c 65 2d 4d 32 43 72 ule;.M2Crypto.ASN1...module-M2Cr
d620 79 70 74 6f 2e 41 53 4e 31 94 68 27 4e 74 94 28 8c 06 73 69 6e 67 6c 65 94 8c 25 41 53 4e 31 5f ypto.ASN1.h'Nt.(..single..%ASN1_
d640 49 6e 74 65 67 65 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 Integer.(class.in.M2Crypto.ASN1)
d660 94 8c 1a 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 94 68 27 ...M2Crypto.ASN1.ASN1_Integer.h'
d680 4e 74 94 28 6a c0 12 00 00 8c 3a 6d 32 5f 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 66 72 65 65 28 Nt.(j.....:m2_asn1_integer_free(
d6a0 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 6d 65 ).(M2Crypto.ASN1.ASN1_Integer.me
d6c0 74 68 6f 64 29 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 thod)../M2Crypto.ASN1.ASN1_Integ
d6e0 65 72 2e 6d 32 5f 61 73 6e 31 5f 69 6e 74 65 67 65 72 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 er.m2_asn1_integer_free.h'Nt.(j.
d700 12 00 00 8c 24 41 53 4e 31 5f 4f 62 6a 65 63 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 ....$ASN1_Object.(class.in.M2Cry
d720 70 74 6f 2e 41 53 4e 31 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 4f pto.ASN1)...M2Crypto.ASN1.ASN1_O
d740 62 6a 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 6d 32 5f 61 73 6e 31 5f 6f 62 6a 65 63 bject.h'Nt.(j.....8m2_asn1_objec
d760 74 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 4f 62 6a t_free().(M2Crypto.ASN1.ASN1_Obj
d780 65 63 74 20 6d 65 74 68 6f 64 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 ect.method)..-M2Crypto.ASN1.ASN1
d7a0 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 68 27 4e 74 _Object.m2_asn1_object_free.h'Nt
d7c0 94 28 6a c0 12 00 00 8c 24 41 53 4e 31 5f 53 74 72 69 6e 67 20 28 63 6c 61 73 73 20 69 6e 20 4d .(j.....$ASN1_String.(class.in.M
d7e0 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 2Crypto.ASN1)...M2Crypto.ASN1.AS
d800 4e 31 5f 53 74 72 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 61 73 5f 74 65 78 74 28 29 N1_String.h'Nt.(j.....,as_text()
d820 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 6e 67 20 6d 65 74 68 .(M2Crypto.ASN1.ASN1_String.meth
d840 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 2e od)..!M2Crypto.ASN1.ASN1_String.
d860 61 73 5f 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 6d 32 5f 61 73 6e 31 5f 73 74 72 as_text.h'Nt.(j.....8m2_asn1_str
d880 69 6e 67 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 ing_free().(M2Crypto.ASN1.ASN1_S
d8a0 74 72 69 6e 67 20 6d 65 74 68 6f 64 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 tring.method)..-M2Crypto.ASN1.AS
d8c0 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 68 27 N1_String.m2_asn1_string_free.h'
d8e0 4e 74 94 28 6a c0 12 00 00 8c 22 41 53 4e 31 5f 54 49 4d 45 20 28 63 6c 61 73 73 20 69 6e 20 4d Nt.(j....."ASN1_TIME.(class.in.M
d900 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 2Crypto.ASN1)...M2Crypto.ASN1.AS
d920 4e 31 5f 54 49 4d 45 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 67 65 74 5f 64 61 74 65 74 69 6d N1_TIME.h'Nt.(j...../get_datetim
d940 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 20 6d 65 74 e().(M2Crypto.ASN1.ASN1_TIME.met
d960 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 67 hod)..$M2Crypto.ASN1.ASN1_TIME.g
d980 65 74 5f 64 61 74 65 74 69 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 6d 32 5f 61 73 6e 31 et_datetime.h'Nt.(j.....4m2_asn1
d9a0 5f 74 69 6d 65 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 _time_free().(M2Crypto.ASN1.ASN1
d9c0 5f 54 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 _TIME.method)..)M2Crypto.ASN1.AS
d9e0 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 68 27 4e 74 94 28 N1_TIME.m2_asn1_time_free.h'Nt.(
da00 6a c0 12 00 00 8c 2f 73 65 74 5f 64 61 74 65 74 69 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e j...../set_datetime().(M2Crypto.
da20 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 ASN1.ASN1_TIME.method)..$M2Crypt
da40 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 68 27 o.ASN1.ASN1_TIME.set_datetime.h'
da60 4e 74 94 28 6a c0 12 00 00 8c 2d 73 65 74 5f 73 74 72 69 6e 67 28 29 20 28 4d 32 43 72 79 70 74 Nt.(j.....-set_string().(M2Crypt
da80 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 o.ASN1.ASN1_TIME.method).."M2Cry
daa0 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 73 74 72 69 6e 67 94 68 27 pto.ASN1.ASN1_TIME.set_string.h'
dac0 4e 74 94 28 6a c0 12 00 00 8c 2b 73 65 74 5f 74 69 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e Nt.(j.....+set_time().(M2Crypto.
dae0 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 ASN1.ASN1_TIME.method)...M2Crypt
db00 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 68 27 4e 74 94 28 o.ASN1.ASN1_TIME.set_time.h'Nt.(
db20 6a c0 12 00 00 8c 26 41 53 4e 31 5f 55 54 43 54 49 4d 45 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d j.....&ASN1_UTCTIME.(in.module.M
db40 32 43 72 79 70 74 6f 2e 41 53 4e 31 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 2Crypto.ASN1)...M2Crypto.ASN1.AS
db60 4e 31 5f 55 54 43 54 49 4d 45 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 4c 6f 63 61 6c 54 69 6d N1_UTCTIME.h'Nt.(j.....&LocalTim
db80 65 7a 6f 6e 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 8c ezone.(class.in.M2Crypto.ASN1)..
dba0 1b 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 94 68 27 4e .M2Crypto.ASN1.LocalTimezone.h'N
dbc0 74 94 28 6a c0 12 00 00 8c 2a 64 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 4c t.(j.....*dst().(M2Crypto.ASN1.L
dbe0 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 20 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e ocalTimezone.method)...M2Crypto.
dc00 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 64 73 74 94 68 27 4e 74 94 28 6a c0 12 ASN1.LocalTimezone.dst.h'Nt.(j..
dc20 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 31 2e 4c 6f 63 61 ...-tzname().(M2Crypto.ASN1.Loca
dc40 6c 54 69 6d 65 7a 6f 6e 65 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 41 53 4e lTimezone.method).."M2Crypto.ASN
dc60 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 74 7a 6e 61 6d 65 94 68 27 4e 74 94 28 6a c0 12 1.LocalTimezone.tzname.h'Nt.(j..
dc80 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 41 53 4e 31 2e 4c ...0utcoffset().(M2Crypto.ASN1.L
dca0 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 20 6d 65 74 68 6f 64 29 94 8c 25 4d 32 43 72 79 70 74 6f 2e ocalTimezone.method)..%M2Crypto.
dcc0 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 75 74 63 6f 66 66 73 65 74 94 68 27 4e ASN1.LocalTimezone.utcoffset.h'N
dce0 74 94 28 6a b9 12 00 00 8c 1b 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 t.(j......module;.M2Crypto.AuthC
dd00 6f 6f 6b 69 65 94 8c 1a 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b ookie...module-M2Crypto.AuthCook
dd20 69 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 41 75 74 68 43 6f 6f 6b 69 65 20 28 63 6c 61 73 ie.h'Nt.(j.....)AuthCookie.(clas
dd40 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 8c 1e 4d 32 43 72 s.in.M2Crypto.AuthCookie)...M2Cr
dd60 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 94 68 27 4e 74 94 ypto.AuthCookie.AuthCookie.h'Nt.
dd80 28 6a c0 12 00 00 8c 2e 64 61 74 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f (j......data().(M2Crypto.AuthCoo
dda0 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 8c 23 4d 32 43 72 79 70 74 kie.AuthCookie.method)..#M2Crypt
ddc0 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 68 27 4e o.AuthCookie.AuthCookie.data.h'N
dde0 74 94 28 6a c0 12 00 00 8c 30 65 78 70 69 72 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 t.(j.....0expiry().(M2Crypto.Aut
de00 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 8c 25 4d 32 43 hCookie.AuthCookie.method)..%M2C
de20 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 65 78 70 69 rypto.AuthCookie.AuthCookie.expi
de40 72 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 68 65 61 64 65 72 56 61 6c 75 65 28 29 20 28 4d ry.h'Nt.(j.....5headerValue().(M
de60 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 20 6d 65 2Crypto.AuthCookie.AuthCookie.me
de80 74 68 6f 64 29 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 thod)..*M2Crypto.AuthCookie.Auth
dea0 43 6f 6f 6b 69 65 2e 68 65 61 64 65 72 56 61 6c 75 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 Cookie.headerValue.h'Nt.(j.....3
dec0 69 73 45 78 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 isExpired().(M2Crypto.AuthCookie
dee0 2e 41 75 74 68 43 6f 6f 6b 69 65 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 41 .AuthCookie.method)..(M2Crypto.A
df00 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 69 73 45 78 70 69 72 65 64 94 68 uthCookie.AuthCookie.isExpired.h
df20 27 4e 74 94 28 6a c0 12 00 00 8c 2d 6d 61 63 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 'Nt.(j.....-mac().(M2Crypto.Auth
df40 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 8c 22 4d 32 43 72 Cookie.AuthCookie.method).."M2Cr
df60 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 61 63 94 68 ypto.AuthCookie.AuthCookie.mac.h
df80 27 4e 74 94 28 6a c0 12 00 00 8c 2e 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 41 75 74 'Nt.(j......name().(M2Crypto.Aut
dfa0 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 8c 23 4d 32 43 hCookie.AuthCookie.method)..#M2C
dfc0 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 6e 61 6d 65 rypto.AuthCookie.AuthCookie.name
dfe0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 30 6f 75 74 70 75 74 28 29 20 28 4d 32 43 72 79 70 74 6f .h'Nt.(j.....0output().(M2Crypto
e000 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 8c .AuthCookie.AuthCookie.method)..
e020 25 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 %M2Crypto.AuthCookie.AuthCookie.
e040 6f 75 74 70 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 76 61 6c 75 65 28 29 20 28 4d 32 43 output.h'Nt.(j...../value().(M2C
e060 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 20 6d 65 74 68 rypto.AuthCookie.AuthCookie.meth
e080 6f 64 29 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 od)..$M2Crypto.AuthCookie.AuthCo
e0a0 6f 6b 69 65 2e 76 61 6c 75 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 41 75 74 68 43 6f 6f 6b okie.value.h'Nt.(j.....,AuthCook
e0c0 69 65 4a 61 72 20 28 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 ieJar.(class.in.M2Crypto.AuthCoo
e0e0 6b 69 65 29 94 8c 21 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 kie)..!M2Crypto.AuthCookie.AuthC
e100 6f 6f 6b 69 65 4a 61 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 69 73 47 6f 6f 64 43 6f 6f 6b ookieJar.h'Nt.(j.....9isGoodCook
e120 69 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 74 68 43 6f ie().(M2Crypto.AuthCookie.AuthCo
e140 6f 6b 69 65 4a 61 72 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 okieJar.method)...M2Crypto.AuthC
e160 6f 6f 6b 69 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 ookie.AuthCookieJar.isGoodCookie
e180 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3f 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 53 74 72 69 6e 67 .h'Nt.(j.....?isGoodCookieString
e1a0 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 68 43 6f 6f 6b ().(M2Crypto.AuthCookie.AuthCook
e1c0 69 65 4a 61 72 20 6d 65 74 68 6f 64 29 94 8c 34 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f ieJar.method)..4M2Crypto.AuthCoo
e1e0 6b 69 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 kie.AuthCookieJar.isGoodCookieSt
e200 72 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 6d 61 6b 65 43 6f 6f 6b 69 65 28 29 20 28 ring.h'Nt.(j.....7makeCookie().(
e220 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 4a 61 M2Crypto.AuthCookie.AuthCookieJa
e240 72 20 6d 65 74 68 6f 64 29 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e r.method)..,M2Crypto.AuthCookie.
e260 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 2e 6d 61 6b 65 43 6f 6f 6b 69 65 94 68 27 4e 74 94 28 6a AuthCookieJar.makeCookie.h'Nt.(j
e280 c0 12 00 00 8c 25 6d 69 78 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e .....%mix().(in.module.M2Crypto.
e2a0 41 75 74 68 43 6f 6f 6b 69 65 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 AuthCookie)...M2Crypto.AuthCooki
e2c0 65 2e 6d 69 78 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 75 6e 6d 69 78 28 29 20 28 69 6e 20 6d e.mix.h'Nt.(j.....'unmix().(in.m
e2e0 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 29 94 8c 19 4d 32 43 odule.M2Crypto.AuthCookie)...M2C
e300 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 75 6e 6d 69 78 94 68 27 4e 74 94 28 6a c0 12 rypto.AuthCookie.unmix.h'Nt.(j..
e320 00 00 8c 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 ...(unmix3().(in.module.M2Crypto
e340 2e 41 75 74 68 43 6f 6f 6b 69 65 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b .AuthCookie)...M2Crypto.AuthCook
e360 69 65 2e 75 6e 6d 69 78 33 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 14 6d 6f 64 75 6c 65 3b 20 4d ie.unmix3.h'Nt.(j......module;.M
e380 32 43 72 79 70 74 6f 2e 42 49 4f 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 42 49 2Crypto.BIO...module-M2Crypto.BI
e3a0 4f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1b 42 49 4f 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 O.h'Nt.(j......BIO.(class.in.M2C
e3c0 72 79 70 74 6f 2e 42 49 4f 29 94 8c 10 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 94 68 27 rypto.BIO)...M2Crypto.BIO.BIO.h'
e3e0 4e 74 94 28 6a c0 12 00 00 8c 23 62 69 6f 5f 70 74 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 Nt.(j.....#bio_ptr().(M2Crypto.B
e400 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 IO.BIO.method)...M2Crypto.BIO.BI
e420 4f 2e 62 69 6f 5f 70 74 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 21 63 6c 6f 73 65 28 29 20 28 O.bio_ptr.h'Nt.(j.....!close().(
e440 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 8c 16 4d 32 43 72 79 M2Crypto.BIO.BIO.method)...M2Cry
e460 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 66 pto.BIO.BIO.close.h'Nt.(j....."f
e480 69 6c 65 6e 6f 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 ileno().(M2Crypto.BIO.BIO.method
e4a0 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 66 69 6c 65 6e 6f 94 68 27 4e 74 )...M2Crypto.BIO.BIO.fileno.h'Nt
e4c0 94 28 6a c0 12 00 00 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 .(j.....!flush().(M2Crypto.BIO.B
e4e0 49 4f 20 6d 65 74 68 6f 64 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 66 6c IO.method)...M2Crypto.BIO.BIO.fl
e500 75 73 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 6d 32 5f 62 69 6f 5f 66 72 65 65 28 29 20 28 ush.h'Nt.(j.....'m2_bio_free().(
e520 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 8c 1c 4d 32 43 72 79 M2Crypto.BIO.BIO.method)...M2Cry
e540 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 pto.BIO.BIO.m2_bio_free.h'Nt.(j.
e560 12 00 00 8c 20 72 65 61 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 .....read().(M2Crypto.BIO.BIO.me
e580 74 68 6f 64 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 61 64 94 68 27 thod)...M2Crypto.BIO.BIO.read.h'
e5a0 4e 74 94 28 6a c0 12 00 00 8c 24 72 65 61 64 61 62 6c 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e Nt.(j.....$readable().(M2Crypto.
e5c0 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 BIO.BIO.method)...M2Crypto.BIO.B
e5e0 49 4f 2e 72 65 61 64 61 62 6c 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 72 65 61 64 6c 69 6e IO.readable.h'Nt.(j.....$readlin
e600 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 8c 19 e().(M2Crypto.BIO.BIO.method)...
e620 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 68 27 4e 74 94 28 M2Crypto.BIO.BIO.readline.h'Nt.(
e640 6a c0 12 00 00 8c 25 72 65 61 64 6c 69 6e 65 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f j.....%readlines().(M2Crypto.BIO
e660 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e .BIO.method)...M2Crypto.BIO.BIO.
e680 72 65 61 64 6c 69 6e 65 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 21 72 65 73 65 74 28 29 20 28 readlines.h'Nt.(j.....!reset().(
e6a0 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 8c 16 4d 32 43 72 79 M2Crypto.BIO.BIO.method)...M2Cry
e6c0 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 73 65 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 20 73 pto.BIO.BIO.reset.h'Nt.(j......s
e6e0 65 65 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 eek().(M2Crypto.BIO.BIO.method).
e700 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 73 65 65 6b 94 68 27 4e 74 94 28 6a c0 ..M2Crypto.BIO.BIO.seek.h'Nt.(j.
e720 12 00 00 8c 27 73 68 6f 75 6c 64 5f 72 65 61 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f ....'should_read().(M2Crypto.BIO
e740 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e .BIO.method)...M2Crypto.BIO.BIO.
e760 73 68 6f 75 6c 64 5f 72 65 61 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 68 6f 75 6c 64 5f should_read.h'Nt.(j.....(should_
e780 72 65 74 72 79 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 retry().(M2Crypto.BIO.BIO.method
e7a0 29 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 74 72 )...M2Crypto.BIO.BIO.should_retr
e7c0 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 68 6f 75 6c 64 5f 77 72 69 74 65 28 29 20 28 4d y.h'Nt.(j.....(should_write().(M
e7e0 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 2Crypto.BIO.BIO.method)...M2Cryp
e800 74 6f 2e 42 49 4f 2e 42 49 4f 2e 73 68 6f 75 6c 64 5f 77 72 69 74 65 94 68 27 4e 74 94 28 6a c0 to.BIO.BIO.should_write.h'Nt.(j.
e820 12 00 00 8c 20 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 .....tell().(M2Crypto.BIO.BIO.me
e840 74 68 6f 64 29 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 68 27 thod)...M2Crypto.BIO.BIO.tell.h'
e860 4e 74 94 28 6a c0 12 00 00 8c 21 77 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f Nt.(j.....!write().(M2Crypto.BIO
e880 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e .BIO.method)...M2Crypto.BIO.BIO.
e8a0 77 72 69 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 77 72 69 74 65 5f 63 6c 6f 73 65 28 29 write.h'Nt.(j.....'write_close()
e8c0 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 8c 1c 4d 32 43 .(M2Crypto.BIO.BIO.method)...M2C
e8e0 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 68 27 4e 74 94 28 rypto.BIO.BIO.write_close.h'Nt.(
e900 6a c0 12 00 00 8c 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 j.....%writeable().(M2Crypto.BIO
e920 2e 42 49 4f 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e .BIO.method)...M2Crypto.BIO.BIO.
e940 77 72 69 74 65 61 62 6c 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 08 42 49 4f 45 72 72 6f 72 94 writeable.h'Nt.(j......BIOError.
e960 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 ..M2Crypto.BIO.BIOError.h'Nt.(j.
e980 12 00 00 8c 24 43 69 70 68 65 72 53 74 72 65 61 6d 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 ....$CipherStream.(class.in.M2Cr
e9a0 79 70 74 6f 2e 42 49 4f 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 ypto.BIO)...M2Crypto.BIO.CipherS
e9c0 74 72 65 61 6d 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e 53 41 4c 54 5f 4c 45 4e 20 28 4d 32 43 tream.h'Nt.(j......SALT_LEN.(M2C
e9e0 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 20 61 74 74 72 69 62 75 74 65 rypto.BIO.CipherStream.attribute
ea00 29 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 61 6d 2e 53 41 ).."M2Crypto.BIO.CipherStream.SA
ea20 4c 54 5f 4c 45 4e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 63 6c 6f 73 65 28 29 20 28 4d 32 43 LT_LEN.h'Nt.(j.....*close().(M2C
ea40 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 94 8c rypto.BIO.CipherStream.method)..
ea60 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
ea80 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 30 6d 32 5f 62 69 6f 5f 66 72 65 65 28 29 20 28 4d 32 43 .h'Nt.(j.....0m2_bio_free().(M2C
eaa0 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 94 8c rypto.BIO.CipherStream.method)..
eac0 25 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 6d 32 5f 62 69 %M2Crypto.BIO.CipherStream.m2_bi
eae0 6f 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 6d 32 5f 62 69 6f 5f 70 6f 70 28 29 o_free.h'Nt.(j...../m2_bio_pop()
eb00 20 28 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 20 6d 65 74 68 .(M2Crypto.BIO.CipherStream.meth
eb20 6f 64 29 94 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 od)..$M2Crypto.BIO.CipherStream.
eb40 6d 32 5f 62 69 6f 5f 70 6f 70 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 73 65 74 5f 63 69 70 68 m2_bio_pop.h'Nt.(j...../set_ciph
eb60 65 72 28 29 20 28 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 20 er().(M2Crypto.BIO.CipherStream.
eb80 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 method)..$M2Crypto.BIO.CipherStr
eba0 65 61 6d 2e 73 65 74 5f 63 69 70 68 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 30 77 72 69 74 eam.set_cipher.h'Nt.(j.....0writ
ebc0 65 5f 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 e_close().(M2Crypto.BIO.CipherSt
ebe0 72 65 61 6d 20 6d 65 74 68 6f 64 29 94 8c 25 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 ream.method)..%M2Crypto.BIO.Ciph
ec00 65 72 53 74 72 65 61 6d 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 erStream.write_close.h'Nt.(j....
ec20 8c 1c 46 69 6c 65 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 8c ..File.(class.in.M2Crypto.BIO)..
ec40 11 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 .M2Crypto.BIO.File.h'Nt.(j....."
ec60 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 68 6f close().(M2Crypto.BIO.File.metho
ec80 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 2e 63 6c 6f 73 65 94 68 27 4e d)...M2Crypto.BIO.File.close.h'N
eca0 74 94 28 6a c0 12 00 00 8c 22 66 6c 75 73 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e t.(j....."flush().(M2Crypto.BIO.
ecc0 46 69 6c 65 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 File.method)...M2Crypto.BIO.File
ece0 2e 66 6c 75 73 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 72 65 73 65 74 28 29 20 28 4d 32 43 .flush.h'Nt.(j....."reset().(M2C
ed00 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 rypto.BIO.File.method)...M2Crypt
ed20 6f 2e 42 49 4f 2e 46 69 6c 65 2e 72 65 73 65 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 20 49 4f o.BIO.File.reset.h'Nt.(j......IO
ed40 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 29 94 8c Buffer.(class.in.M2Crypto.BIO)..
ed60 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 94 68 27 4e 74 94 28 6a c0 12 .M2Crypto.BIO.IOBuffer.h'Nt.(j..
ed80 00 00 8c 26 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 ...&close().(M2Crypto.BIO.IOBuff
eda0 65 72 20 6d 65 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 er.method)...M2Crypto.BIO.IOBuff
edc0 65 72 2e 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 6d 32 5f 62 69 6f 5f 66 72 65 er.close.h'Nt.(j.....,m2_bio_fre
ede0 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 20 6d 65 74 68 6f e().(M2Crypto.BIO.IOBuffer.metho
ee00 64 29 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 62 69 d)..!M2Crypto.BIO.IOBuffer.m2_bi
ee20 6f 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 6d 32 5f 62 69 6f 5f 70 6f 70 28 29 o_free.h'Nt.(j.....+m2_bio_pop()
ee40 20 28 4d 32 43 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 .(M2Crypto.BIO.IOBuffer.method).
ee60 8c 20 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 62 69 6f 5f 70 ..M2Crypto.BIO.IOBuffer.m2_bio_p
ee80 6f 70 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 28 63 6c op.h'Nt.(j.....$MemoryBuffer.(cl
eea0 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e ass.in.M2Crypto.BIO)...M2Crypto.
eec0 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 63 6c BIO.MemoryBuffer.h'Nt.(j.....*cl
eee0 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 65 72 ose().(M2Crypto.BIO.MemoryBuffer
ef00 20 6d 65 74 68 6f 64 29 94 8c 1f 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
ef20 66 66 65 72 2e 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 67 65 74 76 61 6c 75 65 ffer.close.h'Nt.(j.....-getvalue
ef40 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 6d 65 ().(M2Crypto.BIO.MemoryBuffer.me
ef60 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 thod).."M2Crypto.BIO.MemoryBuffe
ef80 72 2e 67 65 74 76 61 6c 75 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 72 65 61 64 28 29 20 28 r.getvalue.h'Nt.(j.....)read().(
efa0 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 6d 65 74 68 6f 64 M2Crypto.BIO.MemoryBuffer.method
efc0 29 94 8c 1e 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 )...M2Crypto.BIO.MemoryBuffer.re
efe0 61 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 72 65 61 64 5f 61 6c 6c 28 29 20 28 4d 32 43 72 ad.h'Nt.(j.....-read_all().(M2Cr
f000 79 70 74 6f 2e 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 6d 65 74 68 6f 64 29 94 8c 22 ypto.BIO.MemoryBuffer.method).."
f020 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 5f 61 M2Crypto.BIO.MemoryBuffer.read_a
f040 6c 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 30 77 72 69 74 65 5f 63 6c 6f 73 65 28 29 20 28 4d ll.h'Nt.(j.....0write_close().(M
f060 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 6d 65 74 68 6f 64 29 2Crypto.BIO.MemoryBuffer.method)
f080 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 77 72 69 ..%M2Crypto.BIO.MemoryBuffer.wri
f0a0 74 65 5f 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1e 53 53 4c 42 69 6f 20 28 63 6c te_close.h'Nt.(j......SSLBio.(cl
f0c0 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 29 94 8c 13 4d 32 43 72 79 70 74 6f 2e ass.in.M2Crypto.BIO)...M2Crypto.
f0e0 42 49 4f 2e 53 53 4c 42 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 64 6f 5f 68 61 6e 64 73 BIO.SSLBio.h'Nt.(j.....+do_hands
f100 68 61 6b 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 53 53 4c 42 69 6f 20 6d 65 74 68 hake().(M2Crypto.BIO.SSLBio.meth
f120 6f 64 29 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 od)...M2Crypto.BIO.SSLBio.do_han
f140 64 73 68 61 6b 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 73 65 74 5f 73 73 6c 28 29 20 28 4d dshake.h'Nt.(j.....&set_ssl().(M
f160 32 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 8c 1b 4d 32 43 2Crypto.BIO.SSLBio.method)...M2C
f180 72 79 70 74 6f 2e 42 49 4f 2e 53 53 4c 42 69 6f 2e 73 65 74 5f 73 73 6c 94 68 27 4e 74 94 28 6a rypto.BIO.SSLBio.set_ssl.h'Nt.(j
f1a0 c0 12 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 .....#openfile().(in.module.M2Cr
f1c0 79 70 74 6f 2e 42 49 4f 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 6f 70 65 6e 66 69 6c ypto.BIO)...M2Crypto.BIO.openfil
f1e0 65 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 13 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e e.h'Nt.(j......module;.M2Crypto.
f200 42 4e 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 42 4e 94 68 27 4e 74 94 28 6a c0 BN...module-M2Crypto.BN.h'Nt.(j.
f220 12 00 00 8c 1e 72 61 6e 64 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e .....rand().(in.module.M2Crypto.
f240 42 4e 29 94 8c 10 4d 32 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 94 68 27 4e 74 94 28 6a c0 12 BN)...M2Crypto.BN.rand.h'Nt.(j..
f260 00 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 ...$rand_range().(in.module.M2Cr
f280 79 70 74 6f 2e 42 4e 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 5f 72 61 6e 67 ypto.BN)...M2Crypto.BN.rand_rang
f2a0 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 72 61 6e 64 66 6e 61 6d 65 28 29 20 28 69 6e 20 6d e.h'Nt.(j.....#randfname().(in.m
f2c0 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 42 4e 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 4e odule.M2Crypto.BN)...M2Crypto.BN
f2e0 2e 72 61 6e 64 66 6e 61 6d 65 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 13 6d 6f 64 75 6c 65 3b 20 .randfname.h'Nt.(j......module;.
f300 4d 32 43 72 79 70 74 6f 2e 44 48 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 44 48 M2Crypto.DH...module-M2Crypto.DH
f320 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 19 44 48 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 .h'Nt.(j......DH.(class.in.M2Cry
f340 70 74 6f 2e 44 48 29 94 8c 0e 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 94 68 27 4e 74 94 28 6a pto.DH)...M2Crypto.DH.DH.h'Nt.(j
f360 c0 12 00 00 8c 26 63 68 65 63 6b 5f 70 61 72 61 6d 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 .....&check_params().(M2Crypto.D
f380 48 2e 44 48 20 6d 65 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 63 68 H.DH.method)...M2Crypto.DH.DH.ch
f3a0 65 63 6b 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 63 6f 6d 70 75 74 65 5f eck_params.h'Nt.(j.....%compute_
f3c0 6b 65 79 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 8c 1a key().(M2Crypto.DH.DH.method)...
f3e0 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 63 6f 6d 70 75 74 65 5f 6b 65 79 94 68 27 4e 74 94 M2Crypto.DH.DH.compute_key.h'Nt.
f400 28 6a c0 12 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 (j.....!gen_key().(M2Crypto.DH.D
f420 48 20 6d 65 74 68 6f 64 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 67 65 6e 5f 6b H.method)...M2Crypto.DH.DH.gen_k
f440 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 6d 32 5f 64 68 5f 66 72 65 65 28 29 20 28 4d 32 ey.h'Nt.(j.....$m2_dh_free().(M2
f460 43 72 79 70 74 6f 2e 44 48 2e 44 48 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e Crypto.DH.DH.method)...M2Crypto.
f480 44 48 2e 44 48 2e 6d 32 5f 64 68 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 70 72 DH.DH.m2_dh_free.h'Nt.(j.....&pr
f4a0 69 6e 74 5f 70 61 72 61 6d 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 20 6d 65 74 int_params().(M2Crypto.DH.DH.met
f4c0 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 70 72 69 6e 74 5f 70 61 72 61 hod)...M2Crypto.DH.DH.print_para
f4e0 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 07 44 48 45 72 72 6f 72 94 8c 13 4d 32 43 72 79 70 ms.h'Nt.(j......DHError...M2Cryp
f500 74 6f 2e 44 48 2e 44 48 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 67 65 6e 5f 70 to.DH.DHError.h'Nt.(j.....$gen_p
f520 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 44 48 29 94 arams().(in.module.M2Crypto.DH).
f540 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 68 27 4e 74 94 28 6a ..M2Crypto.DH.gen_params.h'Nt.(j
f560 c0 12 00 00 8c 25 6c 6f 61 64 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d .....%load_params().(in.module.M
f580 32 43 72 79 70 74 6f 2e 44 48 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 48 2e 6c 6f 61 64 5f 70 2Crypto.DH)...M2Crypto.DH.load_p
f5a0 61 72 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 arams.h'Nt.(j.....)load_params_b
f5c0 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 48 29 94 8c 1b 4d io().(in.module.M2Crypto.DH)...M
f5e0 32 43 72 79 70 74 6f 2e 44 48 2e 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 68 27 4e 74 94 2Crypto.DH.load_params_bio.h'Nt.
f600 28 6a c0 12 00 00 8c 24 73 65 74 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 (j.....$set_params().(in.module.
f620 4d 32 43 72 79 70 74 6f 2e 44 48 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 44 48 2e 73 65 74 5f 70 M2Crypto.DH)...M2Crypto.DH.set_p
f640 61 72 61 6d 73 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 14 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 arams.h'Nt.(j......module;.M2Cry
f660 70 74 6f 2e 44 53 41 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 44 53 41 94 68 27 pto.DSA...module-M2Crypto.DSA.h'
f680 4e 74 94 28 6a c0 12 00 00 8c 1b 44 53 41 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 Nt.(j......DSA.(class.in.M2Crypt
f6a0 6f 2e 44 53 41 29 94 8c 10 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 94 68 27 4e 74 94 28 o.DSA)...M2Crypto.DSA.DSA.h'Nt.(
f6c0 6a c0 12 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 2e 44 53 41 j.....%check_key().(M2Crypto.DSA
f6e0 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e .DSA.method)...M2Crypto.DSA.DSA.
f700 63 68 65 63 6b 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 67 65 6e 5f 6b 65 79 28 29 check_key.h'Nt.(j.....#gen_key()
f720 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 8c 18 4d 32 43 .(M2Crypto.DSA.DSA.method)...M2C
f740 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 67 65 6e 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 rypto.DSA.DSA.gen_key.h'Nt.(j...
f760 00 8c 27 6d 32 5f 64 73 61 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 ..'m2_dsa_free().(M2Crypto.DSA.D
f780 53 41 20 6d 65 74 68 6f 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 6d 32 SA.method)...M2Crypto.DSA.DSA.m2
f7a0 5f 64 73 61 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 73 61 76 65 5f 6b 65 79 28 _dsa_free.h'Nt.(j.....$save_key(
f7c0 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 8c 19 4d 32 ).(M2Crypto.DSA.DSA.method)...M2
f7e0 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 Crypto.DSA.DSA.save_key.h'Nt.(j.
f800 12 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 74 6f 2e 44 53 ....(save_key_bio().(M2Crypto.DS
f820 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 A.DSA.method)...M2Crypto.DSA.DSA
f840 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 73 61 76 65 5f .save_key_bio.h'Nt.(j.....'save_
f860 70 61 72 61 6d 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 params().(M2Crypto.DSA.DSA.metho
f880 64 29 94 8c 1c 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 d)...M2Crypto.DSA.DSA.save_param
f8a0 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 73 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 28 29 s.h'Nt.(j.....+save_params_bio()
f8c0 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 8c 20 4d 32 43 .(M2Crypto.DSA.DSA.method)...M2C
f8e0 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 5f 62 69 6f 94 68 27 rypto.DSA.DSA.save_params_bio.h'
f900 4e 74 94 28 6a c0 12 00 00 8c 28 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 Nt.(j.....(save_pub_key().(M2Cry
f920 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 pto.DSA.DSA.method)...M2Crypto.D
f940 53 41 2e 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c SA.DSA.save_pub_key.h'Nt.(j.....
f960 2c 73 61 76 65 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 44 53 ,save_pub_key_bio().(M2Crypto.DS
f980 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 A.DSA.method)..!M2Crypto.DSA.DSA
f9a0 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 73 .save_pub_key_bio.h'Nt.(j.....&s
f9c0 65 74 5f 70 61 72 61 6d 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 20 6d 65 et_params().(M2Crypto.DSA.DSA.me
f9e0 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 65 74 5f 70 61 72 thod)...M2Crypto.DSA.DSA.set_par
fa00 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 20 73 69 67 6e 28 29 20 28 4d 32 43 72 79 70 74 ams.h'Nt.(j......sign().(M2Crypt
fa20 6f 2e 44 53 41 2e 44 53 41 20 6d 65 74 68 6f 64 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 o.DSA.DSA.method)...M2Crypto.DSA
fa40 2e 44 53 41 2e 73 69 67 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 73 69 67 6e 5f 61 73 6e 31 .DSA.sign.h'Nt.(j.....%sign_asn1
fa60 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 8c 1a 4d ().(M2Crypto.DSA.DSA.method)...M
fa80 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 69 67 6e 5f 61 73 6e 31 94 68 27 4e 74 94 28 2Crypto.DSA.DSA.sign_asn1.h'Nt.(
faa0 6a c0 12 00 00 8c 22 76 65 72 69 66 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 j....."verify().(M2Crypto.DSA.DS
fac0 41 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 76 65 72 A.method)...M2Crypto.DSA.DSA.ver
fae0 69 66 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 76 65 72 69 66 79 5f 61 73 6e 31 28 29 20 28 ify.h'Nt.(j.....'verify_asn1().(
fb00 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 8c 1c 4d 32 43 72 79 M2Crypto.DSA.DSA.method)...M2Cry
fb20 70 74 6f 2e 44 53 41 2e 44 53 41 2e 76 65 72 69 66 79 5f 61 73 6e 31 94 68 27 4e 74 94 28 6a c0 pto.DSA.DSA.verify_asn1.h'Nt.(j.
fb40 12 00 00 8c 08 44 53 41 45 72 72 6f 72 94 8c 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 .....DSAError...M2Crypto.DSA.DSA
fb60 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1f 44 53 41 5f 70 75 62 20 28 63 6c 61 73 Error.h'Nt.(j......DSA_pub.(clas
fb80 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 8c 14 4d 32 43 72 79 70 74 6f 2e 44 53 s.in.M2Crypto.DSA)...M2Crypto.DS
fba0 41 2e 44 53 41 5f 70 75 62 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 63 68 65 63 6b 5f 6b 65 79 A.DSA_pub.h'Nt.(j.....)check_key
fbc0 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)
fbe0 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 63 6b 5f 6b 65 ...M2Crypto.DSA.DSA_pub.check_ke
fc00 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 61 76 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 y.h'Nt.(j.....(save_key().(M2Cry
fc20 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 pto.DSA.DSA_pub.method)...M2Cryp
fc40 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 to.DSA.DSA_pub.save_key.h'Nt.(j.
fc60 12 00 00 8c 2c 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 44 53 ....,save_key_bio().(M2Crypto.DS
fc80 41 2e 44 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 44 53 41 A.DSA_pub.method)..!M2Crypto.DSA
fca0 2e 44 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 .DSA_pub.save_key_bio.h'Nt.(j...
fcc0 00 8c 24 73 69 67 6e 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 ..$sign().(M2Crypto.DSA.DSA_pub.
fce0 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 method)...M2Crypto.DSA.DSA_pub.s
fd00 69 67 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 73 69 67 6e 5f 61 73 6e 31 28 29 20 28 4d 32 ign.h'Nt.(j.....)sign_asn1().(M2
fd20 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 8c 1e 4d 32 43 Crypto.DSA.DSA_pub.method)...M2C
fd40 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 69 67 6e 5f 61 73 6e 31 94 68 27 4e 74 rypto.DSA.DSA_pub.sign_asn1.h'Nt
fd60 94 28 6a c0 12 00 00 8c 25 67 65 6e 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 .(j.....%gen_params().(in.module
fd80 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 67 65 .M2Crypto.DSA)...M2Crypto.DSA.ge
fda0 6e 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 6c 6f 61 64 5f 6b 65 79 28 29 n_params.h'Nt.(j.....#load_key()
fdc0 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 8c 15 4d 32 43 72 .(in.module.M2Crypto.DSA)...M2Cr
fde0 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 6c ypto.DSA.load_key.h'Nt.(j.....'l
fe00 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 4d 32 43 72 79 70 74 oad_key_bio().(in.module.M2Crypt
fe20 6f 2e 44 53 41 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 6b 65 79 5f 62 o.DSA)...M2Crypto.DSA.load_key_b
fe40 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 6c 6f 61 64 5f 70 61 72 61 6d 73 28 29 20 28 69 io.h'Nt.(j.....&load_params().(i
fe60 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 8c 18 4d 32 43 72 79 70 74 n.module.M2Crypto.DSA)...M2Crypt
fe80 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6c o.DSA.load_params.h'Nt.(j.....*l
fea0 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 43 72 oad_params_bio().(in.module.M2Cr
fec0 79 70 74 6f 2e 44 53 41 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 61 ypto.DSA)...M2Crypto.DSA.load_pa
fee0 72 61 6d 73 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 6c 6f 61 64 5f 70 75 62 5f 6b rams_bio.h'Nt.(j.....'load_pub_k
ff00 65 79 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 8c 19 ey().(in.module.M2Crypto.DSA)...
ff20 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 68 27 4e 74 94 28 M2Crypto.DSA.load_pub_key.h'Nt.(
ff40 6a c0 12 00 00 8c 2b 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 28 29 20 28 69 6e 20 6d 6f j.....+load_pub_key_bio().(in.mo
ff60 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 dule.M2Crypto.DSA)...M2Crypto.DS
ff80 41 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e A.load_pub_key_bio.h'Nt.(j......
ffa0 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 pub_key_from_params().(in.module
ffc0 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 70 75 .M2Crypto.DSA)...M2Crypto.DSA.pu
ffe0 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 73 b_key_from_params.h'Nt.(j.....%s
10000 65 74 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 et_params().(in.module.M2Crypto.
10020 44 53 41 29 94 95 17 00 01 00 00 00 00 00 8c 17 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 73 65 74 DSA)............M2Crypto.DSA.set
10040 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 13 6d 6f 64 75 6c 65 3b 20 4d 32 43 _params.h'Nt.(j......module;.M2C
10060 72 79 70 74 6f 2e 45 43 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 43 94 68 27 rypto.EC...module-M2Crypto.EC.h'
10080 4e 74 94 28 6a c0 12 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 Nt.(j......EC.(class.in.M2Crypto
100a0 2e 45 43 29 94 8c 0e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 94 68 27 4e 74 94 28 6a c0 12 00 .EC)...M2Crypto.EC.EC.h'Nt.(j...
100c0 00 8c 20 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 ...as_pem().(M2Crypto.EC.EC.meth
100e0 6f 64 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 61 73 5f 70 65 6d 94 68 27 4e 74 od)...M2Crypto.EC.EC.as_pem.h'Nt
10100 94 28 6a c0 12 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 .(j.....#check_key().(M2Crypto.E
10120 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 63 68 C.EC.method)...M2Crypto.EC.EC.ch
10140 65 63 6b 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 63 6f 6d 70 75 74 65 5f 64 68 5f eck_key.h'Nt.(j.....(compute_dh_
10160 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 6f 64 29 94 8c 1d key().(M2Crypto.EC.EC.method)...
10180 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 63 6f 6d 70 75 74 65 5f 64 68 5f 6b 65 79 94 68 27 M2Crypto.EC.EC.compute_dh_key.h'
101a0 4e 74 94 28 6a c0 12 00 00 8c 21 67 65 6e 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 Nt.(j.....!gen_key().(M2Crypto.E
101c0 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 67 65 C.EC.method)...M2Crypto.EC.EC.ge
101e0 6e 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 6d 32 5f 65 63 5f 6b 65 79 5f 66 72 65 n_key.h'Nt.(j.....(m2_ec_key_fre
10200 65 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 8c 1d 4d 32 e().(M2Crypto.EC.EC.method)...M2
10220 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 94 68 27 4e 74 Crypto.EC.EC.m2_ec_key_free.h'Nt
10240 94 28 6a c0 12 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 .(j......pub().(M2Crypto.EC.EC.m
10260 65 74 68 6f 64 29 94 8c 12 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 70 75 62 94 68 27 4e 74 ethod)...M2Crypto.EC.EC.pub.h'Nt
10280 94 28 6a c0 12 00 00 8c 22 73 61 76 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 43 .(j....."save_key().(M2Crypto.EC
102a0 2e 45 43 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 .EC.method)...M2Crypto.EC.EC.sav
102c0 65 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 e_key.h'Nt.(j.....&save_key_bio(
102e0 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 8c 1b 4d 32 43 72 ).(M2Crypto.EC.EC.method)...M2Cr
10300 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 ypto.EC.EC.save_key_bio.h'Nt.(j.
10320 12 00 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 ....&save_pub_key().(M2Crypto.EC
10340 2e 45 43 20 6d 65 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 .EC.method)...M2Crypto.EC.EC.sav
10360 65 5f 70 75 62 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 73 61 76 65 5f 70 75 62 5f e_pub_key.h'Nt.(j.....*save_pub_
10380 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 65 74 68 6f 64 key_bio().(M2Crypto.EC.EC.method
103a0 29 94 8c 1f 4d 32 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 )...M2Crypto.EC.EC.save_pub_key_
103c0 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 73 69 67 6e 5f 64 73 61 28 29 20 28 4d 32 43 bio.h'Nt.(j....."sign_dsa().(M2C
103e0 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 rypto.EC.EC.method)...M2Crypto.E
10400 43 2e 45 43 2e 73 69 67 6e 5f 64 73 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 73 69 67 6e 5f C.EC.sign_dsa.h'Nt.(j.....'sign_
10420 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 20 6d 65 74 68 6f dsa_asn1().(M2Crypto.EC.EC.metho
10440 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e d)...M2Crypto.EC.EC.sign_dsa_asn
10460 31 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 76 65 72 69 66 79 5f 64 73 61 28 29 20 28 4d 32 43 1.h'Nt.(j.....$verify_dsa().(M2C
10480 72 79 70 74 6f 2e 45 43 2e 45 43 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 rypto.EC.EC.method)...M2Crypto.E
104a0 43 2e 45 43 2e 76 65 72 69 66 79 5f 64 73 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 76 65 72 C.EC.verify_dsa.h'Nt.(j.....)ver
104c0 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 20 6d ify_dsa_asn1().(M2Crypto.EC.EC.m
104e0 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 76 65 72 69 66 79 5f 64 ethod)...M2Crypto.EC.EC.verify_d
10500 73 61 5f 61 73 6e 31 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 07 45 43 45 72 72 6f 72 94 8c 13 4d sa_asn1.h'Nt.(j......ECError...M
10520 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1d 2Crypto.EC.ECError.h'Nt.(j......
10540 45 43 5f 70 75 62 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 12 EC_pub.(class.in.M2Crypto.EC)...
10560 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 M2Crypto.EC.EC_pub.h'Nt.(j.....%
10580 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 75 62 20 6d 65 get_der().(M2Crypto.EC.EC_pub.me
105a0 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 2e 67 65 74 5f 64 thod)...M2Crypto.EC.EC_pub.get_d
105c0 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 67 65 74 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 er.h'Nt.(j.....%get_key().(M2Cry
105e0 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f pto.EC.EC_pub.method)...M2Crypto
10600 2e 45 43 2e 45 43 5f 70 75 62 2e 67 65 74 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 .EC.EC_pub.get_key.h'Nt.(j.....&
10620 73 61 76 65 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 save_key().(M2Crypto.EC.EC_pub.m
10640 65 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 2e 73 61 76 65 ethod)...M2Crypto.EC.EC_pub.save
10660 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 73 61 76 65 5f 6b 65 79 5f 62 69 6f 28 29 _key.h'Nt.(j.....*save_key_bio()
10680 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 64 29 94 8c 1f 4d .(M2Crypto.EC.EC_pub.method)...M
106a0 32 43 72 79 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 68 2Crypto.EC.EC_pub.save_key_bio.h
106c0 27 4e 74 94 28 6a c0 12 00 00 8c 22 65 63 5f 65 72 72 6f 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 'Nt.(j....."ec_error().(in.modul
106e0 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 14 4d 32 43 72 79 70 74 6f 2e 45 43 2e 65 63 5f e.M2Crypto.EC)...M2Crypto.EC.ec_
10700 65 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 67 65 6e 5f 70 61 72 61 6d 73 28 29 20 error.h'Nt.(j.....$gen_params().
10720 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 16 4d 32 43 72 79 70 (in.module.M2Crypto.EC)...M2Cryp
10740 74 6f 2e 45 43 2e 67 65 6e 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 67 65 to.EC.gen_params.h'Nt.(j.....,ge
10760 74 5f 62 75 69 6c 74 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 t_builtin_curves().(in.module.M2
10780 43 72 79 70 74 6f 2e 45 43 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 67 65 74 5f 62 75 69 Crypto.EC)...M2Crypto.EC.get_bui
107a0 6c 74 69 6e 5f 63 75 72 76 65 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 6c 6f 61 64 5f 6b 65 ltin_curves.h'Nt.(j....."load_ke
107c0 79 28 29 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 8c 14 4d 32 y().(in.module.M2Crypto.EC)...M2
107e0 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 Crypto.EC.load_key.h'Nt.(j.....&
10800 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 4d 32 43 72 79 70 load_key_bio().(in.module.M2Cryp
10820 74 6f 2e 45 43 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 to.EC)...M2Crypto.EC.load_key_bi
10840 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 28 29 o.h'Nt.(j.....)load_key_string()
10860 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 8c 1b 4d 32 43 72 79 .(in.module.M2Crypto.EC)...M2Cry
10880 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 pto.EC.load_key_string.h'Nt.(j..
108a0 00 00 8c 30 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 ...0load_key_string_pubkey().(in
108c0 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e .module.M2Crypto.EC).."M2Crypto.
108e0 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 68 27 4e 74 94 28 EC.load_key_string_pubkey.h'Nt.(
10900 6a c0 12 00 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 j.....&load_pub_key().(in.module
10920 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 .M2Crypto.EC)...M2Crypto.EC.load
10940 5f 70 75 62 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6c 6f 61 64 5f 70 75 62 5f 6b _pub_key.h'Nt.(j.....*load_pub_k
10960 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 45 43 29 ey_bio().(in.module.M2Crypto.EC)
10980 94 8c 1c 4d 32 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 ...M2Crypto.EC.load_pub_key_bio.
109a0 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 64 65 72 28 29 20 h'Nt.(j.....*pub_key_from_der().
109c0 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 1c 4d 32 43 72 79 70 (in.module.M2Crypto.EC)...M2Cryp
109e0 74 6f 2e 45 43 2e 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 to.EC.pub_key_from_der.h'Nt.(j..
10a00 00 00 8c 2d 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 28 29 20 28 69 6e 20 6d 6f ...-pub_key_from_params().(in.mo
10a20 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 43 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 43 2e dule.M2Crypto.EC)...M2Crypto.EC.
10a40 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 68 27 4e 74 94 28 6a b9 12 00 00 8c pub_key_from_params.h'Nt.(j.....
10a60 14 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 94 8c 13 6d 6f 64 75 6c 65 2d 4d .module;.M2Crypto.EVP...module-M
10a80 32 43 72 79 70 74 6f 2e 45 56 50 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1e 43 69 70 68 65 72 20 2Crypto.EVP.h'Nt.(j......Cipher.
10aa0 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 8c 13 4d 32 43 72 79 70 (class.in.M2Crypto.EVP)...M2Cryp
10ac0 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 66 69 6e 61 6c to.EVP.Cipher.h'Nt.(j.....$final
10ae0 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 68 6f 64 29 94 ().(M2Crypto.EVP.Cipher.method).
10b00 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 66 69 6e 61 6c 94 68 27 4e 74 ..M2Crypto.EVP.Cipher.final.h'Nt
10b20 94 28 6a c0 12 00 00 8c 31 6d 32 5f 63 69 70 68 65 72 5f 63 74 78 5f 66 72 65 65 28 29 20 28 4d .(j.....1m2_cipher_ctx_free().(M
10b40 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 8c 26 4d 32 43 2Crypto.EVP.Cipher.method)..&M2C
10b60 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 78 5f 66 rypto.EVP.Cipher.m2_cipher_ctx_f
10b80 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 73 65 74 5f 70 61 64 64 69 6e 67 28 29 20 28 ree.h'Nt.(j.....*set_padding().(
10ba0 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 8c 1f 4d 32 M2Crypto.EVP.Cipher.method)...M2
10bc0 43 72 79 70 74 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 68 27 Crypto.EVP.Cipher.set_padding.h'
10be0 4e 74 94 28 6a c0 12 00 00 8c 25 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 Nt.(j.....%update().(M2Crypto.EV
10c00 50 2e 43 69 70 68 65 72 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e P.Cipher.method)...M2Crypto.EVP.
10c20 43 69 70 68 65 72 2e 75 70 64 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 08 45 56 50 45 72 Cipher.update.h'Nt.(j......EVPEr
10c40 72 6f 72 94 8c 15 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 45 56 50 45 72 72 6f 72 94 68 27 4e 74 ror...M2Crypto.EVP.EVPError.h'Nt
10c60 94 28 6a c0 12 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 74 6f .(j......HMAC.(class.in.M2Crypto
10c80 2e 45 56 50 29 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 94 68 27 4e 74 94 28 .EVP)...M2Crypto.EVP.HMAC.h'Nt.(
10ca0 6a c0 12 00 00 8c 23 64 69 67 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d j.....#digest().(M2Crypto.EVP.HM
10cc0 41 43 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 64 AC.method)...M2Crypto.EVP.HMAC.d
10ce0 69 67 65 73 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 igest.h'Nt.(j....."final().(M2Cr
10d00 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f ypto.EVP.HMAC.method)...M2Crypto
10d20 2e 45 56 50 2e 48 4d 41 43 2e 66 69 6e 61 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 6d 32 5f .EVP.HMAC.final.h'Nt.(j.....-m2_
10d40 68 6d 61 63 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 48 4d hmac_ctx_free().(M2Crypto.EVP.HM
10d60 41 43 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 6d AC.method).."M2Crypto.EVP.HMAC.m
10d80 32 5f 68 6d 61 63 5f 63 74 78 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 72 65 73 2_hmac_ctx_free.h'Nt.(j....."res
10da0 65 74 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 et().(M2Crypto.EVP.HMAC.method).
10dc0 8c 17 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 72 65 73 65 74 94 68 27 4e 74 94 28 ..M2Crypto.EVP.HMAC.reset.h'Nt.(
10de0 6a c0 12 00 00 8c 23 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d j.....#update().(M2Crypto.EVP.HM
10e00 41 43 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 75 AC.method)...M2Crypto.EVP.HMAC.u
10e20 70 64 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 4d 65 73 73 61 67 65 44 69 67 65 73 74 pdate.h'Nt.(j.....%MessageDigest
10e40 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 8c 1a 4d 32 43 72 79 .(class.in.M2Crypto.EVP)...M2Cry
10e60 70 74 6f 2e 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 94 68 27 4e 74 94 28 6a c0 12 00 pto.EVP.MessageDigest.h'Nt.(j...
10e80 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 65 73 73 61 67 ..,digest().(M2Crypto.EVP.Messag
10ea0 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d eDigest.method)..!M2Crypto.EVP.M
10ec0 65 73 73 61 67 65 44 69 67 65 73 74 2e 64 69 67 65 73 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c essageDigest.digest.h'Nt.(j.....
10ee0 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 73 61 67 65 44 69 +final().(M2Crypto.EVP.MessageDi
10f00 67 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 73 gest.method)...M2Crypto.EVP.Mess
10f20 61 67 65 44 69 67 65 73 74 2e 66 69 6e 61 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 6d 32 5f ageDigest.final.h'Nt.(j.....4m2_
10f40 6d 64 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 4d 65 73 73 md_ctx_free().(M2Crypto.EVP.Mess
10f60 61 67 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 45 56 50 ageDigest.method)..)M2Crypto.EVP
10f80 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 65 94 68 27 .MessageDigest.m2_md_ctx_free.h'
10fa0 4e 74 94 28 6a c0 12 00 00 8c 2c 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 Nt.(j.....,update().(M2Crypto.EV
10fc0 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 P.MessageDigest.method)..!M2Cryp
10fe0 74 6f 2e 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 75 70 64 61 74 65 94 68 27 4e 74 to.EVP.MessageDigest.update.h'Nt
11000 94 28 6a c0 12 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 74 6f .(j......PKey.(class.in.M2Crypto
11020 2e 45 56 50 29 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 94 68 27 4e 74 94 28 .EVP)...M2Crypto.EVP.PKey.h'Nt.(
11040 6a c0 12 00 00 8c 23 61 73 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b j.....#as_der().(M2Crypto.EVP.PK
11060 65 79 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 ey.method)...M2Crypto.EVP.PKey.a
11080 73 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 s_der.h'Nt.(j.....#as_pem().(M2C
110a0 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 rypto.EVP.PKey.method)...M2Crypt
110c0 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 73 5f 70 65 6d 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 61 o.EVP.PKey.as_pem.h'Nt.(j.....'a
110e0 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 2e 50 4b 65 79 20 6d ssign_rsa().(M2Crypto.EVP.PKey.m
11100 65 74 68 6f 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 73 73 69 67 ethod)...M2Crypto.EVP.PKey.assig
11120 6e 5f 72 73 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 64 69 67 65 73 74 5f 73 69 67 6e 28 29 n_rsa.h'Nt.(j.....(digest_sign()
11140 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 8c 1d 4d 32 .(M2Crypto.EVP.PKey.method)...M2
11160 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 94 68 27 4e 74 Crypto.EVP.PKey.digest_sign.h'Nt
11180 94 28 6a c0 12 00 00 8c 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 28 29 20 28 4d 32 .(j......digest_sign_final().(M2
111a0 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 23 4d 32 43 72 79 70 Crypto.EVP.PKey.method)..#M2Cryp
111c0 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 94 68 27 to.EVP.PKey.digest_sign_final.h'
111e0 4e 74 94 28 6a c0 12 00 00 8c 2d 64 69 67 65 73 74 5f 73 69 67 6e 5f 69 6e 69 74 28 29 20 28 4d Nt.(j.....-digest_sign_init().(M
11200 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 8c 22 4d 32 43 72 79 2Crypto.EVP.PKey.method).."M2Cry
11220 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 69 6e 69 74 94 68 27 pto.EVP.PKey.digest_sign_init.h'
11240 4e 74 94 28 6a c0 12 00 00 8c 2f 64 69 67 65 73 74 5f 73 69 67 6e 5f 75 70 64 61 74 65 28 29 20 Nt.(j...../digest_sign_update().
11260 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 8c 24 4d 32 43 (M2Crypto.EVP.PKey.method)..$M2C
11280 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 75 70 64 61 74 rypto.EVP.PKey.digest_sign_updat
112a0 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 64 69 67 65 73 74 5f 76 65 72 69 66 79 28 29 20 28 e.h'Nt.(j.....*digest_verify().(
112c0 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 8c 1f 4d 32 43 72 M2Crypto.EVP.PKey.method)...M2Cr
112e0 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 94 68 27 4e 74 ypto.EVP.PKey.digest_verify.h'Nt
11300 94 28 6a c0 12 00 00 8c 30 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 29 20 28 .(j.....0digest_verify_final().(
11320 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 8c 25 4d 32 43 72 M2Crypto.EVP.PKey.method)..%M2Cr
11340 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 66 69 6e 61 ypto.EVP.PKey.digest_verify_fina
11360 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 69 6e 69 l.h'Nt.(j...../digest_verify_ini
11380 74 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 8c t().(M2Crypto.EVP.PKey.method)..
113a0 24 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 $M2Crypto.EVP.PKey.digest_verify
113c0 5f 69 6e 69 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 64 69 67 65 73 74 5f 76 65 72 69 66 79 _init.h'Nt.(j.....1digest_verify
113e0 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 4b 65 79 20 6d 65 74 _update().(M2Crypto.EVP.PKey.met
11400 68 6f 64 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f hod)..&M2Crypto.EVP.PKey.digest_
11420 76 65 72 69 66 79 5f 75 70 64 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 66 69 6e 61 6c verify_update.h'Nt.(j....."final
11440 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 8c 17 ().(M2Crypto.EVP.PKey.method)...
11460 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 66 69 6e 61 6c 94 68 27 4e 74 94 28 6a c0 M2Crypto.EVP.PKey.final.h'Nt.(j.
11480 12 00 00 8c 28 67 65 74 5f 6d 6f 64 75 6c 75 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 ....(get_modulus().(M2Crypto.EVP
114a0 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 .PKey.method)...M2Crypto.EVP.PKe
114c0 79 2e 67 65 74 5f 6d 6f 64 75 6c 75 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 67 65 74 5f 72 y.get_modulus.h'Nt.(j.....$get_r
114e0 73 61 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 sa().(M2Crypto.EVP.PKey.method).
11500 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 67 65 74 5f 72 73 61 94 68 27 4e 74 ..M2Crypto.EVP.PKey.get_rsa.h'Nt
11520 94 28 6a c0 12 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 .(j.....+m2_md_ctx_free().(M2Cry
11540 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e pto.EVP.PKey.method)...M2Crypto.
11560 45 56 50 2e 50 4b 65 79 2e 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 EVP.PKey.m2_md_ctx_free.h'Nt.(j.
11580 12 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
115a0 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b P.PKey.method)...M2Crypto.EVP.PK
115c0 65 79 2e 6d 32 5f 70 6b 65 79 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 72 65 73 ey.m2_pkey_free.h'Nt.(j.....*res
115e0 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 4b 65 79 20 et_context().(M2Crypto.EVP.PKey.
11600 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 72 65 73 65 method)...M2Crypto.EVP.PKey.rese
11620 74 5f 63 6f 6e 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 73 61 76 65 5f 6b 65 79 28 t_context.h'Nt.(j.....%save_key(
11640 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 8c 1a 4d ).(M2Crypto.EVP.PKey.method)...M
11660 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 94 68 27 4e 74 94 28 2Crypto.EVP.PKey.save_key.h'Nt.(
11680 6a c0 12 00 00 8c 29 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 j.....)save_key_bio().(M2Crypto.
116a0 45 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e EVP.PKey.method)...M2Crypto.EVP.
116c0 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 73 PKey.save_key_bio.h'Nt.(j.....'s
116e0 69 67 6e 5f 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 ign_final().(M2Crypto.EVP.PKey.m
11700 65 74 68 6f 64 29 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 5f ethod)...M2Crypto.EVP.PKey.sign_
11720 66 69 6e 61 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 73 69 67 6e 5f 69 6e 69 74 28 29 20 28 final.h'Nt.(j.....&sign_init().(
11740 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 8c 1b 4d 32 43 72 M2Crypto.EVP.PKey.method)...M2Cr
11760 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 69 67 6e 5f 69 6e 69 74 94 68 27 4e 74 94 28 6a c0 ypto.EVP.PKey.sign_init.h'Nt.(j.
11780 12 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
117a0 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 .PKey.method)...M2Crypto.EVP.PKe
117c0 79 2e 73 69 67 6e 5f 75 70 64 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 21 73 69 7a 65 28 y.sign_update.h'Nt.(j.....!size(
117e0 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 8c 16 4d ).(M2Crypto.EVP.PKey.method)...M
11800 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 69 7a 65 94 68 27 4e 74 94 28 6a c0 12 00 2Crypto.EVP.PKey.size.h'Nt.(j...
11820 00 8c 23 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 20 6d ..#update().(M2Crypto.EVP.PKey.m
11840 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 75 70 64 61 74 ethod)...M2Crypto.EVP.PKey.updat
11860 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 29 20 28 4d e.h'Nt.(j.....)verify_final().(M
11880 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 8c 1e 4d 32 43 72 79 2Crypto.EVP.PKey.method)...M2Cry
118a0 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 76 65 72 69 66 79 5f 66 69 6e 61 6c 94 68 27 4e 74 94 28 pto.EVP.PKey.verify_final.h'Nt.(
118c0 6a c0 12 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 j.....(verify_init().(M2Crypto.E
118e0 56 50 2e 50 4b 65 79 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 VP.PKey.method)...M2Crypto.EVP.P
11900 4b 65 79 2e 76 65 72 69 66 79 5f 69 6e 69 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 76 65 72 Key.verify_init.h'Nt.(j.....*ver
11920 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 4b 65 79 20 ify_update().(M2Crypto.EVP.PKey.
11940 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 76 65 72 69 method)...M2Crypto.EVP.PKey.veri
11960 66 79 5f 75 70 64 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1f 68 6d 61 63 28 29 20 28 69 fy_update.h'Nt.(j......hmac().(i
11980 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 8c 11 4d 32 43 72 79 70 74 n.module.M2Crypto.EVP)...M2Crypt
119a0 6f 2e 45 56 50 2e 68 6d 61 63 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 6c 6f 61 64 5f 6b 65 79 o.EVP.hmac.h'Nt.(j.....#load_key
119c0 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 8c 15 4d 32 ().(in.module.M2Crypto.EVP)...M2
119e0 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c Crypto.EVP.load_key.h'Nt.(j.....
11a00 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 4d 32 43 72 79 'load_key_bio().(in.module.M2Cry
11a20 70 74 6f 2e 45 56 50 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 pto.EVP)...M2Crypto.EVP.load_key
11a40 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 5f 70 _bio.h'Nt.(j......load_key_bio_p
11a60 75 62 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 2e 45 56 50 29 ubkey().(in.module.M2Crypto.EVP)
11a80 94 8c 20 4d 32 43 72 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 ...M2Crypto.EVP.load_key_bio_pub
11aa0 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6c 6f 61 64 5f 6b 65 79 5f 70 75 62 6b 65 79 key.h'Nt.(j.....*load_key_pubkey
11ac0 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 8c 1c 4d 32 ().(in.module.M2Crypto.EVP)...M2
11ae0 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f 70 75 62 6b 65 79 94 68 27 4e 74 94 Crypto.EVP.load_key_pubkey.h'Nt.
11b00 28 6a c0 12 00 00 8c 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 (j.....*load_key_string().(in.mo
11b20 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 dule.M2Crypto.EVP)...M2Crypto.EV
11b40 50 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 6c P.load_key_string.h'Nt.(j.....1l
11b60 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 75 oad_key_string_pubkey().(in.modu
11b80 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 29 94 8c 23 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e le.M2Crypto.EVP)..#M2Crypto.EVP.
11ba0 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 load_key_string_pubkey.h'Nt.(j..
11bc0 00 00 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 ...!pbkdf2().(in.module.M2Crypto
11be0 2e 45 56 50 29 94 8c 13 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 70 62 6b 64 66 32 94 68 27 4e 74 .EVP)...M2Crypto.EVP.pbkdf2.h'Nt
11c00 94 28 6a b9 12 00 00 8c 17 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 .(j......module;.M2Crypto.Engine
11c20 94 8c 16 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 94 68 27 4e 74 94 28 ...module-M2Crypto.Engine.h'Nt.(
11c40 6a c0 12 00 00 8c 21 45 6e 67 69 6e 65 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f j.....!Engine.(class.in.M2Crypto
11c60 2e 45 6e 67 69 6e 65 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e .Engine)...M2Crypto.Engine.Engin
11c80 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 29 e.h'Nt.(j.....1ctrl_cmd_string()
11ca0 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 65 74 68 6f 64 29 .(M2Crypto.Engine.Engine.method)
11cc0 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 74 72 6c 5f 63 ..&M2Crypto.Engine.Engine.ctrl_c
11ce0 6d 64 5f 73 74 72 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 66 69 6e 69 73 68 28 29 20 md_string.h'Nt.(j.....(finish().
11d00 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 65 74 68 6f 64 29 94 (M2Crypto.Engine.Engine.method).
11d20 8c 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 ..M2Crypto.Engine.Engine.finish.
11d40 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 67 65 74 5f 69 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e h'Nt.(j.....(get_id().(M2Crypto.
11d60 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f Engine.Engine.method)...M2Crypto
11d80 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 67 65 74 5f 69 64 94 68 27 4e 74 94 28 6a c0 12 00 .Engine.Engine.get_id.h'Nt.(j...
11da0 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
11dc0 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e ngine.method)...M2Crypto.Engine.
11de0 45 6e 67 69 6e 65 2e 67 65 74 5f 6e 61 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 69 6e 69 Engine.get_name.h'Nt.(j.....&ini
11e00 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 65 74 68 t().(M2Crypto.Engine.Engine.meth
11e20 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 69 6e 69 od)...M2Crypto.Engine.Engine.ini
11e40 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 28 t.h'Nt.(j.....2load_certificate(
11e60 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 65 74 68 6f 64 ).(M2Crypto.Engine.Engine.method
11e80 29 94 8c 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 )..'M2Crypto.Engine.Engine.load_
11ea0 63 65 72 74 69 66 69 63 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 6c 6f 61 64 5f 70 72 certificate.h'Nt.(j.....2load_pr
11ec0 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 65 2e 45 6e 67 ivate_key().(M2Crypto.Engine.Eng
11ee0 69 6e 65 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e ine.method)..'M2Crypto.Engine.En
11f00 67 69 6e 65 2e 6c 6f 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 gine.load_private_key.h'Nt.(j...
11f20 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
11f40 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 20 6d 65 74 68 6f 64 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e ngine.Engine.method)..&M2Crypto.
11f60 45 6e 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 68 27 Engine.Engine.load_public_key.h'
11f80 4e 74 94 28 6a c0 12 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 Nt.(j.....0m2_engine_free().(M2C
11fa0 72 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 8c 25 4d 32 rypto.Engine.Engine.method)..%M2
11fc0 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 6d 32 5f 65 6e 67 69 6e 65 5f 66 Crypto.Engine.Engine.m2_engine_f
11fe0 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 73 65 74 5f 64 65 66 61 75 6c 74 28 29 20 28 ree.h'Nt.(j.....-set_default().(
12000 4d 32 43 72 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 8c M2Crypto.Engine.Engine.method)..
12020 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 5f 64 65 66 61 "M2Crypto.Engine.Engine.set_defa
12040 75 6c 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 0b 45 6e 67 69 6e 65 45 72 72 6f 72 94 8c 1b 4d ult.h'Nt.(j......EngineError...M
12060 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 45 72 72 6f 72 94 68 27 4e 74 94 2Crypto.Engine.EngineError.h'Nt.
12080 28 6a c0 12 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
120a0 72 79 70 74 6f 2e 45 6e 67 69 6e 65 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e rypto.Engine)...M2Crypto.Engine.
120c0 63 6c 65 61 6e 75 70 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6c 6f 61 64 5f 64 79 6e 61 6d 69 cleanup.h'Nt.(j.....*load_dynami
120e0 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 6e 67 69 6e 65 29 94 c().(in.module.M2Crypto.Engine).
12100 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 68 ..M2Crypto.Engine.load_dynamic.h
12120 27 4e 74 94 28 6a c0 12 00 00 8c 31 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 28 'Nt.(j.....1load_dynamic_engine(
12140 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 29 94 8c 23 ).(in.module.M2Crypto.Engine)..#
12160 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 M2Crypto.Engine.load_dynamic_eng
12180 69 6e 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 28 29 20 ine.h'Nt.(j.....*load_openssl().
121a0 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 29 94 8c 1c 4d 32 (in.module.M2Crypto.Engine)...M2
121c0 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 68 27 4e 74 94 Crypto.Engine.load_openssl.h'Nt.
121e0 28 6a b9 12 00 00 8c 14 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 8c 13 6d (j......module;.M2Crypto.Err...m
12200 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 0d odule-M2Crypto.Err.h'Nt.(j......
12220 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 4d 32 43 M2CryptoError...M2Crypto.Err.M2C
12240 72 79 70 74 6f 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 08 53 53 4c 45 72 72 6f 72 ryptoError.h'Nt.(j......SSLError
12260 94 8c 15 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 53 53 4c 45 72 72 6f 72 94 68 27 4e 74 94 28 6a ...M2Crypto.Err.SSLError.h'Nt.(j
12280 c0 12 00 00 8c 24 67 65 74 5f 65 72 72 6f 72 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 .....$get_error().(in.module.M2C
122a0 72 79 70 74 6f 2e 45 72 72 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 rypto.Err)...M2Crypto.Err.get_er
122c0 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 ror.h'Nt.(j.....)get_error_code(
122e0 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 8c 1b 4d 32 43 ).(in.module.M2Crypto.Err)...M2C
12300 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 94 68 27 4e 74 94 28 6a rypto.Err.get_error_code.h'Nt.(j
12320 c0 12 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 .....)get_error_func().(in.modul
12340 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 e.M2Crypto.Err)...M2Crypto.Err.g
12360 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 67 65 74 5f 65 et_error_func.h'Nt.(j.....(get_e
12380 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 79 70 74 6f 2e 45 rror_lib().(in.module.M2Crypto.E
123a0 72 72 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 rr)...M2Crypto.Err.get_error_lib
123c0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 28 .h'Nt.(j.....,get_error_message(
123e0 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 8c 1e 4d 32 43 ).(in.module.M2Crypto.Err)...M2C
12400 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 94 68 27 4e 74 rypto.Err.get_error_message.h'Nt
12420 94 28 6a c0 12 00 00 8c 2b 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 28 29 20 28 69 6e 20 .(j.....+get_error_reason().(in.
12440 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e module.M2Crypto.Err)...M2Crypto.
12460 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 Err.get_error_reason.h'Nt.(j....
12480 8c 30 67 65 74 5f 78 35 30 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 28 29 20 28 69 6e 20 6d 6f .0get_x509_verify_error().(in.mo
124a0 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 72 dule.M2Crypto.Err).."M2Crypto.Er
124c0 72 2e 67 65 74 5f 78 35 30 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 r.get_x509_verify_error.h'Nt.(j.
124e0 12 00 00 8c 2a 70 65 65 6b 5f 65 72 72 6f 72 5f 63 6f 64 65 28 29 20 28 69 6e 20 6d 6f 64 75 6c ....*peek_error_code().(in.modul
12500 65 20 4d 32 43 72 79 70 74 6f 2e 45 72 72 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 70 e.M2Crypto.Err)...M2Crypto.Err.p
12520 65 65 6b 5f 65 72 72 6f 72 5f 63 6f 64 65 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 14 6d 6f 64 75 eek_error_code.h'Nt.(j......modu
12540 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 52 43 34 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 le;.M2Crypto.RC4...module-M2Cryp
12560 74 6f 2e 52 43 34 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1b 52 43 34 20 28 63 6c 61 73 73 20 69 to.RC4.h'Nt.(j......RC4.(class.i
12580 6e 20 4d 32 43 72 79 70 74 6f 2e 52 43 34 29 94 8c 10 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 n.M2Crypto.RC4)...M2Crypto.RC4.R
125a0 43 34 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 21 66 69 6e 61 6c 28 29 20 28 4d 32 43 72 79 70 74 C4.h'Nt.(j.....!final().(M2Crypt
125c0 6f 2e 52 43 34 2e 52 43 34 20 6d 65 74 68 6f 64 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 52 43 34 o.RC4.RC4.method)...M2Crypto.RC4
125e0 2e 52 43 34 2e 66 69 6e 61 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 72 63 34 5f 66 72 65 65 .RC4.final.h'Nt.(j.....$rc4_free
12600 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 29 94 8c 19 4d ().(M2Crypto.RC4.RC4.method)...M
12620 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 72 63 34 5f 66 72 65 65 94 68 27 4e 74 94 28 6a 2Crypto.RC4.RC4.rc4_free.h'Nt.(j
12640 c0 12 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 43 34 2e 52 43 .....#set_key().(M2Crypto.RC4.RC
12660 34 20 6d 65 74 68 6f 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 73 65 74 4.method)...M2Crypto.RC4.RC4.set
12680 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 75 70 64 61 74 65 28 29 20 28 4d 32 43 72 _key.h'Nt.(j....."update().(M2Cr
126a0 79 70 74 6f 2e 52 43 34 2e 52 43 34 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e ypto.RC4.RC4.method)...M2Crypto.
126c0 52 43 34 2e 52 43 34 2e 75 70 64 61 74 65 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 14 6d 6f 64 75 RC4.RC4.update.h'Nt.(j......modu
126e0 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 le;.M2Crypto.RSA...module-M2Cryp
12700 74 6f 2e 52 53 41 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1b 52 53 41 20 28 63 6c 61 73 73 20 69 to.RSA.h'Nt.(j......RSA.(class.i
12720 6e 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 8c 10 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 n.M2Crypto.RSA)...M2Crypto.RSA.R
12740 53 41 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 SA.h'Nt.(j....."as_pem().(M2Cryp
12760 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 53 to.RSA.RSA.method)...M2Crypto.RS
12780 41 2e 52 53 41 2e 61 73 5f 70 65 6d 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 63 68 65 63 6b 5f A.RSA.as_pem.h'Nt.(j.....%check_
127a0 6b 65 79 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 key().(M2Crypto.RSA.RSA.method).
127c0 8c 1a 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 68 27 4e ..M2Crypto.RSA.RSA.check_key.h'N
127e0 74 94 28 6a c0 12 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
12800 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 53 41 o.RSA.RSA.method)...M2Crypto.RSA
12820 2e 52 53 41 2e 6d 32 5f 72 73 61 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 70 72 .RSA.m2_rsa_free.h'Nt.(j.....+pr
12840 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 52 53 41 2e 52 53 ivate_decrypt().(M2Crypto.RSA.RS
12860 41 20 6d 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 72 69 A.method)...M2Crypto.RSA.RSA.pri
12880 76 61 74 65 5f 64 65 63 72 79 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 70 72 69 76 61 74 vate_decrypt.h'Nt.(j.....+privat
128a0 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 20 6d 65 e_encrypt().(M2Crypto.RSA.RSA.me
128c0 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 72 69 76 61 74 65 thod)...M2Crypto.RSA.RSA.private
128e0 5f 65 6e 63 72 79 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1f 70 75 62 28 29 20 28 4d 32 43 _encrypt.h'Nt.(j......pub().(M2C
12900 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 14 4d 32 43 72 79 70 74 6f rypto.RSA.RSA.method)...M2Crypto
12920 2e 52 53 41 2e 52 53 41 2e 70 75 62 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 70 75 62 6c 69 63 .RSA.RSA.pub.h'Nt.(j.....*public
12940 5f 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 20 6d 65 74 _decrypt().(M2Crypto.RSA.RSA.met
12960 68 6f 64 29 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 hod)...M2Crypto.RSA.RSA.public_d
12980 65 63 72 79 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 70 75 62 6c 69 63 5f 65 6e 63 72 79 ecrypt.h'Nt.(j.....*public_encry
129a0 70 74 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 8c pt().(M2Crypto.RSA.RSA.method)..
129c0 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 65 6e 63 72 79 70 74 .M2Crypto.RSA.RSA.public_encrypt
129e0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 73 61 76 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 .h'Nt.(j.....$save_key().(M2Cryp
12a00 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 to.RSA.RSA.method)...M2Crypto.RS
12a20 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 61 76 65 A.RSA.save_key.h'Nt.(j.....(save
12a40 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 52 53 41 20 6d 65 74 _key_bio().(M2Crypto.RSA.RSA.met
12a60 68 6f 64 29 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 hod)...M2Crypto.RSA.RSA.save_key
12a80 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 61 76 65 5f 6b 65 79 5f 64 65 72 28 29 _bio.h'Nt.(j.....(save_key_der()
12aa0 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 8c 1d 4d 32 43 .(M2Crypto.RSA.RSA.method)...M2C
12ac0 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 94 68 27 4e 74 94 rypto.RSA.RSA.save_key_der.h'Nt.
12ae0 28 6a c0 12 00 00 8c 2c 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 69 6f 28 29 20 28 4d 32 43 72 (j.....,save_key_der_bio().(M2Cr
12b00 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e ypto.RSA.RSA.method)..!M2Crypto.
12b20 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 69 6f 94 68 27 4e 74 94 28 6a RSA.RSA.save_key_der_bio.h'Nt.(j
12b40 c0 12 00 00 8c 24 73 61 76 65 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 .....$save_pem().(M2Crypto.RSA.R
12b60 53 41 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 SA.method)...M2Crypto.RSA.RSA.sa
12b80 76 65 5f 70 65 6d 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 61 76 65 5f 70 75 62 5f 6b 65 79 ve_pem.h'Nt.(j.....(save_pub_key
12ba0 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 8c 1d 4d ().(M2Crypto.RSA.RSA.method)...M
12bc0 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 6b 65 79 94 68 27 4e 2Crypto.RSA.RSA.save_pub_key.h'N
12be0 74 94 28 6a c0 12 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
12c00 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 Crypto.RSA.RSA.method)..!M2Crypt
12c20 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 o.RSA.RSA.save_pub_key_bio.h'Nt.
12c40 28 6a c0 12 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 41 (j......sign().(M2Crypto.RSA.RSA
12c60 20 6d 65 74 68 6f 64 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 69 67 6e .method)...M2Crypto.RSA.RSA.sign
12c80 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 73 69 67 6e 5f 72 73 61 73 73 61 5f 70 73 73 28 29 20 .h'Nt.(j.....+sign_rsassa_pss().
12ca0 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 8c 20 4d 32 43 72 (M2Crypto.RSA.RSA.method)...M2Cr
12cc0 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 73 73 94 68 27 4e ypto.RSA.RSA.sign_rsassa_pss.h'N
12ce0 74 94 28 6a c0 12 00 00 8c 22 76 65 72 69 66 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 t.(j....."verify().(M2Crypto.RSA
12d00 2e 52 53 41 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e .RSA.method)...M2Crypto.RSA.RSA.
12d20 76 65 72 69 66 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 76 65 72 69 66 79 5f 72 73 61 73 73 verify.h'Nt.(j.....-verify_rsass
12d40 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 6d 65 74 68 6f 64 a_pss().(M2Crypto.RSA.RSA.method
12d60 29 94 8c 22 4d 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 ).."M2Crypto.RSA.RSA.verify_rsas
12d80 73 61 5f 70 73 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 08 52 53 41 45 72 72 6f 72 94 8c 15 4d sa_pss.h'Nt.(j......RSAError...M
12da0 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 2Crypto.RSA.RSAError.h'Nt.(j....
12dc0 8c 1f 52 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 52 53 41 ..RSA_pub.(class.in.M2Crypto.RSA
12de0 29 94 8c 14 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 94 68 27 4e 74 94 28 6a )...M2Crypto.RSA.RSA_pub.h'Nt.(j
12e00 c0 12 00 00 8c 29 63 68 65 63 6b 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e .....)check_key().(M2Crypto.RSA.
12e20 52 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 RSA_pub.method)...M2Crypto.RSA.R
12e40 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 70 72 SA_pub.check_key.h'Nt.(j...../pr
12e60 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 52 53 41 2e 52 53 ivate_decrypt().(M2Crypto.RSA.RS
12e80 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 A_pub.method)..$M2Crypto.RSA.RSA
12ea0 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 _pub.private_decrypt.h'Nt.(j....
12ec0 8c 2f 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
12ee0 41 2e 52 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 52 53 41 A.RSA_pub.method)..$M2Crypto.RSA
12f00 2e 52 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 68 27 4e 74 94 28 6a .RSA_pub.private_encrypt.h'Nt.(j
12f20 c0 12 00 00 8c 28 73 61 76 65 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 .....(save_key().(M2Crypto.RSA.R
12f40 53 41 5f 70 75 62 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 SA_pub.method)...M2Crypto.RSA.RS
12f60 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 73 61 76 65 A_pub.save_key.h'Nt.(j.....,save
12f80 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 52 53 41 5f 70 75 62 _key_bio().(M2Crypto.RSA.RSA_pub
12fa0 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 2e .method)..!M2Crypto.RSA.RSA_pub.
12fc0 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 67 65 6e 5f 6b 65 save_key_bio.h'Nt.(j....."gen_ke
12fe0 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 8c 14 4d y().(in.module.M2Crypto.RSA)...M
13000 32 43 72 79 70 74 6f 2e 52 53 41 2e 67 65 6e 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2Crypto.RSA.gen_key.h'Nt.(j.....
13020 2a 6b 65 79 67 65 6e 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 *keygen_callback().(in.module.M2
13040 43 72 79 70 74 6f 2e 52 53 41 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6b 65 79 67 65 Crypto.RSA)...M2Crypto.RSA.keyge
13060 6e 5f 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 6c 6f 61 64 5f 6b 65 79 n_callback.h'Nt.(j.....#load_key
13080 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 8c 15 4d 32 ().(in.module.M2Crypto.RSA)...M2
130a0 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c Crypto.RSA.load_key.h'Nt.(j.....
130c0 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 4d 32 43 72 79 'load_key_bio().(in.module.M2Cry
130e0 70 74 6f 2e 52 53 41 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 79 pto.RSA)...M2Crypto.RSA.load_key
13100 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e _bio.h'Nt.(j.....*load_key_strin
13120 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 41 29 94 8c 1c 4d g().(in.module.M2Crypto.RSA)...M
13140 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 68 27 4e 74 2Crypto.RSA.load_key_string.h'Nt
13160 94 28 6a c0 12 00 00 8c 27 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 28 29 20 28 69 6e 20 6d 6f 64 75 .(j.....'load_pub_key().(in.modu
13180 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e le.M2Crypto.RSA)...M2Crypto.RSA.
131a0 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 6c 6f 61 64 5f 70 load_pub_key.h'Nt.(j.....+load_p
131c0 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 74 6f ub_key_bio().(in.module.M2Crypto
131e0 2e 52 53 41 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 .RSA)...M2Crypto.RSA.load_pub_ke
13200 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 6e 65 77 5f 70 75 62 5f 6b 65 79 28 29 y_bio.h'Nt.(j.....&new_pub_key()
13220 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 8c 18 4d 32 43 72 .(in.module.M2Crypto.RSA)...M2Cr
13240 79 70 74 6f 2e 52 53 41 2e 6e 65 77 5f 70 75 62 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 ypto.RSA.new_pub_key.h'Nt.(j....
13260 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 72 79 70 74 .$rsa_error().(in.module.M2Crypt
13280 6f 2e 52 53 41 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 72 73 61 5f 65 72 72 6f 72 94 o.RSA)...M2Crypto.RSA.rsa_error.
132a0 68 27 4e 74 94 28 6a b9 12 00 00 8c 15 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 52 61 h'Nt.(j......module;.M2Crypto.Ra
132c0 6e 64 94 8c 14 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 94 68 27 4e 74 94 28 nd...module-M2Crypto.Rand.h'Nt.(
132e0 6a c0 12 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
13300 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 6c 6f 61 Crypto.Rand)...M2Crypto.Rand.loa
13320 64 5f 66 69 6c 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 72 61 6e 64 5f 61 64 64 28 29 20 28 d_file.h'Nt.(j.....$rand_add().(
13340 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 8c 16 4d 32 43 72 79 in.module.M2Crypto.Rand)...M2Cry
13360 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 61 64 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 72 pto.Rand.rand_add.h'Nt.(j.....&r
13380 61 6e 64 5f 62 79 74 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 and_bytes().(in.module.M2Crypto.
133a0 52 61 6e 64 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 62 79 74 65 73 Rand)...M2Crypto.Rand.rand_bytes
133c0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 28 29 20 28 .h'Nt.(j.....*rand_file_name().(
133e0 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 8c 1c 4d 32 43 72 79 in.module.M2Crypto.Rand)...M2Cry
13400 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 94 68 27 4e 74 94 28 6a c0 pto.Rand.rand_file_name.h'Nt.(j.
13420 12 00 00 8c 2d 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 28 29 20 28 69 6e 20 6d 6f 64 ....-rand_pseudo_bytes().(in.mod
13440 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 52 61 ule.M2Crypto.Rand)...M2Crypto.Ra
13460 6e 64 2e 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 94 68 27 4e 74 94 28 6a c0 12 00 00 nd.rand_pseudo_bytes.h'Nt.(j....
13480 8c 25 72 61 6e 64 5f 73 65 65 64 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 .%rand_seed().(in.module.M2Crypt
134a0 6f 2e 52 61 6e 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 73 65 65 o.Rand)...M2Crypto.Rand.rand_see
134c0 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 72 61 6e 64 5f 73 74 61 74 75 73 28 29 20 28 69 6e d.h'Nt.(j.....'rand_status().(in
134e0 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 29 94 8c 19 4d 32 43 72 79 70 74 .module.M2Crypto.Rand)...M2Crypt
13500 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 73 74 61 74 75 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 o.Rand.rand_status.h'Nt.(j.....%
13520 73 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 save_file().(in.module.M2Crypto.
13540 52 61 6e 64 29 94 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 Rand)...M2Crypto.Rand.save_file.
13560 68 27 4e 74 94 28 6a b9 12 00 00 8c 16 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 4d h'Nt.(j......module;.M2Crypto.SM
13580 49 4d 45 94 8c 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 IME...module-M2Crypto.SMIME.h'Nt
135a0 94 28 6a c0 12 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 .(j......Cipher.(class.in.M2Cryp
135c0 74 6f 2e 53 4d 49 4d 45 29 94 8c 15 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 43 69 70 68 65 to.SMIME)...M2Crypto.SMIME.Ciphe
135e0 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1f 50 4b 43 53 37 20 28 63 6c 61 73 73 20 69 6e 20 4d r.h'Nt.(j......PKCS7.(class.in.M
13600 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 2Crypto.SMIME)...M2Crypto.SMIME.
13620 50 4b 43 53 37 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 67 65 74 30 5f 73 69 67 6e 65 72 73 28 PKCS7.h'Nt.(j.....,get0_signers(
13640 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 94 ).(M2Crypto.SMIME.PKCS7.method).
13660 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 67 65 74 30 5f 73 69 67 6e .!M2Crypto.SMIME.PKCS7.get0_sign
13680 65 72 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 6d 32 5f 70 6b 63 73 37 5f 66 72 65 65 28 29 ers.h'Nt.(j.....-m2_pkcs7_free()
136a0 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 94 8c .(M2Crypto.SMIME.PKCS7.method)..
136c0 22 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 6d 32 5f 70 6b 63 73 37 5f 66 "M2Crypto.SMIME.PKCS7.m2_pkcs7_f
136e0 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 74 79 70 65 28 29 20 28 4d 32 43 72 79 70 74 ree.h'Nt.(j.....$type().(M2Crypt
13700 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f o.SMIME.PKCS7.method)...M2Crypto
13720 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 74 79 70 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 77 .SMIME.PKCS7.type.h'Nt.(j.....%w
13740 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
13760 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 77 72 69 74 hod)...M2Crypto.SMIME.PKCS7.writ
13780 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 77 72 69 74 65 5f 64 65 72 28 29 20 28 4d 32 43 72 e.h'Nt.(j.....)write_der().(M2Cr
137a0 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 ypto.SMIME.PKCS7.method)...M2Cry
137c0 70 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 68 27 4e 74 94 28 pto.SMIME.PKCS7.write_der.h'Nt.(
137e0 6a c0 12 00 00 8c 0b 50 4b 43 53 37 5f 45 72 72 6f 72 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d j......PKCS7_Error...M2Crypto.SM
13800 49 4d 45 2e 50 4b 43 53 37 5f 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 1f 53 4d 49 IME.PKCS7_Error.h'Nt.(j......SMI
13820 4d 45 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 8c 14 4d ME.(class.in.M2Crypto.SMIME)...M
13840 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2Crypto.SMIME.SMIME.h'Nt.(j.....
13860 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 4d 45 'decrypt().(M2Crypto.SMIME.SMIME
13880 20 6d 65 74 68 6f 64 29 94 8c 1c 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.
138a0 64 65 63 72 79 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 65 6e 63 72 79 70 74 28 29 20 28 decrypt.h'Nt.(j.....'encrypt().(
138c0 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 8c 1c 4d M2Crypto.SMIME.SMIME.method)...M
138e0 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 65 6e 63 72 79 70 74 94 68 27 4e 74 2Crypto.SMIME.SMIME.encrypt.h'Nt
13900 94 28 6a c0 12 00 00 8c 28 6c 6f 61 64 5f 6b 65 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d .(j.....(load_key().(M2Crypto.SM
13920 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 53 4d 49 IME.SMIME.method)...M2Crypto.SMI
13940 4d 45 2e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 6c ME.SMIME.load_key.h'Nt.(j.....,l
13960 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d oad_key_bio().(M2Crypto.SMIME.SM
13980 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 IME.method)..!M2Crypto.SMIME.SMI
139a0 4d 45 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 73 65 74 ME.load_key_bio.h'Nt.(j.....*set
139c0 5f 63 69 70 68 65 72 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 _cipher().(M2Crypto.SMIME.SMIME.
139e0 6d 65 74 68 6f 64 29 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 method)...M2Crypto.SMIME.SMIME.s
13a00 65 74 5f 63 69 70 68 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e 73 65 74 5f 78 35 30 39 5f et_cipher.h'Nt.(j......set_x509_
13a20 73 74 61 63 6b 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 stack().(M2Crypto.SMIME.SMIME.me
13a40 74 68 6f 64 29 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 73 65 74 thod)..#M2Crypto.SMIME.SMIME.set
13a60 5f 78 35 30 39 5f 73 74 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e 73 65 74 5f 78 35 30 _x509_stack.h'Nt.(j......set_x50
13a80 39 5f 73 74 6f 72 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 9_store().(M2Crypto.SMIME.SMIME.
13aa0 6d 65 74 68 6f 64 29 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 73 method)..#M2Crypto.SMIME.SMIME.s
13ac0 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 73 69 67 6e 28 et_x509_store.h'Nt.(j.....$sign(
13ae0 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).
13b00 8c 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 68 27 4e 74 ..M2Crypto.SMIME.SMIME.sign.h'Nt
13b20 94 28 6a c0 12 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 .(j.....,unset_cipher().(M2Crypt
13b40 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f o.SMIME.SMIME.method)..!M2Crypto
13b60 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 63 69 70 68 65 72 94 68 27 4e 74 94 28 .SMIME.SMIME.unset_cipher.h'Nt.(
13b80 6a c0 12 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 j.....)unset_key().(M2Crypto.SMI
13ba0 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d ME.SMIME.method)...M2Crypto.SMIM
13bc0 45 2e 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 30 75 E.SMIME.unset_key.h'Nt.(j.....0u
13be0 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 4d 49 4d nset_x509_stack().(M2Crypto.SMIM
13c00 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 E.SMIME.method)..%M2Crypto.SMIME
13c20 2e 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 68 27 4e 74 94 28 6a c0 .SMIME.unset_x509_stack.h'Nt.(j.
13c40 12 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
13c60 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 25 4d 32 43 72 79 70 74 6f o.SMIME.SMIME.method)..%M2Crypto
13c80 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 68 27 .SMIME.SMIME.unset_x509_store.h'
13ca0 4e 74 94 28 6a c0 12 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 Nt.(j.....&verify().(M2Crypto.SM
13cc0 49 4d 45 2e 53 4d 49 4d 45 20 6d 65 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 53 4d 49 IME.SMIME.method)...M2Crypto.SMI
13ce0 4d 45 2e 53 4d 49 4d 45 2e 76 65 72 69 66 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 77 72 69 ME.SMIME.verify.h'Nt.(j.....%wri
13d00 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 65 74 68 6f te().(M2Crypto.SMIME.SMIME.metho
13d20 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 77 72 69 74 65 94 d)...M2Crypto.SMIME.SMIME.write.
13d40 68 27 4e 74 94 28 6a c0 12 00 00 8c 0b 53 4d 49 4d 45 5f 45 72 72 6f 72 94 8c 1a 4d 32 43 72 79 h'Nt.(j......SMIME_Error...M2Cry
13d60 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 5f 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 pto.SMIME.SMIME_Error.h'Nt.(j...
13d80 00 8c 27 6c 6f 61 64 5f 70 6b 63 73 37 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 ..'load_pkcs7().(in.module.M2Cry
13da0 70 74 6f 2e 53 4d 49 4d 45 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 6c 6f 61 64 pto.SMIME)...M2Crypto.SMIME.load
13dc0 5f 70 6b 63 73 37 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 _pkcs7.h'Nt.(j.....+load_pkcs7_b
13de0 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 94 io().(in.module.M2Crypto.SMIME).
13e00 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 62 69 6f 94 ..M2Crypto.SMIME.load_pkcs7_bio.
13e20 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 28 h'Nt.(j...../load_pkcs7_bio_der(
13e40 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 8c 21 4d ).(in.module.M2Crypto.SMIME)..!M
13e60 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 62 69 6f 5f 64 65 72 2Crypto.SMIME.load_pkcs7_bio_der
13e80 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 72 28 29 20 28 .h'Nt.(j.....+load_pkcs7_der().(
13ea0 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 8c 1d 4d 32 43 72 in.module.M2Crypto.SMIME)...M2Cr
13ec0 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 94 68 27 4e 74 94 28 ypto.SMIME.load_pkcs7_der.h'Nt.(
13ee0 6a c0 12 00 00 8c 2d 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 28 29 20 28 69 6e 20 6d 6f j.....-smime_load_pkcs7().(in.mo
13f00 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e dule.M2Crypto.SMIME)...M2Crypto.
13f20 53 4d 49 4d 45 2e 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 94 68 27 4e 74 94 28 6a c0 12 SMIME.smime_load_pkcs7.h'Nt.(j..
13f40 00 00 8c 31 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 28 29 20 28 69 6e 20 6d ...1smime_load_pkcs7_bio().(in.m
13f60 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 8c 23 4d 32 43 72 79 70 74 6f odule.M2Crypto.SMIME)..#M2Crypto
13f80 2e 53 4d 49 4d 45 2e 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 68 27 4e 74 .SMIME.smime_load_pkcs7_bio.h'Nt
13fa0 94 28 6a c0 12 00 00 8c 26 74 65 78 74 5f 63 72 6c 66 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 .(j.....&text_crlf().(in.module.
13fc0 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 M2Crypto.SMIME)...M2Crypto.SMIME
13fe0 2e 74 65 78 74 5f 63 72 6c 66 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 74 65 78 74 5f 63 72 6c .text_crlf.h'Nt.(j.....*text_crl
14000 66 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 53 4d 49 4d f_bio().(in.module.M2Crypto.SMIM
14020 45 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 74 65 78 74 5f 63 72 6c 66 5f 62 69 E)...M2Crypto.SMIME.text_crlf_bi
14040 6f 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 15 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e o.h'Nt.(j......module;.M2Crypto.
14060 58 35 30 39 94 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 X509...module-M2Crypto.X509.h'Nt
14080 94 28 6a c0 12 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 .(j......CRL.(class.in.M2Crypto.
140a0 58 35 30 39 29 94 8c 11 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 94 68 27 4e 74 94 28 X509)...M2Crypto.X509.CRL.h'Nt.(
140c0 6a c0 12 00 00 8c 24 61 73 5f 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e j.....$as_text().(M2Crypto.X509.
140e0 43 52 4c 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 2e CRL.method)...M2Crypto.X509.CRL.
14100 61 73 5f 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 6d 32 5f 78 35 30 39 5f 63 72 6c as_text.h'Nt.(j.....-m2_x509_crl
14120 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 20 6d 65 74 68 6f _free().(M2Crypto.X509.CRL.metho
14140 64 29 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 35 30 39 5f 63 d).."M2Crypto.X509.CRL.m2_x509_c
14160 72 6c 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 20 52 65 71 75 65 73 74 20 28 63 6c rl_free.h'Nt.(j......Request.(cl
14180 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 15 4d 32 43 72 79 70 74 6f ass.in.M2Crypto.X509)...M2Crypto
141a0 2e 58 35 30 39 2e 52 65 71 75 65 73 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 61 64 64 5f 65 .X509.Request.h'Nt.(j...../add_e
141c0 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 75 65 xtensions().(M2Crypto.X509.Reque
141e0 73 74 20 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 st.method)..$M2Crypto.X509.Reque
14200 73 74 2e 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 61 st.add_extensions.h'Nt.(j.....'a
14220 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
14240 65 74 68 6f 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 61 ethod)...M2Crypto.X509.Request.a
14260 73 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 s_der.h'Nt.(j.....'as_pem().(M2C
14280 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 8c 1c 4d 32 43 rypto.X509.Request.method)...M2C
142a0 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 61 73 5f 70 65 6d 94 68 27 4e 74 94 28 rypto.X509.Request.as_pem.h'Nt.(
142c0 6a c0 12 00 00 8c 28 61 73 5f 74 65 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e j.....(as_text().(M2Crypto.X509.
142e0 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e Request.method)...M2Crypto.X509.
14300 52 65 71 75 65 73 74 2e 61 73 5f 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 67 65 74 Request.as_text.h'Nt.(j.....+get
14320 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 71 75 65 73 74 _pubkey().(M2Crypto.X509.Request
14340 20 6d 65 74 68 6f 64 29 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
14360 2e 67 65 74 5f 70 75 62 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 67 65 74 5f 73 75 62 .get_pubkey.h'Nt.(j.....,get_sub
14380 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 75 65 73 74 20 6d 65 ject().(M2Crypto.X509.Request.me
143a0 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 67 65 thod)..!M2Crypto.X509.Request.ge
143c0 74 5f 73 75 62 6a 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 67 65 74 5f 76 65 72 73 69 t_subject.h'Nt.(j.....,get_versi
143e0 6f 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 6d 65 74 68 on().(M2Crypto.X509.Request.meth
14400 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 67 65 74 5f od)..!M2Crypto.X509.Request.get_
14420 76 65 72 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 6d 32 5f 78 35 30 39 5f 72 65 71 version.h'Nt.(j.....1m2_x509_req
14440 5f 66 72 65 65 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 _free().(M2Crypto.X509.Request.m
14460 65 74 68 6f 64 29 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 ethod)..&M2Crypto.X509.Request.m
14480 32 5f 78 35 30 39 5f 72 65 71 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 73 61 76 2_x509_req_free.h'Nt.(j.....%sav
144a0 65 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 e().(M2Crypto.X509.Request.metho
144c0 64 29 94 8c 1a 4d 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 d)...M2Crypto.X509.Request.save.
144e0 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 73 61 76 65 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 h'Nt.(j.....)save_pem().(M2Crypt
14500 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 o.X509.Request.method)...M2Crypt
14520 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 73 61 76 65 5f 70 65 6d 94 68 27 4e 74 94 28 6a c0 o.X509.Request.save_pem.h'Nt.(j.
14540 12 00 00 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 ....+set_pubkey().(M2Crypto.X509
14560 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 .Request.method)...M2Crypto.X509
14580 2e 52 65 71 75 65 73 74 2e 73 65 74 5f 70 75 62 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c .Request.set_pubkey.h'Nt.(j.....
145a0 2c 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 ,set_subject().(M2Crypto.X509.Re
145c0 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 quest.method)..!M2Crypto.X509.Re
145e0 71 75 65 73 74 2e 73 65 74 5f 73 75 62 6a 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 73 quest.set_subject.h'Nt.(j.....1s
14600 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
14620 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 .Request.method)..&M2Crypto.X509
14640 2e 52 65 71 75 65 73 74 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 68 27 4e 74 94 28 .Request.set_subject_name.h'Nt.(
14660 6a c0 12 00 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 j.....,set_version().(M2Crypto.X
14680 35 30 39 2e 52 65 71 75 65 73 74 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 509.Request.method)..!M2Crypto.X
146a0 35 30 39 2e 52 65 71 75 65 73 74 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 509.Request.set_version.h'Nt.(j.
146c0 12 00 00 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 ....%sign().(M2Crypto.X509.Reque
146e0 73 74 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 st.method)...M2Crypto.X509.Reque
14700 73 74 2e 73 69 67 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 76 65 72 69 66 79 28 29 20 28 4d st.sign.h'Nt.(j.....'verify().(M
14720 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 94 8c 1c 4d 2Crypto.X509.Request.method)...M
14740 32 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 68 27 4e 74 2Crypto.X509.Request.verify.h'Nt
14760 94 28 6a c0 12 00 00 8c 1d 58 35 30 39 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f .(j......X509.(class.in.M2Crypto
14780 2e 58 35 30 39 29 94 8c 12 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 94 68 27 4e 74 .X509)...M2Crypto.X509.X509.h'Nt
147a0 94 28 6a c0 12 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 .(j.....%add_ext().(M2Crypto.X50
147c0 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 9.X509.method)...M2Crypto.X509.X
147e0 35 30 39 2e 61 64 64 5f 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 24 61 73 5f 64 65 72 28 509.add_ext.h'Nt.(j.....$as_der(
14800 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 8c 19 ).(M2Crypto.X509.X509.method)...
14820 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 61 73 5f 64 65 72 94 68 27 4e 74 94 28 M2Crypto.X509.X509.as_der.h'Nt.(
14840 6a c0 12 00 00 8c 24 61 73 5f 70 65 6d 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 j.....$as_pem().(M2Crypto.X509.X
14860 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 509.method)...M2Crypto.X509.X509
14880 2e 61 73 5f 70 65 6d 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 61 73 5f 74 65 78 74 28 29 20 28 .as_pem.h'Nt.(j.....%as_text().(
148a0 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 8c 1a 4d 32 43 M2Crypto.X509.X509.method)...M2C
148c0 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 61 73 5f 74 65 78 74 94 68 27 4e 74 94 28 6a c0 rypto.X509.X509.as_text.h'Nt.(j.
148e0 12 00 00 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 ....&check_ca().(M2Crypto.X509.X
14900 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 509.method)...M2Crypto.X509.X509
14920 2e 63 68 65 63 6b 5f 63 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 63 68 65 63 6b 5f 70 75 72 .check_ca.h'Nt.(j.....+check_pur
14940 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 65 74 68 6f pose().(M2Crypto.X509.X509.metho
14960 64 29 94 8c 20 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 70 75 d)...M2Crypto.X509.X509.check_pu
14980 72 70 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 67 65 74 5f 65 78 74 28 29 20 28 4d 32 rpose.h'Nt.(j.....%get_ext().(M2
149a0 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 8c 1a 4d 32 43 72 79 Crypto.X509.X509.method)...M2Cry
149c0 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 pto.X509.X509.get_ext.h'Nt.(j...
149e0 00 8c 28 67 65 74 5f 65 78 74 5f 61 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 ..(get_ext_at().(M2Crypto.X509.X
14a00 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 509.method)...M2Crypto.X509.X509
14a20 2e 67 65 74 5f 65 78 74 5f 61 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 67 65 74 5f 65 78 74 .get_ext_at.h'Nt.(j.....+get_ext
14a40 5f 63 6f 75 6e 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 _count().(M2Crypto.X509.X509.met
14a60 68 6f 64 29 94 8c 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 hod)...M2Crypto.X509.X509.get_ex
14a80 74 5f 63 6f 75 6e 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 67 65 74 5f 66 69 6e 67 65 72 70 t_count.h'Nt.(j.....-get_fingerp
14aa0 72 69 6e 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 rint().(M2Crypto.X509.X509.metho
14ac0 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 66 69 6e 67 d).."M2Crypto.X509.X509.get_fing
14ae0 65 72 70 72 69 6e 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 67 65 74 5f 69 73 73 75 65 72 28 erprint.h'Nt.(j.....(get_issuer(
14b00 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 8c 1d ).(M2Crypto.X509.X509.method)...
14b20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 69 73 73 75 65 72 94 68 27 M2Crypto.X509.X509.get_issuer.h'
14b40 4e 74 94 28 6a c0 12 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 Nt.(j.....+get_not_after().(M2Cr
14b60 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 ypto.X509.X509.method)...M2Crypt
14b80 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 68 27 4e 74 94 28 o.X509.X509.get_not_after.h'Nt.(
14ba0 6a c0 12 00 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 j.....,get_not_before().(M2Crypt
14bc0 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 o.X509.X509.method)..!M2Crypto.X
14be0 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 68 27 4e 74 94 28 6a c0 509.X509.get_not_before.h'Nt.(j.
14c00 12 00 00 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 ....(get_pubkey().(M2Crypto.X509
14c20 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .X509.method)...M2Crypto.X509.X5
14c40 30 39 2e 67 65 74 5f 70 75 62 6b 65 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 67 65 74 5f 73 09.get_pubkey.h'Nt.(j...../get_s
14c60 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 58 35 erial_number().(M2Crypto.X509.X5
14c80 30 39 20 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 09.method)..$M2Crypto.X509.X509.
14ca0 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 67 get_serial_number.h'Nt.(j.....)g
14cc0 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
14ce0 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 .method)...M2Crypto.X509.X509.ge
14d00 74 5f 73 75 62 6a 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 67 65 74 5f 76 65 72 73 69 t_subject.h'Nt.(j.....)get_versi
14d20 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 68 6f 64 29 on().(M2Crypto.X509.X509.method)
14d40 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 76 65 72 73 69 6f ...M2Crypto.X509.X509.get_versio
14d60 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6d 32 5f 78 35 30 39 5f 66 72 65 65 28 29 20 28 4d n.h'Nt.(j.....*m2_x509_free().(M
14d80 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 8c 1f 4d 32 43 72 2Crypto.X509.X509.method)...M2Cr
14da0 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 6d 32 5f 78 35 30 39 5f 66 72 65 65 94 68 27 4e 74 ypto.X509.X509.m2_x509_free.h'Nt
14dc0 94 28 6a c0 12 00 00 8c 22 73 61 76 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 .(j....."save().(M2Crypto.X509.X
14de0 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 509.method)...M2Crypto.X509.X509
14e00 2e 73 61 76 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 26 73 61 76 65 5f 70 65 6d 28 29 20 28 4d .save.h'Nt.(j.....&save_pem().(M
14e20 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 8c 1b 4d 32 43 72 2Crypto.X509.X509.method)...M2Cr
14e40 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 61 76 65 5f 70 65 6d 94 68 27 4e 74 94 28 6a c0 ypto.X509.X509.save_pem.h'Nt.(j.
14e60 12 00 00 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 ....(set_issuer().(M2Crypto.X509
14e80 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .X509.method)...M2Crypto.X509.X5
14ea0 30 39 2e 73 65 74 5f 69 73 73 75 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 73 65 74 5f 69 09.set_issuer.h'Nt.(j.....-set_i
14ec0 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 30 39 ssuer_name().(M2Crypto.X509.X509
14ee0 20 6d 65 74 68 6f 64 29 94 8c 22 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
14f00 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2b 73 65 74 5f 6e t_issuer_name.h'Nt.(j.....+set_n
14f20 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 20 6d ot_after().(M2Crypto.X509.X509.m
14f40 65 74 68 6f 64 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f ethod)...M2Crypto.X509.X509.set_
14f60 6e 6f 74 5f 61 66 74 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 73 65 74 5f 6e 6f 74 5f 62 not_after.h'Nt.(j.....,set_not_b
14f80 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 6d 65 74 68 efore().(M2Crypto.X509.X509.meth
14fa0 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 6e 6f 74 od)..!M2Crypto.X509.X509.set_not
14fc0 5f 62 65 66 6f 72 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 73 65 74 5f 70 75 62 6b 65 79 28 _before.h'Nt.(j.....(set_pubkey(
14fe0 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 8c 1d ).(M2Crypto.X509.X509.method)...
15000 4d 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 68 27 M2Crypto.X509.X509.set_pubkey.h'
15020 4e 74 94 28 6a c0 12 00 00 8c 2f 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 29 20 28 Nt.(j...../set_serial_number().(
15040 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 8c 24 4d 32 43 M2Crypto.X509.X509.method)..$M2C
15060 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 rypto.X509.X509.set_serial_numbe
15080 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 73 65 74 5f 73 75 62 6a 65 63 74 28 29 20 28 4d 32 r.h'Nt.(j.....)set_subject().(M2
150a0 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 8c 1e 4d 32 43 72 79 Crypto.X509.X509.method)...M2Cry
150c0 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 94 68 27 4e 74 94 28 pto.X509.X509.set_subject.h'Nt.(
150e0 6a c0 12 00 00 8c 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 j......set_subject_name().(M2Cry
15100 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 23 4d 32 43 72 79 70 74 6f pto.X509.X509.method)..#M2Crypto
15120 2e 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 68 27 4e 74 .X509.X509.set_subject_name.h'Nt
15140 94 28 6a c0 12 00 00 8c 29 73 65 74 5f 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f .(j.....)set_version().(M2Crypto
15160 2e 58 35 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 .X509.X509.method)...M2Crypto.X5
15180 30 39 2e 58 35 30 39 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 09.X509.set_version.h'Nt.(j.....
151a0 22 73 69 67 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 68 "sign().(M2Crypto.X509.X509.meth
151c0 6f 64 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 69 67 6e 94 68 27 od)...M2Crypto.X509.X509.sign.h'
151e0 4e 74 94 28 6a c0 12 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 Nt.(j.....$verify().(M2Crypto.X5
15200 30 39 2e 58 35 30 39 20 6d 65 74 68 6f 64 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 09.X509.method)...M2Crypto.X509.
15220 58 35 30 39 2e 76 65 72 69 66 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 09 58 35 30 39 45 72 72 X509.verify.h'Nt.(j......X509Err
15240 6f 72 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 45 72 72 6f 72 94 68 27 4e or...M2Crypto.X509.X509Error.h'N
15260 74 94 28 6a c0 12 00 00 8c 27 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 28 63 6c 61 73 73 20 t.(j.....'X509_Extension.(class.
15280 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 58 35 30 in.M2Crypto.X509)...M2Crypto.X50
152a0 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 67 65 9.X509_Extension.h'Nt.(j.....4ge
152c0 74 5f 63 72 69 74 69 63 61 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 t_critical().(M2Crypto.X509.X509
152e0 5f 45 78 74 65 6e 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 58 35 _Extension.method)..)M2Crypto.X5
15300 30 39 2e 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 94 68 09.X509_Extension.get_critical.h
15320 27 4e 74 94 28 6a c0 12 00 00 8c 30 67 65 74 5f 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 'Nt.(j.....0get_name().(M2Crypto
15340 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 8c 25 4d .X509.X509_Extension.method)..%M
15360 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 67 65 74 5f 2Crypto.X509.X509_Extension.get_
15380 6e 61 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 67 65 74 5f 76 61 6c 75 65 28 29 20 28 4d name.h'Nt.(j.....1get_value().(M
153a0 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 74 68 2Crypto.X509.X509_Extension.meth
153c0 6f 64 29 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 od)..&M2Crypto.X509.X509_Extensi
153e0 6f 6e 2e 67 65 74 5f 76 61 6c 75 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3e 6d 32 5f 78 35 30 on.get_value.h'Nt.(j.....>m2_x50
15400 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 30 9_extension_free().(M2Crypto.X50
15420 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 8c 33 4d 32 43 72 79 9.X509_Extension.method)..3M2Cry
15440 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 5f pto.X509.X509_Extension.m2_x509_
15460 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 73 65 74 5f extension_free.h'Nt.(j.....4set_
15480 63 72 69 74 69 63 61 6c 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 critical().(M2Crypto.X509.X509_E
154a0 78 74 65 6e 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 xtension.method)..)M2Crypto.X509
154c0 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 73 65 74 5f 63 72 69 74 69 63 61 6c 94 68 27 4e .X509_Extension.set_critical.h'N
154e0 74 94 28 6a c0 12 00 00 8c 2d 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 20 28 t.(j.....-X509_Extension_Stack.(
15500 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 22 4d 32 43 72 79 70 class.in.M2Crypto.X509).."M2Cryp
15520 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 94 68 27 4e to.X509.X509_Extension_Stack.h'N
15540 74 94 28 6a c0 12 00 00 8c 47 6d 32 5f 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 t.(j.....Gm2_sk_x509_extension_f
15560 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 45 78 74 65 6e 73 ree().(M2Crypto.X509.X509_Extens
15580 69 6f 6e 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 58 35 30 ion_Stack.method)..<M2Crypto.X50
155a0 39 2e 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 9.X509_Extension_Stack.m2_sk_x50
155c0 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 70 6f 9_extension_free.h'Nt.(j.....1po
155e0 70 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 p().(M2Crypto.X509.X509_Extensio
15600 6e 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e n_Stack.method)..&M2Crypto.X509.
15620 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 6f 70 94 68 27 4e 74 94 28 6a X509_Extension_Stack.pop.h'Nt.(j
15640 c0 12 00 00 8c 32 70 75 73 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 .....2push().(M2Crypto.X509.X509
15660 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 8c 27 4d 32 43 72 79 _Extension_Stack.method)..'M2Cry
15680 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 2e 70 75 pto.X509.X509_Extension_Stack.pu
156a0 73 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 22 58 35 30 39 5f 4e 61 6d 65 20 28 63 6c 61 73 73 sh.h'Nt.(j....."X509_Name.(class
156c0 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 .in.M2Crypto.X509)...M2Crypto.X5
156e0 30 39 2e 58 35 30 39 5f 4e 61 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 61 64 64 5f 65 6e 09.X509_Name.h'Nt.(j.....3add_en
15700 74 72 79 5f 62 79 5f 74 78 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 try_by_txt().(M2Crypto.X509.X509
15720 5f 4e 61 6d 65 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 _Name.method)..(M2Crypto.X509.X5
15740 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 68 27 4e 74 94 28 6a 09_Name.add_entry_by_txt.h'Nt.(j
15760 c0 12 00 00 8c 29 61 73 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 .....)as_der().(M2Crypto.X509.X5
15780 30 39 5f 4e 61 6d 65 20 6d 65 74 68 6f 64 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 09_Name.method)...M2Crypto.X509.
157a0 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 61 73 X509_Name.as_der.h'Nt.(j.....*as
157c0 5f 68 61 73 68 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 _hash().(M2Crypto.X509.X509_Name
157e0 20 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 .method)...M2Crypto.X509.X509_Na
15800 6d 65 2e 61 73 5f 68 61 73 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 61 73 5f 74 65 78 74 28 me.as_hash.h'Nt.(j.....*as_text(
15820 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
15840 64 29 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 2e 61 73 5f d)...M2Crypto.X509.X509_Name.as_
15860 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 28 29 20 text.h'Nt.(j......entry_count().
15880 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 64 29 (M2Crypto.X509.X509_Name.method)
158a0 94 8c 23 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 65 6e 74 72 79 ..#M2Crypto.X509.X509_Name.entry
158c0 5f 63 6f 75 6e 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 67 65 74 5f 65 6e 74 72 69 65 73 5f _count.h'Nt.(j.....5get_entries_
158e0 62 79 5f 6e 69 64 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 by_nid().(M2Crypto.X509.X509_Nam
15900 65 20 6d 65 74 68 6f 64 29 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e e.method)..*M2Crypto.X509.X509_N
15920 61 6d 65 2e 67 65 74 5f 65 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 94 68 27 4e 74 94 28 6a c0 12 ame.get_entries_by_nid.h'Nt.(j..
15940 00 00 8c 34 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 ...4m2_x509_name_free().(M2Crypt
15960 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 8c 29 4d 32 43 72 79 o.X509.X509_Name.method)..)M2Cry
15980 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 6e 61 6d 65 5f pto.X509.X509_Name.m2_x509_name_
159a0 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 6e 69 64 20 28 4d 32 43 72 79 70 74 6f 2e free.h'Nt.(j.....'nid.(M2Crypto.
159c0 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 20 61 74 74 72 69 62 75 74 65 29 94 8c 1b 4d 32 43 72 X509.X509_Name.attribute)...M2Cr
159e0 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 6e 69 64 94 68 27 4e 74 94 28 6a c0 ypto.X509.X509_Name.nid.h'Nt.(j.
15a00 12 00 00 8c 28 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 20 28 63 6c 61 73 73 20 69 6e 20 4d ....(X509_Name_Entry.(class.in.M
15a20 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 2Crypto.X509)...M2Crypto.X509.X5
15a40 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 36 63 72 65 61 74 09_Name_Entry.h'Nt.(j.....6creat
15a60 65 5f 62 79 5f 74 78 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 e_by_txt().(M2Crypto.X509.X509_N
15a80 61 6d 65 5f 45 6e 74 72 79 20 6d 65 74 68 6f 64 29 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 58 35 30 ame_Entry.method)..+M2Crypto.X50
15aa0 39 2e 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 74 94 9.X509_Name_Entry.create_by_txt.
15ac0 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 67 65 74 5f 64 61 74 61 28 29 20 28 4d 32 43 72 79 70 74 h'Nt.(j.....1get_data().(M2Crypt
15ae0 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 68 6f 64 29 94 8c o.X509.X509_Name_Entry.method)..
15b00 26 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 2e 67 &M2Crypto.X509.X509_Name_Entry.g
15b20 65 74 5f 64 61 74 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 67 65 74 5f 6f 62 6a 65 63 74 28 et_data.h'Nt.(j.....3get_object(
15b40 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
15b60 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 .method)..(M2Crypto.X509.X509_Na
15b80 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 6f 62 6a 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c me_Entry.get_object.h'Nt.(j.....
15ba0 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 32 43 72 @m2_x509_name_entry_free().(M2Cr
15bc0 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 68 6f 64 ypto.X509.X509_Name_Entry.method
15be0 29 94 8c 35 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 )..5M2Crypto.X509.X509_Name_Entr
15c00 79 2e 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 94 68 27 4e 74 94 28 y.m2_x509_name_entry_free.h'Nt.(
15c20 6a c0 12 00 00 8c 31 73 65 74 5f 64 61 74 61 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 j.....1set_data().(M2Crypto.X509
15c40 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 20 6d 65 74 68 6f 64 29 94 8c 26 4d 32 43 72 79 .X509_Name_Entry.method)..&M2Cry
15c60 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 73 65 74 5f 64 61 74 pto.X509.X509_Name_Entry.set_dat
15c80 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 73 65 74 5f 6f 62 6a 65 63 74 28 29 20 28 4d 32 43 a.h'Nt.(j.....3set_object().(M2C
15ca0 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 68 6f rypto.X509.X509_Name_Entry.metho
15cc0 64 29 94 8c 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 d)..(M2Crypto.X509.X509_Name_Ent
15ce0 72 79 2e 73 65 74 5f 6f 62 6a 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 58 35 30 39 5f ry.set_object.h'Nt.(j.....#X509_
15d00 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 35 30 39 29 94 8c Stack.(class.in.M2Crypto.X509)..
15d20 18 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 94 68 27 4e 74 94 28 .M2Crypto.X509.X509_Stack.h'Nt.(
15d40 6a c0 12 00 00 8c 2a 61 73 5f 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 j.....*as_der().(M2Crypto.X509.X
15d60 35 30 39 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 509_Stack.method)...M2Crypto.X50
15d80 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 61 73 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 9.X509_Stack.as_der.h'Nt.(j.....
15da0 33 6d 32 5f 73 6b 5f 78 35 30 39 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 3m2_sk_x509_free().(M2Crypto.X50
15dc0 39 2e 58 35 30 39 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 9.X509_Stack.method)..(M2Crypto.
15de0 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 6d 32 5f 73 6b 5f 78 35 30 39 5f 66 72 65 65 94 X509.X509_Stack.m2_sk_x509_free.
15e00 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 70 6f 70 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 h'Nt.(j.....'pop().(M2Crypto.X50
15e20 39 2e 58 35 30 39 5f 53 74 61 63 6b 20 6d 65 74 68 6f 64 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 9.X509_Stack.method)...M2Crypto.
15e40 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 70 6f 70 94 68 27 4e 74 94 28 6a c0 12 00 00 8c X509.X509_Stack.pop.h'Nt.(j.....
15e60 28 70 75 73 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 61 63 (push().(M2Crypto.X509.X509_Stac
15e80 6b 20 6d 65 74 68 6f 64 29 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 k.method)...M2Crypto.X509.X509_S
15ea0 74 61 63 6b 2e 70 75 73 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 23 58 35 30 39 5f 53 74 6f 72 tack.push.h'Nt.(j.....#X509_Stor
15ec0 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 8c 18 4d 32 43 e.(class.in.M2Crypto.X509)...M2C
15ee0 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 94 68 27 4e 74 94 28 6a c0 12 00 rypto.X509.X509_Store.h'Nt.(j...
15f00 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 35 30 ..,add_cert().(M2Crypto.X509.X50
15f20 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 9_Store.method)..!M2Crypto.X509.
15f40 58 35 30 39 5f 53 74 6f 72 65 2e 61 64 64 5f 63 65 72 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c X509_Store.add_cert.h'Nt.(j.....
15f60 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 30 39 5f ,add_x509().(M2Crypto.X509.X509_
15f80 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 Store.method)..!M2Crypto.X509.X5
15fa0 30 39 5f 53 74 6f 72 65 2e 61 64 64 5f 78 35 30 39 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 6c 09_Store.add_x509.h'Nt.(j.....-l
15fc0 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 30 39 5f 53 oad_info().(M2Crypto.X509.X509_S
15fe0 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 tore.method).."M2Crypto.X509.X50
16000 39 5f 53 74 6f 72 65 2e 6c 6f 61 64 5f 69 6e 66 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 6c 9_Store.load_info.h'Nt.(j.....2l
16020 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 30 39 2e 58 oad_locations().(M2Crypto.X509.X
16040 35 30 39 5f 53 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 74 6f 2e 58 35 30 509_Store.method)..'M2Crypto.X50
16060 39 2e 58 35 30 39 5f 53 74 6f 72 65 2e 6c 6f 61 64 5f 6c 6f 63 61 74 69 6f 6e 73 94 68 27 4e 74 9.X509_Store.load_locations.h'Nt
16080 94 28 6a c0 12 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 .(j.....6m2_x509_store_free().(M
160a0 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 64 29 94 2Crypto.X509.X509_Store.method).
160c0 8c 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 .+M2Crypto.X509.X509_Store.m2_x5
160e0 30 39 5f 73 74 6f 72 65 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 73 65 74 5f 66 09_store_free.h'Nt.(j.....-set_f
16100 6c 61 67 73 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 lags().(M2Crypto.X509.X509_Store
16120 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 .method).."M2Crypto.X509.X509_St
16140 6f 72 65 2e 73 65 74 5f 66 6c 61 67 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 73 65 74 5f 76 ore.set_flags.h'Nt.(j.....1set_v
16160 65 72 69 66 79 5f 63 62 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 erify_cb().(M2Crypto.X509.X509_S
16180 74 6f 72 65 20 6d 65 74 68 6f 64 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 tore.method)..&M2Crypto.X509.X50
161a0 39 5f 53 74 6f 72 65 2e 73 65 74 5f 76 65 72 69 66 79 5f 63 62 94 68 27 4e 74 94 28 6a c0 12 00 9_Store.set_verify_cb.h'Nt.(j...
161c0 00 8c 2b 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 20 28 63 6c 61 73 73 20 69 6e 20 ..+X509_Store_Context.(class.in.
161e0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 M2Crypto.X509)...M2Crypto.X509.X
16200 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 36 67 509_Store_Context.h'Nt.(j.....6g
16220 65 74 31 5f 63 68 61 69 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f et1_chain().(M2Crypto.X509.X509_
16240 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 2b 4d 32 43 72 79 70 74 6f Store_Context.method)..+M2Crypto
16260 2e 58 35 30 39 2e 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 .X509.X509_Store_Context.get1_ch
16280 61 69 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3c 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 ain.h'Nt.(j.....<get_current_cer
162a0 74 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 6f t().(M2Crypto.X509.X509_Store_Co
162c0 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 31 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ntext.method)..1M2Crypto.X509.X5
162e0 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 09_Store_Context.get_current_cer
16300 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 67 65 74 5f 65 72 72 6f 72 28 29 20 28 4d 32 43 72 t.h'Nt.(j.....5get_error().(M2Cr
16320 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 74 20 6d 65 74 ypto.X509.X509_Store_Context.met
16340 68 6f 64 29 94 8c 2a 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 hod)..*M2Crypto.X509.X509_Store_
16360 43 6f 6e 74 65 78 74 2e 67 65 74 5f 65 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b 67 Context.get_error.h'Nt.(j.....;g
16380 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e et_error_depth().(M2Crypto.X509.
163a0 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 94 8c 30 4d 32 43 X509_Store_Context.method)..0M2C
163c0 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 74 2e 67 65 rypto.X509.X509_Store_Context.ge
163e0 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 42 6d 32 5f 78 35 t_error_depth.h'Nt.(j.....Bm2_x5
16400 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 70 74 6f 2e 58 35 09_store_ctx_free().(M2Crypto.X5
16420 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 94 8c 37 09.X509_Store_Context.method)..7
16440 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 74 M2Crypto.X509.X509_Store_Context
16460 2e 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 .m2_x509_store_ctx_free.h'Nt.(j.
16480 12 00 00 8c 25 6c 6f 61 64 5f 63 65 72 74 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 ....%load_cert().(in.module.M2Cr
164a0 79 70 74 6f 2e 58 35 30 39 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f ypto.X509)...M2Crypto.X509.load_
164c0 63 65 72 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 28 cert.h'Nt.(j.....)load_cert_bio(
164e0 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 8c 1b 4d 32 ).(in.module.M2Crypto.X509)...M2
16500 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 68 27 4e 74 94 28 Crypto.X509.load_cert_bio.h'Nt.(
16520 6a c0 12 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 20 28 69 j.....0load_cert_der_string().(i
16540 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 22 4d 32 43 72 79 70 n.module.M2Crypto.X509).."M2Cryp
16560 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 68 27 4e to.X509.load_cert_der_string.h'N
16580 74 94 28 6a c0 12 00 00 8c 2c 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 28 29 20 28 69 6e t.(j.....,load_cert_string().(in
165a0 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 1e 4d 32 43 72 79 70 74 .module.M2Crypto.X509)...M2Crypt
165c0 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 94 68 27 4e 74 94 28 6a c0 o.X509.load_cert_string.h'Nt.(j.
165e0 12 00 00 8c 24 6c 6f 61 64 5f 63 72 6c 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 ....$load_crl().(in.module.M2Cry
16600 70 74 6f 2e 58 35 30 39 29 94 8c 16 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 pto.X509)...M2Crypto.X509.load_c
16620 72 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 6c 6f 61 64 5f 72 65 71 75 65 73 74 28 29 20 28 rl.h'Nt.(j.....(load_request().(
16640 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 8c 1a 4d 32 43 72 79 in.module.M2Crypto.X509)...M2Cry
16660 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 65 71 75 65 73 74 94 68 27 4e 74 94 28 6a c0 12 00 pto.X509.load_request.h'Nt.(j...
16680 00 8c 2c 6c 6f 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 ..,load_request_bio().(in.module
166a0 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e .M2Crypto.X509)...M2Crypto.X509.
166c0 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 6c 6f load_request_bio.h'Nt.(j.....3lo
166e0 61 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 ad_request_der_string().(in.modu
16700 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 25 4d 32 43 72 79 70 74 6f 2e 58 35 30 le.M2Crypto.X509)..%M2Crypto.X50
16720 39 2e 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 68 27 4e 74 94 28 9.load_request_der_string.h'Nt.(
16740 6a c0 12 00 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 j...../load_request_string().(in
16760 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 21 4d 32 43 72 79 70 74 .module.M2Crypto.X509)..!M2Crypt
16780 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 74 72 69 6e 67 94 68 27 4e 74 94 o.X509.load_request_string.h'Nt.
167a0 28 6a c0 12 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 (j.....)new_extension().(in.modu
167c0 6c 65 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 le.M2Crypto.X509)...M2Crypto.X50
167e0 39 2e 6e 65 77 5f 65 78 74 65 6e 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2e 6e 65 77 9.new_extension.h'Nt.(j......new
16800 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 20 4d 32 43 _stack_from_der().(in.module.M2C
16820 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6e 65 77 5f rypto.X509)...M2Crypto.X509.new_
16840 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 78 35 30 39 stack_from_der.h'Nt.(j.....1x509
16860 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 64 75 6c 65 20 4d _store_default_cb().(in.module.M
16880 32 43 72 79 70 74 6f 2e 58 35 30 39 29 94 8c 23 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 78 35 2Crypto.X509)..#M2Crypto.X509.x5
168a0 30 39 5f 73 74 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 09_store_default_cb.h'Nt.(j.....
168c0 19 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 63 61 6c 6c 62 61 63 6b 94 8c 18 6d 6f 64 .module;.M2Crypto.callback...mod
168e0 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 94 28 6a b9 12 00 ule-M2Crypto.callback.h'Nt.(j...
16900 00 8c 18 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 94 8c 17 6d 6f ...module;.M2Crypto.ftpslib...mo
16920 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 74 94 28 6a c0 12 00 dule-M2Crypto.ftpslib.h'Nt.(j...
16940 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 79 70 74 6f 2e 66 74 ..#FTP_TLS.(class.in.M2Crypto.ft
16960 70 73 6c 69 62 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c pslib)...M2Crypto.ftpslib.FTP_TL
16980 53 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 61 75 74 68 5f 73 73 6c 28 29 20 28 4d 32 43 72 79 S.h'Nt.(j.....,auth_ssl().(M2Cry
169a0 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 pto.ftpslib.FTP_TLS.method)..!M2
169c0 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 94 Crypto.ftpslib.FTP_TLS.auth_ssl.
169e0 68 27 4e 74 94 28 6a c0 12 00 00 8c 2c 61 75 74 68 5f 74 6c 73 28 29 20 28 4d 32 43 72 79 70 74 h'Nt.(j.....,auth_tls().(M2Crypt
16a00 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 o.ftpslib.FTP_TLS.method)..!M2Cr
16a20 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 74 6c 73 94 68 27 ypto.ftpslib.FTP_TLS.auth_tls.h'
16a40 4e 74 94 28 6a c0 12 00 00 8c 30 6e 74 72 61 6e 73 66 65 72 63 6d 64 28 29 20 28 4d 32 43 72 79 Nt.(j.....0ntransfercmd().(M2Cry
16a60 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 8c 25 4d 32 pto.ftpslib.FTP_TLS.method)..%M2
16a80 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 2e 6e 74 72 61 6e 73 66 65 72 Crypto.ftpslib.FTP_TLS.ntransfer
16aa0 63 6d 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 70 72 6f 74 5f 63 28 29 20 28 4d 32 43 72 79 cmd.h'Nt.(j.....*prot_c().(M2Cry
16ac0 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 pto.ftpslib.FTP_TLS.method)...M2
16ae0 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 68 27 Crypto.ftpslib.FTP_TLS.prot_c.h'
16b00 4e 74 94 28 6a c0 12 00 00 8c 2a 70 72 6f 74 5f 70 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 66 74 Nt.(j.....*prot_p().(M2Crypto.ft
16b20 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 20 6d 65 74 68 6f 64 29 94 8c 1f 4d 32 43 72 79 70 74 6f pslib.FTP_TLS.method)...M2Crypto
16b40 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 70 94 68 27 4e 74 94 28 6a b9 .ftpslib.FTP_TLS.prot_p.h'Nt.(j.
16b60 12 00 00 8c 19 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 8c .....module;.M2Crypto.httpslib..
16b80 18 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 68 27 4e 74 94 28 .module-M2Crypto.httpslib.h'Nt.(
16ba0 6a c0 12 00 00 8c 2c 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e j.....,HTTPSConnection.(class.in
16bc0 20 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 68 .M2Crypto.httpslib)..!M2Crypto.h
16be0 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 94 68 27 4e 74 94 28 6a c0 ttpslib.HTTPSConnection.h'Nt.(j.
16c00 12 00 00 8c 32 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e ....2close().(M2Crypto.httpslib.
16c20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 HTTPSConnection.method)..'M2Cryp
16c40 74 6f 2e 68 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 to.httpslib.HTTPSConnection.clos
16c60 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 63 6f 6e 6e 65 63 74 28 29 20 28 4d 32 43 72 79 70 e.h'Nt.(j.....4connect().(M2Cryp
16c80 74 6f 2e 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 6d 65 74 68 to.httpslib.HTTPSConnection.meth
16ca0 6f 64 29 94 8c 29 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 od)..)M2Crypto.httpslib.HTTPSCon
16cc0 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3a 64 65 66 nection.connect.h'Nt.(j.....:def
16ce0 61 75 6c 74 5f 70 6f 72 74 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 54 54 ault_port.(M2Crypto.httpslib.HTT
16d00 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 61 74 74 72 69 62 75 74 65 29 94 8c 2e 4d 32 43 72 79 70 PSConnection.attribute)...M2Cryp
16d20 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 64 65 66 61 to.httpslib.HTTPSConnection.defa
16d40 75 6c 74 5f 70 6f 72 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 67 65 74 5f 73 65 73 73 69 6f ult_port.h'Nt.(j.....8get_sessio
16d60 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
16d80 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c ection.method)..-M2Crypto.httpsl
16da0 69 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 68 ib.HTTPSConnection.get_session.h
16dc0 27 4e 74 94 28 6a c0 12 00 00 8c 38 73 65 74 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 'Nt.(j.....8set_session().(M2Cry
16de0 70 74 6f 2e 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 6d 65 74 pto.httpslib.HTTPSConnection.met
16e00 68 6f 64 29 94 8c 2d 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 hod)..-M2Crypto.httpslib.HTTPSCo
16e20 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 nnection.set_session.h'Nt.(j....
16e40 8c 31 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e .1ProxyHTTPSConnection.(class.in
16e60 20 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e 68 .M2Crypto.httpslib)..&M2Crypto.h
16e80 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 94 68 27 4e ttpslib.ProxyHTTPSConnection.h'N
16ea0 74 94 28 6a c0 12 00 00 8c 39 63 6f 6e 6e 65 63 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 t.(j.....9connect().(M2Crypto.ht
16ec0 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 65 74 68 tpslib.ProxyHTTPSConnection.meth
16ee0 6f 64 29 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 54 54 od)...M2Crypto.httpslib.ProxyHTT
16f00 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 PSConnection.connect.h'Nt.(j....
16f20 8c 3c 65 6e 64 68 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 .<endheaders().(M2Crypto.httpsli
16f40 62 2e 50 72 6f 78 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 8c b.ProxyHTTPSConnection.method)..
16f60 31 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 54 50 53 43 6f 6e 1M2Crypto.httpslib.ProxyHTTPSCon
16f80 6e 65 63 74 69 6f 6e 2e 65 6e 64 68 65 61 64 65 72 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b nection.endheaders.h'Nt.(j.....;
16fa0 70 75 74 68 65 61 64 65 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 putheader().(M2Crypto.httpslib.P
16fc0 72 6f 78 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 8c 30 4d 32 roxyHTTPSConnection.method)..0M2
16fe0 43 72 79 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 Crypto.httpslib.ProxyHTTPSConnec
17000 74 69 6f 6e 2e 70 75 74 68 65 61 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3c 70 75 74 72 tion.putheader.h'Nt.(j.....<putr
17020 65 71 75 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 equest().(M2Crypto.httpslib.Prox
17040 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 8c 31 4d 32 43 72 79 yHTTPSConnection.method)..1M2Cry
17060 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
17080 6e 2e 70 75 74 72 65 71 75 65 73 74 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 13 6d 6f 64 75 6c 65 n.putrequest.h'Nt.(j......module
170a0 3b 20 4d 32 43 72 79 70 74 6f 2e 6d 32 94 8c 12 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e ;.M2Crypto.m2...module-M2Crypto.
170c0 6d 32 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 19 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f m2.h'Nt.(j......module;.M2Crypto
170e0 2e 6d 32 63 72 79 70 74 6f 94 8c 18 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 63 72 .m2crypto...module-M2Crypto.m2cr
17100 79 70 74 6f 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 19 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 ypto.h'Nt.(j......module;.M2Cryp
17120 74 6f 2e 6d 32 75 72 6c 6c 69 62 94 8c 18 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 to.m2urllib...module-M2Crypto.m2
17140 75 72 6c 6c 69 62 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6f 70 65 6e 5f 68 74 74 70 73 28 29 urllib.h'Nt.(j.....*open_https()
17160 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 69 62 29 94 8c .(in.module.M2Crypto.m2urllib)..
17180 1c 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 2e 6f 70 65 6e 5f 68 74 74 70 73 94 68 27 .M2Crypto.m2urllib.open_https.h'
171a0 4e 74 94 28 6a b9 12 00 00 8c 1a 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 Nt.(j......module;.M2Crypto.m2ur
171c0 6c 6c 69 62 32 94 8c 19 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 llib2...module-M2Crypto.m2urllib
171e0 32 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 48 54 54 50 53 48 61 6e 64 6c 65 72 20 28 63 6c 61 2.h'Nt.(j.....*HTTPSHandler.(cla
17200 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 29 94 8c 1f 4d 32 43 72 ss.in.M2Crypto.m2urllib2)...M2Cr
17220 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 68 27 4e 74 ypto.m2urllib2.HTTPSHandler.h'Nt
17240 94 28 6a c0 12 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 .(j.....5https_open().(M2Crypto.
17260 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 68 6f 64 29 94 8c m2urllib2.HTTPSHandler.method)..
17280 2a 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 *M2Crypto.m2urllib2.HTTPSHandler
172a0 2e 68 74 74 70 73 5f 6f 70 65 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 68 74 74 70 73 5f 72 .https_open.h'Nt.(j.....8https_r
172c0 65 71 75 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 2e 48 54 54 equest().(M2Crypto.m2urllib2.HTT
172e0 50 53 48 61 6e 64 6c 65 72 20 6d 65 74 68 6f 64 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 PSHandler.method)..-M2Crypto.m2u
17300 72 6c 6c 69 62 32 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 rllib2.HTTPSHandler.https_reques
17320 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 29 20 28 69 t.h'Nt.(j.....-build_opener().(i
17340 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 29 94 8c 1f 4d n.module.M2Crypto.m2urllib2)...M
17360 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 2e 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 68 2Crypto.m2urllib2.build_opener.h
17380 27 4e 74 94 28 6a b9 12 00 00 8c 1c 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 6d 32 78 'Nt.(j......module;.M2Crypto.m2x
173a0 6d 6c 72 70 63 6c 69 62 94 8c 1b 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c mlrpclib...module-M2Crypto.m2xml
173c0 72 70 63 6c 69 62 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 53 53 4c 5f 54 72 61 6e 73 70 6f 72 rpclib.h'Nt.(j.....-SSL_Transpor
173e0 74 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 t.(class.in.M2Crypto.m2xmlrpclib
17400 29 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 61 ).."M2Crypto.m2xmlrpclib.SSL_Tra
17420 6e 73 70 6f 72 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 72 65 71 75 65 73 74 28 29 20 28 4d nsport.h'Nt.(j.....5request().(M
17440 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 61 6e 73 70 6f 72 2Crypto.m2xmlrpclib.SSL_Transpor
17460 74 20 6d 65 74 68 6f 64 29 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 t.method)..*M2Crypto.m2xmlrpclib
17480 2e 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 2e 72 65 71 75 65 73 74 94 68 27 4e 74 94 28 6a c0 12 .SSL_Transport.request.h'Nt.(j..
174a0 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 6d 6c 72 70 ...9user_agent.(M2Crypto.m2xmlrp
174c0 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 29 94 8c 2d clib.SSL_Transport.attribute)..-
174e0 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 61 6e 73 70 6f M2Crypto.m2xmlrpclib.SSL_Transpo
17500 72 74 2e 75 73 65 72 5f 61 67 65 6e 74 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 1a 6d 6f 64 75 6c rt.user_agent.h'Nt.(j......modul
17520 65 3b 20 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 94 8c 19 6d 6f 64 75 6c 65 2d 4d e;.M2Crypto.threading...module-M
17540 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 28 63 2Crypto.threading.h'Nt.(j.....(c
17560 6c 65 61 6e 75 70 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 leanup().(in.module.M2Crypto.thr
17580 65 61 64 69 6e 67 29 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 2e 63 6c 65 eading)...M2Crypto.threading.cle
175a0 61 6e 75 70 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 69 6e 69 74 28 29 20 28 69 6e 20 6d 6f 64 anup.h'Nt.(j.....%init().(in.mod
175c0 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 29 94 8c 17 4d 32 43 72 79 70 ule.M2Crypto.threading)...M2Cryp
175e0 74 6f 2e 74 68 72 65 61 64 69 6e 67 2e 69 6e 69 74 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 15 6d to.threading.init.h'Nt.(j......m
17600 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 94 8c 14 6d 6f 64 75 6c 65 2d 4d 32 odule;.M2Crypto.util...module-M2
17620 43 72 79 70 74 6f 2e 75 74 69 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 09 55 74 69 6c 45 72 72 Crypto.util.h'Nt.(j......UtilErr
17640 6f 72 94 8c 17 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 55 74 69 6c 45 72 72 6f 72 94 68 27 4e or...M2Crypto.util.UtilError.h'N
17660 74 94 28 6a c0 12 00 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 t.(j.....&bin_to_hex().(in.modul
17680 65 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c e.M2Crypto.util)...M2Crypto.util
176a0 2e 62 69 6e 5f 74 6f 5f 68 65 78 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 67 65 6e 70 61 72 61 .bin_to_hex.h'Nt.(j.....-genpara
176c0 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 70 74 6f m_callback().(in.module.M2Crypto
176e0 2e 75 74 69 6c 29 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 67 65 6e 70 61 72 61 6d 5f .util)...M2Crypto.util.genparam_
17700 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 6e 6f 5f 70 61 73 73 70 68 72 callback.h'Nt.(j.....2no_passphr
17720 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 79 70 ase_callback().(in.module.M2Cryp
17740 74 6f 2e 75 74 69 6c 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 6e 6f 5f 70 61 73 73 to.util)..$M2Crypto.util.no_pass
17760 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 6f 63 74 phrase_callback.h'Nt.(j.....'oct
17780 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 74 6f 2e 75 x_to_num().(in.module.M2Crypto.u
177a0 74 69 6c 29 94 8c 19 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 6f 63 74 78 5f 74 6f 5f 6e 75 6d til)...M2Crypto.util.octx_to_num
177c0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 .h'Nt.(j...../passphrase_callbac
177e0 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 94 8c 21 k().(in.module.M2Crypto.util)..!
17800 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 61 6c 6c 62 61 63 M2Crypto.util.passphrase_callbac
17820 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 70 6b 63 73 35 5f 70 61 64 28 29 20 28 69 6e 20 6d k.h'Nt.(j.....%pkcs5_pad().(in.m
17840 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 29 94 8c 17 4d 32 43 72 79 70 74 6f 2e odule.M2Crypto.util)...M2Crypto.
17860 75 74 69 6c 2e 70 6b 63 73 35 5f 70 61 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 70 6b 63 73 util.pkcs5_pad.h'Nt.(j.....%pkcs
17880 37 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 6c 7_pad().(in.module.M2Crypto.util
178a0 29 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 68 27 4e 74 )...M2Crypto.util.pkcs7_pad.h'Nt
178c0 94 28 6a c0 12 00 00 8c 33 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b .(j.....3quiet_genparam_callback
178e0 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 94 8c 25 4d ().(in.module.M2Crypto.util)..%M
17900 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 2Crypto.util.quiet_genparam_call
17920 62 61 63 6b 94 68 27 4e 74 94 65 6a 5c 02 00 00 5d 94 28 28 6a b9 12 00 00 8c 14 6d 6f 64 75 6c back.h'Nt.ej\...].((j......modul
17940 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 8c 13 6d 6f 64 75 6c 65 2d 4d 32 43 72 79 70 74 e;.M2Crypto.SSL...module-M2Crypt
17960 6f 2e 53 53 4c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 08 53 53 4c 45 72 72 6f 72 94 8c 15 4d 32 o.SSL.h'Nt.(j......SSLError...M2
17980 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c Crypto.SSL.SSLError.h'Nt.(j.....
179a0 0f 53 53 4c 54 69 6d 65 6f 75 74 45 72 72 6f 72 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e .SSLTimeoutError...M2Crypto.SSL.
179c0 53 53 4c 54 69 6d 65 6f 75 74 45 72 72 6f 72 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 1c 6d 6f 64 SSLTimeoutError.h'Nt.(j......mod
179e0 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 8c 1b 6d 6f 64 75 ule;.M2Crypto.SSL.Checker...modu
17a00 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 94 28 6a c0 le-M2Crypto.SSL.Checker.h'Nt.(j.
17a20 12 00 00 8c 27 43 68 65 63 6b 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e ....'Checker.(class.in.M2Crypto.
17a40 53 53 4c 2e 43 68 65 63 6b 65 72 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 SSL.Checker)...M2Crypto.SSL.Chec
17a60 6b 65 72 2e 43 68 65 63 6b 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 6e 75 6d 65 72 69 63 ker.Checker.h'Nt.(j.....7numeric
17a80 49 70 4d 61 74 63 68 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 43 68 IpMatch.(M2Crypto.SSL.Checker.Ch
17aa0 65 63 6b 65 72 20 61 74 74 72 69 62 75 74 65 29 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e ecker.attribute)..+M2Crypto.SSL.
17ac0 43 68 65 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 68 Checker.Checker.numericIpMatch.h
17ae0 27 4e 74 94 28 6a c0 12 00 00 8c 0d 4e 6f 43 65 72 74 69 66 69 63 61 74 65 94 8c 22 4d 32 43 72 'Nt.(j......NoCertificate.."M2Cr
17b00 79 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 68 ypto.SSL.Checker.NoCertificate.h
17b20 27 4e 74 94 28 6a c0 12 00 00 8c 14 53 53 4c 56 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 'Nt.(j......SSLVerificationError
17b40 94 8c 29 4d 32 43 72 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 ..)M2Crypto.SSL.Checker.SSLVerif
17b60 69 63 61 74 69 6f 6e 45 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 10 57 72 6f 6e 67 43 icationError.h'Nt.(j......WrongC
17b80 65 72 74 69 66 69 63 61 74 65 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 ertificate..%M2Crypto.SSL.Checke
17ba0 72 2e 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 09 r.WrongCertificate.h'Nt.(j......
17bc0 57 72 6f 6e 67 48 6f 73 74 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 WrongHost...M2Crypto.SSL.Checker
17be0 2e 57 72 6f 6e 67 48 6f 73 74 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 1b 6d 6f 64 75 6c 65 3b 20 .WrongHost.h'Nt.(j......module;.
17c00 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 8c 1a 6d 6f 64 75 6c 65 2d 4d 32 43 M2Crypto.SSL.Cipher...module-M2C
17c20 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 25 43 69 rypto.SSL.Cipher.h'Nt.(j.....%Ci
17c40 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 53 4c 2e 43 69 70 68 pher.(class.in.M2Crypto.SSL.Ciph
17c60 65 72 29 94 8c 1a 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 er)...M2Crypto.SSL.Cipher.Cipher
17c80 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2a 6e 61 6d 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 .h'Nt.(j.....*name().(M2Crypto.S
17ca0 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 8c 1f 4d 32 43 72 79 SL.Cipher.Cipher.method)...M2Cry
17cc0 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 68 27 4e 74 94 pto.SSL.Cipher.Cipher.name.h'Nt.
17ce0 28 6a c0 12 00 00 8c 2d 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e (j.....-version().(M2Crypto.SSL.
17d00 43 69 70 68 65 72 2e 43 69 70 68 65 72 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f Cipher.Cipher.method).."M2Crypto
17d20 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 2e 76 65 72 73 69 6f 6e 94 68 27 4e 74 94 .SSL.Cipher.Cipher.version.h'Nt.
17d40 28 6a c0 12 00 00 8c 2b 43 69 70 68 65 72 5f 53 74 61 63 6b 20 28 63 6c 61 73 73 20 69 6e 20 4d (j.....+Cipher_Stack.(class.in.M
17d60 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 29 94 8c 20 4d 32 43 72 79 70 74 6f 2e 53 2Crypto.SSL.Cipher)...M2Crypto.S
17d80 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 5f 53 74 61 63 6b 94 68 27 4e 74 94 28 6a b9 12 SL.Cipher.Cipher_Stack.h'Nt.(j..
17da0 00 00 8c 1f 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 ....module;.M2Crypto.SSL.Connect
17dc0 69 6f 6e 94 8c 1e 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 ion...module-M2Crypto.SSL.Connec
17de0 74 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2d 43 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 6c tion.h'Nt.(j.....-Connection.(cl
17e00 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 29 94 ass.in.M2Crypto.SSL.Connection).
17e20 8c 22 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
17e40 74 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 61 63 63 65 70 74 28 29 20 28 4d 32 43 72 tion.h'Nt.(j.....4accept().(M2Cr
17e60 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
17e80 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e ethod)..)M2Crypto.SSL.Connection
17ea0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 .Connection.accept.h'Nt.(j.....8
17ec0 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 6e 6e 65 accept_ssl().(M2Crypto.SSL.Conne
17ee0 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 8c 2d 4d 32 43 72 79 ction.Connection.method)..-M2Cry
17f00 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 61 63 pto.SSL.Connection.Connection.ac
17f20 63 65 70 74 5f 73 73 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 62 69 6e 64 28 29 20 28 4d 32 cept_ssl.h'Nt.(j.....2bind().(M2
17f40 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
17f60 20 6d 65 74 68 6f 64 29 94 8c 27 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
17f80 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 62 69 6e 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 on.Connection.bind.h'Nt.(j.....3
17fa0 63 6c 65 61 72 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 clear().(M2Crypto.SSL.Connection
17fc0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 .Connection.method)..(M2Crypto.S
17fe0 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 63 6c 65 61 72 94 68 SL.Connection.Connection.clear.h
18000 27 4e 74 94 28 6a c0 12 00 00 8c 33 63 6c 6f 73 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 'Nt.(j.....3close().(M2Crypto.SS
18020 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).
18040 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 43 6f 6e 6e 65 63 .(M2Crypto.SSL.Connection.Connec
18060 74 69 6f 6e 2e 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 63 6f 6e 6e 65 63 74 28 tion.close.h'Nt.(j.....5connect(
18080 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
180a0 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ction.method)..*M2Crypto.SSL.Con
180c0 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 68 27 4e 74 94 nection.Connection.connect.h'Nt.
180e0 28 6a c0 12 00 00 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 (j.....9connect_ssl().(M2Crypto.
18100 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
18120 29 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
18140 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 ection.connect_ssl.h'Nt.(j.....4
18160 66 69 6c 65 6e 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 fileno().(M2Crypto.SSL.Connectio
18180 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e n.Connection.method)..)M2Crypto.
181a0 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 66 69 6c 65 6e 6f SSL.Connection.Connection.fileno
181c0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 67 65 74 5f 63 69 70 68 65 72 28 29 20 28 4d 32 43 72 .h'Nt.(j.....8get_cipher().(M2Cr
181e0 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
18200 65 74 68 6f 64 29 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 6e ethod)..-M2Crypto.SSL.Connection
18220 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 94 68 27 4e 74 94 28 6a c0 12 .Connection.get_cipher.h'Nt.(j..
18240 00 00 8c 3d 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 ...=get_cipher_list().(M2Crypto.
18260 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
18280 29 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 6e 2e 43 6f 6e 6e )..2M2Crypto.SSL.Connection.Conn
182a0 65 63 74 69 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 68 27 4e 74 94 28 6a c0 12 ection.get_cipher_list.h'Nt.(j..
182c0 00 00 8c 39 67 65 74 5f 63 69 70 68 65 72 73 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e ...9get_ciphers().(M2Crypto.SSL.
182e0 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 8c 2e Connection.Connection.method)...
18300 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
18320 6f 6e 2e 67 65 74 5f 63 69 70 68 65 72 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 67 65 74 5f on.get_ciphers.h'Nt.(j.....9get_
18340 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
18360 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 6f on.Connection.method)...M2Crypto
18380 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 67 65 74 5f 63 .SSL.Connection.Connection.get_c
183a0 6f 6e 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 49 67 65 74 5f 64 65 66 61 75 6c 74 5f ontext.h'Nt.(j.....Iget_default_
183c0 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 2e session_timeout().(M2Crypto.SSL.
183e0 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 8c 3e Connection.Connection.method)..>
18400 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
18420 6f 6e 2e 67 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 68 on.get_default_session_timeout.h
18440 27 4e 74 94 28 6a c0 12 00 00 8c 3b 67 65 74 5f 70 65 65 72 5f 63 65 72 74 28 29 20 28 4d 32 43 'Nt.(j.....;get_peer_cert().(M2C
18460 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.
18480 6d 65 74 68 6f 64 29 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f method)..0M2Crypto.SSL.Connectio
184a0 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 70 65 65 72 5f 63 65 72 74 94 68 27 4e 74 94 n.Connection.get_peer_cert.h'Nt.
184c0 28 6a c0 12 00 00 8c 41 67 65 74 5f 70 65 65 72 5f 63 65 72 74 5f 63 68 61 69 6e 28 29 20 28 4d (j.....Aget_peer_cert_chain().(M
184e0 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
18500 6e 20 6d 65 74 68 6f 64 29 94 8c 36 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 n.method)..6M2Crypto.SSL.Connect
18520 69 6f 6e 2e 43 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 ion.Connection.get_peer_cert_cha
18540 69 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 67 65 74 5f 73 65 73 73 69 6f 6e 28 29 20 28 4d in.h'Nt.(j.....9get_session().(M
18560 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
18580 6e 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 n.method)...M2Crypto.SSL.Connect
185a0 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 68 27 4e 74 94 ion.Connection.get_session.h'Nt.
185c0 28 6a c0 12 00 00 8c 3a 67 65 74 5f 73 68 75 74 64 6f 77 6e 28 29 20 28 4d 32 43 72 79 70 74 6f (j.....:get_shutdown().(M2Crypto
185e0 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
18600 64 29 94 8c 2f 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 d)../M2Crypto.SSL.Connection.Con
18620 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 73 68 75 74 64 6f 77 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 nection.get_shutdown.h'Nt.(j....
18640 8c 45 67 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 .Eget_socket_read_timeout().(M2C
18660 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.
18680 6d 65 74 68 6f 64 29 94 8c 3a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f method)..:M2Crypto.SSL.Connectio
186a0 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 65 61 64 5f 74 69 6d n.Connection.get_socket_read_tim
186c0 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 46 67 65 74 5f 73 6f 63 6b 65 74 5f 77 72 69 eout.h'Nt.(j.....Fget_socket_wri
186e0 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 43 6f 6e 6e 65 te_timeout().(M2Crypto.SSL.Conne
18700 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 8c 3b 4d 32 43 72 79 ction.Connection.method)..;M2Cry
18720 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 67 65 pto.SSL.Connection.Connection.ge
18740 74 5f 73 6f 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 t_socket_write_timeout.h'Nt.(j..
18760 00 00 8c 37 67 65 74 5f 73 74 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ...7get_state().(M2Crypto.SSL.Co
18780 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 8c 2c 4d 32 nnection.Connection.method)..,M2
187a0 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
187c0 2e 67 65 74 5f 73 74 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3e 67 65 74 5f 76 65 72 69 .get_state.h'Nt.(j.....>get_veri
187e0 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 63 74 fy_depth().(M2Crypto.SSL.Connect
18800 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 33 4d 32 43 72 79 70 74 ion.Connection.method)..3M2Crypt
18820 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 67 65 74 5f o.SSL.Connection.Connection.get_
18840 76 65 72 69 66 79 5f 64 65 70 74 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3d 67 65 74 5f 76 65 verify_depth.h'Nt.(j.....=get_ve
18860 72 69 66 79 5f 6d 6f 64 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 rify_mode().(M2Crypto.SSL.Connec
18880 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 32 4d 32 43 72 79 70 tion.Connection.method)..2M2Cryp
188a0 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 67 65 74 to.SSL.Connection.Connection.get
188c0 5f 76 65 72 69 66 79 5f 6d 6f 64 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3f 67 65 74 5f 76 65 _verify_mode.h'Nt.(j.....?get_ve
188e0 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 6e rify_result().(M2Crypto.SSL.Conn
18900 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 8c 34 4d 32 43 72 ection.Connection.method)..4M2Cr
18920 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 67 ypto.SSL.Connection.Connection.g
18940 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 67 65 et_verify_result.h'Nt.(j.....9ge
18960 74 5f 76 65 72 73 69 6f 6e 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 t_version().(M2Crypto.SSL.Connec
18980 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 tion.Connection.method)...M2Cryp
189a0 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 67 65 74 to.SSL.Connection.Connection.get
189c0 5f 76 65 72 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 67 65 74 70 65 65 72 6e 61 6d _version.h'Nt.(j.....9getpeernam
189e0 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 43 6f 6e e().(M2Crypto.SSL.Connection.Con
18a00 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 nection.method)...M2Crypto.SSL.C
18a20 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 70 65 65 72 6e 61 6d 65 onnection.Connection.getpeername
18a40 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 67 65 74 73 6f 63 6b 6e 61 6d 65 28 29 20 28 4d 32 43 .h'Nt.(j.....9getsockname().(M2C
18a60 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.
18a80 6d 65 74 68 6f 64 29 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 method)...M2Crypto.SSL.Connectio
18aa0 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 73 6f 63 6b 6e 61 6d 65 94 68 27 4e 74 94 28 6a n.Connection.getsockname.h'Nt.(j
18ac0 c0 12 00 00 8c 38 67 65 74 73 6f 63 6b 6f 70 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c .....8getsockopt().(M2Crypto.SSL
18ae0 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 8c .Connection.Connection.method)..
18b00 2d 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
18b20 69 6f 6e 2e 67 65 74 73 6f 63 6b 6f 70 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 6c 69 73 74 ion.getsockopt.h'Nt.(j.....4list
18b40 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
18b60 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e nnection.method)..)M2Crypto.SSL.
18b80 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6c 69 73 74 65 6e 94 68 27 4e Connection.Connection.listen.h'N
18ba0 74 94 28 6a c0 12 00 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 t.(j.....9m2_bio_free().(M2Crypt
18bc0 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
18be0 6f 64 29 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 od)...M2Crypto.SSL.Connection.Co
18c00 6e 6e 65 63 74 69 6f 6e 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 nnection.m2_bio_free.h'Nt.(j....
18c20 8c 3d 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 .=m2_bio_noclose.(M2Crypto.SSL.C
18c40 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 29 94 onnection.Connection.attribute).
18c60 8c 31 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 .1M2Crypto.SSL.Connection.Connec
18c80 74 69 6f 6e 2e 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c tion.m2_bio_noclose.h'Nt.(j.....
18ca0 39 6d 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 9m2_ssl_free().(M2Crypto.SSL.Con
18cc0 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 8c 2e 4d 32 43 nection.Connection.method)...M2C
18ce0 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.
18d00 6d 32 5f 73 73 6c 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 36 6d 61 6b 65 66 69 6c m2_ssl_free.h'Nt.(j.....6makefil
18d20 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 43 6f 6e e().(M2Crypto.SSL.Connection.Con
18d40 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 nection.method)..+M2Crypto.SSL.C
18d60 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6d 61 6b 65 66 69 6c 65 94 68 27 onnection.Connection.makefile.h'
18d80 4e 74 94 28 6a c0 12 00 00 8c 35 70 65 6e 64 69 6e 67 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 Nt.(j.....5pending().(M2Crypto.S
18da0 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)
18dc0 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
18de0 63 74 69 6f 6e 2e 70 65 6e 64 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 72 65 61 64 28 ction.pending.h'Nt.(j.....2read(
18e00 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
18e20 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ction.method)..'M2Crypto.SSL.Con
18e40 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 61 64 94 68 27 4e 74 94 28 6a c0 nection.Connection.read.h'Nt.(j.
18e60 12 00 00 8c 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 ....2recv().(M2Crypto.SSL.Connec
18e80 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 tion.Connection.method)..'M2Cryp
18ea0 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
18ec0 76 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 72 65 63 76 5f 69 6e 74 6f 28 29 20 28 4d 32 43 72 v.h'Nt.(j.....7recv_into().(M2Cr
18ee0 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
18f00 65 74 68 6f 64 29 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e ethod)..,M2Crypto.SSL.Connection
18f20 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 63 76 5f 69 6e 74 6f 94 68 27 4e 74 94 28 6a c0 12 00 .Connection.recv_into.h'Nt.(j...
18f40 00 8c 39 72 65 6e 65 67 6f 74 69 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 ..9renegotiate().(M2Crypto.SSL.C
18f60 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 8c 2e 4d onnection.Connection.method)...M
18f80 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
18fa0 6e 2e 72 65 6e 65 67 6f 74 69 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 73 65 6e 64 28 n.renegotiate.h'Nt.(j.....2send(
18fc0 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
18fe0 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ction.method)..'M2Crypto.SSL.Con
19000 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 6e 64 94 68 27 4e 74 94 28 6a c0 nection.Connection.send.h'Nt.(j.
19020 12 00 00 8c 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 ....5sendall().(M2Crypto.SSL.Con
19040 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 8c 2a 4d 32 43 nection.Connection.method)..*M2C
19060 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.
19080 73 65 6e 64 61 6c 6c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 47 73 65 72 76 65 72 50 6f 73 74 43 sendall.h'Nt.(j.....GserverPostC
190a0 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 onnectionCheck().(M2Crypto.SSL.C
190c0 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 8c 3c 4d onnection.Connection.method)..<M
190e0 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
19100 6e 2e 73 65 72 76 65 72 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 94 68 27 4e 74 n.serverPostConnectionCheck.h'Nt
19120 94 28 6a c0 12 00 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 .(j.....7set1_host().(M2Crypto.S
19140 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)
19160 94 8c 2c 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
19180 63 74 69 6f 6e 2e 73 65 74 31 5f 68 6f 73 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3e 73 65 74 ction.set1_host.h'Nt.(j.....>set
191a0 5f 61 63 63 65 70 74 5f 73 74 61 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f _accept_state().(M2Crypto.SSL.Co
191c0 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 8c 33 4d 32 nnection.Connection.method)..3M2
191e0 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
19200 2e 73 65 74 5f 61 63 63 65 70 74 5f 73 74 61 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 73 .set_accept_state.h'Nt.(j.....5s
19220 65 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 et_bio().(M2Crypto.SSL.Connectio
19240 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2a 4d 32 43 72 79 70 74 6f 2e n.Connection.method)..*M2Crypto.
19260 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 62 69 SSL.Connection.Connection.set_bi
19280 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3d 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 29 o.h'Nt.(j.....=set_cipher_list()
192a0 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
192c0 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e tion.method)..2M2Crypto.SSL.Conn
192e0 65 63 74 69 6f 6e 2e 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 ection.Connection.set_cipher_lis
19300 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 4d 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 t.h'Nt.(j.....Mset_client_CA_lis
19320 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 6f 2e 53 53 4c 2e 43 t_from_context().(M2Crypto.SSL.C
19340 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 8c 42 4d onnection.Connection.method)..BM
19360 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
19380 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
193a0 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 4a 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 t.h'Nt.(j.....Jset_client_CA_lis
193c0 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 53 4c 2e 43 6f 6e 6e t_from_file().(M2Crypto.SSL.Conn
193e0 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 8c 3f 4d 32 43 72 ection.Connection.method)..?M2Cr
19400 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
19420 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 94 68 27 4e 74 et_client_CA_list_from_file.h'Nt
19440 94 28 6a c0 12 00 00 8c 3f 73 65 74 5f 63 6f 6e 6e 65 63 74 5f 73 74 61 74 65 28 29 20 28 4d 32 .(j.....?set_connect_state().(M2
19460 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
19480 20 6d 65 74 68 6f 64 29 94 8c 34 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 .method)..4M2Crypto.SSL.Connecti
194a0 6f 6e 2e 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 on.Connection.set_connect_state.
194c0 68 27 4e 74 94 28 6a c0 12 00 00 8c 50 73 65 74 5f 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e h'Nt.(j.....Pset_post_connection
194e0 5f 63 68 65 63 6b 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e _check_callback().(M2Crypto.SSL.
19500 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 8c 45 Connection.Connection.method)..E
19520 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
19540 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 6b 5f 63 61 6c on.set_post_connection_check_cal
19560 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 73 65 74 5f 73 65 73 73 69 6f 6e 28 29 lback.h'Nt.(j.....9set_session()
19580 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
195a0 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e tion.method)...M2Crypto.SSL.Conn
195c0 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 68 27 ection.Connection.set_session.h'
195e0 4e 74 94 28 6a c0 12 00 00 8c 40 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 28 29 20 Nt.(j.....@set_session_id_ctx().
19600 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
19620 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 35 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ion.method)..5M2Crypto.SSL.Conne
19640 63 74 69 6f 6e 2e 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 ction.Connection.set_session_id_
19660 63 74 78 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3a 73 65 74 5f 73 68 75 74 64 6f 77 6e 28 29 20 ctx.h'Nt.(j.....:set_shutdown().
19680 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
196a0 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 ion.method)../M2Crypto.SSL.Conne
196c0 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 68 27 ction.Connection.set_shutdown.h'
196e0 4e 74 94 28 6a c0 12 00 00 8c 45 73 65 74 5f 73 6f 63 6b 65 74 5f 72 65 61 64 5f 74 69 6d 65 6f Nt.(j.....Eset_socket_read_timeo
19700 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 6f ut().(M2Crypto.SSL.Connection.Co
19720 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 3a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e nnection.method)..:M2Crypto.SSL.
19740 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 73 6f 63 6b 65 74 Connection.Connection.set_socket
19760 5f 72 65 61 64 5f 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 46 73 65 74 5f 73 _read_timeout.h'Nt.(j.....Fset_s
19780 6f 63 6b 65 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 ocket_write_timeout().(M2Crypto.
197a0 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
197c0 29 94 8c 3b 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
197e0 65 63 74 69 6f 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 ection.set_socket_write_timeout.
19800 68 27 4e 74 94 28 6a c0 12 00 00 8c 40 73 65 74 5f 73 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 28 h'Nt.(j.....@set_ssl_close_flag(
19820 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
19840 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 35 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ction.method)..5M2Crypto.SSL.Con
19860 6e 65 63 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 nection.Connection.set_ssl_close
19880 5f 66 6c 61 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 42 73 65 74 5f 74 6c 73 65 78 74 5f 68 6f _flag.h'Nt.(j.....Bset_tlsext_ho
198a0 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 6e 65 63 74 69 st_name().(M2Crypto.SSL.Connecti
198c0 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 37 4d 32 43 72 79 70 74 6f on.Connection.method)..7M2Crypto
198e0 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 74 .SSL.Connection.Connection.set_t
19900 6c 73 65 78 74 5f 68 6f 73 74 5f 6e 61 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 73 65 74 lsext_host_name.h'Nt.(j.....9set
19920 62 6c 6f 63 6b 69 6e 67 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 blocking().(M2Crypto.SSL.Connect
19940 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 ion.Connection.method)...M2Crypt
19960 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 62 o.SSL.Connection.Connection.setb
19980 6c 6f 63 6b 69 6e 67 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 73 65 74 73 6f 63 6b 6f 70 74 28 locking.h'Nt.(j.....8setsockopt(
199a0 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
199c0 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ction.method)..-M2Crypto.SSL.Con
199e0 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 73 6f 63 6b 6f 70 74 94 68 27 nection.Connection.setsockopt.h'
19a00 4e 74 94 28 6a c0 12 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 Nt.(j.....8settimeout().(M2Crypt
19a20 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
19a40 6f 64 29 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 6e 2e 43 6f od)..-M2Crypto.SSL.Connection.Co
19a60 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c nnection.settimeout.h'Nt.(j.....
19a80 38 73 65 74 75 70 5f 61 64 64 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 8setup_addr().(M2Crypto.SSL.Conn
19aa0 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 8c 2d 4d 32 43 72 ection.Connection.method)..-M2Cr
19ac0 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
19ae0 65 74 75 70 5f 61 64 64 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 73 65 74 75 70 5f 73 73 6c etup_addr.h'Nt.(j.....7setup_ssl
19b00 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
19b20 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ection.method)..,M2Crypto.SSL.Co
19b40 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 75 70 5f 73 73 6c 94 68 27 nnection.Connection.setup_ssl.h'
19b60 4e 74 94 28 6a c0 12 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 Nt.(j.....6shutdown().(M2Crypto.
19b80 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
19ba0 29 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 6e )..+M2Crypto.SSL.Connection.Conn
19bc0 65 63 74 69 6f 6e 2e 73 68 75 74 64 6f 77 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b 73 73 6c ection.shutdown.h'Nt.(j.....;ssl
19be0 5f 67 65 74 5f 65 72 72 6f 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 _get_error().(M2Crypto.SSL.Conne
19c00 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 8c 30 4d 32 43 72 79 ction.Connection.method)..0M2Cry
19c20 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 73 pto.SSL.Connection.Connection.ss
19c40 6c 5f 67 65 74 5f 65 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 76 65 72 69 66 79 5f l_get_error.h'Nt.(j.....7verify_
19c60 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 43 6f ok().(M2Crypto.SSL.Connection.Co
19c80 6e 6e 65 63 74 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e nnection.method)..,M2Crypto.SSL.
19ca0 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 76 65 72 69 66 79 5f 6f 6b 94 Connection.Connection.verify_ok.
19cc0 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 77 72 69 74 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 h'Nt.(j.....3write().(M2Crypto.S
19ce0 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)
19d00 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 43 6f 6e 6e 65 ..(M2Crypto.SSL.Connection.Conne
19d20 63 74 69 6f 6e 2e 77 72 69 74 65 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 1c 6d 6f 64 75 6c 65 3b ction.write.h'Nt.(j......module;
19d40 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 8c 1b 6d 6f 64 75 6c 65 2d 4d .M2Crypto.SSL.Context...module-M
19d60 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2Crypto.SSL.Context.h'Nt.(j.....
19d80 27 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 53 53 4c 2e 'Context.(class.in.M2Crypto.SSL.
19da0 43 6f 6e 74 65 78 74 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e Context)...M2Crypto.SSL.Context.
19dc0 43 6f 6e 74 65 78 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 61 64 64 5f 73 65 73 73 69 6f 6e Context.h'Nt.(j.....3add_session
19de0 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 74 ().(M2Crypto.SSL.Context.Context
19e00 20 6d 65 74 68 6f 64 29 94 8c 28 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.
19e20 43 6f 6e 74 65 78 74 2e 61 64 64 5f 73 65 73 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c Context.add_session.h'Nt.(j.....
19e40 2d 63 6c 6f 73 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 -close().(M2Crypto.SSL.Context.C
19e60 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 22 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ontext.method).."M2Crypto.SSL.Co
19e80 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 63 6c 6f 73 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c ntext.Context.close.h'Nt.(j.....
19ea0 3c 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 29 20 28 4d 32 43 72 79 70 74 <get_allow_unknown_ca().(M2Crypt
19ec0 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 8c 31 o.SSL.Context.Context.method)..1
19ee0 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 67 65 74 M2Crypto.SSL.Context.Context.get
19f00 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 36 67 _allow_unknown_ca.h'Nt.(j.....6g
19f20 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
19f40 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 2b 4d 32 43 72 79 70 74 6f ntext.Context.method)..+M2Crypto
19f60 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 63 65 72 74 5f 73 74 .SSL.Context.Context.get_cert_st
19f80 6f 72 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3e 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 63 ore.h'Nt.(j.....>get_session_cac
19fa0 68 65 5f 6d 6f 64 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 he_mode().(M2Crypto.SSL.Context.
19fc0 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 33 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 Context.method)..3M2Crypto.SSL.C
19fe0 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 63 61 63 68 65 ontext.Context.get_session_cache
1a000 5f 6d 6f 64 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 _mode.h'Nt.(j.....;get_session_t
1a020 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 74 65 78 74 2e 43 imeout().(M2Crypto.SSL.Context.C
1a040 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ontext.method)..0M2Crypto.SSL.Co
1a060 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 6f 75 ntext.Context.get_session_timeou
1a080 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 t.h'Nt.(j.....8get_verify_depth(
1a0a0 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.
1a0c0 6d 65 74 68 6f 64 29 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 method)..-M2Crypto.SSL.Context.C
1a0e0 6f 6e 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 68 27 4e 74 94 28 6a c0 ontext.get_verify_depth.h'Nt.(j.
1a100 12 00 00 8c 37 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 29 20 28 4d 32 43 72 79 70 74 6f ....7get_verify_mode().(M2Crypto
1a120 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 8c 2c 4d .SSL.Context.Context.method)..,M
1a140 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 67 65 74 5f 2Crypto.SSL.Context.Context.get_
1a160 76 65 72 69 66 79 5f 6d 6f 64 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 6c 6f 61 64 5f 63 65 verify_mode.h'Nt.(j.....1load_ce
1a180 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 6e 74 65 rt().(M2Crypto.SSL.Context.Conte
1a1a0 78 74 20 6d 65 74 68 6f 64 29 94 8c 26 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 xt.method)..&M2Crypto.SSL.Contex
1a1c0 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c t.Context.load_cert.h'Nt.(j.....
1a1e0 37 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 7load_cert_chain().(M2Crypto.SSL
1a200 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 8c 2c 4d 32 43 72 79 .Context.Context.method)..,M2Cry
1a220 70 74 6f 2e 53 53 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 pto.SSL.Context.Context.load_cer
1a240 74 5f 63 68 61 69 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 36 6c 6f 61 64 5f 63 6c 69 65 6e 74 t_chain.h'Nt.(j.....6load_client
1a260 5f 43 41 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 _CA().(M2Crypto.SSL.Context.Cont
1a280 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 ext.method)..+M2Crypto.SSL.Conte
1a2a0 78 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 68 27 4e 74 94 28 xt.Context.load_client_CA.h'Nt.(
1a2c0 6a c0 12 00 00 8c 36 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 63 61 28 29 20 28 4d 32 43 72 79 70 74 j.....6load_client_ca().(M2Crypt
1a2e0 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 8c 2b o.SSL.Context.Context.method)..+
1a300 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 6c 6f 61 M2Crypto.SSL.Context.Context.loa
1a320 64 5f 63 6c 69 65 6e 74 5f 63 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 38 6c 6f 61 64 5f 76 65 d_client_ca.h'Nt.(j.....8load_ve
1a340 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 74 65 78 rify_info().(M2Crypto.SSL.Contex
1a360 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c t.Context.method)..-M2Crypto.SSL
1a380 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 69 6e 66 .Context.Context.load_verify_inf
1a3a0 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3d 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 o.h'Nt.(j.....=load_verify_locat
1a3c0 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
1a3e0 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 text.method)..2M2Crypto.SSL.Cont
1a400 65 78 74 2e 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 ext.Context.load_verify_location
1a420 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 6d 32 5f 73 73 6c 5f 63 74 78 5f 66 72 65 65 28 29 s.h'Nt.(j.....7m2_ssl_ctx_free()
1a440 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
1a460 65 74 68 6f 64 29 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f ethod)..,M2Crypto.SSL.Context.Co
1a480 6e 74 65 78 74 2e 6d 32 5f 73 73 6c 5f 63 74 78 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 ntext.m2_ssl_ctx_free.h'Nt.(j...
1a4a0 00 8c 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 ..6remove_session().(M2Crypto.SS
1a4c0 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 8c 2b 4d 32 43 72 L.Context.Context.method)..+M2Cr
1a4e0 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 72 65 6d 6f 76 65 5f ypto.SSL.Context.Context.remove_
1a500 73 65 73 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3c 73 65 74 5f 61 6c 6c 6f 77 5f 75 session.h'Nt.(j.....<set_allow_u
1a520 6e 6b 6e 6f 77 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 nknown_ca().(M2Crypto.SSL.Contex
1a540 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 31 4d 32 43 72 79 70 74 6f 2e 53 53 4c t.Context.method)..1M2Crypto.SSL
1a560 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f .Context.Context.set_allow_unkno
1a580 77 6e 5f 63 61 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 37 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 wn_ca.h'Nt.(j.....7set_cipher_li
1a5a0 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 2e 43 6f 6e 74 65 st().(M2Crypto.SSL.Context.Conte
1a5c0 78 74 20 6d 65 74 68 6f 64 29 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 xt.method)..,M2Crypto.SSL.Contex
1a5e0 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 68 27 4e 74 94 28 t.Context.set_cipher_list.h'Nt.(
1a600 6a c0 12 00 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 j.....Dset_client_CA_list_from_f
1a620 69 6c 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 ile().(M2Crypto.SSL.Context.Cont
1a640 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 39 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 ext.method)..9M2Crypto.SSL.Conte
1a660 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
1a680 6f 6d 5f 66 69 6c 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 40 73 65 74 5f 64 65 66 61 75 6c 74 om_file.h'Nt.(j.....@set_default
1a6a0 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 53 4c 2e 43 6f _verify_paths().(M2Crypto.SSL.Co
1a6c0 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 35 4d 32 43 72 79 70 74 6f ntext.Context.method)..5M2Crypto
1a6e0 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 6c 74 .SSL.Context.Context.set_default
1a700 5f 76 65 72 69 66 79 5f 70 61 74 68 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 39 73 65 74 5f 69 _verify_paths.h'Nt.(j.....9set_i
1a720 6e 66 6f 5f 63 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 nfo_callback().(M2Crypto.SSL.Con
1a740 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e text.Context.method)...M2Crypto.
1a760 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 69 6e 66 6f 5f 63 61 6c SSL.Context.Context.set_info_cal
1a780 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 73 65 74 5f 6f 70 74 69 6f 6e 73 28 29 lback.h'Nt.(j.....3set_options()
1a7a0 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
1a7c0 65 74 68 6f 64 29 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 ethod)..(M2Crypto.SSL.Context.Co
1a7e0 6e 74 65 78 74 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3e 73 ntext.set_options.h'Nt.(j.....>s
1a800 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
1a820 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 8c 33 o.SSL.Context.Context.method)..3
1a840 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 74 M2Crypto.SSL.Context.Context.set
1a860 5f 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c _session_cache_mode.h'Nt.(j.....
1a880 3a 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 28 29 20 28 4d 32 43 72 79 70 74 6f 2e :set_session_id_ctx().(M2Crypto.
1a8a0 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 8c 2f 4d 32 SSL.Context.Context.method)../M2
1a8c0 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
1a8e0 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b 73 65 74 5f 73 ession_id_ctx.h'Nt.(j.....;set_s
1a900 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 2e 43 ession_timeout().(M2Crypto.SSL.C
1a920 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 30 4d 32 43 72 79 70 74 ontext.Context.method)..0M2Crypt
1a940 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 65 73 73 69 6f o.SSL.Context.Context.set_sessio
1a960 6e 5f 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 32 73 65 74 5f 74 6d 70 5f 64 n_timeout.h'Nt.(j.....2set_tmp_d
1a980 68 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 h().(M2Crypto.SSL.Context.Contex
1a9a0 74 20 6d 65 74 68 6f 64 29 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 t.method)..'M2Crypto.SSL.Context
1a9c0 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 68 94 68 27 4e 74 94 28 6a c0 12 00 00 8c .Context.set_tmp_dh.h'Nt.(j.....
1a9e0 3b 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b 28 29 20 28 4d 32 43 72 79 70 74 6f ;set_tmp_dh_callback().(M2Crypto
1aa00 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 8c 30 4d .SSL.Context.Context.method)..0M
1aa20 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 74 5f 2Crypto.SSL.Context.Context.set_
1aa40 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 73 65 74 tmp_dh_callback.h'Nt.(j.....3set
1aa60 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 74 _tmp_rsa().(M2Crypto.SSL.Context
1aa80 2e 43 6f 6e 74 65 78 74 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e .Context.method)..(M2Crypto.SSL.
1aaa0 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 72 73 61 94 68 27 4e 74 Context.Context.set_tmp_rsa.h'Nt
1aac0 94 28 6a c0 12 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 .(j.....<set_tmp_rsa_callback().
1aae0 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
1ab00 74 68 6f 64 29 94 8c 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 thod)..1M2Crypto.SSL.Context.Con
1ab20 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 text.set_tmp_rsa_callback.h'Nt.(
1ab40 6a c0 12 00 00 8c 32 73 65 74 5f 76 65 72 69 66 79 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 j.....2set_verify().(M2Crypto.SS
1ab60 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 8c 27 4d 32 43 72 L.Context.Context.method)..'M2Cr
1ab80 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 76 65 72 ypto.SSL.Context.Context.set_ver
1aba0 69 66 79 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 29 63 74 78 6d 61 70 28 29 20 28 69 6e 20 6d 6f ify.h'Nt.(j.....)ctxmap().(in.mo
1abc0 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 8c 1b 4d 32 43 dule.M2Crypto.SSL.Context)...M2C
1abe0 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 68 27 4e 74 94 28 6a rypto.SSL.Context.ctxmap.h'Nt.(j
1ac00 c0 12 00 00 8c 26 6d 61 70 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e .....&map().(in.module.M2Crypto.
1ac20 53 53 4c 2e 43 6f 6e 74 65 78 74 29 94 8c 18 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 SSL.Context)...M2Crypto.SSL.Cont
1ac40 65 78 74 2e 6d 61 70 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 1e 6d 6f 64 75 6c 65 3b 20 4d 32 43 ext.map.h'Nt.(j......module;.M2C
1ac60 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 94 8c 1d 6d 6f 64 75 6c 65 2d 4d 32 43 rypto.SSL.SSLServer...module-M2C
1ac80 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c rypto.SSL.SSLServer.h'Nt.(j.....
1aca0 32 46 6f 72 6b 69 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 2ForkingSSLServer.(class.in.M2Cr
1acc0 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 29 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 ypto.SSL.SSLServer)..'M2Crypto.S
1ace0 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 46 6f 72 6b 69 6e 67 53 53 4c 53 65 72 76 65 72 94 68 27 SL.SSLServer.ForkingSSLServer.h'
1ad00 4e 74 94 28 6a c0 12 00 00 8c 2b 53 53 4c 53 65 72 76 65 72 20 28 63 6c 61 73 73 20 69 6e 20 4d Nt.(j.....+SSLServer.(class.in.M
1ad20 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 29 94 8c 20 4d 32 43 72 79 70 74 2Crypto.SSL.SSLServer)...M2Crypt
1ad40 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 94 68 27 4e 74 94 28 o.SSL.SSLServer.SSLServer.h'Nt.(
1ad60 6a c0 12 00 00 8c 38 68 61 6e 64 6c 65 5f 65 72 72 6f 72 28 29 20 28 4d 32 43 72 79 70 74 6f 2e j.....8handle_error().(M2Crypto.
1ad80 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 29 94 SSL.SSLServer.SSLServer.method).
1ada0 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 76 .-M2Crypto.SSL.SSLServer.SSLServ
1adc0 65 72 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3a 68 61 6e er.handle_error.h'Nt.(j.....:han
1ade0 64 6c 65 5f 72 65 71 75 65 73 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 dle_request().(M2Crypto.SSL.SSLS
1ae00 65 72 76 65 72 2e 53 53 4c 53 65 72 76 65 72 20 6d 65 74 68 6f 64 29 94 8c 2f 4d 32 43 72 79 70 erver.SSLServer.method)../M2Cryp
1ae20 74 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 2e 68 61 6e 64 6c to.SSL.SSLServer.SSLServer.handl
1ae40 65 5f 72 65 71 75 65 73 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 34 54 68 72 65 61 64 69 6e 67 e_request.h'Nt.(j.....4Threading
1ae60 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 53 4c SSLServer.(class.in.M2Crypto.SSL
1ae80 2e 53 53 4c 53 65 72 76 65 72 29 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 .SSLServer)..)M2Crypto.SSL.SSLSe
1aea0 72 76 65 72 2e 54 68 72 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 94 68 27 4e 74 94 28 6a b9 rver.ThreadingSSLServer.h'Nt.(j.
1aec0 12 00 00 8c 1c 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f .....module;.M2Crypto.SSL.Sessio
1aee0 6e 94 8c 1b 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 n...module-M2Crypto.SSL.Session.
1af00 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 53 65 73 73 69 6f 6e 20 28 63 6c 61 73 73 20 69 6e 20 4d h'Nt.(j.....'Session.(class.in.M
1af20 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 29 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 2Crypto.SSL.Session)...M2Crypto.
1af40 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 94 68 27 4e 74 94 28 6a c0 12 00 00 8c SSL.Session.Session.h'Nt.(j.....
1af60 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 6e 2e .as_der().(M2Crypto.SSL.Session.
1af80 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 Session.method)..#M2Crypto.SSL.S
1afa0 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 61 73 5f 64 65 72 94 68 27 4e 74 94 28 6a c0 12 00 ession.Session.as_der.h'Nt.(j...
1afc0 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 69 ../as_text().(M2Crypto.SSL.Sessi
1afe0 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 24 4d 32 43 72 79 70 74 6f 2e 53 53 on.Session.method)..$M2Crypto.SS
1b000 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 61 73 5f 74 65 78 74 94 68 27 4e 74 94 28 L.Session.Session.as_text.h'Nt.(
1b020 6a c0 12 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 j.....0get_time().(M2Crypto.SSL.
1b040 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 25 4d 32 43 72 79 70 Session.Session.method)..%M2Cryp
1b060 74 6f 2e 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 to.SSL.Session.Session.get_time.
1b080 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 67 65 74 5f 74 69 6d 65 6f 75 74 28 29 20 28 4d 32 43 72 h'Nt.(j.....3get_timeout().(M2Cr
1b0a0 79 70 74 6f 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 ypto.SSL.Session.Session.method)
1b0c0 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 6e 2e ..(M2Crypto.SSL.Session.Session.
1b0e0 67 65 74 5f 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b 6d 32 5f 73 73 6c 5f get_timeout.h'Nt.(j.....;m2_ssl_
1b100 73 65 73 73 69 6f 6e 5f 66 72 65 65 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 session_free().(M2Crypto.SSL.Ses
1b120 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 30 4d 32 43 72 79 70 74 6f 2e sion.Session.method)..0M2Crypto.
1b140 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 6d 32 5f 73 73 6c 5f 73 65 73 73 69 SSL.Session.Session.m2_ssl_sessi
1b160 6f 6e 5f 66 72 65 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 30 73 65 74 5f 74 69 6d 65 28 29 20 on_free.h'Nt.(j.....0set_time().
1b180 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 6e 20 6d 65 (M2Crypto.SSL.Session.Session.me
1b1a0 74 68 6f 64 29 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 thod)..%M2Crypto.SSL.Session.Ses
1b1c0 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 33 73 65 74 5f 74 sion.set_time.h'Nt.(j.....3set_t
1b1e0 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 69 6f 6e 2e 53 imeout().(M2Crypto.SSL.Session.S
1b200 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 ession.method)..(M2Crypto.SSL.Se
1b220 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 ssion.Session.set_timeout.h'Nt.(
1b240 6a c0 12 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 j.....1write_bio().(M2Crypto.SSL
1b260 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 8c 26 4d 32 43 72 79 .Session.Session.method)..&M2Cry
1b280 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 74 65 5f 62 69 pto.SSL.Session.Session.write_bi
1b2a0 6f 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 6c 6f 61 64 5f 73 65 73 73 69 6f 6e 28 29 20 28 69 o.h'Nt.(j...../load_session().(i
1b2c0 6e 20 6d 6f 64 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 8c n.module.M2Crypto.SSL.Session)..
1b2e0 21 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 6c 6f 61 64 5f 73 65 73 73 69 !M2Crypto.SSL.Session.load_sessi
1b300 6f 6e 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 2b 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f on.h'Nt.(j.....+module;.M2Crypto
1b320 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 8c 2a 6d 6f .SSL.TwistedProtocolWrapper..*mo
1b340 64 75 6c 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 dule-M2Crypto.SSL.TwistedProtoco
1b360 6c 57 72 61 70 70 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 41 54 4c 53 50 72 6f 74 6f 63 6f lWrapper.h'Nt.(j.....ATLSProtoco
1b380 6c 57 72 61 70 70 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 lWrapper.(class.in.M2Crypto.SSL.
1b3a0 54 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 8c 36 4d 32 43 72 79 70 TwistedProtocolWrapper)..6M2Cryp
1b3c0 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
1b3e0 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 47 63 6c SProtocolWrapper.h'Nt.(j.....Gcl
1b400 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 6f 74 6f ear().(M2Crypto.SSL.TwistedProto
1b420 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 20 6d 65 colWrapper.TLSProtocolWrapper.me
1b440 74 68 6f 64 29 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 6f 74 thod)..<M2Crypto.SSL.TwistedProt
1b460 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 63 ocolWrapper.TLSProtocolWrapper.c
1b480 6c 65 61 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 50 63 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 73 74 lear.h'Nt.(j.....PconnectionLost
1b4a0 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 6f 74 6f 63 6f 6c ().(M2Crypto.SSL.TwistedProtocol
1b4c0 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 20 6d 65 74 68 6f Wrapper.TLSProtocolWrapper.metho
1b4e0 64 29 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 6f 63 6f d)..EM2Crypto.SSL.TwistedProtoco
1b500 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 63 6f 6e 6e lWrapper.TLSProtocolWrapper.conn
1b520 65 63 74 69 6f 6e 4c 6f 73 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 50 63 6f 6e 6e 65 63 74 69 ectionLost.h'Nt.(j.....Pconnecti
1b540 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 73 74 65 64 50 72 onMade().(M2Crypto.SSL.TwistedPr
1b560 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
1b580 20 6d 65 74 68 6f 64 29 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 .method)..EM2Crypto.SSL.TwistedP
1b5a0 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
1b5c0 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4d 61 64 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 4e 64 61 r.connectionMade.h'Nt.(j.....Nda
1b5e0 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 69 73 74 taReceived().(M2Crypto.SSL.Twist
1b600 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 72 61 edProtocolWrapper.TLSProtocolWra
1b620 70 70 65 72 20 6d 65 74 68 6f 64 29 94 8c 43 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 pper.method)..CM2Crypto.SSL.Twis
1b640 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 72 tedProtocolWrapper.TLSProtocolWr
1b660 61 70 70 65 72 2e 64 61 74 61 52 65 63 65 69 76 65 64 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 50 apper.dataReceived.h'Nt.(j.....P
1b680 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 2e 54 loseConnection().(M2Crypto.SSL.T
1b6a0 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
1b6c0 6c 57 72 61 70 70 65 72 20 6d 65 74 68 6f 64 29 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e lWrapper.method)..EM2Crypto.SSL.
1b6e0 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
1b700 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 68 27 4e 74 94 28 6a olWrapper.loseConnection.h'Nt.(j
1b720 c0 12 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 .....JstartTLS().(M2Crypto.SSL.T
1b740 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
1b760 6c 57 72 61 70 70 65 72 20 6d 65 74 68 6f 64 29 94 8c 3f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e lWrapper.method)..?M2Crypto.SSL.
1b780 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
1b7a0 6f 6c 57 72 61 70 70 65 72 2e 73 74 61 72 74 54 4c 53 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 47 olWrapper.startTLS.h'Nt.(j.....G
1b7c0 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 72 6f write().(M2Crypto.SSL.TwistedPro
1b7e0 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 20 tocolWrapper.TLSProtocolWrapper.
1b800 6d 65 74 68 6f 64 29 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 50 72 method)..<M2Crypto.SSL.TwistedPr
1b820 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
1b840 2e 77 72 69 74 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 4f 77 72 69 74 65 53 65 71 75 65 6e 63 .write.h'Nt.(j.....OwriteSequenc
1b860 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 72 6f 74 6f 63 6f e().(M2Crypto.SSL.TwistedProtoco
1b880 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 20 6d 65 74 68 lWrapper.TLSProtocolWrapper.meth
1b8a0 6f 64 29 94 8c 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 od)..DM2Crypto.SSL.TwistedProtoc
1b8c0 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 77 72 69 olWrapper.TLSProtocolWrapper.wri
1b8e0 74 65 53 65 71 75 65 6e 63 65 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3c 63 6f 6e 6e 65 63 74 53 teSequence.h'Nt.(j.....<connectS
1b900 53 4c 28 29 20 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 SL().(in.module.M2Crypto.SSL.Twi
1b920 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e stedProtocolWrapper)...M2Crypto.
1b940 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 63 6f 6e 6e 65 SSL.TwistedProtocolWrapper.conne
1b960 63 74 53 53 4c 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3c 63 6f 6e 6e 65 63 74 54 43 50 28 29 20 ctSSL.h'Nt.(j.....<connectTCP().
1b980 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
1b9a0 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 29 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 rotocolWrapper)...M2Crypto.SSL.T
1b9c0 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 54 43 50 wistedProtocolWrapper.connectTCP
1b9e0 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3b 6c 69 73 74 65 6e 53 53 4c 28 29 20 28 69 6e 20 6d 6f .h'Nt.(j.....;listenSSL().(in.mo
1ba00 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 6f 63 6f dule.M2Crypto.SSL.TwistedProtoco
1ba20 6c 57 72 61 70 70 65 72 29 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 lWrapper)..-M2Crypto.SSL.Twisted
1ba40 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c 69 73 74 65 6e 53 53 4c 94 68 27 4e 74 94 28 ProtocolWrapper.listenSSL.h'Nt.(
1ba60 6a c0 12 00 00 8c 3b 6c 69 73 74 65 6e 54 43 50 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 j.....;listenTCP().(in.module.M2
1ba80 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 70 65 Crypto.SSL.TwistedProtocolWrappe
1baa0 72 29 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 63 6f r)..-M2Crypto.SSL.TwistedProtoco
1bac0 6c 57 72 61 70 70 65 72 2e 6c 69 73 74 65 6e 54 43 50 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 17 lWrapper.listenTCP.h'Nt.(j......
1bae0 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 8c 16 6d 6f 64 75 6c 65 module;.M2Crypto.SSL.cb...module
1bb00 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 2f 73 73 -M2Crypto.SSL.cb.h'Nt.(j...../ss
1bb20 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 43 l_info_callback().(in.module.M2C
1bb40 72 79 70 74 6f 2e 53 53 4c 2e 63 62 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 2e rypto.SSL.cb)..!M2Crypto.SSL.cb.
1bb60 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 31 73 ssl_info_callback.h'Nt.(j.....1s
1bb80 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 6d 6f 64 75 6c 65 20 sl_verify_callback().(in.module.
1bba0 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 29 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e M2Crypto.SSL.cb)..#M2Crypto.SSL.
1bbc0 63 62 2e 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 94 68 27 4e 74 94 28 6a c0 12 cb.ssl_verify_callback.h'Nt.(j..
1bbe0 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 6c 6f 77 5f 75 6e ...Bssl_verify_callback_allow_un
1bc00 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 79 70 74 6f 2e 53 known_ca().(in.module.M2Crypto.S
1bc20 53 4c 2e 63 62 29 94 8c 34 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 2e 73 73 6c 5f 76 65 72 SL.cb)..4M2Crypto.SSL.cb.ssl_ver
1bc40 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 68 27 ify_callback_allow_unknown_ca.h'
1bc60 4e 74 94 28 6a c0 12 00 00 8c 36 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 5f 73 Nt.(j.....6ssl_verify_callback_s
1bc80 74 75 62 28 29 20 28 69 6e 20 6d 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 tub().(in.module.M2Crypto.SSL.cb
1bca0 29 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 2e 73 73 6c 5f 76 65 72 69 66 79 5f 63 )..(M2Crypto.SSL.cb.ssl_verify_c
1bcc0 61 6c 6c 62 61 63 6b 5f 73 74 75 62 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 23 6d 6f 64 75 6c 65 allback_stub.h'Nt.(j.....#module
1bce0 3b 20 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 94 8c 22 ;.M2Crypto.SSL.ssl_dispatcher.."
1bd00 6d 6f 64 75 6c 65 2d 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 module-M2Crypto.SSL.ssl_dispatch
1bd20 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 35 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 20 28 er.h'Nt.(j.....5ssl_dispatcher.(
1bd40 63 6c 61 73 73 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 class.in.M2Crypto.SSL.ssl_dispat
1bd60 63 68 65 72 29 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 cher)..*M2Crypto.SSL.ssl_dispatc
1bd80 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 3d her.ssl_dispatcher.h'Nt.(j.....=
1bda0 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
1bdc0 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 8c 32 atcher.ssl_dispatcher.method)..2
1bde0 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_
1be00 64 69 73 70 61 74 63 68 65 72 2e 63 6f 6e 6e 65 63 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 43 dispatcher.connect.h'Nt.(j.....C
1be20 63 72 65 61 74 65 5f 73 6f 63 6b 65 74 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 create_socket().(M2Crypto.SSL.ss
1be40 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 20 6d 65 74 68 l_dispatcher.ssl_dispatcher.meth
1be60 6f 64 29 94 8c 38 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 od)..8M2Crypto.SSL.ssl_dispatche
1be80 72 2e 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 68 r.ssl_dispatcher.create_socket.h
1bea0 27 4e 74 94 28 6a c0 12 00 00 8c 3a 72 65 63 76 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 'Nt.(j.....:recv().(M2Crypto.SSL
1bec0 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 20 6d .ssl_dispatcher.ssl_dispatcher.m
1bee0 65 74 68 6f 64 29 94 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 ethod)../M2Crypto.SSL.ssl_dispat
1bf00 63 68 65 72 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 72 65 63 76 94 68 27 4e 74 94 28 6a cher.ssl_dispatcher.recv.h'Nt.(j
1bf20 c0 12 00 00 8c 3a 73 65 6e 64 28 29 20 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 .....:send().(M2Crypto.SSL.ssl_d
1bf40 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)
1bf60 94 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 ../M2Crypto.SSL.ssl_dispatcher.s
1bf80 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 65 6e 64 94 68 27 4e 74 94 28 6a b9 12 00 00 8c 1c sl_dispatcher.send.h'Nt.(j......
1bfa0 6d 6f 64 75 6c 65 3b 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 8c 1b 6d module;.M2Crypto.SSL.timeout...m
1bfc0 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 94 odule-M2Crypto.SSL.timeout.h'Nt.
1bfe0 28 6a c0 12 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 65 (j......struct_size().(in.module
1c000 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 29 94 8c 20 4d 32 43 72 79 70 74 .M2Crypto.SSL.timeout)...M2Crypt
1c020 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e 73 74 72 75 63 74 5f 73 69 7a 65 94 68 27 4e 74 94 28 o.SSL.timeout.struct_size.h'Nt.(
1c040 6a c0 12 00 00 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 j.....4struct_to_timeout().(in.m
1c060 6f 64 75 6c 65 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 29 94 8c 26 4d 32 odule.M2Crypto.SSL.timeout)..&M2
1c080 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 74 6f 5f 74 69 6d Crypto.SSL.timeout.struct_to_tim
1c0a0 65 6f 75 74 94 68 27 4e 74 94 28 6a c0 12 00 00 8c 27 74 69 6d 65 6f 75 74 20 28 63 6c 61 73 73 eout.h'Nt.(j.....'timeout.(class
1c0c0 20 69 6e 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 29 94 8c 1c 4d 32 43 72 .in.M2Crypto.SSL.timeout)...M2Cr
1c0e0 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e 74 69 6d 65 6f 75 74 94 68 27 4e 74 94 28 6a ypto.SSL.timeout.timeout.h'Nt.(j
1c100 c0 12 00 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 .....,pack().(M2Crypto.SSL.timeo
1c120 75 74 2e 74 69 6d 65 6f 75 74 20 6d 65 74 68 6f 64 29 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 53 ut.timeout.method)..!M2Crypto.SS
1c140 4c 2e 74 69 6d 65 6f 75 74 2e 74 69 6d 65 6f 75 74 2e 70 61 63 6b 94 68 27 4e 74 94 65 6a 5b 02 L.timeout.timeout.pack.h'Nt.ej[.
1c160 00 00 5d 94 6a 5a 02 00 00 5d 94 6a 5d 02 00 00 5d 94 6a 5e 02 00 00 5d 94 6a 5f 02 00 00 5d 94 ..].jZ...].j]...].j^...].j_...].
1c180 75 75 8c 02 6a 73 94 7d 94 28 6a 9e 12 00 00 7d 94 8c 07 6d 6f 64 75 6c 65 73 94 7d 94 68 26 4b uu..js.}.(j....}...modules.}.h&K
1c1a0 00 75 8c 04 6d 61 74 68 94 7d 94 28 6a 9e 12 00 00 7d 94 8c 0d 68 61 73 5f 65 71 75 61 74 69 6f .u..math.}.(j....}...has_equatio
1c1c0 6e 73 94 7d 94 28 6a 60 02 00 00 89 6a 5c 02 00 00 89 6a 5b 02 00 00 89 6a 5a 02 00 00 89 6a 5d ns.}.(j`....j\....j[....jZ....j]
1c1e0 02 00 00 89 6a 5e 02 00 00 89 6a 5f 02 00 00 89 75 68 26 4b 00 75 68 9f 7d 94 28 6a 9e 12 00 00 ....j^....j_....uh&K.uh.}.(j....
1c200 7d 94 28 8c 11 4d 32 43 72 79 70 74 6f 2e 5f 5f 69 6e 69 74 5f 5f 94 8c 15 73 70 68 69 6e 78 2e }.(..M2Crypto.__init__...sphinx.
1c220 64 6f 6d 61 69 6e 73 2e 70 79 74 68 6f 6e 94 8c 0b 4f 62 6a 65 63 74 45 6e 74 72 79 94 93 94 6a domains.python...ObjectEntry...j
1c240 60 02 00 00 6a bb 12 00 00 8c 06 6d 6f 64 75 6c 65 94 87 94 81 94 8c 0d 4d 32 43 72 79 70 74 6f `...j......module.......M2Crypto
1c260 2e 41 53 4e 31 94 6a 6e 1a 00 00 6a 60 02 00 00 6a be 12 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1a .ASN1.jn...j`...j....jo.........
1c280 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 94 6a 6e 1a 00 00 M2Crypto.ASN1.ASN1_Integer.jn...
1c2a0 6a 60 02 00 00 6a c2 12 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 2f 4d 32 43 72 79 70 74 6f j`...j......class....../M2Crypto
1c2c0 2e 41 53 4e 31 2e 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 6d 32 5f 61 73 6e 31 5f 69 6e 74 65 67 .ASN1.ASN1_Integer.m2_asn1_integ
1c2e0 65 72 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c5 12 00 00 8c 06 6d 65 74 68 6f 64 94 er_free.jn...j`...j......method.
1c300 87 94 81 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 94 ......M2Crypto.ASN1.ASN1_Object.
1c320 6a 6e 1a 00 00 6a 60 02 00 00 6a c8 12 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 2d 4d 32 43 jn...j`...j......class......-M2C
1c340 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 6d 32 5f 61 73 6e 31 5f 6f rypto.ASN1.ASN1_Object.m2_asn1_o
1c360 62 6a 65 63 74 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a cb 12 00 00 8c 06 6d 65 74 68 bject_free.jn...j`...j......meth
1c380 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 od.......M2Crypto.ASN1.ASN1_Stri
1c3a0 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ce 12 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 21 ng.jn...j`...j......class......!
1c3c0 4d 32 43 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 M2Crypto.ASN1.ASN1_String.as_tex
1c3e0 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d1 12 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d t.jn...j`...j......method......-
1c400 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 2e 6d 32 5f 61 73 6e M2Crypto.ASN1.ASN1_String.m2_asn
1c420 31 5f 73 74 72 69 6e 67 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d4 12 00 00 8c 06 6d 1_string_free.jn...j`...j......m
1c440 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 ethod.......M2Crypto.ASN1.ASN1_T
1c460 49 4d 45 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d7 12 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c IME.jn...j`...j......class......
1c480 24 4d 32 43 72 79 70 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 $M2Crypto.ASN1.ASN1_TIME.get_dat
1c4a0 65 74 69 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a da 12 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 etime.jn...j`...j......method...
1c4c0 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 2e 6d 32 5f 61 ...)M2Crypto.ASN1.ASN1_TIME.m2_a
1c4e0 73 6e 31 5f 74 69 6d 65 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a dd 12 00 00 8c 06 6d sn1_time_free.jn...j`...j......m
1c500 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e 31 5f 54 ethod......$M2Crypto.ASN1.ASN1_T
1c520 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e0 12 00 00 IME.set_datetime.jn...j`...j....
1c540 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e ..method......"M2Crypto.ASN1.ASN
1c560 31 5f 54 49 4d 45 2e 73 65 74 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e3 12 00 1_TIME.set_string.jn...j`...j...
1c580 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 ...method.......M2Crypto.ASN1.AS
1c5a0 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 74 69 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e6 12 00 00 N1_TIME.set_time.jn...j`...j....
1c5c0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 41 53 4e ..method.......M2Crypto.ASN1.ASN
1c5e0 31 5f 55 54 43 54 49 4d 45 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e9 12 00 00 8c 09 61 74 74 72 69 1_UTCTIME.jn...j`...j......attri
1c600 62 75 74 65 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 bute.......M2Crypto.ASN1.LocalTi
1c620 6d 65 7a 6f 6e 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ec 12 00 00 8c 05 63 6c 61 73 73 94 87 94 mezone.jn...j`...j......class...
1c640 81 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 7a 6f 6e 65 2e ....M2Crypto.ASN1.LocalTimezone.
1c660 64 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ef 12 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 dst.jn...j`...j......method.....
1c680 8c 22 4d 32 43 72 79 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 ."M2Crypto.ASN1.LocalTimezone.tz
1c6a0 6e 61 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f2 12 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 name.jn...j`...j......method....
1c6c0 94 8c 25 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 2e 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 75 ..%M2Crypto.ASN1.LocalTimezone.u
1c6e0 74 63 6f 66 66 73 65 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f5 12 00 00 8c 06 6d 65 74 68 6f 64 tcoffset.jn...j`...j......method
1c700 94 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 94 6a 6e 1a 00 00 .......M2Crypto.AuthCookie.jn...
1c720 6a 60 02 00 00 6a f8 12 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 41 75 j`...j....jo.........M2Crypto.Au
1c740 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a fb thCookie.AuthCookie.jn...j`...j.
1c760 12 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f .....class......#M2Crypto.AuthCo
1c780 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 64 61 74 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a okie.AuthCookie.data.jn...j`...j
1c7a0 fe 12 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 ......method......%M2Crypto.Auth
1c7c0 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 65 78 70 69 72 79 94 6a 6e 1a 00 00 6a 60 Cookie.AuthCookie.expiry.jn...j`
1c7e0 02 00 00 6a 01 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2a 4d 32 43 72 79 70 74 6f 2e ...j......method......*M2Crypto.
1c800 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 68 65 61 64 65 72 56 61 6c 75 AuthCookie.AuthCookie.headerValu
1c820 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 04 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 e.jn...j`...j......method......(
1c840 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 69 M2Crypto.AuthCookie.AuthCookie.i
1c860 73 45 78 70 69 72 65 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 07 13 00 00 8c 06 6d 65 74 68 6f 64 sExpired.jn...j`...j......method
1c880 94 87 94 81 94 8c 22 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 ......"M2Crypto.AuthCookie.AuthC
1c8a0 6f 6f 6b 69 65 2e 6d 61 63 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0a 13 00 00 8c 06 6d 65 74 68 6f ookie.mac.jn...j`...j......metho
1c8c0 64 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 74 68 d......#M2Crypto.AuthCookie.Auth
1c8e0 43 6f 6f 6b 69 65 2e 6e 61 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0d 13 00 00 8c 06 6d 65 74 Cookie.name.jn...j`...j......met
1c900 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 41 75 hod......%M2Crypto.AuthCookie.Au
1c920 74 68 43 6f 6f 6b 69 65 2e 6f 75 74 70 75 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 10 13 00 00 8c thCookie.output.jn...j`...j.....
1c940 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 .method......$M2Crypto.AuthCooki
1c960 65 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 76 61 6c 75 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 13 13 e.AuthCookie.value.jn...j`...j..
1c980 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f ....method......!M2Crypto.AuthCo
1c9a0 6f 6b 69 65 2e 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 16 13 okie.AuthCookieJar.jn...j`...j..
1c9c0 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f ....class.......M2Crypto.AuthCoo
1c9e0 6b 69 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 94 6a kie.AuthCookieJar.isGoodCookie.j
1ca00 6e 1a 00 00 6a 60 02 00 00 6a 19 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 34 4d 32 43 n...j`...j......method......4M2C
1ca20 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 4a 61 72 2e 69 rypto.AuthCookie.AuthCookieJar.i
1ca40 73 47 6f 6f 64 43 6f 6f 6b 69 65 53 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1c 13 00 sGoodCookieString.jn...j`...j...
1ca60 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f ...method......,M2Crypto.AuthCoo
1ca80 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 65 94 6a 6e 1a kie.AuthCookieJar.makeCookie.jn.
1caa0 00 00 6a 60 02 00 00 6a 1f 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 ..j`...j......method.......M2Cry
1cac0 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 2e 6d 69 78 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 22 13 pto.AuthCookie.mix.jn...j`...j".
1cae0 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 ....function.......M2Crypto.Auth
1cb00 43 6f 6f 6b 69 65 2e 75 6e 6d 69 78 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 25 13 00 00 8c 08 66 75 Cookie.unmix.jn...j`...j%.....fu
1cb20 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 nction.......M2Crypto.AuthCookie
1cb40 2e 75 6e 6d 69 78 33 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 28 13 00 00 8c 08 66 75 6e 63 74 69 6f .unmix3.jn...j`...j(.....functio
1cb60 6e 94 87 94 81 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 42 49 4f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a n.......M2Crypto.BIO.jn...j`...j
1cb80 2b 13 00 00 6a 6f 1a 00 00 87 94 81 94 8c 10 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 94 +...jo.........M2Crypto.BIO.BIO.
1cba0 6a 6e 1a 00 00 6a 60 02 00 00 6a 2e 13 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 18 4d 32 43 jn...j`...j......class.......M2C
1cbc0 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 62 69 6f 5f 70 74 72 94 6a 6e 1a 00 00 6a 60 02 00 00 rypto.BIO.BIO.bio_ptr.jn...j`...
1cbe0 6a 31 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 49 4f j1.....method.......M2Crypto.BIO
1cc00 2e 42 49 4f 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 34 13 00 00 8c 06 6d 65 74 68 .BIO.close.jn...j`...j4.....meth
1cc20 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 66 69 6c 65 6e 6f od.......M2Crypto.BIO.BIO.fileno
1cc40 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 37 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 16 4d .jn...j`...j7.....method.......M
1cc60 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 66 6c 75 73 68 94 6a 6e 1a 00 00 6a 60 02 00 00 2Crypto.BIO.BIO.flush.jn...j`...
1cc80 6a 3a 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 42 49 4f j:.....method.......M2Crypto.BIO
1cca0 2e 42 49 4f 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3d 13 00 00 .BIO.m2_bio_free.jn...j`...j=...
1ccc0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e ..method.......M2Crypto.BIO.BIO.
1cce0 72 65 61 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 40 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 read.jn...j`...j@.....method....
1cd00 94 8c 19 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 61 64 61 62 6c 65 94 6a 6e 1a ...M2Crypto.BIO.BIO.readable.jn.
1cd20 00 00 6a 60 02 00 00 6a 43 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 ..j`...jC.....method.......M2Cry
1cd40 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 61 64 6c 69 6e 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a pto.BIO.BIO.readline.jn...j`...j
1cd60 46 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e F.....method.......M2Crypto.BIO.
1cd80 42 49 4f 2e 72 65 61 64 6c 69 6e 65 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 49 13 00 00 8c 06 6d BIO.readlines.jn...j`...jI.....m
1cda0 65 74 68 6f 64 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 72 65 73 ethod.......M2Crypto.BIO.BIO.res
1cdc0 65 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4c 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c et.jn...j`...jL.....method......
1cde0 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 73 65 65 6b 94 6a 6e 1a 00 00 6a 60 02 00 .M2Crypto.BIO.BIO.seek.jn...j`..
1ce00 00 6a 4f 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 42 49 .jO.....method.......M2Crypto.BI
1ce20 4f 2e 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 61 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 52 13 00 O.BIO.should_read.jn...j`...jR..
1ce40 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f ...method.......M2Crypto.BIO.BIO
1ce60 2e 73 68 6f 75 6c 64 5f 72 65 74 72 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 55 13 00 00 8c 06 6d .should_retry.jn...j`...jU.....m
1ce80 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 73 68 6f ethod.......M2Crypto.BIO.BIO.sho
1cea0 75 6c 64 5f 77 72 69 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 58 13 00 00 8c 06 6d 65 74 68 6f uld_write.jn...j`...jX.....metho
1cec0 64 94 87 94 81 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 6e d.......M2Crypto.BIO.BIO.tell.jn
1cee0 1a 00 00 6a 60 02 00 00 6a 5b 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 16 4d 32 43 72 ...j`...j[.....method.......M2Cr
1cf00 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 77 72 69 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 5e 13 ypto.BIO.BIO.write.jn...j`...j^.
1cf20 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 ....method.......M2Crypto.BIO.BI
1cf40 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 61 13 00 00 8c 06 6d O.write_close.jn...j`...ja.....m
1cf60 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 2e 77 72 69 ethod.......M2Crypto.BIO.BIO.wri
1cf80 74 65 61 62 6c 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 64 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 teable.jn...j`...jd.....method..
1cfa0 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 42 49 4f 45 72 72 6f 72 94 6a 6e 1a 00 00 .....M2Crypto.BIO.BIOError.jn...
1cfc0 6a 60 02 00 00 6a 67 13 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 72 j`...jg.....exception.......M2Cr
1cfe0 79 70 74 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 ypto.BIO.CipherStream.jn...j`...
1d000 6a 6a 13 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e jj.....class......"M2Crypto.BIO.
1d020 43 69 70 68 65 72 53 74 72 65 61 6d 2e 53 41 4c 54 5f 4c 45 4e 94 6a 6e 1a 00 00 6a 60 02 00 00 CipherStream.SALT_LEN.jn...j`...
1d040 6a 6d 13 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e jm.....attribute.......M2Crypto.
1d060 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 BIO.CipherStream.close.jn...j`..
1d080 00 6a 70 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 42 49 .jp.....method......%M2Crypto.BI
1d0a0 4f 2e 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 6e 1a 00 00 O.CipherStream.m2_bio_free.jn...
1d0c0 6a 60 02 00 00 6a 73 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 j`...js.....method......$M2Crypt
1d0e0 6f 2e 42 49 4f 2e 43 69 70 68 65 72 53 74 72 65 61 6d 2e 6d 32 5f 62 69 6f 5f 70 6f 70 94 6a 6e o.BIO.CipherStream.m2_bio_pop.jn
1d100 1a 00 00 6a 60 02 00 00 6a 76 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 ...j`...jv.....method......$M2Cr
1d120 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 63 69 70 68 65 72 ypto.BIO.CipherStream.set_cipher
1d140 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 79 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d .jn...j`...jy.....method......%M
1d160 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 77 72 69 74 65 5f 63 2Crypto.BIO.CipherStream.write_c
1d180 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7c 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 lose.jn...j`...j|.....method....
1d1a0 94 8c 11 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ...M2Crypto.BIO.File.jn...j`...j
1d1c0 7f 13 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 ......class.......M2Crypto.BIO.F
1d1e0 69 6c 65 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 82 13 00 00 8c 06 6d 65 74 68 6f ile.close.jn...j`...j......metho
1d200 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 2e 66 6c 75 73 68 94 d.......M2Crypto.BIO.File.flush.
1d220 6a 6e 1a 00 00 6a 60 02 00 00 6a 85 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 jn...j`...j......method.......M2
1d240 43 72 79 70 74 6f 2e 42 49 4f 2e 46 69 6c 65 2e 72 65 73 65 74 94 6a 6e 1a 00 00 6a 60 02 00 00 Crypto.BIO.File.reset.jn...j`...
1d260 6a 88 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 49 4f j......method.......M2Crypto.BIO
1d280 2e 49 4f 42 75 66 66 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 8b 13 00 00 8c 05 63 6c 61 73 73 .IOBuffer.jn...j`...j......class
1d2a0 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 49 4f 42 75 66 66 65 72 2e 63 6c 6f .......M2Crypto.BIO.IOBuffer.clo
1d2c0 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 8e 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c se.jn...j`...j......method......
1d2e0 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 62 69 6f 5f 66 72 !M2Crypto.BIO.IOBuffer.m2_bio_fr
1d300 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 91 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ee.jn...j`...j......method......
1d320 20 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 62 69 6f 5f 70 6f .M2Crypto.BIO.IOBuffer.m2_bio_po
1d340 70 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 94 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 p.jn...j`...j......method.......
1d360 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 94 6a 6e 1a 00 00 6a M2Crypto.BIO.MemoryBuffer.jn...j
1d380 60 02 00 00 6a 97 13 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e `...j......class.......M2Crypto.
1d3a0 42 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 BIO.MemoryBuffer.close.jn...j`..
1d3c0 00 6a 9a 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 .j......method......"M2Crypto.BI
1d3e0 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 67 65 74 76 61 6c 75 65 94 6a 6e 1a 00 00 6a 60 02 O.MemoryBuffer.getvalue.jn...j`.
1d400 00 00 6a 9d 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 42 ..j......method.......M2Crypto.B
1d420 49 4f 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a IO.MemoryBuffer.read.jn...j`...j
1d440 a0 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e ......method......"M2Crypto.BIO.
1d460 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 5f 61 6c 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 MemoryBuffer.read_all.jn...j`...
1d480 6a a3 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 42 49 4f j......method......%M2Crypto.BIO
1d4a0 2e 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 6e 1a 00 00 6a .MemoryBuffer.write_close.jn...j
1d4c0 60 02 00 00 6a a6 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f `...j......method.......M2Crypto
1d4e0 2e 42 49 4f 2e 53 53 4c 42 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a9 13 00 00 8c 05 63 6c 61 .BIO.SSLBio.jn...j`...j......cla
1d500 73 73 94 87 94 81 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 ss.......M2Crypto.BIO.SSLBio.do_
1d520 68 61 6e 64 73 68 61 6b 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ac 13 00 00 8c 06 6d 65 74 68 6f handshake.jn...j`...j......metho
1d540 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 42 49 4f 2e 53 53 4c 42 69 6f 2e 73 65 74 5f d.......M2Crypto.BIO.SSLBio.set_
1d560 73 73 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a af 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 ssl.jn...j`...j......method.....
1d580 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 6e 1a 00 00 6a 60 02 ..M2Crypto.BIO.openfile.jn...j`.
1d5a0 00 00 6a b2 13 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0b 4d 32 43 72 79 70 74 6f ..j......function.......M2Crypto
1d5c0 2e 42 4e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b5 13 00 00 6a 6f 1a 00 00 87 94 81 94 8c 10 4d 32 .BN.jn...j`...j....jo.........M2
1d5e0 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b8 13 00 00 8c 08 Crypto.BN.rand.jn...j`...j......
1d600 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 5f function.......M2Crypto.BN.rand_
1d620 72 61 6e 67 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a bb 13 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 range.jn...j`...j......function.
1d640 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 42 4e 2e 72 61 6e 64 66 6e 61 6d 65 94 6a 6e 1a 00 ......M2Crypto.BN.randfname.jn..
1d660 00 6a 60 02 00 00 6a be 13 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0b 4d 32 43 72 .j`...j......function.......M2Cr
1d680 79 70 74 6f 2e 44 48 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c1 13 00 00 6a 6f 1a 00 00 87 94 81 94 ypto.DH.jn...j`...j....jo.......
1d6a0 8c 0e 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c4 13 00 00 ..M2Crypto.DH.DH.jn...j`...j....
1d6c0 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 63 68 65 ..class.......M2Crypto.DH.DH.che
1d6e0 63 6b 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c7 13 00 00 8c 06 6d 65 74 68 6f ck_params.jn...j`...j......metho
1d700 64 94 87 94 81 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 5f 6b d.......M2Crypto.DH.DH.compute_k
1d720 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ca 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ey.jn...j`...j......method......
1d740 16 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 67 65 6e 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 .M2Crypto.DH.DH.gen_key.jn...j`.
1d760 00 00 6a cd 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 ..j......method.......M2Crypto.D
1d780 48 2e 44 48 2e 6d 32 5f 64 68 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d0 13 00 00 8c H.DH.m2_dh_free.jn...j`...j.....
1d7a0 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 2e 70 72 69 .method.......M2Crypto.DH.DH.pri
1d7c0 6e 74 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d3 13 00 00 8c 06 6d 65 74 68 6f nt_params.jn...j`...j......metho
1d7e0 64 94 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f 2e 44 48 2e 44 48 45 72 72 6f 72 94 6a 6e 1a 00 d.......M2Crypto.DH.DHError.jn..
1d800 00 6a 60 02 00 00 6a d6 13 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 .j`...j......exception.......M2C
1d820 72 79 70 74 6f 2e 44 48 2e 67 65 6e 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d9 rypto.DH.gen_params.jn...j`...j.
1d840 13 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 48 2e .....function.......M2Crypto.DH.
1d860 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a dc 13 00 00 8c 08 66 75 6e load_params.jn...j`...j......fun
1d880 63 74 69 6f 6e 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 48 2e 6c 6f 61 64 5f 70 61 72 ction.......M2Crypto.DH.load_par
1d8a0 61 6d 73 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a df 13 00 00 8c 08 66 75 6e 63 74 69 6f ams_bio.jn...j`...j......functio
1d8c0 6e 94 87 94 81 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 94 6a n.......M2Crypto.DH.set_params.j
1d8e0 6e 1a 00 00 6a 60 02 00 00 6a e2 13 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0c 4d n...j`...j......function.......M
1d900 32 43 72 79 70 74 6f 2e 44 53 41 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e5 13 00 00 6a 6f 1a 00 00 2Crypto.DSA.jn...j`...j....jo...
1d920 87 94 81 94 8c 10 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 94 6a 6e 1a 00 00 6a 60 02 00 ......M2Crypto.DSA.DSA.jn...j`..
1d940 00 6a e8 13 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 44 53 41 .j......class.......M2Crypto.DSA
1d960 2e 44 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a eb 13 00 00 8c 06 .DSA.check_key.jn...j`...j......
1d980 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 67 65 method.......M2Crypto.DSA.DSA.ge
1d9a0 6e 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ee 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 n_key.jn...j`...j......method...
1d9c0 81 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 61 5f 66 72 65 65 ....M2Crypto.DSA.DSA.m2_dsa_free
1d9e0 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f1 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d .jn...j`...j......method.......M
1da00 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 2Crypto.DSA.DSA.save_key.jn...j`
1da20 02 00 00 6a f4 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e ...j......method.......M2Crypto.
1da40 44 53 41 2e 44 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a DSA.DSA.save_key_bio.jn...j`...j
1da60 f7 13 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e ......method.......M2Crypto.DSA.
1da80 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a fa 13 00 00 8c DSA.save_params.jn...j`...j.....
1daa0 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 .method.......M2Crypto.DSA.DSA.s
1dac0 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a fd 13 00 00 8c 06 ave_params_bio.jn...j`...j......
1dae0 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 61 method.......M2Crypto.DSA.DSA.sa
1db00 76 65 5f 70 75 62 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 00 14 00 00 8c 06 6d 65 74 68 ve_pub_key.jn...j`...j......meth
1db20 6f 64 94 87 94 81 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 od......!M2Crypto.DSA.DSA.save_p
1db40 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 03 14 00 00 8c 06 6d 65 74 68 ub_key_bio.jn...j`...j......meth
1db60 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 2e 73 65 74 5f 70 61 od.......M2Crypto.DSA.DSA.set_pa
1db80 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 06 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 rams.jn...j`...j......method....
1dba0 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 6e 1a 00 00 6a 60 ...M2Crypto.DSA.DSA.sign.jn...j`
1dbc0 02 00 00 6a 09 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e ...j......method.......M2Crypto.
1dbe0 44 53 41 2e 44 53 41 2e 73 69 67 6e 5f 61 73 6e 31 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0c 14 00 DSA.DSA.sign_asn1.jn...j`...j...
1dc00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 ...method.......M2Crypto.DSA.DSA
1dc20 2e 76 65 72 69 66 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0f 14 00 00 8c 06 6d 65 74 68 6f 64 94 .verify.jn...j`...j......method.
1dc40 87 94 81 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 61 73 ......M2Crypto.DSA.DSA.verify_as
1dc60 6e 31 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 12 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c n1.jn...j`...j......method......
1dc80 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 .M2Crypto.DSA.DSAError.jn...j`..
1dca0 00 6a 15 14 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f .j......exception.......M2Crypto
1dcc0 2e 44 53 41 2e 44 53 41 5f 70 75 62 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 18 14 00 00 8c 05 63 6c .DSA.DSA_pub.jn...j`...j......cl
1dce0 61 73 73 94 87 94 81 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 ass.......M2Crypto.DSA.DSA_pub.c
1dd00 68 65 63 6b 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1b 14 00 00 8c 06 6d 65 74 68 6f 64 heck_key.jn...j`...j......method
1dd20 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 61 76 65 .......M2Crypto.DSA.DSA_pub.save
1dd40 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1e 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 _key.jn...j`...j......method....
1dd60 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 76 65 5f 6b 65 79 ..!M2Crypto.DSA.DSA_pub.save_key
1dd80 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 21 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 _bio.jn...j`...j!.....method....
1dda0 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 69 67 6e 94 6a 6e 1a ...M2Crypto.DSA.DSA_pub.sign.jn.
1ddc0 00 00 6a 60 02 00 00 6a 24 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 ..j`...j$.....method.......M2Cry
1dde0 70 74 6f 2e 44 53 41 2e 44 53 41 5f 70 75 62 2e 73 69 67 6e 5f 61 73 6e 31 94 6a 6e 1a 00 00 6a pto.DSA.DSA_pub.sign_asn1.jn...j
1de00 60 02 00 00 6a 27 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f `...j'.....method.......M2Crypto
1de20 2e 44 53 41 2e 67 65 6e 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2a 14 00 00 8c .DSA.gen_params.jn...j`...j*....
1de40 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 .function.......M2Crypto.DSA.loa
1de60 64 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2d 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 d_key.jn...j`...j-.....function.
1de80 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 ......M2Crypto.DSA.load_key_bio.
1dea0 6a 6e 1a 00 00 6a 60 02 00 00 6a 30 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 18 jn...j`...j0.....function.......
1dec0 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 M2Crypto.DSA.load_params.jn...j`
1dee0 02 00 00 6a 33 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 ...j3.....function.......M2Crypt
1df00 6f 2e 44 53 41 2e 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 o.DSA.load_params_bio.jn...j`...
1df20 6a 36 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 44 j6.....function.......M2Crypto.D
1df40 53 41 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 39 14 00 00 8c SA.load_pub_key.jn...j`...j9....
1df60 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 6c 6f 61 .function.......M2Crypto.DSA.loa
1df80 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3c 14 00 00 8c 08 66 d_pub_key_bio.jn...j`...j<.....f
1dfa0 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 70 75 62 5f 6b unction.......M2Crypto.DSA.pub_k
1dfc0 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3f 14 00 00 8c 08 ey_from_params.jn...j`...j?.....
1dfe0 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 44 53 41 2e 73 65 74 5f function.......M2Crypto.DSA.set_
1e000 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 42 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e params.jn...j`...jB.....function
1e020 94 87 94 81 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 45 43 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 45 14 .......M2Crypto.EC.jn...j`...jE.
1e040 00 00 6a 6f 1a 00 00 87 94 81 94 8c 0e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 94 6a 6e 1a 00 ..jo.........M2Crypto.EC.EC.jn..
1e060 00 6a 60 02 00 00 6a 48 14 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 .j`...jH.....class.......M2Crypt
1e080 6f 2e 45 43 2e 45 43 2e 61 73 5f 70 65 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4b 14 00 00 8c 06 o.EC.EC.as_pem.jn...j`...jK.....
1e0a0 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 63 68 65 63 method.......M2Crypto.EC.EC.chec
1e0c0 6b 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4e 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 k_key.jn...j`...jN.....method...
1e0e0 81 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 5f 64 68 5f 6b 65 ....M2Crypto.EC.EC.compute_dh_ke
1e100 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 51 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 16 y.jn...j`...jQ.....method.......
1e120 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 67 65 6e 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 M2Crypto.EC.EC.gen_key.jn...j`..
1e140 00 6a 54 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 43 .jT.....method.......M2Crypto.EC
1e160 2e 45 43 2e 6d 32 5f 65 63 5f 6b 65 79 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 57 14 .EC.m2_ec_key_free.jn...j`...jW.
1e180 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 12 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e ....method.......M2Crypto.EC.EC.
1e1a0 70 75 62 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 5a 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 pub.jn...j`...jZ.....method.....
1e1c0 8c 17 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 65 5f 6b 65 79 94 6a 6e 1a 00 00 6a ..M2Crypto.EC.EC.save_key.jn...j
1e1e0 60 02 00 00 6a 5d 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f `...j].....method.......M2Crypto
1e200 2e 45 43 2e 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 60 .EC.EC.save_key_bio.jn...j`...j`
1e220 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 .....method.......M2Crypto.EC.EC
1e240 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 63 14 00 00 8c 06 6d .save_pub_key.jn...j`...jc.....m
1e260 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 61 76 65 5f ethod.......M2Crypto.EC.EC.save_
1e280 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 66 14 00 00 8c 06 6d 65 74 pub_key_bio.jn...j`...jf.....met
1e2a0 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 69 67 6e 5f 64 73 hod.......M2Crypto.EC.EC.sign_ds
1e2c0 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 69 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c a.jn...j`...ji.....method.......
1e2e0 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 94 6a 6e 1a M2Crypto.EC.EC.sign_dsa_asn1.jn.
1e300 00 00 6a 60 02 00 00 6a 6c 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 ..j`...jl.....method.......M2Cry
1e320 70 74 6f 2e 45 43 2e 45 43 2e 76 65 72 69 66 79 5f 64 73 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a pto.EC.EC.verify_dsa.jn...j`...j
1e340 6f 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 o.....method.......M2Crypto.EC.E
1e360 43 2e 76 65 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 72 14 00 C.verify_dsa_asn1.jn...j`...jr..
1e380 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 45 72 ...method.......M2Crypto.EC.ECEr
1e3a0 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 75 14 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 ror.jn...j`...ju.....exception..
1e3c0 94 81 94 8c 12 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 94 6a 6e 1a 00 00 6a 60 02 .....M2Crypto.EC.EC_pub.jn...j`.
1e3e0 00 00 6a 78 14 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 43 ..jx.....class.......M2Crypto.EC
1e400 2e 45 43 5f 70 75 62 2e 67 65 74 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7b 14 00 00 8c .EC_pub.get_der.jn...j`...j{....
1e420 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 .method.......M2Crypto.EC.EC_pub
1e440 2e 67 65 74 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7e 14 00 00 8c 06 6d 65 74 68 6f 64 .get_key.jn...j`...j~.....method
1e460 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 43 2e 45 43 5f 70 75 62 2e 73 61 76 65 5f 6b .......M2Crypto.EC.EC_pub.save_k
1e480 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 81 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ey.jn...j`...j......method......
1e4a0 1f 4d 32 43 72 79 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 .M2Crypto.EC.EC_pub.save_key_bio
1e4c0 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 84 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 14 4d .jn...j`...j......method.......M
1e4e0 32 43 72 79 70 74 6f 2e 45 43 2e 65 63 5f 65 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 87 2Crypto.EC.ec_error.jn...j`...j.
1e500 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 43 2e .....function.......M2Crypto.EC.
1e520 67 65 6e 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 8a 14 00 00 8c 08 66 75 6e 63 gen_params.jn...j`...j......func
1e540 74 69 6f 6e 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 43 2e 67 65 74 5f 62 75 69 6c 74 tion.......M2Crypto.EC.get_built
1e560 69 6e 5f 63 75 72 76 65 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 8d 14 00 00 8c 08 66 75 6e 63 74 in_curves.jn...j`...j......funct
1e580 69 6f 6e 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 94 6a ion.......M2Crypto.EC.load_key.j
1e5a0 6e 1a 00 00 6a 60 02 00 00 6a 90 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 18 4d n...j`...j......function.......M
1e5c0 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 2Crypto.EC.load_key_bio.jn...j`.
1e5e0 00 00 6a 93 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f ..j......function.......M2Crypto
1e600 2e 45 43 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 96 .EC.load_key_string.jn...j`...j.
1e620 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 43 2e .....function......"M2Crypto.EC.
1e640 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 load_key_string_pubkey.jn...j`..
1e660 00 6a 99 14 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e .j......function.......M2Crypto.
1e680 45 43 2e 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 9c 14 00 00 8c EC.load_pub_key.jn...j`...j.....
1e6a0 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 43 2e 6c 6f 61 64 .function.......M2Crypto.EC.load
1e6c0 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 9f 14 00 00 8c 08 66 75 _pub_key_bio.jn...j`...j......fu
1e6e0 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 43 2e 70 75 62 5f 6b 65 79 nction.......M2Crypto.EC.pub_key
1e700 5f 66 72 6f 6d 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a2 14 00 00 8c 08 66 75 6e 63 74 _from_der.jn...j`...j......funct
1e720 69 6f 6e 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 43 2e 70 75 62 5f 6b 65 79 5f 66 72 ion.......M2Crypto.EC.pub_key_fr
1e740 6f 6d 5f 70 61 72 61 6d 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a5 14 00 00 8c 08 66 75 6e 63 74 om_params.jn...j`...j......funct
1e760 69 6f 6e 94 87 94 81 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 56 50 94 6a 6e 1a 00 00 6a 60 02 00 ion.......M2Crypto.EVP.jn...j`..
1e780 00 6a a8 14 00 00 6a 6f 1a 00 00 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 .j....jo.........M2Crypto.EVP.Ci
1e7a0 70 68 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ab 14 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 pher.jn...j`...j......class.....
1e7c0 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 66 69 6e 61 6c 94 6a 6e 1a 00 ..M2Crypto.EVP.Cipher.final.jn..
1e7e0 00 6a 60 02 00 00 6a ae 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 .j`...j......method......&M2Cryp
1e800 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 78 5f 66 72 65 65 to.EVP.Cipher.m2_cipher_ctx_free
1e820 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b1 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d .jn...j`...j......method.......M
1e840 32 43 72 79 70 74 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 2Crypto.EVP.Cipher.set_padding.j
1e860 6e 1a 00 00 6a 60 02 00 00 6a b4 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 n...j`...j......method.......M2C
1e880 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 rypto.EVP.Cipher.update.jn...j`.
1e8a0 00 00 6a b7 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 45 ..j......method.......M2Crypto.E
1e8c0 56 50 2e 45 56 50 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ba 14 00 00 8c 09 65 78 63 VP.EVPError.jn...j`...j......exc
1e8e0 65 70 74 69 6f 6e 94 87 94 81 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 94 6a eption.......M2Crypto.EVP.HMAC.j
1e900 6e 1a 00 00 6a 60 02 00 00 6a bd 14 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 18 4d 32 43 72 n...j`...j......class.......M2Cr
1e920 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 64 69 67 65 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ypto.EVP.HMAC.digest.jn...j`...j
1e940 c0 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e ......method.......M2Crypto.EVP.
1e960 48 4d 41 43 2e 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c3 14 00 00 8c 06 6d 65 74 68 HMAC.final.jn...j`...j......meth
1e980 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 6d 32 5f 68 6d od......"M2Crypto.EVP.HMAC.m2_hm
1e9a0 61 63 5f 63 74 78 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c6 14 00 00 8c 06 6d 65 74 ac_ctx_free.jn...j`...j......met
1e9c0 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 72 65 73 65 hod.......M2Crypto.EVP.HMAC.rese
1e9e0 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c9 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 t.jn...j`...j......method.......
1ea00 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 48 4d 41 43 2e 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 M2Crypto.EVP.HMAC.update.jn...j`
1ea20 02 00 00 6a cc 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e ...j......method.......M2Crypto.
1ea40 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a cf 14 00 EVP.MessageDigest.jn...j`...j...
1ea60 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 73 ...class......!M2Crypto.EVP.Mess
1ea80 61 67 65 44 69 67 65 73 74 2e 64 69 67 65 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d2 14 00 00 ageDigest.digest.jn...j`...j....
1eaa0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 73 ..method.......M2Crypto.EVP.Mess
1eac0 61 67 65 44 69 67 65 73 74 2e 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d5 14 00 00 8c ageDigest.final.jn...j`...j.....
1eae0 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 4d 65 73 73 61 .method......)M2Crypto.EVP.Messa
1eb00 67 65 44 69 67 65 73 74 2e 6d 32 5f 6d 64 5f 63 74 78 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 geDigest.m2_md_ctx_free.jn...j`.
1eb20 00 00 6a d8 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 45 ..j......method......!M2Crypto.E
1eb40 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 VP.MessageDigest.update.jn...j`.
1eb60 00 00 6a db 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 ..j......method.......M2Crypto.E
1eb80 56 50 2e 50 4b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a de 14 00 00 8c 05 63 6c 61 73 73 94 87 VP.PKey.jn...j`...j......class..
1eba0 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 73 5f 64 65 72 94 6a 6e .....M2Crypto.EVP.PKey.as_der.jn
1ebc0 1a 00 00 6a 60 02 00 00 6a e1 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 ...j`...j......method.......M2Cr
1ebe0 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 61 73 5f 70 65 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ypto.EVP.PKey.as_pem.jn...j`...j
1ec00 e4 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e ......method.......M2Crypto.EVP.
1ec20 50 4b 65 79 2e 61 73 73 69 67 6e 5f 72 73 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e7 14 00 00 8c PKey.assign_rsa.jn...j`...j.....
1ec40 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e .method.......M2Crypto.EVP.PKey.
1ec60 64 69 67 65 73 74 5f 73 69 67 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ea 14 00 00 8c 06 6d 65 74 digest_sign.jn...j`...j......met
1ec80 68 6f 64 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 67 65 hod......#M2Crypto.EVP.PKey.dige
1eca0 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ed 14 00 00 8c 06 6d st_sign_final.jn...j`...j......m
1ecc0 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 69 ethod......"M2Crypto.EVP.PKey.di
1ece0 67 65 73 74 5f 73 69 67 6e 5f 69 6e 69 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f0 14 00 00 8c 06 gest_sign_init.jn...j`...j......
1ed00 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 64 method......$M2Crypto.EVP.PKey.d
1ed20 69 67 65 73 74 5f 73 69 67 6e 5f 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f3 14 00 igest_sign_update.jn...j`...j...
1ed40 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 ...method.......M2Crypto.EVP.PKe
1ed60 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f6 14 00 00 8c y.digest_verify.jn...j`...j.....
1ed80 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e .method......%M2Crypto.EVP.PKey.
1eda0 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f9 digest_verify_final.jn...j`...j.
1edc0 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 .....method......$M2Crypto.EVP.P
1ede0 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 69 6e 69 74 94 6a 6e 1a 00 00 6a 60 02 00 Key.digest_verify_init.jn...j`..
1ee00 00 6a fc 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 6f 2e 45 56 .j......method......&M2Crypto.EV
1ee20 50 2e 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 75 70 64 61 74 65 94 6a 6e 1a 00 P.PKey.digest_verify_update.jn..
1ee40 00 6a 60 02 00 00 6a ff 14 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 .j`...j......method.......M2Cryp
1ee60 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 02 15 00 to.EVP.PKey.final.jn...j`...j...
1ee80 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 ...method.......M2Crypto.EVP.PKe
1eea0 79 2e 67 65 74 5f 6d 6f 64 75 6c 75 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 05 15 00 00 8c 06 6d y.get_modulus.jn...j`...j......m
1eec0 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 67 65 ethod.......M2Crypto.EVP.PKey.ge
1eee0 74 5f 72 73 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 08 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 t_rsa.jn...j`...j......method...
1ef00 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 6d 32 5f 6d 64 5f 63 74 78 5f ....M2Crypto.EVP.PKey.m2_md_ctx_
1ef20 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0b 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 free.jn...j`...j......method....
1ef40 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 65 79 5f 66 72 65 ...M2Crypto.EVP.PKey.m2_pkey_fre
1ef60 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0e 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f e.jn...j`...j......method.......
1ef80 4d 32 43 72 79 70 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 M2Crypto.EVP.PKey.reset_context.
1efa0 6a 6e 1a 00 00 6a 60 02 00 00 6a 11 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 jn...j`...j......method.......M2
1efc0 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 Crypto.EVP.PKey.save_key.jn...j`
1efe0 02 00 00 6a 14 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e ...j......method.......M2Crypto.
1f000 45 56 50 2e 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 EVP.PKey.save_key_bio.jn...j`...
1f020 6a 17 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 j......method.......M2Crypto.EVP
1f040 2e 50 4b 65 79 2e 73 69 67 6e 5f 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1a 15 00 00 .PKey.sign_final.jn...j`...j....
1f060 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 ..method.......M2Crypto.EVP.PKey
1f080 2e 73 69 67 6e 5f 69 6e 69 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1d 15 00 00 8c 06 6d 65 74 68 .sign_init.jn...j`...j......meth
1f0a0 6f 64 94 87 94 81 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 od.......M2Crypto.EVP.PKey.sign_
1f0c0 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 20 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 update.jn...j`...j......method..
1f0e0 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 73 69 7a 65 94 6a 6e 1a 00 .....M2Crypto.EVP.PKey.size.jn..
1f100 00 6a 60 02 00 00 6a 23 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 79 70 .j`...j#.....method.......M2Cryp
1f120 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 26 15 to.EVP.PKey.update.jn...j`...j&.
1f140 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b ....method.......M2Crypto.EVP.PK
1f160 65 79 2e 76 65 72 69 66 79 5f 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 29 15 00 00 8c ey.verify_final.jn...j`...j)....
1f180 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e .method.......M2Crypto.EVP.PKey.
1f1a0 76 65 72 69 66 79 5f 69 6e 69 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2c 15 00 00 8c 06 6d 65 74 verify_init.jn...j`...j,.....met
1f1c0 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 50 4b 65 79 2e 76 65 72 69 hod.......M2Crypto.EVP.PKey.veri
1f1e0 66 79 5f 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2f 15 00 00 8c 06 6d 65 74 68 6f fy_update.jn...j`...j/.....metho
1f200 64 94 87 94 81 94 8c 11 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 68 6d 61 63 94 6a 6e 1a 00 00 6a d.......M2Crypto.EVP.hmac.jn...j
1f220 60 02 00 00 6a 32 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 15 4d 32 43 72 79 70 `...j2.....function.......M2Cryp
1f240 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 35 15 00 00 8c to.EVP.load_key.jn...j`...j5....
1f260 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 .function.......M2Crypto.EVP.loa
1f280 64 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 38 15 00 00 8c 08 66 75 6e 63 74 d_key_bio.jn...j`...j8.....funct
1f2a0 69 6f 6e 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f ion.......M2Crypto.EVP.load_key_
1f2c0 62 69 6f 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3b 15 00 00 8c 08 66 75 6e 63 bio_pubkey.jn...j`...j;.....func
1f2e0 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 tion.......M2Crypto.EVP.load_key
1f300 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3e 15 00 00 8c 08 66 75 6e 63 74 69 6f _pubkey.jn...j`...j>.....functio
1f320 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 n.......M2Crypto.EVP.load_key_st
1f340 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 41 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 ring.jn...j`...jA.....function..
1f360 94 81 94 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 ....#M2Crypto.EVP.load_key_strin
1f380 67 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 44 15 00 00 8c 08 66 75 6e 63 74 69 g_pubkey.jn...j`...jD.....functi
1f3a0 6f 6e 94 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 70 62 6b 64 66 32 94 6a 6e 1a on.......M2Crypto.EVP.pbkdf2.jn.
1f3c0 00 00 6a 60 02 00 00 6a 47 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0f 4d 32 43 ..j`...jG.....function.......M2C
1f3e0 72 79 70 74 6f 2e 45 6e 67 69 6e 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4a 15 00 00 6a 6f 1a 00 rypto.Engine.jn...j`...jJ...jo..
1f400 00 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 94 6a 6e .......M2Crypto.Engine.Engine.jn
1f420 1a 00 00 6a 60 02 00 00 6a 4d 15 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 26 4d 32 43 72 79 ...j`...jM.....class......&M2Cry
1f440 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e pto.Engine.Engine.ctrl_cmd_strin
1f460 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 50 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d g.jn...j`...jP.....method.......
1f480 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 6e M2Crypto.Engine.Engine.finish.jn
1f4a0 1a 00 00 6a 60 02 00 00 6a 53 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 ...j`...jS.....method.......M2Cr
1f4c0 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 67 65 74 5f 69 64 94 6a 6e 1a 00 00 6a ypto.Engine.Engine.get_id.jn...j
1f4e0 60 02 00 00 6a 56 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f `...jV.....method.......M2Crypto
1f500 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 67 65 74 5f 6e 61 6d 65 94 6a 6e 1a 00 00 6a 60 02 .Engine.Engine.get_name.jn...j`.
1f520 00 00 6a 59 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 ..jY.....method.......M2Crypto.E
1f540 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 69 6e 69 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 5c 15 00 ngine.Engine.init.jn...j`...j\..
1f560 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e ...method......'M2Crypto.Engine.
1f580 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 94 6a 6e 1a 00 00 6a 60 02 Engine.load_certificate.jn...j`.
1f5a0 00 00 6a 5f 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 43 72 79 70 74 6f 2e 45 ..j_.....method......'M2Crypto.E
1f5c0 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 65 79 94 6a 6e ngine.Engine.load_private_key.jn
1f5e0 1a 00 00 6a 60 02 00 00 6a 62 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 ...j`...jb.....method......&M2Cr
1f600 79 70 74 6f 2e 45 6e 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 ypto.Engine.Engine.load_public_k
1f620 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 65 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ey.jn...j`...je.....method......
1f640 25 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 2e 6d 32 5f 65 6e 67 69 6e %M2Crypto.Engine.Engine.m2_engin
1f660 65 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 68 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 e_free.jn...j`...jh.....method..
1f680 94 81 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 5f ...."M2Crypto.Engine.Engine.set_
1f6a0 64 65 66 61 75 6c 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6b 15 00 00 8c 06 6d 65 74 68 6f 64 94 default.jn...j`...jk.....method.
1f6c0 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 45 6e 67 69 6e 65 45 72 72 6f ......M2Crypto.Engine.EngineErro
1f6e0 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6e 15 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 r.jn...j`...jn.....exception....
1f700 94 8c 17 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 2e 63 6c 65 61 6e 75 70 94 6a 6e 1a 00 00 ...M2Crypto.Engine.cleanup.jn...
1f720 6a 60 02 00 00 6a 71 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 j`...jq.....function.......M2Cry
1f740 70 74 6f 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 6a 6e 1a 00 00 6a 60 02 pto.Engine.load_dynamic.jn...j`.
1f760 00 00 6a 74 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f ..jt.....function......#M2Crypto
1f780 2e 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 94 6a 6e 1a 00 .Engine.load_dynamic_engine.jn..
1f7a0 00 6a 60 02 00 00 6a 77 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 .j`...jw.....function.......M2Cr
1f7c0 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 6e 1a 00 00 6a 60 ypto.Engine.load_openssl.jn...j`
1f7e0 02 00 00 6a 7a 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0c 4d 32 43 72 79 70 74 ...jz.....function.......M2Crypt
1f800 6f 2e 45 72 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7d 15 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1a o.Err.jn...j`...j}...jo.........
1f820 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 94 6a 6e 1a 00 00 M2Crypto.Err.M2CryptoError.jn...
1f840 6a 60 02 00 00 6a 80 15 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 15 4d 32 43 72 j`...j......exception.......M2Cr
1f860 79 70 74 6f 2e 45 72 72 2e 53 53 4c 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 83 15 00 ypto.Err.SSLError.jn...j`...j...
1f880 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e ...exception.......M2Crypto.Err.
1f8a0 67 65 74 5f 65 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 86 15 00 00 8c 08 66 75 6e 63 74 get_error.jn...j`...j......funct
1f8c0 69 6f 6e 94 87 94 81 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 ion.......M2Crypto.Err.get_error
1f8e0 5f 63 6f 64 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 89 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 _code.jn...j`...j......function.
1f900 87 94 81 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 ......M2Crypto.Err.get_error_fun
1f920 63 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 8c 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 c.jn...j`...j......function.....
1f940 8c 1a 4d 32 43 72 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 94 6a 6e 1a ..M2Crypto.Err.get_error_lib.jn.
1f960 00 00 6a 60 02 00 00 6a 8f 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1e 4d 32 43 ..j`...j......function.......M2C
1f980 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 94 6a 6e 1a 00 rypto.Err.get_error_message.jn..
1f9a0 00 6a 60 02 00 00 6a 92 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1d 4d 32 43 72 .j`...j......function.......M2Cr
1f9c0 79 70 74 6f 2e 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 94 6a 6e 1a 00 00 6a ypto.Err.get_error_reason.jn...j
1f9e0 60 02 00 00 6a 95 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 22 4d 32 43 72 79 70 `...j......function......"M2Cryp
1fa00 74 6f 2e 45 72 72 2e 67 65 74 5f 78 35 30 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 94 6a 6e 1a to.Err.get_x509_verify_error.jn.
1fa20 00 00 6a 60 02 00 00 6a 98 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 ..j`...j......function.......M2C
1fa40 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 6e 1a 00 00 6a rypto.Err.peek_error_code.jn...j
1fa60 60 02 00 00 6a 9b 15 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0c 4d 32 43 72 79 70 `...j......function.......M2Cryp
1fa80 74 6f 2e 52 43 34 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 9e 15 00 00 6a 6f 1a 00 00 87 94 81 94 8c to.RC4.jn...j`...j....jo........
1faa0 10 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a1 15 00 .M2Crypto.RC4.RC4.jn...j`...j...
1fac0 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e ...class.......M2Crypto.RC4.RC4.
1fae0 66 69 6e 61 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a4 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 final.jn...j`...j......method...
1fb00 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 72 63 34 5f 66 72 65 65 94 6a 6e ....M2Crypto.RC4.RC4.rc4_free.jn
1fb20 1a 00 00 6a 60 02 00 00 6a a7 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 ...j`...j......method.......M2Cr
1fb40 79 70 74 6f 2e 52 43 34 2e 52 43 34 2e 73 65 74 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ypto.RC4.RC4.set_key.jn...j`...j
1fb60 aa 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 43 34 2e ......method.......M2Crypto.RC4.
1fb80 52 43 34 2e 75 70 64 61 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ad 15 00 00 8c 06 6d 65 74 68 RC4.update.jn...j`...j......meth
1fba0 6f 64 94 87 94 81 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 53 41 94 6a 6e 1a 00 00 6a 60 02 00 00 od.......M2Crypto.RSA.jn...j`...
1fbc0 6a b0 15 00 00 6a 6f 1a 00 00 87 94 81 94 8c 10 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 j....jo.........M2Crypto.RSA.RSA
1fbe0 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b3 15 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 17 4d 32 .jn...j`...j......class.......M2
1fc00 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 61 73 5f 70 65 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 Crypto.RSA.RSA.as_pem.jn...j`...
1fc20 6a b6 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 52 53 41 j......method.......M2Crypto.RSA
1fc40 2e 52 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b9 15 00 00 8c 06 .RSA.check_key.jn...j`...j......
1fc60 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 6d 32 method.......M2Crypto.RSA.RSA.m2
1fc80 5f 72 73 61 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a bc 15 00 00 8c 06 6d 65 74 68 6f _rsa_free.jn...j`...j......metho
1fca0 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 72 69 76 61 74 65 d.......M2Crypto.RSA.RSA.private
1fcc0 5f 64 65 63 72 79 70 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a bf 15 00 00 8c 06 6d 65 74 68 6f 64 _decrypt.jn...j`...j......method
1fce0 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 72 69 76 61 74 65 5f .......M2Crypto.RSA.RSA.private_
1fd00 65 6e 63 72 79 70 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c2 15 00 00 8c 06 6d 65 74 68 6f 64 94 encrypt.jn...j`...j......method.
1fd20 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 70 75 62 94 6a 6e 1a 00 00 ......M2Crypto.RSA.RSA.pub.jn...
1fd40 6a 60 02 00 00 6a c5 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 j`...j......method.......M2Crypt
1fd60 6f 2e 52 53 41 2e 52 53 41 2e 70 75 62 6c 69 63 5f 64 65 63 72 79 70 74 94 6a 6e 1a 00 00 6a 60 o.RSA.RSA.public_decrypt.jn...j`
1fd80 02 00 00 6a c8 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e ...j......method.......M2Crypto.
1fda0 52 53 41 2e 52 53 41 2e 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 94 6a 6e 1a 00 00 6a 60 02 00 RSA.RSA.public_encrypt.jn...j`..
1fdc0 00 6a cb 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 .j......method.......M2Crypto.RS
1fde0 41 2e 52 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ce 15 00 00 8c 06 A.RSA.save_key.jn...j`...j......
1fe00 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 method.......M2Crypto.RSA.RSA.sa
1fe20 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d1 15 00 00 8c 06 6d 65 74 68 ve_key_bio.jn...j`...j......meth
1fe40 6f 64 94 87 94 81 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 od.......M2Crypto.RSA.RSA.save_k
1fe60 65 79 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d4 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 ey_der.jn...j`...j......method..
1fe80 94 81 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 6b 65 79 5f 64 ....!M2Crypto.RSA.RSA.save_key_d
1fea0 65 72 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d7 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 er_bio.jn...j`...j......method..
1fec0 94 81 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 70 65 6d 94 6a .....M2Crypto.RSA.RSA.save_pem.j
1fee0 6e 1a 00 00 6a 60 02 00 00 6a da 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 n...j`...j......method.......M2C
1ff00 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 6e 1a 00 00 rypto.RSA.RSA.save_pub_key.jn...
1ff20 6a 60 02 00 00 6a dd 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 j`...j......method......!M2Crypt
1ff40 6f 2e 52 53 41 2e 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 o.RSA.RSA.save_pub_key_bio.jn...
1ff60 6a 60 02 00 00 6a e0 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 j`...j......method.......M2Crypt
1ff80 6f 2e 52 53 41 2e 52 53 41 2e 73 69 67 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e3 15 00 00 8c 06 o.RSA.RSA.sign.jn...j`...j......
1ffa0 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 73 69 method.......M2Crypto.RSA.RSA.si
1ffc0 67 6e 5f 72 73 61 73 73 61 5f 70 73 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e6 15 00 00 8c 06 6d gn_rsassa_pss.jn...j`...j......m
1ffe0 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 2e 76 65 72 ethod.......M2Crypto.RSA.RSA.ver
20000 69 66 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e9 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 ify.jn...j`...j......method.....
20020 8c 22 4d 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 ."M2Crypto.RSA.RSA.verify_rsassa
20040 5f 70 73 73 94 95 9c 26 01 00 00 00 00 00 6a 6e 1a 00 00 6a 60 02 00 00 6a ec 15 00 00 8c 06 6d _pss...&......jn...j`...j......m
20060 65 74 68 6f 64 94 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 45 72 72 6f ethod.......M2Crypto.RSA.RSAErro
20080 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ef 15 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 r.jn...j`...j......exception....
200a0 94 8c 14 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 53 41 5f 70 75 62 94 6a 6e 1a 00 00 6a 60 02 ...M2Crypto.RSA.RSA_pub.jn...j`.
200c0 00 00 6a f2 15 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 52 53 ..j......class.......M2Crypto.RS
200e0 41 2e 52 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f5 A.RSA_pub.check_key.jn...j`...j.
20100 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 52 .....method......$M2Crypto.RSA.R
20120 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 6e 1a 00 00 6a 60 02 00 SA_pub.private_decrypt.jn...j`..
20140 00 6a f8 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 52 53 .j......method......$M2Crypto.RS
20160 41 2e 52 53 41 5f 70 75 62 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 6e 1a 00 00 6a A.RSA_pub.private_encrypt.jn...j
20180 60 02 00 00 6a fb 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f `...j......method.......M2Crypto
201a0 2e 52 53 41 2e 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 .RSA.RSA_pub.save_key.jn...j`...
201c0 6a fe 15 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 52 53 41 j......method......!M2Crypto.RSA
201e0 2e 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 .RSA_pub.save_key_bio.jn...j`...
20200 6a 01 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e 52 53 41 j......method.......M2Crypto.RSA
20220 2e 67 65 6e 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 04 16 00 00 8c 08 66 75 6e 63 74 69 .gen_key.jn...j`...j......functi
20240 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6b 65 79 67 65 6e 5f 63 61 6c on.......M2Crypto.RSA.keygen_cal
20260 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 07 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 lback.jn...j`...j......function.
20280 87 94 81 94 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 6e 1a 00 ......M2Crypto.RSA.load_key.jn..
202a0 00 6a 60 02 00 00 6a 0a 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 72 .j`...j......function.......M2Cr
202c0 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 ypto.RSA.load_key_bio.jn...j`...
202e0 6a 0d 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 j......function.......M2Crypto.R
20300 53 41 2e 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 10 16 SA.load_key_string.jn...j`...j..
20320 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e ....function.......M2Crypto.RSA.
20340 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 13 16 00 00 8c 08 66 75 load_pub_key.jn...j`...j......fu
20360 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6c 6f 61 64 5f 70 nction.......M2Crypto.RSA.load_p
20380 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 16 16 00 00 8c 08 66 75 6e 63 ub_key_bio.jn...j`...j......func
203a0 74 69 6f 6e 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 6e 65 77 5f 70 75 62 5f tion.......M2Crypto.RSA.new_pub_
203c0 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 19 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 key.jn...j`...j......function...
203e0 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 52 53 41 2e 72 73 61 5f 65 72 72 6f 72 94 6a 6e 1a 00 00 ....M2Crypto.RSA.rsa_error.jn...
20400 6a 60 02 00 00 6a 1c 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0d 4d 32 43 72 79 j`...j......function.......M2Cry
20420 70 74 6f 2e 52 61 6e 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1f 16 00 00 6a 6f 1a 00 00 87 94 81 pto.Rand.jn...j`...j....jo......
20440 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 6c 6f 61 64 5f 66 69 6c 65 94 6a 6e 1a 00 00 ...M2Crypto.Rand.load_file.jn...
20460 6a 60 02 00 00 6a 22 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 72 79 j`...j".....function.......M2Cry
20480 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 61 64 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 25 16 00 pto.Rand.rand_add.jn...j`...j%..
204a0 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e ...function.......M2Crypto.Rand.
204c0 72 61 6e 64 5f 62 79 74 65 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 28 16 00 00 8c 08 66 75 6e 63 rand_bytes.jn...j`...j(.....func
204e0 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 66 69 tion.......M2Crypto.Rand.rand_fi
20500 6c 65 5f 6e 61 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2b 16 00 00 8c 08 66 75 6e 63 74 69 6f le_name.jn...j`...j+.....functio
20520 6e 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 70 73 65 75 64 n.......M2Crypto.Rand.rand_pseud
20540 6f 5f 62 79 74 65 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2e 16 00 00 8c 08 66 75 6e 63 74 69 6f o_bytes.jn...j`...j......functio
20560 6e 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 52 61 6e 64 2e 72 61 6e 64 5f 73 65 65 64 94 n.......M2Crypto.Rand.rand_seed.
20580 6a 6e 1a 00 00 6a 60 02 00 00 6a 31 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 jn...j`...j1.....function.......
205a0 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 6e 1a 00 00 6a M2Crypto.Rand.rand_status.jn...j
205c0 60 02 00 00 6a 34 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 17 4d 32 43 72 79 70 `...j4.....function.......M2Cryp
205e0 74 6f 2e 52 61 6e 64 2e 73 61 76 65 5f 66 69 6c 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 37 16 00 to.Rand.save_file.jn...j`...j7..
20600 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 ...function.......M2Crypto.SMIME
20620 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3a 16 00 00 6a 6f 1a 00 00 87 94 81 94 8c 15 4d 32 43 72 79 .jn...j`...j:...jo.........M2Cry
20640 70 74 6f 2e 53 4d 49 4d 45 2e 43 69 70 68 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 3d 16 00 00 pto.SMIME.Cipher.jn...j`...j=...
20660 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 ..class.......M2Crypto.SMIME.PKC
20680 53 37 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 40 16 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 21 S7.jn...j`...j@.....class......!
206a0 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 67 65 74 30 5f 73 69 67 6e 65 72 M2Crypto.SMIME.PKCS7.get0_signer
206c0 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 43 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 s.jn...j`...jC.....method......"
206e0 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 6d 32 5f 70 6b 63 73 37 5f 66 72 M2Crypto.SMIME.PKCS7.m2_pkcs7_fr
20700 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 46 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ee.jn...j`...jF.....method......
20720 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 6e 1a 00 00 .M2Crypto.SMIME.PKCS7.type.jn...
20740 6a 60 02 00 00 6a 49 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 j`...jI.....method.......M2Crypt
20760 6f 2e 53 4d 49 4d 45 2e 50 4b 43 53 37 2e 77 72 69 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4c o.SMIME.PKCS7.write.jn...j`...jL
20780 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 .....method.......M2Crypto.SMIME
207a0 2e 50 4b 43 53 37 2e 77 72 69 74 65 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4f 16 00 00 .PKCS7.write_der.jn...j`...jO...
207c0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 50 4b ..method.......M2Crypto.SMIME.PK
207e0 43 53 37 5f 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 52 16 00 00 8c 09 65 78 63 65 70 CS7_Error.jn...j`...jR.....excep
20800 74 69 6f 6e 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 94 tion.......M2Crypto.SMIME.SMIME.
20820 6a 6e 1a 00 00 6a 60 02 00 00 6a 55 16 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1c 4d 32 43 jn...j`...jU.....class.......M2C
20840 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 6e 1a 00 00 6a rypto.SMIME.SMIME.decrypt.jn...j
20860 60 02 00 00 6a 58 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f `...jX.....method.......M2Crypto
20880 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 65 6e 63 72 79 70 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a .SMIME.SMIME.encrypt.jn...j`...j
208a0 5b 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d [.....method.......M2Crypto.SMIM
208c0 45 2e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 5e 16 00 00 E.SMIME.load_key.jn...j`...j^...
208e0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d ..method......!M2Crypto.SMIME.SM
20900 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 61 16 00 00 IME.load_key_bio.jn...j`...ja...
20920 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d ..method.......M2Crypto.SMIME.SM
20940 49 4d 45 2e 73 65 74 5f 63 69 70 68 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 64 16 00 00 8c 06 IME.set_cipher.jn...j`...jd.....
20960 6d 65 74 68 6f 64 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d method......#M2Crypto.SMIME.SMIM
20980 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 67 16 00 00 E.set_x509_stack.jn...j`...jg...
209a0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d ..method......#M2Crypto.SMIME.SM
209c0 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6a 16 IME.set_x509_store.jn...j`...jj.
209e0 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e ....method.......M2Crypto.SMIME.
20a00 53 4d 49 4d 45 2e 73 69 67 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6d 16 00 00 8c 06 6d 65 74 68 SMIME.sign.jn...j`...jm.....meth
20a20 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 75 6e od......!M2Crypto.SMIME.SMIME.un
20a40 73 65 74 5f 63 69 70 68 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 70 16 00 00 8c 06 6d 65 74 68 set_cipher.jn...j`...jp.....meth
20a60 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 75 6e od.......M2Crypto.SMIME.SMIME.un
20a80 73 65 74 5f 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 73 16 00 00 8c 06 6d 65 74 68 6f 64 94 set_key.jn...j`...js.....method.
20aa0 87 94 81 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 6e 73 65 74 .....%M2Crypto.SMIME.SMIME.unset
20ac0 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 76 16 00 00 8c 06 6d 65 74 _x509_stack.jn...j`...jv.....met
20ae0 68 6f 64 94 87 94 81 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 hod......%M2Crypto.SMIME.SMIME.u
20b00 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 79 16 00 00 8c nset_x509_store.jn...j`...jy....
20b20 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 .method.......M2Crypto.SMIME.SMI
20b40 4d 45 2e 76 65 72 69 66 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7c 16 00 00 8c 06 6d 65 74 68 6f ME.verify.jn...j`...j|.....metho
20b60 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 53 4d 49 4d 45 2e 77 72 69 d.......M2Crypto.SMIME.SMIME.wri
20b80 74 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7f 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c te.jn...j`...j......method......
20ba0 1a 4d 32 43 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 6e 1a 00 .M2Crypto.SMIME.SMIME_Error.jn..
20bc0 00 6a 60 02 00 00 6a 82 16 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 .j`...j......exception.......M2C
20be0 72 79 70 74 6f 2e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 70 6b 63 73 37 94 6a 6e 1a 00 00 6a 60 02 00 rypto.SMIME.load_pkcs7.jn...j`..
20c00 00 6a 85 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e .j......function.......M2Crypto.
20c20 53 4d 49 4d 45 2e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a SMIME.load_pkcs7_bio.jn...j`...j
20c40 88 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 4d ......function......!M2Crypto.SM
20c60 49 4d 45 2e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 IME.load_pkcs7_bio_der.jn...j`..
20c80 00 6a 8b 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e .j......function.......M2Crypto.
20ca0 53 4d 49 4d 45 2e 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a SMIME.load_pkcs7_der.jn...j`...j
20cc0 8e 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 53 4d ......function.......M2Crypto.SM
20ce0 49 4d 45 2e 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 94 6a 6e 1a 00 00 6a 60 02 00 00 6a IME.smime_load_pkcs7.jn...j`...j
20d00 91 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 53 4d ......function......#M2Crypto.SM
20d20 49 4d 45 2e 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 IME.smime_load_pkcs7_bio.jn...j`
20d40 02 00 00 6a 94 16 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 ...j......function.......M2Crypt
20d60 6f 2e 53 4d 49 4d 45 2e 74 65 78 74 5f 63 72 6c 66 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 97 16 00 o.SMIME.text_crlf.jn...j`...j...
20d80 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 ...function.......M2Crypto.SMIME
20da0 2e 74 65 78 74 5f 63 72 6c 66 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 9a 16 00 00 8c 08 .text_crlf_bio.jn...j`...j......
20dc0 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 94 6a 6e 1a function.......M2Crypto.X509.jn.
20de0 00 00 6a 60 02 00 00 6a 9d 16 00 00 6a 6f 1a 00 00 87 94 81 94 8c 11 4d 32 43 72 79 70 74 6f 2e ..j`...j....jo.........M2Crypto.
20e00 58 35 30 39 2e 43 52 4c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a0 16 00 00 8c 05 63 6c 61 73 73 94 X509.CRL.jn...j`...j......class.
20e20 87 94 81 94 8c 19 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 2e 61 73 5f 74 65 78 74 94 ......M2Crypto.X509.CRL.as_text.
20e40 6a 6e 1a 00 00 6a 60 02 00 00 6a a3 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 jn...j`...j......method......"M2
20e60 43 72 79 70 74 6f 2e 58 35 30 39 2e 43 52 4c 2e 6d 32 5f 78 35 30 39 5f 63 72 6c 5f 66 72 65 65 Crypto.X509.CRL.m2_x509_crl_free
20e80 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a6 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 15 4d .jn...j`...j......method.......M
20ea0 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2Crypto.X509.Request.jn...j`...j
20ec0 a9 16 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e ......class......$M2Crypto.X509.
20ee0 52 65 71 75 65 73 74 2e 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 94 6a 6e 1a 00 00 6a 60 02 00 Request.add_extensions.jn...j`..
20f00 00 6a ac 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 58 35 .j......method.......M2Crypto.X5
20f20 30 39 2e 52 65 71 75 65 73 74 2e 61 73 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a af 16 00 09.Request.as_der.jn...j`...j...
20f40 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 ...method.......M2Crypto.X509.Re
20f60 71 75 65 73 74 2e 61 73 5f 70 65 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b2 16 00 00 8c 06 6d 65 quest.as_pem.jn...j`...j......me
20f80 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 thod.......M2Crypto.X509.Request
20fa0 2e 61 73 5f 74 65 78 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b5 16 00 00 8c 06 6d 65 74 68 6f 64 .as_text.jn...j`...j......method
20fc0 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 67 65 74 .......M2Crypto.X509.Request.get
20fe0 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b8 16 00 00 8c 06 6d 65 74 68 6f 64 94 _pubkey.jn...j`...j......method.
21000 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 67 65 74 5f .....!M2Crypto.X509.Request.get_
21020 73 75 62 6a 65 63 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a bb 16 00 00 8c 06 6d 65 74 68 6f 64 94 subject.jn...j`...j......method.
21040 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 67 65 74 5f .....!M2Crypto.X509.Request.get_
21060 76 65 72 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a be 16 00 00 8c 06 6d 65 74 68 6f 64 94 version.jn...j`...j......method.
21080 87 94 81 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 .....&M2Crypto.X509.Request.m2_x
210a0 35 30 39 5f 72 65 71 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c1 16 00 00 8c 06 6d 65 509_req_free.jn...j`...j......me
210c0 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 thod.......M2Crypto.X509.Request
210e0 2e 73 61 76 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c4 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 .save.jn...j`...j......method...
21100 81 94 8c 1e 4d 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 5f 70 ....M2Crypto.X509.Request.save_p
21120 65 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c7 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c em.jn...j`...j......method......
21140 20 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 70 75 62 6b 65 .M2Crypto.X509.Request.set_pubke
21160 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ca 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 y.jn...j`...j......method......!
21180 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 62 6a 65 63 M2Crypto.X509.Request.set_subjec
211a0 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a cd 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 t.jn...j`...j......method......&
211c0 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 62 6a 65 63 M2Crypto.X509.Request.set_subjec
211e0 74 5f 6e 61 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d0 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 t_name.jn...j`...j......method..
21200 94 81 94 8c 21 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 76 ....!M2Crypto.X509.Request.set_v
21220 65 72 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d3 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 ersion.jn...j`...j......method..
21240 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 52 65 71 75 65 73 74 2e 73 69 67 6e 94 .....M2Crypto.X509.Request.sign.
21260 6a 6e 1a 00 00 6a 60 02 00 00 6a d6 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 jn...j`...j......method.......M2
21280 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 6e 1a 00 00 Crypto.X509.Request.verify.jn...
212a0 6a 60 02 00 00 6a d9 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 12 4d 32 43 72 79 70 74 j`...j......method.......M2Crypt
212c0 6f 2e 58 35 30 39 2e 58 35 30 39 94 6a 6e 1a 00 00 6a 60 02 00 00 6a dc 16 00 00 8c 05 63 6c 61 o.X509.X509.jn...j`...j......cla
212e0 73 73 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 61 64 64 5f ss.......M2Crypto.X509.X509.add_
21300 65 78 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a df 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 ext.jn...j`...j......method.....
21320 8c 19 4d 32 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 6e 1a 00 ..M2Crypto.X509.X509.as_der.jn..
21340 00 6a 60 02 00 00 6a e2 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 19 4d 32 43 72 79 70 .j`...j......method.......M2Cryp
21360 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 61 73 5f 70 65 6d 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e5 to.X509.X509.as_pem.jn...j`...j.
21380 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e .....method.......M2Crypto.X509.
213a0 58 35 30 39 2e 61 73 5f 74 65 78 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e8 16 00 00 8c 06 6d 65 X509.as_text.jn...j`...j......me
213c0 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 63 68 thod.......M2Crypto.X509.X509.ch
213e0 65 63 6b 5f 63 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a eb 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 eck_ca.jn...j`...j......method..
21400 94 81 94 8c 20 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 70 75 .....M2Crypto.X509.X509.check_pu
21420 72 70 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ee 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 rpose.jn...j`...j......method...
21440 81 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
21460 6e 1a 00 00 6a 60 02 00 00 6a f1 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 n...j`...j......method.......M2C
21480 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 61 74 94 6a 6e 1a 00 00 rypto.X509.X509.get_ext_at.jn...
214a0 6a 60 02 00 00 6a f4 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 j`...j......method.......M2Crypt
214c0 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 94 6a 6e 1a 00 00 6a o.X509.X509.get_ext_count.jn...j
214e0 60 02 00 00 6a f7 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f `...j......method......"M2Crypto
21500 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 94 6a 6e 1a 00 00 .X509.X509.get_fingerprint.jn...
21520 6a 60 02 00 00 6a fa 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 j`...j......method.......M2Crypt
21540 6f 2e 58 35 30 39 2e 58 35 30 39 2e 67 65 74 5f 69 73 73 75 65 72 94 6a 6e 1a 00 00 6a 60 02 00 o.X509.X509.get_issuer.jn...j`..
21560 00 6a fd 16 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 58 35 .j......method.......M2Crypto.X5
21580 30 39 2e 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 09.X509.get_not_after.jn...j`...
215a0 6a 00 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 j......method......!M2Crypto.X50
215c0 39 2e 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 6e 1a 00 00 6a 60 02 00 00 9.X509.get_not_before.jn...j`...
215e0 6a 03 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 j......method.......M2Crypto.X50
21600 39 2e 58 35 30 39 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 06 17 00 9.X509.get_pubkey.jn...j`...j...
21620 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ...method......$M2Crypto.X509.X5
21640 30 39 2e 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 09.get_serial_number.jn...j`...j
21660 09 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 ......method.......M2Crypto.X509
21680 2e 58 35 30 39 2e 67 65 74 5f 73 75 62 6a 65 63 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0c 17 00 .X509.get_subject.jn...j`...j...
216a0 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ...method.......M2Crypto.X509.X5
216c0 30 39 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0f 17 00 00 8c 06 09.get_version.jn...j`...j......
216e0 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e method.......M2Crypto.X509.X509.
21700 6d 32 5f 78 35 30 39 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 12 17 00 00 8c 06 6d 65 m2_x509_free.jn...j`...j......me
21720 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 61 thod.......M2Crypto.X509.X509.sa
21740 76 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 15 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ve.jn...j`...j......method......
21760 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 94 6a 6e 1a .M2Crypto.X509.X509.save_pem.jn.
21780 00 00 6a 60 02 00 00 6a 18 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 ..j`...j......method.......M2Cry
217a0 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 94 6a 6e 1a 00 00 6a 60 pto.X509.X509.set_issuer.jn...j`
217c0 02 00 00 6a 1b 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e ...j......method......"M2Crypto.
217e0 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 94 6a 6e 1a 00 00 6a X509.X509.set_issuer_name.jn...j
21800 60 02 00 00 6a 1e 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f `...j......method.......M2Crypto
21820 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 6e 1a 00 00 6a 60 .X509.X509.set_not_after.jn...j`
21840 02 00 00 6a 21 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e ...j!.....method......!M2Crypto.
21860 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 6e 1a 00 00 6a 60 X509.X509.set_not_before.jn...j`
21880 02 00 00 6a 24 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e ...j$.....method.......M2Crypto.
218a0 58 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a X509.X509.set_pubkey.jn...j`...j
218c0 27 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 '.....method......$M2Crypto.X509
218e0 2e 58 35 30 39 2e 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 6e 1a 00 00 6a 60 02 .X509.set_serial_number.jn...j`.
21900 00 00 6a 2a 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 ..j*.....method.......M2Crypto.X
21920 35 30 39 2e 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 509.X509.set_subject.jn...j`...j
21940 2d 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 -.....method......#M2Crypto.X509
21960 2e 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 6e 1a 00 00 6a 60 02 00 .X509.set_subject_name.jn...j`..
21980 00 6a 30 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 35 .j0.....method.......M2Crypto.X5
219a0 30 39 2e 58 35 30 39 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 33 09.X509.set_version.jn...j`...j3
219c0 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e .....method.......M2Crypto.X509.
219e0 58 35 30 39 2e 73 69 67 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 36 17 00 00 8c 06 6d 65 74 68 6f X509.sign.jn...j`...j6.....metho
21a00 64 94 87 94 81 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 d.......M2Crypto.X509.X509.verif
21a20 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 39 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 y.jn...j`...j9.....method.......
21a40 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 60 02 M2Crypto.X509.X509Error.jn...j`.
21a60 00 00 6a 3c 17 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 ..j<.....exception.......M2Crypt
21a80 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 o.X509.X509_Extension.jn...j`...
21aa0 6a 3f 17 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 j?.....class......)M2Crypto.X509
21ac0 2e 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 94 6a 6e 1a .X509_Extension.get_critical.jn.
21ae0 00 00 6a 60 02 00 00 6a 42 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 ..j`...jB.....method......%M2Cry
21b00 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 67 65 74 5f 6e 61 6d 65 pto.X509.X509_Extension.get_name
21b20 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 45 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d .jn...j`...jE.....method......&M
21b40 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 67 65 74 5f 2Crypto.X509.X509_Extension.get_
21b60 76 61 6c 75 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 48 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 value.jn...j`...jH.....method...
21b80 81 94 8c 33 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 ...3M2Crypto.X509.X509_Extension
21ba0 2e 6d 32 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 .m2_x509_extension_free.jn...j`.
21bc0 00 00 6a 4b 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 58 ..jK.....method......)M2Crypto.X
21be0 35 30 39 2e 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 73 65 74 5f 63 72 69 74 69 63 61 6c 94 509.X509_Extension.set_critical.
21c00 6a 6e 1a 00 00 6a 60 02 00 00 6a 4e 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 jn...j`...jN.....method......"M2
21c20 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
21c40 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 51 17 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 3c 4d 32 .jn...j`...jQ.....class......<M2
21c60 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
21c80 2e 6d 32 5f 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 94 6a 6e 1a 00 00 .m2_sk_x509_extension_free.jn...
21ca0 6a 60 02 00 00 6a 54 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 j`...jT.....method......&M2Crypt
21cc0 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 6f 70 94 o.X509.X509_Extension_Stack.pop.
21ce0 6a 6e 1a 00 00 6a 60 02 00 00 6a 57 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 jn...j`...jW.....method......'M2
21d00 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
21d20 2e 70 75 73 68 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 5a 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 .push.jn...j`...jZ.....method...
21d40 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 94 6a 6e 1a 00 ....M2Crypto.X509.X509_Name.jn..
21d60 00 6a 60 02 00 00 6a 5d 17 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 .j`...j].....class......(M2Crypt
21d80 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 79 5f 74 78 o.X509.X509_Name.add_entry_by_tx
21da0 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 60 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1e t.jn...j`...j`.....method.......
21dc0 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 72 94 6a M2Crypto.X509.X509_Name.as_der.j
21de0 6e 1a 00 00 6a 60 02 00 00 6a 63 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 n...j`...jc.....method.......M2C
21e00 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 68 61 73 68 94 6a 6e 1a rypto.X509.X509_Name.as_hash.jn.
21e20 00 00 6a 60 02 00 00 6a 66 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 ..j`...jf.....method.......M2Cry
21e40 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 6e 1a 00 00 pto.X509.X509_Name.as_text.jn...
21e60 6a 60 02 00 00 6a 69 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 j`...ji.....method......#M2Crypt
21e80 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 94 6a 6e 1a o.X509.X509_Name.entry_count.jn.
21ea0 00 00 6a 60 02 00 00 6a 6c 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2a 4d 32 43 72 79 ..j`...jl.....method......*M2Cry
21ec0 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 2e 67 65 74 5f 65 6e 74 72 69 65 73 5f 62 pto.X509.X509_Name.get_entries_b
21ee0 79 5f 6e 69 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6f 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 y_nid.jn...j`...jo.....method...
21f00 81 94 8c 29 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 ...)M2Crypto.X509.X509_Name.m2_x
21f20 35 30 39 5f 6e 61 6d 65 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 72 17 00 00 8c 06 6d 509_name_free.jn...j`...jr.....m
21f40 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e ethod.......M2Crypto.X509.X509_N
21f60 61 6d 65 2e 6e 69 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 75 17 00 00 8c 09 61 74 74 72 69 62 75 ame.nid.jn...j`...ju.....attribu
21f80 74 65 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 te.......M2Crypto.X509.X509_Name
21fa0 5f 45 6e 74 72 79 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 78 17 00 00 8c 05 63 6c 61 73 73 94 87 94 _Entry.jn...j`...jx.....class...
21fc0 81 94 8c 2b 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 ...+M2Crypto.X509.X509_Name_Entr
21fe0 79 2e 63 72 65 61 74 65 5f 62 79 5f 74 78 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 7b 17 00 00 8c y.create_by_txt.jn...j`...j{....
22000 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 .method......&M2Crypto.X509.X509
22020 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 74 5f 64 61 74 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a _Name_Entry.get_data.jn...j`...j
22040 7e 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 ~.....method......(M2Crypto.X509
22060 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 6e 1a 00 .X509_Name_Entry.get_object.jn..
22080 00 6a 60 02 00 00 6a 81 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 35 4d 32 43 72 79 70 .j`...j......method......5M2Cryp
220a0 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 6d 32 5f 78 35 30 39 5f to.X509.X509_Name_Entry.m2_x509_
220c0 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 84 17 00 00 8c name_entry_free.jn...j`...j.....
220e0 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 .method......&M2Crypto.X509.X509
22100 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 73 65 74 5f 64 61 74 61 94 6a 6e 1a 00 00 6a 60 02 00 00 6a _Name_Entry.set_data.jn...j`...j
22120 87 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 ......method......(M2Crypto.X509
22140 2e 58 35 30 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 6e 1a 00 .X509_Name_Entry.set_object.jn..
22160 00 6a 60 02 00 00 6a 8a 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 79 70 .j`...j......method.......M2Cryp
22180 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 8d 17 to.X509.X509_Stack.jn...j`...j..
221a0 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ....class.......M2Crypto.X509.X5
221c0 30 39 5f 53 74 61 63 6b 2e 61 73 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 90 17 00 00 8c 09_Stack.as_der.jn...j`...j.....
221e0 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 .method......(M2Crypto.X509.X509
22200 5f 53 74 61 63 6b 2e 6d 32 5f 73 6b 5f 78 35 30 39 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 _Stack.m2_sk_x509_free.jn...j`..
22220 00 6a 93 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 58 35 .j......method.......M2Crypto.X5
22240 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 96 17 00 09.X509_Stack.pop.jn...j`...j...
22260 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 ...method.......M2Crypto.X509.X5
22280 30 39 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 99 17 00 00 8c 06 6d 09_Stack.push.jn...j`...j......m
222a0 65 74 68 6f 64 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 ethod.......M2Crypto.X509.X509_S
222c0 74 6f 72 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 9c 17 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 tore.jn...j`...j......class.....
222e0 8c 21 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 61 64 64 5f 63 .!M2Crypto.X509.X509_Store.add_c
22300 65 72 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 9f 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 ert.jn...j`...j......method.....
22320 8c 21 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 61 64 64 5f 78 .!M2Crypto.X509.X509_Store.add_x
22340 35 30 39 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a2 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 509.jn...j`...j......method.....
22360 8c 22 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 6c 6f 61 64 5f ."M2Crypto.X509.X509_Store.load_
22380 69 6e 66 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a5 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 info.jn...j`...j......method....
223a0 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 6c 6f 61 64 ..'M2Crypto.X509.X509_Store.load
223c0 5f 6c 6f 63 61 74 69 6f 6e 73 94 6a 6e 1a 00 00 6a 60 02 00 00 6a a8 17 00 00 8c 06 6d 65 74 68 _locations.jn...j`...j......meth
223e0 6f 64 94 87 94 81 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 72 od......+M2Crypto.X509.X509_Stor
22400 65 2e 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e.m2_x509_store_free.jn...j`...j
22420 ab 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 ......method......"M2Crypto.X509
22440 2e 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 5f 66 6c 61 67 73 94 6a 6e 1a 00 00 6a 60 02 00 00 .X509_Store.set_flags.jn...j`...
22460 6a ae 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 6f 2e 58 35 30 j......method......&M2Crypto.X50
22480 39 2e 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 5f 76 65 72 69 66 79 5f 63 62 94 6a 6e 1a 00 00 9.X509_Store.set_verify_cb.jn...
224a0 6a 60 02 00 00 6a b1 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 79 70 74 j`...j......method.......M2Crypt
224c0 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 94 6a 6e 1a 00 00 6a o.X509.X509_Store_Context.jn...j
224e0 60 02 00 00 6a b4 17 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 2b 4d 32 43 72 79 70 74 6f 2e `...j......class......+M2Crypto.
22500 58 35 30 39 2e 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 X509.X509_Store_Context.get1_cha
22520 69 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a b7 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c in.jn...j`...j......method......
22540 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 5f 43 6f 6e 74 65 78 1M2Crypto.X509.X509_Store_Contex
22560 74 2e 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ba 17 t.get_current_cert.jn...j`...j..
22580 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 ....method......*M2Crypto.X509.X
225a0 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 6e 1a 00 509_Store_Context.get_error.jn..
225c0 00 6a 60 02 00 00 6a bd 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 30 4d 32 43 72 79 70 .j`...j......method......0M2Cryp
225e0 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 2e 67 65 74 5f 65 to.X509.X509_Store_Context.get_e
22600 72 72 6f 72 5f 64 65 70 74 68 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c0 17 00 00 8c 06 6d 65 74 68 rror_depth.jn...j`...j......meth
22620 6f 64 94 87 94 81 94 8c 37 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 od......7M2Crypto.X509.X509_Stor
22640 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 72 65 65 e_Context.m2_x509_store_ctx_free
22660 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c3 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 17 4d .jn...j`...j......method.......M
22680 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 94 6a 6e 1a 00 00 6a 60 02 00 2Crypto.X509.load_cert.jn...j`..
226a0 00 6a c6 17 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e .j......function.......M2Crypto.
226c0 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a c9 17 X509.load_cert_bio.jn...j`...j..
226e0 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 ....function......"M2Crypto.X509
22700 2e 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 .load_cert_der_string.jn...j`...
22720 6a cc 17 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e 58 j......function.......M2Crypto.X
22740 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 509.load_cert_string.jn...j`...j
22760 cf 17 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 58 35 ......function.......M2Crypto.X5
22780 30 39 2e 6c 6f 61 64 5f 63 72 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d2 17 00 00 8c 08 66 75 6e 09.load_crl.jn...j`...j......fun
227a0 63 74 69 6f 6e 94 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 ction.......M2Crypto.X509.load_r
227c0 65 71 75 65 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d5 17 00 00 8c 08 66 75 6e 63 74 69 6f 6e equest.jn...j`...j......function
227e0 94 87 94 81 94 8c 1e 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 .......M2Crypto.X509.load_reques
22800 74 5f 62 69 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a d8 17 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 t_bio.jn...j`...j......function.
22820 87 94 81 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 65 73 74 .....%M2Crypto.X509.load_request
22840 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a db 17 00 00 8c 08 66 75 6e _der_string.jn...j`...j......fun
22860 63 74 69 6f 6e 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6c 6f 61 64 5f 72 ction......!M2Crypto.X509.load_r
22880 65 71 75 65 73 74 5f 73 74 72 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a de 17 00 00 8c 08 66 equest_string.jn...j`...j......f
228a0 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 6e 65 77 5f unction.......M2Crypto.X509.new_
228c0 65 78 74 65 6e 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e1 17 00 00 8c 08 66 75 6e 63 74 extension.jn...j`...j......funct
228e0 69 6f 6e 94 87 94 81 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 ion.......M2Crypto.X509.new_stac
22900 6b 5f 66 72 6f 6d 5f 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e4 17 00 00 8c 08 66 75 6e 63 k_from_der.jn...j`...j......func
22920 74 69 6f 6e 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 2e 78 35 30 39 5f 73 74 tion......#M2Crypto.X509.x509_st
22940 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 94 6a 6e 1a 00 00 6a 60 02 00 00 6a e7 17 00 00 8c 08 ore_default_cb.jn...j`...j......
22960 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 11 4d 32 43 72 79 70 74 6f 2e 63 61 6c 6c 62 61 63 6b function.......M2Crypto.callback
22980 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ea 17 00 00 6a 6f 1a 00 00 87 94 81 94 8c 10 4d 32 43 72 79 .jn...j`...j....jo.........M2Cry
229a0 70 74 6f 2e 66 74 70 73 6c 69 62 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ed 17 00 00 6a 6f 1a 00 00 pto.ftpslib.jn...j`...j....jo...
229c0 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 94 6a ......M2Crypto.ftpslib.FTP_TLS.j
229e0 6e 1a 00 00 6a 60 02 00 00 6a f0 17 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 21 4d 32 43 72 n...j`...j......class......!M2Cr
22a00 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 94 6a 6e ypto.ftpslib.FTP_TLS.auth_ssl.jn
22a20 1a 00 00 6a 60 02 00 00 6a f3 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 ...j`...j......method......!M2Cr
22a40 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 74 6c 73 94 6a 6e ypto.ftpslib.FTP_TLS.auth_tls.jn
22a60 1a 00 00 6a 60 02 00 00 6a f6 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 ...j`...j......method......%M2Cr
22a80 79 70 74 6f 2e 66 74 70 73 6c 69 62 2e 46 54 50 5f 54 4c 53 2e 6e 74 72 61 6e 73 66 65 72 63 6d ypto.ftpslib.FTP_TLS.ntransfercm
22aa0 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a f9 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f d.jn...j`...j......method.......
22ac0 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 70 72 6f 74 5f 63 94 M2Crypto.ftpslib.FTP_TLS.prot_c.
22ae0 6a 6e 1a 00 00 6a 60 02 00 00 6a fc 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 jn...j`...j......method.......M2
22b00 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 70 94 6a 6e Crypto.ftpslib.FTP_TLS.prot_p.jn
22b20 1a 00 00 6a 60 02 00 00 6a ff 17 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 11 4d 32 43 72 ...j`...j......method.......M2Cr
22b40 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 02 18 00 00 6a 6f 1a ypto.httpslib.jn...j`...j....jo.
22b60 00 00 87 94 81 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 .......!M2Crypto.httpslib.HTTPSC
22b80 6f 6e 6e 65 63 74 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 05 18 00 00 8c 05 63 6c 61 73 73 onnection.jn...j`...j......class
22ba0 94 87 94 81 94 8c 27 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 ......'M2Crypto.httpslib.HTTPSCo
22bc0 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 08 18 00 00 8c 06 nnection.close.jn...j`...j......
22be0 6d 65 74 68 6f 64 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 48 method......)M2Crypto.httpslib.H
22c00 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 6e 1a 00 00 6a 60 02 00 TTPSConnection.connect.jn...j`..
22c20 00 6a 0b 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 68 74 .j......method.......M2Crypto.ht
22c40 74 70 73 6c 69 62 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 64 65 66 61 75 6c 74 5f 70 tpslib.HTTPSConnection.default_p
22c60 6f 72 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 0e 18 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 87 ort.jn...j`...j......attribute..
22c80 94 81 94 8c 2d 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 ....-M2Crypto.httpslib.HTTPSConn
22ca0 65 63 74 69 6f 6e 2e 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 11 18 ection.get_session.jn...j`...j..
22cc0 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c ....method......-M2Crypto.httpsl
22ce0 69 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 ib.HTTPSConnection.set_session.j
22d00 6e 1a 00 00 6a 60 02 00 00 6a 14 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 n...j`...j......method......&M2C
22d20 72 79 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 rypto.httpslib.ProxyHTTPSConnect
22d40 69 6f 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 17 18 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c ion.jn...j`...j......class......
22d60 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 54 54 50 53 43 6f 6e .M2Crypto.httpslib.ProxyHTTPSCon
22d80 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 1a 18 00 00 8c nection.connect.jn...j`...j.....
22da0 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 31 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e .method......1M2Crypto.httpslib.
22dc0 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.
22de0 6a 6e 1a 00 00 6a 60 02 00 00 6a 1d 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 30 4d 32 jn...j`...j......method......0M2
22e00 43 72 79 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 Crypto.httpslib.ProxyHTTPSConnec
22e20 74 69 6f 6e 2e 70 75 74 68 65 61 64 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 20 18 00 00 8c 06 tion.putheader.jn...j`...j......
22e40 6d 65 74 68 6f 64 94 87 94 81 94 8c 31 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 2e 50 method......1M2Crypto.httpslib.P
22e60 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 74 94 6a roxyHTTPSConnection.putrequest.j
22e80 6e 1a 00 00 6a 60 02 00 00 6a 23 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 0b 4d 32 43 n...j`...j#.....method.......M2C
22ea0 72 79 70 74 6f 2e 6d 32 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 26 18 00 00 6a 6f 1a 00 00 87 94 81 rypto.m2.jn...j`...j&...jo......
22ec0 94 8c 11 4d 32 43 72 79 70 74 6f 2e 6d 32 63 72 79 70 74 6f 94 6a 6e 1a 00 00 6a 60 02 00 00 6a ...M2Crypto.m2crypto.jn...j`...j
22ee0 29 18 00 00 6a 6f 1a 00 00 87 94 81 94 8c 11 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 )...jo.........M2Crypto.m2urllib
22f00 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 2c 18 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1c 4d 32 43 72 79 .jn...j`...j,...jo.........M2Cry
22f20 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 2e 6f 70 65 6e 5f 68 74 74 70 73 94 6a 6e 1a 00 00 6a 60 02 pto.m2urllib.open_https.jn...j`.
22f40 00 00 6a 2f 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 12 4d 32 43 72 79 70 74 6f ..j/.....function.......M2Crypto
22f60 2e 6d 32 75 72 6c 6c 69 62 32 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 32 18 00 00 6a 6f 1a 00 00 87 .m2urllib2.jn...j`...j2...jo....
22f80 94 81 94 8c 1f 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 .....M2Crypto.m2urllib2.HTTPSHan
22fa0 64 6c 65 72 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 35 18 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 dler.jn...j`...j5.....class.....
22fc0 8c 2a 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 .*M2Crypto.m2urllib2.HTTPSHandle
22fe0 72 2e 68 74 74 70 73 5f 6f 70 65 6e 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 38 18 00 00 8c 06 6d 65 r.https_open.jn...j`...j8.....me
23000 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 2e 48 54 thod......-M2Crypto.m2urllib2.HT
23020 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 6e 1a 00 00 6a 60 TPSHandler.https_request.jn...j`
23040 02 00 00 6a 3b 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f 2e ...j;.....method.......M2Crypto.
23060 6d 32 75 72 6c 6c 69 62 32 2e 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 6a 6e 1a 00 00 6a 60 02 00 m2urllib2.build_opener.jn...j`..
23080 00 6a 3e 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e .j>.....function.......M2Crypto.
230a0 6d 32 78 6d 6c 72 70 63 6c 69 62 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 41 18 00 00 6a 6f 1a 00 00 m2xmlrpclib.jn...j`...jA...jo...
230c0 87 94 81 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 ....."M2Crypto.m2xmlrpclib.SSL_T
230e0 72 61 6e 73 70 6f 72 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 44 18 00 00 8c 05 63 6c 61 73 73 94 ransport.jn...j`...jD.....class.
23100 87 94 81 94 8c 2a 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 .....*M2Crypto.m2xmlrpclib.SSL_T
23120 72 61 6e 73 70 6f 72 74 2e 72 65 71 75 65 73 74 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 47 18 00 00 ransport.request.jn...j`...jG...
23140 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 ..method......-M2Crypto.m2xmlrpc
23160 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 65 6e 74 94 6a 6e 1a lib.SSL_Transport.user_agent.jn.
23180 00 00 6a 60 02 00 00 6a 4a 18 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 87 94 81 94 8c 12 4d 32 ..j`...jJ.....attribute.......M2
231a0 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 4d 18 00 00 Crypto.threading.jn...j`...jM...
231c0 6a 6f 1a 00 00 87 94 81 94 8c 1a 4d 32 43 72 79 70 74 6f 2e 74 68 72 65 61 64 69 6e 67 2e 63 6c jo.........M2Crypto.threading.cl
231e0 65 61 6e 75 70 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 50 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 eanup.jn...j`...jP.....function.
23200 87 94 81 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 94 6a 6e ......M2Crypto.threading.init.jn
23220 1a 00 00 6a 60 02 00 00 6a 53 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0d 4d 32 ...j`...jS.....function.......M2
23240 43 72 79 70 74 6f 2e 75 74 69 6c 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 56 18 00 00 6a 6f 1a 00 00 Crypto.util.jn...j`...jV...jo...
23260 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 55 74 69 6c 45 72 72 6f 72 94 6a 6e ......M2Crypto.util.UtilError.jn
23280 1a 00 00 6a 60 02 00 00 6a 59 18 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 18 4d ...j`...jY.....exception.......M
232a0 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 62 69 6e 5f 74 6f 5f 68 65 78 94 6a 6e 1a 00 00 6a 60 02 2Crypto.util.bin_to_hex.jn...j`.
232c0 00 00 6a 5c 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1f 4d 32 43 72 79 70 74 6f ..j\.....function.......M2Crypto
232e0 2e 75 74 69 6c 2e 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 60 02 .util.genparam_callback.jn...j`.
23300 00 00 6a 5f 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f ..j_.....function......$M2Crypto
23320 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 61 63 6b 94 6a 6e 1a .util.no_passphrase_callback.jn.
23340 00 00 6a 60 02 00 00 6a 62 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 19 4d 32 43 ..j`...jb.....function.......M2C
23360 72 79 70 74 6f 2e 75 74 69 6c 2e 6f 63 74 78 5f 74 6f 5f 6e 75 6d 94 6a 6e 1a 00 00 6a 60 02 00 rypto.util.octx_to_num.jn...j`..
23380 00 6a 65 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e .je.....function......!M2Crypto.
233a0 75 74 69 6c 2e 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 60 util.passphrase_callback.jn...j`
233c0 02 00 00 6a 68 18 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 ...jh.....function.......M2Crypt
233e0 6f 2e 75 74 69 6c 2e 70 6b 63 73 35 5f 70 61 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6b 18 00 00 o.util.pkcs5_pad.jn...j`...jk...
23400 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 17 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 70 ..function.......M2Crypto.util.p
23420 6b 63 73 37 5f 70 61 64 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 6e 18 00 00 8c 08 66 75 6e 63 74 69 kcs7_pad.jn...j`...jn.....functi
23440 6f 6e 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 2e 71 75 69 65 74 5f 67 65 6e on......%M2Crypto.util.quiet_gen
23460 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 60 02 00 00 6a 71 18 00 00 8c 08 param_callback.jn...j`...jq.....
23480 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 94 6a 6e 1a 00 function.......M2Crypto.SSL.jn..
234a0 00 6a 5c 02 00 00 6a 75 18 00 00 6a 6f 1a 00 00 87 94 81 94 8c 15 4d 32 43 72 79 70 74 6f 2e 53 .j\...ju...jo.........M2Crypto.S
234c0 53 4c 2e 53 53 4c 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 78 18 00 00 8c 09 65 78 63 SL.SSLError.jn...j\...jx.....exc
234e0 65 70 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 54 69 6d eption.......M2Crypto.SSL.SSLTim
23500 65 6f 75 74 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 7b 18 00 00 8c 09 65 78 63 65 70 eoutError.jn...j\...j{.....excep
23520 74 69 6f 6e 94 87 94 81 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 tion.......M2Crypto.SSL.Checker.
23540 6a 6e 1a 00 00 6a 5c 02 00 00 6a 7e 18 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1c 4d 32 43 72 79 70 jn...j\...j~...jo.........M2Cryp
23560 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 43 68 65 63 6b 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 to.SSL.Checker.Checker.jn...j\..
23580 00 6a 81 18 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c .j......class......+M2Crypto.SSL
235a0 2e 43 68 65 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 .Checker.Checker.numericIpMatch.
235c0 6a 6e 1a 00 00 6a 5c 02 00 00 6a 84 18 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 87 94 81 94 8c jn...j\...j......attribute......
235e0 22 4d 32 43 72 79 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 "M2Crypto.SSL.Checker.NoCertific
23600 61 74 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 87 18 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 ate.jn...j\...j......exception..
23620 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 2e 53 53 4c 56 65 72 ....)M2Crypto.SSL.Checker.SSLVer
23640 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 8a 18 00 00 8c 09 ificationError.jn...j\...j......
23660 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 68 65 exception......%M2Crypto.SSL.Che
23680 63 6b 65 72 2e 57 72 6f 6e 67 43 65 72 74 69 66 69 63 61 74 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 cker.WrongCertificate.jn...j\...
236a0 6a 8d 18 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 1e 4d 32 43 72 79 70 74 6f 2e j......exception.......M2Crypto.
236c0 53 53 4c 2e 43 68 65 63 6b 65 72 2e 57 72 6f 6e 67 48 6f 73 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 SSL.Checker.WrongHost.jn...j\...
236e0 6a 90 18 00 00 8c 09 65 78 63 65 70 74 69 6f 6e 94 87 94 81 94 8c 13 4d 32 43 72 79 70 74 6f 2e j......exception.......M2Crypto.
23700 53 53 4c 2e 43 69 70 68 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 93 18 00 00 6a 6f 1a 00 00 87 SSL.Cipher.jn...j\...j....jo....
23720 94 81 94 8c 1a 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 94 .....M2Crypto.SSL.Cipher.Cipher.
23740 6a 6e 1a 00 00 6a 5c 02 00 00 6a 96 18 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 1f 4d 32 43 jn...j\...j......class.......M2C
23760 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 6e 1a rypto.SSL.Cipher.Cipher.name.jn.
23780 00 00 6a 5c 02 00 00 6a 99 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 ..j\...j......method......"M2Cry
237a0 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 2e 76 65 72 73 69 6f 6e 94 6a 6e pto.SSL.Cipher.Cipher.version.jn
237c0 1a 00 00 6a 5c 02 00 00 6a 9c 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 20 4d 32 43 72 ...j\...j......method.......M2Cr
237e0 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 2e 43 69 70 68 65 72 5f 53 74 61 63 6b 94 6a 6e 1a ypto.SSL.Cipher.Cipher_Stack.jn.
23800 00 00 6a 5c 02 00 00 6a 9f 18 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 17 4d 32 43 72 79 70 ..j\...j......class.......M2Cryp
23820 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a a2 18 00 to.SSL.Connection.jn...j\...j...
23840 00 6a 6f 1a 00 00 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 .jo........"M2Crypto.SSL.Connect
23860 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a a5 18 00 00 8c 05 ion.Connection.jn...j\...j......
23880 63 6c 61 73 73 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 class......)M2Crypto.SSL.Connect
238a0 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 61 63 63 65 70 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 ion.Connection.accept.jn...j\...
238c0 6a a8 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c j......method......-M2Crypto.SSL
238e0 2e 43 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 5f 73 73 .Connection.Connection.accept_ss
23900 6c 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ab 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 l.jn...j\...j......method......'
23920 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
23940 6f 6e 2e 62 69 6e 64 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ae 18 00 00 8c 06 6d 65 74 68 6f 64 94 on.bind.jn...j\...j......method.
23960 87 94 81 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 43 6f .....(M2Crypto.SSL.Connection.Co
23980 6e 6e 65 63 74 69 6f 6e 2e 63 6c 65 61 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a b1 18 00 00 8c 06 nnection.clear.jn...j\...j......
239a0 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 method......(M2Crypto.SSL.Connec
239c0 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 tion.Connection.close.jn...j\...
239e0 6a b4 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c j......method......*M2Crypto.SSL
23a00 2e 43 6f 6e 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 .Connection.Connection.connect.j
23a20 6e 1a 00 00 6a 5c 02 00 00 6a b7 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 n...j\...j......method.......M2C
23a40 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.
23a60 63 6f 6e 6e 65 63 74 5f 73 73 6c 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ba 18 00 00 8c 06 6d 65 74 connect_ssl.jn...j\...j......met
23a80 68 6f 64 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f hod......)M2Crypto.SSL.Connectio
23aa0 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 66 69 6c 65 6e 6f 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a bd n.Connection.fileno.jn...j\...j.
23ac0 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 .....method......-M2Crypto.SSL.C
23ae0 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 63 69 70 68 65 72 94 onnection.Connection.get_cipher.
23b00 6a 6e 1a 00 00 6a 5c 02 00 00 6a c0 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 32 4d 32 jn...j\...j......method......2M2
23b20 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
23b40 2e 67 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a c3 18 00 00 .get_cipher_list.jn...j\...j....
23b60 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e ..method.......M2Crypto.SSL.Conn
23b80 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 6e ection.Connection.get_ciphers.jn
23ba0 1a 00 00 6a 5c 02 00 00 6a c6 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 ...j\...j......method.......M2Cr
23bc0 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 67 ypto.SSL.Connection.Connection.g
23be0 65 74 5f 63 6f 6e 74 65 78 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a c9 18 00 00 8c 06 6d 65 74 68 et_context.jn...j\...j......meth
23c00 6f 64 94 87 94 81 94 8c 3e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e od......>M2Crypto.SSL.Connection
23c20 2e 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 69 6f 6e 5f .Connection.get_default_session_
23c40 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a cc 18 00 00 8c 06 6d 65 74 68 6f 64 94 timeout.jn...j\...j......method.
23c60 87 94 81 94 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 .....0M2Crypto.SSL.Connection.Co
23c80 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 70 65 65 72 5f 63 65 72 74 94 6a 6e 1a 00 00 6a 5c 02 00 nnection.get_peer_cert.jn...j\..
23ca0 00 6a cf 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 36 4d 32 43 72 79 70 74 6f 2e 53 53 .j......method......6M2Crypto.SS
23cc0 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 70 65 65 72 L.Connection.Connection.get_peer
23ce0 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a d2 18 00 00 8c 06 6d 65 74 _cert_chain.jn...j\...j......met
23d00 68 6f 64 94 87 94 81 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 hod.......M2Crypto.SSL.Connectio
23d20 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 6e 1a 00 00 6a 5c n.Connection.get_session.jn...j\
23d40 02 00 00 6a d5 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2f 4d 32 43 72 79 70 74 6f 2e ...j......method....../M2Crypto.
23d60 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 67 65 74 5f 73 68 SSL.Connection.Connection.get_sh
23d80 75 74 64 6f 77 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a d8 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 utdown.jn...j\...j......method..
23da0 94 81 94 8c 3a 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
23dc0 6e 65 63 74 69 6f 6e 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 nection.get_socket_read_timeout.
23de0 6a 6e 1a 00 00 6a 5c 02 00 00 6a db 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 3b 4d 32 jn...j\...j......method......;M2
23e00 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
23e20 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 6e 1a 00 00 6a .get_socket_write_timeout.jn...j
23e40 5c 02 00 00 6a de 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 74 6f \...j......method......,M2Crypto
23e60 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 67 65 74 5f 73 .SSL.Connection.Connection.get_s
23e80 74 61 74 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a e1 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 tate.jn...j\...j......method....
23ea0 94 8c 33 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 ..3M2Crypto.SSL.Connection.Conne
23ec0 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 6a 6e 1a 00 00 6a 5c 02 00 ction.get_verify_depth.jn...j\..
23ee0 00 6a e4 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 .j......method......2M2Crypto.SS
23f00 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 69 L.Connection.Connection.get_veri
23f20 66 79 5f 6d 6f 64 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a e7 18 00 00 8c 06 6d 65 74 68 6f 64 94 fy_mode.jn...j\...j......method.
23f40 87 94 81 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 43 6f .....4M2Crypto.SSL.Connection.Co
23f60 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 5f 76 65 72 69 66 79 5f 72 65 73 75 6c 74 94 6a 6e 1a 00 00 nnection.get_verify_result.jn...
23f80 6a 5c 02 00 00 6a ea 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 j\...j......method.......M2Crypt
23fa0 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 67 65 74 5f o.SSL.Connection.Connection.get_
23fc0 76 65 72 73 69 6f 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ed 18 00 00 8c 06 6d 65 74 68 6f 64 94 version.jn...j\...j......method.
23fe0 87 94 81 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 ......M2Crypto.SSL.Connection.Co
24000 6e 6e 65 63 74 69 6f 6e 2e 67 65 74 70 65 65 72 6e 61 6d 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a nnection.getpeername.jn...j\...j
24020 f0 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e ......method.......M2Crypto.SSL.
24040 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 73 6f 63 6b 6e 61 6d Connection.Connection.getsocknam
24060 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a f3 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d e.jn...j\...j......method......-
24080 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
240a0 6f 6e 2e 67 65 74 73 6f 63 6b 6f 70 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a f6 18 00 00 8c 06 6d on.getsockopt.jn...j\...j......m
240c0 65 74 68 6f 64 94 87 94 81 94 8c 29 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 ethod......)M2Crypto.SSL.Connect
240e0 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6c 69 73 74 65 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 ion.Connection.listen.jn...j\...
24100 6a f9 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c j......method.......M2Crypto.SSL
24120 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6d 32 5f 62 69 6f 5f 66 72 .Connection.Connection.m2_bio_fr
24140 65 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a fc 18 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ee.jn...j\...j......method......
24160 31 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 1M2Crypto.SSL.Connection.Connect
24180 69 6f 6e 2e 6d 32 5f 62 69 6f 5f 6e 6f 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ff 18 ion.m2_bio_noclose.jn...j\...j..
241a0 00 00 8c 09 61 74 74 72 69 62 75 74 65 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c ....attribute.......M2Crypto.SSL
241c0 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 6d 32 5f 73 73 6c 5f 66 72 .Connection.Connection.m2_ssl_fr
241e0 65 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 02 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c ee.jn...j\...j......method......
24200 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 6e 65 63 74 +M2Crypto.SSL.Connection.Connect
24220 69 6f 6e 2e 6d 61 6b 65 66 69 6c 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 05 19 00 00 8c 06 6d 65 ion.makefile.jn...j\...j......me
24240 74 68 6f 64 94 87 94 81 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 thod......*M2Crypto.SSL.Connecti
24260 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 65 6e 64 69 6e 67 94 6a 6e 1a 00 00 6a 5c 02 00 00 on.Connection.pending.jn...j\...
24280 6a 08 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c j......method......'M2Crypto.SSL
242a0 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 61 64 94 6a 6e 1a 00 .Connection.Connection.read.jn..
242c0 00 6a 5c 02 00 00 6a 0b 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 43 72 79 70 .j\...j......method......'M2Cryp
242e0 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
24300 76 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 0e 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2c v.jn...j\...j......method......,
24320 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
24340 6f 6e 2e 72 65 63 76 5f 69 6e 74 6f 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 11 19 00 00 8c 06 6d 65 on.recv_into.jn...j\...j......me
24360 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 thod.......M2Crypto.SSL.Connecti
24380 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 72 65 6e 65 67 6f 74 69 61 74 65 94 6a 6e 1a 00 00 6a on.Connection.renegotiate.jn...j
243a0 5c 02 00 00 6a 14 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 43 72 79 70 74 6f \...j......method......'M2Crypto
243c0 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 6e 64 94 .SSL.Connection.Connection.send.
243e0 6a 6e 1a 00 00 6a 5c 02 00 00 6a 17 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2a 4d 32 jn...j\...j......method......*M2
24400 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
24420 2e 73 65 6e 64 61 6c 6c 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 1a 19 00 00 8c 06 6d 65 74 68 6f 64 .sendall.jn...j\...j......method
24440 94 87 94 81 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 ......<M2Crypto.SSL.Connection.C
24460 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 6f 6e 43 68 onnection.serverPostConnectionCh
24480 65 63 6b 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 1d 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 eck.jn...j\...j......method.....
244a0 8c 2c 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
244c0 74 69 6f 6e 2e 73 65 74 31 5f 68 6f 73 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 20 19 00 00 8c 06 tion.set1_host.jn...j\...j......
244e0 6d 65 74 68 6f 64 94 87 94 81 94 8c 33 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 method......3M2Crypto.SSL.Connec
24500 74 69 6f 6e 2e 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 tion.Connection.set_accept_state
24520 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 23 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2a 4d .jn...j\...j#.....method......*M
24540 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
24560 6e 2e 73 65 74 5f 62 69 6f 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 26 19 00 00 8c 06 6d 65 74 68 6f n.set_bio.jn...j\...j&.....metho
24580 64 94 87 94 81 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 6e 2e d......2M2Crypto.SSL.Connection.
245a0 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 6e 1a 00 00 Connection.set_cipher_list.jn...
245c0 6a 5c 02 00 00 6a 29 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 42 4d 32 43 72 79 70 74 j\...j).....method......BM2Crypt
245e0 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_
24600 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 94 6a 6e 1a 00 client_CA_list_from_context.jn..
24620 00 6a 5c 02 00 00 6a 2c 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 3f 4d 32 43 72 79 70 .j\...j,.....method......?M2Cryp
24640 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
24660 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 6e 1a 00 00 6a _client_CA_list_from_file.jn...j
24680 5c 02 00 00 6a 2f 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 34 4d 32 43 72 79 70 74 6f \...j/.....method......4M2Crypto
246a0 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 63 .SSL.Connection.Connection.set_c
246c0 6f 6e 6e 65 63 74 5f 73 74 61 74 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 32 19 00 00 8c 06 6d 65 onnect_state.jn...j\...j2.....me
246e0 74 68 6f 64 94 87 94 81 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 thod......EM2Crypto.SSL.Connecti
24700 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 63 74 69 6f on.Connection.set_post_connectio
24720 6e 5f 63 68 65 63 6b 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 35 19 00 00 n_check_callback.jn...j\...j5...
24740 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e ..method.......M2Crypto.SSL.Conn
24760 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 6a 6e ection.Connection.set_session.jn
24780 1a 00 00 6a 5c 02 00 00 6a 38 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 35 4d 32 43 72 ...j\...j8.....method......5M2Cr
247a0 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
247c0 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 3b 19 00 et_session_id_ctx.jn...j\...j;..
247e0 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ...method....../M2Crypto.SSL.Con
24800 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.
24820 6a 6e 1a 00 00 6a 5c 02 00 00 6a 3e 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 3a 4d 32 jn...j\...j>.....method......:M2
24840 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
24860 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 6a 6e 1a 00 00 6a 5c .set_socket_read_timeout.jn...j\
24880 02 00 00 6a 41 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 3b 4d 32 43 72 79 70 74 6f 2e ...jA.....method......;M2Crypto.
248a0 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 73 6f SSL.Connection.Connection.set_so
248c0 63 6b 65 74 5f 77 72 69 74 65 5f 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 44 19 cket_write_timeout.jn...j\...jD.
248e0 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 35 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ....method......5M2Crypto.SSL.Co
24900 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 73 6c 5f 63 6c 6f 73 nnection.Connection.set_ssl_clos
24920 65 5f 66 6c 61 67 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 47 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 e_flag.jn...j\...jG.....method..
24940 94 81 94 8c 37 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 ....7M2Crypto.SSL.Connection.Con
24960 6e 65 63 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 6e 1a nection.set_tlsext_host_name.jn.
24980 00 00 6a 5c 02 00 00 6a 4a 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 ..j\...jJ.....method.......M2Cry
249a0 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 65 pto.SSL.Connection.Connection.se
249c0 74 62 6c 6f 63 6b 69 6e 67 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 4d 19 00 00 8c 06 6d 65 74 68 6f tblocking.jn...j\...jM.....metho
249e0 64 94 87 94 81 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 6e 2e d......-M2Crypto.SSL.Connection.
24a00 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 73 6f 63 6b 6f 70 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 Connection.setsockopt.jn...j\...
24a20 6a 50 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c jP.....method......-M2Crypto.SSL
24a40 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 74 69 6d 65 6f 75 .Connection.Connection.settimeou
24a60 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 53 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d t.jn...j\...jS.....method......-
24a80 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
24aa0 6f 6e 2e 73 65 74 75 70 5f 61 64 64 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 56 19 00 00 8c 06 6d on.setup_addr.jn...j\...jV.....m
24ac0 65 74 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 ethod......,M2Crypto.SSL.Connect
24ae0 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 75 70 5f 73 73 6c 94 6a 6e 1a 00 00 6a 5c ion.Connection.setup_ssl.jn...j\
24b00 02 00 00 6a 59 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2b 4d 32 43 72 79 70 74 6f 2e ...jY.....method......+M2Crypto.
24b20 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 68 75 74 64 6f SSL.Connection.Connection.shutdo
24b40 77 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 5c 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c wn.jn...j\...j\.....method......
24b60 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 74 0M2Crypto.SSL.Connection.Connect
24b80 69 6f 6e 2e 73 73 6c 5f 67 65 74 5f 65 72 72 6f 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 5f 19 00 ion.ssl_get_error.jn...j\...j_..
24ba0 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e ...method......,M2Crypto.SSL.Con
24bc0 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 76 65 72 69 66 79 5f 6f 6b 94 6a 6e 1a nection.Connection.verify_ok.jn.
24be0 00 00 6a 5c 02 00 00 6a 62 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 ..j\...jb.....method......(M2Cry
24c00 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 77 72 pto.SSL.Connection.Connection.wr
24c20 69 74 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 65 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 ite.jn...j\...je.....method.....
24c40 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 6a 6e 1a 00 00 6a 5c 02 00 ..M2Crypto.SSL.Context.jn...j\..
24c60 00 6a 68 19 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f .jh...jo.........M2Crypto.SSL.Co
24c80 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 6b 19 00 00 8c 05 63 ntext.Context.jn...j\...jk.....c
24ca0 6c 61 73 73 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e lass......(M2Crypto.SSL.Context.
24cc0 43 6f 6e 74 65 78 74 2e 61 64 64 5f 73 65 73 73 69 6f 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 6e Context.add_session.jn...j\...jn
24ce0 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 22 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 .....method......"M2Crypto.SSL.C
24d00 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 63 6c 6f 73 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ontext.Context.close.jn...j\...j
24d20 71 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 31 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e q.....method......1M2Crypto.SSL.
24d40 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 Context.Context.get_allow_unknow
24d60 6e 5f 63 61 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 74 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 n_ca.jn...j\...jt.....method....
24d80 94 8c 2b 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.
24da0 67 65 74 5f 63 65 72 74 5f 73 74 6f 72 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 77 19 00 00 8c 06 get_cert_store.jn...j\...jw.....
24dc0 6d 65 74 68 6f 64 94 87 94 81 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
24de0 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
24e00 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 7a 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 30 4d .jn...j\...jz.....method......0M
24e20 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 67 65 74 5f 2Crypto.SSL.Context.Context.get_
24e40 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 7d 19 00 00 8c session_timeout.jn...j\...j}....
24e60 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 .method......-M2Crypto.SSL.Conte
24e80 78 74 2e 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 6e 1a 00 xt.Context.get_verify_depth.jn..
24ea0 00 6a 5c 02 00 00 6a 80 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 .j\...j......method......,M2Cryp
24ec0 74 6f 2e 53 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 to.SSL.Context.Context.get_verif
24ee0 79 5f 6d 6f 64 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 83 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 y_mode.jn...j\...j......method..
24f00 94 81 94 8c 26 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
24f20 74 2e 6c 6f 61 64 5f 63 65 72 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 86 19 00 00 8c 06 6d 65 74 t.load_cert.jn...j\...j......met
24f40 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 hod......,M2Crypto.SSL.Context.C
24f60 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 6e 1a 00 00 6a 5c 02 00 ontext.load_cert_chain.jn...j\..
24f80 00 6a 89 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 .j......method......+M2Crypto.SS
24fa0 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 43 41 L.Context.Context.load_client_CA
24fc0 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 8c 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2b 4d .jn...j\...j......method......+M
24fe0 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 6c 6f 61 64 2Crypto.SSL.Context.Context.load
25000 5f 63 6c 69 65 6e 74 5f 63 61 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 8f 19 00 00 8c 06 6d 65 74 68 _client_ca.jn...j\...j......meth
25020 6f 64 94 87 94 81 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 od......-M2Crypto.SSL.Context.Co
25040 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 69 6e 66 6f 94 6a 6e 1a 00 00 6a 5c 02 00 ntext.load_verify_info.jn...j\..
25060 00 6a 92 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 32 4d 32 43 72 79 70 74 6f 2e 53 53 .j......method......2M2Crypto.SS
25080 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f L.Context.Context.load_verify_lo
250a0 63 61 74 69 6f 6e 73 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 95 19 00 00 8c 06 6d 65 74 68 6f 64 94 cations.jn...j\...j......method.
250c0 87 94 81 94 8c 2c 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 .....,M2Crypto.SSL.Context.Conte
250e0 78 74 2e 6d 32 5f 73 73 6c 5f 63 74 78 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 98 19 xt.m2_ssl_ctx_free.jn...j\...j..
25100 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2b 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ....method......+M2Crypto.SSL.Co
25120 6e 74 65 78 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 6e 1a ntext.Context.remove_session.jn.
25140 00 00 6a 5c 02 00 00 6a 9b 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 31 4d 32 43 72 79 ..j\...j......method......1M2Cry
25160 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 61 6c 6c 6f pto.SSL.Context.Context.set_allo
25180 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 9e 19 00 00 8c 06 6d 65 w_unknown_ca.jn...j\...j......me
251a0 74 68 6f 64 94 87 94 81 94 8c 2c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e thod......,M2Crypto.SSL.Context.
251c0 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 6e 1a 00 00 6a 5c 02 Context.set_cipher_list.jn...j\.
251e0 00 00 6a a1 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 39 4d 32 43 72 79 70 74 6f 2e 53 ..j......method......9M2Crypto.S
25200 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 SL.Context.Context.set_client_CA
25220 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a a4 19 00 00 8c _list_from_file.jn...j\...j.....
25240 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 35 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 .method......5M2Crypto.SSL.Conte
25260 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 64 65 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 xt.Context.set_default_verify_pa
25280 74 68 73 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a a7 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 ths.jn...j\...j......method.....
252a0 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
252c0 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a aa 19 00 00 et_info_callback.jn...j\...j....
252e0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 ..method......(M2Crypto.SSL.Cont
25300 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 94 6a 6e 1a 00 00 6a 5c 02 ext.Context.set_options.jn...j\.
25320 00 00 6a ad 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 33 4d 32 43 72 79 70 74 6f 2e 53 ..j......method......3M2Crypto.S
25340 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 63 SL.Context.Context.set_session_c
25360 61 63 68 65 5f 6d 6f 64 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a b0 19 00 00 8c 06 6d 65 74 68 6f ache_mode.jn...j\...j......metho
25380 64 94 87 94 81 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 d....../M2Crypto.SSL.Context.Con
253a0 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 6e 1a 00 00 6a 5c 02 text.set_session_id_ctx.jn...j\.
253c0 00 00 6a b3 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 ..j......method......0M2Crypto.S
253e0 53 4c 2e 43 6f 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 SL.Context.Context.set_session_t
25400 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a b6 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 imeout.jn...j\...j......method..
25420 94 81 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
25440 74 2e 73 65 74 5f 74 6d 70 5f 64 68 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a b9 19 00 00 8c 06 6d 65 t.set_tmp_dh.jn...j\...j......me
25460 74 68 6f 64 94 87 94 81 94 8c 30 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 2e thod......0M2Crypto.SSL.Context.
25480 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 94 6a 6e 1a 00 Context.set_tmp_dh_callback.jn..
254a0 00 6a 5c 02 00 00 6a bc 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 .j\...j......method......(M2Cryp
254c0 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 74 6d 70 5f 72 to.SSL.Context.Context.set_tmp_r
254e0 73 61 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a bf 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c sa.jn...j\...j......method......
25500 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
25520 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a c2 19 t_tmp_rsa_callback.jn...j\...j..
25540 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 27 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f ....method......'M2Crypto.SSL.Co
25560 6e 74 65 78 74 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 76 65 72 69 66 79 94 6a 6e 1a 00 00 6a 5c ntext.Context.set_verify.jn...j\
25580 02 00 00 6a c5 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 74 6f 2e ...j......method.......M2Crypto.
255a0 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 63 74 78 6d 61 70 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a c8 19 SSL.Context.ctxmap.jn...j\...j..
255c0 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 18 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e ....function.......M2Crypto.SSL.
255e0 43 6f 6e 74 65 78 74 2e 6d 61 70 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a cb 19 00 00 8c 08 66 75 6e Context.map.jn...j\...j......fun
25600 63 74 69 6f 6e 94 87 94 81 94 8c 16 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 ction.......M2Crypto.SSL.SSLServ
25620 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ce 19 00 00 6a 6f 1a 00 00 87 94 81 94 8c 27 4d 32 43 er.jn...j\...j....jo........'M2C
25640 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 65 72 2e 46 6f 72 6b 69 6e 67 53 53 4c 53 65 rypto.SSL.SSLServer.ForkingSSLSe
25660 72 76 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a d1 19 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 rver.jn...j\...j......class.....
25680 8c 20 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 76 ..M2Crypto.SSL.SSLServer.SSLServ
256a0 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a d4 19 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 2d er.jn...j\...j......class......-
256c0 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 76 65 72 M2Crypto.SSL.SSLServer.SSLServer
256e0 2e 68 61 6e 64 6c 65 5f 65 72 72 6f 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a d7 19 00 00 8c 06 6d .handle_error.jn...j\...j......m
25700 65 74 68 6f 64 94 87 94 81 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 53 4c 53 65 72 76 ethod....../M2Crypto.SSL.SSLServ
25720 65 72 2e 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 6e 1a 00 er.SSLServer.handle_request.jn..
25740 00 6a 5c 02 00 00 6a da 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 29 4d 32 43 72 79 70 .j\...j......method......)M2Cryp
25760 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 4c 53 65 72 to.SSL.SSLServer.ThreadingSSLSer
25780 76 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a dd 19 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c ver.jn...j\...j......class......
257a0 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 .M2Crypto.SSL.Session.jn...j\...
257c0 6a e0 19 00 00 6a 6f 1a 00 00 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 j....jo.........M2Crypto.SSL.Ses
257e0 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a e3 19 00 00 8c 05 63 6c sion.Session.jn...j\...j......cl
25800 61 73 73 94 87 94 81 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 ass......#M2Crypto.SSL.Session.S
25820 65 73 73 69 6f 6e 2e 61 73 5f 64 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a e6 19 00 00 8c 06 6d ession.as_der.jn...j\...j......m
25840 65 74 68 6f 64 94 87 94 81 94 8c 24 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e ethod......$M2Crypto.SSL.Session
25860 2e 53 65 73 73 69 6f 6e 2e 61 73 5f 74 65 78 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a e9 19 00 00 .Session.as_text.jn...j\...j....
25880 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 ..method......%M2Crypto.SSL.Sess
258a0 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 6d 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a ion.Session.get_time.jn...j\...j
258c0 ec 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e ......method......(M2Crypto.SSL.
258e0 53 65 73 73 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 6e 1a 00 Session.Session.get_timeout.jn..
25900 00 6a 5c 02 00 00 6a ef 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 30 4d 32 43 72 79 70 .j\...j......method......0M2Cryp
25920 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 6d 32 5f 73 73 6c 5f 73 65 to.SSL.Session.Session.m2_ssl_se
25940 73 73 69 6f 6e 5f 66 72 65 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a f2 19 00 00 8c 06 6d 65 74 68 ssion_free.jn...j\...j......meth
25960 6f 64 94 87 94 81 94 8c 25 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 od......%M2Crypto.SSL.Session.Se
25980 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a f5 19 00 00 8c 06 ssion.set_time.jn...j\...j......
259a0 6d 65 74 68 6f 64 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f method......(M2Crypto.SSL.Sessio
259c0 6e 2e 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 n.Session.set_timeout.jn...j\...
259e0 6a f8 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 6f 2e 53 53 4c j......method......&M2Crypto.SSL
25a00 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 2e 77 72 69 74 65 5f 62 69 6f 94 6a 6e 1a 00 00 .Session.Session.write_bio.jn...
25a20 6a 5c 02 00 00 6a fb 19 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 j\...j......method......!M2Crypt
25a40 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 6e 1a 00 00 o.SSL.Session.load_session.jn...
25a60 6a 5c 02 00 00 6a fe 19 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 23 4d 32 43 72 79 j\...j......function......#M2Cry
25a80 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 70 65 72 94 6a pto.SSL.TwistedProtocolWrapper.j
25aa0 6e 1a 00 00 6a 5c 02 00 00 6a 01 1a 00 00 6a 6f 1a 00 00 87 94 81 94 8c 36 4d 32 43 72 79 70 74 n...j\...j....jo........6M2Crypt
25ac0 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 53 o.SSL.TwistedProtocolWrapper.TLS
25ae0 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 04 1a 00 00 8c ProtocolWrapper.jn...j\...j.....
25b00 05 63 6c 61 73 73 94 87 94 81 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 .class......<M2Crypto.SSL.Twiste
25b20 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
25b40 70 65 72 2e 63 6c 65 61 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 07 1a 00 00 8c 06 6d 65 74 68 6f per.clear.jn...j\...j......metho
25b60 64 94 87 94 81 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 d......EM2Crypto.SSL.TwistedProt
25b80 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 63 ocolWrapper.TLSProtocolWrapper.c
25ba0 6f 6e 6e 65 63 74 69 6f 6e 4c 6f 73 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 0a 1a 00 00 8c 06 6d onnectionLost.jn...j\...j......m
25bc0 65 74 68 6f 64 94 87 94 81 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 74 65 64 ethod......EM2Crypto.SSL.Twisted
25be0 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 70 ProtocolWrapper.TLSProtocolWrapp
25c00 65 72 2e 63 6f 6e 6e 65 63 74 69 6f 6e 4d 61 64 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 0d 1a 00 er.connectionMade.jn...j\...j...
25c20 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 43 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 ...method......CM2Crypto.SSL.Twi
25c40 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
25c60 72 61 70 70 65 72 2e 64 61 74 61 52 65 63 65 69 76 65 64 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 10 rapper.dataReceived.jn...j\...j.
25c80 1a 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 45 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 .....method......EM2Crypto.SSL.T
25ca0 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
25cc0 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 6e 1a 00 00 6a 5c 02 lWrapper.loseConnection.jn...j\.
25ce0 00 00 6a 13 1a 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 3f 4d 32 43 72 79 70 74 6f 2e 53 ..j......method......?M2Crypto.S
25d00 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 53 50 72 6f SL.TwistedProtocolWrapper.TLSPro
25d20 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 73 74 61 72 74 54 4c 53 94 6a 6e 1a 00 00 6a 5c 02 00 00 tocolWrapper.startTLS.jn...j\...
25d40 6a 16 1a 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 3c 4d 32 43 72 79 70 74 6f 2e 53 53 4c j......method......<M2Crypto.SSL
25d60 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
25d80 63 6f 6c 57 72 61 70 70 65 72 2e 77 72 69 74 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 19 1a 00 00 colWrapper.write.jn...j\...j....
25da0 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 44 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 73 ..method......DM2Crypto.SSL.Twis
25dc0 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 72 tedProtocolWrapper.TLSProtocolWr
25de0 61 70 70 65 72 2e 77 72 69 74 65 53 65 71 75 65 6e 63 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 1c apper.writeSequence.jn...j\...j.
25e00 1a 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2e 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 .....method.......M2Crypto.SSL.T
25e20 77 69 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e 6e 65 63 74 53 53 4c wistedProtocolWrapper.connectSSL
25e40 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 1f 1a 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c .jn...j\...j......function......
25e60 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
25e80 70 70 65 72 2e 63 6f 6e 6e 65 63 74 54 43 50 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 22 1a 00 00 8c pper.connectTCP.jn...j\...j"....
25ea0 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 2d 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 54 77 69 .function......-M2Crypto.SSL.Twi
25ec0 73 74 65 64 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 6c 69 73 74 65 6e 53 53 4c 94 6a 6e stedProtocolWrapper.listenSSL.jn
25ee0 1a 00 00 6a 5c 02 00 00 6a 25 1a 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 2d 4d 32 ...j\...j%.....function......-M2
25f00 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 70 65 Crypto.SSL.TwistedProtocolWrappe
25f20 72 2e 6c 69 73 74 65 6e 54 43 50 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 28 1a 00 00 8c 08 66 75 6e r.listenTCP.jn...j\...j(.....fun
25f40 63 74 69 6f 6e 94 87 94 81 94 8c 0f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 6a 6e 1a 00 ction.......M2Crypto.SSL.cb.jn..
25f60 00 6a 5c 02 00 00 6a 2b 1a 00 00 6a 6f 1a 00 00 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 .j\...j+...jo........!M2Crypto.S
25f80 53 4c 2e 63 62 2e 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 6e 1a 00 00 6a 5c 02 SL.cb.ssl_info_callback.jn...j\.
25fa0 00 00 6a 2e 1a 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 23 4d 32 43 72 79 70 74 6f ..j......function......#M2Crypto
25fc0 2e 53 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 94 6a 6e 1a 00 .SSL.cb.ssl_verify_callback.jn..
25fe0 00 6a 5c 02 00 00 6a 31 1a 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 34 4d 32 43 72 .j\...j1.....function......4M2Cr
26000 79 70 74 6f 2e 53 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 ypto.SSL.cb.ssl_verify_callback_
26020 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 34 1a 00 00 allow_unknown_ca.jn...j\...j4...
26040 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 28 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 ..function......(M2Crypto.SSL.cb
26060 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 6e 1a 00 00 6a .ssl_verify_callback_stub.jn...j
26080 5c 02 00 00 6a 37 1a 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1b 4d 32 43 72 79 70 \...j7.....function.......M2Cryp
260a0 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 6a 6e 1a 00 00 6a 5c 02 00 00 to.SSL.ssl_dispatcher.jn...j\...
260c0 6a 3a 1a 00 00 6a 6f 1a 00 00 87 94 81 94 8c 2a 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c j:...jo........*M2Crypto.SSL.ssl
260e0 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 6e 1a 00 00 _dispatcher.ssl_dispatcher.jn...
26100 6a 5c 02 00 00 6a 3d 1a 00 00 8c 05 63 6c 61 73 73 94 87 94 81 94 8c 32 4d 32 43 72 79 70 74 6f j\...j=.....class......2M2Crypto
26120 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 74 63 68 .SSL.ssl_dispatcher.ssl_dispatch
26140 65 72 2e 63 6f 6e 6e 65 63 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 40 1a 00 00 8c 06 6d 65 74 68 er.connect.jn...j\...j@.....meth
26160 6f 64 94 87 94 81 94 8c 38 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 od......8M2Crypto.SSL.ssl_dispat
26180 63 68 65 72 2e 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 cher.ssl_dispatcher.create_socke
261a0 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 43 1a 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2f t.jn...j\...jC.....method....../
261c0 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_
261e0 64 69 73 70 61 74 63 68 65 72 2e 72 65 63 76 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 46 1a 00 00 8c dispatcher.recv.jn...j\...jF....
26200 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 2f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 73 73 6c 5f 64 .method....../M2Crypto.SSL.ssl_d
26220 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 73 65 6e 64 94 6a 6e ispatcher.ssl_dispatcher.send.jn
26240 1a 00 00 6a 5c 02 00 00 6a 49 1a 00 00 8c 06 6d 65 74 68 6f 64 94 87 94 81 94 8c 14 4d 32 43 72 ...j\...jI.....method.......M2Cr
26260 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 4c 1a 00 00 ypto.SSL.timeout.jn...j\...jL...
26280 6a 6f 1a 00 00 87 94 81 94 8c 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 2e jo.........M2Crypto.SSL.timeout.
262a0 73 74 72 75 63 74 5f 73 69 7a 65 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 4f 1a 00 00 8c 08 66 75 6e struct_size.jn...j\...jO.....fun
262c0 63 74 69 6f 6e 94 87 94 81 94 8c 26 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 ction......&M2Crypto.SSL.timeout
262e0 2e 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 52 1a .struct_to_timeout.jn...j\...jR.
26300 00 00 8c 08 66 75 6e 63 74 69 6f 6e 94 87 94 81 94 8c 1c 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e ....function.......M2Crypto.SSL.
26320 74 69 6d 65 6f 75 74 2e 74 69 6d 65 6f 75 74 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 55 1a 00 00 8c timeout.timeout.jn...j\...jU....
26340 05 63 6c 61 73 73 94 87 94 81 94 8c 21 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 .class......!M2Crypto.SSL.timeou
26360 74 2e 74 69 6d 65 6f 75 74 2e 70 61 63 6b 94 6a 6e 1a 00 00 6a 5c 02 00 00 6a 58 1a 00 00 8c 06 t.timeout.pack.jn...j\...jX.....
26380 6d 65 74 68 6f 64 94 87 94 81 94 75 6a 62 1a 00 00 7d 94 28 6a 6b 1a 00 00 6a 6c 1a 00 00 8c 0b method.....ujb...}.(jk...jl.....
263a0 4d 6f 64 75 6c 65 45 6e 74 72 79 94 93 94 28 6a 60 02 00 00 6a bb 12 00 00 68 27 68 27 89 74 94 ModuleEntry...(j`...j....h'h'.t.
263c0 81 94 6a 72 1a 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a be 12 00 00 68 27 68 27 89 74 94 81 94 ..jr...jt$..(j`...j....h'h'.t...
263e0 6a bd 1a 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a f8 12 00 00 68 27 68 27 89 74 94 81 94 6a 00 j....jt$..(j`...j....h'h'.t...j.
26400 1b 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 2b 13 00 00 68 27 68 27 89 74 94 81 94 6a b7 1b 00 ...jt$..(j`...j+...h'h'.t...j...
26420 00 6a 74 24 00 00 28 6a 60 02 00 00 6a b5 13 00 00 68 27 68 27 89 74 94 81 94 6a c6 1b 00 00 6a .jt$..(j`...j....h'h'.t...j....j
26440 74 24 00 00 28 6a 60 02 00 00 6a c1 13 00 00 68 27 68 27 89 74 94 81 94 6a f5 1b 00 00 6a 74 24 t$..(j`...j....h'h'.t...j....jt$
26460 00 00 28 6a 60 02 00 00 6a e5 13 00 00 68 27 68 27 89 74 94 81 94 6a 74 1c 00 00 6a 74 24 00 00 ..(j`...j....h'h'.t...jt...jt$..
26480 28 6a 60 02 00 00 6a 45 14 00 00 68 27 68 27 89 74 94 81 94 6a f7 1c 00 00 6a 74 24 00 00 28 6a (j`...jE...h'h'.t...j....jt$..(j
264a0 60 02 00 00 6a a8 14 00 00 68 27 68 27 89 74 94 81 94 6a ce 1d 00 00 6a 74 24 00 00 28 6a 60 02 `...j....h'h'.t...j....jt$..(j`.
264c0 00 00 6a 4a 15 00 00 68 27 68 27 89 74 94 81 94 6a 11 1e 00 00 6a 74 24 00 00 28 6a 60 02 00 00 ..jJ...h'h'.t...j....jt$..(j`...
264e0 6a 7d 15 00 00 68 27 68 27 89 74 94 81 94 6a 3c 1e 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 9e j}...h'h'.t...j<...jt$..(j`...j.
26500 15 00 00 68 27 68 27 89 74 94 81 94 6a 53 1e 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a b0 15 00 ...h'h'.t...jS...jt$..(j`...j...
26520 00 68 27 68 27 89 74 94 81 94 6a e6 1e 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 1f 16 00 00 68 .h'h'.t...j....jt$..(j`...j....h
26540 27 68 27 89 74 94 81 94 6a 09 1f 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 3a 16 00 00 68 27 68 'h'.t...j....jt$..(j`...j:...h'h
26560 27 89 74 94 81 94 6a 8c 1f 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 9d 16 00 00 68 27 68 27 89 '.t...j....jt$..(j`...j....h'h'.
26580 74 94 81 94 6a 47 21 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a ea 17 00 00 68 27 68 27 89 74 94 t...jG!..jt$..(j`...j....h'h'.t.
265a0 81 94 6a 4a 21 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a ed 17 00 00 68 27 68 27 89 74 94 81 94 ..jJ!..jt$..(j`...j....h'h'.t...
265c0 6a 65 21 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 02 18 00 00 68 27 68 27 89 74 94 81 94 6a 94 je!..jt$..(j`...j....h'h'.t...j.
265e0 21 00 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 26 18 00 00 68 27 68 27 89 74 94 81 94 6a 97 21 00 !..jt$..(j`...j&...h'h'.t...j.!.
26600 00 6a 74 24 00 00 28 6a 60 02 00 00 6a 29 18 00 00 68 27 68 27 89 74 94 81 94 6a 9a 21 00 00 6a .jt$..(j`...j)...h'h'.t...j.!..j
26620 74 24 00 00 28 6a 60 02 00 00 6a 2c 18 00 00 68 27 68 27 89 74 94 81 94 6a a1 21 00 00 6a 74 24 t$..(j`...j,...h'h'.t...j.!..jt$
26640 00 00 28 6a 60 02 00 00 6a 32 18 00 00 68 27 68 27 89 74 94 81 94 6a b4 21 00 00 6a 74 24 00 00 ..(j`...j2...h'h'.t...j.!..jt$..
26660 28 6a 60 02 00 00 6a 41 18 00 00 68 27 68 27 89 74 94 81 94 6a c3 21 00 00 6a 74 24 00 00 28 6a (j`...jA...h'h'.t...j.!..jt$..(j
26680 60 02 00 00 6a 4d 18 00 00 68 27 68 27 89 74 94 81 94 6a ce 21 00 00 6a 74 24 00 00 28 6a 60 02 `...jM...h'h'.t...j.!..jt$..(j`.
266a0 00 00 6a 56 18 00 00 68 27 68 27 89 74 94 81 94 6a f5 21 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 ..jV...h'h'.t...j.!..jt$..(j\...
266c0 6a 75 18 00 00 68 27 68 27 89 74 94 81 94 6a 00 22 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 7e ju...h'h'.t...j."..jt$..(j\...j~
266e0 18 00 00 68 27 68 27 89 74 94 81 94 6a 1b 22 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 93 18 00 ...h'h'.t...j."..jt$..(j\...j...
26700 00 68 27 68 27 89 74 94 81 94 6a 2e 22 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a a2 18 00 00 68 .h'h'.t...j."..jt$..(j\...j....h
26720 27 68 27 89 74 94 81 94 6a 35 23 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 68 19 00 00 68 27 68 'h'.t...j5#..jt$..(j\...jh...h'h
26740 27 89 74 94 81 94 6a bc 23 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a ce 19 00 00 68 27 68 27 89 '.t...j.#..jt$..(j\...j....h'h'.
26760 74 94 81 94 6a d3 23 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a e0 19 00 00 68 27 68 27 89 74 94 t...j.#..jt$..(j\...j....h'h'.t.
26780 81 94 6a fe 23 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 01 1a 00 00 68 27 68 27 89 74 94 81 94 ..j.#..jt$..(j\...j....h'h'.t...
267a0 6a 35 24 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 2b 1a 00 00 68 27 68 27 89 74 94 81 94 6a 48 j5$..jt$..(j\...j+...h'h'.t...jH
267c0 24 00 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 3a 1a 00 00 68 27 68 27 89 74 94 81 94 6a 5f 24 00 $..jt$..(j\...j:...h'h'.t...j_$.
267e0 00 6a 74 24 00 00 28 6a 5c 02 00 00 6a 4c 1a 00 00 68 27 68 27 89 74 94 81 94 75 68 26 4b 00 75 .jt$..(j\...jL...h'h'.t...uh&K.u
26800 8c 03 72 73 74 94 7d 94 28 6a 9e 12 00 00 7d 94 68 26 4b 00 75 8c 03 73 74 64 94 7d 94 28 8c 0b ..rst.}.(j....}.h&K.u..std.}.(..
26820 70 72 6f 67 6f 70 74 69 6f 6e 73 94 7d 94 6a 9e 12 00 00 7d 94 8c 06 6c 61 62 65 6c 73 94 7d 94 progoptions.}.j....}...labels.}.
26840 28 8c 08 67 65 6e 69 6e 64 65 78 94 6a c9 24 00 00 68 27 8c 0d 73 70 68 69 6e 78 2e 6c 6f 63 61 (..genindex.j.$..h'..sphinx.loca
26860 6c 65 94 8c 11 5f 54 72 61 6e 73 6c 61 74 69 6f 6e 50 72 6f 78 79 94 93 94 28 6a ca 24 00 00 8c le..._TranslationProxy...(j.$...
26880 0f 5f 6c 61 7a 79 5f 74 72 61 6e 73 6c 61 74 65 94 93 94 68 2d 8c 07 67 65 6e 65 72 61 6c 94 8c ._lazy_translate...h-..general..
268a0 05 49 6e 64 65 78 94 74 94 81 94 6a ce 24 00 00 68 2d 6a cf 24 00 00 6a d0 24 00 00 87 94 86 94 .Index.t...j.$..h-j.$..j.$......
268c0 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 94 68 27 6a cc b....modindex...py-modindex.h'j.
268e0 24 00 00 28 6a ce 24 00 00 68 2d 6a cf 24 00 00 8c 0c 4d 6f 64 75 6c 65 20 49 6e 64 65 78 94 74 $..(j.$..h-j.$....Module.Index.t
26900 94 81 94 6a ce 24 00 00 68 2d 6a cf 24 00 00 6a d8 24 00 00 87 94 86 94 62 87 94 8c 06 73 65 61 ...j.$..h-j.$..j.$......b....sea
26920 72 63 68 94 6a de 24 00 00 68 27 6a cc 24 00 00 28 6a ce 24 00 00 68 2d 6a cf 24 00 00 8c 0b 53 rch.j.$..h'j.$..(j.$..h-j.$....S
26940 65 61 72 63 68 20 50 61 67 65 94 74 94 81 94 6a ce 24 00 00 68 2d 6a cf 24 00 00 6a df 24 00 00 earch.Page.t...j.$..h-j.$..j.$..
26960 87 94 86 94 62 87 94 8c 0b 70 79 2d 6d 6f 64 69 6e 64 65 78 94 6a e5 24 00 00 68 27 8c 13 50 79 ....b....py-modindex.j.$..h'..Py
26980 74 68 6f 6e 20 4d 6f 64 75 6c 65 20 49 6e 64 65 78 94 87 94 8c 10 7a 73 65 72 76 65 72 73 73 6c thon.Module.Index.....zserverssl
269a0 2d 68 6f 77 74 6f 94 6a 5b 02 00 00 8c 10 7a 73 65 72 76 65 72 73 73 6c 2d 68 6f 77 74 6f 94 8c -howto.j[.....zserverssl-howto..
269c0 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 8c 08 68 6f .1.......ZServerSSL-HOWTO.....ho
269e0 77 74 6f 2d 63 61 94 6a 5a 02 00 00 8c 08 68 6f 77 74 6f 2d 63 61 94 8c 28 48 4f 57 54 4f 3a 20 wto-ca.jZ.....howto-ca..(HOWTO:.
26a00 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 65 6e 53 53 Creating.your.own.CA.with.OpenSS
26a20 4c 94 87 94 8c 0b 68 6f 77 74 6f 2d 73 6d 69 6d 65 94 6a 5d 02 00 00 8c 0b 68 6f 77 74 6f 2d 73 L.....howto-smime.j].....howto-s
26a40 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 4d 49 4d 45 mime..1HOWTO:.Programming.S/MIME
26a60 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 09 68 6f 77 .in.Python.with.M2Crypto.....how
26a80 74 6f 2d 73 73 6c 94 6a 5e 02 00 00 8c 09 68 6f 77 74 6f 2d 73 73 6c 94 8c 2e 48 4f 57 54 4f 3a to-ssl.j^.....howto-ssl...HOWTO:
26aa0 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 69 74 68 20 .Programming.SSL.in.Python.with.
26ac0 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 6a c9 24 00 M2Crypto...u..anonlabels.}.(j.$.
26ae0 00 6a c9 24 00 00 68 27 86 94 6a d6 24 00 00 6a d7 24 00 00 68 27 86 94 6a de 24 00 00 6a de 24 .j.$..h'..j.$..j.$..h'..j.$..j.$
26b00 00 00 68 27 86 94 6a e5 24 00 00 6a e5 24 00 00 68 27 86 94 6a e8 24 00 00 6a 5b 02 00 00 6a e9 ..h'..j.$..j.$..h'..j.$..j[...j.
26b20 24 00 00 86 94 6a ec 24 00 00 6a 5a 02 00 00 6a ed 24 00 00 86 94 6a f0 24 00 00 6a 5d 02 00 00 $....j.$..jZ...j.$....j.$..j]...
26b40 6a f1 24 00 00 86 94 6a f4 24 00 00 6a 5e 02 00 00 6a f5 24 00 00 86 94 75 68 26 4b 00 75 75 8c j.$....j.$..j^...j.$....uh&K.uu.
26b60 06 69 6d 61 67 65 73 94 8c 0b 73 70 68 69 6e 78 2e 75 74 69 6c 94 8c 10 46 69 6c 65 6e 61 6d 65 .images...sphinx.util...Filename
26b80 55 6e 69 71 44 69 63 74 94 93 94 29 81 94 8f 94 62 8c 07 64 6c 66 69 6c 65 73 94 6a 03 25 00 00 UniqDict...)....b..dlfiles.j.%..
26ba0 8c 0d 44 6f 77 6e 6c 6f 61 64 46 69 6c 65 73 94 93 94 29 81 94 8c 12 6f 72 69 67 69 6e 61 6c 5f ..DownloadFiles...)....original_
26bc0 69 6d 61 67 65 5f 75 72 69 94 7d 94 8c 09 74 65 6d 70 5f 64 61 74 61 94 7d 94 8c 0b 72 65 66 5f image_uri.}...temp_data.}...ref_
26be0 63 6f 6e 74 65 78 74 94 7d 94 8c 11 5f 76 69 65 77 63 6f 64 65 5f 6d 6f 64 75 6c 65 73 94 7d 94 context.}..._viewcode_modules.}.
26c00 28 8c 0d 4d 32 43 72 79 70 74 6f 2e 41 53 4e 31 94 28 58 62 1d 00 00 66 72 6f 6d 20 5f 5f 66 75 (..M2Crypto.ASN1.(Xb...from.__fu
26c20 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 0a 22 ture__.import.absolute_import.."
26c40 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 53 53 4c 20 "".M2Crypto.wrapper.for.OpenSSL.
26c60 41 53 4e 31 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 ASN1.API...Copyright.(c).1999-20
26c80 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
26ca0 73 65 72 76 65 64 2e 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 served...Portions.created.by.Ope
26cc0 6e 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 n.Source.Applications.Foundation
26ce0 20 28 4f 53 41 46 29 20 61 72 65 0a 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 30 35 20 4f .(OSAF).are.Copyright.(C).2005.O
26d00 53 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 69 SAF..All.Rights.Reserved.."""..i
26d20 6d 70 6f 72 74 20 64 61 74 65 74 69 6d 65 0a 69 6d 70 6f 72 74 20 74 69 6d 65 0a 0a 66 72 6f 6d mport.datetime.import.time..from
26d40 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 73 69 78 0a 66 72 .M2Crypto.import.BIO,.m2,.six.fr
26d60 6f 6d 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 om.typing.import.Optional..#.noq
26d80 61 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 a..MBSTRING_FLAG.=.0x1000.MBSTRI
26da0 4e 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 NG_ASC.=.MBSTRING_FLAG.|.1.MBSTR
26dc0 49 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 ING_BMP.=.MBSTRING_FLAG.|.2...cl
26de0 61 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 ass.ASN1_Integer(object):......m
26e00 32 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 2_asn1_integer_free.=.m2.asn1_in
26e20 74 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 teger_free......def.__init__(sel
26e40 66 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 f,.asn1int,._pyfree=0):.........
26e60 23 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 #.type:.(ASN1_Integer,.int).->.N
26e80 6f 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 one.........self.asn1int.=.asn1i
26ea0 6e 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 nt.........self._pyfree.=._pyfre
26ec0 65 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 e......def.__cmp__(self,.other):
26ee0 0a 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 .........#.type:.(ASN1_Integer).
26f00 2d 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 ->.int.........if.not.isinstance
26f20 28 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 (other,.ASN1_Integer):..........
26f40 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(.............
26f60 20 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 ...."Comparisons.supported.only.
26f80 62 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 between.ANS1_Integer.objects")..
26fa0 20 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 ........return.m2.asn1_integer_c
26fc0 6d 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 mp(self.asn1int,.other.asn1int).
26fe0 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 20 .....def.__del__(self):.........
27000 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 73 65 #.type:.().->.None.........if.se
27020 6c 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 lf._pyfree:.............self.m2_
27040 61 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 asn1_integer_free(self.asn1int).
27060 0a 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 .....def.__int__(self):.........
27080 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 6e #.type:.().->.int.........return
270a0 20 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 .m2.asn1_integer_get(self.asn1in
270c0 74 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 t)...class.ASN1_String(object):.
270e0 0a 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 .....m2_asn1_string_free.=.m2.as
27100 6e 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 n1_string_free......def.__init__
27120 28 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 (self,.asn1str,._pyfree=0):.....
27140 20 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 ....#.type:.(ASN1_String,.int).-
27160 3e 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 >.None.........self.asn1str.=.as
27180 6e 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 n1str.........self._pyfree.=._py
271a0 66 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 free......def.__bytes__(self):..
271c0 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......
271e0 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().....
27200 20 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 ....m2.asn1_string_print(buf.bio
27220 5f 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 _ptr(),.self.asn1str).........re
27240 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 65 66 20 5f 5f 73 turn.buf.read_all()......def.__s
27260 74 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 tr__(self):.........#.type:.().-
27280 3e 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 >.str.........return.six.ensure_
272a0 74 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 text(self.__bytes__())......def.
272c0 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:.(
272e0 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
27300 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
27320 6c 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 lf.m2_asn1_string_free(self.asn1
27340 73 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 str)......def._ptr(self):.......
27360 20 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 ..return.self.asn1str......def.a
27380 73 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 s_text(self,.flags=0):.........#
273a0 20 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 .type:.(int).->.str........."""O
273c0 75 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 utput.an.ASN1_STRING.structure.a
273e0 63 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 ccording.to.the.set.flags.......
27400 20 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 ....:param.flags:.determine.the.
27420 66 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 format.of.the.output.by.using...
27440 20 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 .............predetermined.const
27460 61 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 ants,.see.ASN1_STRING_print_ex(3
27480 29 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 )................manpage.for.the
274a0 69 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 ir.meaning..........:return:.out
274c0 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 2e 0a 20 20 put.an.ASN1_STRING.structure....
274e0 20 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 ......""".........buf.=.BIO.Memo
27500 72 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 ryBuffer().........m2.asn1_strin
27520 67 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 g_print_ex(buf.bio_ptr(),.self.a
27540 73 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 sn1str,.flags).........return.si
27560 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 29 29 0a 0a 0a x.ensure_text(buf.read_all())...
27580 63 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 class.ASN1_Object(object):......
275a0 6d 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 m2_asn1_object_free.=.m2.asn1_ob
275c0 6a 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 ject_free......def.__init__(self
275e0 2c 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 ,.asn1obj,._pyfree=0):.........#
27600 20 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 .type:.(ASN1_Object,.int).->.Non
27620 65 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 e.........self.asn1obj.=.asn1obj
27640 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 0a .........self._pyfree.=._pyfree.
27660 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 20 .....def.__del__(self):.........
27680 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 73 65 #.type:.().->.None.........if.se
276a0 6c 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 lf._pyfree:.............self.m2_
276c0 61 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 asn1_object_free(self.asn1obj)..
276e0 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 75 ....def._ptr(self):.........retu
27700 72 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 rn.self.asn1obj...class._UTC(dat
27720 65 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 etime.tzinfo):.....def.tzname(se
27740 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 6e lf,.dt):.........#.type:.(Option
27760 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 73 74 72 0a 20 20 al[datetime.datetime]).->.str...
27780 20 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 ......return."UTC"......def.dst(
277a0 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 4f 70 74 69 self,.dt):.........#.type:.(Opti
277c0 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 3e 20 64 61 74 65 onal[datetime.datetime]).->.date
277e0 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 75 72 6e 20 64 61 time.timedelta.........return.da
27800 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 66 20 75 74 63 tetime.timedelta(0)......def.utc
27820 6f 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 offset(self,.dt):.........#.type
27840 3a 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 :.(Optional[datetime.datetime]).
27860 2d 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 ->.datetime.timedelta.........re
27880 74 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 turn.datetime.timedelta(0)......
278a0 64 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 def.__repr__(self):.........retu
278c0 72 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 rn."<Timezone:.%s>".%.self.tznam
278e0 65 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 e(None)...UTC.=._UTC()..#.type:.
27900 5f 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 _UTC...class.LocalTimezone(datet
27920 69 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 ime.tzinfo):....."""Localtimezon
27940 65 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 e.from.datetime.manual."""......
27960 64 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 def.__init__(self):.........#.ty
27980 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 5f 73 74 64 pe:.().->.None.........self._std
279a0 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 63 6f offset.=.datetime.timedelta(seco
279c0 6e 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 nds=-time.timezone).........if.t
279e0 69 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 ime.daylight:.............self._
27a00 64 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 dstoffset.=.datetime.timedelta(s
27a20 65 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 econds=-time.altzone).........el
27a40 73 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 se:.............self._dstoffset.
27a60 3d 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 =.self._stdoffset.........self._
27a80 64 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 dstdiff.=.self._dstoffset.-.self
27aa0 2e 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 ._stdoffset......def.utcoffset(s
27ac0 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 74 elf,.dt):.........#.type:.(datet
27ae0 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 65 ime.datetime).->.datetime.timede
27b00 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 0a lta.........if.self._isdst(dt):.
27b20 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 6f 66 66 73 ............return.self._dstoffs
27b40 65 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 et.........else:.............ret
27b60 75 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 urn.self._stdoffset......def.dst
27b80 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 20 28 64 61 74 (self,.dt):.........#.type:.(dat
27ba0 65 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 etime.datetime).->.datetime.time
27bc0 64 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 delta.........if.self._isdst(dt)
27be0 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 5f 64 73 74 64 69 :.............return.self._dstdi
27c00 66 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 ff.........else:.............ret
27c20 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
27c40 65 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 ef.tzname(self,.dt):.........#.t
27c60 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 73 74 72 0a ype:.(datetime.datetime).->.str.
27c80 20 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 ........return.time.tzname[self.
27ca0 5f 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 _isdst(dt).real]......def._isdst
27cc0 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 20 28 64 61 74 (self,.dt):.........#.type:.(dat
27ce0 65 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 etime.datetime).->.bool.........
27d00 74 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 tt.=.(dt.year,.dt.month,.dt.day,
27d20 0a 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 ...............dt.hour,.dt.minut
27d40 65 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 e,.dt.second,...............dt.w
27d60 65 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 eekday(),.0,.-1).........stamp.=
27d80 20 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 .time.mktime(tt).........tt.=.ti
27da0 6d 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 me.localtime(stamp).........retu
27dc0 72 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 rn.tt.tm_isdst.>.0...class.ASN1_
27de0 54 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 TIME(object):....._ssl_months.=.
27e00 5b 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 ["Jan",."Feb",."Mar",."Apr",."Ma
27e20 79 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 y",."Jun",."Jul",."Aug",........
27e40 20 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 ............"Sep",."Oct",."Nov",
27e60 20 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 ."Dec"].....m2_asn1_time_free.=.
27e80 6d 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 m2.asn1_time_free......def.__ini
27ea0 74 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 t__(self,.asn1_time=None,._pyfre
27ec0 65 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 e=0,.asn1_utctime=None):........
27ee0 20 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 .#.type:.(Optional[ASN1_TIME],.O
27f00 70 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 ptional[int],.Optional[ASN1_TIME
27f20 5d 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 ]).->.None.........#.handle.old.
27f40 6b 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 keyword.parameter.........if.asn
27f60 31 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 1_time.is.None:.............asn1
27f80 5f 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 _time.=.asn1_utctime.........if.
27fa0 61 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 asn1_time.is.not.None:..........
27fc0 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 65 63 ...assert.m2.asn1_time_type_chec
27fe0 6b 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 k(asn1_time),.\.................
28000 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 20 20 20 "'asn1_time'.type.error'".......
28020 20 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 ......self.asn1_time.=.asn1_time
28040 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 79 66 .............self._pyfree.=._pyf
28060 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 73 65 ree.........else:.............se
28080 6c 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 lf.asn1_time.=.m2.asn1_time_new(
280a0 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 65 20 3d 20 31 0a 0a ).............self._pyfree.=.1..
280c0 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):.........#
280e0 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 65 74 .type:.().->.None.........if.get
28100 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 20 20 attr(self,.'_pyfree',.0):.......
28120 20 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 ......self.m2_asn1_time_free(sel
28140 66 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 f.asn1_time)......def.__str__(se
28160 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..
28180 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 5f 74 79 70 65 5f .......assert.m2.asn1_time_type_
281a0 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 20 20 20 20 20 20 check(self.asn1_time),.\........
281c0 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 6f 72 27 22 0a 20 ....."'asn1_time'.type.error'"..
281e0 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 0a .......buf.=.BIO.MemoryBuffer().
28200 20 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 ........m2.asn1_time_print(buf.b
28220 69 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 io_ptr(),.self.asn1_time).......
28240 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 62 75 66 2e 72 65 61 ..return.six.ensure_text(buf.rea
28260 64 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 d_all())......def._ptr(self):...
28280 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
282a0 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),.\.........
282c0 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'"...
282e0 20 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 ......return.self.asn1_time.....
28300 20 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 .def.set_string(self,.string):..
28320 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...
28340 20 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 ......"""Set.time.from.UTC.strin
28360 67 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 g.""".........assert.m2.asn1_tim
28380 65 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 e_type_check(self.asn1_time),.\.
283a0 20 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 ............"'asn1_time'.type.er
283c0 72 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 ror'".........return.m2.asn1_tim
283e0 65 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 e_set_string(self.asn1_time,.str
28400 69 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 ing)......def.set_time(self,.tim
28420 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 20 41 53 4e e):.........#.type:.(int).->.ASN
28440 31 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 1_TIME........."""Set.time.from.
28460 73 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 seconds.since.epoch.(int)."""...
28480 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
284a0 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),.\.........
284c0 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'"...
284e0 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 5f 73 65 74 28 73 65 ......return.m2.asn1_time_set(se
28500 6c 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 lf.asn1_time,.time)......def.get
28520 5f 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 _datetime(self):.........#.type:
28540 20 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 .().->.ASN1_TIME.........date.=.
28560 73 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 str(self)..........timezone.=.No
28580 6e 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 ne.........if.'.'.not.in.date:..
285a0 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 49 6e 76 ...........raise.ValueError("Inv
285c0 61 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 alid.date:.%s".%.date).........m
285e0 6f 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 onth,.rest.=.date.split('.',.1).
28600 20 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 ........if.month.not.in.self._ss
28620 6c 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 l_months:.............raise.Valu
28640 65 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 eError("Invalid.date.%s:.Invalid
28660 20 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 .month:.%s".%...................
28680 20 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 ...........(date,.month)).......
286a0 20 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 ..if.rest.endswith('.GMT'):.....
286c0 20 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 ........timezone.=.UTC..........
286e0 20 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 ...rest.=.rest[:-4].........if.'
28700 2e 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 .'.in.rest:.............dt.=.dat
28720 65 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 etime.datetime.strptime(rest,."%
28740 64 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 d.%H:%M:%S.%f.%Y").........else:
28760 0a 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 .............dt.=.datetime.datet
28780 69 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 ime.strptime(rest,."%d.%H:%M:%S.
287a0 25 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 %Y").........dt.=.dt.replace(mon
287c0 74 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 th=self._ssl_months.index(month)
287e0 20 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 .+.1).........if.timezone:......
28800 20 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 .......dt.=.dt.replace(tzinfo=UT
28820 43 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 C).........return.dt......def.se
28840 74 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 t_datetime(self,.date):.........
28860 23 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 #.type:.(datetime.datetime).->.A
28880 53 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 SN1_TIME.........local.=.LocalTi
288a0 6d 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 mezone().........if.date.tzinfo.
288c0 69 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 is.None:.............date.=.date
288e0 2e 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 .replace(tzinfo=local).........d
28900 61 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 ate.=.date.astimezone(local)....
28920 20 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 .....return.self.set_time(int(ti
28940 6d 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 me.mktime(date.timetuple())))...
28960 41 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 7d 94 28 8c 15 41 ASN1_UTCTIME.=.ASN1_TIME..}.(..A
28980 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 8c 03 64 65 66 94 4b 1b 4b 1e 87 SN1_Integer.__init__...def.K.K..
289a0 94 8c 14 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 63 6d 70 5f 5f 94 6a 18 25 00 00 4b 20 4b ...ASN1_Integer.__cmp__.j.%..K.K
289c0 26 87 94 8c 14 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b &....ASN1_Integer.__del__.j.%..K
289e0 28 4b 2b 87 94 8c 14 41 53 4e 31 5f 49 6e 74 65 67 65 72 2e 5f 5f 69 6e 74 5f 5f 94 6a 18 25 00 (K+....ASN1_Integer.__int__.j.%.
28a00 00 4b 2d 4b 2f 87 94 8c 0c 41 53 4e 31 5f 49 6e 74 65 67 65 72 94 6a 37 02 00 00 4b 17 4b 2f 87 .K-K/....ASN1_Integer.j7...K.K/.
28a20 94 8c 14 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 36 4b ...ASN1_String.__init__.j.%..K6K
28a40 39 87 94 8c 15 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 5f 62 79 74 65 73 5f 5f 94 6a 18 25 00 00 9....ASN1_String.__bytes__.j.%..
28a60 4b 3b 4b 3f 87 94 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 5f 73 74 72 5f 5f 94 6a 18 25 00 K;K?....ASN1_String.__str__.j.%.
28a80 00 4b 41 4b 43 87 94 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 .KAKC....ASN1_String.__del__.j.%
28aa0 00 00 4b 45 4b 48 87 94 8c 10 41 53 4e 31 5f 53 74 72 69 6e 67 2e 5f 70 74 72 94 6a 18 25 00 00 ..KEKH....ASN1_String._ptr.j.%..
28ac0 4b 4a 4b 4b 87 94 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e 61 73 5f 74 65 78 74 94 6a 18 25 00 KJKK....ASN1_String.as_text.j.%.
28ae0 00 4b 4d 4b 58 87 94 8c 0b 41 53 4e 31 5f 53 74 72 69 6e 67 94 6a 37 02 00 00 4b 32 4b 58 87 94 .KMKX....ASN1_String.j7...K2KX..
28b00 8c 14 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 5f 4b 62 ..ASN1_Object.__init__.j.%..K_Kb
28b20 87 94 8c 13 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 64 4b ....ASN1_Object.__del__.j.%..KdK
28b40 67 87 94 8c 10 41 53 4e 31 5f 4f 62 6a 65 63 74 2e 5f 70 74 72 94 6a 18 25 00 00 4b 69 4b 6a 87 g....ASN1_Object._ptr.j.%..KiKj.
28b60 94 8c 0b 41 53 4e 31 5f 4f 62 6a 65 63 74 94 6a 37 02 00 00 4b 5b 4b 6a 87 94 8c 0b 5f 55 54 43 ...ASN1_Object.j7...K[Kj...._UTC
28b80 2e 74 7a 6e 61 6d 65 94 6a 18 25 00 00 4b 6e 4b 70 87 94 8c 08 5f 55 54 43 2e 64 73 74 94 6a 18 .tzname.j.%..KnKp...._UTC.dst.j.
28ba0 25 00 00 4b 72 4b 74 87 94 8c 0e 5f 55 54 43 2e 75 74 63 6f 66 66 73 65 74 94 6a 18 25 00 00 4b %..KrKt...._UTC.utcoffset.j.%..K
28bc0 76 4b 78 87 94 8c 0d 5f 55 54 43 2e 5f 5f 72 65 70 72 5f 5f 94 6a 18 25 00 00 4b 7a 4b 7b 87 94 vKx...._UTC.__repr__.j.%..KzK{..
28be0 8c 04 5f 55 54 43 94 6a 37 02 00 00 4b 6d 4b 7b 87 94 8c 16 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e .._UTC.j7...KmK{....LocalTimezon
28c00 65 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 84 4b 8b 87 94 8c 17 4c 6f 63 61 6c 54 69 6d e.__init__.j.%..K.K.....LocalTim
28c20 65 7a 6f 6e 65 2e 75 74 63 6f 66 66 73 65 74 94 6a 18 25 00 00 4b 8d 4b 92 87 94 8c 11 4c 6f 63 ezone.utcoffset.j.%..K.K.....Loc
28c40 61 6c 54 69 6d 65 7a 6f 6e 65 2e 64 73 74 94 6a 18 25 00 00 4b 94 4b 99 87 94 8c 14 4c 6f 63 61 alTimezone.dst.j.%..K.K.....Loca
28c60 6c 54 69 6d 65 7a 6f 6e 65 2e 74 7a 6e 61 6d 65 94 6a 18 25 00 00 4b 9b 4b 9d 87 94 8c 14 4c 6f lTimezone.tzname.j.%..K.K.....Lo
28c80 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 5f 69 73 64 73 74 94 6a 18 25 00 00 4b 9f 4b a6 87 94 8c 0d calTimezone._isdst.j.%..K.K.....
28ca0 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 94 6a 37 02 00 00 4b 81 4b a6 87 94 8c 12 41 53 4e 31 5f LocalTimezone.j7...K.K.....ASN1_
28cc0 54 49 4d 45 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b ae 4b ba 87 94 8c 11 41 53 4e 31 5f TIME.__init__.j.%..K.K.....ASN1_
28ce0 54 49 4d 45 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b bc 4b bf 87 94 8c 11 41 53 4e 31 5f 54 TIME.__del__.j.%..K.K.....ASN1_T
28d00 49 4d 45 2e 5f 5f 73 74 72 5f 5f 94 6a 18 25 00 00 4b c1 4b c7 87 94 8c 0e 41 53 4e 31 5f 54 49 IME.__str__.j.%..K.K.....ASN1_TI
28d20 4d 45 2e 5f 70 74 72 94 6a 18 25 00 00 4b c9 4b cc 87 94 8c 14 41 53 4e 31 5f 54 49 4d 45 2e 73 ME._ptr.j.%..K.K.....ASN1_TIME.s
28d40 65 74 5f 73 74 72 69 6e 67 94 6a 18 25 00 00 4b ce 4b d3 87 94 8c 12 41 53 4e 31 5f 54 49 4d 45 et_string.j.%..K.K.....ASN1_TIME
28d60 2e 73 65 74 5f 74 69 6d 65 94 6a 18 25 00 00 4b d5 4b da 87 94 8c 16 41 53 4e 31 5f 54 49 4d 45 .set_time.j.%..K.K.....ASN1_TIME
28d80 2e 67 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 18 25 00 00 4b dc 4b f1 87 94 8c 16 41 53 4e 31 5f .get_datetime.j.%..K.K.....ASN1_
28da0 54 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 18 25 00 00 4b f3 4b f9 87 94 8c 09 41 TIME.set_datetime.j.%..K.K.....A
28dc0 53 4e 31 5f 54 49 4d 45 94 6a 37 02 00 00 4b a9 4b f9 87 94 75 7d 94 28 8c 0c 41 53 4e 31 5f 49 SN1_TIME.j7...K.K...u}.(..ASN1_I
28de0 6e 74 65 67 65 72 94 6a 60 02 00 00 8c 0b 41 53 4e 31 5f 4f 62 6a 65 63 74 94 6a 60 02 00 00 8c nteger.j`.....ASN1_Object.j`....
28e00 0b 41 53 4e 31 5f 53 74 72 69 6e 67 94 6a 60 02 00 00 8c 13 41 53 4e 31 5f 53 74 72 69 6e 67 2e .ASN1_String.j`.....ASN1_String.
28e20 61 73 5f 74 65 78 74 94 6a 60 02 00 00 8c 09 41 53 4e 31 5f 54 49 4d 45 94 6a 60 02 00 00 8c 16 as_text.j`.....ASN1_TIME.j`.....
28e40 41 53 4e 31 5f 54 49 4d 45 2e 67 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 60 02 00 00 8c 16 41 53 ASN1_TIME.get_datetime.j`.....AS
28e60 4e 31 5f 54 49 4d 45 2e 73 65 74 5f 64 61 74 65 74 69 6d 65 94 6a 60 02 00 00 8c 14 41 53 4e 31 N1_TIME.set_datetime.j`.....ASN1
28e80 5f 54 49 4d 45 2e 73 65 74 5f 73 74 72 69 6e 67 94 6a 60 02 00 00 8c 12 41 53 4e 31 5f 54 49 4d _TIME.set_string.j`.....ASN1_TIM
28ea0 45 2e 73 65 74 5f 74 69 6d 65 94 6a 60 02 00 00 8c 0d 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 94 E.set_time.j`.....LocalTimezone.
28ec0 6a 60 02 00 00 8c 11 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 64 73 74 94 6a 60 02 00 00 8c 14 j`.....LocalTimezone.dst.j`.....
28ee0 4c 6f 63 61 6c 54 69 6d 65 7a 6f 6e 65 2e 74 7a 6e 61 6d 65 94 6a 60 02 00 00 8c 17 4c 6f 63 61 LocalTimezone.tzname.j`.....Loca
28f00 6c 54 69 6d 65 7a 6f 6e 65 2e 75 74 63 6f 66 66 73 65 74 94 6a 60 02 00 00 75 8c 0d 4d 32 43 72 lTimezone.utcoffset.j`...u..M2Cr
28f20 79 70 74 6f 2e 41 53 4e 31 94 74 94 8c 12 4d 32 43 72 79 70 74 6f 2e 5f 6d 32 63 72 79 70 74 6f ypto.ASN1.t...M2Crypto._m2crypto
28f40 94 89 8c 13 4d 32 43 72 79 70 74 6f 2e 41 75 74 68 43 6f 6f 6b 69 65 94 28 58 fb 13 00 00 66 72 ....M2Crypto.AuthCookie.(X....fr
28f60 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
28f80 70 6f 72 74 0a 0a 22 22 22 53 65 63 75 72 65 20 41 75 74 68 65 6e 74 69 63 61 74 6f 72 20 43 6f port.."""Secure.Authenticator.Co
28fa0 6f 6b 69 65 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 32 20 4e okies..Copyright.(c).1999-2002.N
28fc0 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
28fe0 65 64 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 69 6d 70 6f 72 74 20 72 65 ed."""..import.logging.import.re
29000 0a 69 6d 70 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 .import.time..from.M2Crypto.impo
29020 72 74 20 52 61 6e 64 2c 20 6d 32 2c 20 73 69 78 2c 20 75 74 69 6c 0a 66 72 6f 6d 20 4d 32 43 72 rt.Rand,.m2,.six,.util.from.M2Cr
29040 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 73 2e 68 74 74 70 5f 63 6f 6f 6b 69 65 73 20 69 6d 70 6f ypto.six.moves.http_cookies.impo
29060 72 74 20 53 69 6d 70 6c 65 43 6f 6f 6b 69 65 0a 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 rt.SimpleCookie..from.typing.imp
29080 6f 72 74 20 72 65 20 61 73 20 74 79 70 65 5f 72 65 2c 20 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f ort.re.as.type_re,.AnyStr,.Optio
290a0 6e 61 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 nal,.Union..#.noqa.._MIX_FORMAT.
290c0 3d 20 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 =.'exp=%f&data=%s&digest='._MIX_
290e0 52 45 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 RE.=.re.compile(r'exp=(\d+\.\d+)
29100 26 64 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 &data=(.+)&digest=(\S*)')..log.=
29120 20 6c 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 .logging.getLogger(__name__)...d
29140 65 66 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 ef.mix(expiry,.data,.format=_MIX
29160 5f 46 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 _FORMAT):.....#.type:.(float,.An
29180 79 53 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 yStr,.str).->.AnyStr.....return.
291a0 66 6f 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 format.%.(expiry,.data)...def.un
291c0 6d 69 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 mix(dough,.regex=_MIX_RE):.....#
291e0 20 74 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 .type:.(AnyStr,.type_re).->.obje
29200 63 74 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 ct.....mo.=.regex.match(dough)..
29220 20 20 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 ...if.mo:.........return.float(m
29240 6f 2e 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 o.group(1)),.mo.group(2).....els
29260 65 3a 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 e:.........return.None...def.unm
29280 69 78 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 ix3(dough,.regex=_MIX_RE):.....#
292a0 20 74 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 .type:.(AnyStr,.type_re).->.Opti
292c0 6f 6e 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 onal[tuple[float,.AnyStr,.AnyStr
292e0 5d 5d 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 ]].....mo.=.regex.match(dough)..
29300 20 20 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 ...if.mo:.........return.float(m
29320 6f 2e 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 o.group(1)),.mo.group(2),.mo.gro
29340 75 70 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 up(3).....else:.........return.N
29360 6f 6e 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 one..._TOKEN.=.'_M2AUTH_'..#.typ
29380 65 3a 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 e:.str...class.AuthCookieJar(obj
293a0 65 63 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 ect):......_keylen.=.20..#.type:
293c0 20 69 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 .int......def.__init__(self):...
293e0 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........
29400 20 73 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 .self._key.=.Rand.rand_bytes(sel
29420 66 2e 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 f._keylen)......def._hmac(self,.
29440 6b 65 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 key,.data):.........#.type:.(byt
29460 65 73 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 es,.str).->.str.........return.u
29480 74 69 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 til.bin_to_hex(m2.hmac(key,.six.
294a0 65 6e 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 ensure_binary(data),.m2.sha1()))
294c0 0a 0a 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 ......def.makeCookie(self,.expir
294e0 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 66 6c 6f 61 74 y,.data):.........#.type:.(float
29500 2c 20 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 ,.str).->.AuthCookie........."""
29520 0a 20 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 .........Make.a.cookie..........
29540 3a 70 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 :param.expiry:.expiration.time.(
29560 66 6c 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 float.in.seconds).........:param
29580 20 64 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 .data:.cookie.content.........:r
295a0 65 74 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 eturn:.AuthCookie.object........
295c0 20 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 28 65 .""".........if.not.isinstance(e
295e0 78 70 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 xpiry,.(six.integer_types,.float
29600 29 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 6f 72 )):.............raise.ValueError
29620 28 27 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 ('Expiration.time.must.be.number
29640 2c 20 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 ,.not."%s'.%.expiry).........dou
29660 67 68 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 gh.=.mix(expiry,.data).........r
29680 65 74 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 eturn.AuthCookie(expiry,.data,.d
296a0 6f 75 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 ough,.self._hmac(self._key,.doug
296c0 68 29 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 h))......def.isGoodCookie(self,.
296e0 63 6f 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 cookie):.........#.type:.(AuthCo
29700 6f 6b 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 okie).->.Union[bool,.int].......
29720 20 20 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 ..assert.isinstance(cookie,.Auth
29740 43 6f 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 Cookie).........if.cookie.isExpi
29760 72 65 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 red():.............return.0.....
29780 20 20 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 ....c.=.self.makeCookie(cookie._
297a0 65 78 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 expiry,.cookie._data).........re
297c0 74 75 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 turn.(c._expiry.==.cookie._expir
297e0 79 29 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 y).\.............and.(c._data.==
29800 20 63 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 .cookie._data).\.............and
29820 20 28 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 .(c._mac.==.cookie._mac).\......
29840 20 20 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 .......and.(c.output().==.cookie
29860 2e 6f 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 .output())......def.isGoodCookie
29880 53 74 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 String(self,.cookie_str,._debug=
298a0 46 61 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 False):.........#.type:.(Union[d
298c0 69 63 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 ict,.bytes],.bool).->.Union[bool
298e0 2c 20 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 ,.int].........c.=.SimpleCookie(
29900 29 0a 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 ).........c.load(cookie_str)....
29920 20 20 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 .....if._TOKEN.not.in.c:........
29940 20 20 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 .....log.debug('_TOKEN.not.in.c.
29960 28 6b 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 (keys.=.%s)',.dir(c))...........
29980 20 20 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 ..return.0.........undough.=.unm
299a0 69 78 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 ix3(c[_TOKEN].value).........if.
299c0 75 6e 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 undough.is.None:.............log
299e0 2e 64 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 .debug('undough.is.None').......
29a00 20 20 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 ......return.0.........exp,.data
29a20 2c 20 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 ,.mac.=.undough.........c2.=.sel
29a40 66 2e 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 f.makeCookie(exp,.data).........
29a60 69 66 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 if._debug.and.(c2._mac.==.mac):.
29a80 20 20 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 ............log.error('cookie_st
29aa0 72 20 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 r.=.%s',.cookie_str)............
29ac0 20 6c 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 .log.error('c2.isExpired.=.%s',.
29ae0 63 32 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 c2.isExpired()).............log.
29b00 65 72 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 error('mac.=.%s',.mac)..........
29b20 20 20 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 ...log.error('c2._mac.=.%s',.c2.
29b40 5f 6d 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 _mac).............log.error('c2.
29b60 5f 6d 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 _mac.==.mac:.%s',.str(c2._mac.==
29b80 20 6d 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 .mac)).........return.(not.c2.is
29ba0 45 78 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 Expired()).and.(c2._mac.==.mac).
29bc0 0a 0a 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 ..class.AuthCookie(object):.....
29be0 20 64 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 .def.__init__(self,.expiry,.data
29c00 2c 20 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 ,.dough,.mac):.........#.type:.(
29c20 66 6c 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 float,.str,.str,.str).->.None...
29c40 20 20 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 ......""".........Create.new.aut
29c60 68 65 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 hentication.cookie..........:par
29c80 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 69 6e 20 73 am.expiry:.expiration.time.(in.s
29ca0 65 63 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 econds).........:param.data:.coo
29cc0 6b 69 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 kie.payload.(as.a.string).......
29ce0 20 20 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 ..:param.dough:.expiry.&.data.co
29d00 6e 63 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 ncatenated.to.URL.compliant.....
29d20 20 20 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 ..................string........
29d40 20 3a 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 .:param.mac:.SHA1-based.HMAC.of.
29d60 64 6f 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 dough.and.random.key........."""
29d80 0a 20 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 .........self._expiry.=.expiry..
29da0 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 20 20 .......self._data.=.data........
29dc0 20 73 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 .self._mac.=.mac.........self._c
29de0 6f 6f 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 ookie.=.SimpleCookie().........s
29e00 65 6c 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 elf._cookie[_TOKEN].=.'%s%s'.%.(
29e20 64 6f 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 dough,.mac).........self._name.=
29e40 20 27 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 .'%s%s'.%.(dough,.mac)..#.WebKit
29e60 20 6f 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 .only.......def.expiry(self):...
29e80 20 20 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 ......#.type:.().->.float.......
29ea0 20 20 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 .."""Return.the.cookie's.expiry.
29ec0 74 69 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 time.""".........return.self._ex
29ee0 70 69 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 piry......def.data(self):.......
29f00 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 22 22 22 52 ..#.type:.().->.str........."""R
29f20 65 74 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 eturn.the.data.portion.of.the.co
29f40 6f 6b 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 okie.""".........return.self._da
29f60 74 61 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 ta......def.mac(self):.........#
29f80 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 75 .type:.().->.str........."""Retu
29fa0 72 6e 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 rn.the.cookie's.MAC.""".........
29fc0 72 65 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 return.self._mac......def.output
29fe0 28 73 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 (self,.header="Set-Cookie:"):...
2a000 20 20 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 ......#.type:.(Optional[str]).->
2a020 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 69 .str........."""Return.the.cooki
2a040 65 27 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 e's.output.in."Set-Cookie".forma
2a060 74 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 63 6f 6f 6b 69 t.""".........return.self._cooki
2a080 65 2e 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 e.output(header=header)......def
2a0a0 20 76 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 .value(self):.........#.type:.()
2a0c0 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 65 20 63 6f .->.str........."""Return.the.co
2a0e0 6f 6b 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 okie's.output.minus.the."Set-Coo
2a100 6b 69 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 kie:.".portion..........""".....
2a120 20 20 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 ....return.self._cookie[_TOKEN].
2a140 76 61 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 value......def.isExpired(self):.
2a160 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 20 20 20 20 ........#.type:.().->.bool......
2a180 20 20 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 ..."""Return.1.if.the.cookie.has
2a1a0 20 65 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 .expired,.0.otherwise.""".......
2a1c0 20 20 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 ..return.isinstance(self._expiry
2a1e0 2c 20 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 ,.(float,.six.integer_types)).an
2a200 64 20 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 d.\.............(time.time().>.s
2a220 65 6c 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 elf._expiry)......#.Following.tw
2a240 6f 20 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 o.methods.are.for.WebKit.only...
2a260 20 20 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 ...#.I.may.wish.to.push.them.to.
2a280 57 4b 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 WKAuthCookie,.but.they.are.part.
2a2a0 20 20 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 ....#.of.the.API.now..Oh.well...
2a2c0 20 20 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 ...def.name(self):.........#.typ
2a2e0 65 3a 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 e:.().->.str.........return.self
2a300 2e 5f 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 ._name......def.headerValue(self
2a320 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....
2a340 20 20 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 .....return.self.value()..}.(..m
2a360 69 78 94 6a 18 25 00 00 4b 16 4b 18 87 94 8c 05 75 6e 6d 69 78 94 6a 18 25 00 00 4b 1b 4b 21 87 ix.j.%..K.K.....unmix.j.%..K.K!.
2a380 94 8c 06 75 6e 6d 69 78 33 94 6a 18 25 00 00 4b 24 4b 2a 87 94 8c 16 41 75 74 68 43 6f 6f 6b 69 ...unmix3.j.%..K$K*....AuthCooki
2a3a0 65 4a 61 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 34 4b 36 87 94 8c 13 41 75 74 68 43 eJar.__init__.j.%..K4K6....AuthC
2a3c0 6f 6f 6b 69 65 4a 61 72 2e 5f 68 6d 61 63 94 6a 18 25 00 00 4b 38 4b 3a 87 94 8c 18 41 75 74 68 ookieJar._hmac.j.%..K8K:....Auth
2a3e0 43 6f 6f 6b 69 65 4a 61 72 2e 6d 61 6b 65 43 6f 6f 6b 69 65 94 6a 18 25 00 00 4b 3c 4b 48 87 94 CookieJar.makeCookie.j.%..K<KH..
2a400 8c 1a 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 18 25 ..AuthCookieJar.isGoodCookie.j.%
2a420 00 00 4b 4a 4b 53 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 ..KJKS....AuthCookieJar.isGoodCo
2a440 6f 6b 69 65 53 74 72 69 6e 67 94 6a 18 25 00 00 4b 55 4b 68 87 94 8c 0d 41 75 74 68 43 6f 6f 6b okieString.j.%..KUKh....AuthCook
2a460 69 65 4a 61 72 94 6a 37 02 00 00 4b 30 4b 68 87 94 8c 13 41 75 74 68 43 6f 6f 6b 69 65 2e 5f 5f ieJar.j7...K0Kh....AuthCookie.__
2a480 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 6d 4b 7d 87 94 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 65 init__.j.%..KmK}....AuthCookie.e
2a4a0 78 70 69 72 79 94 6a 18 25 00 00 4b 7f 4b 82 87 94 8c 0f 41 75 74 68 43 6f 6f 6b 69 65 2e 64 61 xpiry.j.%..K.K.....AuthCookie.da
2a4c0 74 61 94 6a 18 25 00 00 4b 84 4b 87 87 94 8c 0e 41 75 74 68 43 6f 6f 6b 69 65 2e 6d 61 63 94 6a ta.j.%..K.K.....AuthCookie.mac.j
2a4e0 18 25 00 00 4b 89 4b 8c 87 94 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 6f 75 74 70 75 74 94 6a 18 .%..K.K.....AuthCookie.output.j.
2a500 25 00 00 4b 8e 4b 91 87 94 8c 10 41 75 74 68 43 6f 6f 6b 69 65 2e 76 61 6c 75 65 94 6a 18 25 00 %..K.K.....AuthCookie.value.j.%.
2a520 00 4b 93 4b 97 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 18 .K.K.....AuthCookie.isExpired.j.
2a540 25 00 00 4b 99 4b 9d 87 94 8c 0f 41 75 74 68 43 6f 6f 6b 69 65 2e 6e 61 6d 65 94 6a 18 25 00 00 %..K.K.....AuthCookie.name.j.%..
2a560 4b a2 4b a4 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 K.K.....AuthCookie.headerValue.j
2a580 18 25 00 00 4b a6 4b a8 87 94 8c 0a 41 75 74 68 43 6f 6f 6b 69 65 94 6a 37 02 00 00 4b 6b 4b a8 .%..K.K.....AuthCookie.j7...KkK.
2a5a0 87 94 75 7d 94 28 8c 0a 41 75 74 68 43 6f 6f 6b 69 65 94 6a 60 02 00 00 8c 0f 41 75 74 68 43 6f ..u}.(..AuthCookie.j`.....AuthCo
2a5c0 6f 6b 69 65 2e 64 61 74 61 94 6a 60 02 00 00 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 65 78 70 69 okie.data.j`.....AuthCookie.expi
2a5e0 72 79 94 6a 60 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 ry.j`.....AuthCookie.headerValue
2a600 94 6a 60 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 60 02 .j`.....AuthCookie.isExpired.j`.
2a620 00 00 8c 0e 41 75 74 68 43 6f 6f 6b 69 65 2e 6d 61 63 94 6a 60 02 00 00 8c 0f 41 75 74 68 43 6f ....AuthCookie.mac.j`.....AuthCo
2a640 6f 6b 69 65 2e 6e 61 6d 65 94 6a 60 02 00 00 8c 11 41 75 74 68 43 6f 6f 6b 69 65 2e 6f 75 74 70 okie.name.j`.....AuthCookie.outp
2a660 75 74 94 6a 60 02 00 00 8c 10 41 75 74 68 43 6f 6f 6b 69 65 2e 76 61 6c 75 65 94 6a 60 02 00 00 ut.j`.....AuthCookie.value.j`...
2a680 8c 0d 41 75 74 68 43 6f 6f 6b 69 65 4a 61 72 94 6a 60 02 00 00 8c 1a 41 75 74 68 43 6f 6f 6b 69 ..AuthCookieJar.j`.....AuthCooki
2a6a0 65 4a 61 72 2e 69 73 47 6f 6f 64 43 6f 6f 6b 69 65 94 6a 60 02 00 00 8c 20 41 75 74 68 43 6f 6f eJar.isGoodCookie.j`.....AuthCoo
2a6c0 6b 69 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 60 02 00 00 8c kieJar.isGoodCookieString.j`....
2a6e0 18 41 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 60 02 00 00 8c .AuthCookieJar.makeCookie.j`....
2a700 03 6d 69 78 94 6a 60 02 00 00 8c 05 75 6e 6d 69 78 94 6a 60 02 00 00 8c 06 75 6e 6d 69 78 33 94 .mix.j`.....unmix.j`.....unmix3.
2a720 6a 60 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 j`...u..M2Crypto.AuthCookie.t...
2a740 4d 32 43 72 79 70 74 6f 2e 42 49 4f 94 28 58 9f 2a 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 M2Crypto.BIO.(X.*..from.__future
2a760 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
2a780 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 42 49 4f 20 41 Crypto.wrapper.for.OpenSSL.BIO.A
2a7a0 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 34 20 4e 67 20 PI...Copyright.(c).1999-2004.Ng.
2a7c0 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
2a7e0 2e 22 22 22 0a 0a 69 6d 70 6f 72 74 20 69 6f 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 66 ."""..import.io.import.logging.f
2a800 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
2a820 61 6c 6c 61 62 6c 65 2c 20 49 74 65 72 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 55 6e 69 allable,.Iterable,.Optional,.Uni
2a840 6f 6e 20 20 23 20 6e 6f 71 61 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 on..#.noqa..from.M2Crypto.import
2a860 20 6d 32 2c 20 73 69 78 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 65 .m2,.six..log.=.logging.getLogge
2a880 72 28 27 42 49 4f 27 29 0a 0a 0a 63 6c 61 73 73 20 42 49 4f 45 72 72 6f 72 28 56 61 6c 75 65 45 r('BIO')...class.BIOError(ValueE
2a8a0 72 72 6f 72 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 6d 32 2e 62 69 6f 5f 69 6e 69 74 28 42 49 rror):.....pass...m2.bio_init(BI
2a8c0 4f 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 42 49 4f 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 OError)...class.BIO(object):....
2a8e0 20 22 22 22 41 62 73 74 72 61 63 74 20 6f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f ."""Abstract.object.interface.to
2a900 20 74 68 65 20 42 49 4f 20 41 50 49 2e 22 22 22 0a 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 66 72 65 .the.BIO.API."""......m2_bio_fre
2a920 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 69 74 5f e.=.m2.bio_free......def.__init_
2a940 5f 28 73 65 6c 66 2c 20 62 69 6f 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 2c 20 5f 63 6c _(self,.bio=None,._pyfree=0,._cl
2a960 6f 73 65 5f 63 62 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 ose_cb=None):.........#.type:.(O
2a980 70 74 69 6f 6e 61 6c 5b 42 49 4f 5d 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c ptional[BIO],.int,.Optional[Call
2a9a0 61 62 6c 65 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 able]).->.None.........self.bio.
2a9c0 3d 20 62 69 6f 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 =.bio.........self._pyfree.=._py
2a9e0 66 72 65 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 6c 6f 73 65 5f 63 62 20 3d 20 5f 63 free.........self._close_cb.=._c
2aa00 6c 6f 73 65 5f 63 62 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 64 20 3d 20 30 0a lose_cb.........self.closed.=.0.
2aa20 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 30 0a 0a 20 ........self.write_closed.=.0...
2aa40 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 69 66 ...def.__del__(self):.........if
2aa60 20 73 65 6c 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 .self._pyfree:.............self.
2aa80 6d 32 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 5f m2_bio_free(self.bio)......def._
2aaa0 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 2e 62 ptr(self):.........return.self.b
2aac0 69 6f 0a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 74 65 64 2e 0a 20 20 20 20 62 69 6f 5f 70 74 io......#.Deprecated......bio_pt
2aae0 72 20 3d 20 5f 70 74 72 0a 0a 20 20 20 20 64 65 66 20 66 69 6c 65 6e 6f 28 73 65 6c 66 29 3a 0a r.=._ptr......def.fileno(self):.
2ab00 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.......
2ab20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 67 65 74 5f 66 64 28 73 65 6c 66 2e 62 69 6f 29 ..return.m2.bio_get_fd(self.bio)
2ab40 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 61 62 6c 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 ......def.readable(self):.......
2ab60 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
2ab80 75 72 6e 20 6e 6f 74 20 73 65 6c 66 2e 63 6c 6f 73 65 64 0a 0a 20 20 20 20 64 65 66 20 72 65 61 urn.not.self.closed......def.rea
2aba0 64 28 73 65 6c 66 2c 20 73 69 7a 65 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 d(self,.size=None):.........#.ty
2abc0 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 55 6e 69 6f 6e 5b 62 79 74 65 73 2c 20 62 79 74 65 61 72 pe:.(int).->.Union[bytes,.bytear
2abe0 72 61 79 5d 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 ray].........if.not.self.readabl
2ac00 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('
2ac20 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 73 69 7a 65 20 69 73 cannot.read').........if.size.is
2ac40 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 62 79 74 65 61 72 72 .None:.............buf.=.bytearr
2ac60 61 79 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 ay().............while.1:.......
2ac80 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 6d 32 2e 62 69 6f 5f 72 65 61 64 28 73 65 6c ..........data.=.m2.bio_read(sel
2aca0 66 2e 62 69 6f 2c 20 34 30 39 36 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 f.bio,.4096).................if.
2acc0 6e 6f 74 20 64 61 74 61 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 not.data:.....................br
2ace0 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 20 2b 3d 20 64 61 74 61 0a eak.................buf.+=.data.
2ad00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 0a 20 20 20 20 20 20 20 20 65 ............return.buf.........e
2ad20 6c 69 66 20 73 69 7a 65 20 3d 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 lif.size.==.0:.............retur
2ad40 6e 20 62 27 27 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 69 7a 65 20 3c 20 30 3a 0a 20 20 20 n.b''.........elif.size.<.0:....
2ad60 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 72 65 61 64 20 .........raise.ValueError('read.
2ad80 63 6f 75 6e 74 20 69 73 20 6e 65 67 61 74 69 76 65 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 count.is.negative').........else
2ada0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79 74 65 73 28 6d 32 2e 62 69 :.............return.bytes(m2.bi
2adc0 6f 5f 72 65 61 64 28 73 65 6c 66 2e 62 69 6f 2c 20 73 69 7a 65 29 29 0a 0a 20 20 20 20 64 65 66 o_read(self.bio,.size))......def
2ade0 20 72 65 61 64 6c 69 6e 65 28 73 65 6c 66 2c 20 73 69 7a 65 3d 34 30 39 36 29 3a 0a 20 20 20 20 .readline(self,.size=4096):.....
2ae00 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 20 20 20 ....#.type:.(int).->.bytes......
2ae20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 72 65 61 64 61 62 6c 65 28 29 3a 0a 20 20 20 20 20 ...if.not.self.readable():......
2ae40 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 72 72 6f 72 28 27 63 61 6e 6e 6f 74 20 72 65 61 .......raise.IOError('cannot.rea
2ae60 64 27 29 0a 20 20 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 d').........buf.=.m2.bio_gets(se
2ae80 6c 66 2e 62 69 6f 2c 20 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 27 27 20 69 lf.bio,.size).........buf.=.''.i
2aea0 66 20 62 75 66 20 69 73 20 4e 6f 6e 65 20 65 6c 73 65 20 62 75 66 0a 20 20 20 20 20 20 20 20 72 f.buf.is.None.else.buf.........r
2aec0 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 62 75 66 29 0a 0a 20 20 eturn.six.ensure_binary(buf)....
2aee0 20 20 64 65 66 20 72 65 61 64 6c 69 6e 65 73 28 73 65 6c 66 2c 20 73 69 7a 65 68 69 6e 74 3d 27 ..def.readlines(self,.sizehint='
2af00 69 67 6e 6f 72 65 64 27 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 55 6e 69 6f ignored'):.........#.type:.(Unio
2af20 6e 5b 41 6e 79 53 74 72 2c 20 69 6e 74 5d 29 20 2d 3e 20 49 74 65 72 61 62 6c 65 5b 62 79 74 65 n[AnyStr,.int]).->.Iterable[byte
2af40 73 5d 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 65 28 s].........if.not.self.readable(
2af60 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 61 ):.............raise.IOError('ca
2af80 6e 6e 6f 74 20 72 65 61 64 27 29 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 73 20 3d 20 5b 5d 0a 20 nnot.read').........lines.=.[]..
2afa0 20 20 20 20 20 20 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 20 .......while.1:.............buf.
2afc0 3d 20 6d 32 2e 62 69 6f 5f 67 65 74 73 28 73 65 6c 66 2e 62 69 6f 2c 20 34 30 39 36 29 0a 20 20 =.m2.bio_gets(self.bio,.4096)...
2afe0 20 20 20 20 20 20 20 20 20 20 69 66 20 62 75 66 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 ..........if.buf.is.None:.......
2b000 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 6c 69 6e 65 ..........break.............line
2b020 73 2e 61 70 70 65 6e 64 28 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 62 75 66 29 29 s.append(six.ensure_binary(buf))
2b040 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69 6e 65 73 0a 0a 20 20 20 20 64 65 66 20 77 .........return.lines......def.w
2b060 72 69 74 65 61 62 6c 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 riteable(self):.........#.type:.
2b080 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 28 6e 6f 74 20 73 ().->.bool.........return.(not.s
2b0a0 65 6c 66 2e 63 6c 6f 73 65 64 29 20 61 6e 64 20 28 6e 6f 74 20 73 65 6c 66 2e 77 72 69 74 65 5f elf.closed).and.(not.self.write_
2b0c0 63 6c 6f 73 65 64 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 28 73 65 6c 66 2c 20 64 61 74 closed)......def.write(self,.dat
2b0e0 61 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 a):.........#.type:.(AnyStr).->.
2b100 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 57 72 69 74 65 20 64 61 74 61 20 74 6f 20 42 49 4f int........."""Write.data.to.BIO
2b120 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 65 69 74 68 65 72 20 64 61 74 61 20 ...........:return:.either.data.
2b140 77 72 69 74 74 65 6e 2c 20 6f 72 20 5b 30 2c 20 2d 31 5d 20 66 6f 72 20 6e 6f 74 68 69 6e 67 20 written,.or.[0,.-1].for.nothing.
2b160 77 72 69 74 74 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 32 20 6e 6f 74 written,..................-2.not
2b180 20 69 6d 70 6c 65 6d 65 6e 74 65 64 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 .implemented........."""........
2b1a0 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 77 72 69 74 65 61 62 6c 65 28 29 3a 0a 20 20 20 20 20 20 .if.not.self.writeable():.......
2b1c0 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 72 72 6f 72 28 27 63 61 6e 6e 6f 74 20 77 72 69 74 ......raise.IOError('cannot.writ
2b1e0 65 27 29 0a 20 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 e').........if.isinstance(data,.
2b200 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 64 61 74 61 six.text_type):.............data
2b220 20 3d 20 64 61 74 61 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 0a 20 20 20 20 20 20 20 20 72 .=.data.encode('utf8').........r
2b240 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 77 72 69 74 65 28 73 65 6c 66 2e 62 69 6f 2c 20 64 61 74 eturn.m2.bio_write(self.bio,.dat
2b260 61 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 a)......def.write_close(self):..
2b280 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.......
2b2a0 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 20 64 65 66 ..self.write_closed.=.1......def
2b2c0 20 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 .flush(self):.........#.type:.()
2b2e0 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 46 6c 75 73 68 20 74 68 65 20 62 75 .->.None........."""Flush.the.bu
2b300 66 66 65 72 73 2e 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 ffers...........:return:.1.for.s
2b320 75 63 63 65 73 73 2c 20 61 6e 64 20 30 20 6f 72 20 2d 31 20 66 6f 72 20 66 61 69 6c 75 72 65 0a uccess,.and.0.or.-1.for.failure.
2b340 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 66 6c 75 73 68 ........""".........m2.bio_flush
2b360 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 72 65 73 65 74 28 73 65 6c 66 29 3a (self.bio)......def.reset(self):
2b380 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......
2b3a0 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 6c ..."""Set.the.bio.to.its.initial
2b3c0 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 31 20 66 6f 72 20 .state...........:return:.1.for.
2b3e0 73 75 63 63 65 73 73 2c 20 61 6e 64 20 30 20 6f 72 20 2d 31 20 66 6f 72 20 66 61 69 6c 75 72 65 success,.and.0.or.-1.for.failure
2b400 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 62 .........""".........return.m2.b
2b420 69 6f 5f 72 65 73 65 74 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 io_reset(self.bio)......def.clos
2b440 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
2b460 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 64 20 3d 20 31 0a 20 20 20 20 one.........self.closed.=.1.....
2b480 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 63 6c 6f 73 65 5f 63 62 3a 0a 20 20 20 20 20 20 20 20 20 ....if.self._close_cb:..........
2b4a0 20 20 20 73 65 6c 66 2e 5f 63 6c 6f 73 65 5f 63 62 28 29 0a 0a 20 20 20 20 64 65 66 20 73 68 6f ...self._close_cb()......def.sho
2b4c0 75 6c 64 5f 72 65 74 72 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a uld_retry(self):.........#.type:
2b4e0 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 20 43 .().->.int.........""".........C
2b500 61 6e 20 74 68 65 20 63 61 6c 6c 20 62 65 20 61 74 74 65 6d 70 74 65 64 20 61 67 61 69 6e 2c 20 an.the.call.be.attempted.again,.
2b520 6f 72 20 77 61 73 20 74 68 65 72 65 20 61 6e 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 69 65 or.was.there.an.error.........ie
2b540 20 64 6f 5f 68 61 6e 64 73 68 61 6b 65 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .do_handshake.........."""......
2b560 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 73 68 6f 75 6c 64 5f 72 65 74 72 79 28 73 65 ...return.m2.bio_should_retry(se
2b580 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 68 6f 75 6c 64 5f 72 65 61 64 28 73 65 6c lf.bio)......def.should_read(sel
2b5a0 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...
2b5c0 20 20 20 20 20 20 22 22 22 53 68 6f 75 6c 64 20 77 65 20 72 65 61 64 20 6d 6f 72 65 20 64 61 74 ......"""Should.we.read.more.dat
2b5e0 61 3f 22 22 22 0a 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 a?"""..........return.m2.bio_sho
2b600 75 6c 64 5f 72 65 61 64 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 68 6f 75 uld_read(self.bio)......def.shou
2b620 6c 64 5f 77 72 69 74 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 ld_write(self):.........#.type:.
2b640 28 29 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 77 ().->.int........."""Should.we.w
2b660 72 69 74 65 20 6d 6f 72 65 20 64 61 74 61 3f 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 rite.more.data?""".........retur
2b680 6e 20 6d 32 2e 62 69 6f 5f 73 68 6f 75 6c 64 5f 77 72 69 74 65 28 73 65 6c 66 2e 62 69 6f 29 0a n.m2.bio_should_write(self.bio).
2b6a0 0a 20 20 20 20 64 65 66 20 74 65 6c 6c 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 .....def.tell(self):........."""
2b6c0 52 65 74 75 72 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 66 66 73 65 74 2e 22 22 22 0a 20 20 Return.the.current.offset."""...
2b6e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 74 65 6c 6c 28 73 65 6c 66 2e 62 69 ......return.m2.bio_tell(self.bi
2b700 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 65 65 6b 28 73 65 6c 66 2c 20 6f 66 66 29 3a 0a 20 20 20 o)......def.seek(self,.off):....
2b720 20 20 20 20 20 22 22 22 53 65 65 6b 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 61 62 ....."""Seek.to.the.specified.ab
2b740 73 6f 6c 75 74 65 20 6f 66 66 73 65 74 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e solute.offset.""".........return
2b760 20 6d 32 2e 62 69 6f 5f 73 65 65 6b 28 73 65 6c 66 2e 62 69 6f 2c 20 6f 66 66 29 0a 0a 20 20 20 .m2.bio_seek(self.bio,.off).....
2b780 20 64 65 66 20 5f 5f 65 6e 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 .def.__enter__(self):.........re
2b7a0 74 75 72 6e 20 73 65 6c 66 0a 0a 20 20 20 20 64 65 66 20 5f 5f 65 78 69 74 5f 5f 28 73 65 6c 66 turn.self......def.__exit__(self
2b7c0 2c 20 2a 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 41 6e 79 29 ,.*args):.........#.type:.(*Any)
2b7e0 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 28 29 0a 0a 0a 63 .->.int.........self.close()...c
2b800 6c 61 73 73 20 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 42 49 4f 29 3a 0a 20 20 20 20 22 22 22 4f lass.MemoryBuffer(BIO):....."""O
2b820 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 4f 5f 73 5f 6d 65 6d 2e 0a 0a 20 bject.interface.to.BIO_s_mem....
2b840 20 20 20 45 6d 70 69 72 69 63 61 6c 20 74 65 73 74 69 6e 67 20 73 75 67 67 65 73 74 73 20 74 68 ...Empirical.testing.suggests.th
2b860 61 74 20 74 68 69 73 20 63 6c 61 73 73 20 70 65 72 66 6f 72 6d 73 20 6c 65 73 73 20 77 65 6c 6c at.this.class.performs.less.well
2b880 20 74 68 61 6e 0a 20 20 20 20 63 53 74 72 69 6e 67 49 4f 2c 20 62 65 63 61 75 73 65 20 63 53 74 .than.....cStringIO,.because.cSt
2b8a0 72 69 6e 67 49 4f 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 43 2c 20 77 68 65 72 ringIO.is.implemented.in.C,.wher
2b8c0 65 61 73 20 74 68 69 73 20 63 6c 61 73 73 0a 20 20 20 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 eas.this.class.....is.implemente
2b8e0 64 20 69 6e 20 50 79 74 68 6f 6e 2e 20 54 68 75 73 2c 20 74 68 65 20 72 65 63 6f 6d 6d 65 6e 64 d.in.Python..Thus,.the.recommend
2b900 65 64 20 70 72 61 63 74 69 63 65 20 69 73 20 74 6f 20 75 73 65 0a 20 20 20 20 63 53 74 72 69 6e ed.practice.is.to.use.....cStrin
2b920 67 49 4f 20 66 6f 72 20 72 65 67 75 6c 61 72 20 77 6f 72 6b 20 61 6e 64 20 63 6f 6e 76 65 72 74 gIO.for.regular.work.and.convert
2b940 20 73 61 69 64 20 63 53 74 72 69 6e 67 49 4f 20 6f 62 6a 65 63 74 20 74 6f 0a 20 20 20 20 61 20 .said.cStringIO.object.to.....a.
2b960 4d 65 6d 6f 72 79 42 75 66 66 65 72 20 6f 62 6a 65 63 74 20 6f 6e 6c 79 20 77 68 65 6e 20 6e 65 MemoryBuffer.object.only.when.ne
2b980 63 65 73 73 61 72 79 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 cessary......"""......def.__init
2b9a0 5f 5f 28 73 65 6c 66 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 __(self,.data=None):.........#.t
2b9c0 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 ype:.(Optional[bytes]).->.None..
2b9e0 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 66 29 .......super(MemoryBuffer,.self)
2ba00 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 .__init__(self).........if.data.
2ba20 69 73 20 6e 6f 74 20 4e 6f 6e 65 20 61 6e 64 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 64 is.not.None.and.not.isinstance(d
2ba40 61 74 61 2c 20 62 79 74 65 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 54 ata,.bytes):.............raise.T
2ba60 79 70 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 61 74 61 20 ypeError(................."data.
2ba80 6d 75 73 74 20 62 65 20 62 79 74 65 73 20 6f 72 20 4e 6f 6e 65 2c 20 6e 6f 74 20 25 73 22 20 25 must.be.bytes.or.None,.not.%s".%
2baa0 20 28 74 79 70 65 28 64 61 74 61 29 2e 5f 5f 6e 61 6d 65 5f 5f 2c 20 29 29 0a 20 20 20 20 20 20 .(type(data).__name__,.)).......
2bac0 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 5f 73 ..self.bio.=.m2.bio_new(m2.bio_s
2bae0 5f 6d 65 6d 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 20 3d 20 31 _mem()).........self._pyfree.=.1
2bb00 0a 20 20 20 20 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 20 20 .........if.data.is.not.None:...
2bb20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 77 72 69 74 65 28 73 65 6c 66 2e 62 69 6f 2c ..........m2.bio_write(self.bio,
2bb40 20 64 61 74 61 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 .data)......def.__len__(self):..
2bb60 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........
2bb80 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 28 73 65 6c 66 .return.m2.bio_ctrl_pending(self
2bba0 2e 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 72 65 61 64 28 73 65 6c 66 2c 20 73 69 7a 65 3d 30 .bio)......def.read(self,.size=0
2bbc0 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 79 74 65 ):.........#.type:.(int).->.byte
2bbe0 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 65 28 29 s.........if.not.self.readable()
2bc00 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 61 6e :.............raise.IOError('can
2bc20 6e 6f 74 20 72 65 61 64 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 7a 65 3a 0a 20 20 20 20 not.read').........if.size:.....
2bc40 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 64 28 73 65 6c 66 2e ........return.m2.bio_read(self.
2bc60 62 69 6f 2c 20 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 bio,.size).........else:........
2bc80 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 69 6f 5f 72 65 61 64 28 73 65 6c 66 2e 62 69 6f .....return.m2.bio_read(self.bio
2bca0 2c 20 6d 32 2e 62 69 6f 5f 63 74 72 6c 5f 70 65 6e 64 69 6e 67 28 73 65 6c 66 2e 62 69 6f 29 29 ,.m2.bio_ctrl_pending(self.bio))
2bcc0 0a 0a 20 20 20 20 23 20 42 61 63 6b 77 61 72 64 73 2d 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e ......#.Backwards-compatibility.
2bce0 0a 20 20 20 20 67 65 74 76 61 6c 75 65 20 3d 20 72 65 61 64 5f 61 6c 6c 20 3d 20 72 65 61 64 0a .....getvalue.=.read_all.=.read.
2bd00 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 .....def.write_close(self):.....
2bd20 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
2bd40 75 70 65 72 28 4d 65 6d 6f 72 79 42 75 66 66 65 72 2c 20 73 65 6c 66 29 2e 77 72 69 74 65 5f 63 uper(MemoryBuffer,.self).write_c
2bd60 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 73 65 74 5f 6d 65 6d 5f 65 6f lose().........m2.bio_set_mem_eo
2bd80 66 5f 72 65 74 75 72 6e 28 73 65 6c 66 2e 62 69 6f 2c 20 30 29 0a 0a 20 20 20 20 63 6c 6f 73 65 f_return(self.bio,.0)......close
2bda0 20 3d 20 77 72 69 74 65 5f 63 6c 6f 73 65 0a 0a 0a 63 6c 61 73 73 20 46 69 6c 65 28 42 49 4f 29 .=.write_close...class.File(BIO)
2bdc0 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
2bde0 5f 73 5f 70 79 66 64 2e 0a 0a 20 20 20 20 54 68 69 73 20 63 6c 61 73 73 20 69 6e 74 65 72 66 61 _s_pyfd.......This.class.interfa
2be00 63 65 73 20 50 79 74 68 6f 6e 20 74 6f 20 4f 70 65 6e 53 53 4c 20 66 75 6e 63 74 69 6f 6e 73 20 ces.Python.to.OpenSSL.functions.
2be20 74 68 61 74 20 65 78 70 65 63 74 20 42 49 4f 2e 20 46 6f 72 0a 20 20 20 20 67 65 6e 65 72 61 6c that.expect.BIO..For.....general
2be40 20 66 69 6c 65 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 69 6e 20 50 79 74 68 6f 6e 2c 20 75 73 .file.manipulation.in.Python,.us
2be60 65 20 50 79 74 68 6f 6e 27 73 20 62 75 69 6c 74 69 6e 20 66 69 6c 65 20 6f 62 6a 65 63 74 2e 0a e.Python's.builtin.file.object..
2be80 20 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 ...."""......def.__init__(self,.
2bea0 70 79 66 69 6c 65 2c 20 63 6c 6f 73 65 5f 70 79 66 69 6c 65 3d 31 2c 20 6d 6f 64 65 3d 27 72 62 pyfile,.close_pyfile=1,.mode='rb
2bec0 27 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 69 6f 2e 42 79 '):.........#.type:.(Union[io.By
2bee0 74 65 73 49 4f 2c 20 41 6e 79 53 74 72 5d 2c 20 69 6e 74 2c 20 41 6e 79 53 74 72 29 20 2d 3e 20 tesIO,.AnyStr],.int,.AnyStr).->.
2bf00 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 29 2e 5f None.........super(File,.self)._
2bf20 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 20 20 20 20 20 20 _init__(self,._pyfree=1)........
2bf40 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 70 79 66 69 6c 65 2c 20 73 69 78 2e 73 74 72 69 ..if.isinstance(pyfile,.six.stri
2bf60 6e 67 5f 74 79 70 65 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 79 66 69 6c 65 20 3d 20 ng_types):.............pyfile.=.
2bf80 6f 70 65 6e 28 70 79 66 69 6c 65 2c 20 6d 6f 64 65 29 0a 0a 20 20 20 20 20 20 20 20 23 20 54 68 open(pyfile,.mode)..........#.Th
2bfa0 69 73 20 69 73 20 66 6f 72 20 64 6f 77 6e 77 61 72 64 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 is.is.for.downward.compatibility
2bfc0 2c 20 62 75 74 20 49 20 64 6f 6e 27 74 20 74 68 69 6e 6b 2c 20 74 68 61 74 20 69 74 20 69 73 0a ,.but.I.don't.think,.that.it.is.
2bfe0 20 20 20 20 20 20 20 20 23 20 67 6f 6f 64 20 70 72 61 63 74 69 63 65 20 74 6f 20 68 61 76 65 20 ........#.good.practice.to.have.
2c000 74 77 6f 20 68 61 6e 64 6c 65 73 20 66 6f 72 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 2e 20 57 two.handles.for.the.same.file..W
2c020 68 61 74 73 20 61 62 6f 75 74 0a 20 20 20 20 20 20 20 20 23 20 63 6f 6e 63 75 72 72 65 6e 74 20 hats.about.........#.concurrent.
2c040 77 72 69 74 65 20 61 63 63 65 73 73 3f 20 4c 61 73 74 20 77 72 69 74 65 2c 20 6c 61 73 74 20 77 write.access?.Last.write,.last.w
2c060 69 6e 73 3f 20 45 73 70 65 63 69 61 6c 6c 79 20 73 69 6e 63 65 20 50 79 33 0a 20 20 20 20 20 20 ins?.Especially.since.Py3.......
2c080 20 20 23 20 68 61 73 20 69 74 73 20 6f 77 6e 20 62 75 66 66 65 72 20 6d 61 6e 61 67 65 6d 65 6e ..#.has.its.own.buffer.managemen
2c0a0 74 2e 20 53 65 65 3a 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 20 68 74 74 t..See:.........#.........#..htt
2c0c0 70 73 3a 2f 2f 64 6f 63 73 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 33 2e 33 2f 63 2d 61 70 69 2f 66 ps://docs.python.org/3.3/c-api/f
2c0e0 69 6c 65 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 70 79 66 69 6c ile.html.........#.........pyfil
2c100 65 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 6e 61 6d 65 20 3d 20 70 e.flush().........self.fname.=.p
2c120 79 66 69 6c 65 2e 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 66 69 6c 65 20 3d yfile.name.........self.pyfile.=
2c140 20 70 79 66 69 6c 65 0a 20 20 20 20 20 20 20 20 23 20 42 65 20 77 61 72 79 20 6f 66 20 68 74 74 .pyfile.........#.Be.wary.of.htt
2c160 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6f 70 65 6e 73 73 6c 2f 6f 70 65 6e 73 73 6c 2f ps://github.com/openssl/openssl/
2c180 70 75 6c 6c 2f 31 39 32 35 0a 20 20 20 20 20 20 20 20 23 20 42 49 4f 5f 6e 65 77 5f 66 64 20 69 pull/1925.........#.BIO_new_fd.i
2c1a0 73 20 4e 45 56 45 52 20 74 6f 20 62 65 20 75 73 65 64 20 62 65 66 6f 72 65 20 4f 70 65 6e 53 53 s.NEVER.to.be.used.before.OpenSS
2c1c0 4c 20 31 2e 31 2e 31 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 6d 32 2c 20 22 L.1.1.1.........if.hasattr(m2,."
2c1e0 62 69 6f 5f 6e 65 77 5f 70 79 66 64 22 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 bio_new_pyfd"):.............self
2c200 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 5f 70 79 66 64 28 70 79 66 69 6c 65 2e 66 69 .bio.=.m2.bio_new_pyfd(pyfile.fi
2c220 6c 65 6e 6f 28 29 2c 20 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 29 0a 20 20 20 20 20 20 20 20 leno(),.m2.bio_noclose).........
2c240 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e else:.............self.bio.=.m2.
2c260 62 69 6f 5f 6e 65 77 5f 70 79 66 69 6c 65 28 70 79 66 69 6c 65 2c 20 6d 32 2e 62 69 6f 5f 6e 6f bio_new_pyfile(pyfile,.m2.bio_no
2c280 63 6c 6f 73 65 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 5f 70 79 66 69 6c close)..........self.close_pyfil
2c2a0 65 20 3d 20 63 6c 6f 73 65 5f 70 79 66 69 6c 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c e.=.close_pyfile.........self.cl
2c2c0 6f 73 65 64 20 3d 20 46 61 6c 73 65 0a 0a 20 20 20 20 64 65 66 20 66 6c 75 73 68 28 73 65 6c 66 osed.=.False......def.flush(self
2c2e0 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...
2c300 20 20 20 20 20 20 73 75 70 65 72 28 46 69 6c 65 2c 20 73 65 6c 66 29 2e 66 6c 75 73 68 28 29 0a ......super(File,.self).flush().
2c320 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 66 69 6c 65 2e 66 6c 75 73 68 28 29 0a 0a 20 20 20 ........self.pyfile.flush().....
2c340 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
2c360 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 66 6c 75 73 68 28 :.().->.None.........self.flush(
2c380 29 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 29 2e 63 6c 6f 73 ).........super(File,.self).clos
2c3a0 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 63 6c 6f 73 65 5f 70 79 66 69 6c 65 e().........if.self.close_pyfile
2c3c0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 66 69 6c 65 2e 63 6c 6f 73 65 28 :.............self.pyfile.close(
2c3e0 29 0a 0a 20 20 20 20 64 65 66 20 72 65 73 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 )......def.reset(self):.........
2c400 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 65 74 #.type:.().->.int........."""Set
2c420 20 74 68 65 20 62 69 6f 20 74 6f 20 69 74 73 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 2e 0a 0a .the.bio.to.its.initial.state...
2c440 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20 ........:return:.0.for.success,.
2c460 61 6e 64 20 2d 31 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 and.-1.for.failure........."""..
2c480 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 70 65 72 28 46 69 6c 65 2c 20 73 65 6c 66 29 2e .......return.super(File,.self).
2c4a0 72 65 73 65 74 28 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 reset()......def.__del__(self):.
2c4c0 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 63 6c 6f 73 65 64 3a 0a 20 20 20 20 ........if.not.self.closed:.....
2c4e0 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 62 69 6f 29 0a 0a 0a ........m2.bio_free(self.bio)...
2c500 64 65 66 20 6f 70 65 6e 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c 20 6d 6f 64 65 3d 27 72 62 27 def.openfile(filename,.mode='rb'
2c520 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 53 74 72 2c 20 41 6e 79 53 74 72 29 20 ):.....#.type:.(AnyStr,.AnyStr).
2c540 2d 3e 20 46 69 6c 65 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 66 20 3d 20 6f 70 65 ->.File.....try:.........f.=.ope
2c560 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 6d 6f 64 65 29 0a 20 20 20 20 65 78 63 65 70 74 20 49 4f 45 n(filename,.mode).....except.IOE
2c580 72 72 6f 72 20 61 73 20 65 78 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 42 49 4f 45 72 72 rror.as.ex:.........raise.BIOErr
2c5a0 6f 72 28 65 78 2e 61 72 67 73 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 46 69 6c 65 28 66 29 0a or(ex.args)......return.File(f).
2c5c0 0a 0a 63 6c 61 73 73 20 49 4f 42 75 66 66 65 72 28 42 49 4f 29 3a 0a 20 20 20 20 22 22 22 4f 62 ..class.IOBuffer(BIO):....."""Ob
2c5e0 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 4f 5f 66 5f 62 75 66 66 65 72 2e 0a ject.interface.to.BIO_f_buffer..
2c600 0a 20 20 20 20 49 74 73 20 70 72 69 6e 63 69 70 61 6c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 74 .....Its.principal.function.is.t
2c620 6f 20 62 65 20 42 49 4f 5f 70 75 73 68 28 29 27 65 64 20 6f 6e 20 74 6f 70 20 6f 66 20 61 20 42 o.be.BIO_push()'ed.on.top.of.a.B
2c640 49 4f 5f 66 5f 73 73 6c 2c 20 73 6f 0a 20 20 20 20 74 68 61 74 20 6d 61 6b 65 66 69 6c 65 28 29 IO_f_ssl,.so.....that.makefile()
2c660 20 6f 66 20 73 61 69 64 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 53 4c 20 73 6f 63 6b 65 74 20 77 .of.said.underlying.SSL.socket.w
2c680 6f 72 6b 73 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 70 6f 70 20 3d 20 orks......"""......m2_bio_pop.=.
2c6a0 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 6d 32 2e m2.bio_pop.....m2_bio_free.=.m2.
2c6c0 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 6c 66 2c bio_free......def.__init__(self,
2c6e0 20 75 6e 64 65 72 5f 62 69 6f 2c 20 6d 6f 64 65 3d 27 72 77 62 27 2c 20 5f 70 79 66 72 65 65 3d .under_bio,.mode='rwb',._pyfree=
2c700 31 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2c 20 73 74 72 2c 20 69 1):.........#.type:.(BIO,.str,.i
2c720 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 28 49 4f 42 75 66 66 nt).->.None.........super(IOBuff
2c740 65 72 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 er,.self).__init__(self,._pyfree
2c760 3d 5f 70 79 66 72 65 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6f 20 3d 20 6d 32 2e 62 =_pyfree).........self.io.=.m2.b
2c780 69 6f 5f 6e 65 77 28 6d 32 2e 62 69 6f 5f 66 5f 62 75 66 66 65 72 28 29 29 0a 20 20 20 20 20 20 io_new(m2.bio_f_buffer()).......
2c7a0 20 20 73 65 6c 66 2e 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 70 75 73 68 28 73 65 6c 66 2e 69 6f ..self.bio.=.m2.bio_push(self.io
2c7c0 2c 20 75 6e 64 65 72 5f 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 23 20 54 68 ,.under_bio._ptr()).........#.Th
2c7e0 69 73 20 72 65 66 65 72 65 6e 63 65 20 6b 65 65 70 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e is.reference.keeps.the.underlyin
2c800 67 20 42 49 4f 20 61 6c 69 76 65 20 77 68 69 6c 65 20 77 65 27 72 65 20 6e 6f 74 20 63 6c 6f 73 g.BIO.alive.while.we're.not.clos
2c820 65 64 2e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 75 6e 64 65 72 5f 62 69 6f 20 3d 20 75 6e ed..........self._under_bio.=.un
2c840 64 65 72 5f 62 69 6f 0a 20 20 20 20 20 20 20 20 69 66 20 27 77 27 20 69 6e 20 6d 6f 64 65 3a 0a der_bio.........if.'w'.in.mode:.
2c860 20 20 20 20 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 ............self.write_closed.=.
2c880 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 66 0.........else:.............self
2c8a0 2e 77 72 69 74 65 5f 63 6c 6f 73 65 64 20 3d 20 31 0a 0a 20 20 20 20 64 65 66 20 5f 5f 64 65 6c .write_closed.=.1......def.__del
2c8c0 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:.().->.
2c8e0 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,.'_
2c900 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
2c920 5f 62 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 _bio_pop(self.bio).........self.
2c940 6d 32 5f 62 69 6f 5f 66 72 65 65 28 73 65 6c 66 2e 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 63 6c m2_bio_free(self.io)......def.cl
2c960 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 3a 20 28 29 20 2d 3e ose(self):.........#.type:.().->
2c980 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 42 49 4f 2e 63 6c 6f 73 65 28 73 65 6c 66 29 0a 0a 0a .None.........BIO.close(self)...
2c9a0 63 6c 61 73 73 20 43 69 70 68 65 72 53 74 72 65 61 6d 28 42 49 4f 29 3a 0a 20 20 20 20 22 22 22 class.CipherStream(BIO):....."""
2c9c0 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 42 49 4f 5f 66 5f 63 69 70 68 65 72 Object.interface.to.BIO_f_cipher
2c9e0 2e 22 22 22 0a 0a 20 20 20 20 53 41 4c 54 5f 4c 45 4e 20 3d 20 6d 32 2e 50 4b 43 53 35 5f 53 41 ."""......SALT_LEN.=.m2.PKCS5_SA
2ca00 4c 54 5f 4c 45 4e 0a 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 70 6f 70 20 3d 20 6d 32 2e 62 69 6f 5f LT_LEN......m2_bio_pop.=.m2.bio_
2ca20 70 6f 70 0a 20 20 20 20 6d 32 5f 62 69 6f 5f 66 72 65 65 20 3d 20 6d 32 2e 62 69 6f 5f 66 72 65 pop.....m2_bio_free.=.m2.bio_fre
2ca40 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 6f 62 69 6f 29 3a e......def.__init__(self,.obio):
2ca60 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 29 20 2d 3e 20 4e 6f 6e 65 0a 20 .........#.type:.(BIO).->.None..
2ca80 20 20 20 20 20 20 20 73 75 70 65 72 28 43 69 70 68 65 72 53 74 72 65 61 6d 2c 20 73 65 6c 66 29 .......super(CipherStream,.self)
2caa0 2e 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 0a 20 20 20 20 20 .__init__(self,._pyfree=1)......
2cac0 20 20 20 73 65 6c 66 2e 6f 62 69 6f 20 3d 20 6f 62 69 6f 0a 20 20 20 20 20 20 20 20 73 65 6c 66 ...self.obio.=.obio.........self
2cae0 2e 62 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 63 69 70 68 65 .bio.=.m2.bio_new(m2.bio_f_ciphe
2cb00 72 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 30 0a 0a 20 20 r()).........self.closed.=.0....
2cb20 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 74 ..def.__del__(self):.........#.t
2cb40 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 6e 6f 74 20 67 ype:.().->.None.........if.not.g
2cb60 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 63 6c 6f 73 65 64 27 2c 20 31 29 3a 0a 20 20 20 20 20 etattr(self,.'closed',.1):......
2cb80 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f .......self.close()......def.clo
2cba0 73 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 se(self):.........#.type:.().->.
2cbc0 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 62 69 6f 5f 70 6f 70 28 73 65 6c None.........self.m2_bio_pop(sel
2cbe0 66 2e 62 69 6f 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 62 69 6f 5f 66 72 65 65 28 f.bio).........self.m2_bio_free(
2cc00 73 65 6c 66 2e 62 69 6f 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 64 20 3d 20 self.bio).........self.closed.=.
2cc20 31 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 5f 63 6c 6f 73 65 28 73 65 6c 66 29 3a 0a 20 20 1......def.write_close(self):...
2cc40 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........
2cc60 20 73 65 6c 66 2e 6f 62 69 6f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 28 29 0a 0a 20 20 20 20 64 65 .self.obio.write_close()......de
2cc80 66 20 73 65 74 5f 63 69 70 68 65 72 28 73 65 6c 66 2c 20 61 6c 67 6f 2c 20 6b 65 79 2c 20 69 76 f.set_cipher(self,.algo,.key,.iv
2cca0 2c 20 6f 70 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 ,.op):.........#.type:.(str,.Any
2ccc0 53 74 72 2c 20 41 6e 79 53 74 72 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 Str,.AnyStr,.int).->.None.......
2cce0 20 20 63 69 70 68 65 72 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e ..cipher.=.getattr(m2,.algo,.Non
2cd00 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 e).........if.cipher.is.None:...
2cd20 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
2cd40 6f 77 6e 20 63 69 70 68 65 72 27 2c 20 61 6c 67 6f 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a own.cipher',.algo).........else:
2cd60 0a 20 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 6b .............if.not.isinstance(k
2cd80 65 79 2c 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 6b 65 79 20 ey,.bytes):.................key.
2cda0 3d 20 6b 65 79 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 =.key.encode('utf8')............
2cdc0 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 69 76 2c 20 62 79 74 65 73 29 3a 0a 20 .if.not.isinstance(iv,.bytes):..
2cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 76 20 3d 20 69 76 2e 65 6e 63 6f 64 65 28 27 75 ...............iv.=.iv.encode('u
2ce00 74 66 38 27 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 73 65 74 5f 63 69 70 68 65 72 28 tf8').........m2.bio_set_cipher(
2ce20 73 65 6c 66 2e 62 69 6f 2c 20 63 69 70 68 65 72 28 29 2c 20 6b 65 79 2c 20 69 76 2c 20 69 6e 74 self.bio,.cipher(),.key,.iv,.int
2ce40 28 6f 70 29 29 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 70 75 73 68 28 73 65 6c 66 2e 62 (op)).........m2.bio_push(self.b
2ce60 69 6f 2c 20 73 65 6c 66 2e 6f 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 0a 63 6c 61 73 73 20 53 53 io,.self.obio._ptr())...class.SS
2ce80 4c 42 69 6f 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 61 LBio(BIO):....."""Object.interfa
2cea0 63 65 20 74 6f 20 42 49 4f 5f 66 5f 73 73 6c 2e 22 22 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 ce.to.BIO_f_ssl."""......def.__i
2cec0 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 5f 70 79 66 72 65 65 3d 31 29 3a 0a 20 20 20 20 20 20 20 20 nit__(self,._pyfree=1):.........
2cee0 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 73 75 #.type:.(int).->.None.........su
2cf00 70 65 72 28 53 53 4c 42 69 6f 2c 20 73 65 6c 66 29 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c per(SSLBio,.self).__init__(self,
2cf20 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 2e 62 ._pyfree=_pyfree).........self.b
2cf40 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 73 73 6c 28 29 29 0a io.=.m2.bio_new(m2.bio_f_ssl()).
2cf60 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 6f 73 65 64 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 ........self.closed.=.0......def
2cf80 20 73 65 74 5f 73 73 6c 28 73 65 6c 66 2c 20 63 6f 6e 6e 2c 20 63 6c 6f 73 65 5f 66 6c 61 67 3d .set_ssl(self,.conn,.close_flag=
2cfa0 6d 32 2e 62 69 6f 5f 6e 6f 63 6c 6f 73 65 29 3a 0a 20 20 20 20 20 20 20 20 23 23 20 74 79 70 65 m2.bio_noclose):.........##.type
2cfc0 3a 20 28 43 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 :.(Connection,.int).->.None.....
2cfe0 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 73 20 74 68 65 20 62 69 6f 20 74 6f 20 ....""".........Sets.the.bio.to.
2d000 74 68 65 20 53 53 4c 20 70 6f 69 6e 74 65 72 20 77 68 69 63 68 20 69 73 0a 20 20 20 20 20 20 20 the.SSL.pointer.which.is........
2d020 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a .contained.in.the.connection.obj
2d040 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 5f 70 ect..........""".........self._p
2d060 79 66 72 65 65 20 3d 20 30 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f 5f 73 65 74 5f 73 73 6c yfree.=.0.........m2.bio_set_ssl
2d080 28 73 65 6c 66 2e 62 69 6f 2c 20 63 6f 6e 6e 2e 73 73 6c 2c 20 63 6c 6f 73 65 5f 66 6c 61 67 29 (self.bio,.conn.ssl,.close_flag)
2d0a0 0a 20 20 20 20 20 20 20 20 69 66 20 63 6c 6f 73 65 5f 66 6c 61 67 20 3d 3d 20 6d 32 2e 62 69 6f .........if.close_flag.==.m2.bio
2d0c0 5f 6e 6f 63 6c 6f 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 73 65 74 5f 73 _noclose:.............conn.set_s
2d0e0 73 6c 5f 63 6c 6f 73 65 5f 66 6c 61 67 28 6d 32 2e 62 69 6f 5f 63 6c 6f 73 65 29 0a 0a 20 20 20 sl_close_flag(m2.bio_close).....
2d100 20 64 65 66 20 64 6f 5f 68 61 6e 64 73 68 61 6b 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 .def.do_handshake(self):........
2d120 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 44 6f .#.type:.().->.int........."""Do
2d140 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65 2e 0a 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 .the.handshake...........Return.
2d160 31 20 69 66 20 74 68 65 20 68 61 6e 64 73 68 61 6b 65 20 63 6f 6d 70 6c 65 74 65 73 0a 20 20 20 1.if.the.handshake.completes....
2d180 20 20 20 20 20 52 65 74 75 72 6e 20 30 20 6f 72 20 61 20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 .....Return.0.or.a.negative.numb
2d1a0 65 72 20 69 66 20 74 68 65 72 65 20 69 73 20 61 20 70 72 6f 62 6c 65 6d 0a 20 20 20 20 20 20 20 er.if.there.is.a.problem........
2d1c0 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 64 6f 5f 68 61 .""".........return.m2.bio_do_ha
2d1e0 6e 64 73 68 61 6b 65 28 73 65 6c 66 2e 62 69 6f 29 0a 94 7d 94 28 8c 08 42 49 4f 45 72 72 6f 72 ndshake(self.bio)..}.(..BIOError
2d200 94 6a 37 02 00 00 4b 10 4b 11 87 94 8c 0c 42 49 4f 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 .j7...K.K.....BIO.__init__.j.%..
2d220 4b 1c 4b 22 87 94 8c 0b 42 49 4f 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 24 4b 26 87 94 8c K.K"....BIO.__del__.j.%..K$K&...
2d240 08 42 49 4f 2e 5f 70 74 72 94 6a 18 25 00 00 4b 28 4b 29 87 94 8c 0a 42 49 4f 2e 66 69 6c 65 6e .BIO._ptr.j.%..K(K)....BIO.filen
2d260 6f 94 6a 18 25 00 00 4b 2e 4b 30 87 94 8c 0c 42 49 4f 2e 72 65 61 64 61 62 6c 65 94 6a 18 25 00 o.j.%..K.K0....BIO.readable.j.%.
2d280 00 4b 32 4b 34 87 94 8c 08 42 49 4f 2e 72 65 61 64 94 6a 18 25 00 00 4b 36 4b 47 87 94 8c 0c 42 .K2K4....BIO.read.j.%..K6KG....B
2d2a0 49 4f 2e 72 65 61 64 6c 69 6e 65 94 6a 18 25 00 00 4b 49 4b 4f 87 94 8c 0d 42 49 4f 2e 72 65 61 IO.readline.j.%..KIKO....BIO.rea
2d2c0 64 6c 69 6e 65 73 94 6a 18 25 00 00 4b 51 4b 5b 87 94 8c 0d 42 49 4f 2e 77 72 69 74 65 61 62 6c dlines.j.%..KQK[....BIO.writeabl
2d2e0 65 94 6a 18 25 00 00 4b 5d 4b 5f 87 94 8c 09 42 49 4f 2e 77 72 69 74 65 94 6a 18 25 00 00 4b 61 e.j.%..K]K_....BIO.write.j.%..Ka
2d300 4b 6c 87 94 8c 0f 42 49 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 18 25 00 00 4b 6e 4b 70 87 Kl....BIO.write_close.j.%..KnKp.
2d320 94 8c 09 42 49 4f 2e 66 6c 75 73 68 94 6a 18 25 00 00 4b 72 4b 78 87 94 8c 09 42 49 4f 2e 72 65 ...BIO.flush.j.%..KrKx....BIO.re
2d340 73 65 74 94 6a 18 25 00 00 4b 7a 4b 80 87 94 8c 09 42 49 4f 2e 63 6c 6f 73 65 94 6a 18 25 00 00 set.j.%..KzK.....BIO.close.j.%..
2d360 4b 82 4b 86 87 94 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 74 72 79 94 6a 18 25 00 00 4b 88 K.K.....BIO.should_retry.j.%..K.
2d380 4b 8f 87 94 8c 0f 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 61 64 94 6a 18 25 00 00 4b 91 4b 95 87 K.....BIO.should_read.j.%..K.K..
2d3a0 94 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 77 72 69 74 65 94 6a 18 25 00 00 4b 97 4b 9a 87 94 8c ...BIO.should_write.j.%..K.K....
2d3c0 08 42 49 4f 2e 74 65 6c 6c 94 6a 18 25 00 00 4b 9c 4b 9e 87 94 8c 08 42 49 4f 2e 73 65 65 6b 94 .BIO.tell.j.%..K.K.....BIO.seek.
2d3e0 6a 18 25 00 00 4b a0 4b a2 87 94 8c 0d 42 49 4f 2e 5f 5f 65 6e 74 65 72 5f 5f 94 6a 18 25 00 00 j.%..K.K.....BIO.__enter__.j.%..
2d400 4b a4 4b a5 87 94 8c 0c 42 49 4f 2e 5f 5f 65 78 69 74 5f 5f 94 6a 18 25 00 00 4b a7 4b a9 87 94 K.K.....BIO.__exit__.j.%..K.K...
2d420 8c 03 42 49 4f 94 6a 37 02 00 00 4b 17 4b a9 87 94 8c 15 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e ..BIO.j7...K.K.....MemoryBuffer.
2d440 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b b6 4b bf 87 94 8c 14 4d 65 6d 6f 72 79 42 75 66 66 __init__.j.%..K.K.....MemoryBuff
2d460 65 72 2e 5f 5f 6c 65 6e 5f 5f 94 6a 18 25 00 00 4b c1 4b c3 87 94 8c 11 4d 65 6d 6f 72 79 42 75 er.__len__.j.%..K.K.....MemoryBu
2d480 66 66 65 72 2e 72 65 61 64 94 6a 18 25 00 00 4b c5 4b cc 87 94 8c 18 4d 65 6d 6f 72 79 42 75 66 ffer.read.j.%..K.K.....MemoryBuf
2d4a0 66 65 72 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 18 25 00 00 4b d1 4b d4 87 94 8c 0c 4d 65 6d fer.write_close.j.%..K.K.....Mem
2d4c0 6f 72 79 42 75 66 66 65 72 94 6a 37 02 00 00 4b ac 4b d6 87 94 8c 0d 46 69 6c 65 2e 5f 5f 69 6e oryBuffer.j7...K.K.....File.__in
2d4e0 69 74 5f 5f 94 6a 18 25 00 00 4b e0 4b f9 87 94 8c 0a 46 69 6c 65 2e 66 6c 75 73 68 94 6a 18 25 it__.j.%..K.K.....File.flush.j.%
2d500 00 00 4b fb 4b fe 87 94 8c 0a 46 69 6c 65 2e 63 6c 6f 73 65 94 6a 18 25 00 00 4d 00 01 4d 05 01 ..K.K.....File.close.j.%..M..M..
2d520 87 94 8c 0a 46 69 6c 65 2e 72 65 73 65 74 94 6a 18 25 00 00 4d 07 01 4d 0d 01 87 94 8c 0c 46 69 ....File.reset.j.%..M..M......Fi
2d540 6c 65 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d 0f 01 4d 11 01 87 94 8c 04 46 69 6c 65 94 6a le.__del__.j.%..M..M......File.j
2d560 37 02 00 00 4b d9 4d 11 01 87 94 8c 08 6f 70 65 6e 66 69 6c 65 94 6a 18 25 00 00 4d 14 01 4d 1b 7...K.M......openfile.j.%..M..M.
2d580 01 87 94 8c 11 49 4f 42 75 66 66 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 28 01 4d .....IOBuffer.__init__.j.%..M(.M
2d5a0 32 01 87 94 8c 10 49 4f 42 75 66 66 65 72 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d 34 01 4d 2.....IOBuffer.__del__.j.%..M4.M
2d5c0 38 01 87 94 8c 0e 49 4f 42 75 66 66 65 72 2e 63 6c 6f 73 65 94 6a 18 25 00 00 4d 3a 01 4d 3c 01 8.....IOBuffer.close.j.%..M:.M<.
2d5e0 87 94 8c 08 49 4f 42 75 66 66 65 72 94 6a 37 02 00 00 4d 1e 01 4d 3c 01 87 94 8c 15 43 69 70 68 ....IOBuffer.j7...M..M<.....Ciph
2d600 65 72 53 74 72 65 61 6d 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 47 01 4d 4c 01 87 94 8c erStream.__init__.j.%..MG.ML....
2d620 14 43 69 70 68 65 72 53 74 72 65 61 6d 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d 4e 01 4d 51 .CipherStream.__del__.j.%..MN.MQ
2d640 01 87 94 8c 12 43 69 70 68 65 72 53 74 72 65 61 6d 2e 63 6c 6f 73 65 94 6a 18 25 00 00 4d 53 01 .....CipherStream.close.j.%..MS.
2d660 4d 57 01 87 94 8c 18 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 MW.....CipherStream.write_close.
2d680 6a 18 25 00 00 4d 59 01 4d 5b 01 87 94 8c 17 43 69 70 68 65 72 53 74 72 65 61 6d 2e 73 65 74 5f j.%..MY.M[.....CipherStream.set_
2d6a0 63 69 70 68 65 72 94 6a 18 25 00 00 4d 5d 01 4d 68 01 87 94 8c 0c 43 69 70 68 65 72 53 74 72 65 cipher.j.%..M].Mh.....CipherStre
2d6c0 61 6d 94 6a 37 02 00 00 4d 3f 01 4d 68 01 87 94 8c 0f 53 53 4c 42 69 6f 2e 5f 5f 69 6e 69 74 5f am.j7...M?.Mh.....SSLBio.__init_
2d6e0 5f 94 6a 18 25 00 00 4d 6e 01 4d 72 01 87 94 8c 0e 53 53 4c 42 69 6f 2e 73 65 74 5f 73 73 6c 94 _.j.%..Mn.Mr.....SSLBio.set_ssl.
2d700 6a 18 25 00 00 4d 74 01 4d 7d 01 87 94 8c 13 53 53 4c 42 69 6f 2e 64 6f 5f 68 61 6e 64 73 68 61 j.%..Mt.M}.....SSLBio.do_handsha
2d720 6b 65 94 6a 18 25 00 00 4d 7f 01 4d 86 01 87 94 8c 06 53 53 4c 42 69 6f 94 6a 37 02 00 00 4d 6b ke.j.%..M..M......SSLBio.j7...Mk
2d740 01 4d 86 01 87 94 75 7d 94 28 8c 03 42 49 4f 94 6a 60 02 00 00 8c 09 42 49 4f 2e 63 6c 6f 73 65 .M....u}.(..BIO.j`.....BIO.close
2d760 94 6a 60 02 00 00 8c 0a 42 49 4f 2e 66 69 6c 65 6e 6f 94 6a 60 02 00 00 8c 09 42 49 4f 2e 66 6c .j`.....BIO.fileno.j`.....BIO.fl
2d780 75 73 68 94 6a 60 02 00 00 8c 08 42 49 4f 2e 72 65 61 64 94 6a 60 02 00 00 8c 0c 42 49 4f 2e 72 ush.j`.....BIO.read.j`.....BIO.r
2d7a0 65 61 64 61 62 6c 65 94 6a 60 02 00 00 8c 0c 42 49 4f 2e 72 65 61 64 6c 69 6e 65 94 6a 60 02 00 eadable.j`.....BIO.readline.j`..
2d7c0 00 8c 0d 42 49 4f 2e 72 65 61 64 6c 69 6e 65 73 94 6a 60 02 00 00 8c 09 42 49 4f 2e 72 65 73 65 ...BIO.readlines.j`.....BIO.rese
2d7e0 74 94 6a 60 02 00 00 8c 08 42 49 4f 2e 73 65 65 6b 94 6a 60 02 00 00 8c 0f 42 49 4f 2e 73 68 6f t.j`.....BIO.seek.j`.....BIO.sho
2d800 75 6c 64 5f 72 65 61 64 94 6a 60 02 00 00 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 72 65 74 72 79 uld_read.j`.....BIO.should_retry
2d820 94 6a 60 02 00 00 8c 10 42 49 4f 2e 73 68 6f 75 6c 64 5f 77 72 69 74 65 94 6a 60 02 00 00 8c 08 .j`.....BIO.should_write.j`.....
2d840 42 49 4f 2e 74 65 6c 6c 94 6a 60 02 00 00 8c 09 42 49 4f 2e 77 72 69 74 65 94 6a 60 02 00 00 8c BIO.tell.j`.....BIO.write.j`....
2d860 0f 42 49 4f 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 60 02 00 00 8c 0d 42 49 4f 2e 77 72 69 74 .BIO.write_close.j`.....BIO.writ
2d880 65 61 62 6c 65 94 6a 60 02 00 00 6a 66 13 00 00 6a 60 02 00 00 8c 0c 43 69 70 68 65 72 53 74 72 eable.j`...jf...j`.....CipherStr
2d8a0 65 61 6d 94 6a 60 02 00 00 8c 12 43 69 70 68 65 72 53 74 72 65 61 6d 2e 63 6c 6f 73 65 94 6a 60 eam.j`.....CipherStream.close.j`
2d8c0 02 00 00 8c 17 43 69 70 68 65 72 53 74 72 65 61 6d 2e 73 65 74 5f 63 69 70 68 65 72 94 6a 60 02 .....CipherStream.set_cipher.j`.
2d8e0 00 00 8c 18 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 60 02 ....CipherStream.write_close.j`.
2d900 00 00 8c 04 46 69 6c 65 94 6a 60 02 00 00 8c 0a 46 69 6c 65 2e 63 6c 6f 73 65 94 6a 60 02 00 00 ....File.j`.....File.close.j`...
2d920 8c 0a 46 69 6c 65 2e 66 6c 75 73 68 94 6a 60 02 00 00 8c 0a 46 69 6c 65 2e 72 65 73 65 74 94 6a ..File.flush.j`.....File.reset.j
2d940 60 02 00 00 8c 08 49 4f 42 75 66 66 65 72 94 6a 60 02 00 00 8c 0e 49 4f 42 75 66 66 65 72 2e 63 `.....IOBuffer.j`.....IOBuffer.c
2d960 6c 6f 73 65 94 6a 60 02 00 00 8c 0c 4d 65 6d 6f 72 79 42 75 66 66 65 72 94 6a 60 02 00 00 8c 11 lose.j`.....MemoryBuffer.j`.....
2d980 4d 65 6d 6f 72 79 42 75 66 66 65 72 2e 72 65 61 64 94 6a 60 02 00 00 8c 18 4d 65 6d 6f 72 79 42 MemoryBuffer.read.j`.....MemoryB
2d9a0 75 66 66 65 72 2e 77 72 69 74 65 5f 63 6c 6f 73 65 94 6a 60 02 00 00 8c 06 53 53 4c 42 69 6f 94 uffer.write_close.j`.....SSLBio.
2d9c0 6a 60 02 00 00 8c 13 53 53 4c 42 69 6f 2e 64 6f 5f 68 61 6e 64 73 68 61 6b 65 94 6a 60 02 00 00 j`.....SSLBio.do_handshake.j`...
2d9e0 8c 0e 53 53 4c 42 69 6f 2e 73 65 74 5f 73 73 6c 94 6a 60 02 00 00 8c 08 6f 70 65 6e 66 69 6c 65 ..SSLBio.set_ssl.j`.....openfile
2da00 94 6a 60 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 42 49 4f 94 74 94 8c 0b 4d 32 43 72 79 70 .j`...u..M2Crypto.BIO.t...M2Cryp
2da20 74 6f 2e 42 4e 94 28 58 67 06 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f to.BN.(Xg...from.__future__.impo
2da40 72 74 20 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 rt.absolute_import..""".M2Crypto
2da60 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 42 4e 20 28 42 49 47 4e 55 4d 29 .wrapper.for.OpenSSL.BN.(BIGNUM)
2da80 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 35 20 4f 70 65 6e 20 53 .API...Copyright.(c).2005.Open.S
2daa0 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 20 41 ource.Applications.Foundation..A
2dac0 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 66 72 6f 6d 20 4d 32 ll.rights.reserved.."""..from.M2
2dae0 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 6d 32 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 Crypto.import.m2.from.typing.imp
2db00 6f 72 74 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 0a 64 65 66 20 72 61 6e 64 28 ort.Optional..#.noqa...def.rand(
2db20 62 69 74 73 2c 20 74 6f 70 3d 2d 31 2c 20 62 6f 74 74 6f 6d 3d 30 29 3a 0a 20 20 20 20 23 20 74 bits,.top=-1,.bottom=0):.....#.t
2db40 79 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c ype:.(int,.int,.int).->.Optional
2db60 5b 69 6e 74 5d 0a 20 20 20 20 22 22 22 0a 20 20 20 20 47 65 6e 65 72 61 74 65 20 63 72 79 70 74 [int].....""".....Generate.crypt
2db80 6f 67 72 61 70 68 69 63 61 6c 6c 79 20 73 74 72 6f 6e 67 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 ographically.strong.random.numbe
2dba0 72 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 74 73 3a 20 20 20 4c 65 6e 67 74 68 20 6f 66 r.......:param.bits:...Length.of
2dbc0 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 69 6e 20 62 69 74 73 2e 0a 20 20 20 20 3a 70 61 72 .random.number.in.bits......:par
2dbe0 61 6d 20 74 6f 70 3a 20 20 20 20 49 66 20 2d 31 2c 20 74 68 65 20 6d 6f 73 74 20 73 69 67 6e 69 am.top:....If.-1,.the.most.signi
2dc00 66 69 63 61 6e 74 20 62 69 74 20 63 61 6e 20 62 65 20 30 2e 20 49 66 20 30 2c 20 74 68 65 20 6d ficant.bit.can.be.0..If.0,.the.m
2dc20 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 67 6e 69 66 69 63 61 ost....................significa
2dc40 6e 74 20 62 69 74 20 69 73 20 31 2c 20 61 6e 64 20 69 66 20 31 2c 20 74 68 65 20 74 77 6f 20 6d nt.bit.is.1,.and.if.1,.the.two.m
2dc60 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ost.significant.................
2dc80 20 20 20 62 69 74 73 20 77 69 6c 6c 20 62 65 20 31 2e 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 6f ...bits.will.be.1......:param.bo
2dca0 74 74 6f 6d 3a 20 49 66 20 62 6f 74 74 6f 6d 20 69 73 20 74 72 75 65 2c 20 74 68 65 20 6e 75 6d ttom:.If.bottom.is.true,.the.num
2dcc0 62 65 72 20 77 69 6c 6c 20 62 65 20 6f 64 64 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 ber.will.be.odd......""".....ret
2dce0 75 72 6e 20 6d 32 2e 62 6e 5f 72 61 6e 64 28 62 69 74 73 2c 20 74 6f 70 2c 20 62 6f 74 74 6f 6d urn.m2.bn_rand(bits,.top,.bottom
2dd00 29 0a 0a 0a 64 65 66 20 72 61 6e 64 5f 72 61 6e 67 65 28 72 61 6e 67 65 29 3a 0a 20 20 20 20 23 )...def.rand_range(range):.....#
2dd20 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 22 22 22 0a 20 20 20 20 .type:.(int).->.int.....""".....
2dd40 47 65 6e 65 72 61 74 65 20 61 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 69 6e 20 61 20 72 61 Generate.a.random.number.in.a.ra
2dd60 6e 67 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 72 61 6e 67 65 3a 20 55 70 70 65 72 20 6c 69 nge.......:param.range:.Upper.li
2dd80 6d 69 74 20 66 6f 72 20 72 61 6e 67 65 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 mit.for.range......:return:.....
2dda0 20 41 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20 5b 30 .A.random.number.in.the.range.[0
2ddc0 2c 20 72 61 6e 67 65 29 0a 20 20 20 20 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 62 ,.range).....""".....return.m2.b
2dde0 6e 5f 72 61 6e 64 5f 72 61 6e 67 65 28 72 61 6e 67 65 29 0a 0a 0a 64 65 66 20 72 61 6e 64 66 6e n_rand_range(range)...def.randfn
2de00 61 6d 65 28 6c 65 6e 67 74 68 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d ame(length):.....#.type:.(int).-
2de20 3e 20 73 74 72 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 65 74 75 72 6e 20 61 20 72 61 6e 64 6f >.str.....""".....Return.a.rando
2de40 6d 20 66 69 6c 65 6e 61 6d 65 2c 20 77 68 69 63 68 20 69 73 20 73 69 6d 70 6c 79 20 61 20 73 74 m.filename,.which.is.simply.a.st
2de60 72 69 6e 67 20 77 68 65 72 65 20 61 6c 6c 0a 20 20 20 20 74 68 65 20 63 68 61 72 61 63 74 65 72 ring.where.all.....the.character
2de80 73 20 61 72 65 20 66 72 6f 6d 20 74 68 65 20 73 65 74 20 5b 61 2d 7a 41 2d 5a 30 2d 39 5d 2e 0a s.are.from.the.set.[a-zA-Z0-9]..
2dea0 0a 20 20 20 20 3a 70 61 72 61 6d 20 6c 65 6e 67 74 68 3a 20 4c 65 6e 67 74 68 20 6f 66 20 66 69 .....:param.length:.Length.of.fi
2dec0 6c 65 6e 61 6d 65 20 74 6f 20 72 65 74 75 72 6e 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 lename.to.return......:return:..
2dee0 20 20 20 20 20 72 61 6e 64 6f 6d 20 66 69 6c 65 6e 61 6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 .....random.filename.string.....
2df00 22 22 22 0a 20 20 20 20 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e 67 73 0a 20 20 20 20 77 61 72 6e """.....import.warnings.....warn
2df20 69 6e 67 73 2e 77 61 72 6e 28 0a 20 20 20 20 20 20 20 20 22 44 6f 6e 27 74 20 75 73 65 20 42 4e ings.warn(........."Don't.use.BN
2df40 2e 72 61 6e 64 66 6e 61 6d 65 28 29 2c 20 75 73 65 20 74 65 6d 70 66 69 6c 65 20 6d 65 74 68 6f .randfname(),.use.tempfile.metho
2df60 64 73 20 69 6e 73 74 65 61 64 2e 22 2c 0a 20 20 20 20 20 20 20 20 44 65 70 72 65 63 61 74 69 6f ds.instead.",.........Deprecatio
2df80 6e 57 61 72 6e 69 6e 67 2c 20 73 74 61 63 6b 6c 65 76 65 6c 3d 32 29 0a 20 20 20 20 6c 65 74 74 nWarning,.stacklevel=2).....lett
2dfa0 65 72 73 20 3d 20 27 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 ers.=.'abcdefghijklmnopqrstuvwxy
2dfc0 7a 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 30 31 32 33 34 zABCDEFGHIJKLMNOPQRSTUVWXYZ01234
2dfe0 35 36 37 38 39 30 27 0a 20 20 20 20 6c 65 74 74 65 72 73 4c 65 6e 20 3d 20 6c 65 6e 28 6c 65 74 567890'.....lettersLen.=.len(let
2e000 74 65 72 73 29 0a 20 20 20 20 66 6e 61 6d 65 20 3d 20 5b 5d 20 20 23 20 74 79 70 65 3a 20 6c 69 ters).....fname.=.[]..#.type:.li
2e020 73 74 0a 20 20 20 20 66 6f 72 20 78 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 67 74 68 29 3a 0a 20 st.....for.x.in.range(length):..
2e040 20 20 20 20 20 20 20 66 6e 61 6d 65 20 2b 3d 20 5b 6c 65 74 74 65 72 73 5b 6d 32 2e 62 6e 5f 72 .......fname.+=.[letters[m2.bn_r
2e060 61 6e 64 5f 72 61 6e 67 65 28 6c 65 74 74 65 72 73 4c 65 6e 29 5d 5d 0a 0a 20 20 20 20 72 65 74 and_range(lettersLen)]]......ret
2e080 75 72 6e 20 27 27 2e 6a 6f 69 6e 28 66 6e 61 6d 65 29 0a 94 7d 94 28 8c 04 72 61 6e 64 94 6a 18 urn.''.join(fname)..}.(..rand.j.
2e0a0 25 00 00 4b 0d 4b 18 87 94 8c 0a 72 61 6e 64 5f 72 61 6e 67 65 94 6a 18 25 00 00 4b 1b 4b 23 87 %..K.K.....rand_range.j.%..K.K#.
2e0c0 94 8c 09 72 61 6e 64 66 6e 61 6d 65 94 6a 18 25 00 00 4b 26 4b 39 87 94 75 7d 94 28 8c 04 72 61 ...randfname.j.%..K&K9..u}.(..ra
2e0e0 6e 64 94 6a 60 02 00 00 8c 0a 72 61 6e 64 5f 72 61 6e 67 65 94 6a 60 02 00 00 8c 09 72 61 6e 64 nd.j`.....rand_range.j`.....rand
2e100 66 6e 61 6d 65 94 6a 60 02 00 00 75 8c 0b 4d 32 43 72 79 70 74 6f 2e 42 4e 94 74 94 8c 0b 4d 32 fname.j`...u..M2Crypto.BN.t...M2
2e120 43 72 79 70 74 6f 2e 44 48 94 28 58 71 0b 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 Crypto.DH.(Xq...from.__future__.
2e140 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 79 import.absolute_import.."""M2Cry
2e160 70 74 6f 20 77 72 61 70 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 44 48 20 41 50 49 2e 0a pto.wrapper.for.OpenSSL.DH.API..
2e180 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 65 6e .Copyright.(c).1999-2003.Ng.Phen
2e1a0 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 22 g.Siong..All.rights.reserved."""
2e1c0 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 2c 20 6d 32 0a 66 ..from.M2Crypto.import.BIO,.m2.f
2e1e0 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 20 69 6d 70 6f 72 74 20 67 65 6e 70 61 72 61 rom.M2Crypto.util.import.genpara
2e200 6d 5f 63 61 6c 6c 62 61 63 6b 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e m_callback.from.typing.import.An
2e220 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 23 20 6e 6f 71 61 yStr,.Callable,.Optional..#.noqa
2e240 0a 0a 0a 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 ...class.DHError(Exception):....
2e260 20 70 61 73 73 0a 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 .pass...m2.dh_init(DHError)...cl
2e280 61 73 73 20 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 ass.DH(object):....."""Object.in
2e2a0 74 65 72 66 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 terface.to.the.Diffie-Hellman.ke
2e2c0 79 20 65 78 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 y.exchange.protocol......"""....
2e2e0 20 20 6d 32 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 ..m2_dh_free.=.m2.dh_free......d
2e300 65 66 20 5f 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 ef.__init__(self,.dh,._pyfree=0)
2e320 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 2d :.........#.type:.(bytes,.int).-
2e340 3e 20 4e 6f 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 >.None.........assert.m2.dh_type
2e360 5f 63 68 65 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 _check(dh).........self.dh.=.dh.
2e380 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..
2e3a0 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):.........#
2e3c0 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 65 74 .type:.().->.None.........if.get
2e3e0 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 20 20 attr(self,.'_pyfree',.0):.......
2e400 20 20 20 20 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 ......self.m2_dh_free(self.dh)..
2e420 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 23 ....def.__len__(self):.........#
2e440 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 73 73 65 72 74 20 .type:.().->.int.........assert.
2e460 6d 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 m2.dh_type_check(self.dh),."'dh'
2e480 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 69 6e 74 28 .type.error".........return.int(
2e4a0 6d 32 2e 64 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 m2.dh_size(self.dh))......def.__
2e4c0 67 65 74 61 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 getattr__(self,.name):.........#
2e4e0 20 74 79 70 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 .type:.(str).->.bytes.........if
2e500 20 6e 61 6d 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 .name.in.('p',.'g',.'pub',.'priv
2e520 27 29 3a 0a 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 '):.............method.=.getattr
2e540 28 6d 32 2c 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 (m2,.'dh_get_%s'.%.(name,)).....
2e560 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 63 6b 28 ........assert.m2.dh_type_check(
2e580 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 20 20 20 self.dh),."'dh'.type.error".....
2e5a0 20 20 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 68 29 0a 20 ........return.method(self.dh)..
2e5c0 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 69 73 65 20 41 .......else:.............raise.A
2e5e0 74 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 ttributeError......def.__setattr
2e600 5f 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 __(self,.name,.value):.........#
2e620 20 74 79 70 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 .type:.(str,.bytes).->.bytes....
2e640 20 20 20 20 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 .....if.name.in.('p',.'g'):.....
2e660 20 20 20 20 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 ........raise.DHError('set.(p,.g
2e680 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 20 20 20 20 65 6c 69 ).via.set_params()').........eli
2e6a0 66 20 6e 61 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 f.name.in.('pub',.'priv'):......
2e6c0 20 20 20 20 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 .......raise.DHError('generate.(
2e6e0 70 75 62 2c 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 pub,.priv).via.gen_key()')......
2e700 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 5f 5f 64 69 63 74 ...else:.............self.__dict
2e720 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 5f 70 74 72 28 73 __[name].=.value......def._ptr(s
2e740 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 64 68 0a 0a 20 20 elf):.........return.self.dh....
2e760 20 20 64 65 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 ..def.check_params(self):.......
2e780 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 73 73 65 ..#.type:.().->.int.........asse
2e7a0 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 29 2c 20 22 27 rt.m2.dh_type_check(self.dh),."'
2e7c0 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 75 72 6e 20 6d dh'.type.error".........return.m
2e7e0 32 2e 64 68 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 2.dh_check(self.dh)......def.gen
2e800 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:.().-
2e820 3e 20 4e 6f 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 >.None.........assert.m2.dh_type
2e840 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 6f _check(self.dh),."'dh'.type.erro
2e860 72 22 0a 20 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 r".........m2.dh_generate_key(se
2e880 6c 66 2e 64 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 lf.dh)......def.compute_key(self
2e8a0 2c 20 70 75 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 ,.pubkey):.........#.type:.(byte
2e8c0 73 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 64 68 s).->.bytes.........assert.m2.dh
2e8e0 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 65 _type_check(self.dh),."'dh'.type
2e900 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 5f 63 6f 6d .error".........return.m2.dh_com
2e920 70 75 74 65 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 pute_key(self.dh,.pubkey)......d
2e940 65 66 20 70 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 ef.print_params(self,.bio):.....
2e960 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 6e 74 0a 20 20 20 ....#.type:.(BIO.BIO).->.int....
2e980 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 63 6b 28 73 65 6c .....assert.m2.dh_type_check(sel
2e9a0 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 20 20 20 20 20 20 f.dh),."'dh'.type.error"........
2e9c0 20 72 65 74 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 .return.m2.dhparams_print(bio._p
2e9e0 74 72 28 29 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 tr(),.self.dh)...def.gen_params(
2ea00 70 6c 65 6e 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 plen,.g,.callback=genparam_callb
2ea20 61 63 6b 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 4f 70 74 ack):.....#.type:.(int,.int,.Opt
2ea40 69 6f 6e 61 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 ional[Callable]).->.DH.....dh_pa
2ea60 72 6d 73 20 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 rms.=.m2.dh_generate_parameters(
2ea80 70 6c 65 6e 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 plen,.g,.callback).....dh_obj.=.
2eaa0 44 48 28 64 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 DH(dh_parms,.1).....return.dh_ob
2eac0 6a 0a 0a 0a 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 j...def.load_params(file):.....#
2eae0 20 74 79 70 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 .type:.(AnyStr).->.DH.....with.B
2eb00 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:.......
2eb20 20 20 72 65 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 ..return.load_params_bio(bio)...
2eb40 64 65 66 20 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 def.load_params_bio(bio):.....#.
2eb60 74 79 70 65 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 type:.(BIO.BIO).->.DH.....return
2eb80 20 44 48 28 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 .DH(m2.dh_read_parameters(bio._p
2eba0 74 72 28 29 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 tr()),.1)...def.set_params(p,.g)
2ebc0 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 65 73 29 20 2d 3e 20 :.....#.type:.(bytes,.bytes).->.
2ebe0 44 48 0a 20 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 DH.....dh.=.m2.dh_new().....m2.d
2ec00 68 5f 73 65 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 h_set_pg(dh,.p,.g).....return.DH
2ec20 28 64 68 2c 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 (dh,.1)...#.def.free_params(cptr
2ec40 29 3a 0a 23 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 ):.#....m2.dh_free(cptr)...DH_GE
2ec60 4e 45 52 41 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 NERATOR_2.=.m2.DH_GENERATOR_2.DH
2ec80 5f 47 45 4e 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 _GENERATOR_5.=.m2.DH_GENERATOR_5
2eca0 0a 94 7d 94 28 8c 07 44 48 45 72 72 6f 72 94 6a 37 02 00 00 4b 0c 4b 0d 87 94 8c 0b 44 48 2e 5f ..}.(..DHError.j7...K.K.....DH._
2ecc0 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 19 4b 1d 87 94 8c 0a 44 48 2e 5f 5f 64 65 6c 5f 5f 94 _init__.j.%..K.K.....DH.__del__.
2ece0 6a 18 25 00 00 4b 1f 4b 22 87 94 8c 0a 44 48 2e 5f 5f 6c 65 6e 5f 5f 94 6a 18 25 00 00 4b 24 4b j.%..K.K"....DH.__len__.j.%..K$K
2ed00 27 87 94 8c 0e 44 48 2e 5f 5f 67 65 74 61 74 74 72 5f 5f 94 6a 18 25 00 00 4b 29 4b 30 87 94 8c '....DH.__getattr__.j.%..K)K0...
2ed20 0e 44 48 2e 5f 5f 73 65 74 61 74 74 72 5f 5f 94 6a 18 25 00 00 4b 32 4b 39 87 94 8c 07 44 48 2e .DH.__setattr__.j.%..K2K9....DH.
2ed40 5f 70 74 72 94 6a 18 25 00 00 4b 3b 4b 3c 87 94 8c 0f 44 48 2e 63 68 65 63 6b 5f 70 61 72 61 6d _ptr.j.%..K;K<....DH.check_param
2ed60 73 94 6a 18 25 00 00 4b 3e 4b 41 87 94 8c 0a 44 48 2e 67 65 6e 5f 6b 65 79 94 6a 18 25 00 00 4b s.j.%..K>KA....DH.gen_key.j.%..K
2ed80 43 4b 46 87 94 8c 0e 44 48 2e 63 6f 6d 70 75 74 65 5f 6b 65 79 94 6a 18 25 00 00 4b 48 4b 4b 87 CKF....DH.compute_key.j.%..KHKK.
2eda0 94 8c 0f 44 48 2e 70 72 69 6e 74 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4b 4d 4b 50 87 94 8c 02 ...DH.print_params.j.%..KMKP....
2edc0 44 48 94 6a 37 02 00 00 4b 13 4b 50 87 94 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 DH.j7...K.KP....gen_params.j.%..
2ede0 4b 53 4b 57 87 94 8c 0b 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4b 5a 4b 5d 87 94 8c KSKW....load_params.j.%..KZK]...
2ee00 0f 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 18 25 00 00 4b 60 4b 62 87 94 8c 0a 73 65 .load_params_bio.j.%..K`Kb....se
2ee20 74 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4b 65 4b 69 87 94 75 7d 94 28 8c 02 44 48 94 6a 60 02 t_params.j.%..KeKi..u}.(..DH.j`.
2ee40 00 00 8c 0f 44 48 2e 63 68 65 63 6b 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 8c 0e 44 48 2e 63 6f ....DH.check_params.j`.....DH.co
2ee60 6d 70 75 74 65 5f 6b 65 79 94 6a 60 02 00 00 8c 0a 44 48 2e 67 65 6e 5f 6b 65 79 94 6a 60 02 00 mpute_key.j`.....DH.gen_key.j`..
2ee80 00 8c 0f 44 48 2e 70 72 69 6e 74 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 6a d5 13 00 00 6a 60 02 ...DH.print_params.j`...j....j`.
2eea0 00 00 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 8c 0b 6c 6f 61 64 5f 70 61 72 61 6d ....gen_params.j`.....load_param
2eec0 73 94 6a 60 02 00 00 8c 0f 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 60 02 00 00 8c 0a s.j`.....load_params_bio.j`.....
2eee0 73 65 74 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 75 8c 0b 4d 32 43 72 79 70 74 6f 2e 44 48 94 74 set_params.j`...u..M2Crypto.DH.t
2ef00 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 44 53 41 94 28 58 d3 37 00 00 66 72 6f 6d 20 5f 5f 66 75 74 ...M2Crypto.DSA.(X.7..from.__fut
2ef20 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 72 ure__.import.absolute_import,.pr
2ef40 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 77 int_function..""".....M2Crypto.w
2ef60 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 20 rapper.for.OpenSSL.DSA.API......
2ef80 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 6e .Copyright.(c).1999-2003.Ng.Phen
2efa0 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 20 g.Siong..All.rights.reserved....
2efc0 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 72 ...Portions.created.by.Open.Sour
2efe0 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 46 ce.Applications.Foundation.(OSAF
2f000 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 41 ).are.....Copyright.(C).2004.OSA
2f020 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 6f F..All.Rights.Reserved.."""..fro
2f040 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 0a m.M2Crypto.import.BIO,.m2,.util.
2f060 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 2c 20 from.typing.import.Any,.AnyStr,.
2f080 43 61 6c 6c 61 62 6c 65 2c 20 54 75 70 6c 65 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 Callable,.Tuple..#.noqa...class.
2f0a0 44 53 41 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 DSAError(Exception):.....pass...
2f0c0 6d 32 2e 64 73 61 5f 69 6e 69 74 28 44 53 41 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 44 53 m2.dsa_init(DSAError)...class.DS
2f0e0 41 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 54 68 69 73 20 63 6c 61 A(object):......""".....This.cla
2f100 73 73 20 69 73 20 61 20 63 6f 6e 74 65 78 74 20 73 75 70 70 6f 72 74 69 6e 67 20 44 53 41 20 6b ss.is.a.context.supporting.DSA.k
2f120 65 79 20 61 6e 64 20 70 61 72 61 6d 65 74 65 72 0a 20 20 20 20 76 61 6c 75 65 73 2c 20 73 69 67 ey.and.parameter.....values,.sig
2f140 6e 69 6e 67 20 61 6e 64 20 76 65 72 69 66 79 69 6e 67 2e 0a 0a 20 20 20 20 53 69 6d 70 6c 65 20 ning.and.verifying.......Simple.
2f160 65 78 61 6d 70 6c 65 3a 3a 0a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f example::..........from.M2Crypto
2f180 20 69 6d 70 6f 72 74 20 45 56 50 2c 20 44 53 41 2c 20 75 74 69 6c 0a 0a 20 20 20 20 20 20 20 20 .import.EVP,.DSA,.util..........
2f1a0 6d 65 73 73 61 67 65 20 3d 20 27 4b 69 6c 72 6f 79 20 77 61 73 20 68 65 72 65 21 27 0a 20 20 20 message.=.'Kilroy.was.here!'....
2f1c0 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 27 73 68 61 .....md.=.EVP.MessageDigest('sha
2f1e0 31 27 29 0a 20 20 20 20 20 20 20 20 6d 64 2e 75 70 64 61 74 65 28 6d 65 73 73 61 67 65 29 0a 20 1').........md.update(message)..
2f200 20 20 20 20 20 20 20 64 69 67 65 73 74 20 3d 20 6d 64 2e 66 69 6e 61 6c 28 29 0a 0a 20 20 20 20 .......digest.=.md.final()......
2f220 20 20 20 20 64 73 61 20 3d 20 44 53 41 2e 67 65 6e 5f 70 61 72 61 6d 73 28 31 30 32 34 29 0a 20 ....dsa.=.DSA.gen_params(1024)..
2f240 20 20 20 20 20 20 20 64 73 61 2e 67 65 6e 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 72 2c 20 .......dsa.gen_key().........r,.
2f260 73 20 3d 20 64 73 61 2e 73 69 67 6e 28 64 69 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 67 6f 6f s.=.dsa.sign(digest).........goo
2f280 64 20 3d 20 64 73 61 2e 76 65 72 69 66 79 28 64 69 67 65 73 74 2c 20 72 2c 20 73 29 0a 20 20 20 d.=.dsa.verify(digest,.r,.s)....
2f2a0 20 20 20 20 20 69 66 20 67 6f 6f 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 .....if.good:.............print(
2f2c0 27 20 20 2a 2a 20 73 75 63 63 65 73 73 20 2a 2a 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a '..**.success.**').........else:
2f2e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 20 20 2a 2a 20 76 65 72 69 66 69 63 .............print('..**.verific
2f300 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 2a 2a 27 29 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d ation.failed.**')....."""......m
2f320 32 5f 64 73 61 5f 66 72 65 65 20 3d 20 6d 32 2e 64 73 61 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 2_dsa_free.=.m2.dsa_free......de
2f340 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 73 61 2c 20 5f 70 79 66 72 65 65 3d 30 29 f.__init__(self,.dsa,._pyfree=0)
2f360 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 2d :.........#.type:.(bytes,.int).-
2f380 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 55 73 65 20 6f >.None.........""".........Use.o
2f3a0 6e 65 20 6f 66 20 74 68 65 20 66 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 20 63 ne.of.the.factory.functions.to.c
2f3c0 72 65 61 74 65 20 61 6e 20 69 6e 73 74 61 6e 63 65 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 reate.an.instance..........:para
2f3e0 6d 20 64 73 61 3a 20 62 69 6e 61 72 79 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 m.dsa:.binary.representation.of.
2f400 4f 70 65 6e 53 53 4c 20 44 53 41 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 OpenSSL.DSA.type........."""....
2f420 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 6b 28 64 73 .....assert.m2.dsa_type_check(ds
2f440 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 20 20 73 a),."'dsa'.type.error".........s
2f460 65 6c 66 2e 64 73 61 20 3d 20 64 73 61 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 elf.dsa.=.dsa.........self._pyfr
2f480 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 65 ee.=._pyfree......def.__del__(se
2f4a0 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.
2f4c0 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 65 ........if.getattr(self,.'_pyfre
2f4e0 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 64 73 61 5f e',.0):.............self.m2_dsa_
2f500 66 72 65 65 28 73 65 6c 66 2e 64 73 61 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 free(self.dsa)......def.__len__(
2f520 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
2f540 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 72 6e 20 74 68 65 20 .........""".........Return.the.
2f560 6b 65 79 20 6c 65 6e 67 74 68 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 74 key.length...........:return:..t
2f580 68 65 20 44 53 41 20 6b 65 79 20 6c 65 6e 67 74 68 20 69 6e 20 62 69 74 73 0a 20 20 20 20 20 20 he.DSA.key.length.in.bits.......
2f5a0 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 65 ..""".........assert.m2.dsa_type
2f5c0 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 72 _check(self.dsa),."'dsa'.type.er
2f5e0 72 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 6b 65 79 6c 65 ror".........return.m2.dsa_keyle
2f600 6e 28 73 65 6c 66 2e 64 73 61 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 61 74 74 72 5f 5f n(self.dsa)......def.__getattr__
2f620 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 73 (self,.name):.........#.type:.(s
2f640 74 72 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 tr).->.bytes........."""........
2f660 20 52 65 74 75 72 6e 20 73 70 65 63 69 66 69 65 64 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 .Return.specified.DSA.parameters
2f680 20 61 6e 64 20 6b 65 79 20 76 61 6c 75 65 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d .and.key.values...........:param
2f6a0 20 6e 61 6d 65 3a 20 6e 61 6d 65 20 6f 66 20 76 61 72 69 61 62 6c 65 20 74 6f 20 62 65 20 72 65 .name:.name.of.variable.to.be.re
2f6c0 74 75 72 6e 65 64 2e 20 20 4d 75 73 74 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 turned...Must.be................
2f6e0 20 20 20 20 20 20 6f 6e 65 20 6f 66 20 27 70 27 2c 20 27 71 27 2c 20 27 67 27 2c 20 27 70 75 62 ......one.of.'p',.'q',.'g',.'pub
2f700 27 2c 20 27 70 72 69 76 27 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 ',.'priv'..........:return:.....
2f720 76 61 6c 75 65 20 6f 66 20 73 70 65 63 69 66 69 65 64 20 76 61 72 69 61 62 6c 65 20 28 61 20 22 value.of.specified.variable.(a."
2f740 62 79 74 65 20 73 74 72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 byte.string").........""".......
2f760 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 2c 20 27 70 75 ..if.name.in.['p',.'q',.'g',.'pu
2f780 62 27 2c 20 27 70 72 69 76 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20 b',.'priv']:.............method.
2f7a0 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 27 64 73 61 5f 67 65 74 5f 25 73 27 20 25 20 28 6e 61 =.getattr(m2,.'dsa_get_%s'.%.(na
2f7c0 6d 65 2c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 64 73 61 5f me,)).............assert.m2.dsa_
2f7e0 74 79 70 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 type_check(self.dsa),."'dsa'.typ
2f800 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 65 74 68 e.error".............return.meth
2f820 6f 64 28 73 65 6c 66 2e 64 73 61 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 od(self.dsa).........else:......
2f840 20 20 20 20 20 20 20 72 61 69 73 65 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 0a 0a 20 20 20 .......raise.AttributeError.....
2f860 20 64 65 66 20 5f 5f 73 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 6e 61 6d 65 2c 20 76 61 6c .def.__setattr__(self,.name,.val
2f880 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 62 79 74 65 73 ue):.........#.type:.(str,.bytes
2f8a0 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 20 69 6e 20 5b 27 70 ).->.None.........if.name.in.['p
2f8c0 27 2c 20 27 71 27 2c 20 27 67 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 ',.'q',.'g']:.............raise.
2f8e0 44 53 41 45 72 72 6f 72 28 27 73 65 74 20 28 70 2c 20 71 2c 20 67 29 20 76 69 61 20 73 65 74 5f DSAError('set.(p,.q,.g).via.set_
2f900 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 6d 65 20 69 6e 20 params()').........elif.name.in.
2f920 5b 27 70 75 62 27 2c 20 27 70 72 69 76 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 ['pub',.'priv']:.............rai
2f940 73 65 20 44 53 41 45 72 72 6f 72 28 27 67 65 6e 65 72 61 74 65 20 28 70 75 62 2c 20 70 72 69 76 se.DSAError('generate.(pub,.priv
2f960 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 6c 73 65 3a 0a ).via.gen_key()').........else:.
2f980 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 61 6d 65 5d 20 ............self.__dict__[name].
2f9a0 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 70 61 72 61 6d 73 28 73 65 6c 66 =.value......def.set_params(self
2f9c0 2c 20 70 2c 20 71 2c 20 67 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 ,.p,.q,.g):.........#.type:.(byt
2f9e0 65 73 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 es,.bytes,.bytes).->.None.......
2fa00 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 6e 65 77 20 70 61 72 61 6d 65 74 65 72 73 ..""".........Set.new.parameters
2fa20 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 3a 20 4d 50 49 20 62 69 6e 61 72 79 20 ...........:param.p:.MPI.binary.
2fa40 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 2e 2e 2e 20 66 6f 72 6d 61 74 20 74 68 61 74 20 63 representation.....format.that.c
2fa60 6f 6e 73 69 73 74 73 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 onsists.of...................the
2fa80 20 6e 75 6d 62 65 72 27 73 20 6c 65 6e 67 74 68 20 69 6e 20 62 79 74 65 73 20 72 65 70 72 65 73 .number's.length.in.bytes.repres
2faa0 65 6e 74 65 64 20 61 73 20 61 20 34 2d 62 79 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ented.as.a.4-byte...............
2fac0 20 20 20 20 62 69 67 2d 65 6e 64 69 61 6e 20 6e 75 6d 62 65 72 2c 20 61 6e 64 20 74 68 65 20 6e ....big-endian.number,.and.the.n
2fae0 75 6d 62 65 72 20 69 74 73 65 6c 66 20 69 6e 20 62 69 67 2d 65 6e 64 69 61 6e 0a 20 20 20 20 20 umber.itself.in.big-endian......
2fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 2c 20 77 68 65 72 65 20 74 68 65 20 6d .............format,.where.the.m
2fb20 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74 20 73 69 67 6e 61 6c 73 0a 20 20 20 20 ost.significant.bit.signals.....
2fb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 20 ..............a.negative.number.
2fb60 28 74 68 65 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 6e 75 6d 62 65 72 73 20 77 (the.representation.of.numbers.w
2fb80 69 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 4d 53 42 20 73 65 ith...................the.MSB.se
2fba0 74 20 69 73 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 6e 75 6c 6c 20 62 79 74 65 29 2e 0a 20 t.is.prefixed.with.null.byte)...
2fbc0 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 71 3a 20 64 69 74 74 6f 0a 20 20 20 20 20 20 20 20 3a .......:param.q:.ditto.........:
2fbe0 70 61 72 61 6d 20 67 3a 20 64 69 74 74 6f 0a 0a 20 20 20 20 20 20 20 20 40 77 61 72 6e 69 6e 67 param.g:.ditto..........@warning
2fc00 3a 20 54 68 69 73 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 70 72 69 76 61 :.This.does.not.change.the.priva
2fc20 74 65 20 6b 65 79 2c 20 73 6f 20 69 74 20 6d 61 79 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 te.key,.so.it.may.be............
2fc40 20 20 20 20 20 20 20 75 6e 73 61 66 65 20 74 6f 20 75 73 65 20 74 68 69 73 20 6d 65 74 68 6f 64 .......unsafe.to.use.this.method
2fc60 2e 20 49 74 20 69 73 20 62 65 74 74 65 72 20 74 6f 20 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 ..It.is.better.to.use...........
2fc80 20 20 20 20 20 20 20 20 67 65 6e 5f 70 61 72 61 6d 73 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 ........gen_params.function.to.c
2fca0 72 65 61 74 65 20 61 20 6e 65 77 20 44 53 41 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 reate.a.new.DSA.object..........
2fcc0 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 64 73 61 5f 73 65 74 5f 70 71 67 28 73 65 6c 66 2e """.........m2.dsa_set_pqg(self.
2fce0 64 73 61 2c 20 70 2c 20 71 2c 20 67 29 0a 0a 20 20 20 20 64 65 66 20 67 65 6e 5f 6b 65 79 28 73 dsa,.p,.q,.g)......def.gen_key(s
2fd00 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
2fd20 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 6e 65 72 61 74 65 20 61 20 .........""".........Generate.a.
2fd40 6b 65 79 20 70 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 key.pair..........""".........as
2fd60 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 29 sert.m2.dsa_type_check(self.dsa)
2fd80 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 6d 32 2e ,."'dsa'.type.error".........m2.
2fda0 64 73 61 5f 67 65 6e 5f 6b 65 79 28 73 65 6c 66 2e 64 73 61 29 0a 0a 20 20 20 20 64 65 66 20 73 dsa_gen_key(self.dsa)......def.s
2fdc0 61 76 65 5f 70 61 72 61 6d 73 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d 65 29 3a 0a 20 20 20 20 ave_params(self,.filename):.....
2fde0 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 20 20 20 ....#.type:.(AnyStr).->.int.....
2fe00 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 44 53 41 20 70 61 72 ....""".........Save.the.DSA.par
2fe20 61 6d 65 74 65 72 73 20 74 6f 20 61 20 66 69 6c 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 ameters.to.a.file...........:par
2fe40 61 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 53 61 76 65 20 74 68 65 20 44 53 41 20 70 61 72 61 6d 65 am.filename:.Save.the.DSA.parame
2fe60 74 65 72 73 20 74 6f 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 ters.to.this.file..........:retu
2fe80 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 63 65 73 73 66 rn:.........1.(true).if.successf
2fea0 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 20 42 49 4f 2e ul.........""".........with.BIO.
2fec0 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 20 62 69 6f 3a openfile(filename,.'wb').as.bio:
2fee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 64 73 61 5f 77 72 69 74 65 5f .............ret.=.m2.dsa_write_
2ff00 70 61 72 61 6d 73 5f 62 69 6f 28 73 65 6c 66 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 params_bio(self.dsa,.bio._ptr())
2ff20 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
2ff40 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 ve_params_bio(self,.bio):.......
2ff60 20 20 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 ..#.type:.(BIO.BIO).->.int......
2ff80 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 ...""".........Save.DSA.paramete
2ffa0 72 73 20 74 6f 20 61 20 42 49 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 rs.to.a.BIO.object...........:pa
2ffc0 72 61 6d 20 62 69 6f 3a 20 53 61 76 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 ram.bio:.Save.DSA.parameters.to.
2ffe0 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 this.object..........:return:...
30000 20 31 20 28 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 .1.(true).if.successful.........
30020 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 77 72 69 74 65 5f """.........return.m2.dsa_write_
30040 70 61 72 61 6d 73 5f 62 69 6f 28 73 65 6c 66 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 params_bio(self.dsa,.bio._ptr())
30060 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d ......def.save_key(self,.filenam
30080 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 20 20 20 20 20 e,.cipher='aes_128_cbc',........
300a0 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
300c0 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 41 se_callback):.........#.type:.(A
300e0 6e 79 53 74 72 2c 20 73 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 69 6e 74 0a 20 20 20 nyStr,.str,.Callable).->.int....
30100 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 44 53 41 20 6b 65 .....""".........Save.the.DSA.ke
30120 79 20 70 61 69 72 20 74 6f 20 61 20 66 69 6c 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 y.pair.to.a.file...........:para
30140 6d 20 66 69 6c 65 6e 61 6d 65 3a 20 53 61 76 65 20 74 68 65 20 44 53 41 20 6b 65 79 20 70 61 69 m.filename:.Save.the.DSA.key.pai
30160 72 20 74 6f 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 r.to.this.file..........:param.c
30180 69 70 68 65 72 3a 20 20 20 6e 61 6d 65 20 6f 66 20 73 79 6d 6d 65 74 72 69 63 20 6b 65 79 20 61 ipher:...name.of.symmetric.key.a
301a0 6c 67 6f 72 69 74 68 6d 20 61 6e 64 20 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lgorithm.and.mode...............
301c0 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 65 6e 63 72 79 70 74 20 74 68 65 20 70 72 69 76 61 74 ...........to.encrypt.the.privat
301e0 65 20 6b 65 79 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 e.key..........:return:.........
30200 31 20 28 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 1.(true).if.successful........."
30220 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 6c "".........with.BIO.openfile(fil
30240 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 20 ename,.'wb').as.bio:............
30260 20 72 65 74 20 3d 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 .ret.=.self.save_key_bio(bio,.ci
30280 70 68 65 72 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 pher,.callback)..........return.
302a0 72 65 74 0a 0a 20 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 ret......def.save_key_bio(self,.
302c0 62 69 6f 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 20 20 20 bio,.cipher='aes_128_cbc',......
302e0 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 70 61 ................callback=util.pa
30300 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 74 79 ssphrase_callback):.........#.ty
30320 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 73 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 pe:.(BIO.BIO,.str,.Callable).->.
30340 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 44 53 41 int.........""".........Save.DSA
30360 20 6b 65 79 20 70 61 69 72 20 74 6f 20 61 20 42 49 4f 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 .key.pair.to.a.BIO.object.......
30380 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f 3a 20 20 20 20 53 61 76 65 20 44 53 41 20 70 61 72 61 ....:param.bio:....Save.DSA.para
303a0 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 20 20 20 20 20 20 3a meters.to.this.object..........:
303c0 70 61 72 61 6d 20 63 69 70 68 65 72 3a 20 6e 61 6d 65 20 6f 66 20 73 79 6d 6d 65 74 72 69 63 20 param.cipher:.name.of.symmetric.
303e0 6b 65 79 20 61 6c 67 6f 72 69 74 68 6d 20 61 6e 64 20 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 key.algorithm.and.mode..........
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 65 6e 63 72 79 70 74 20 74 68 65 20 70 72 69 ..............to.encrypt.the.pri
30420 76 61 74 65 20 6b 65 79 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 vate.key..........:return:......
30440 20 31 20 28 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 .1.(true).if.successful.........
30460 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 """.........if.cipher.is.None:..
30480 20 20 20 20 20 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 ...........return.m2.dsa_write_k
304a0 65 79 5f 62 69 6f 5f 6e 6f 5f 63 69 70 68 65 72 28 73 65 6c 66 2e 64 73 61 2c 0a 20 20 20 20 20 ey_bio_no_cipher(self.dsa,......
304c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
304e0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 61 63 .............bio._ptr(),.callbac
30500 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 70 k).........else:.............cip
30520 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 20 h.=.getattr(m2,.cipher,.None)...
30540 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 20 ..........if.ciph.is.None:......
30560 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 6e 6f 20 73 75 ...........raise.DSAError('no.su
30580 63 68 20 63 69 70 68 65 72 3a 20 25 73 27 20 25 20 63 69 70 68 65 72 29 0a 20 20 20 20 20 20 20 ch.cipher:.%s'.%.cipher)........
305a0 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 69 70 68 20 .....else:.................ciph.
305c0 3d 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 64 =.ciph().............return.m2.d
305e0 73 61 5f 77 72 69 74 65 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2e 64 73 61 2c 20 62 69 6f 2e 5f sa_write_key_bio(self.dsa,.bio._
30600 70 74 72 28 29 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 ptr(),.ciph,.callback)......def.
30620 73 61 76 65 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 6d 65 29 3a 0a 20 20 save_pub_key(self,.filename):...
30640 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 20 ......#.type:.(AnyStr).->.int...
30660 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 44 53 41 20 70 ......""".........Save.the.DSA.p
30680 75 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 20 74 6f 20 61 ublic.key.(with.parameters).to.a
306a0 20 66 69 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 .file...........:param.filename:
306c0 20 53 61 76 65 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 28 77 69 74 68 20 70 61 72 61 6d .Save.DSA.public.key.(with.param
306e0 65 74 65 72 73 29 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 eters)..........................
30700 74 6f 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 to.this.file..........:return:..
30720 20 20 20 20 20 20 20 31 20 28 74 72 75 65 29 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 0a 20 20 .......1.(true).if.successful...
30740 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 6f 70 65 6e 66 ......""".........with.BIO.openf
30760 69 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 ile(filename,.'wb').as.bio:.....
30780 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 73 65 6c 66 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f ........ret.=.self.save_pub_key_
307a0 62 69 6f 28 62 69 6f 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 bio(bio)..........return.ret....
307c0 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 62 69 6f ..def.save_pub_key_bio(self,.bio
307e0 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).->.
30800 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 44 53 41 int.........""".........Save.DSA
30820 20 70 75 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 20 74 6f .public.key.(with.parameters).to
30840 20 61 20 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 .a.BIO.object...........:param.b
30860 69 6f 3a 20 53 61 76 65 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 28 77 69 74 68 20 70 61 io:.Save.DSA.public.key.(with.pa
30880 72 61 6d 65 74 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f rameters).....................to
308a0 20 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 .this.object..........:return:..
308c0 31 20 28 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 1.(true).if.successful........."
308e0 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 77 72 69 74 65 5f 70 "".........return.m2.dsa_write_p
30900 75 62 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2e 64 73 61 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 ub_key_bio(self.dsa,.bio._ptr())
30920 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 28 73 65 6c 66 2c 20 64 69 67 65 73 74 29 3a 0a 20 20 ......def.sign(self,.digest):...
30940 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 54 75 70 6c 65 5b 62 ......#.type:.(bytes).->.Tuple[b
30960 79 74 65 73 2c 20 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 ytes,.bytes]........."""........
30980 20 53 69 67 6e 20 74 68 65 20 64 69 67 65 73 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 .Sign.the.digest...........:para
309a0 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 73 61 67 65 20 m.digest:.SHA-1.hash.of.message.
309c0 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 20 20 20 20 20 (same.as.output.................
309e0 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 61 20 22 62 79 .......from.MessageDigest,.a."by
30a00 74 65 20 73 74 72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 te.string").........:return:....
30a20 20 20 20 44 53 41 20 73 69 67 6e 61 74 75 72 65 2c 20 61 20 74 75 70 6c 65 20 6f 66 20 74 77 6f ...DSA.signature,.a.tuple.of.two
30a40 20 76 61 6c 75 65 73 2c 20 72 20 61 6e 64 20 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .values,.r.and.s,...............
30a60 20 20 20 20 20 20 20 20 20 62 6f 74 68 20 22 62 79 74 65 20 73 74 72 69 6e 67 73 22 2e 0a 20 20 .........both."byte.strings"....
30a80 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 63 68 ......""".........assert.self.ch
30aa0 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 69 73 eck_key(),.'key.is.not.initialis
30ac0 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 5f 73 69 67 6e 28 73 ed'.........return.m2.dsa_sign(s
30ae0 65 6c 66 2e 64 73 61 2c 20 64 69 67 65 73 74 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 elf.dsa,.digest)......def.verify
30b00 28 73 65 6c 66 2c 20 64 69 67 65 73 74 2c 20 72 2c 20 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 (self,.digest,.r,.s):.........#.
30b20 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 73 29 20 2d 3e 20 69 type:.(bytes,.bytes,.bytes).->.i
30b40 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 56 65 72 69 66 79 20 61 20 nt.........""".........Verify.a.
30b60 6e 65 77 6c 79 20 63 61 6c 63 75 6c 61 74 65 64 20 64 69 67 65 73 74 20 61 67 61 69 6e 73 74 20 newly.calculated.digest.against.
30b80 74 68 65 20 73 69 67 6e 61 74 75 72 65 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 73 20 72 20 61 the.signature.........values.r.a
30ba0 6e 64 20 73 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 nd.s...........:param.digest:.SH
30bc0 41 2d 31 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 A-1.hash.of.message.(same.as.out
30be0 70 75 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 66 72 6f 6d 20 put........................from.
30c00 4d 65 73 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 MessageDigest,.a."byte.string").
30c20 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 72 3a 20 20 20 20 20 20 72 20 76 61 6c 75 65 20 6f ........:param.r:......r.value.o
30c40 66 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 f.the.signature,.a."byte.string"
30c60 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 3a 20 20 20 20 20 20 73 20 76 61 6c 75 65 20 .........:param.s:......s.value.
30c80 6f 66 20 74 68 65 20 73 69 67 6e 61 74 75 72 65 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 of.the.signature,.a."byte.string
30ca0 22 0a 20 20 20 20 20 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 ".........:return:.......1.(true
30cc0 29 20 69 66 20 76 65 72 69 66 79 20 73 75 63 63 65 65 64 65 64 2c 20 30 20 69 66 20 66 61 69 6c ).if.verify.succeeded,.0.if.fail
30ce0 65 64 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 73 65 ed.........""".........assert.se
30d00 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 69 74 lf.check_key(),.'key.is.not.init
30d20 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 5f 76 ialised'.........return.m2.dsa_v
30d40 65 72 69 66 79 28 73 65 6c 66 2e 64 73 61 2c 20 64 69 67 65 73 74 2c 20 72 2c 20 73 29 0a 0a 20 erify(self.dsa,.digest,.r,.s)...
30d60 20 20 20 64 65 66 20 73 69 67 6e 5f 61 73 6e 31 28 73 65 6c 66 2c 20 64 69 67 65 73 74 29 3a 0a ...def.sign_asn1(self,.digest):.
30d80 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(),
30da0 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'.......
30dc0 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 73 61 5f 73 69 67 6e 5f 61 73 6e 31 28 73 65 6c 66 2e 64 ..return.m2.dsa_sign_asn1(self.d
30de0 73 61 2c 20 64 69 67 65 73 74 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 5f 61 73 6e 31 sa,.digest)......def.verify_asn1
30e00 28 73 65 6c 66 2c 20 64 69 67 65 73 74 2c 20 62 6c 6f 62 29 3a 0a 20 20 20 20 20 20 20 20 61 73 (self,.digest,.blob):.........as
30e20 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
30e40 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
30e60 32 2e 64 73 61 5f 76 65 72 69 66 79 5f 61 73 6e 31 28 73 65 6c 66 2e 64 73 61 2c 20 64 69 67 65 2.dsa_verify_asn1(self.dsa,.dige
30e80 73 74 2c 20 62 6c 6f 62 29 0a 0a 20 20 20 20 64 65 66 20 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c st,.blob)......def.check_key(sel
30ea0 66 29 3a 0a 20 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 74 6f f):.........""".........Check.to
30ec0 20 62 65 20 73 75 72 65 20 74 68 65 20 44 53 41 20 6f 62 6a 65 63 74 20 68 61 73 20 61 20 76 61 .be.sure.the.DSA.object.has.a.va
30ee0 6c 69 64 20 70 72 69 76 61 74 65 20 6b 65 79 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 lid.private.key...........:retur
30f00 6e 3a 20 20 31 20 28 74 72 75 65 29 20 69 66 20 61 20 76 61 6c 69 64 20 70 72 69 76 61 74 65 20 n:..1.(true).if.a.valid.private.
30f20 6b 65 79 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 key.........""".........assert.m
30f40 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 29 2c 20 22 27 64 73 2.dsa_type_check(self.dsa),."'ds
30f60 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 74 75 72 6e 20 6d 32 a'.type.error".........return.m2
30f80 2e 64 73 61 5f 63 68 65 63 6b 5f 6b 65 79 28 73 65 6c 66 2e 64 73 61 29 0a 0a 0a 63 6c 61 73 73 .dsa_check_key(self.dsa)...class
30fa0 20 44 53 41 5f 70 75 62 28 44 53 41 29 3a 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 54 68 69 73 .DSA_pub(DSA):......""".....This
30fc0 20 63 6c 61 73 73 20 69 73 20 61 20 44 53 41 20 63 6f 6e 74 65 78 74 20 74 68 61 74 20 6f 6e 6c .class.is.a.DSA.context.that.onl
30fe0 79 20 73 75 70 70 6f 72 74 73 20 61 20 70 75 62 6c 69 63 20 6b 65 79 0a 20 20 20 20 61 6e 64 20 y.supports.a.public.key.....and.
31000 76 65 72 69 66 69 63 61 74 69 6f 6e 2e 20 20 49 74 20 64 6f 65 73 20 4e 4f 54 20 73 75 70 70 6f verification...It.does.NOT.suppo
31020 72 74 20 61 20 70 72 69 76 61 74 65 20 6b 65 79 20 6f 72 0a 20 20 20 20 73 69 67 6e 69 6e 67 2e rt.a.private.key.or.....signing.
31040 0a 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 28 73 65 6c 66 2c 20 2a 61 ......"""......def.sign(self,.*a
31060 72 67 76 29 3a 0a 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 rgv):.........#.type:.(*Any).->.
31080 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 44 53 41 45 72 72 6f 72 28 27 44 53 41 None.........raise.DSAError('DSA
310a0 5f 70 75 62 20 6f 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 _pub.object.has.no.private.key')
310c0 0a 0a 20 20 20 20 73 69 67 6e 5f 61 73 6e 31 20 3d 20 73 69 67 6e 0a 0a 20 20 20 20 64 65 66 20 ......sign_asn1.=.sign......def.
310e0 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 74 79 70 65 3a check_key(self):.........#.type:
31100 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 20 3a .().->.int.........""".........:
31120 72 65 74 75 72 6e 3a 20 64 6f 65 73 20 44 53 41 5f 70 75 62 20 63 6f 6e 74 61 69 6e 20 61 20 70 return:.does.DSA_pub.contain.a.p
31140 75 62 20 6b 65 79 3f 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 ub.key?.........""".........retu
31160 72 6e 20 6d 32 2e 64 73 61 5f 63 68 65 63 6b 5f 70 75 62 5f 6b 65 79 28 73 65 6c 66 2e 64 73 61 rn.m2.dsa_check_pub_key(self.dsa
31180 29 0a 0a 20 20 20 20 73 61 76 65 5f 6b 65 79 20 3d 20 44 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b )......save_key.=.DSA.save_pub_k
311a0 65 79 0a 0a 20 20 20 20 73 61 76 65 5f 6b 65 79 5f 62 69 6f 20 3d 20 44 53 41 2e 73 61 76 65 5f ey......save_key_bio.=.DSA.save_
311c0 70 75 62 5f 6b 65 79 5f 62 69 6f 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d pub_key_bio..#.-----------------
311e0 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 --------------------------------
31200 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 66 61 63 74 6f 72 69 65 73 20 61 6e 64 20 6f 74 -------------.#.factories.and.ot
31220 68 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 0a 64 65 66 20 67 65 6e 5f 70 61 72 61 6d 73 28 62 her.functions...def.gen_params(b
31240 69 74 73 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c its,.callback=util.genparam_call
31260 62 61 63 6b 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 43 61 6c 6c 61 62 6c back):.....#.type:.(int,.Callabl
31280 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 20 66 75 e).->.DSA.....""".....Factory.fu
312a0 6e 63 74 69 6f 6e 20 74 68 61 74 20 67 65 6e 65 72 61 74 65 73 20 44 53 41 20 70 61 72 61 6d 65 nction.that.generates.DSA.parame
312c0 74 65 72 73 20 61 6e 64 0a 20 20 20 20 69 6e 73 74 61 6e 74 69 61 74 65 73 20 61 20 44 53 41 20 ters.and.....instantiates.a.DSA.
312e0 6f 62 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 6f 75 74 70 75 74 2e 0a 0a 20 20 20 20 3a 70 61 object.from.the.output.......:pa
31300 72 61 6d 20 62 69 74 73 3a 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 70 72 69 6d ram.bits:.The.length.of.the.prim
31320 65 20 74 6f 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e 20 49 66 0a 20 20 20 20 20 20 20 20 20 20 e.to.be.generated..If...........
31340 20 20 20 20 20 20 20 27 62 69 74 73 27 20 3c 20 35 31 32 2c 20 69 74 20 69 73 20 73 65 74 20 74 .......'bits'.<.512,.it.is.set.t
31360 6f 20 35 31 32 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 79 o.512......:param.callback:.A.Py
31380 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 62 thon.callback.object.that.will.b
313a0 65 0a 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 64 75 72 69 6e e..................invoked.durin
313c0 67 20 70 61 72 61 6d 65 74 65 72 20 67 65 6e 65 72 61 74 69 6f 6e 3b 20 69 74 20 75 73 75 61 6c g.parameter.generation;.it.usual
313e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 72 70 6f 73 65 20 69 73 20 74 6f 20 ..................purpose.is.to.
31400 70 72 6f 76 69 64 65 20 76 69 73 75 61 6c 20 66 65 65 64 62 61 63 6b 2e 0a 20 20 20 20 3a 72 65 provide.visual.feedback......:re
31420 74 75 72 6e 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 turn:..instance.of.DSA......""".
31440 20 20 20 20 64 73 61 20 3d 20 6d 32 2e 64 73 61 5f 67 65 6e 65 72 61 74 65 5f 70 61 72 61 6d 65 ....dsa.=.m2.dsa_generate_parame
31460 74 65 72 73 28 62 69 74 73 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 ters(bits,.callback).....return.
31480 44 53 41 28 64 73 61 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 DSA(dsa,.1)...def.set_params(p,.
314a0 71 2c 20 67 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 65 73 q,.g):.....#.type:.(bytes,.bytes
314c0 2c 20 62 79 74 65 73 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 ,.bytes).->.DSA.....""".....Fact
314e0 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 65 73 20 61 ory.function.that.instantiates.a
31500 20 44 53 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 .DSA.object.with.DSA.....paramet
31520 65 72 73 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 70 3a 20 76 61 6c 75 65 20 6f 66 20 70 2c 20 ers.......:param.p:.value.of.p,.
31540 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 0a 20 20 20 20 3a 70 61 72 61 6d 20 71 3a 20 76 61 a."byte.string".....:param.q:.va
31560 6c 75 65 20 6f 66 20 71 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 6e 67 22 0a 20 20 20 20 3a 70 lue.of.q,.a."byte.string".....:p
31580 61 72 61 6d 20 67 3a 20 76 61 6c 75 65 20 6f 66 20 67 2c 20 61 20 22 62 79 74 65 20 73 74 72 69 aram.g:.value.of.g,.a."byte.stri
315a0 6e 67 22 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 66 20 44 53 ng".....:return:..instance.of.DS
315c0 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 61 5f 6e 65 77 28 A......""".....dsa.=.m2.dsa_new(
315e0 29 0a 20 20 20 20 6d 32 2e 64 73 61 5f 73 65 74 5f 70 71 67 28 64 73 61 2c 20 70 2c 20 71 2c 20 ).....m2.dsa_set_pqg(dsa,.p,.q,.
31600 67 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 65 66 20 g).....return.DSA(dsa,.1)...def.
31620 6c 6f 61 64 5f 70 61 72 61 6d 73 28 66 69 6c 65 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e load_params(file,.callback=util.
31640 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 20 74 79 70 65 passphrase_callback):.....#.type
31660 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 53 41 0a 20 20 20 20 :.(AnyStr,.Callable).->.DSA.....
31680 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 74 20 69 6e """.....Factory.function.that.in
316a0 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 68 20 44 53 41 stantiates.a.DSA.object.with.DSA
316c0 0a 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 61 20 66 69 6c 65 2e 0a 0a 20 20 .....parameters.from.a.file.....
316e0 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 20 20 20 20 4e 61 6d 65 73 20 74 68 65 20 66 69 6c ..:param.file:.....Names.the.fil
31700 65 20 28 61 20 70 61 74 68 29 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d e.(a.path).that.contains.the.PEM
31720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 72 65 73 65 6e 74 61 ......................representa
31740 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 tion.of.the.DSA.parameters......
31760 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 62 61 :param.callback:.A.Python.callba
31780 63 6b 20 6f 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 ck.object.that.will.be..........
317a0 20 20 20 20 20 20 20 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 ............invoked.if.the.DSA.p
317c0 61 72 61 6d 65 74 65 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 arameters.file.is...............
317e0 20 20 20 20 20 20 20 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 .......passphrase-protected.....
31800 20 3a 72 65 74 75 72 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 .:return:.........instance.of.DS
31820 41 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 65 A......""".....with.BIO.openfile
31840 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 20 3d 20 6c 6f 61 (file).as.bio:.........ret.=.loa
31860 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 29 0a 0a 20 20 20 d_params_bio(bio,.callback).....
31880 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 .return.ret...def.load_params_bi
318a0 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 65 5f o(bio,.callback=util.passphrase_
318c0 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,
318e0 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 46 61 .Callable).->.DSA.....""".....Fa
31900 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 65 73 ctory.function.that.instantiates
31920 20 61 20 44 53 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 .a.DSA.object.with.DSA.....param
31940 65 74 65 72 73 20 66 72 6f 6d 20 61 20 4d 32 43 72 79 70 74 6f 2e 42 49 4f 20 6f 62 6a 65 63 74 eters.from.a.M2Crypto.BIO.object
31960 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 73 .......:param.bio:......Contains
31980 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 44 .the.PEM.representation.of.the.D
319a0 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 61 72 61 6d 65 74 65 SA......................paramete
319c0 72 73 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 79 74 68 6f rs......:param.callback:.A.Pytho
319e0 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 62 65 0a 20 n.callback.object.that.will.be..
31a00 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 69 66 20 74 ....................invoked.if.t
31a20 68 65 20 44 53 41 20 70 61 72 61 6d 65 74 65 72 73 20 66 69 6c 65 20 69 73 0a 20 20 20 20 20 20 he.DSA.parameters.file.is.......
31a40 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
31a60 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
31a80 63 65 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 ce.of.DSA......""".....dsa.=.m2.
31aa0 64 73 61 5f 72 65 61 64 5f 70 61 72 61 6d 73 28 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c dsa_read_params(bio._ptr(),.call
31ac0 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
31ae0 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 75 74 69 6c 2e ef.load_key(file,.callback=util.
31b00 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 20 74 79 70 65 passphrase_callback):.....#.type
31b20 3a 20 28 41 6e 79 53 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 53 41 0a 20 20 20 20 :.(AnyStr,.Callable).->.DSA.....
31b40 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 74 20 69 6e """.....Factory.function.that.in
31b60 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 61 0a 20 stantiates.a.DSA.object.from.a..
31b80 20 20 20 50 45 4d 20 65 6e 63 6f 64 65 64 20 44 53 41 20 6b 65 79 20 70 61 69 72 2e 0a 0a 20 20 ...PEM.encoded.DSA.key.pair.....
31ba0 20 20 3a 70 61 72 61 6d 20 66 69 6c 65 3a 20 20 20 20 20 4e 61 6d 65 73 20 74 68 65 20 66 69 6c ..:param.file:.....Names.the.fil
31bc0 65 20 28 61 20 70 61 74 68 29 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d e.(a.path).that.contains.the.PEM
31be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 72 65 73 65 6e 74 61 ......................representa
31c00 74 69 6f 6e 20 6f 66 20 74 68 65 20 44 53 41 20 6b 65 79 20 70 61 69 72 2e 0a 20 20 20 20 3a 70 tion.of.the.DSA.key.pair......:p
31c20 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 62 61 63 6b aram.callback:.A.Python.callback
31c40 20 6f 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 .object.that.will.be............
31c60 20 20 20 20 20 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 ..........invoked.if.the.DSA.key
31c80 20 70 61 69 72 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 .pair.is......................pa
31ca0 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 6e 3a ssphrase-protected......:return:
31cc0 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 22 22 .........instance.of.DSA......""
31ce0 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
31d00 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f .bio:.........ret.=.load_key_bio
31d20 28 62 69 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 (bio,.callback)......return.ret.
31d40 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 61 63 6b ..def.load_key_bio(bio,.callback
31d60 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):.....
31d80 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
31da0 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.
31dc0 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 66 that.instantiates.a.DSA.object.f
31de0 72 6f 6d 20 61 0a 20 20 20 20 50 45 4d 20 65 6e 63 6f 64 65 64 20 44 53 41 20 6b 65 79 20 70 61 rom.a.....PEM.encoded.DSA.key.pa
31e00 69 72 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 ir.......:param.bio:......Contai
31e20 6e 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 ns.the.PEM.representation.of.the
31e40 20 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 6b 65 79 20 70 61 .DSA......................key.pa
31e60 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 41 20 50 79 74 68 6f ir......:param.callback:.A.Pytho
31e80 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 62 65 0a 20 n.callback.object.that.will.be..
31ea0 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 69 66 20 74 ....................invoked.if.t
31ec0 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 20 20 20 20 20 20 20 he.DSA.key.pair.is..............
31ee0 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 74 65 64 2e 0a 20 20 ........passphrase-protected....
31f00 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 63 65 20 6f 66 20 44 ..:return:.........instance.of.D
31f20 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 61 5f 72 65 61 SA......""".....dsa.=.m2.dsa_rea
31f40 64 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 d_key(bio._ptr(),.callback).....
31f60 72 65 74 75 72 6e 20 44 53 41 28 64 73 61 2c 20 31 29 0a 0a 0a 64 65 66 20 70 75 62 5f 6b 65 79 return.DSA(dsa,.1)...def.pub_key
31f80 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 28 70 2c 20 71 2c 20 67 2c 20 70 75 62 29 3a 0a 20 20 20 20 _from_params(p,.q,.g,.pub):.....
31fa0 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 73 2c 20 62 79 #.type:.(bytes,.bytes,.bytes,.by
31fc0 74 65 73 29 20 2d 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 tes).->.DSA_pub.....""".....Fact
31fe0 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 65 73 20 61 ory.function.that.instantiates.a
32000 20 44 53 41 5f 70 75 62 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 0a 20 20 20 20 74 68 65 20 70 61 .DSA_pub.object.using.....the.pa
32020 72 61 6d 65 74 65 72 73 20 61 6e 64 20 70 75 62 6c 69 63 20 6b 65 79 20 73 70 65 63 69 66 69 65 rameters.and.public.key.specifie
32040 64 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 70 3a 20 76 61 6c 75 65 20 6f 66 20 70 0a 20 20 20 d.......:param.p:.value.of.p....
32060 20 3a 70 61 72 61 6d 20 71 3a 20 76 61 6c 75 65 20 6f 66 20 71 0a 20 20 20 20 3a 70 61 72 61 6d .:param.q:.value.of.q.....:param
32080 20 67 3a 20 76 61 6c 75 65 20 6f 66 20 67 0a 20 20 20 20 3a 70 61 72 61 6d 20 70 75 62 3a 20 76 .g:.value.of.g.....:param.pub:.v
320a0 61 6c 75 65 20 6f 66 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 0a 20 20 20 20 3a 72 65 74 75 alue.of.the.public.key.....:retu
320c0 72 6e 3a 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 20 22 22 rn:..instance.of.DSA_pub......""
320e0 22 0a 20 20 20 20 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 ".....dsa.=.m2.dsa_new().....m2.
32100 64 73 61 5f 73 65 74 5f 70 71 67 28 64 73 61 2c 20 70 2c 20 71 2c 20 67 29 0a 20 20 20 20 6d 32 dsa_set_pqg(dsa,.p,.q,.g).....m2
32120 2e 64 73 61 5f 73 65 74 5f 70 75 62 28 64 73 61 2c 20 70 75 62 29 0a 20 20 20 20 72 65 74 75 72 .dsa_set_pub(dsa,.pub).....retur
32140 6e 20 44 53 41 5f 70 75 62 28 64 73 61 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 75 62 n.DSA_pub(dsa,.1)...def.load_pub
32160 5f 6b 65 79 28 66 69 6c 65 2c 20 63 61 6c 6c 62 61 63 6b 3d 75 74 69 6c 2e 70 61 73 73 70 68 72 _key(file,.callback=util.passphr
32180 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 41 6e 79 53 ase_callback):.....#.type:.(AnyS
321a0 74 72 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 53 41 5f 70 75 62 0a 20 20 20 20 22 22 22 tr,.Callable).->.DSA_pub....."""
321c0 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 69 6e 73 74 61 .....Factory.function.that.insta
321e0 6e 74 69 61 74 65 73 20 61 20 44 53 41 5f 70 75 62 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 0a 20 ntiates.a.DSA_pub.object.using..
32200 20 20 20 61 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e ...a.DSA.public.key.contained.in
32220 20 50 45 4d 20 66 69 6c 65 2e 20 20 54 68 65 20 50 45 4d 20 66 69 6c 65 0a 20 20 20 20 6d 75 73 .PEM.file...The.PEM.file.....mus
32240 74 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 61 64 64 69 t.contain.the.parameters.in.addi
32260 74 69 6f 6e 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 70 61 tion.to.the.public.key.......:pa
32280 72 61 6d 20 66 69 6c 65 3a 20 20 20 20 20 4e 61 6d 65 73 20 74 68 65 20 66 69 6c 65 20 28 61 20 ram.file:.....Names.the.file.(a.
322a0 70 61 74 68 29 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 path).that.contains.the.PEM.....
322c0 20 20 20 20 20 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 .................representation.
322e0 6f 66 20 74 68 65 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 2e 0a 20 20 20 20 3a 70 61 72 61 of.the.DSA.public.key......:para
32300 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 62 m.callback:.A.Python.callback.ob
32320 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 20 ject.that.will.be...............
32340 20 20 20 20 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 .......invoked.should.the.DSA.pu
32360 62 6c 69 63 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 blic.key.be.....................
32380 20 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 .passphrase-protected......:retu
323a0 72 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 5f 70 75 62 2e rn:.........instance.of.DSA_pub.
323c0 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
323e0 69 6c 65 29 20 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6c 6f 61 64 5f ile).as.bio:.........ret.=.load_
32400 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 29 0a 0a 20 20 20 20 pub_key_bio(bio,.callback)......
32420 72 65 74 75 72 6e 20 72 65 74 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 return.ret...def.load_pub_key_bi
32440 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 65 5f o(bio,.callback=util.passphrase_
32460 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,
32480 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 44 53 41 5f 70 75 62 0a 20 20 20 20 22 22 22 0a 20 20 .Callable).->.DSA_pub....."""...
324a0 20 20 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 ..Factory.function.that.instanti
324c0 61 74 65 73 20 61 20 44 53 41 5f 70 75 62 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 0a 20 20 20 20 ates.a.DSA_pub.object.using.....
324e0 61 20 44 53 41 20 70 75 62 6c 69 63 20 6b 65 79 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 50 45 a.DSA.public.key.contained.in.PE
32500 4d 20 66 6f 72 6d 61 74 2e 20 20 54 68 65 20 50 45 4d 0a 20 20 20 20 6d 75 73 74 20 63 6f 6e 74 M.format...The.PEM.....must.cont
32520 61 69 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 ain.the.parameters.in.addition.t
32540 6f 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 o.the.public.key.......:param.bi
32560 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 65 o:......Contains.the.PEM.represe
32580 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 20 ntation.of.the.DSA..............
325a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6b 65 79 20 28 77 69 74 68 20 70 61 72 61 6d 73 29 ........public.key.(with.params)
325c0 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 79 74 68 6f 6e 20 ......:param.callback:.A.Python.
325e0 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 62 65 0a 20 20 20 callback.object.that.will.be....
32600 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 73 68 6f 75 6c 64 ..................invoked.should
32620 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 20 20 20 20 20 20 .the.DSA.public.key.be..........
32640 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 74 65 64 ............passphrase-protected
32660 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 63 65 20 ......:return:.........instance.
32680 6f 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 70 75 62 20 3d of.DSA_pub......""".....dsapub.=
326a0 20 6d 32 2e 64 73 61 5f 72 65 61 64 5f 70 75 62 5f 6b 65 79 28 62 69 6f 2e 5f 70 74 72 28 29 2c .m2.dsa_read_pub_key(bio._ptr(),
326c0 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 5f 70 75 62 28 64 73 .callback).....return.DSA_pub(ds
326e0 61 70 75 62 2c 20 31 29 0a 94 95 3b 0d 01 00 00 00 00 00 7d 94 28 8c 08 44 53 41 45 72 72 6f 72 apub,.1)...;.......}.(..DSAError
32700 94 6a 37 02 00 00 4b 10 4b 11 87 94 8c 0c 44 53 41 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 .j7...K.K.....DSA.__init__.j.%..
32720 4b 32 4b 3a 87 94 8c 0b 44 53 41 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 3c 4b 3f 87 94 8c K2K:....DSA.__del__.j.%..K<K?...
32740 0b 44 53 41 2e 5f 5f 6c 65 6e 5f 5f 94 6a 18 25 00 00 4b 41 4b 49 87 94 8c 0f 44 53 41 2e 5f 5f .DSA.__len__.j.%..KAKI....DSA.__
32760 67 65 74 61 74 74 72 5f 5f 94 6a 18 25 00 00 4b 4b 4b 59 87 94 8c 0f 44 53 41 2e 5f 5f 73 65 74 getattr__.j.%..KKKY....DSA.__set
32780 61 74 74 72 5f 5f 94 6a 18 25 00 00 4b 5b 4b 62 87 94 8c 0e 44 53 41 2e 73 65 74 5f 70 61 72 61 attr__.j.%..K[Kb....DSA.set_para
327a0 6d 73 94 6a 18 25 00 00 4b 64 4b 76 87 94 8c 0b 44 53 41 2e 67 65 6e 5f 6b 65 79 94 6a 18 25 00 ms.j.%..KdKv....DSA.gen_key.j.%.
327c0 00 4b 78 4b 7e 87 94 8c 0f 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4b 80 .KxK~....DSA.save_params.j.%..K.
327e0 4b 8b 87 94 8c 13 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 18 25 00 00 4b K.....DSA.save_params_bio.j.%..K
32800 8d 4b 95 87 94 8c 0c 44 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 18 25 00 00 4b 97 4b a5 87 94 8c .K.....DSA.save_key.j.%..K.K....
32820 10 44 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4b a7 4b bb 87 94 8c 10 44 .DSA.save_key_bio.j.%..K.K.....D
32840 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 18 25 00 00 4b bd 4b c9 87 94 8c 14 44 53 41 SA.save_pub_key.j.%..K.K.....DSA
32860 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4b cb 4b d4 87 94 8c 08 44 .save_pub_key_bio.j.%..K.K.....D
32880 53 41 2e 73 69 67 6e 94 6a 18 25 00 00 4b d6 4b e1 87 94 8c 0a 44 53 41 2e 76 65 72 69 66 79 94 SA.sign.j.%..K.K.....DSA.verify.
328a0 6a 18 25 00 00 4b e3 4b f0 87 94 8c 0d 44 53 41 2e 73 69 67 6e 5f 61 73 6e 31 94 6a 18 25 00 00 j.%..K.K.....DSA.sign_asn1.j.%..
328c0 4b f2 4b f4 87 94 8c 0f 44 53 41 2e 76 65 72 69 66 79 5f 61 73 6e 31 94 6a 18 25 00 00 4b f6 4b K.K.....DSA.verify_asn1.j.%..K.K
328e0 f8 87 94 8c 0d 44 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 18 25 00 00 4b fa 4d 01 01 87 94 8c .....DSA.check_key.j.%..K.M.....
32900 03 44 53 41 94 6a 37 02 00 00 4b 17 4d 01 01 87 94 8c 0c 44 53 41 5f 70 75 62 2e 73 69 67 6e 94 .DSA.j7...K.M......DSA_pub.sign.
32920 6a 18 25 00 00 4d 0d 01 4d 0f 01 87 94 8c 11 44 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 j.%..M..M......DSA_pub.check_key
32940 94 6a 18 25 00 00 4d 13 01 4d 18 01 87 94 8c 07 44 53 41 5f 70 75 62 94 6a 37 02 00 00 4d 04 01 .j.%..M..M......DSA_pub.j7...M..
32960 4d 1c 01 87 94 8c 0a 67 65 6e 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4d 22 01 4d 30 01 87 94 8c M......gen_params.j.%..M".M0....
32980 0a 73 65 74 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4d 33 01 4d 40 01 87 94 8c 0b 6c 6f 61 64 5f .set_params.j.%..M3.M@.....load_
329a0 70 61 72 61 6d 73 94 6a 18 25 00 00 4d 43 01 4d 53 01 87 94 8c 0f 6c 6f 61 64 5f 70 61 72 61 6d params.j.%..MC.MS.....load_param
329c0 73 5f 62 69 6f 94 6a 18 25 00 00 4d 56 01 4d 64 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 18 s_bio.j.%..MV.Md.....load_key.j.
329e0 25 00 00 4d 67 01 4d 77 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d %..Mg.Mw.....load_key_bio.j.%..M
32a00 7a 01 4d 88 01 87 94 8c 13 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 6a 18 25 z.M......pub_key_from_params.j.%
32a20 00 00 4d 8b 01 4d 9a 01 87 94 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 18 25 00 00 4d 9d ..M..M......load_pub_key.j.%..M.
32a40 01 4d ae 01 87 94 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d b1 .M......load_pub_key_bio.j.%..M.
32a60 01 4d c0 01 87 94 75 7d 94 28 8c 03 44 53 41 94 6a 60 02 00 00 8c 0d 44 53 41 2e 63 68 65 63 6b .M....u}.(..DSA.j`.....DSA.check
32a80 5f 6b 65 79 94 6a 60 02 00 00 8c 0b 44 53 41 2e 67 65 6e 5f 6b 65 79 94 6a 60 02 00 00 8c 0c 44 _key.j`.....DSA.gen_key.j`.....D
32aa0 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 60 02 00 00 8c 10 44 53 41 2e 73 61 76 65 5f 6b 65 79 5f SA.save_key.j`.....DSA.save_key_
32ac0 62 69 6f 94 6a 60 02 00 00 8c 0f 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 bio.j`.....DSA.save_params.j`...
32ae0 8c 13 44 53 41 2e 73 61 76 65 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 60 02 00 00 8c 10 44 53 41 ..DSA.save_params_bio.j`.....DSA
32b00 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 14 44 53 41 2e 73 61 76 65 5f 70 75 .save_pub_key.j`.....DSA.save_pu
32b20 62 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 0e 44 53 41 2e 73 65 74 5f 70 61 72 61 6d 73 94 b_key_bio.j`.....DSA.set_params.
32b40 6a 60 02 00 00 8c 08 44 53 41 2e 73 69 67 6e 94 6a 60 02 00 00 8c 0d 44 53 41 2e 73 69 67 6e 5f j`.....DSA.sign.j`.....DSA.sign_
32b60 61 73 6e 31 94 6a 60 02 00 00 8c 0a 44 53 41 2e 76 65 72 69 66 79 94 6a 60 02 00 00 8c 0f 44 53 asn1.j`.....DSA.verify.j`.....DS
32b80 41 2e 76 65 72 69 66 79 5f 61 73 6e 31 94 6a 60 02 00 00 6a 14 14 00 00 6a 60 02 00 00 8c 07 44 A.verify_asn1.j`...j....j`.....D
32ba0 53 41 5f 70 75 62 94 6a 60 02 00 00 8c 11 44 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 94 SA_pub.j`.....DSA_pub.check_key.
32bc0 6a 60 02 00 00 8c 0c 44 53 41 5f 70 75 62 2e 73 69 67 6e 94 6a 60 02 00 00 8c 0a 67 65 6e 5f 70 j`.....DSA_pub.sign.j`.....gen_p
32be0 61 72 61 6d 73 94 6a 60 02 00 00 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 60 02 00 00 8c 0c 6c 6f 61 arams.j`.....load_key.j`.....loa
32c00 64 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 0b 6c 6f 61 64 5f 70 61 72 61 6d 73 94 6a 60 02 d_key_bio.j`.....load_params.j`.
32c20 00 00 8c 0f 6c 6f 61 64 5f 70 61 72 61 6d 73 5f 62 69 6f 94 6a 60 02 00 00 8c 0c 6c 6f 61 64 5f ....load_params_bio.j`.....load_
32c40 70 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 pub_key.j`.....load_pub_key_bio.
32c60 6a 60 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 6a 60 02 00 00 j`.....pub_key_from_params.j`...
32c80 8c 0a 73 65 74 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 44 53 ..set_params.j`...u..M2Crypto.DS
32ca0 41 94 74 94 8c 0b 4d 32 43 72 79 70 74 6f 2e 45 43 94 28 58 6d 3e 00 00 66 72 6f 6d 20 5f 5f 66 A.t...M2Crypto.EC.(Xm>..from.__f
32cc0 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 0a uture__.import.absolute_import..
32ce0 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 53 53 4c """.M2Crypto.wrapper.for.OpenSSL
32d00 20 45 43 44 48 2f 45 43 44 53 41 20 41 50 49 2e 0a 0a 40 72 65 71 75 69 72 65 73 3a 20 4f 70 65 .ECDH/ECDSA.API...@requires:.Ope
32d20 6e 53 53 4c 20 30 2e 39 2e 38 20 6f 72 20 6e 65 77 65 72 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 nSSL.0.9.8.or.newer..Copyright.(
32d40 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
32d60 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 63 6f 70 79 .rights.reserved...Portions.copy
32d80 72 69 67 68 74 20 28 63 29 20 32 30 30 35 2d 32 30 30 36 20 56 72 69 6a 65 20 55 6e 69 76 65 72 right.(c).2005-2006.Vrije.Univer
32da0 73 69 74 65 69 74 20 41 6d 73 74 65 72 64 61 6d 2e 0a 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 siteit.Amsterdam..All.rights.res
32dc0 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 74 20 erved."""..from.M2Crypto.import.
32de0 42 49 4f 2c 20 45 72 72 2c 20 45 56 50 2c 20 6d 32 2c 20 75 74 69 6c 0a 66 72 6f 6d 20 74 79 70 BIO,.Err,.EVP,.m2,.util.from.typ
32e00 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 20 44 69 63 ing.import.AnyStr,.Callable,.Dic
32e20 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 20 6e 6f 71 t,.Optional,.Tuple,.Union..#.noq
32e40 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 45 56 50 20 69 6d 70 6f 72 74 20 50 4b 65 79 0a a.from.M2Crypto.EVP.import.PKey.
32e60 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 45 72 72 6f 72 28 .EC_Key.=.bytes...class.ECError(
32e80 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 6d 32 2e 65 63 5f 69 6e 69 Exception):.....pass...m2.ec_ini
32ea0 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 69 65 72 20 63 t(ECError)..#.Curve.identifier.c
32ec0 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 2e 4e 49 44 5f onstants.NID_secp112r1.=.m2.NID_
32ee0 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 73 65 63 70 31 secp112r1..#.type:.int.NID_secp1
32f00 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 74 79 70 65 3a 12r2.=.m2.NID_secp112r2..#.type:
32f20 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 5f 73 65 63 70 .int.NID_secp128r1.=.m2.NID_secp
32f40 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 31 32 38 72 32 128r1..#.type:.int.NID_secp128r2
32f60 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 3a 20 69 6e 74 .=.m2.NID_secp128r2..#.type:.int
32f80 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 70 31 36 30 6b .NID_secp160k1.=.m2.NID_secp160k
32fa0 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 31 20 3d 20 6d 1..#.type:.int.NID_secp160r1.=.m
32fc0 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 74 0a 4e 49 44 2.NID_secp160r1..#.type:.int.NID
32fe0 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 72 32 20 20 23 _secp160r2.=.m2.NID_secp160r2..#
33000 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 6d 32 2e 4e 49 .type:.int.NID_secp192k1.=.m2.NI
33020 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 44 5f 73 65 63 D_secp192k1..#.type:.int.NID_sec
33040 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 23 20 74 79 70 p224k1.=.m2.NID_secp224k1..#.typ
33060 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 49 44 5f 73 65 e:.int.NID_secp224r1.=.m2.NID_se
33080 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 63 70 32 35 36 cp224r1..#.type:.int.NID_secp256
330a0 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 70 65 3a 20 69 k1.=.m2.NID_secp256k1..#.type:.i
330c0 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 65 63 70 33 38 nt.NID_secp384r1.=.m2.NID_secp38
330e0 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 31 72 31 20 3d 4r1..#.type:.int.NID_secp521r1.=
33100 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 69 6e 74 0a 4e .m2.NID_secp521r1..#.type:.int.N
33120 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 31 33 72 31 20 ID_sect113r1.=.m2.NID_sect113r1.
33140 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 3d 20 6d 32 2e .#.type:.int.NID_sect113r2.=.m2.
33160 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 4e 49 44 5f 73 NID_sect113r2..#.type:.int.NID_s
33180 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 20 20 23 20 74 ect131r1.=.m2.NID_sect131r1..#.t
331a0 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 2e 4e 49 44 5f ype:.int.NID_sect131r2.=.m2.NID_
331c0 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 73 65 63 74 31 sect131r2..#.type:.int.NID_sect1
331e0 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 74 79 70 65 3a 63k1.=.m2.NID_sect163k1..#.type:
33200 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 5f 73 65 63 74 .int.NID_sect163r1.=.m2.NID_sect
33220 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 31 36 33 72 32 163r1..#.type:.int.NID_sect163r2
33240 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 3a 20 69 6e 74 .=.m2.NID_sect163r2..#.type:.int
33260 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 74 31 39 33 72 .NID_sect193r1.=.m2.NID_sect193r
33280 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 32 20 3d 20 6d 1..#.type:.int.NID_sect193r2.=.m
332a0 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 74 0a 23 20 64 2.NID_sect193r2..#.type:.int.#.d
332c0 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 74 20 73 65 72 efault.for.secg.org.TLS.test.ser
332e0 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 73 65 63 74 32 ver.NID_sect233k1.=.m2.NID_sect2
33300 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 33 33 72 31 20 33k1..#.type:.int.NID_sect233r1.
33320 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 20 69 6e 74 0a =.m2.NID_sect233r1..#.type:.int.
33340 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 32 33 39 6b 31 NID_sect239k1.=.m2.NID_sect239k1
33360 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 20 3d 20 6d 32 ..#.type:.int.NID_sect283k1.=.m2
33380 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 0a 4e 49 44 5f .NID_sect283k1..#.type:.int.NID_
333a0 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 31 20 20 23 20 sect283r1.=.m2.NID_sect283r1..#.
333c0 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 32 2e 4e 49 44 type:.int.NID_sect409k1.=.m2.NID
333e0 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 5f 73 65 63 74 _sect409k1..#.type:.int.NID_sect
33400 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 20 74 79 70 65 409r1.=.m2.NID_sect409r1..#.type
33420 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 44 5f 73 65 63 :.int.NID_sect571k1.=.m2.NID_sec
33440 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 74 35 37 31 72 t571k1..#.type:.int.NID_sect571r
33460 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 65 3a 20 69 6e 1.=.m2.NID_sect571r1..#.type:.in
33480 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 58 39 5f 36 32 t..NID_prime192v1.=.m2.NID_X9_62
334a0 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 44 5f 70 72 69 _prime192v1..#.type:.int.NID_pri
334c0 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 65 31 39 32 76 me192v2.=.m2.NID_X9_62_prime192v
334e0 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 76 33 20 3d 20 2..#.type:.int.NID_prime192v3.=.
33500 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 74 79 70 65 3a m2.NID_X9_62_prime192v3..#.type:
33520 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 44 5f 58 39 5f .int.NID_prime239v1.=.m2.NID_X9_
33540 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 4e 49 44 5f 70 62_prime239v1..#.type:.int.NID_p
33560 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 69 6d 65 32 33 rime239v2.=.m2.NID_X9_62_prime23
33580 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 33 39 76 33 20 9v2..#.type:.int.NID_prime239v3.
335a0 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 23 20 74 79 70 =.m2.NID_X9_62_prime239v3..#.typ
335c0 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 4e 49 44 5f 58 e:.int.NID_prime256v1.=.m2.NID_X
335e0 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 74 0a 4e 49 44 9_62_prime256v1..#.type:.int.NID
33600 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 63 32 70 6e 62 _c2pnb163v1.=.m2.NID_X9_62_c2pnb
33620 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 62 31 36 33 76 163v1..#.type:.int.NID_c2pnb163v
33640 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 20 20 23 20 74 2.=.m2.NID_X9_62_c2pnb163v2..#.t
33660 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 32 2e 4e 49 44 ype:.int.NID_c2pnb163v3.=.m2.NID
33680 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 69 6e 74 0a 4e _X9_62_c2pnb163v3..#.type:.int.N
336a0 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 32 5f 63 32 70 ID_c2pnb176v1.=.m2.NID_X9_62_c2p
336c0 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 74 6e 62 31 39 nb176v1..#.type:.int.NID_c2tnb19
336e0 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 76 31 20 20 23 1v1.=.m2.NID_X9_62_c2tnb191v1..#
33700 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 20 6d 32 2e 4e .type:.int.NID_c2tnb191v2.=.m2.N
33720 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 3a 20 69 6e 74 ID_X9_62_c2tnb191v2..#.type:.int
33740 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 5f 36 32 5f 63 .NID_c2tnb191v3.=.m2.NID_X9_62_c
33760 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 63 32 70 6e 62 2tnb191v3..#.type:.int.NID_c2pnb
33780 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 30 38 77 31 20 208w1.=.m2.NID_X9_62_c2pnb208w1.
337a0 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 20 3d 20 6d 32 .#.type:.int.NID_c2tnb239v1.=.m2
337c0 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 70 65 3a 20 69 .NID_X9_62_c2tnb239v1..#.type:.i
337e0 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 58 39 5f 36 32 nt.NID_c2tnb239v2.=.m2.NID_X9_62
33800 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 44 5f 63 32 74 _c2tnb239v2..#.type:.int.NID_c2t
33820 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 62 32 33 39 76 nb239v3.=.m2.NID_X9_62_c2tnb239v
33840 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 77 31 20 3d 20 3..#.type:.int.NID_c2pnb272w1.=.
33860 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 74 79 70 65 3a m2.NID_X9_62_c2pnb272w1..#.type:
33880 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 44 5f 58 39 5f .int.NID_c2pnb304w1.=.m2.NID_X9_
338a0 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 4e 49 44 5f 63 62_c2pnb304w1..#.type:.int.NID_c
338c0 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 74 6e 62 33 35 2tnb359v1.=.m2.NID_X9_62_c2tnb35
338e0 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 36 38 77 31 20 9v1..#.type:.int.NID_c2pnb368w1.
33900 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 23 20 74 79 70 =.m2.NID_X9_62_c2pnb368w1..#.typ
33920 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 4e 49 44 5f 58 e:.int.NID_c2tnb431r1.=.m2.NID_X
33940 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 74 0a 0a 23 20 9_62_c2tnb431r1..#.type:.int..#.
33960 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 69 74 68 20 6f To.preserve.compatibility.with.o
33980 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 39 32 76 31 20 lder.names.NID_X9_62_prime192v1.
339a0 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 6e 74 0a 4e 49 =.NID_prime192v1..#.type:.int.NI
339c0 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 69 6d 65 31 39 D_X9_62_prime192v2.=.NID_prime19
339e0 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 70 72 69 6d 65 2v2..#.type:.int.NID_X9_62_prime
33a00 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 79 70 65 3a 20 192v3.=.NID_prime192v3..#.type:.
33a20 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 4e 49 44 5f 70 int.NID_X9_62_prime239v1.=.NID_p
33a40 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 58 39 5f 36 32 rime239v1..#.type:.int.NID_X9_62
33a60 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 32 20 20 23 20 _prime239v2.=.NID_prime239v2..#.
33a80 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 39 76 33 20 3d type:.int.NID_X9_62_prime239v3.=
33aa0 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 74 0a 4e 49 44 .NID_prime239v3..#.type:.int.NID
33ac0 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 6d 65 32 35 36 _X9_62_prime256v1.=.NID_prime256
33ae0 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 70 6e 62 31 v1..#.type:.int.NID_X9_62_c2pnb1
33b00 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 70 65 3a 20 69 63v1.=.NID_c2pnb163v1..#.type:.i
33b20 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 49 44 5f 63 32 nt.NID_X9_62_c2pnb163v2.=.NID_c2
33b40 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 39 5f 36 32 5f pnb163v2..#.type:.int.NID_X9_62_
33b60 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 20 20 23 20 74 c2pnb163v3.=.NID_c2pnb163v3..#.t
33b80 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 76 31 20 3d 20 ype:.int.NID_X9_62_c2pnb176v1.=.
33ba0 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 0a 4e 49 44 5f NID_c2pnb176v1..#.type:.int.NID_
33bc0 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 62 31 39 31 76 X9_62_c2tnb191v1.=.NID_c2tnb191v
33be0 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 62 31 39 1..#.type:.int.NID_X9_62_c2tnb19
33c00 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 65 3a 20 69 6e 1v2.=.NID_c2tnb191v2..#.type:.in
33c20 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 44 5f 63 32 74 t.NID_X9_62_c2tnb191v3.=.NID_c2t
33c40 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 5f 36 32 5f 63 nb191v3..#.type:.int.NID_X9_62_c
33c60 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 20 23 20 74 79 2pnb208w1.=.NID_c2pnb208w1..#.ty
33c80 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 31 20 3d 20 4e pe:.int.NID_X9_62_c2tnb239v1.=.N
33ca0 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 4e 49 44 5f 58 ID_c2tnb239v1..#.type:.int.NID_X
33cc0 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 32 33 39 76 32 9_62_c2tnb239v2.=.NID_c2tnb239v2
33ce0 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 62 32 33 39 ..#.type:.int.NID_X9_62_c2tnb239
33d00 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 3a 20 69 6e 74 v3.=.NID_c2tnb239v3..#.type:.int
33d20 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 5f 63 32 70 6e .NID_X9_62_c2pnb272w1.=.NID_c2pn
33d40 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 36 32 5f 63 32 b272w1..#.type:.int.NID_X9_62_c2
33d60 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 23 20 74 79 70 pnb304w1.=.NID_c2pnb304w1..#.typ
33d80 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 20 3d 20 4e 49 e:.int.NID_X9_62_c2tnb359v1.=.NI
33da0 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 49 44 5f 58 39 D_c2tnb359v1..#.type:.int.NID_X9
33dc0 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 36 38 77 31 20 _62_c2pnb368w1.=.NID_c2pnb368w1.
33de0 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 34 33 31 72 .#.type:.int.NID_X9_62_c2tnb431r
33e00 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 20 69 6e 74 0a 1.=.NID_c2tnb431r1..#.type:.int.
33e20 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 20 3d 20 6d 32 .NID_wap_wsg_idm_ecid_wtls1.=.m2
33e40 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 20 20 23 20 74 .NID_wap_wsg_idm_ecid_wtls1..#.t
33e60 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 69 64 5f 77 74 ype:.int.NID_wap_wsg_idm_ecid_wt
33e80 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 69 64 5f 77 74 ls3.=.m2.NID_wap_wsg_idm_ecid_wt
33ea0 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 67 5f 69 64 6d ls3..#.type:.int.NID_wap_wsg_idm
33ec0 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 67 5f 69 64 6d _ecid_wtls4.=.m2.NID_wap_wsg_idm
33ee0 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 44 5f 77 61 70 _ecid_wtls4..#.type:.int.NID_wap
33f00 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 44 5f 77 61 70 _wsg_idm_ecid_wtls5.=.m2.NID_wap
33f20 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 3a 20 69 6e 74 _wsg_idm_ecid_wtls5..#.type:.int
33f40 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 20 3d 20 6d 32 .NID_wap_wsg_idm_ecid_wtls6.=.m2
33f60 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 20 20 23 20 74 .NID_wap_wsg_idm_ecid_wtls6..#.t
33f80 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 69 64 5f 77 74 ype:.int.NID_wap_wsg_idm_ecid_wt
33fa0 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 69 64 5f 77 74 ls7.=.m2.NID_wap_wsg_idm_ecid_wt
33fc0 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 67 5f 69 64 6d ls7..#.type:.int.NID_wap_wsg_idm
33fe0 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 67 5f 69 64 6d _ecid_wtls8.=.m2.NID_wap_wsg_idm
34000 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 44 5f 77 61 70 _ecid_wtls8..#.type:.int.NID_wap
34020 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 44 5f 77 61 70 _wsg_idm_ecid_wtls9.=.m2.NID_wap
34040 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 3a 20 69 6e 74 _wsg_idm_ecid_wtls9..#.type:.int
34060 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 30 20 3d 20 6d .NID_wap_wsg_idm_ecid_wtls10.=.m
34080 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 30 20 20 23 2.NID_wap_wsg_idm_ecid_wtls10..#
340a0 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 69 64 5f .type:.int.NID_wap_wsg_idm_ecid_
340c0 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 5f 65 63 69 64 wtls11.=.m2.NID_wap_wsg_idm_ecid
340e0 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 70 5f 77 73 67 _wtls11..#.type:.int.NID_wap_wsg
34100 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 61 70 5f 77 73 _idm_ecid_wtls12.=.m2.NID_wap_ws
34120 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 69 6e 74 0a 0a g_idm_ecid_wtls12..#.type:.int..
34140 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 20 61 63 63 6f #.The.following.two.curves,.acco
34160 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 22 51 75 65 73 rding.to.OpenSSL,.have.a.#."Ques
34180 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 61 6e 64 20 61 tionable.extension.field!".and.a
341a0 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 70 65 6e 53 53 re.not.supported.by.#.the.OpenSS
341c0 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 72 3a 20 6e 6f L.inverse.function...ECError:.no
341e0 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 6e 6e 6f 74 20 .inverse..#.As.such.they.cannot.
34200 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 6d 69 67 68 74 be.used.for.signing...They.might
34220 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 65 6e 63 72 79 ,.#.however,.be.usable.for.encry
34240 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 65 6e 20 74 65 ption.but.that.has.not.#.been.te
34260 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 73 20 63 61 6e sted...Until.thir.usefulness.can
34280 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 20 6e 6f 74 20 .be.established,.#.they.are.not.
342a0 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 49 44 5f 69 70 supported.at.this.time..#.NID_ip
342c0 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 69 70 73 65 63 sec3.=.m2.NID_ipsec3.#.NID_ipsec
342e0 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 43 28 6f 62 6a 4.=.m2.NID_ipsec4...class.EC(obj
34300 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 6e 74 65 72 66 ect):......""".....Object.interf
34320 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 22 22 0a 0a 20 ace.to.a.EC.key.pair......"""...
34340 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 65 79 5f 66 72 ...m2_ec_key_free.=.m2.ec_key_fr
34360 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 65 63 2c 20 5f ee......def.__init__(self,.ec,._
34380 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 45 43 2c 20 pyfree=0):.........#.type:.(EC,.
343a0 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 6d 32 2e 65 int).->.None.........assert.m2.e
343c0 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 20 74 79 70 65 c_key_type_check(ec),."'ec'.type
343e0 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 63 0a 20 20 20 .error".........self.ec.=.ec....
34400 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 20 20 .....self._pyfree.=._pyfree.....
34420 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
34440 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
34460 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):..........
34480 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 2e 65 63 29 0a ...self.m2_ec_key_free(self.ec).
344a0 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):.........
344c0 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 73 73 65 72 74 #.type:.().->.int.........assert
344e0 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 65 63 29 2c 20 .m2.ec_key_type_check(self.ec),.
34500 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 74 75 72 6e "'ec'.type.error".........return
34520 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 0a 20 20 20 20 .m2.ec_key_keylen(self.ec)......
34540 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 20 74 79 70 def.gen_key(self):.........#.typ
34560 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........."""........
34580 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 6d 20 69 74 73 .Generates.the.key.pair.from.its
345a0 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 20 20 20 20 20 .parameters..Use::..............
345c0 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 76 65 29 0a 20 keypair.=.EC.gen_params(curve)..
345e0 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 29 0a 0a 20 20 ...........keypair.gen_key()....
34600 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 61 69 72 2e 0a ......to.create.an.EC.key.pair..
34620 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 65 63 ........""".........assert.m2.ec
34640 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 65 63 27 20 _key_type_check(self.ec),."'ec'.
34660 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 65 79 5f 67 65 type.error".........m2.ec_key_ge
34680 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 28 73 65 6c 66 n_key(self.ec)......def.pub(self
346a0 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 5f 70 75 62 0a ):.........#.type:.().->.EC_pub.
346c0 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 66 72 65 65 0a ........#.Don't.let.python.free.
346e0 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 65 63 2c 20 30 ........return.EC_pub(self.ec,.0
34700 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 69 67 65 73 74 )......def.sign_dsa(self,.digest
34720 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 54 75 ):.........#.type:.(bytes).->.Tu
34740 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 22 22 0a 20 20 ple[bytes,.bytes]........."""...
34760 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 20 75 73 69 6e ......Sign.the.given.digest.usin
34780 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 2c 73 29 2c 20 g.ECDSA..Returns.a.tuple.(r,s),.
347a0 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 74 75 72 65 20 the.two.........ECDSA.signature.
347c0 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 20 20 20 20 20 parameters..........""".........
347e0 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 28 29 2c 20 22 assert.self._check_key_type(),."
34800 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 74 75 72 6e 20 'ec'.type.error".........return.
34820 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 73 74 29 0a 0a m2.ecdsa_sign(self.ec,.digest)..
34840 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 67 65 73 74 2c ....def.verify_dsa(self,.digest,
34860 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 74 65 73 2c 20 .r,.s):.........#.type:.(bytes,.
34880 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 20 20 22 22 22 bytes,.bytes).->.int........."""
348a0 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 69 67 65 73 74 .........Verify.the.given.digest
348c0 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 68 65 20 45 43 .using.ECDSA..r.and.s.are.the.EC
348e0 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 65 74 65 72 73 DSA.........signature.parameters
34900 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 73 65 6c ..........""".........assert.sel
34920 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 74 79 70 65 20 f._check_key_type(),."'ec'.type.
34940 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 64 73 61 5f 76 error".........return.m2.ecdsa_v
34960 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 29 0a 0a 20 20 erify(self.ec,.digest,.r,.s)....
34980 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 69 67 65 73 74 ..def.sign_dsa_asn1(self,.digest
349a0 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 62 79 ):.........#.type:.(bytes).->.by
349c0 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 65 63 6b 5f 6b tes.........assert.self._check_k
349e0 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 22 0a 20 20 20 ey_type(),."'ec'.type.error"....
34a00 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 73 6e 31 28 73 .....return.m2.ecdsa_sign_asn1(s
34a20 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 72 69 66 79 5f elf.ec,.digest)......def.verify_
34a40 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 29 3a 0a 20 20 dsa_asn1(self,.digest,.blob):...
34a60 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 79 5f 74 79 70 ......assert.self._check_key_typ
34a80 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 20 20 20 20 72 e(),."'ec'.type.error".........r
34aa0 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 73 65 6c 66 2e eturn.m2.ecdsa_verify_asn1(self.
34ac0 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 63 6f 6d 70 75 ec,.digest,.blob)......def.compu
34ae0 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 20 20 20 20 20 te_dh_key(self,.pub_key):.......
34b00 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 62 79 74 65 73 ..#.type:.(EC).->.Optional[bytes
34b20 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 74 65 20 74 68 ].........""".........Compute.th
34b40 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 65 79 20 70 61 e.ECDH.shared.key.of.this.key.pa
34b60 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 20 20 20 20 20 ir.and.the.given.public.........
34b80 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 75 73 65 20 74 key.object..They.must.both.use.t
34ba0 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 20 20 20 20 20 he.same.curve..Returns.the......
34bc0 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 61 20 62 75 66 ...shared.key.in.binary.as.a.buf
34be0 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 6f 6e 20 46 75 fer.object..No.Key.Derivation.Fu
34c00 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 20 20 20 20 20 nction.is.........applied.......
34c20 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 63 68 65 63 6b ...""".........assert.self.check
34c40 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'
34c60 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 70 75 74 65 5f .........return.m2.ecdh_compute_
34c80 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 20 20 20 64 65 key(self.ec,.pub_key.ec)......de
34ca0 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
34cc0 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',.................
34ce0 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
34d00 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
34d20 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
34d40 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.
34d60 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 42 49 4f 20 key.pair.to.an.M2Crypto.BIO.BIO.
34d80 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 20 20 20 3a object.in.PEM.format...........:
34da0 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
34dc0 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 3a 70 61 72 ct.to.save.key.to...........:par
34de0 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 74 6f 20 70 am.cipher:.Symmetric.cipher.to.p
34e00 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 20 20 20 20 rotect.the.key..The.default.....
34e20 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 20 27 61 65 ...................cipher.is.'ae
34e40 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 65 2c 20 74 s_128_cbc'..If.cipher.is.None,.t
34e60 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 68 65 20 6b hen........................the.k
34e80 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 20 20 20 20 ey.is.saved.in.the.clear........
34ea0 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
34ec0 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....
34ee0 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 75 69 72 65 ......................to.acquire
34f00 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 74 .a.passphrase.with.which.to.prot
34f20 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 20 74 68 65 ect..........................the
34f40 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 20 20 20 20 20 .key..The.default.is............
34f60 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 73 65 5f 63 61 ..............util.passphrase_ca
34f80 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 20 69 66 20 63 llback..........""".........if.c
34fa0 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 72 ipher.is.None:.............retur
34fc0 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 70 68 65 72 28 n.m2.ec_key_write_bio_no_cipher(
34fe0 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 63 6b 29 0a 20 self.ec,.bio._ptr(),.callback)..
35000 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 20 3d 20 .......else:.............ciph.=.
35020 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).......
35040 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 20 20 20 ......if.ciph.is.None:..........
35060 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 74 20 73 75 63 .......raise.ValueError('not.suc
35080 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)..........
350a0 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 69 6f 28 73 65 ...return.m2.ec_key_write_bio(se
350c0 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 63 61 6c 6c 62 lf.ec,.bio._ptr(),.ciph(),.callb
350e0 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 2c 20 66 69 6c ack)......def.save_key(self,.fil
35100 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 20 20 20 20 20 e,.cipher='aes_128_cbc',........
35120 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
35140 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 41 se_callback):.........#.type:.(A
35160 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 62 6c 65 29 20 nyStr,.Optional[str],.Callable).
35180 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.
351a0 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 45 4d 20 66 6f the.key.pair.to.a.file.in.PEM.fo
351c0 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 4e 61 6d 65 rmat...........:param.file:.Name
351e0 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 2e 0a 0a 20 20 .of.filename.to.save.key.to.....
35200 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 72 69 63 20 63 ......:param.cipher:.Symmetric.c
35220 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 68 65 20 64 65 ipher.to.protect.the.key..The.de
35240 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 20 20 63 69 70 fault........................cip
35260 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 70 68 65 72 20 her.is.'aes_128_cbc'..If.cipher.
35280 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 20 20 20 20 20 is.None,.then...................
352a0 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 65 20 63 6c 65 .....the.key.is.saved.in.the.cle
352c0 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 6b 3a 20 41 20 ar...........:param.callback:.A.
352e0 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 20 69 Python.callable.object.that.is.i
35300 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 20 20 20 20 nvoked..........................
35320 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
35340 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 20 20 20 20 20 ch.to.protect...................
35360 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 74 20 69 73 0a .......the.key...The.default.is.
35380 20 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 69 6c 2e 70 61 .........................util.pa
353a0 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 22 22 22 0a 20 ssphrase_callback.........."""..
353c0 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 2c 20 27 .......with.BIO.openfile(file,.'
353e0 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 72 6e 20 wb').as.bio:.............return.
35400 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 65 72 2c 20 63 self.save_key_bio(bio,.cipher,.c
35420 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 6b 65 79 5f 62 allback)......def.save_pub_key_b
35440 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 20 28 io(self,.bio):.........#.type:.(
35460 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 20 20 BIO.BIO).->.int.........""".....
35480 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 6e 20 4d 32 ....Save.the.public.key.to.an.M2
354a0 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 4d 20 66 6f 72 Crypto.BIO.BIO.object.in.PEM.for
354c0 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
354e0 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
35500 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.
35520 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 2c 20 62 69 6f ec_key_write_pubkey(self.ec,.bio
35540 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 6b 65 79 28 73 ._ptr())......def.save_pub_key(s
35560 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 20 28 41 6e 79 elf,.file):.........#.type:.(Any
35580 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 20 Str).->.int.........""".........
355a0 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 6c 65 6e 61 6d Save.the.public.key.to.a.filenam
355c0 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 61 6d e.in.PEM.format...........:param
355e0 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 73 61 76 65 20 .file:.Name.of.filename.to.save.
35600 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 20 77 69 74 68 key.to..........""".........with
35620 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 73 20 62 69 6f .BIO.openfile(file,.'wb').as.bio
35640 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 6b 65 79 5f 77 :.............return.m2.ec_key_w
35660 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 74 72 28 29 29 rite_pubkey(self.ec,.bio._ptr())
35680 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 65 72 3d 27 61 ......def.as_pem(self,.cipher='a
356a0 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 70 61 73 73 70 es_128_cbc',.callback=util.passp
356c0 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 22 0a 20 20 20 hrase_callback):........."""....
356e0 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 61 73 20 61 20 .....Returns.the.key(pair).as.a.
35700 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 20 20 20 49 66 string.in.PEM.format..........If
35720 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 74 68 65 20 63 .no.password.is.passed.and.the.c
35740 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 74 73 20 77 69 ipher.is.set.........it.exits.wi
35760 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 20 20 77 69 74 th.error.........""".........wit
35780 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 3a 0a 20 20 20 h.BIO.MemoryBuffer().as.bio:....
357a0 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 62 69 6f 2c 20 .........self.save_key_bio(bio,.
357c0 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 20 20 20 72 65 cipher,.callback).............re
357e0 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 68 65 63 6b 5f turn.bio.read()......def._check_
35800 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 79 70 65 3a 20 key_type(self):.........#.type:.
35820 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 2e 65 63 5f 6b ().->.int.........return.m2.ec_k
35840 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 20 64 65 66 20 ey_type_check(self.ec)......def.
35860 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 74 79 70 65 3a check_key(self):.........#.type:
35880 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 65 63 5f .().->.int.........assert.m2.ec_
358a0 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 65 63 27 20 74 key_type_check(self.ec),."'ec'.t
358c0 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 5f ype.error".........return.m2.ec_
358e0 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 61 73 73 20 45 key_check_key(self.ec)...class.E
35900 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 65 63 74 20 69 C_pub(EC):......""".....Object.i
35920 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 79 2e 0a 20 20 nterface.to.an.EC.public.key....
35940 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 6e 74 61 74 69 ..((don't.like.this.implementati
35960 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 20 20 64 65 66 on.inheritance)).....""".....def
35980 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 3d 30 29 3a 0a .__init__(self,.ec,._pyfree=0):.
359a0 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 3e 20 4e 6f 6e ........#.type:.(EC,.int).->.Non
359c0 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 20 65 63 2c 20 e.........EC.__init__(self,.ec,.
359e0 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 20 4e 6f 6e 65 _pyfree).........self.der.=.None
35a00 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 20 20 20 20 64 ..#.type:.Optional[bytes]......d
35a20 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 20 74 79 70 65 ef.get_der(self):.........#.type
35a40 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 20 20 20 20 :.().->.bytes.........""".......
35a60 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 20 44 45 52 20 ..Returns.the.public.key.in.DER.
35a80 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 20 20 20 20 20 format.as.a.buffer.object.......
35aa0 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 63 68 65 63 6b ...""".........assert.self.check
35ac0 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'
35ae0 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 65 3a 0a 20 20 .........if.self.der.is.None:...
35b00 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 6b 65 79 5f 67 ..........self.der.=.m2.ec_key_g
35b20 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 20 20 20 20 72 et_public_der(self.ec).........r
35b40 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 5f 6b 65 79 28 eturn.self.der......def.get_key(
35b60 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 74 self):.........#.type:.().->.byt
35b80 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 72 6e 73 20 74 es.........""".........Returns.t
35ba0 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 69 6e 67 2e 0a he.public.key.as.a.byte.string..
35bc0 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.
35be0 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
35c00 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 6b 65 79 5f 67 ised'.........return.m2.ec_key_g
35c20 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 20 73 61 76 65 et_public_key(self.ec)......save
35c40 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 20 73 61 76 65 _key.=.EC.save_pub_key......save
35c60 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 62 69 6f 0a 0a _key_bio.=.EC.save_pub_key_bio..
35c80 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 20 23 20 74 79 .def.gen_params(curve):.....#.ty
35ca0 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 20 46 61 63 74 pe:.(int).->.EC.....""".....Fact
35cc0 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 20 45 43 20 70 ory.function.that.generates.EC.p
35ce0 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 74 65 73 20 61 arameters.and.....instantiates.a
35d00 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 0a 0a 20 20 20 .EC.object.from.the.output......
35d20 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 4f 70 65 6e 53 .:param.curve:.This.is.the.OpenS
35d40 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 0a 20 20 20 20 SL.nid.of.the.curve.to.use......
35d60 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 27 4e 49 44 27 """.....assert.curve.in.[x['NID'
35d80 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 6e 5f 63 75 72 ].for.x.in.m2.ec_get_builtin_cur
35da0 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 20 63 75 72 76 ves()],.\.........'Elliptic.curv
35dc0 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 69 73 20 73 79 e.%s.is.not.available.on.this.sy
35de0 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 69 64 32 73 6e stem.'.%.\.........m2.obj_nid2sn
35e00 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 5f 6b 65 79 5f (curve).....return.EC(m2.ec_key_
35e20 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 29 0a 0a 0a 64 new_by_curve_name(curve),.1)...d
35e40 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 75 74 69 6c 2e ef.load_key(file,.callback=util.
35e60 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 20 74 79 70 65 passphrase_callback):.....#.type
35e80 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 20 20 20 20 22 :.(AnyStr,.Callable).->.EC....."
35ea0 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 69 6e 73 "".....Factory.function.that.ins
35ec0 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 20 3a 70 61 72 tantiates.a.EC.object.......:par
35ee0 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 20 74 68 61 74 am.file:.Names.the.filename.that
35f00 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 61 74 69 6f 6e .contains.the.PEM.representation
35f20 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 20 6b 65 79 20 ..................of.the.EC.key.
35f40 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 20 50 79 74 68 pair.......:param.callback:.Pyth
35f60 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 62 65 20 on.callback.object.that.will.be.
35f80 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 69 66 20 invoked......................if.
35fa0 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 73 65 2d 70 72 the.EC.key.pair.is.passphrase-pr
35fc0 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 49 4f 2e 6f 70 otected......""".....with.BIO.op
35fe0 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 74 enfile(file).as.bio:.........ret
36000 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).
36020 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 67 2c 20 63 61 ..def.load_key_string(string,.ca
36040 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 29 llback=util.passphrase_callback)
36060 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 65 29 20 2d 3e :.....#.type:.(str,.Callable).->
36080 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 6b 65 79 20 70 .EC.....""".....Load.an.EC.key.p
360a0 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 72 61 6d 20 73 air.from.a.string.......:param.s
360c0 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 20 6b 65 79 20 tring:.String.containing.EC.key.
360e0 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 61 72 61 6d 20 pair.in.PEM.format.......:param.
36100 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 20 6f 62 6a 65 callback:.A.Python.callable.obje
36120 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 20 20 20 20 20 ct.that.is.invoked..............
36140 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 20 ........to.acquire.a.passphrase.
36160 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 20 20 20 20 20 with.which.to.unlock.the........
36180 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 75 6c 74 20 69 ..............key..The.default.i
361a0 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 0a 0a 20 20 20 s.util.passphrase_callback......
361c0 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 6a 65 63 74 2e .:return:.M2Crypto.EC.EC.object.
361e0 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 79 42 75 66 66 .....""".....with.BIO.MemoryBuff
36200 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 72 65 74 75 72 er(string).as.bio:.........retur
36220 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 0a 0a n.load_key_bio(bio,.callback)...
36240 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 75 def.load_key_bio(bio,.callback=u
36260 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 20 til.passphrase_callback):.....#.
36280 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 45 43 0a type:.(BIO.BIO,.Callable).->.EC.
362a0 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
362c0 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......
362e0 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 74 .:param.bio:.M2Crypto.BIO.object
36300 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 20 20 20 20 20 .that.contains.the.PEM..........
36320 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 45 43 20 .......representation.of.the.EC.
36340 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 20 key.pair.......:param.callback:.
36360 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 6c Python.callback.object.that.will
36380 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 20 .be.invoked.....................
363a0 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 73 .if.the.EC.key.pair.is.passphras
363c0 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 74 75 72 6e 20 e-protected......""".....return.
363e0 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 70 74 72 28 29 EC(m2.ec_key_read_bio(bio._ptr()
36400 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 70 75 62 5f 6b ,.callback),.1)...def.load_pub_k
36420 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 74 72 29 20 2d ey(file):.....#.type:.(AnyStr).-
36440 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 6e 20 45 43 20 >.EC_pub.....""".....Load.an.EC.
36460 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 20 20 20 20 3a public.key.from.filename.......:
36480 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 63 6f 6e param.file:.Name.of.filename.con
364a0 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 4d 0a 20 20 20 taining.EC.public.key.in.PEM....
364c0 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 3a 72 65 74 75 ..............format.......:retu
364e0 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 63 74 2e 0a 20 rn:.M2Crypto.EC.EC_pub.object...
36500 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 6c ...""".....with.BIO.openfile(fil
36520 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 6f 61 64 5f 70 e).as.bio:.........return.load_p
36540 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 6b 65 79 5f 73 ub_key_bio(bio)...def.load_key_s
36560 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 63 6b 3d 75 74 tring_pubkey(string,.callback=ut
36580 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 20 74 il.passphrase_callback):.....#.t
365a0 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 79 0a 20 20 20 ype:.(str,.Callable).->.PKey....
365c0 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 43 2e 50 4b 65 .""".....Load.an.M2Crypto.EC.PKe
365e0 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 72 69 6e 67 2e y.from.a.public.key.as.a.string.
36600 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 20 63 6f 6e 74 ......:param.string:.String.cont
36620 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 74 2e 0a 0a 20 aining.the.key.in.PEM.format....
36640 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
36660 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....
36680 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
366a0 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 63 74 20 assphrase.with.which.to.protect.
366c0 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 79 2e 0a 0a 20 the......................key....
366e0 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 79 20 6f 62 6a ...:return:.M2Crypto.EC.PKey.obj
36700 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 79 ect......""".....with.BIO.Memory
36720 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 72 Buffer(string).as.bio:.........r
36740 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 65 79 28 62 69 eturn.EVP.load_key_bio_pubkey(bi
36760 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 5f 6b 65 79 5f o,.callback)...def.load_pub_key_
36780 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 42 49 4f 29 20 bio(bio):.....#.type:.(BIO.BIO).
367a0 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 6e 20 45 43 ->.EC_pub.....""".....Load.an.EC
367c0 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 6f 2e 42 49 4f .public.key.from.an.M2Crypto.BIO
367e0 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 6f 3a 20 4d 32 .BIO.object.......:param.bio:.M2
36800 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 69 6e 69 6e 67 Crypto.BIO.BIO.object.containing
36820 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 20 20 20 20 20 .EC.public.key.in.PEM...........
36840 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 20 4d 32 43 72 ......format.......:return:.M2Cr
36860 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 22 22 22 0a 20 ypto.EC.EC_pub.object......"""..
36880 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 65 79 28 62 69 ...ec.=.m2.ec_key_read_pubkey(bi
368a0 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 3a 0a 20 20 20 o._ptr()).....if.ec.is.None:....
368c0 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 45 43 5f 70 75 .....ec_error().....return.EC_pu
368e0 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 20 20 20 20 23 b(ec,.1)...def.ec_error():.....#
36900 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 69 73 65 20 45 .type:.().->.ECError.....raise.E
36920 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 65 28 29 29 0a CError(Err.get_error_message()).
36940 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 3a 0a 20 20 20 ..def.pub_key_from_der(der):....
36960 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 20 20 20 20 22 .#.type:.(bytes).->.EC_pub....."
36980 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 45 52 2e 0a 20 "".....Create.EC_pub.from.DER...
369a0 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 2e 65 63 5f 6b ...""".....return.EC_pub(m2.ec_k
369c0 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 0a 0a 0a 64 65 ey_from_pubkey_der(der),.1)...de
369e0 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 2c 20 62 79 74 f.pub_key_from_params(curve,.byt
36a00 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 74 65 73 29 20 es):.....#.type:.(bytes,.bytes).
36a20 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 65 20 45 43 5f ->.EC_pub.....""".....Create.EC_
36a40 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 65 74 20 73 74 pub.from.curve.name.and.octet.st
36a60 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 5f 70 75 62 28 ring......""".....return.EC_pub(
36a80 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 73 28 63 75 72 m2.ec_key_from_pubkey_params(cur
36aa0 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 69 6c 74 69 6e ve,.bytes),.1)...def.get_builtin
36ac0 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 3e 20 54 75 70 _curves():.....#.type:.().->.Tup
36ae0 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 5d 5d 5d 0a 20 le[Dict[str,.Union[int,.str]]]..
36b00 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 5f 63 75 72 76 ...return.m2.ec_get_builtin_curv
36b20 65 73 28 29 0a 94 7d 94 28 8c 07 45 43 45 72 72 6f 72 94 6a 37 02 00 00 4b 14 4b 15 87 94 8c 0b es()..}.(..ECError.j7...K.K.....
36b40 45 43 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 8c 4b 90 87 94 8c 0a 45 43 2e 5f 5f 64 65 EC.__init__.j.%..K.K.....EC.__de
36b60 6c 5f 5f 94 6a 18 25 00 00 4b 92 4b 95 87 94 8c 0a 45 43 2e 5f 5f 6c 65 6e 5f 5f 94 6a 18 25 00 l__.j.%..K.K.....EC.__len__.j.%.
36b80 00 4b 97 4b 9a 87 94 8c 0a 45 43 2e 67 65 6e 5f 6b 65 79 94 6a 18 25 00 00 4b 9c 4b a7 87 94 8c .K.K.....EC.gen_key.j.%..K.K....
36ba0 06 45 43 2e 70 75 62 94 6a 18 25 00 00 4b a9 4b ac 87 94 8c 0b 45 43 2e 73 69 67 6e 5f 64 73 61 .EC.pub.j.%..K.K.....EC.sign_dsa
36bc0 94 6a 18 25 00 00 4b ae 4b b5 87 94 8c 0d 45 43 2e 76 65 72 69 66 79 5f 64 73 61 94 6a 18 25 00 .j.%..K.K.....EC.verify_dsa.j.%.
36be0 00 4b b7 4b be 87 94 8c 10 45 43 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 94 6a 18 25 00 00 4b .K.K.....EC.sign_dsa_asn1.j.%..K
36c00 c0 4b c3 87 94 8c 12 45 43 2e 76 65 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 94 6a 18 25 00 00 4b .K.....EC.verify_dsa_asn1.j.%..K
36c20 c5 4b c7 87 94 8c 11 45 43 2e 63 6f 6d 70 75 74 65 5f 64 68 5f 6b 65 79 94 6a 18 25 00 00 4b c9 .K.....EC.compute_dh_key.j.%..K.
36c40 4b d2 87 94 8c 0f 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4b d4 4b eb 87 K.....EC.save_key_bio.j.%..K.K..
36c60 94 8c 0b 45 43 2e 73 61 76 65 5f 6b 65 79 94 6a 18 25 00 00 4b ed 4b ff 87 94 8c 13 45 43 2e 73 ...EC.save_key.j.%..K.K.....EC.s
36c80 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d 01 01 4d 08 01 87 94 8c 0f 45 ave_pub_key_bio.j.%..M..M......E
36ca0 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 18 25 00 00 4d 0a 01 4d 12 01 87 94 8c 09 45 43 C.save_pub_key.j.%..M..M......EC
36cc0 2e 61 73 5f 70 65 6d 94 6a 18 25 00 00 4d 14 01 4d 1c 01 87 94 8c 12 45 43 2e 5f 63 68 65 63 6b .as_pem.j.%..M..M......EC._check
36ce0 5f 6b 65 79 5f 74 79 70 65 94 6a 18 25 00 00 4d 1e 01 4d 20 01 87 94 8c 0c 45 43 2e 63 68 65 63 _key_type.j.%..M..M......EC.chec
36d00 6b 5f 6b 65 79 94 6a 18 25 00 00 4d 22 01 4d 25 01 87 94 8c 02 45 43 94 6a 37 02 00 00 4b 84 4d k_key.j.%..M".M%.....EC.j7...K.M
36d20 25 01 87 94 8c 0f 45 43 5f 70 75 62 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 2e 01 4d 31 %.....EC_pub.__init__.j.%..M..M1
36d40 01 87 94 8c 0e 45 43 5f 70 75 62 2e 67 65 74 5f 64 65 72 94 6a 18 25 00 00 4d 33 01 4d 3b 01 87 .....EC_pub.get_der.j.%..M3.M;..
36d60 94 8c 0e 45 43 5f 70 75 62 2e 67 65 74 5f 6b 65 79 94 6a 18 25 00 00 4d 3d 01 4d 43 01 87 94 8c ...EC_pub.get_key.j.%..M=.MC....
36d80 06 45 43 5f 70 75 62 94 6a 37 02 00 00 4d 28 01 4d 47 01 87 94 8c 0a 67 65 6e 5f 70 61 72 61 6d .EC_pub.j7...M(.MG.....gen_param
36da0 73 94 6a 18 25 00 00 4d 4a 01 4d 55 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 18 25 00 00 4d s.j.%..MJ.MU.....load_key.j.%..M
36dc0 58 01 4d 64 01 87 94 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 18 25 00 00 4d 67 X.Md.....load_key_string.j.%..Mg
36de0 01 4d 75 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d 78 01 4d 83 01 .Mu.....load_key_bio.j.%..Mx.M..
36e00 87 94 8c 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 18 25 00 00 4d 86 01 4d 91 01 87 94 8c 16 ....load_pub_key.j.%..M..M......
36e20 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 18 25 00 00 4d 94 01 4d load_key_string_pubkey.j.%..M..M
36e40 a2 01 87 94 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d a5 01 4d ......load_pub_key_bio.j.%..M..M
36e60 b2 01 87 94 8c 08 65 63 5f 65 72 72 6f 72 94 6a 18 25 00 00 4d b5 01 4d b7 01 87 94 8c 10 70 75 ......ec_error.j.%..M..M......pu
36e80 62 5f 6b 65 79 5f 66 72 6f 6d 5f 64 65 72 94 6a 18 25 00 00 4d ba 01 4d bf 01 87 94 8c 13 70 75 b_key_from_der.j.%..M..M......pu
36ea0 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 6a 18 25 00 00 4d c2 01 4d c7 01 87 94 8c b_key_from_params.j.%..M..M.....
36ec0 12 67 65 74 5f 62 75 69 6c 74 69 6e 5f 63 75 72 76 65 73 94 6a 18 25 00 00 4d ca 01 4d cc 01 87 .get_builtin_curves.j.%..M..M...
36ee0 94 75 7d 94 28 8c 02 45 43 94 6a 60 02 00 00 8c 09 45 43 2e 61 73 5f 70 65 6d 94 6a 60 02 00 00 .u}.(..EC.j`.....EC.as_pem.j`...
36f00 8c 0c 45 43 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 60 02 00 00 8c 11 45 43 2e 63 6f 6d 70 75 74 65 ..EC.check_key.j`.....EC.compute
36f20 5f 64 68 5f 6b 65 79 94 6a 60 02 00 00 8c 0a 45 43 2e 67 65 6e 5f 6b 65 79 94 6a 60 02 00 00 8c _dh_key.j`.....EC.gen_key.j`....
36f40 06 45 43 2e 70 75 62 94 6a 60 02 00 00 8c 0b 45 43 2e 73 61 76 65 5f 6b 65 79 94 6a 60 02 00 00 .EC.pub.j`.....EC.save_key.j`...
36f60 8c 0f 45 43 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 0f 45 43 2e 73 61 76 65 ..EC.save_key_bio.j`.....EC.save
36f80 5f 70 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 13 45 43 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f _pub_key.j`.....EC.save_pub_key_
36fa0 62 69 6f 94 6a 60 02 00 00 8c 0b 45 43 2e 73 69 67 6e 5f 64 73 61 94 6a 60 02 00 00 8c 10 45 43 bio.j`.....EC.sign_dsa.j`.....EC
36fc0 2e 73 69 67 6e 5f 64 73 61 5f 61 73 6e 31 94 6a 60 02 00 00 8c 0d 45 43 2e 76 65 72 69 66 79 5f .sign_dsa_asn1.j`.....EC.verify_
36fe0 64 73 61 94 6a 60 02 00 00 8c 12 45 43 2e 76 65 72 69 66 79 5f 64 73 61 5f 61 73 6e 31 94 6a 60 dsa.j`.....EC.verify_dsa_asn1.j`
37000 02 00 00 6a 74 14 00 00 6a 60 02 00 00 8c 06 45 43 5f 70 75 62 94 6a 60 02 00 00 8c 0e 45 43 5f ...jt...j`.....EC_pub.j`.....EC_
37020 70 75 62 2e 67 65 74 5f 64 65 72 94 6a 60 02 00 00 8c 0e 45 43 5f 70 75 62 2e 67 65 74 5f 6b 65 pub.get_der.j`.....EC_pub.get_ke
37040 79 94 6a 60 02 00 00 8c 08 65 63 5f 65 72 72 6f 72 94 6a 60 02 00 00 8c 0a 67 65 6e 5f 70 61 72 y.j`.....ec_error.j`.....gen_par
37060 61 6d 73 94 6a 60 02 00 00 8c 12 67 65 74 5f 62 75 69 6c 74 69 6e 5f 63 75 72 76 65 73 94 6a 60 ams.j`.....get_builtin_curves.j`
37080 02 00 00 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 60 02 00 00 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 .....load_key.j`.....load_key_bi
370a0 6f 94 6a 60 02 00 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 60 02 00 00 8c 16 o.j`.....load_key_string.j`.....
370c0 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b 65 79 94 6a 60 02 00 00 8c 0c 6c 6f load_key_string_pubkey.j`.....lo
370e0 61 64 5f 70 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 ad_pub_key.j`.....load_pub_key_b
37100 69 6f 94 6a 60 02 00 00 8c 10 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 64 65 72 94 6a 60 02 00 00 io.j`.....pub_key_from_der.j`...
37120 8c 13 70 75 62 5f 6b 65 79 5f 66 72 6f 6d 5f 70 61 72 61 6d 73 94 6a 60 02 00 00 75 8c 0b 4d 32 ..pub_key_from_params.j`...u..M2
37140 43 72 79 70 74 6f 2e 45 43 94 74 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 56 50 94 28 58 76 43 00 Crypto.EC.t...M2Crypto.EVP.(XvC.
37160 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 74 65 .from.__future__.import.absolute
37180 5f 69 6d 70 6f 72 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 _import.."""M2Crypto.wrapper.for
371a0 20 4f 70 65 6e 53 53 4c 20 45 56 50 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 .OpenSSL.EVP.API...Copyright.(c)
371c0 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 20 41 6c 6c 20 72 .1999-2004.Ng.Pheng.Siong..All.r
371e0 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 43 6f 70 79 72 69 ights.reserved...Portions.Copyri
37200 67 68 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 ght.(c).2004-2007.Open.Source.Ap
37220 70 6c 69 63 61 74 69 6f 6e 73 20 46 6f 75 6e 64 61 74 69 6f 6e 2e 0a 41 75 74 68 6f 72 3a 20 48 plications.Foundation..Author:.H
37240 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 6c 6f 67 67 69 eikki.Toivonen."""..import.loggi
37260 6e 67 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 2c 20 45 72 72 ng.from.M2Crypto.import.BIO,.Err
37280 2c 20 52 53 41 2c 20 6d 32 2c 20 75 74 69 6c 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f ,.RSA,.m2,.util.from.typing.impo
372a0 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..#
372c0 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('
372e0 45 56 50 27 29 0a 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 EVP')...class.EVPError(ValueErro
37300 72 29 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 6d 32 2e 65 76 70 5f 69 6e 69 74 28 45 56 50 45 72 r):.....pass...m2.evp_init(EVPEr
37320 72 6f 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 ror)...def.pbkdf2(password,.salt
37340 2c 20 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 ,.iter,.keylen):.....#.type:.(by
37360 74 65 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 tes,.bytes,.int,.int).->.bytes..
37380 20 20 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 ...""".....Derive.a.key.from.pas
373a0 73 77 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 sword.using.PBKDF2.algorithm.spe
373c0 63 69 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 cified.in.RFC.2898.......:param.
373e0 70 61 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 password:.Derive.the.key.from.th
37400 69 73 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 is.password......:param.salt:...
37420 20 20 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 ..Salt......:param.iter:.....Num
37440 62 65 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 ber.of.iterations.to.perform....
37460 20 20 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 ..:param.keylen:...Length.of.key
37480 20 74 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 .to.produce......:return:.......
374a0 20 20 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 ..Key......""".....return.m2.pkc
374c0 73 35 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 s5_pbkdf2_hmac_sha1(password,.sa
374e0 6c 74 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 lt,.iter,.keylen)...class.Messag
37500 65 44 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 eDigest(object):.....""".....Mes
37520 73 61 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 sage.Digest.....""".....m2_md_ct
37540 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 20 64 65 66 x_free.=.m2.md_ctx_free......def
37560 20 5f 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 .__init__(self,.algo):.........#
37580 20 74 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 .type:.(str).->.None.........md.
375a0 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 20 20 23 20 74 79 70 =.getattr(m2,.algo,.None)..#.typ
375c0 65 3a 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 e:.Optional[Callable].........if
375e0 20 6d 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 .md.is.None:.............#.if.th
37600 65 20 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 e.digest.algorithm.isn't.found.a
37620 73 20 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 s.an.attribute.of.the.m2........
37640 20 20 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 .....#.module,.try.to.look.up.th
37660 65 20 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 e.digest.using.get_digestbyname(
37680 29 0a 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 ).............self.md.=.m2.get_d
376a0 69 67 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 igestbyname(algo).........else:.
376c0 20 20 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 ............self.md.=.md()......
376e0 20 20 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 ...self.ctx.=.m2.md_ctx_new()...
37700 20 20 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 ......m2.digest_init(self.ctx,.s
37720 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 6c 66 29 3a 0a elf.md)......def.__del__(self):.
37740 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......
37760 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 4e 6f 6e 65 29 ...if.getattr(self,.'ctx',.None)
37780 3a 0a 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 :.............self.m2_md_ctx_fre
377a0 65 28 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 e(self.ctx)......def.update(self
377c0 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 29 ,.data):.........#.type:.(bytes)
377e0 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 64 20 .->.int.........""".........Add.
37800 64 61 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 data.to.be.digested...........:r
37820 65 74 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 eturn:.-1.for.Python.error,.1.fo
37840 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 66 61 69 6c 75 72 65 r.success,.0.for.OpenSSL.failure
37860 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.
37880 64 69 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 digest_update(self.ctx,.data)...
378a0 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 72 65 74 75 ...def.final(self):.........retu
378c0 72 6e 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 rn.m2.digest_final(self.ctx)....
378e0 20 20 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 ..#.Deprecated......digest.=.fin
37900 61 6c 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 al...class.HMAC(object):......m2
37920 5f 68 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 _hmac_ctx_free.=.m2.hmac_ctx_fre
37940 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 6b 65 79 2c 20 61 e......def.__init__(self,.key,.a
37960 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 62 79 lgo='sha1'):.........#.type:.(by
37980 74 65 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 tes,.str).->.None.........md.=.g
379a0 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 20 20 20 20 69 etattr(m2,.algo,.None).........i
379c0 66 20 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 f.md.is.None:.............raise.
379e0 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 69 74 68 6d 27 2c 20 ValueError('unknown.algorithm',.
37a00 61 6c 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 algo).........self.md.=.md()....
37a20 20 20 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 .....self.ctx.=.m2.hmac_ctx_new(
37a40 29 0a 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 ).........m2.hmac_init(self.ctx,
37a60 20 6b 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 .key,.self.md)......def.__del__(
37a80 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 6e self):.........#.type:.().->.Non
37aa0 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 63 74 78 27 e.........if.getattr(self,.'ctx'
37ac0 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 2e 6d 32 5f 68 6d 61 ,.None):.............self.m2_hma
37ae0 63 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 20 72 65 c_ctx_free(self.ctx)......def.re
37b00 73 65 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 set(self,.key):.........#.type:.
37b20 28 62 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 (bytes).->.None.........m2.hmac_
37b40 69 6e 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 init(self.ctx,.key,.self.md)....
37b60 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 0a 20 20 20 20 20 20 ..def.update(self,.data):.......
37b80 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 20 20 20 20 20 ..#.type:.(bytes).->.None.......
37ba0 20 20 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 ..m2.hmac_update(self.ctx,.data)
37bc0 0a 0a 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 ......def.final(self):.........#
37be0 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 72 65 74 75 72 .type:.().->.bytes.........retur
37c00 6e 20 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 n.m2.hmac_final(self.ctx)......d
37c20 69 67 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 igest.=.final...def.hmac(key,.da
37c40 74 61 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 ta,.algo='sha1'):.....#.type:.(b
37c60 79 74 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 ytes,.bytes,.str).->.bytes.....m
37c80 64 20 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 d.=.getattr(m2,.algo,.None).....
37ca0 69 66 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 if.md.is.None:.........raise.Val
37cc0 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 67 ueError('unknown.algorithm',.alg
37ce0 6f 29 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 o).....return.m2.hmac(key,.data,
37d00 20 6d 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 .md())...class.Cipher(object):..
37d20 20 20 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 ....m2_cipher_ctx_free.=.m2.ciph
37d40 65 72 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 er_ctx_free......def.__init__(se
37d60 6c 66 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 lf,.alg,.key,.iv,.op,.key_as_byt
37d80 65 73 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 es=0,.d='md5',..................
37da0 73 61 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 salt=b'12345678',.i=1,.padding=1
37dc0 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 62 79 74 65 73 2c 20 ):.........#.type:.(str,.bytes,.
37de0 62 79 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 bytes,.object,.int,.str,.bytes,.
37e00 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 63 69 70 68 65 72 int,.int).->.None.........cipher
37e20 20 3d 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 .=.getattr(m2,.alg,.None).......
37e40 20 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 ..if.cipher.is.None:............
37e60 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 63 69 70 68 65 .raise.ValueError('unknown.ciphe
37e80 72 27 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 r',.alg).........self.cipher.=.c
37ea0 69 70 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 ipher().........if.key_as_bytes:
37ec0 0a 20 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 .............kmd.=.getattr(m2,.d
37ee0 2c 20 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 ,.None).............if.kmd.is.No
37f00 6e 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 ne:.................raise.ValueE
37f20 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 73 74 27 2c 20 64 rror('unknown.message.digest',.d
37f40 29 0a 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 ).............key.=.m2.bytes_to_
37f60 6b 65 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 key(self.cipher,.kmd(),.key,.sal
37f80 74 2c 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 t,.iv,.i).........self.ctx.=.m2.
37fa0 63 69 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 cipher_ctx_new().........m2.ciph
37fc0 65 72 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 er_init(self.ctx,.self.cipher,.k
37fe0 65 79 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 ey,.iv,.op).........self.set_pad
38000 64 69 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 ding(padding).........del.key...
38020 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):.........#.
38040 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
38060 74 74 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 ttr(self,.'ctx',.None):.........
38080 20 20 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 ....self.m2_cipher_ctx_free(self
380a0 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 64 61 74 61 .ctx)......def.update(self,.data
380c0 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 62 79 ):.........#.type:.(bytes).->.by
380e0 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 75 70 64 tes.........return.m2.cipher_upd
38100 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 64 65 66 20 66 69 6e ate(self.ctx,.data)......def.fin
38120 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 20 28 29 20 2d 3e 20 al(self):.........#.type:.().->.
38140 62 79 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 bytes.........return.m2.cipher_f
38160 69 6e 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 inal(self.ctx)......def.set_padd
38180 69 6e 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 ing(self,.padding=1):.........#.
381a0 74 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 type:.(int).->.int........."""..
381c0 20 20 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 .......Actually.always.return.1.
381e0 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 63 69 ........""".........return.m2.ci
38200 70 68 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 pher_set_padding(self.ctx,.paddi
38220 6e 67 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 ng)...class.PKey(object):.....""
38240 22 0a 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 ".....Public.Key....."""......m2
38260 5f 70 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 _pkey_free.=.m2.pkey_free.....m2
38280 5f 6d 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 _md_ctx_free.=.m2.md_ctx_free...
382a0 20 20 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 ...def.__init__(self,.pkey=None,
382c0 20 5f 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 ._pyfree=0,.md='sha1'):.........
382e0 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 2c 20 73 #.type:.(Optional[bytes],.int,.s
38300 74 72 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 tr).->.None.........if.pkey.is.n
38320 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 70 6b 65 79 20 3d ot.None:.............self.pkey.=
38340 20 70 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 .pkey..#.type:.bytes............
38360 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 20 20 20 20 20 20 .self._pyfree.=._pyfree.........
38380 65 6c 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 else:.............self.pkey.=.m2
383a0 2e 70 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 .pkey_new().............self._py
383c0 66 72 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 free.=.1.........self._set_conte
383e0 78 74 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 xt(md)......def.__del__(self):..
38400 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.......
38420 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 2c 20 30 29 ..if.getattr(self,.'_pyfree',.0)
38440 3a 0a 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 :.............self.m2_pkey_free(
38460 73 65 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 self.pkey).........if.getattr(se
38480 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 20 20 73 65 lf,.'ctx',.None):.............se
384a0 6c 66 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 lf.m2_md_ctx_free(self.ctx).....
384c0 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.
384e0 73 65 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 self.pkey......def._set_context(
38500 73 65 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 self,.md):.........#.type:.(str)
38520 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 64 3a 0a 20 20 20 20 .->.None.........if.not.md:.....
38540 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 65 ........self.md.=.None.........e
38560 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 64 61 20 3d 20 67 65 74 61 74 74 72 28 6d lse:.............mda.=.getattr(m
38580 32 2c 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 2,.md,.None)..#.type:.Optional[C
385a0 61 6c 6c 61 62 6c 65 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d 64 61 20 69 73 20 4e allable].............if.mda.is.N
385c0 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 65 20 56 61 6c 75 65 one:.................raise.Value
385e0 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 73 74 27 2c 20 Error('unknown.message.digest',.
38600 6d 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 64 20 3d 20 6d 64 61 28 29 0a md).............self.md.=.mda().
38620 20 20 20 20 20 20 20 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 ........self.ctx.=.m2.md_ctx_new
38640 28 29 20 20 23 23 20 74 79 70 65 3a 20 43 6f 6e 74 65 78 74 0a 0a 20 20 20 20 64 65 66 20 72 65 ()..##.type:.Context......def.re
38660 73 65 74 5f 63 6f 6e 74 65 78 74 28 73 65 6c 66 2c 20 6d 64 3d 27 73 68 61 31 27 29 3a 0a 20 20 set_context(self,.md='sha1'):...
38680 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 0a 20 20 20 20 ......#.type:.(str).->.None.....
386a0 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 52 65 73 65 74 20 69 6e 74 65 72 6e 61 6c 20 6d ....""".........Reset.internal.m
386c0 65 73 73 61 67 65 20 64 69 67 65 73 74 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 essage.digest.context...........
386e0 3a 70 61 72 61 6d 20 6d 64 3a 20 54 68 65 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 61 6c :param.md:.The.message.digest.al
38700 67 6f 72 69 74 68 6d 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 gorithm..........""".........sel
38720 66 2e 5f 73 65 74 5f 63 6f 6e 74 65 78 74 28 6d 64 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e f._set_context(md)......def.sign
38740 5f 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 20 _init(self):.........#.type:.().
38760 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 49 6e 69 74 ->.None.........""".........Init
38780 69 61 6c 69 73 65 20 73 69 67 6e 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 74 68 20 73 65 ialise.signing.operation.with.se
387a0 6c 66 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 69 67 6e 5f lf..........""".........m2.sign_
387c0 69 6e 69 74 28 73 65 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 init(self.ctx,.self.md)......def
387e0 20 73 69 67 6e 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 .sign_update(self,.data):.......
38800 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 20 20 20 20 20 ..#.type:.(bytes).->.None.......
38820 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 46 65 65 64 20 64 61 74 61 20 74 6f 20 73 69 67 6e 69 ..""".........Feed.data.to.signi
38840 6e 67 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 ng.operation...........:param.da
38860 74 61 3a 20 44 61 74 61 20 74 6f 20 62 65 20 73 69 67 6e 65 64 2e 0a 20 20 20 20 20 20 20 20 22 ta:.Data.to.be.signed.........."
38880 22 22 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 69 67 6e 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 "".........m2.sign_update(self.c
388a0 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 5f 66 69 6e 61 6c 28 73 65 tx,.data)......def.sign_final(se
388c0 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
388e0 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 72 6e 20 73 69 67 6e .........""".........Return.sign
38900 61 74 75 72 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 73 69 67 ature...........:return:.The.sig
38920 6e 61 74 75 72 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 nature..........""".........retu
38940 72 6e 20 6d 32 2e 73 69 67 6e 5f 66 69 6e 61 6c 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 6c 66 2e rn.m2.sign_final(self.ctx,.self.
38960 70 6b 65 79 29 0a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 74 65 64 0a 20 20 20 20 75 70 64 61 pkey)......#.Deprecated.....upda
38980 74 65 20 3d 20 73 69 67 6e 5f 75 70 64 61 74 65 0a 20 20 20 20 66 69 6e 61 6c 20 3d 20 73 69 67 te.=.sign_update.....final.=.sig
389a0 6e 5f 66 69 6e 61 6c 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 5f 69 6e 69 74 28 73 65 6c n_final......def.verify_init(sel
389c0 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 20 f):.........#.type:.().->.None..
389e0 20 20 20 20 20 20 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 .......""".........Initialise.si
38a00 67 6e 61 74 75 72 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 77 gnature.verification.operation.w
38a20 69 74 68 20 73 65 6c 66 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 6d 32 ith.self..........""".........m2
38a40 2e 76 65 72 69 66 79 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 6c 66 2e 6d 64 29 0a .verify_init(self.ctx,.self.md).
38a60 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 5f 75 70 64 61 74 65 28 73 65 6c 66 2c 20 64 61 74 .....def.verify_update(self,.dat
38a80 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 3e 20 69 a):.........#.type:.(bytes).->.i
38aa0 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 46 65 65 64 20 64 61 74 61 nt.........""".........Feed.data
38ac0 20 74 6f 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 2e 0a 0a 20 20 20 .to.verification.operation......
38ae0 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 76 65 72 .....:param.data:.Data.to.be.ver
38b00 69 66 69 65 64 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 2d 31 20 6f 6e 20 50 79 ified..........:return:.-1.on.Py
38b20 74 68 6f 6e 20 65 72 72 6f 72 2c 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20 30 20 66 6f 72 thon.error,.1.for.success,.0.for
38b40 20 4f 70 65 6e 53 53 4c 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .OpenSSL.error........."""......
38b60 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 76 65 72 69 66 79 5f 75 70 64 61 74 65 28 73 65 6c 66 2e ...return.m2.verify_update(self.
38b80 63 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 5f 66 69 6e 61 6c ctx,.data)......def.verify_final
38ba0 28 73 65 6c 66 2c 20 73 69 67 6e 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 (self,.sign):.........#.type:.(b
38bc0 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 20 20 20 20 20 20 20 ytes).->.int........."""........
38be0 20 52 65 74 75 72 6e 20 72 65 73 75 6c 74 20 6f 66 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2e 0a .Return.result.of.verification..
38c00 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 69 67 6e 3a 20 53 69 67 6e 61 74 75 72 65 20 .........:param.sign:.Signature.
38c20 74 6f 20 75 73 65 20 66 6f 72 20 76 65 72 69 66 69 63 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 to.use.for.verification.........
38c40 3a 72 65 74 75 72 6e 3a 20 52 65 73 75 6c 74 20 6f 66 20 76 65 72 69 66 69 63 61 74 69 6f 6e 3a :return:.Result.of.verification:
38c60 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 72 65 2c 20 2d .1.for.success,.0.for.failure,.-
38c80 31 20 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 20 65 72 72 6f 1.on..................other.erro
38ca0 72 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 r..........""".........return.m2
38cc0 2e 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 73 65 6c 66 2e 63 74 78 2c 20 73 69 67 6e 2c 20 73 65 .verify_final(self.ctx,.sign,.se
38ce0 6c 66 2e 70 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 20 64 69 67 65 73 74 5f 73 69 67 6e 5f 69 6e lf.pkey)......def.digest_sign_in
38d00 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 20 2d 3e 20 it(self):.........#.type:.().->.
38d20 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 49 6e 69 74 69 61 6c None.........""".........Initial
38d40 69 73 65 20 64 69 67 65 73 74 20 73 69 67 6e 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 74 ise.digest.signing.operation.wit
38d60 68 20 73 65 6c 66 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 73 h.self..........""".........if.s
38d80 65 6c 66 2e 6d 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 2e 64 elf.md.is.None:.............m2.d
38da0 69 67 65 73 74 5f 73 69 67 6e 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 6c 66 2e 70 igest_sign_init(self.ctx,.self.p
38dc0 6b 65 79 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 key).........else:.............m
38de0 32 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 4e 6f 6e 2.digest_sign_init(self.ctx,.Non
38e00 65 2c 20 73 65 6c 66 2e 6d 64 2c 20 4e 6f 6e 65 2c 20 73 65 6c 66 2e 70 6b 65 79 29 0a 0a 20 20 e,.self.md,.None,.self.pkey)....
38e20 20 20 64 65 66 20 64 69 67 65 73 74 5f 73 69 67 6e 5f 75 70 64 61 74 65 28 73 65 6c 66 2c 20 64 ..def.digest_sign_update(self,.d
38e40 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 3e ata):.........#.type:.(bytes).->
38e60 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 65 65 64 20 64 .None.........""".........Feed.d
38e80 61 74 61 20 74 6f 20 64 69 67 65 73 74 20 73 69 67 6e 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 2e ata.to.digest.signing.operation.
38ea0 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 6f 20 62 ..........:param.data:.Data.to.b
38ec0 65 20 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 e.signed..........""".........m2
38ee0 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 75 70 64 61 74 65 28 73 65 6c 66 2e 63 74 78 2c 20 64 61 .digest_sign_update(self.ctx,.da
38f00 74 61 29 0a 0a 20 20 20 20 64 65 66 20 64 69 67 65 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 28 73 ta)......def.digest_sign_final(s
38f20 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 74 65 elf):.........#.type:.().->.byte
38f40 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 72 6e 20 73 69 67 s.........""".........Return.sig
38f60 6e 61 74 75 72 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 73 69 nature...........:return:.The.si
38f80 67 6e 61 74 75 72 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 gnature..........""".........ret
38fa0 75 72 6e 20 6d 32 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 28 73 65 6c 66 2e 63 74 urn.m2.digest_sign_final(self.ct
38fc0 78 29 0a 0a 20 20 20 20 64 65 66 20 64 69 67 65 73 74 5f 73 69 67 6e 28 73 65 6c 66 2c 20 64 61 x)......def.digest_sign(self,.da
38fe0 74 61 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 ta):.........#.type:.().->.bytes
39000 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 72 6e 20 73 69 67 6e .........""".........Return.sign
39020 61 74 75 72 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 73 69 67 ature...........:return:.The.sig
39040 6e 61 74 75 72 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 69 66 20 nature.........."""..........if.
39060 6d 32 2e 4f 50 45 4e 53 53 4c 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 3c 20 30 78 31 30 m2.OPENSSL_VERSION_NUMBER.<.0x10
39080 31 30 31 30 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4e 6f 74 49 6d 70 101000:.............raise.NotImp
390a0 6c 65 6d 65 6e 74 65 64 28 27 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65 71 75 69 72 65 73 20 4f lemented('This.method.requires.O
390c0 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 27 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 penSSL.version.'.+..............
390e0 20 20 20 20 20 20 20 27 31 2e 31 2e 31 20 6f 72 20 67 72 65 61 74 65 72 2e 27 29 0a 0a 20 20 20 .......'1.1.1.or.greater.').....
39100 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 69 67 65 73 74 5f 73 69 67 6e 28 73 65 6c 66 2e .....return.m2.digest_sign(self.
39120 63 74 78 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 64 69 67 65 73 74 5f 76 65 72 69 66 ctx,.data)......def.digest_verif
39140 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 79 70 65 3a 20 28 29 y_init(self):.........#.type:.()
39160 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 49 6e 69 .->.None.........""".........Ini
39180 74 69 61 6c 69 73 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 77 tialise.verification.operation.w
391a0 69 74 68 20 73 65 6c 66 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 ith.self..........""".........if
391c0 20 73 65 6c 66 2e 6d 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 .self.md.is.None:.............m2
391e0 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 .digest_verify_init(self.ctx,.se
39200 6c 66 2e 70 6b 65 79 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 lf.pkey).........else:..........
39220 20 20 20 6d 32 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 69 6e 69 74 28 73 65 6c 66 2e 63 74 ...m2.digest_verify_init(self.ct
39240 78 2c 20 4e 6f 6e 65 2c 20 73 65 6c 66 2e 6d 64 2c 20 4e 6f 6e 65 2c 20 73 65 6c 66 2e 70 6b 65 x,.None,.self.md,.None,.self.pke
39260 79 29 0a 0a 20 20 20 20 64 65 66 20 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 75 70 64 61 74 65 y)......def.digest_verify_update
39280 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 62 (self,.data):.........#.type:.(b
392a0 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 20 20 20 20 20 20 20 ytes).->.int........."""........
392c0 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 6e 20 6f 70 65 72 61 .Feed.data.to.verification.opera
392e0 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 61 3a 20 44 61 74 61 tion...........:param.data:.Data
39300 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 3a 72 65 74 75 72 6e .to.be.verified..........:return
39320 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 6f 72 20 73 75 63 63 :.-1.on.Python.error,.1.for.succ
39340 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 20 20 20 20 20 20 20 ess,.0.for.OpenSSL.error........
39360 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 67 65 73 74 5f 76 65 .""".........return.m2.digest_ve
39380 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).....
393a0 20 64 65 66 20 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 73 65 6c 66 2c 20 73 .def.digest_verify_final(self,.s
393c0 69 67 6e 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 ign):.........#.type:.(bytes).->
393e0 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 46 65 65 64 20 64 61 .int.........""".........Feed.da
39400 74 61 20 74 6f 20 64 69 67 65 73 74 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6f 70 65 72 61 74 ta.to.digest.verification.operat
39420 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 69 67 6e 3a 20 53 69 67 6e 61 ion...........:param.sign:.Signa
39440 74 75 72 65 20 74 6f 20 75 73 65 20 66 6f 72 20 76 65 72 69 66 69 63 61 74 69 6f 6e 0a 20 20 20 ture.to.use.for.verification....
39460 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 65 73 75 6c 74 20 6f 66 20 76 65 72 69 66 69 63 61 .....:return:.Result.of.verifica
39480 74 69 6f 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 tion:.1.for.success,.0.for.failu
394a0 72 65 2c 20 2d 31 20 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 re,.-1.on..................other
394c0 20 65 72 72 6f 72 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 .error..........""".........retu
394e0 72 6e 20 6d 32 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 66 69 6e 61 6c 28 73 65 6c 66 2e 63 rn.m2.digest_verify_final(self.c
39500 74 78 2c 20 73 69 67 6e 29 0a 0a 20 20 20 20 64 65 66 20 64 69 67 65 73 74 5f 76 65 72 69 66 79 tx,.sign)......def.digest_verify
39520 28 73 65 6c 66 2c 20 73 69 67 6e 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 (self,.sign,.data):.........#.ty
39540 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 20 pe:.(bytes).->.int........."""..
39560 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 72 65 73 75 6c 74 20 6f 66 20 76 65 72 69 66 69 63 61 .......Return.result.of.verifica
39580 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 69 67 6e 3a 20 53 69 67 6e tion...........:param.sign:.Sign
395a0 61 74 75 72 65 20 74 6f 20 75 73 65 20 66 6f 72 20 76 65 72 69 66 69 63 61 74 69 6f 6e 0a 20 20 ature.to.use.for.verification...
395c0 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 76 65 ......:param.data:.Data.to.be.ve
395e0 72 69 66 69 65 64 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 65 73 75 6c 74 20 rified..........:return:.Result.
39600 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 20 of.verification:.1.for.success,.
39620 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 20 0.for.failure,.-1.on............
39640 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 0a ......other.error.........."""..
39660 20 20 20 20 20 20 20 20 69 66 20 6d 32 2e 4f 50 45 4e 53 53 4c 5f 56 45 52 53 49 4f 4e 5f 4e 55 ........if.m2.OPENSSL_VERSION_NU
39680 4d 42 45 52 20 3c 20 30 78 31 30 31 30 31 30 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 MBER.<.0x10101000:.............r
396a0 61 69 73 65 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 28 27 54 68 69 73 20 6d 65 74 68 6f 64 aise.NotImplemented('This.method
396c0 20 72 65 71 75 69 72 65 73 20 4f 70 65 6e 53 53 4c 20 76 65 72 73 69 6f 6e 20 27 20 2b 0a 20 20 .requires.OpenSSL.version.'.+...
396e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 31 2e 31 2e 31 20 6f 72 20 67 72 65 61 ..................'1.1.1.or.grea
39700 74 65 72 2e 27 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 64 69 67 65 73 74 ter.')..........return.m2.digest
39720 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 63 74 78 2c 20 73 69 67 6e 2c 20 64 61 74 61 29 0a 0a 20 _verify(self.ctx,.sign,.data)...
39740 20 20 20 64 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 ...def.assign_rsa(self,.rsa,.cap
39760 74 75 72 65 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 ture=1):.........#.type:.(RSA.RS
39780 41 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 A,.int).->.int........."""......
397a0 20 20 20 41 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 ...Assign.the.RSA.key.pair.to.se
397c0 6c 66 2e 0a 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 lf...........:param.rsa:.M2Crypt
397e0 6f 2e 52 53 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 o.RSA.RSA.object.to.be.assigned.
39800 74 6f 20 73 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 to.self...........:param.capture
39820 3a 20 49 66 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 :.If.true.(default),.this.PKey.o
39840 62 6a 65 63 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 bject.will.own.the.RSA..........
39860 20 20 20 20 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 ...............object,.meaning.t
39880 68 61 74 20 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 hat.once.the.PKey.object.gets...
398a0 20 20 20 20 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 ......................deleted.it
398c0 20 69 73 20 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 .is.no.longer.safe.to.use.the.RS
398e0 41 20 6f 62 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 A.object...........:return:.Retu
39900 72 6e 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 69 6c 75 rn.1.for.success.and.0.for.failu
39920 72 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 20 63 61 70 74 75 re..........""".........if.captu
39940 72 65 3a 0a 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 re:.............ret.=.m2.pkey_as
39960 73 69 67 6e 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 sign_rsa(self.pkey,.rsa.rsa)....
39980 20 20 20 20 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 .........if.ret:................
399a0 20 72 73 61 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 .rsa._pyfree.=.0.........else:..
399c0 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 73 65 74 31 5f 72 73 ...........ret.=.m2.pkey_set1_rs
399e0 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 20 72 65 a(self.pkey,.rsa.rsa).........re
39a00 74 75 72 6e 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 turn.ret......def.get_rsa(self):
39a20 0a 20 20 20 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 .........#.type:.().->.RSA.RSA_p
39a40 75 62 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 72 6e 20 74 68 ub.........""".........Return.th
39a60 65 20 75 6e 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 e.underlying.RSA.key.if.that.is.
39a80 77 68 61 74 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 what.the.EVP.........instance.is
39aa0 20 68 6f 6c 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 .holding..........""".........rs
39ac0 61 5f 70 74 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 a_ptr.=.m2.pkey_get1_rsa(self.pk
39ae0 65 79 29 0a 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 ey)..........rsa.=.RSA.RSA_pub(r
39b00 73 61 5f 70 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 sa_ptr,.1).........return.rsa...
39b20 20 20 20 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 63 69 70 68 ...def.save_key(self,.file,.ciph
39b40 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 20 20 er='aes_128_cbc',...............
39b60 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 6c 6c ...callback=util.passphrase_call
39b80 62 61 63 6b 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 back):.........#.type:.(AnyStr,.
39ba0 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 6e 74 0a Optional[str],.Callable).->.int.
39bc0 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 6b 65 79 ........""".........Save.the.key
39be0 20 70 61 69 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 .pair.to.a.file.in.PEM.format...
39c00 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 20 66 69 6c ........:param.file:.Name.of.fil
39c20 65 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 e.to.save.key.to...........:para
39c40 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
39c60 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......
39c80 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
39ca0 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
39cc0 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
39ce0 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.........
39d00 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
39d20 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.....
39d40 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.
39d60 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
39d80 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.
39da0 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.............
39dc0 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
39de0 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 77 69 74 68 20 lback..........""".........with.
39e00 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 73 20 62 69 6f 3a BIO.openfile(file,.'wb').as.bio:
39e20 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 73 61 76 65 5f 6b 65 .............return.self.save_ke
39e40 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 0a 0a 20 20 y_bio(bio,.cipher,.callback)....
39e60 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
39e80 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',.............
39ea0 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
39ec0 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
39ee0 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).
39f00 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.
39f20 74 68 65 20 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 the.key.pair.to.the.M2Crypto.BIO
39f40 20 6f 62 6a 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 .object.'bio'.in.PEM.format.....
39f60 20 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 20 6f ......:param.bio:.M2Crypto.BIO.o
39f80 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 3a bject.to.save.key.to...........:
39fa0 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 74 param.cipher:.Symmetric.cipher.t
39fc0 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 20 o.protect.the.key..The.default..
39fe0 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 20 ......................cipher.is.
3a000 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 65 'aes_128_cbc'..If.cipher.is.None
3a020 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 68 ,.then........................th
3a040 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 20 e.key.is.saved.in.the.clear.....
3a060 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 20 ......:param.callback:.A.Python.
3a080 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 0a callable.object.that.is.invoked.
3a0a0 20 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 75 .........................to.acqu
3a0c0 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 70 ire.a.passphrase.with.which.to.p
3a0e0 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 20 rotect..........................
3a100 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 20 20 the.key..The.default.is.........
3a120 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 73 65 .................util.passphrase
3a140 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 20 69 _callback..........""".........i
3a160 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 65 f.cipher.is.None:.............re
3a180 74 75 72 6e 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 turn.m2.pkey_write_pem_no_cipher
3a1a0 28 73 65 6c 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 (self.pkey,.bio._ptr(),.callback
3a1c0 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 6f 74 ).........else:.............prot
3a1e0 6f 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 o.=.getattr(m2,.cipher,.None)...
3a200 20 20 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 ..........if.proto.is.None:.....
3a220 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
3a240 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 20 .such.cipher.%s'.%.cipher)......
3a260 20 20 20 20 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 .......return.m2.pkey_write_pem(
3a280 73 65 6c 66 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 self.pkey,.bio._ptr(),.proto(),.
3a2a0 63 61 6c 6c 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 callback)......def.as_pem(self,.
3a2c0 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 75 cipher='aes_128_cbc',.callback=u
3a2e0 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 20 til.passphrase_callback):.......
3a300 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 62 ..#.type:.(Optional[str],.Callab
3a320 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 20 le).->.bytes........."""........
3a340 20 52 65 74 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 .Return.key.in.PEM.format.in.a.s
3a360 74 72 69 6e 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 tring...........:param.cipher:.S
3a380 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 74 20 74 68 65 20 6b ymmetric.cipher.to.protect.the.k
3a3a0 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 20 20 20 20 20 20 20 ey..The.default.................
3a3c0 20 20 20 20 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 .......cipher.is.``'aes_128_cbc'
3a3e0 60 60 2e 20 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 ``..If.cipher.is.None,..........
3a400 20 20 20 20 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 ..............then.the.key.is.sa
3a420 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 61 72 61 ved.in.the.clear...........:para
3a440 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 20 6f 62 m.callback:.A.Python.callable.ob
3a460 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 20 20 20 ject.that.is.invoked............
3a480 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 73 73 70 ..............to.acquire.a.passp
3a4a0 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 20 20 20 hrase.with.which.to.protect.....
3a4c0 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 20 54 68 .....................the.key..Th
3a4e0 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 20 20 20 e.default.is....................
3a500 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 6b 2e 0a ......util.passphrase_callback..
3a520 20 20 20 20 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 ........""".........bio.=.BIO.Me
3a540 6d 6f 72 79 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 moryBuffer().........self.save_k
3a560 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 0a 20 20 ey_bio(bio,.cipher,.callback)...
3a580 20 20 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 ......return.bio.read_all().....
3a5a0 20 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 .def.as_der(self):.........#.typ
3a5c0 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 20 20 20 e:.().->.bytes........."""......
3a5e0 20 20 20 52 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 ...Return.key.in.DER.format.in.a
3a600 20 73 74 72 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 .string.........""".........buf.
3a620 3d 20 6d 32 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 =.m2.pkey_as_der(self.pkey).....
3a640 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 62 75 66 29 0a ....bio.=.BIO.MemoryBuffer(buf).
3a660 20 20 20 20 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 ........return.bio.read_all()...
3a680 20 20 20 64 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 ...def.size(self):.........#.typ
3a6a0 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........."""........
3a6c0 20 52 65 74 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 .Return.the.size.of.the.key.in.b
3a6e0 79 74 65 73 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 ytes..........""".........return
3a700 20 6d 32 2e 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 .m2.pkey_size(self.pkey)......de
3a720 66 20 67 65 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 f.get_modulus(self):.........#.t
3a740 79 70 65 3a 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 ype:.().->.Optional[bytes]......
3a760 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 6d 6f 64 75 6c 75 ...""".........Return.the.modulu
3a780 73 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 22 22 0a 20 20 20 s.in.hex.format.........."""....
3a7a0 20 20 20 20 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 .....return.m2.pkey_get_modulus(
3a7c0 73 65 6c 66 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 self.pkey)...def.load_key(file,.
3a7e0 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
3a800 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
3a820 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 20 61 6e 20 4d e).->.PKey.....""".....Load.an.M
3a840 32 43 72 79 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 2Crypto.EVP.PKey.from.file......
3a860 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 63 6f 6e 74 61 .:param.file:.Name.of.file.conta
3a880 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 74 2e 0a 0a 20 20 ining.the.key.in.PEM.format.....
3a8a0 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
3a8c0 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.....
3a8e0 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
3a900 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 20 74 ssphrase.with.which.to.protect.t
3a920 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 0a 0a 20 20 he......................key.....
3a940 20 20 3a 72 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 ..:return:.M2Crypto.EVP.PKey.obj
3a960 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 66 69 ect......""".....with.BIO.openfi
3a980 6c 65 28 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 20 63 70 le(file,.'r').as.bio:.........cp
3a9a0 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 62 69 6f 2c 20 63 tr.=.m2.pkey_read_pem(bio.bio,.c
3a9c0 61 6c 6c 62 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 allback)......return.PKey(cptr,.
3a9e0 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 70 75 62 6b 65 79 28 66 69 6c 65 2c 20 63 1)...def.load_key_pubkey(file,.c
3aa00 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
3aa20 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 65 ):.....#.type:.(AnyStr,.Callable
3aa40 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 20 61 6e 20 4d 32 ).->.PKey.....""".....Load.an.M2
3aa60 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 6c 69 63 20 6b 65 Crypto.EVP.PKey.from.a.public.ke
3aa80 79 20 61 73 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 4e y.as.a.file.......:param.file:.N
3aaa0 61 6d 65 20 6f 66 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6b 65 79 20 69 ame.of.file.containing.the.key.i
3aac0 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 6c 6c 62 61 n.PEM.format.......:param.callba
3aae0 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 74 68 61 ck:.A.Python.callable.object.tha
3ab00 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 20 20 20 t.is.invoked....................
3ab20 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 68 20 77 ..to.acquire.a.passphrase.with.w
3ab40 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 20 20 20 20 hich.to.protect.the.............
3ab60 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 4d 32 43 72 .........key.......:return:.M2Cr
3ab80 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 22 0a 0a 20 ypto.EVP.PKey.object......"""...
3aba0 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 2c 20 27 72 27 29 20 ...with.BIO.openfile(file,.'r').
3abc0 61 73 20 62 69 6f 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 70 6b 65 79 5f 72 as.bio:.........cptr.=.m2.pkey_r
3abe0 65 61 64 5f 70 65 6d 5f 70 75 62 6b 65 79 28 62 69 6f 2e 5f 70 74 72 28 29 2c 20 63 61 6c 6c 62 ead_pem_pubkey(bio._ptr(),.callb
3ac00 61 63 6b 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 ack).........if.cptr.is.None:...
3ac20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 56 50 45 72 72 6f 72 28 45 72 72 2e 67 65 74 ..........raise.EVPError(Err.get
3ac40 5f 65 72 72 6f 72 28 29 29 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 65 79 28 63 70 74 72 2c 20 _error()).....return.PKey(cptr,.
3ac60 31 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 1)...def.load_key_bio(bio,.callb
3ac80 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):..
3aca0 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).-
3acc0 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
3ace0 70 74 6f 2e 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 pto.EVP.PKey.from.an.M2Crypto.BI
3ad00 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
3ad20 70 74 6f 2e 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 pto.BIO.object.containing.the.ke
3ad40 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 6c y.in.PEM.format.......:param.cal
3ad60 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.
3ad80 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.................
3ada0 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
3adc0 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 20 h.which.to.protect.the..........
3ade0 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 4d ............key.......:return:.M
3ae00 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 22 2Crypto.EVP.PKey.object......"""
3ae20 0a 20 20 20 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 .....cptr.=.m2.pkey_read_pem(bio
3ae40 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 6e 20 50 4b ._ptr(),.callback).....return.PK
3ae60 65 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 62 69 6f 5f 70 ey(cptr,.1)...def.load_key_bio_p
3ae80 75 62 6b 65 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 ubkey(bio,.callback=util.passphr
3aea0 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 42 49 4f 2e ase_callback):.....#.type:.(BIO.
3aec0 42 49 4f 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 BIO,.Callable).->.PKey....."""..
3aee0 20 20 20 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 ...Load.an.M2Crypto.EVP.PKey.fro
3af00 6d 20 61 20 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 m.a.public.key.as.a.M2Crypto.BIO
3af20 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 70 .object.......:param.bio:.M2Cryp
3af40 74 6f 2e 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 to.BIO.object.containing.the.key
3af60 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 6c 6c .in.PEM.format.......:param.call
3af80 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 74 back:.A.Python.callable.object.t
3afa0 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 20 hat.is.invoked..................
3afc0 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 68 ....to.acquire.a.passphrase.with
3afe0 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 20 20 .which.to.protect.the...........
3b000 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 4d 32 ...........key.......:return:.M2
3b020 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 22 0a Crypto.EVP.PKey.object......""".
3b040 20 20 20 20 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 ....cptr.=.m2.pkey_read_pem_pubk
3b060 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 69 66 20 ey(bio._ptr(),.callback).....if.
3b080 63 70 74 72 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 cptr.is.None:.........raise.EVPE
3b0a0 72 72 6f 72 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 rror(Err.get_error()).....return
3b0c0 20 50 4b 65 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 .PKey(cptr,.1)...def.load_key_st
3b0e0 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 73 70 ring(string,.callback=util.passp
3b100 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 41 6e hrase_callback):.....#.type:.(An
3b120 79 53 74 72 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 yStr,.Callable).->.PKey.....""".
3b140 20 20 20 20 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 ....Load.an.M2Crypto.EVP.PKey.fr
3b160 6f 6d 20 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 om.a.string.......:param.string:
3b180 20 53 74 72 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 .String.containing.the.key.in.PE
3b1a0 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 20 M.format.......:param.callback:.
3b1c0 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
3b1e0 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
3b200 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
3b220 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 20 20 .to.protect.the.................
3b240 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 74 6f .....key.......:return:.M2Crypto
3b260 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 62 69 .EVP.PKey.object......""".....bi
3b280 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 20 o.=.BIO.MemoryBuffer(string)....
3b2a0 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 61 .return.load_key_bio(bio,.callba
3b2c0 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 5f 70 75 62 6b 65 79 ck)...def.load_key_string_pubkey
3b2e0 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
3b300 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
3b320 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.....""".....
3b340 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
3b360 20 70 75 62 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 .public.key.as.a.string.......:p
3b380 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 69 6e 67 20 74 aram.string:.String.containing.t
3b3a0 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 61 72 61 he.key.in.PEM.format.......:para
3b3c0 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 20 6f 62 m.callback:.A.Python.callable.ob
3b3e0 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 20 20 20 ject.that.is.invoked............
3b400 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
3b420 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 20 20 20 e.with.which.to.protect.the.....
3b440 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 65 74 75 .................key.......:retu
3b460 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 0a 20 20 rn:.M2Crypto.EVP.PKey.object....
3b480 20 20 22 22 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 ..""".....bio.=.BIO.MemoryBuffer
3b4a0 28 73 74 72 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 (string).....return.load_key_bio
3b4c0 5f 70 75 62 6b 65 79 28 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 94 7d 94 28 8c 08 45 56 50 _pubkey(bio,.callback)..}.(..EVP
3b4e0 45 72 72 6f 72 94 6a 37 02 00 00 4b 12 4b 13 87 94 8c 06 70 62 6b 64 66 32 94 6a 18 25 00 00 4b Error.j7...K.K.....pbkdf2.j.%..K
3b500 19 4b 24 87 94 8c 16 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 .K$....MessageDigest.__init__.j.
3b520 25 00 00 4b 2d 4b 37 87 94 8c 15 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 5f 5f 64 65 6c 5f 5f %..K-K7....MessageDigest.__del__
3b540 94 6a 18 25 00 00 4b 39 4b 3c 87 94 8c 14 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 75 70 64 61 .j.%..K9K<....MessageDigest.upda
3b560 74 65 94 6a 18 25 00 00 4b 3e 4b 45 87 94 8c 13 4d 65 73 73 61 67 65 44 69 67 65 73 74 2e 66 69 te.j.%..K>KE....MessageDigest.fi
3b580 6e 61 6c 94 6a 18 25 00 00 4b 47 4b 48 87 94 8c 0d 4d 65 73 73 61 67 65 44 69 67 65 73 74 94 6a nal.j.%..KGKH....MessageDigest.j
3b5a0 37 02 00 00 4b 27 4b 4b 87 94 8c 0d 48 4d 41 43 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 7...K'KK....HMAC.__init__.j.%..K
3b5c0 52 4b 59 87 94 8c 0c 48 4d 41 43 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 5b 4b 5e 87 94 8c RKY....HMAC.__del__.j.%..K[K^...
3b5e0 0a 48 4d 41 43 2e 72 65 73 65 74 94 6a 18 25 00 00 4b 60 4b 62 87 94 8c 0b 48 4d 41 43 2e 75 70 .HMAC.reset.j.%..K`Kb....HMAC.up
3b600 64 61 74 65 94 6a 18 25 00 00 4b 64 4b 66 87 94 8c 0a 48 4d 41 43 2e 66 69 6e 61 6c 94 6a 18 25 date.j.%..KdKf....HMAC.final.j.%
3b620 00 00 4b 68 4b 6a 87 94 8c 04 48 4d 41 43 94 6a 37 02 00 00 4b 4e 4b 6c 87 94 8c 04 68 6d 61 63 ..KhKj....HMAC.j7...KNKl....hmac
3b640 94 6a 18 25 00 00 4b 6f 4b 74 87 94 8c 0f 43 69 70 68 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 .j.%..KoKt....Cipher.__init__.j.
3b660 25 00 00 4b 7b 4b 8a 87 94 8c 0e 43 69 70 68 65 72 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b %..K{K.....Cipher.__del__.j.%..K
3b680 8c 4b 8f 87 94 8c 0d 43 69 70 68 65 72 2e 75 70 64 61 74 65 94 6a 18 25 00 00 4b 91 4b 93 87 94 .K.....Cipher.update.j.%..K.K...
3b6a0 8c 0c 43 69 70 68 65 72 2e 66 69 6e 61 6c 94 6a 18 25 00 00 4b 95 4b 97 87 94 8c 12 43 69 70 68 ..Cipher.final.j.%..K.K.....Ciph
3b6c0 65 72 2e 73 65 74 5f 70 61 64 64 69 6e 67 94 6a 18 25 00 00 4b 99 4b 9e 87 94 8c 06 43 69 70 68 er.set_padding.j.%..K.K.....Ciph
3b6e0 65 72 94 6a 37 02 00 00 4b 77 4b 9e 87 94 8c 0d 50 4b 65 79 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 er.j7...KwK.....PKey.__init__.j.
3b700 25 00 00 4b a9 4b b1 87 94 8c 0c 50 4b 65 79 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b b3 4b %..K.K.....PKey.__del__.j.%..K.K
3b720 b8 87 94 8c 09 50 4b 65 79 2e 5f 70 74 72 94 6a 18 25 00 00 4b ba 4b bb 87 94 8c 11 50 4b 65 79 .....PKey._ptr.j.%..K.K.....PKey
3b740 2e 5f 73 65 74 5f 63 6f 6e 74 65 78 74 94 6a 18 25 00 00 4b bd 4b c6 87 94 8c 12 50 4b 65 79 2e ._set_context.j.%..K.K.....PKey.
3b760 72 65 73 65 74 5f 63 6f 6e 74 65 78 74 94 6a 18 25 00 00 4b c8 4b cf 87 94 8c 0e 50 4b 65 79 2e reset_context.j.%..K.K.....PKey.
3b780 73 69 67 6e 5f 69 6e 69 74 94 6a 18 25 00 00 4b d1 4b d6 87 94 8c 10 50 4b 65 79 2e 73 69 67 6e sign_init.j.%..K.K.....PKey.sign
3b7a0 5f 75 70 64 61 74 65 94 6a 18 25 00 00 4b d8 4b df 87 94 8c 0f 50 4b 65 79 2e 73 69 67 6e 5f 66 _update.j.%..K.K.....PKey.sign_f
3b7c0 69 6e 61 6c 94 6a 18 25 00 00 4b e1 4b e8 87 94 8c 10 50 4b 65 79 2e 76 65 72 69 66 79 5f 69 6e inal.j.%..K.K.....PKey.verify_in
3b7e0 69 74 94 6a 18 25 00 00 4b ee 4b f3 87 94 8c 12 50 4b 65 79 2e 76 65 72 69 66 79 5f 75 70 64 61 it.j.%..K.K.....PKey.verify_upda
3b800 74 65 94 6a 18 25 00 00 4b f5 4b fd 87 94 8c 11 50 4b 65 79 2e 76 65 72 69 66 79 5f 66 69 6e 61 te.j.%..K.K.....PKey.verify_fina
3b820 6c 94 6a 18 25 00 00 4b ff 4d 08 01 87 94 8c 15 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e l.j.%..K.M......PKey.digest_sign
3b840 5f 69 6e 69 74 94 6a 18 25 00 00 4d 0a 01 4d 12 01 87 94 8c 17 50 4b 65 79 2e 64 69 67 65 73 74 _init.j.%..M..M......PKey.digest
3b860 5f 73 69 67 6e 5f 75 70 64 61 74 65 94 6a 18 25 00 00 4d 14 01 4d 1b 01 87 94 8c 16 50 4b 65 79 _sign_update.j.%..M..M......PKey
3b880 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 94 6a 18 25 00 00 4d 1d 01 4d 24 01 87 94 .digest_sign_final.j.%..M..M$...
3b8a0 8c 10 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 94 6a 18 25 00 00 4d 26 01 4d 32 01 87 94 ..PKey.digest_sign.j.%..M&.M2...
3b8c0 8c 17 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 69 6e 69 74 94 6a 18 25 00 00 4d ..PKey.digest_verify_init.j.%..M
3b8e0 34 01 4d 3c 01 87 94 8c 19 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 72 69 66 79 5f 75 70 64 61 4.M<.....PKey.digest_verify_upda
3b900 74 65 94 6a 18 25 00 00 4d 3e 01 4d 46 01 87 94 8c 18 50 4b 65 79 2e 64 69 67 65 73 74 5f 76 65 te.j.%..M>.MF.....PKey.digest_ve
3b920 72 69 66 79 5f 66 69 6e 61 6c 94 6a 18 25 00 00 4d 48 01 4d 51 01 87 94 8c 12 50 4b 65 79 2e 64 rify_final.j.%..MH.MQ.....PKey.d
3b940 69 67 65 73 74 5f 76 65 72 69 66 79 94 6a 18 25 00 00 4d 53 01 4d 62 01 87 94 8c 0f 50 4b 65 79 igest_verify.j.%..MS.Mb.....PKey
3b960 2e 61 73 73 69 67 6e 5f 72 73 61 94 6a 18 25 00 00 4d 64 01 4d 77 01 87 94 8c 0c 50 4b 65 79 2e .assign_rsa.j.%..Md.Mw.....PKey.
3b980 67 65 74 5f 72 73 61 94 6a 18 25 00 00 4d 79 01 4d 82 01 87 94 8c 0d 50 4b 65 79 2e 73 61 76 65 get_rsa.j.%..My.M......PKey.save
3b9a0 5f 6b 65 79 94 6a 18 25 00 00 4d 84 01 4d 96 01 87 94 8c 11 50 4b 65 79 2e 73 61 76 65 5f 6b 65 _key.j.%..M..M......PKey.save_ke
3b9c0 79 5f 62 69 6f 94 6a 18 25 00 00 4d 98 01 4d af 01 87 94 8c 0b 50 4b 65 79 2e 61 73 5f 70 65 6d y_bio.j.%..M..M......PKey.as_pem
3b9e0 94 6a 18 25 00 00 4d b1 01 4d c1 01 87 94 8c 0b 50 4b 65 79 2e 61 73 5f 64 65 72 94 6a 18 25 00 .j.%..M..M......PKey.as_der.j.%.
3ba00 00 4d c3 01 4d ca 01 87 94 8c 09 50 4b 65 79 2e 73 69 7a 65 94 6a 18 25 00 00 4d cc 01 4d d1 01 .M..M......PKey.size.j.%..M..M..
3ba20 87 94 8c 10 50 4b 65 79 2e 67 65 74 5f 6d 6f 64 75 6c 75 73 94 6a 18 25 00 00 4d d3 01 4d d8 01 ....PKey.get_modulus.j.%..M..M..
3ba40 87 94 8c 04 50 4b 65 79 94 6a 37 02 00 00 4b a1 4d d8 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 ....PKey.j7...K.M......load_key.
3ba60 6a 18 25 00 00 4d db 01 4d eb 01 87 94 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 70 75 62 6b 65 79 94 6a j.%..M..M......load_key_pubkey.j
3ba80 18 25 00 00 4d ee 01 4d 00 02 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 .%..M..M......load_key_bio.j.%..
3baa0 4d 03 02 4d 11 02 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 18 M..M......load_key_bio_pubkey.j.
3bac0 25 00 00 4d 14 02 4d 24 02 87 94 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 18 25 %..M..M$.....load_key_string.j.%
3bae0 00 00 4d 27 02 4d 35 02 87 94 8c 16 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 5f 70 75 62 6b ..M'.M5.....load_key_string_pubk
3bb00 65 79 94 6a 18 25 00 00 4d 38 02 4d 46 02 87 94 75 7d 94 28 8c 06 43 69 70 68 65 72 94 6a 60 02 ey.j.%..M8.MF...u}.(..Cipher.j`.
3bb20 00 00 8c 0c 43 69 70 68 65 72 2e 66 69 6e 61 6c 94 6a 60 02 00 00 8c 12 43 69 70 68 65 72 2e 73 ....Cipher.final.j`.....Cipher.s
3bb40 65 74 5f 70 61 64 64 69 6e 67 94 6a 60 02 00 00 8c 0d 43 69 70 68 65 72 2e 75 70 64 61 74 65 94 et_padding.j`.....Cipher.update.
3bb60 6a 60 02 00 00 6a b9 14 00 00 6a 60 02 00 00 8c 04 48 4d 41 43 94 6a 60 02 00 00 8c 0a 48 4d 41 j`...j....j`.....HMAC.j`.....HMA
3bb80 43 2e 66 69 6e 61 6c 94 6a 60 02 00 00 8c 0a 48 4d 41 43 2e 72 65 73 65 74 94 6a 60 02 00 00 8c C.final.j`.....HMAC.reset.j`....
3bba0 0b 48 4d 41 43 2e 75 70 64 61 74 65 94 6a 60 02 00 00 8c 0d 4d 65 73 73 61 67 65 44 69 67 65 73 .HMAC.update.j`.....MessageDiges
3bbc0 74 94 6a 60 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 60 02 t.j`.....MessageDigest.final.j`.
3bbe0 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 60 02 00 00 8c 04 ....MessageDigest.update.j`.....
3bc00 50 4b 65 79 94 6a 60 02 00 00 8c 0b 50 4b 65 79 2e 61 73 5f 64 65 72 94 6a 60 02 00 00 8c 0b 50 PKey.j`.....PKey.as_der.j`.....P
3bc20 4b 65 79 2e 61 73 5f 70 65 6d 94 6a 60 02 00 00 8c 0f 50 4b 65 79 2e 61 73 73 69 67 6e 5f 72 73 Key.as_pem.j`.....PKey.assign_rs
3bc40 61 94 6a 60 02 00 00 8c 10 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 94 6a 60 02 00 00 8c a.j`.....PKey.digest_sign.j`....
3bc60 16 50 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 66 69 6e 61 6c 94 6a 60 02 00 00 8c 15 50 .PKey.digest_sign_final.j`.....P
3bc80 4b 65 79 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 69 6e 69 74 94 6a 60 02 00 00 8c 17 50 4b 65 79 Key.digest_sign_init.j`.....PKey
3bca0 2e 64 69 67 65 73 74 5f 73 69 67 6e 5f 75 70 64 61 74 65 94 6a 60 02 00 00 8c 12 50 4b 65 79 2e .digest_sign_update.j`.....PKey.
3bcc0 64 69 67 65 73 74 5f 76 65 72 69 66 79 94 6a 60 02 00 00 8c 18 50 4b 65 79 2e 64 69 67 65 73 74 digest_verify.j`.....PKey.digest
3bce0 5f 76 65 72 69 66 79 5f 66 69 6e 61 6c 94 6a 60 02 00 00 8c 17 50 4b 65 79 2e 64 69 67 65 73 74 _verify_final.j`.....PKey.digest
3bd00 5f 76 65 72 69 66 79 5f 69 6e 69 74 94 6a 60 02 00 00 8c 19 50 4b 65 79 2e 64 69 67 65 73 74 5f _verify_init.j`.....PKey.digest_
3bd20 76 65 72 69 66 79 5f 75 70 64 61 74 65 94 6a 60 02 00 00 8c 10 50 4b 65 79 2e 67 65 74 5f 6d 6f verify_update.j`.....PKey.get_mo
3bd40 64 75 6c 75 73 94 6a 60 02 00 00 8c 0c 50 4b 65 79 2e 67 65 74 5f 72 73 61 94 6a 60 02 00 00 8c dulus.j`.....PKey.get_rsa.j`....
3bd60 12 50 4b 65 79 2e 72 65 73 65 74 5f 63 6f 6e 74 65 78 74 94 6a 60 02 00 00 8c 0d 50 4b 65 79 2e .PKey.reset_context.j`.....PKey.
3bd80 73 61 76 65 5f 6b 65 79 94 6a 60 02 00 00 8c 11 50 4b 65 79 2e 73 61 76 65 5f 6b 65 79 5f 62 69 save_key.j`.....PKey.save_key_bi
3bda0 6f 94 6a 60 02 00 00 8c 0f 50 4b 65 79 2e 73 69 67 6e 5f 66 69 6e 61 6c 94 6a 60 02 00 00 8c 0e o.j`.....PKey.sign_final.j`.....
3bdc0 50 4b 65 79 2e 73 69 67 6e 5f 69 6e 69 74 94 6a 60 02 00 00 8c 10 50 4b 65 79 2e 73 69 67 6e 5f PKey.sign_init.j`.....PKey.sign_
3bde0 75 70 64 61 74 65 94 6a 60 02 00 00 8c 09 50 4b 65 79 2e 73 69 7a 65 94 6a 60 02 00 00 8c 11 50 update.j`.....PKey.size.j`.....P
3be00 4b 65 79 2e 76 65 72 69 66 79 5f 66 69 6e 61 6c 94 6a 60 02 00 00 8c 10 50 4b 65 79 2e 76 65 72 Key.verify_final.j`.....PKey.ver
3be20 69 66 79 5f 69 6e 69 74 94 6a 60 02 00 00 8c 12 50 4b 65 79 2e 76 65 72 69 66 79 5f 75 70 64 61 ify_init.j`.....PKey.verify_upda
3be40 74 65 94 6a 60 02 00 00 8c 04 68 6d 61 63 94 6a 60 02 00 00 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a te.j`.....hmac.j`.....load_key.j
3be60 60 02 00 00 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 13 6c 6f 61 64 5f 6b `.....load_key_bio.j`.....load_k
3be80 65 79 5f 62 69 6f 5f 70 75 62 6b 65 79 94 6a 60 02 00 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 70 75 ey_bio_pubkey.j`.....load_key_pu
3bea0 62 6b 65 79 94 6a 60 02 00 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 60 02 00 bkey.j`.....load_key_string.j`..
3bec0 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 94 6a 60 02 00 00 8c ...load_key_string_pubkey.j`....
3bee0 06 70 62 6b 64 66 32 94 6a 60 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 56 50 94 74 94 8c .pbkdf2.j`...u..M2Crypto.EVP.t..
3bf00 0f 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 6e 65 94 28 58 0c 12 00 00 23 20 76 69 6d 3a 20 73 74 .M2Crypto.Engine.(X....#.vim:.st
3bf20 73 3d 34 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 s=4.sw=4.et.from.__future__.impo
3bf40 72 74 20 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 rt.absolute_import..""".M2Crypto
3bf60 20 77 72 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 .wrapper.for.OpenSSL.ENGINE.API.
3bf80 0a 0a 50 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 ..Pavel.Shramov.IMEC.MSU."""..fr
3bfa0 6f 6d 20 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 om.M2Crypto.import.EVP,.Err,.X50
3bfc0 39 2c 20 6d 32 2c 20 73 69 78 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 9,.m2,.six.from.typing.import.An
3bfe0 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 23 20 6e 6f 71 61 yStr,.Callable,.Optional..#.noqa
3c000 0a 0a 0a 63 6c 61 73 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 ...class.EngineError(Exception):
3c020 0a 20 20 20 20 70 61 73 73 0a 0a 0a 6d 32 2e 65 6e 67 69 6e 65 5f 69 6e 69 74 5f 65 72 72 6f 72 .....pass...m2.engine_init_error
3c040 28 45 6e 67 69 6e 65 45 72 72 6f 72 29 0a 0a 0a 63 6c 61 73 73 20 45 6e 67 69 6e 65 28 6f 62 6a (EngineError)...class.Engine(obj
3c060 65 63 74 29 3a 0a 20 20 20 20 22 22 22 57 72 61 70 70 65 72 20 66 6f 72 20 45 4e 47 49 4e 45 20 ect):....."""Wrapper.for.ENGINE.
3c080 6f 62 6a 65 63 74 2e 22 22 22 0a 0a 20 20 20 20 6d 32 5f 65 6e 67 69 6e 65 5f 66 72 65 65 20 3d object."""......m2_engine_free.=
3c0a0 20 6d 32 2e 65 6e 67 69 6e 65 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f .m2.engine_free......def.__init_
3c0c0 5f 28 73 65 6c 66 2c 20 69 64 3d 4e 6f 6e 65 2c 20 5f 70 74 72 3d 4e 6f 6e 65 2c 20 5f 70 79 66 _(self,.id=None,._ptr=None,._pyf
3c0e0 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 4f 70 74 69 6f 6e 61 ree=1):.........#.type:.(Optiona
3c100 6c 5b 62 79 74 65 73 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 69 6e 74 29 20 l[bytes],.Optional[bytes],.int).
3c120 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 43 72 65 61 74 65 20 6e 65 77 20 45 6e ->.None........."""Create.new.En
3c140 67 69 6e 65 20 66 72 6f 6d 20 45 4e 47 49 4e 45 20 70 6f 69 6e 74 65 72 20 6f 72 20 6f 62 74 61 gine.from.ENGINE.pointer.or.obta
3c160 69 6e 20 62 79 20 69 64 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 5f 70 74 72 20 in.by.id""".........if.not._ptr.
3c180 61 6e 64 20 6e 6f 74 20 69 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 and.not.id:.............raise.Va
3c1a0 6c 75 65 45 72 72 6f 72 28 22 4e 6f 20 65 6e 67 69 6e 65 20 69 64 20 73 70 65 63 69 66 69 65 64 lueError("No.engine.id.specified
3c1c0 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 74 72 20 3d 20 5f 70 74 72 0a 20 20 20 20 ").........self._ptr.=._ptr.....
3c1e0 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 20 20 ....if.not.self._ptr:...........
3c200 20 20 73 65 6c 66 2e 5f 70 74 72 20 3d 20 6d 32 2e 65 6e 67 69 6e 65 5f 62 79 5f 69 64 28 69 64 ..self._ptr.=.m2.engine_by_id(id
3c220 29 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 5f 70 74 72 3a 0a ).............if.not.self._ptr:.
3c240 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 6f 72 ................raise.ValueError
3c260 28 22 55 6e 6b 6e 6f 77 6e 20 65 6e 67 69 6e 65 3a 20 25 73 22 20 25 20 69 64 29 0a 20 20 20 20 ("Unknown.engine:.%s".%.id).....
3c280 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......
3c2a0 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
3c2c0 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
3c2e0 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):...........
3c300 20 20 73 65 6c 66 2e 6d 32 5f 65 6e 67 69 6e 65 5f 66 72 65 65 28 73 65 6c 66 2e 5f 70 74 72 29 ..self.m2_engine_free(self._ptr)
3c320 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 23 20 ......def.init(self):.........#.
3c340 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 4f 62 74 61 69 type:.().->.int........."""Obtai
3c360 6e 20 61 20 66 75 6e 63 74 69 6f 6e 61 6c 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 n.a.functional.reference.to.the.
3c380 65 6e 67 69 6e 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 6f 6e 20 65 engine...........:return:.0.on.e
3c3a0 72 72 6f 72 2c 20 6e 6f 6e 2d 7a 65 72 6f 20 6f 6e 20 73 75 63 63 65 73 73 2e 22 22 22 0a 20 20 rror,.non-zero.on.success."""...
3c3c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 69 6e 69 74 28 73 65 6c 66 ......return.m2.engine_init(self
3c3e0 2e 5f 70 74 72 29 0a 0a 20 20 20 20 64 65 66 20 66 69 6e 69 73 68 28 73 65 6c 66 29 3a 0a 20 20 ._ptr)......def.finish(self):...
3c400 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.........
3c420 22 22 22 52 65 6c 65 61 73 65 20 61 20 66 75 6e 63 74 69 6f 6e 61 6c 20 61 6e 64 20 73 74 72 75 """Release.a.functional.and.stru
3c440 63 74 75 72 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 22 ctural.reference.to.the.engine."
3c460 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 66 69 6e 69 "".........return.m2.engine_fini
3c480 73 68 28 73 65 6c 66 2e 5f 70 74 72 29 0a 0a 20 20 20 20 64 65 66 20 63 74 72 6c 5f 63 6d 64 5f sh(self._ptr)......def.ctrl_cmd_
3c4a0 73 74 72 69 6e 67 28 73 65 6c 66 2c 20 63 6d 64 2c 20 61 72 67 2c 20 6f 70 74 69 6f 6e 61 6c 3d string(self,.cmd,.arg,.optional=
3c4c0 30 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 0):.........#.type:.(AnyStr,.Opt
3c4e0 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 ional[AnyStr],.int).->.None.....
3c500 20 20 20 20 22 22 22 43 61 6c 6c 20 45 4e 47 49 4e 45 5f 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 ...."""Call.ENGINE_ctrl_cmd_stri
3c520 6e 67 22 22 22 0a 20 20 20 20 20 20 20 20 63 6d 64 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 73 ng""".........cmd.=.six.ensure_s
3c540 74 72 28 63 6d 64 29 0a 20 20 20 20 20 20 20 20 69 66 20 61 72 67 20 69 73 20 6e 6f 74 20 4e 6f tr(cmd).........if.arg.is.not.No
3c560 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 ne:.............arg.=.six.ensure
3c580 5f 73 74 72 28 61 72 67 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 32 2e 65 6e 67 69 _str(arg).........if.not.m2.engi
3c5a0 6e 65 5f 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 73 65 6c 66 2e 5f 70 74 72 2c 20 63 6d ne_ctrl_cmd_string(self._ptr,.cm
3c5c0 64 2c 20 61 72 67 2c 20 6f 70 74 69 6f 6e 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 d,.arg,.optional):.............r
3c5e0 61 69 73 65 20 45 6e 67 69 6e 65 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 aise.EngineError(Err.get_error()
3c600 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 )......def.get_name(self):......
3c620 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 20 22 ...#.type:.().->.bytes........."
3c640 22 22 52 65 74 75 72 6e 20 65 6e 67 69 6e 65 20 6e 61 6d 65 22 22 22 0a 20 20 20 20 20 20 20 20 ""Return.engine.name""".........
3c660 72 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 5f return.m2.engine_get_name(self._
3c680 70 74 72 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 69 64 28 73 65 6c 66 29 3a 0a 20 20 20 20 ptr)......def.get_id(self):.....
3c6a0 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 20 ....#.type:.().->.bytes.........
3c6c0 22 22 22 52 65 74 75 72 6e 20 65 6e 67 69 6e 65 20 69 64 22 22 22 0a 20 20 20 20 20 20 20 20 72 """Return.engine.id""".........r
3c6e0 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 67 65 74 5f 69 64 28 73 65 6c 66 2e 5f 70 74 72 eturn.m2.engine_get_id(self._ptr
3c700 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2c 20 6d 65 74 )......def.set_default(self,.met
3c720 68 6f 64 73 3d 6d 32 2e 45 4e 47 49 4e 45 5f 4d 45 54 48 4f 44 5f 41 4c 4c 29 3a 0a 20 20 20 20 hods=m2.ENGINE_METHOD_ALL):.....
3c740 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 20 20 20 20 20 20 ....#.type:.(int).->.int........
3c760 20 22 22 22 0a 20 20 20 20 20 20 20 20 55 73 65 20 74 68 69 73 20 65 6e 67 69 6e 65 20 61 73 20 .""".........Use.this.engine.as.
3c780 64 65 66 61 75 6c 74 20 66 6f 72 20 6d 65 74 68 6f 64 73 20 73 70 65 63 69 66 69 65 64 20 69 6e default.for.methods.specified.in
3c7a0 20 61 72 67 75 6d 65 6e 74 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 65 74 68 6f 64 .argument..........:param.method
3c7c0 73 3a 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 61 72 65 20 62 69 74 77 69 73 65 20 4f s:.Possible.values.are.bitwise.O
3c7e0 52 20 6f 66 20 6d 32 2e 45 4e 47 49 4e 45 5f 4d 45 54 48 4f 44 5f 2a 0a 20 20 20 20 20 20 20 20 R.of.m2.ENGINE_METHOD_*.........
3c800 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 65 6e 67 69 6e 65 5f 73 65 74 """.........return.m2.engine_set
3c820 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 2e 5f 70 74 72 2c 20 6d 65 74 68 6f 64 73 29 0a 0a 20 20 _default(self._ptr,.methods)....
3c840 20 20 64 65 66 20 5f 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b 65 79 28 73 65 6c 66 2c 20 66 75 6e ..def._engine_load_key(self,.fun
3c860 63 2c 20 6e 61 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 c,.name,.pin=None):.........#.ty
3c880 70 65 3a 20 28 43 61 6c 6c 61 62 6c 65 2c 20 62 79 74 65 73 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 pe:.(Callable,.bytes,.Optional[b
3c8a0 79 74 65 73 5d 29 20 2d 3e 20 45 56 50 2e 50 4b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 48 65 ytes]).->.EVP.PKey........."""He
3c8c0 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 6c 6f 61 64 69 6e 67 20 6b 65 79 73 22 22 lper.function.for.loading.keys""
3c8e0 22 0a 20 20 20 20 20 20 20 20 75 69 20 3d 20 6d 32 2e 75 69 5f 6f 70 65 6e 73 73 6c 28 29 0a 20 ".........ui.=.m2.ui_openssl()..
3c900 20 20 20 20 20 20 20 63 62 64 20 3d 20 6d 32 2e 65 6e 67 69 6e 65 5f 70 6b 63 73 31 31 5f 64 61 .......cbd.=.m2.engine_pkcs11_da
3c920 74 61 5f 6e 65 77 28 70 69 6e 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 ta_new(pin).........try:........
3c940 20 20 20 20 20 6b 70 74 72 20 3d 20 66 75 6e 63 28 73 65 6c 66 2e 5f 70 74 72 2c 20 6e 61 6d 65 .....kptr.=.func(self._ptr,.name
3c960 2c 20 75 69 2c 20 63 62 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6b 70 ,.ui,.cbd).............if.not.kp
3c980 74 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 45 6e 67 69 6e 65 tr:.................raise.Engine
3c9a0 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 29 0a 20 20 20 20 20 20 20 20 20 Error(Err.get_error())..........
3c9c0 20 20 20 6b 65 79 20 3d 20 45 56 50 2e 50 4b 65 79 28 6b 70 74 72 2c 20 5f 70 79 66 72 65 65 3d ...key.=.EVP.PKey(kptr,._pyfree=
3c9e0 31 29 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 1).........finally:.............
3ca00 6d 32 2e 65 6e 67 69 6e 65 5f 70 6b 63 73 31 31 5f 64 61 74 61 5f 66 72 65 65 28 63 62 64 29 0a m2.engine_pkcs11_data_free(cbd).
3ca20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 ........return.key......def.load
3ca40 5f 70 72 69 76 61 74 65 5f 6b 65 79 28 73 65 6c 66 2c 20 6e 61 6d 65 2c 20 70 69 6e 3d 4e 6f 6e _private_key(self,.name,.pin=Non
3ca60 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 2c 20 4f 70 74 69 e):.........#.type:.(bytes,.Opti
3ca80 6f 6e 61 6c 5b 62 79 74 65 73 5d 29 20 2d 3e 20 58 35 30 39 2e 58 35 30 39 0a 20 20 20 20 20 20 onal[bytes]).->.X509.X509.......
3caa0 20 20 22 22 22 4c 6f 61 64 20 70 72 69 76 61 74 65 20 6b 65 79 20 77 69 74 68 20 65 6e 67 69 6e .."""Load.private.key.with.engin
3cac0 65 20 6d 65 74 68 6f 64 73 20 28 65 2e 67 20 66 72 6f 6d 20 73 6d 61 72 74 63 61 72 64 29 2e 0a e.methods.(e.g.from.smartcard)..
3cae0 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 70 69 6e 20 69 73 20 6e 6f 74 20 73 65 74 20 69 74 ............If.pin.is.not.set.it
3cb00 20 77 69 6c 6c 20 62 65 20 61 73 6b 65 64 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 .will.be.asked........."""......
3cb20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b 65 79 28 ...return.self._engine_load_key(
3cb40 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 2c 20 6e 61 6d 65 m2.engine_load_private_key,.name
3cb60 2c 20 70 69 6e 29 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 70 75 62 6c 69 63 5f 6b 65 79 28 ,.pin)......def.load_public_key(
3cb80 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 20 20 20 20 23 self,.name,.pin=None):.........#
3cba0 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 65 73 5d 29 20 .type:.(bytes,.Optional[bytes]).
3cbc0 2d 3e 20 45 56 50 2e 50 4b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 70 75 62 6c ->.EVP.PKey........."""Load.publ
3cbe0 69 63 20 6b 65 79 20 77 69 74 68 20 65 6e 67 69 6e 65 20 6d 65 74 68 6f 64 73 20 28 65 2e 67 20 ic.key.with.engine.methods.(e.g.
3cc00 66 72 6f 6d 20 73 6d 61 72 74 63 61 72 64 29 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 from.smartcard).""".........retu
3cc20 72 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 rn.self._engine_load_key(m2.engi
3cc40 6e 65 5f 6c 6f 61 64 5f 70 75 62 6c 69 63 5f 6b 65 79 2c 20 6e 61 6d 65 2c 20 70 69 6e 29 0a 0a ne_load_public_key,.name,.pin)..
3cc60 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 28 73 65 6c 66 2c 20 6e ....def.load_certificate(self,.n
3cc80 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 3e ame):.........#.type:.(bytes).->
3cca0 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 64 20 63 65 72 74 69 .X509.X509........."""Load.certi
3ccc0 66 69 63 61 74 65 20 66 72 6f 6d 20 65 6e 67 69 6e 65 20 28 65 2e 67 20 66 72 6f 6d 20 73 6d 61 ficate.from.engine.(e.g.from.sma
3cce0 72 74 63 61 72 64 29 2e 0a 20 20 20 20 20 20 20 20 4e 4f 54 45 3a 20 54 68 69 73 20 66 75 6e 63 rtcard)..........NOTE:.This.func
3cd00 74 69 6f 6e 20 6d 61 79 20 62 65 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 65 tion.may.be.not.implemented.by.e
3cd20 6e 67 69 6e 65 21 22 22 22 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 65 6e 67 69 ngine!""".........cptr.=.m2.engi
3cd40 6e 65 5f 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 28 73 65 6c 66 2e 5f 70 74 72 2c 20 6e ne_load_certificate(self._ptr,.n
3cd60 61 6d 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 70 74 72 3a 0a 20 20 20 20 20 20 ame).........if.not.cptr:.......
3cd80 20 20 20 20 20 20 72 61 69 73 65 20 45 6e 67 69 6e 65 45 72 72 6f 72 28 22 43 65 72 74 69 66 69 ......raise.EngineError("Certifi
3cda0 63 61 74 65 20 6f 72 20 63 61 72 64 20 6e 6f 74 20 66 6f 75 6e 64 22 29 0a 20 20 20 20 20 20 20 cate.or.card.not.found")........
3cdc0 20 72 65 74 75 72 6e 20 58 35 30 39 2e 58 35 30 39 28 63 70 74 72 2c 20 5f 70 79 66 72 65 65 3d .return.X509.X509(cptr,._pyfree=
3cde0 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 28 69 64 2c 1)...def.load_dynamic_engine(id,
3ce00 20 73 6f 70 61 74 68 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 41 6e .sopath):.....#.type:.(bytes,.An
3ce20 79 53 74 72 29 20 2d 3e 20 45 6e 67 69 6e 65 0a 20 20 20 20 22 22 22 4c 6f 61 64 20 61 6e 64 20 yStr).->.Engine....."""Load.and.
3ce40 72 65 74 75 72 6e 20 64 79 6d 61 6e 69 63 20 65 6e 67 69 6e 65 20 66 72 6f 6d 20 73 6f 70 61 74 return.dymanic.engine.from.sopat
3ce60 68 20 61 6e 64 20 61 73 73 69 67 6e 20 69 64 20 74 6f 20 69 74 22 22 22 0a 20 20 20 20 69 66 20 h.and.assign.id.to.it""".....if.
3ce80 69 73 69 6e 73 74 61 6e 63 65 28 73 6f 70 61 74 68 2c 20 73 69 78 2e 74 65 78 74 5f 74 79 70 65 isinstance(sopath,.six.text_type
3cea0 29 3a 0a 20 20 20 20 20 20 20 20 73 6f 70 61 74 68 20 3d 20 73 6f 70 61 74 68 2e 65 6e 63 6f 64 ):.........sopath.=.sopath.encod
3cec0 65 28 27 75 74 66 38 27 29 0a 20 20 20 20 6d 32 2e 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 64 79 6e e('utf8').....m2.engine_load_dyn
3cee0 61 6d 69 63 28 29 0a 20 20 20 20 65 20 3d 20 45 6e 67 69 6e 65 28 27 64 79 6e 61 6d 69 63 27 29 amic().....e.=.Engine('dynamic')
3cf00 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 27 53 4f 5f 50 41 54 48 27 .....e.ctrl_cmd_string('SO_PATH'
3cf20 2c 20 73 6f 70 61 74 68 29 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 ,.sopath).....e.ctrl_cmd_string(
3cf40 27 49 44 27 2c 20 69 64 29 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 72 69 6e 67 28 'ID',.id).....e.ctrl_cmd_string(
3cf60 27 4c 49 53 54 5f 41 44 44 27 2c 20 27 31 27 29 0a 20 20 20 20 65 2e 63 74 72 6c 5f 63 6d 64 5f 'LIST_ADD',.'1').....e.ctrl_cmd_
3cf80 73 74 72 69 6e 67 28 27 4c 4f 41 44 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 string('LOAD',.None).....return.
3cfa0 65 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 28 29 3a 0a 20 20 20 20 23 20 74 79 e...def.load_dynamic():.....#.ty
3cfc0 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 64 79 6e 61 6d pe:.().->.None....."""Load.dynam
3cfe0 69 63 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 ic.engine""".....m2.engine_load_
3d000 64 79 6e 61 6d 69 63 28 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 28 29 3a 0a dynamic()...def.load_openssl():.
3d020 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 22 22 22 4c 6f ....#.type:.().->.None....."""Lo
3d040 61 64 20 6f 70 65 6e 73 73 6c 20 65 6e 67 69 6e 65 22 22 22 0a 20 20 20 20 6d 32 2e 65 6e 67 69 ad.openssl.engine""".....m2.engi
3d060 6e 65 5f 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 28 29 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 75 70 28 ne_load_openssl()...def.cleanup(
3d080 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 20 20 22 22 ):.....#.type:.().->.None.....""
3d0a0 22 49 66 20 79 6f 75 20 6c 6f 61 64 20 61 6e 79 20 65 6e 67 69 6e 65 73 2c 20 79 6f 75 20 6e 65 "If.you.load.any.engines,.you.ne
3d0c0 65 64 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 61 66 74 65 72 20 79 6f 75 72 20 61 70 70 6c 69 63 ed.to.clean.up.after.your.applic
3d0e0 61 74 69 6f 6e 0a 20 20 20 20 69 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 74 68 65 20 65 ation.....is.finished.with.the.e
3d100 6e 67 69 6e 65 73 2e 22 22 22 0a 20 20 20 20 6d 32 2e 65 6e 67 69 6e 65 5f 63 6c 65 61 6e 75 70 ngines.""".....m2.engine_cleanup
3d120 28 29 0a 94 7d 94 28 8c 0b 45 6e 67 69 6e 65 45 72 72 6f 72 94 6a 37 02 00 00 4b 0f 4b 10 87 94 ()..}.(..EngineError.j7...K.K...
3d140 8c 0f 45 6e 67 69 6e 65 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 1b 4b 25 87 94 8c 0e 45 ..Engine.__init__.j.%..K.K%....E
3d160 6e 67 69 6e 65 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 27 4b 2a 87 94 8c 0b 45 6e 67 69 6e ngine.__del__.j.%..K'K*....Engin
3d180 65 2e 69 6e 69 74 94 6a 18 25 00 00 4b 2c 4b 31 87 94 8c 0d 45 6e 67 69 6e 65 2e 66 69 6e 69 73 e.init.j.%..K,K1....Engine.finis
3d1a0 68 94 6a 18 25 00 00 4b 33 4b 36 87 94 8c 16 45 6e 67 69 6e 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 h.j.%..K3K6....Engine.ctrl_cmd_s
3d1c0 74 72 69 6e 67 94 6a 18 25 00 00 4b 38 4b 3f 87 94 8c 0f 45 6e 67 69 6e 65 2e 67 65 74 5f 6e 61 tring.j.%..K8K?....Engine.get_na
3d1e0 6d 65 94 6a 18 25 00 00 4b 41 4b 44 87 94 8c 0d 45 6e 67 69 6e 65 2e 67 65 74 5f 69 64 94 6a 18 me.j.%..KAKD....Engine.get_id.j.
3d200 25 00 00 4b 46 4b 49 87 94 8c 12 45 6e 67 69 6e 65 2e 73 65 74 5f 64 65 66 61 75 6c 74 94 6a 18 %..KFKI....Engine.set_default.j.
3d220 25 00 00 4b 4b 4b 52 87 94 8c 17 45 6e 67 69 6e 65 2e 5f 65 6e 67 69 6e 65 5f 6c 6f 61 64 5f 6b %..KKKR....Engine._engine_load_k
3d240 65 79 94 6a 18 25 00 00 4b 54 4b 60 87 94 8c 17 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 70 72 69 76 ey.j.%..KTK`....Engine.load_priv
3d260 61 74 65 5f 6b 65 79 94 6a 18 25 00 00 4b 62 4b 67 87 94 8c 16 45 6e 67 69 6e 65 2e 6c 6f 61 64 ate_key.j.%..KbKg....Engine.load
3d280 5f 70 75 62 6c 69 63 5f 6b 65 79 94 6a 18 25 00 00 4b 69 4b 6c 87 94 8c 17 45 6e 67 69 6e 65 2e _public_key.j.%..KiKl....Engine.
3d2a0 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 94 6a 18 25 00 00 4b 6e 4b 75 87 94 8c 06 45 6e load_certificate.j.%..KnKu....En
3d2c0 67 69 6e 65 94 6a 37 02 00 00 4b 16 4b 75 87 94 8c 13 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 gine.j7...K.Ku....load_dynamic_e
3d2e0 6e 67 69 6e 65 94 6a 18 25 00 00 4b 78 4b 83 87 94 8c 0c 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 ngine.j.%..KxK.....load_dynamic.
3d300 6a 18 25 00 00 4b 86 4b 89 87 94 8c 0c 6c 6f 61 64 5f 6f 70 65 6e 73 73 6c 94 6a 18 25 00 00 4b j.%..K.K.....load_openssl.j.%..K
3d320 8c 4b 8f 87 94 8c 07 63 6c 65 61 6e 75 70 94 6a 18 25 00 00 4b 92 4b 96 87 94 75 7d 94 28 8c 06 .K.....cleanup.j.%..K.K...u}.(..
3d340 45 6e 67 69 6e 65 94 6a 60 02 00 00 8c 16 45 6e 67 69 6e 65 2e 63 74 72 6c 5f 63 6d 64 5f 73 74 Engine.j`.....Engine.ctrl_cmd_st
3d360 72 69 6e 67 94 6a 60 02 00 00 8c 0d 45 6e 67 69 6e 65 2e 66 69 6e 69 73 68 94 6a 60 02 00 00 8c ring.j`.....Engine.finish.j`....
3d380 0d 45 6e 67 69 6e 65 2e 67 65 74 5f 69 64 94 6a 60 02 00 00 8c 0f 45 6e 67 69 6e 65 2e 67 65 74 .Engine.get_id.j`.....Engine.get
3d3a0 5f 6e 61 6d 65 94 6a 60 02 00 00 8c 0b 45 6e 67 69 6e 65 2e 69 6e 69 74 94 6a 60 02 00 00 8c 17 _name.j`.....Engine.init.j`.....
3d3c0 45 6e 67 69 6e 65 2e 6c 6f 61 64 5f 63 65 72 74 69 66 69 63 61 74 65 94 6a 60 02 00 00 8c 17 45 Engine.load_certificate.j`.....E
3d3e0 6e 67 69 6e 65 2e 6c 6f 61 64 5f 70 72 69 76 61 74 65 5f 6b 65 79 94 6a 60 02 00 00 8c 16 45 6e ngine.load_private_key.j`.....En
3d400 67 69 6e 65 2e 6c 6f 61 64 5f 70 75 62 6c 69 63 5f 6b 65 79 94 6a 60 02 00 00 8c 12 45 6e 67 69 gine.load_public_key.j`.....Engi
3d420 6e 65 2e 73 65 74 5f 64 65 66 61 75 6c 74 94 6a 60 02 00 00 6a 6d 15 00 00 6a 60 02 00 00 8c 07 ne.set_default.j`...jm...j`.....
3d440 63 6c 65 61 6e 75 70 94 6a 60 02 00 00 8c 0c 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 94 6a 60 02 00 cleanup.j`.....load_dynamic.j`..
3d460 00 8c 13 6c 6f 61 64 5f 64 79 6e 61 6d 69 63 5f 65 6e 67 69 6e 65 94 6a 60 02 00 00 8c 0c 6c 6f ...load_dynamic_engine.j`.....lo
3d480 61 64 5f 6f 70 65 6e 73 73 6c 94 6a 60 02 00 00 75 8c 0f 4d 32 43 72 79 70 74 6f 2e 45 6e 67 69 ad_openssl.j`...u..M2Crypto.Engi
3d4a0 6e 65 94 74 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 28 58 69 07 00 00 66 72 6f 6d 20 5f ne.t...M2Crypto.Err.(Xi...from._
3d4c0 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
3d4e0 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 53 .."""M2Crypto.wrapper.for.OpenSS
3d500 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 39 L.Error.API...Copyright.(c).1999
3d520 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
3d540 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
3d560 6f 72 74 20 42 49 4f 2c 20 6d 32 2c 20 75 74 69 6c 2c 20 73 69 78 20 20 23 20 6e 6f 71 61 0a 66 ort.BIO,.m2,.util,.six..#.noqa.f
3d580 72 6f 6d 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 rom.typing.import.Optional..#.no
3d5a0 71 61 0a 0a 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 qa...def.get_error():.....#.type
3d5c0 3a 20 28 29 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 :.().->.Optional[str].....err.=.
3d5e0 42 49 4f 2e 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 BIO.MemoryBuffer().....m2.err_pr
3d600 69 6e 74 5f 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 int_errors(err.bio_ptr()).....er
3d620 72 5f 6d 73 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 r_msg.=.err.read().....if.err_ms
3d640 67 3a 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 g:.........return.six.ensure_tex
3d660 74 28 65 72 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 t(err_msg)...def.get_error_code(
3d680 29 3a 0a 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 72 65 74 ):.....#.type:.().->.int.....ret
3d6a0 75 72 6e 20 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 urn.m2.err_get_error()...def.pee
3d6c0 6b 5f 65 72 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 k_error_code():.....#.type:.().-
3d6e0 3e 20 69 6e 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 >.int.....return.m2.err_peek_err
3d700 6f 72 28 29 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 or()...def.get_error_lib(err):..
3d720 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 29 20 2d 3e 20 73 74 ...#.type:.(Optional[int]).->.st
3d740 72 0a 20 20 20 20 65 72 72 5f 73 74 72 20 3d 20 6d 32 2e 65 72 72 5f 6c 69 62 5f 65 72 72 6f 72 r.....err_str.=.m2.err_lib_error
3d760 5f 73 74 72 69 6e 67 28 65 72 72 29 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 _string(err).....return.six.ensu
3d780 72 65 5f 74 65 78 74 28 65 72 72 5f 73 74 72 29 20 69 66 20 65 72 72 5f 73 74 72 20 65 6c 73 65 re_text(err_str).if.err_str.else
3d7a0 20 27 27 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 28 65 72 72 29 3a 0a 20 .''...def.get_error_func(err):..
3d7c0 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 29 20 2d 3e 20 73 74 ...#.type:.(Optional[int]).->.st
3d7e0 72 0a 20 20 20 20 65 72 72 5f 73 74 72 20 3d 20 6d 32 2e 65 72 72 5f 66 75 6e 63 5f 65 72 72 6f r.....err_str.=.m2.err_func_erro
3d800 72 5f 73 74 72 69 6e 67 28 65 72 72 29 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 r_string(err).....return.six.ens
3d820 75 72 65 5f 74 65 78 74 28 65 72 72 5f 73 74 72 29 20 69 66 20 65 72 72 5f 73 74 72 20 65 6c 73 ure_text(err_str).if.err_str.els
3d840 65 20 27 27 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 28 65 72 72 29 e.''...def.get_error_reason(err)
3d860 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 29 20 2d 3e :.....#.type:.(Optional[int]).->
3d880 20 73 74 72 0a 20 20 20 20 65 72 72 5f 73 74 72 20 3d 20 6d 32 2e 65 72 72 5f 72 65 61 73 6f 6e .str.....err_str.=.m2.err_reason
3d8a0 5f 65 72 72 6f 72 5f 73 74 72 69 6e 67 28 65 72 72 29 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 _error_string(err).....return.si
3d8c0 78 2e 65 6e 73 75 72 65 5f 74 65 78 74 28 65 72 72 5f 73 74 72 29 20 69 66 20 65 72 72 5f 73 74 x.ensure_text(err_str).if.err_st
3d8e0 72 20 65 6c 73 65 20 27 27 0a 0a 0a 64 65 66 20 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 r.else.''...def.get_error_messag
3d900 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 20 20 72 e():.....#.type:.().->.str.....r
3d920 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 6f 72 5f eturn.six.ensure_text(get_error_
3d940 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 65 66 20 reason(get_error_code()))...def.
3d960 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 20 20 20 get_x509_verify_error(err):.....
3d980 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 29 20 2d 3e 20 73 74 72 0a 20 #.type:.(Optional[int]).->.str..
3d9a0 20 20 20 65 72 72 5f 73 74 72 20 3d 20 6d 32 2e 78 35 30 39 5f 67 65 74 5f 76 65 72 69 66 79 5f ...err_str.=.m2.x509_get_verify_
3d9c0 65 72 72 6f 72 28 65 72 72 29 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 6e 73 75 72 65 error(err).....return.six.ensure
3d9e0 5f 74 65 78 74 28 65 72 72 5f 73 74 72 29 20 69 66 20 65 72 72 5f 73 74 72 20 65 6c 73 65 20 27 _text(err_str).if.err_str.else.'
3da00 27 0a 0a 0a 63 6c 61 73 73 20 53 53 4c 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 '...class.SSLError(Exception):..
3da20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 65 72 72 2c 20 63 6c 69 65 6e ...def.__init__(self,.err,.clien
3da40 74 5f 61 64 64 72 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 75 t_addr):.........#.type:.(int,.u
3da60 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 20 20 20 20 20 73 65 til.AddrType).->.None.........se
3da80 6c 66 2e 65 72 72 20 3d 20 65 72 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 69 65 6e 74 lf.err.=.err.........self.client
3daa0 5f 61 64 64 72 20 3d 20 63 6c 69 65 6e 74 5f 61 64 64 72 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 _addr.=.client_addr......def.__s
3dac0 74 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 tr__(self):.........#.type:.().-
3dae0 3e 20 73 74 72 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 >.str.........if.not.isinstance(
3db00 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 64 72 2c 20 73 69 78 2e 74 65 78 74 5f 74 79 70 65 29 self.client_addr,.six.text_type)
3db20 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 :.............s.=.self.client_ad
3db40 64 72 2e 64 65 63 6f 64 65 28 27 75 74 66 38 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a dr.decode('utf8').........else:.
3db60 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 65 6c 66 2e 63 6c 69 65 6e 74 5f 61 64 64 72 ............s.=.self.client_addr
3db80 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 25 73 3a 20 25 73 3a 20 25 73 22 20 25 20 28 .........return."%s:.%s:.%s".%.(
3dba0 67 65 74 5f 65 72 72 6f 72 5f 66 75 6e 63 28 73 65 6c 66 2e 65 72 72 29 2c 20 73 2c 0a 20 20 20 get_error_func(self.err),.s,....
3dbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f ............................get_
3dbe0 65 72 72 6f 72 5f 72 65 61 73 6f 6e 28 73 65 6c 66 2e 65 72 72 29 29 0a 0a 0a 63 6c 61 73 73 20 error_reason(self.err))...class.
3dc00 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 70 61 M2CryptoError(Exception):.....pa
3dc20 73 73 0a 94 7d 94 28 8c 09 67 65 74 5f 65 72 72 6f 72 94 6a 18 25 00 00 4b 0b 4b 11 87 94 8c 0e ss..}.(..get_error.j.%..K.K.....
3dc40 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 18 25 00 00 4b 14 4b 16 87 94 8c 0f 70 65 65 6b get_error_code.j.%..K.K.....peek
3dc60 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 18 25 00 00 4b 19 4b 1b 87 94 8c 0d 67 65 74 5f 65 72 72 _error_code.j.%..K.K.....get_err
3dc80 6f 72 5f 6c 69 62 94 6a 18 25 00 00 4b 1e 4b 21 87 94 8c 0e 67 65 74 5f 65 72 72 6f 72 5f 66 75 or_lib.j.%..K.K!....get_error_fu
3dca0 6e 63 94 6a 18 25 00 00 4b 24 4b 27 87 94 8c 10 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e nc.j.%..K$K'....get_error_reason
3dcc0 94 6a 18 25 00 00 4b 2a 4b 2d 87 94 8c 11 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 94 .j.%..K*K-....get_error_message.
3dce0 6a 18 25 00 00 4b 30 4b 32 87 94 8c 15 67 65 74 5f 78 35 30 39 5f 76 65 72 69 66 79 5f 65 72 72 j.%..K0K2....get_x509_verify_err
3dd00 6f 72 94 6a 18 25 00 00 4b 35 4b 38 87 94 8c 11 53 53 4c 45 72 72 6f 72 2e 5f 5f 69 6e 69 74 5f or.j.%..K5K8....SSLError.__init_
3dd20 5f 94 6a 18 25 00 00 4b 3c 4b 3f 87 94 8c 10 53 53 4c 45 72 72 6f 72 2e 5f 5f 73 74 72 5f 5f 94 _.j.%..K<K?....SSLError.__str__.
3dd40 6a 18 25 00 00 4b 41 4b 48 87 94 8c 08 53 53 4c 45 72 72 6f 72 94 6a 37 02 00 00 4b 3b 4b 48 87 j.%..KAKH....SSLError.j7...K;KH.
3dd60 94 8c 0d 4d 32 43 72 79 70 74 6f 45 72 72 6f 72 94 6a 37 02 00 00 4b 4b 4b 4c 87 94 75 7d 94 28 ...M2CryptoError.j7...KKKL..u}.(
3dd80 6a 7f 15 00 00 6a 60 02 00 00 6a 82 15 00 00 6a 60 02 00 00 8c 09 67 65 74 5f 65 72 72 6f 72 94 j....j`...j....j`.....get_error.
3dda0 6a 60 02 00 00 8c 0e 67 65 74 5f 65 72 72 6f 72 5f 63 6f 64 65 94 6a 60 02 00 00 8c 0e 67 65 74 j`.....get_error_code.j`.....get
3ddc0 5f 65 72 72 6f 72 5f 66 75 6e 63 94 6a 60 02 00 00 8c 0d 67 65 74 5f 65 72 72 6f 72 5f 6c 69 62 _error_func.j`.....get_error_lib
3dde0 94 6a 60 02 00 00 8c 11 67 65 74 5f 65 72 72 6f 72 5f 6d 65 73 73 61 67 65 94 6a 60 02 00 00 8c .j`.....get_error_message.j`....
3de00 10 67 65 74 5f 65 72 72 6f 72 5f 72 65 61 73 6f 6e 94 6a 60 02 00 00 8c 15 67 65 74 5f 78 35 30 .get_error_reason.j`.....get_x50
3de20 39 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 94 6a 60 02 00 00 8c 0f 70 65 65 6b 5f 65 72 72 6f 72 9_verify_error.j`.....peek_error
3de40 5f 63 6f 64 65 94 6a 60 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 45 72 72 94 74 94 8c 0c 4d _code.j`...u..M2Crypto.Err.t...M
3de60 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 5f 2Crypto.RC4.(Xj...from.__future_
3de80 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
3dea0 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 50 rypto.wrapper.for.OpenSSL.RC4.AP
3dec0 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 50 I...Copyright.(c).1999-2003.Ng.P
3dee0 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.
3df00 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 34 """..from.M2Crypto.m2.import.rc4
3df20 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 34 _free,.rc4_new,.rc4_set_key,.rc4
3df40 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 20 _update...class.RC4(object):....
3df60 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 65 ."""Object.interface.to.the.stre
3df80 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 20 am.cipher.RC4."""......rc4_free.
3dfa0 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 6c =.rc4_free......def.__init__(sel
3dfc0 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 62 f,.key=None):.........#.type:.(b
3dfe0 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 65 ytes).->.None.........self.ciphe
3e000 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 20 r.=.rc4_new().........if.key:...
3e020 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 65 ..........rc4_set_key(self.ciphe
3e040 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 0a r,.key)......def.__del__(self):.
3e060 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......
3e080 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 6f ...if.getattr(self,.'cipher',.No
3e0a0 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 73 ne):.............self.rc4_free(s
3e0c0 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 6c elf.cipher)......def.set_key(sel
3e0e0 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 29 f,.key):.........#.type:.(bytes)
3e100 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 6c .->.None.........rc4_set_key(sel
3e120 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 73 f.cipher,.key)......def.update(s
3e140 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 74 elf,.data):.........#.type:.(byt
3e160 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 5f es).->.bytes.........return.rc4_
3e180 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 64 update(self.cipher,.data)......d
3e1a0 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 20 ef.final(self):.........#.type:.
3e1c0 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 28 ().->.str.........return.''..}.(
3e1e0 8c 0c 52 43 34 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 0f 4b 13 87 94 8c 0b 52 43 34 2e ..RC4.__init__.j.%..K.K.....RC4.
3e200 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 15 4b 18 87 94 8c 0b 52 43 34 2e 73 65 74 5f 6b 65 79 __del__.j.%..K.K.....RC4.set_key
3e220 94 6a 18 25 00 00 4b 1a 4b 1c 87 94 8c 0a 52 43 34 2e 75 70 64 61 74 65 94 6a 18 25 00 00 4b 1e .j.%..K.K.....RC4.update.j.%..K.
3e240 4b 20 87 94 8c 09 52 43 34 2e 66 69 6e 61 6c 94 6a 18 25 00 00 4b 22 4b 24 87 94 8c 03 52 43 34 K.....RC4.final.j.%..K"K$....RC4
3e260 94 6a 37 02 00 00 4b 0a 4b 24 87 94 75 7d 94 28 8c 03 52 43 34 94 6a 60 02 00 00 8c 09 52 43 34 .j7...K.K$..u}.(..RC4.j`.....RC4
3e280 2e 66 69 6e 61 6c 94 6a 60 02 00 00 8c 0b 52 43 34 2e 73 65 74 5f 6b 65 79 94 6a 60 02 00 00 8c .final.j`.....RC4.set_key.j`....
3e2a0 0a 52 43 34 2e 75 70 64 61 74 65 94 6a 60 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 43 34 .RC4.update.j`...u..M2Crypto.RC4
3e2c0 94 74 94 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 53 41 94 28 58 6c 38 00 00 66 72 6f 6d 20 5f 5f 66 .t...M2Crypto.RSA.(Xl8..from.__f
3e2e0 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 0a uture__.import.absolute_import..
3e300 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 20 """M2Crypto.wrapper.for.OpenSSL.
3e320 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 30 RSA.API...Copyright.(c).1999-200
3e340 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 73 4.Ng.Pheng.Siong..All.rights.res
3e360 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 72 erved."""..import.sys..from.M2Cr
3e380 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 66 ypto.import.BIO,.Err,.m2,.util.f
3e3a0 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
3e3c0 61 6c 6c 61 62 6c 65 2c 20 49 4f 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 20 20 23 20 allable,.IO,.Optional,.Tuple..#.
3e3e0 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 6f 6e 29 noqa...class.RSAError(Exception)
3e400 3a 0a 20 20 20 20 70 61 73 73 0a 0a 0a 6d 32 2e 72 73 61 5f 69 6e 69 74 28 52 53 41 45 72 72 6f :.....pass...m2.rsa_init(RSAErro
3e420 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 0a 70 r)..no_padding.=.m2.no_padding.p
3e440 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 67 0a kcs1_padding.=.m2.pkcs1_padding.
3e460 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 64 69 sslv23_padding.=.m2.sslv23_paddi
3e480 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 73 31 ng.pkcs1_oaep_padding.=.m2.pkcs1
3e4a0 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 63 74 _oaep_padding...class.RSA(object
3e4c0 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 20 20 ):.....""".....RSA.Key.Pair.....
3e4e0 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 5f 66 ."""......m2_rsa_free.=.m2.rsa_f
3e500 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 61 2c ree......def.__init__(self,.rsa,
3e520 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 62 79 ._pyfree=0):.........#.type:.(by
3e540 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 20 20 tes,.int).->.None........."""...
3e560 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 73 65 ......:param.rsa:.binary.represe
3e580 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 20 20 ntation.of.OpenSSL.RSA.type.....
3e5a0 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 74 79 ....""".........assert.m2.rsa_ty
3e5c0 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 6f 72 pe_check(rsa),."'rsa'.type.error
3e5e0 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 20 20 ".........self.rsa.=.rsa........
3e600 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
3e620 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:.
3e640 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 65 ().->.None.........if.getattr(se
3e660 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 73 lf,.'_pyfree',.0):.............s
3e680 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 20 64 elf.m2_rsa_free(self.rsa)......d
3e6a0 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 65 ef.__len__(self):.........#.type
3e6c0 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 28 6d :.().->.int.........return.int(m
3e6e0 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 20 20 2.rsa_size(self.rsa).<<.3)......
3e700 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 20 20 def.__getattr__(self,.name):....
3e720 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 20 20 .....#.type:.(str).->.bytes.....
3e740 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 20 20 ....if.name.==.'e':.............
3e760 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 20 20 return.m2.rsa_get_e(self.rsa)...
3e780 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 20 20 ......elif.name.==.'n':.........
3e7a0 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 73 61 ....return.m2.rsa_get_n(self.rsa
3e7c0 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 69 73 ).........else:.............rais
3e7e0 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 73 65 e.AttributeError......def.pub(se
3e800 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 6c 65 lf):.........#.type:.().->.Tuple
3e820 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 73 65 [bytes,.bytes].........assert.se
3e840 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 69 74 lf.check_key(),.'key.is.not.init
3e860 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 5f 67 ialised'.........return.m2.rsa_g
3e880 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 65 6c et_e(self.rsa),.m2.rsa_get_n(sel
3e8a0 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 28 73 f.rsa)......def.public_encrypt(s
3e8c0 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 20 74 elf,.data,.padding):.........#.t
3e8e0 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 20 20 ype:.(bytes,.int).->.bytes......
3e900 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
3e920 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
3e940 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 2e 72 urn.m2.rsa_public_encrypt(self.r
3e960 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 62 6c sa,.data,.padding)......def.publ
3e980 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 29 3a ic_decrypt(self,.data,.padding):
3e9a0 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 2d 3e .........#.type:.(bytes,.int).->
3e9c0 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 63 6b .bytes.........assert.self.check
3e9e0 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'
3ea00 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 64 65 .........return.m2.rsa_public_de
3ea20 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 0a 0a crypt(self.rsa,.data,.padding)..
3ea40 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 64 61 ....def.private_encrypt(self,.da
3ea60 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 28 62 ta,.padding):.........#.type:.(b
3ea80 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 73 65 ytes,.int).->.bytes.........asse
3eaa0 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 6f 74 rt.self.check_key(),.'key.is.not
3eac0 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 32 2e .initialised'.........return.m2.
3eae0 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 64 61 rsa_private_encrypt(self.rsa,.da
3eb00 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 64 65 ta,.padding)......def.private_de
3eb20 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 20 20 crypt(self,.data,.padding):.....
3eb40 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 74 65 ....#.type:.(bytes,.int).->.byte
3eb60 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 79 28 s.........assert.self.check_key(
3eb80 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 20 20 ),.'key.is.not.initialised'.....
3eba0 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 79 70 ....return.m2.rsa_private_decryp
3ebc0 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 20 20 t(self.rsa,.data,.padding)......
3ebe0 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 70 68 def.save_key_bio(self,.bio,.ciph
3ec00 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 20 20 er='aes_128_cbc',...............
3ec20 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 65 5f .......callback=util.passphrase_
3ec40 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 4f 2e callback):.........#.type:.(BIO.
3ec60 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 2d 3e BIO,.Optional[str],.Callable).->
3ec80 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 74 68 .int.........""".........Save.th
3eca0 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 42 49 e.key.pair.to.an.M2Crypto.BIO.BI
3ecc0 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 20 20 O.object.in.PEM.format..........
3ece0 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 6f 62 .:param.bio:.M2Crypto.BIO.BIO.ob
3ed00 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 3a 70 ject.to.save.key.to...........:p
3ed20 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 74 6f aram.cipher:.Symmetric.cipher.to
3ed40 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 20 20 .protect.the.key..The.default...
3ed60 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 20 27 .....................cipher.is.'
3ed80 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 65 2c aes_128_cbc'..If.cipher.is.None,
3eda0 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 68 65 .then........................the
3edc0 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 20 20 .key.is.saved.in.the.clear......
3ede0 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 20 63 .....:param.callback:.A.Python.c
3ee00 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 0a 20 allable.object.that.is.invoked..
3ee20 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 75 69 ........................to.acqui
3ee40 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 70 72 re.a.passphrase.with.which.to.pr
3ee60 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 20 74 otect..........................t
3ee80 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 20 20 he.key...The.default.is.........
3eea0 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 73 65 .................util.passphrase
3eec0 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 20 69 _callback..........""".........i
3eee0 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 65 f.cipher.is.None:.............re
3ef00 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 72 28 turn.m2.rsa_write_key_no_cipher(
3ef20 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 29 0a self.rsa,.bio._ptr(),.callback).
3ef40 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 20 3d ........else:.............ciph.=
3ef60 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 20 20 .getattr(m2,.cipher,.None)......
3ef80 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 20 20 .......if.ciph.is.None:.........
3efa0 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 63 68 ........raise.RSAError('not.such
3efc0 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 20 .cipher.%s'.%.cipher)...........
3efe0 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 20 63 ..else:.................ciph.=.c
3f000 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 61 5f iph().............return.m2.rsa_
3f020 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 2c 20 write_key(self.rsa,.bio._ptr(),.
3f040 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 6b 65 ciph,.callback)......def.save_ke
3f060 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 63 62 y(self,.file,.cipher='aes_128_cb
3f080 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 75 74 c',..................callback=ut
3f0a0 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 20 20 il.passphrase_callback):........
3f0c0 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 5d 2c .#.type:.(AnyStr,.Optional[str],
3f0e0 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 20 20 .Callable).->.int........."""...
3f100 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 69 6c ......Save.the.key.pair.to.a.fil
3f120 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 61 6d e.in.PEM.format...........:param
3f140 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 79 20 .file:.Name.of.file.to.save.key.
3f160 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 6d 6d to...........:param.cipher:.Symm
3f180 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 79 2e etric.cipher.to.protect.the.key.
3f1a0 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 20 20 .The.default....................
3f1c0 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 66 20 ....cipher.is.'aes_128_cbc'..If.
3f1e0 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 20 20 cipher.is.None,.then............
3f200 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 6e 20 ............the.key.is.saved.in.
3f220 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 6c 62 the.clear...........:param.callb
3f240 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 74 68 ack:.A.Python.callable.object.th
3f260 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 20 20 at.is.invoked...................
3f280 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 20 77 .......to.acquire.a.passphrase.w
3f2a0 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 20 20 ith.which.to.protect............
3f2c0 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 66 61 ..............the.key...The.defa
3f2e0 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 20 20 ult.is..........................
3f300 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 20 20 util.passphrase_callback........
3f320 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 65 28 ..""".........with.BIO.openfile(
3f340 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 20 20 file,.'wb').as.bio:.............
3f360 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 63 69 return.self.save_key_bio(bio,.ci
3f380 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 3d 20 pher,.callback)......save_pem.=.
3f3a0 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 20 63 save_key......def.as_pem(self,.c
3f3c0 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 75 74 ipher='aes_128_cbc',.callback=ut
3f3e0 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 20 20 il.passphrase_callback):........
3f400 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 62 6c .#.type:.(Optional[str],.Callabl
3f420 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 20 20 e).->.bytes.........""".........
3f440 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 69 6e Returns.the.key(pair).as.a.strin
3f460 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 20 20 g.in.PEM.format.........."""....
3f480 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 20 20 .....bio.=.BIO.MemoryBuffer()...
3f4a0 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 69 70 ......self.save_key_bio(bio,.cip
3f4c0 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 62 69 her,.callback).........return.bi
3f4e0 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 5f 62 o.read()......def.save_key_der_b
3f500 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 20 28 io(self,.bio):.........#.type:.(
3f520 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 20 20 BIO.BIO).->.int.........""".....
3f540 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 43 72 ....Save.the.key.pair.to.an.M2Cr
3f560 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 6d 61 ypto.BIO.BIO.object.in.DER.forma
3f580 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 74 6f t...........:param.bio:.M2Crypto
3f5a0 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 2e 0a .BIO.BIO.object.to.save.key.to..
3f5c0 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 72 73 ........""".........return.m2.rs
3f5e0 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 5f 70 a_write_key_der(self.rsa,.bio._p
3f600 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 6c 66 tr())......def.save_key_der(self
3f620 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 74 72 ,.file):.........#.type:.(AnyStr
3f640 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 61 76 ).->.int.........""".........Sav
3f660 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 52 20 e.the.key.pair.to.a.file.in.DER.
3f680 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 46 69 format...........:param.file:.Fi
3f6a0 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 22 22 lename.to.save.key.to.........""
3f6c0 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
3f6e0 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
3f700 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 0a 20 rn.self.save_key_der_bio(bio)...
3f720 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 62 69 ...def.save_pub_key_bio(self,.bi
3f740 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 2d 3e o):.........#.type:.(BIO.BIO).->
3f760 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 74 68 .int.........""".........Save.th
3f780 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 4f 2e e.public.key.to.an.M2Crypto.BIO.
3f7a0 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........
3f7c0 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.
3f7e0 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 20 22 object.to.save.key.to.........."
3f800 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 5f 70 "".........return.m2.rsa_write_p
3f820 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 20 20 ub_key(self.rsa,.bio._ptr())....
3f840 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 3a 0a ..def.save_pub_key(self,.file):.
3f860 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 74 0a ........#.type:.(AnyStr).->.int.
3f880 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 75 62 ........""".........Save.the.pub
3f8a0 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 74 2e lic.key.to.a.file.in.PEM.format.
3f8c0 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 20 66 ..........:param.file:.Name.of.f
3f8e0 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 22 0a ile.to.save.key.to..........""".
3f900 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 2c 20 ........with.BIO.openfile(file,.
3f920 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 72 6e 'wb').as.bio:.............return
3f940 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 2c 20 .m2.rsa_write_pub_key(self.rsa,.
3f960 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 28 73 bio._ptr())......def.check_key(s
3f980 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 0a elf):.........#.type:.().->.int.
3f9a0 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 53 41 ........""".........Validate.RSA
3f9c0 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 20 70 .keys...........It.checks.that.p
3f9e0 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 74 68 .and.q.are.in.fact.prime,.and.th
3fa00 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 72 65 at.n.=.p*q...........:return:.re
3fa20 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 6b 65 turns.1.if.rsa.is.a.valid.RSA.ke
3fa40 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 20 20 y,.and.0.otherwise..............
3fa60 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 72 20 .....-1.is.returned.if.an.error.
3fa80 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 0a 20 occurs.while.checking.the.key...
3faa0 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 69 6e ................If.the.key.is.in
3fac0 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 65 20 valid.or.an.error.occurred,.the.
3fae0 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 61 6e reason..................code.can
3fb00 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 6f 72 .be.obtained.using.ERR_get_error
3fb20 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 6e 20 (3)..........""".........return.
3fb40 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 20 20 m2.rsa_check_key(self.rsa)......
3fb60 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 73 74 def.sign_rsassa_pss(self,.digest
3fb80 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 3a 0a ,.algo='sha1',.salt_length=20):.
3fba0 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 6e 74 ........#.type:.(bytes,.str,.int
3fbc0 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 53 ).->.bytes.........""".........S
3fbe0 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 20 6b igns.a.digest.with.the.private.k
3fc00 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 70 61 ey.using.RSASSA-PSS..........:pa
3fc20 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 79 20 ram.digest:.A.digest.created.by.
3fc40 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 20 20 using.the.digest.method.........
3fc60 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 68 20 .:param.salt_length:.The.length.
3fc80 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 61 72 of.the.salt.to.use..........:par
3fca0 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
3fcc0 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
3fce0 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 61 32 lues.like.'sha1','sha224',.'sha2
3fd00 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 65 6d 56',......................'ripem
3fd20 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 74 75 d160',.and.'md5'...........:retu
3fd40 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 61 74 rn:.a.string.which.is.the.signat
3fd60 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 20 67 ure.........""".........hash.=.g
3fd80 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 20 20 etattr(m2,.algo,.None)..........
3fda0 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 61 69 if.hash.is.None:.............rai
3fdc0 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 6f 72 se.RSAError('not.such.hash.algor
3fde0 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 61 74 ithm.%s'.%.algo)..........signat
3fe00 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 5f 70 ure.=.m2.rsa_padding_add_pkcs1_p
3fe20 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 61 6c ss(self.rsa,.digest,.hash(),.sal
3fe40 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 2e 70 t_length)..........return.self.p
3fe60 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 6f 5f rivate_encrypt(signature,.m2.no_
3fe80 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 61 5f padding)......def.verify_rsassa_
3fea0 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 6f 3d pss(self,.data,.signature,.algo=
3fec0 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 20 20 'sha1',.salt_length=20):........
3fee0 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 6e 74 .#.type:.(bytes,.bytes,.str,.int
3ff00 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 65 72 ).->.int.........""".........Ver
3ff20 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 0a 0a ifies.the.signature.RSASSA-PSS..
3ff40 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 20 68 ........:param.data:.Data.that.h
3ff60 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 20 73 as.been.signed..........:param.s
3ff80 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 20 77 ignature:.The.signature.signed.w
3ffa0 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 20 73 ith.RSASSA-PSS..........:param.s
3ffc0 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 73 61 alt_length:.The.length.of.the.sa
3ffe0 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 61 6d lt.that.was.used..........:param
40000 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 73 65 .algo:.The.hash.algorithm.to.use
40020 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 6c 75 ......................Legal.valu
40040 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 32 32 es.are.for.example.'sha1','sha22
40060 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 35 36 4',......................'sha256
40080 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 20 20 ',.'ripemd160',.and.'md5'.......
400a0 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 20 6f ....:return:.1.or.0,.depending.o
400c0 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 20 20 n.whether.the.signature.was.....
400e0 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 20 20 .............verified.or.not....
40100 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 74 72 ......""".........hash.=.getattr
40120 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 61 73 (m2,.algo,.None)..........if.has
40140 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 53 41 h.is.None:.............raise.RSA
40160 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 20 25 Error('not.such.hash.algorithm.%
40180 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 61 74 s'.%.algo)..........plain_signat
401a0 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 61 74 ure.=.self.public_decrypt(signat
401c0 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 65 74 ure,.m2.no_padding)..........ret
401e0 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 6c 66 urn.m2.rsa_verify_pkcs1_pss(self
40200 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 61 73 .rsa,.data,.plain_signature,.has
40220 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 6e 28 h(),.salt_length)......def.sign(
40240 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 20 20 self,.digest,.algo='sha1'):.....
40260 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 74 65 ....#.type:.(bytes,.str).->.byte
40280 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 64 69 s.........""".........Signs.a.di
402a0 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 20 20 gest.with.the.private.key.......
402c0 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 61 74 ...:param.digest:.A.digest.creat
402e0 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 0a 20 ed.by.using.the.digest.method...
40300 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 20 74 .......:param.algo:.The.method.t
40320 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 20 20 hat.created.the.digest..........
40340 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 20 27 .............Legal.values.like.'
40360 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 20 20 sha1','sha224',.'sha256',.......
40380 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 64 20 ...............'ripemd160',.and.
403a0 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 69 6e 'md5'...........:return:.a.strin
403c0 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 20 20 g.which.is.the.signature........
403e0 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 61 74 .""".........digest_type.=.getat
40400 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 20 20 tr(m2,.'NID_'.+.algo,.None).....
40420 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 20 20 ....if.digest_type.is.None:.....
40440 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 6f 77 ........raise.ValueError('unknow
40460 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 65 74 n.algorithm',.algo)..........ret
40480 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 73 74 urn.m2.rsa_sign(self.rsa,.digest
404a0 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 28 73 ,.digest_type)......def.verify(s
404c0 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 61 31 elf,.data,.signature,.algo='sha1
404e0 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 74 65 '):.........#.type:.(bytes,.byte
40500 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 20 20 s,.str).->.int........."""......
40520 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 20 74 ...Verifies.the.signature.with.t
40540 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 64 61 he.public.key..........:param.da
40560 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 0a 20 ta:.Data.that.has.been.signed...
40580 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 69 67 .......:param.signature:.The.sig
405a0 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 20 6b nature.signed.with.the.private.k
405c0 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 65 74 ey..........:param.algo:.The.met
405e0 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 74 68 hod.use.to.create.digest.from.th
40600 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 66 6f e.data......................befo
40620 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 73 20 re.it.was.signed...Legal.values.
40640 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 31 27 like......................'sha1'
40660 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 30 27 ,'sha224',.'sha256',.'ripemd160'
40680 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 20 31 ,.and.'md5'...........:return:.1
406a0 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 65 20 .or.0,.depending.on.whether.the.
406c0 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 20 76 signature.was..................v
406e0 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 20 20 erified.or.not..........""".....
40700 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 27 4e ....digest_type.=.getattr(m2,.'N
40720 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 64 69 ID_'.+.algo,.None).........if.di
40740 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 20 72 gest_type.is.None:.............r
40760 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 69 74 aise.ValueError('unknown.algorit
40780 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 72 73 hm',.algo)..........return.m2.rs
407a0 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 74 75 a_verify(self.rsa,.data,.signatu
407c0 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 75 62 re,.digest_type)...class.RSA_pub
407e0 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 65 72 (RSA):......""".....Object.inter
40800 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 20 22 face.to.an.RSA.public.key......"
40820 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 6e 61 ""......def.__setattr__(self,.na
40840 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 74 72 me,.value):.........#.type:.(str
40860 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 6d 65 ,.bytes).->.None.........if.name
40880 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 69 73 .in.['e',.'n']:.............rais
408a0 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 6f 6e e.RSAError('use.factory.function
408c0 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 0a 20 .new_pub_key().to.set.(e,.n)')..
408e0 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 5f 5f .......else:.............self.__
40900 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 70 72 dict__[name].=.value......def.pr
40920 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 20 20 ivate_encrypt(self,.*argv):.....
40940 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 20 20 ....#.type:.(*Any).->.None......
40960 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 65 63 ...raise.RSAError('RSA_pub.objec
40980 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 66 20 t.has.no.private.key')......def.
409a0 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 20 20 private_decrypt(self,.*argv):...
409c0 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....
409e0 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
40a00 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
40a20 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 2a 2a f.save_key(self,.file,.*args,.**
40a40 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 2a 41 kw):.........#.type:.(AnyStr,.*A
40a60 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 20 20 ny,.**Any).->.int........."""...
40a80 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 0a 20 ......Save.public.key.to.file...
40aa0 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 2e 73 .......""".........return.self.s
40ac0 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 65 5f ave_pub_key(file)......def.save_
40ae0 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 29 3a key_bio(self,.bio,.*args,.**kw):
40b00 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 79 2c .........#.type:.(BIO.BIO,.*Any,
40b20 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 20 20 .**Any).->.int........."""......
40b40 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 20 20 ...Save.public.key.to.BIO.......
40b60 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 65 5f ...""".........return.self.save_
40b80 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 65 79 pub_key_bio(bio)......#.save_key
40ba0 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 20 20 _der......#.save_key_der_bio....
40bc0 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 20 23 ..def.check_key(self):.........#
40be0 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.
40c00 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 0a 0a m2.rsa_check_pub_key(self.rsa)..
40c20 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 28 29 .def.rsa_error():.....#.type:.()
40c40 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 72 2e .->.None.....raise.RSAError(Err.
40c60 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 67 65 get_error_message())...def.keyge
40c80 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 74 29 n_callback(p,.n,.out=sys.stdout)
40ca0 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 72 5d :.....#.type:.(int,.Any,.IO[str]
40cc0 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 63 61 ).->.None.....""".....Default.ca
40ce0 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 20 20 llback.for.gen_key()......"""...
40d00 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 20 20 ..ch.=.['.',.'+',.'*',.'\n']....
40d20 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 68 28 .out.write(ch[p]).....out.flush(
40d40 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 61 63 )...def.gen_key(bits,.e,.callbac
40d60 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 3a 20 k=keygen_callback):.....#.type:.
40d80 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 20 20 (int,.int,.Callable).->.RSA.....
40da0 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 69 72 """.....Generate.an.RSA.key.pair
40dc0 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 2c 20 .......:param.bits:.Key.length,.
40de0 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 41 20 in.bits.......:param.e:.The.RSA.
40e00 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 61 6c public.exponent.......:param.cal
40e20 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.
40e40 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.................
40e60 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 73 20 .....during.key.generation;.its.
40e80 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 20 20 usual.purpose.is.to.............
40ea0 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 63 6b .........provide.visual.feedback
40ec0 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 20 20 ..The.default.callback.is.......
40ee0 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 2e 0a ...............keygen_callback..
40f00 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 20 6f .....:return:.M2Crypto.RSA.RSA.o
40f20 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 6d 32 bject......""".....return.RSA(m2
40f40 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 6c 62 .rsa_generate_key(bits,.e,.callb
40f60 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 63 61 ack),.1)...def.load_key(file,.ca
40f80 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 29 llback=util.passphrase_callback)
40fa0 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 65 29 :.....#.type:.(AnyStr,.Callable)
40fc0 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.
40fe0 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 6d 20 key.pair.from.file.......:param.
41000 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
41020 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......
41040 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 61 .:param.callback:.A.Python.calla
41060 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 20 ble.object.that.is.invoked......
41080 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 73 ................to.acquire.a.pas
410a0 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 68 65 sphrase.with.which.to.unlock.the
410c0 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 65 20 ......................key...The.
410e0 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 6c 62 default.is.util.passphrase_callb
41100 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 41 2e ack.......:return:.M2Crypto.RSA.
41120 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 49 4f RSA.object......""".....with.BIO
41140 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 20 20 .openfile(file).as.bio:.........
41160 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
41180 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
411a0 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):..
411c0 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).-
411e0 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 6b 65 >.RSA.....""".....Load.an.RSA.ke
41200 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 4f 20 y.pair.from.an.M2Crypto.BIO.BIO.
41220 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 70 74 object.......:param.bio:.M2Crypt
41240 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 41 20 o.BIO.BIO.object.containing.RSA.
41260 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 20 20 key.pair.in.PEM.................
41280 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 41 20 format.......:param.callback:.A.
412a0 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 20 69 Python.callable.object.that.is.i
412c0 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 20 61 nvoked......................to.a
412e0 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 20 74 cquire.a.passphrase.with.which.t
41300 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 20 20 o.unlock.the....................
41320 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 73 73 ..key...The.default.is.util.pass
41340 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 20 4d phrase_callback.......:return:.M
41360 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 22 0a 2Crypto.RSA.RSA.object......""".
41380 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 5f 70 ....rsa.=.m2.rsa_read_key(bio._p
413a0 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 4e 6f tr(),.callback).....if.rsa.is.No
413c0 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 74 75 ne:.........rsa_error().....retu
413e0 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 73 74 rn.RSA(rsa,.1)...def.load_key_st
41400 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 73 70 ring(string,.callback=util.passp
41420 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 41 6e hrase_callback):.....#.type:.(An
41440 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 0a 20 yStr,.Callable).->.RSA....."""..
41460 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 20 73 ...Load.an.RSA.key.pair.from.a.s
41480 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 69 6e tring.......:param.string:.Strin
414a0 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 45 4d g.containing.RSA.key.pair.in.PEM
414c0 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 41 .format.......:param.callback:.A
414e0 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 20 .Python.callable.object.that.is.
41500 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 20 invoked......................to.
41520 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 20 acquire.a.passphrase.with.which.
41540 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 20 to.unlock.the...................
41560 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 73 73 ...key..The.default.is.util.pass
41580 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 20 4d phrase_callback.......:return:.M
415a0 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 22 0a 2Crypto.RSA.RSA.object......""".
415c0 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 69 6e ....bio.=.BIO.MemoryBuffer(strin
415e0 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 2c 20 g).....return.load_key_bio(bio,.
41600 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 69 6c callback)...def.load_pub_key(fil
41620 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 41 5f e):.....#.type:.(AnyStr).->.RSA_
41640 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 62 6c pub.....""".....Load.an.RSA.publ
41660 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 66 69 ic.key.from.file.......:param.fi
41680 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 41 20 le:.Name.of.file.containing.RSA.
416a0 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 20 3a public.key.in.PEM.format.......:
416c0 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 62 6a return:.M2Crypto.RSA.RSA_pub.obj
416e0 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 66 69 ect......""".....with.BIO.openfi
41700 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 6e 20 le(file).as.bio:.........return.
41720 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 61 64 load_pub_key_bio(bio)...def.load
41740 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 20 28 _pub_key_bio(bio):.....#.type:.(
41760 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 20 20 BIO.BIO).->.RSA_pub.....""".....
41780 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 20 4d Load.an.RSA.public.key.from.an.M
417a0 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 70 61 2Crypto.BIO.BIO.object.......:pa
417c0 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 63 74 ram.bio:.M2Crypto.BIO.BIO.object
417e0 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 50 45 .containing.RSA.public.key.in.PE
41800 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 20 3a M.................format.......:
41820 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 62 6a return:.M2Crypto.RSA.RSA_pub.obj
41840 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 72 65 ect......""".....rsa.=.m2.rsa_re
41860 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 72 73 ad_pub_key(bio._ptr()).....if.rs
41880 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 0a 20 a.is.None:.........rsa_error()..
418a0 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 66 20 ...return.RSA_pub(rsa,.1)...def.
418c0 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 28 54 new_pub_key(e_n):.....#.type:.(T
418e0 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 0a 20 uple[bytes,.bytes]).->.RSA_pub..
41900 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 70 75 ...""".....Instantiate.an.RSA_pu
41920 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 0a 0a b.object.from.an.(e,.n).tuple...
41940 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 78 70 ....:param.e:.The.RSA.public.exp
41960 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 53 4c onent;.it.is.a.string.in.OpenSSL
41980 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 2d 20 's.MPINT...............format.-.
419a0 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 6c 6c 4-byte.big-endian.bit-count.foll
419c0 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 6f 70 owed.by.the...............approp
419e0 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 72 61 riate.number.of.bits.......:para
41a00 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 65 73 m.n:.The.RSA.composite.of.primes
41a20 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 20 20 ;.it.is.a.string.in.OpenSSL's...
41a40 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 79 74 ............MPINT.format.-.4-byt
41a60 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 64 20 e.big-endian.bit-count.followed.
41a80 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 74 65 by.the...............appropriate
41aa0 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 20 4d .number.of.bits.......:return:.M
41ac0 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 20 20 2Crypto.RSA.RSA_pub.object......
41ae0 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 20 6d """.....(e,.n).=.e_n.....rsa.=.m
41b00 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 72 73 2.rsa_new().....m2.rsa_set_en(rs
41b20 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 61 2c a,.e,.n).....return.RSA_pub(rsa,
41b40 20 31 29 0a 94 7d 94 28 8c 08 52 53 41 45 72 72 6f 72 94 6a 37 02 00 00 4b 0d 4b 0e 87 94 8c 0c .1)..}.(..RSAError.j7...K.K.....
41b60 52 53 41 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 20 4b 27 87 94 8c 0b 52 53 41 2e 5f 5f RSA.__init__.j.%..K.K'....RSA.__
41b80 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 29 4b 2c 87 94 8c 0b 52 53 41 2e 5f 5f 6c 65 6e 5f 5f 94 6a del__.j.%..K)K,....RSA.__len__.j
41ba0 18 25 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 18 25 00 .%..K.K0....RSA.__getattr__.j.%.
41bc0 00 4b 32 4b 39 87 94 8c 07 52 53 41 2e 70 75 62 94 6a 18 25 00 00 4b 3b 4b 3e 87 94 8c 12 52 53 .K2K9....RSA.pub.j.%..K;K>....RS
41be0 41 2e 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 94 6a 18 25 00 00 4b 40 4b 43 87 94 8c 12 52 53 A.public_encrypt.j.%..K@KC....RS
41c00 41 2e 70 75 62 6c 69 63 5f 64 65 63 72 79 70 74 94 6a 18 25 00 00 4b 45 4b 48 87 94 8c 13 52 53 A.public_decrypt.j.%..KEKH....RS
41c20 41 2e 70 72 69 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 18 25 00 00 4b 4a 4b 4d 87 94 8c 13 52 A.private_encrypt.j.%..KJKM....R
41c40 53 41 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 18 25 00 00 4b 4f 4b 52 87 94 8c 10 SA.private_decrypt.j.%..KOKR....
41c60 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4b 54 4b 6d 87 94 8c 0c 52 53 RSA.save_key_bio.j.%..KTKm....RS
41c80 41 2e 73 61 76 65 5f 6b 65 79 94 6a 18 25 00 00 4b 6f 4b 81 87 94 8c 0a 52 53 41 2e 61 73 5f 70 A.save_key.j.%..KoK.....RSA.as_p
41ca0 65 6d 94 6a 18 25 00 00 4b 85 4b 8c 87 94 8c 14 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 em.j.%..K.K.....RSA.save_key_der
41cc0 5f 62 69 6f 94 6a 18 25 00 00 4b 8e 4b 95 87 94 8c 10 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 _bio.j.%..K.K.....RSA.save_key_d
41ce0 65 72 94 6a 18 25 00 00 4b 97 4b 9f 87 94 8c 14 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 er.j.%..K.K.....RSA.save_pub_key
41d00 5f 62 69 6f 94 6a 18 25 00 00 4b a1 4b a8 87 94 8c 10 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b _bio.j.%..K.K.....RSA.save_pub_k
41d20 65 79 94 6a 18 25 00 00 4b aa 4b b2 87 94 8c 0d 52 53 41 2e 63 68 65 63 6b 5f 6b 65 79 94 6a 18 ey.j.%..K.K.....RSA.check_key.j.
41d40 25 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 73 94 6a %..K.K.....RSA.sign_rsassa_pss.j
41d60 18 25 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 5f 70 73 .%..K.K.....RSA.verify_rsassa_ps
41d80 73 94 6a 18 25 00 00 4b da 4b f3 87 94 8c 08 52 53 41 2e 73 69 67 6e 94 6a 18 25 00 00 4b f5 4d s.j.%..K.K.....RSA.sign.j.%..K.M
41da0 06 01 87 94 8c 0a 52 53 41 2e 76 65 72 69 66 79 94 6a 18 25 00 00 4d 08 01 4d 1c 01 87 94 8c 03 ......RSA.verify.j.%..M..M......
41dc0 52 53 41 94 6a 37 02 00 00 4b 19 4d 1c 01 87 94 8c 13 52 53 41 5f 70 75 62 2e 5f 5f 73 65 74 61 RSA.j7...K.M......RSA_pub.__seta
41de0 74 74 72 5f 5f 94 6a 18 25 00 00 4d 25 01 4d 2a 01 87 94 8c 17 52 53 41 5f 70 75 62 2e 70 72 69 ttr__.j.%..M%.M*.....RSA_pub.pri
41e00 76 61 74 65 5f 65 6e 63 72 79 70 74 94 6a 18 25 00 00 4d 2c 01 4d 2e 01 87 94 8c 17 52 53 41 5f vate_encrypt.j.%..M,.M......RSA_
41e20 70 75 62 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 74 94 6a 18 25 00 00 4d 30 01 4d 32 01 87 pub.private_decrypt.j.%..M0.M2..
41e40 94 8c 10 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 6a 18 25 00 00 4d 34 01 4d 39 01 87 ...RSA_pub.save_key.j.%..M4.M9..
41e60 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 18 25 00 00 4d 3b 01 ...RSA_pub.save_key_bio.j.%..M;.
41e80 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 18 25 00 00 4d 46 M@.....RSA_pub.check_key.j.%..MF
41ea0 01 4d 48 01 87 94 8c 07 52 53 41 5f 70 75 62 94 6a 37 02 00 00 4d 1f 01 4d 48 01 87 94 8c 09 72 .MH.....RSA_pub.j7...M..MH.....r
41ec0 73 61 5f 65 72 72 6f 72 94 6a 18 25 00 00 4d 4b 01 4d 4d 01 87 94 8c 0f 6b 65 79 67 65 6e 5f 63 sa_error.j.%..MK.MM.....keygen_c
41ee0 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4d 50 01 4d 57 01 87 94 8c 07 67 65 6e 5f 6b 65 79 94 6a allback.j.%..MP.MW.....gen_key.j
41f00 18 25 00 00 4d 5a 01 4d 6a 01 87 94 8c 08 6c 6f 61 64 5f 6b 65 79 94 6a 18 25 00 00 4d 6d 01 4d .%..MZ.Mj.....load_key.j.%..Mm.M
41f20 7b 01 87 94 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d 7e 01 4d 8f 01 87 94 {.....load_key_bio.j.%..M~.M....
41f40 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 18 25 00 00 4d 92 01 4d a0 01 87 94 8c ..load_key_string.j.%..M..M.....
41f60 0c 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 94 6a 18 25 00 00 4d a3 01 4d ad 01 87 94 8c 10 6c 6f 61 .load_pub_key.j.%..M..M......loa
41f80 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4d b0 01 4d bd 01 87 94 8c 0b 6e 65 77 d_pub_key_bio.j.%..M..M......new
41fa0 5f 70 75 62 5f 6b 65 79 94 6a 18 25 00 00 4d c0 01 4d d2 01 87 94 75 7d 94 28 8c 03 52 53 41 94 _pub_key.j.%..M..M....u}.(..RSA.
41fc0 6a 60 02 00 00 8c 0a 52 53 41 2e 61 73 5f 70 65 6d 94 6a 60 02 00 00 8c 0d 52 53 41 2e 63 68 65 j`.....RSA.as_pem.j`.....RSA.che
41fe0 63 6b 5f 6b 65 79 94 6a 60 02 00 00 8c 13 52 53 41 2e 70 72 69 76 61 74 65 5f 64 65 63 72 79 70 ck_key.j`.....RSA.private_decryp
42000 74 94 6a 60 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 6a 60 02 t.j`.....RSA.private_encrypt.j`.
42020 00 00 8c 07 52 53 41 2e 70 75 62 94 6a 60 02 00 00 8c 12 52 53 41 2e 70 75 62 6c 69 63 5f 64 65 ....RSA.pub.j`.....RSA.public_de
42040 63 72 79 70 74 94 6a 60 02 00 00 8c 12 52 53 41 2e 70 75 62 6c 69 63 5f 65 6e 63 72 79 70 74 94 crypt.j`.....RSA.public_encrypt.
42060 6a 60 02 00 00 8c 0c 52 53 41 2e 73 61 76 65 5f 6b 65 79 94 6a 60 02 00 00 8c 10 52 53 41 2e 73 j`.....RSA.save_key.j`.....RSA.s
42080 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 10 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f ave_key_bio.j`.....RSA.save_key_
420a0 64 65 72 94 6a 60 02 00 00 8c 14 52 53 41 2e 73 61 76 65 5f 6b 65 79 5f 64 65 72 5f 62 69 6f 94 der.j`.....RSA.save_key_der_bio.
420c0 6a 60 02 00 00 8c 10 52 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 14 52 j`.....RSA.save_pub_key.j`.....R
420e0 53 41 2e 73 61 76 65 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 08 52 53 41 2e 73 SA.save_pub_key_bio.j`.....RSA.s
42100 69 67 6e 94 6a 60 02 00 00 8c 13 52 53 41 2e 73 69 67 6e 5f 72 73 61 73 73 61 5f 70 73 73 94 6a ign.j`.....RSA.sign_rsassa_pss.j
42120 60 02 00 00 8c 0a 52 53 41 2e 76 65 72 69 66 79 94 6a 60 02 00 00 8c 15 52 53 41 2e 76 65 72 69 `.....RSA.verify.j`.....RSA.veri
42140 66 79 5f 72 73 61 73 73 61 5f 70 73 73 94 6a 60 02 00 00 6a ee 15 00 00 6a 60 02 00 00 8c 07 52 fy_rsassa_pss.j`...j....j`.....R
42160 53 41 5f 70 75 62 94 6a 60 02 00 00 8c 11 52 53 41 5f 70 75 62 2e 63 68 65 63 6b 5f 6b 65 79 94 SA_pub.j`.....RSA_pub.check_key.
42180 6a 60 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 74 94 6a j`.....RSA_pub.private_decrypt.j
421a0 60 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 94 6a 60 `.....RSA_pub.private_encrypt.j`
421c0 02 00 00 8c 10 52 53 41 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 94 6a 60 02 00 00 8c 14 52 53 41 .....RSA_pub.save_key.j`.....RSA
421e0 5f 70 75 62 2e 73 61 76 65 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 07 67 65 6e 5f 6b 65 79 _pub.save_key_bio.j`.....gen_key
42200 94 6a 60 02 00 00 8c 0f 6b 65 79 67 65 6e 5f 63 61 6c 6c 62 61 63 6b 94 6a 60 02 00 00 8c 08 6c .j`.....keygen_callback.j`.....l
42220 6f 61 64 5f 6b 65 79 94 6a 60 02 00 00 8c 0c 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 oad_key.j`.....load_key_bio.j`..
42240 00 8c 0f 6c 6f 61 64 5f 6b 65 79 5f 73 74 72 69 6e 67 94 6a 60 02 00 00 8c 0c 6c 6f 61 64 5f 70 ...load_key_string.j`.....load_p
42260 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 10 6c 6f 61 64 5f 70 75 62 5f 6b 65 79 5f 62 69 6f 94 6a ub_key.j`.....load_pub_key_bio.j
42280 60 02 00 00 8c 0b 6e 65 77 5f 70 75 62 5f 6b 65 79 94 6a 60 02 00 00 8c 09 72 73 61 5f 65 72 72 `.....new_pub_key.j`.....rsa_err
422a0 6f 72 94 6a 60 02 00 00 75 8c 0c 4d 32 43 72 79 70 74 6f 2e 52 53 41 94 74 94 8c 0d 4d 32 43 72 or.j`...u..M2Crypto.RSA.t...M2Cr
422c0 79 70 74 6f 2e 52 61 6e 64 94 28 58 5d 11 00 00 22 22 22 4d 32 43 72 79 70 74 6f 20 77 72 61 70 ypto.Rand.(X]..."""M2Crypto.wrap
422e0 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 73 20 4f per.for.OpenSSL.PRNG..Requires.O
42300 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 72 69 67 penSSL.0.9.5.and.above...Copyrig
42320 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.
42340 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 68 74 20 .All.rights.reserved..Copyright.
42360 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 20 72 69 (c).2014-2017.Matej.Cepl..All.ri
42380 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 6f 72 20 ghts.reserved...See.LICENCE.for.
423a0 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 66 72 6f the.license.information..""".fro
423c0 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 70 m.__future__.import.absolute_imp
423e0 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 20 73 69 ort..from.M2Crypto.import.m2,.si
42400 78 0a 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 x.from.typing.import.AnyStr,.Tup
42420 6c 65 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 le..#.noqa...__all__.=.['rand_se
42440 65 64 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 ed',.'rand_add',.'load_file',.'s
42460 61 76 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 ave_file',.'rand_bytes',........
42480 20 20 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 ....'rand_pseudo_bytes',.'rand_f
424a0 69 6c 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 ile_name',.'rand_status']...clas
424c0 73 20 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 s.RandError(ValueError):.....pas
424e0 73 0a 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 s..m2.rand_init(RandError)...def
42500 20 72 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 .rand_add(blob,.entropy):.....#.
42520 74 79 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 type:.(bytes,.float).->.None....
42540 20 22 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 .""".....Mixes.blob.into.the.PRN
42560 47 20 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 G.state.......:param.blob:.added
42580 20 64 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 .data.....:param.entropy:.(the.l
425a0 6f 77 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 ower.bound.of).an.estimate.of.ho
425c0 77 20 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 w.much.randomness.........is.con
425e0 74 61 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 tained.in.blob,.measured.in.byte
42600 73 2e 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 s.......Thus,.if.the.data.at.buf
42620 20 61 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 .are.unpredictable.to.an.adversa
42640 72 79 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 ry,.this.....increases.the.uncer
42660 74 61 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 tainty.about.the.state.and.makes
42680 20 74 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 .the.PRNG.output.less.....predic
426a0 74 61 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 table..Suitable.input.comes.from
426c0 20 75 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 .user.interaction.(random.key...
426e0 20 20 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 ..presses,.mouse.movements).and.
42700 63 65 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 certain.hardware.events.......De
42720 74 61 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 tails.about.sources.of.randomnes
42740 73 20 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 s.and.how.to.estimate.their.entr
42760 6f 70 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 opy.....can.be.found.in.the.lite
42780 72 61 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 rature,.e.g..RFC.1750......"""..
427a0 20 20 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 ...m2.rand_add(blob,.entropy)..#
427c0 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 66 .pylint:.disable=no-member...def
427e0 20 72 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 .rand_seed(seed):.....#.type:.(b
42800 79 74 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 ytes).->.None.....""".....Equiva
42820 6c 65 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 lent.to.rand_add().when.len(seed
42840 29 20 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 ).==.entropy.......:param.seed:.
42860 61 64 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 added.data.(see.description.at.r
42880 61 6e 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 and_add).....""".....m2.rand_see
428a0 64 28 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 d(seed)..#.pylint:.disable=no-me
428c0 6d 62 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 mber...def.rand_status():.....#.
428e0 74 79 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 type:.().->.int.....""".....Chec
42900 6b 20 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 k.whether.there.is.enough.entrop
42920 79 20 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 y.in.PRNG.......:return:.1.if.th
42940 65 20 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 e.PRNG.has.been.seeded.with.enou
42960 67 68 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 gh........data,.0.otherwise.....
42980 20 22 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 .""".....return.m2.rand_status()
429a0 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...
429c0 64 65 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 def.rand_file_name():.....#.type
429e0 3a 20 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 :.().->.str.....""".....Generate
42a00 20 61 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 .a.default.path.for.the.random.s
42a20 65 65 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 eed.file.......:return:.string.w
42a40 69 74 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 ith.the.filename.........The.see
42a60 64 20 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 d.file.is.$RANDFILE.if.that.envi
42a80 72 6f 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 ronment.variable........is.set,.
42aa0 24 48 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 $HOME/.rnd.otherwise..If.$HOME.i
42ac0 73 20 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 s.not.set.either,........an.erro
42ae0 72 20 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 r.occurs......""".....return.six
42b00 2e 65 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 .ensure_text(m2.rand_file_name()
42b20 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..
42b40 0a 64 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 .def.load_file(filename,.max_byt
42b60 65 73 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 es):.....#.type:.(AnyStr,.int).-
42b80 3e 20 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 >.int.....""".....Read.a.number.
42ba0 6f 66 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 of.bytes.from.file.filename.and.
42bc0 61 64 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 adds.them.to.the.PRNG.......If.m
42be0 61 78 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 ax_bytes.is.non-negative,.up.to.
42c00 74 6f 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 to.max_bytes.are.read;.starting.
42c20 77 69 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 with.....OpenSSL.0.9.5,.if.max_b
42c40 79 74 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 ytes.is.-1,.the.complete.file.is
42c60 20 72 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 .read.......:param.filename:....
42c80 20 3a 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 .:param.max_bytes:.....:return:.
42ca0 74 68 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 the.number.of.bytes.read......""
42cc0 22 0a 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 ".....return.m2.rand_load_file(s
42ce0 69 78 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 ix.ensure_str(filename),.max_byt
42d00 65 73 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 es)..#.pylint:.disable=no-member
42d20 0a 0a 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 ...def.save_file(filename):.....
42d40 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 20 20 20 22 22 22 0a #.type:.(AnyStr).->.int.....""".
42d60 20 20 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 ....Write.a.number.of.random.byt
42d80 65 73 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 es.(currently.1024).to.file.....
42da0 20 20 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 ..The.file.then.can.be.used.to.i
42dc0 6e 69 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 nitialize.the.PRNG.by.calling.lo
42de0 61 64 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 ad_file().in.....a.later.session
42e00 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 72 65 74 .......:param.filename:.....:ret
42e20 75 72 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 urn:.returns.the.number.of.bytes
42e40 20 77 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 .written,.and.-1.if.the.bytes...
42e60 20 20 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 .......written.were.generated.wi
42e80 74 68 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 thout.appropriate.seed......""".
42ea0 20 20 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 ....return.m2.rand_save_file(fil
42ec0 65 6e 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 ename)..#.pylint:.disable=no-mem
42ee0 62 65 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 ber...def.rand_bytes(num):.....#
42f00 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 22 22 22 0a 20 20 .type:.(int).->.bytes....."""...
42f20 20 20 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 ..Return.n.cryptographically.str
42f40 6f 6e 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 ong.pseudo-random.bytes.......An
42f60 20 65 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 .error.occurs.if.the.PRNG.has.no
42f80 74 20 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 t.been.seeded.with.enough.random
42fa0 6e 65 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 ness.....to.ensure.an.unpredicta
42fc0 62 6c 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 ble.byte.sequence.......:param.n
42fe0 75 6d 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 um:.number.of.bytes.to.be.return
43000 65 64 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 ed.....:return:.random.bytes....
43020 20 22 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 .""".....return.m2.rand_bytes(nu
43040 6d 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 m)..#.pylint:.disable=no-member.
43060 0a 0a 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 ..def.rand_pseudo_bytes(num):...
43080 20 20 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 ..#.type:.(int).->.Tuple[bytes,.
430a0 69 6e 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 int].....""".....Return.num.pseu
430c0 64 6f 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 do-random.bytes.into.buf.......P
430e0 73 65 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 seudo-random.byte.sequences.gene
43100 72 61 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 rated.by.this.method.will.be.uni
43120 71 75 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 que.....if.they.are.of.sufficien
43140 74 20 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 t.length,.but.are.not.necessaril
43160 79 0a 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 y.....unpredictable..They.can.be
43180 20 75 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 .used.for.non-cryptographic.purp
431a0 6f 73 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 oses.and.for.....certain.purpose
431c0 73 20 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 s.in.cryptographic.protocols,.bu
431e0 74 20 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 t.usually.not.for.key.....genera
43200 74 69 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 tion.etc.......Output.of.the.fun
43220 63 74 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 ction.is.mixed.into.the.entropy.
43240 70 6f 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 pool.before.....retrieving.the.n
43260 65 77 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 ew.pseudo-random.bytes.unless.di
43280 73 61 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 sabled.at.compile.....time.(see.
432a0 46 41 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 FAQ).......:param.num:.number.of
432c0 20 62 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 .bytes.to.be.returned.....:retur
432e0 6e 3a 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 n:.random.bytes.....""".....impo
43300 72 74 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 rt.warnings.....if.m2.OPENSSL_VE
43320 52 53 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 RSION_NUMBER.>=.0x10100000:.....
43340 20 20 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 ....warnings.warn('The.underlyin
43360 67 20 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 g.OpenSSL.method.has.been.'.+...
43380 20 20 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 ....................'deprecated.
433a0 20 55 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 .Use.Rand.rand_bytes.instead.',.
433c0 20 20 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 ......................Deprecatio
433e0 6e 57 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 nWarning)......return.m2.rand_ps
43400 65 75 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 eudo_bytes(num)..#.pylint:.disab
43420 6c 65 3d 6e 6f 2d 6d 65 6d 62 65 72 0a 94 95 03 00 01 00 00 00 00 00 7d 94 28 8c 09 52 61 6e 64 le=no-member...........}.(..Rand
43440 45 72 72 6f 72 94 6a 37 02 00 00 4b 12 4b 13 87 94 8c 08 72 61 6e 64 5f 61 64 64 94 6a 18 25 00 Error.j7...K.K.....rand_add.j.%.
43460 00 4b 18 4b 29 87 94 8c 09 72 61 6e 64 5f 73 65 65 64 94 6a 18 25 00 00 4b 2c 4b 33 87 94 8c 0b .K.K)....rand_seed.j.%..K,K3....
43480 72 61 6e 64 5f 73 74 61 74 75 73 94 6a 18 25 00 00 4b 36 4b 3e 87 94 8c 0e 72 61 6e 64 5f 66 69 rand_status.j.%..K6K>....rand_fi
434a0 6c 65 5f 6e 61 6d 65 94 6a 18 25 00 00 4b 41 4b 4b 87 94 8c 09 6c 6f 61 64 5f 66 69 6c 65 94 6a le_name.j.%..KAKK....load_file.j
434c0 18 25 00 00 4b 4e 4b 5a 87 94 8c 09 73 61 76 65 5f 66 69 6c 65 94 6a 18 25 00 00 4b 5d 4b 69 87 .%..KNKZ....save_file.j.%..K]Ki.
434e0 94 8c 0a 72 61 6e 64 5f 62 79 74 65 73 94 6a 18 25 00 00 4b 6c 4b 77 87 94 8c 11 72 61 6e 64 5f ...rand_bytes.j.%..KlKw....rand_
43500 70 73 65 75 64 6f 5f 62 79 74 65 73 94 6a 18 25 00 00 4b 7a 4b 92 87 94 75 7d 94 28 8c 09 6c 6f pseudo_bytes.j.%..KzK...u}.(..lo
43520 61 64 5f 66 69 6c 65 94 6a 60 02 00 00 8c 08 72 61 6e 64 5f 61 64 64 94 6a 60 02 00 00 8c 0a 72 ad_file.j`.....rand_add.j`.....r
43540 61 6e 64 5f 62 79 74 65 73 94 6a 60 02 00 00 8c 0e 72 61 6e 64 5f 66 69 6c 65 5f 6e 61 6d 65 94 and_bytes.j`.....rand_file_name.
43560 6a 60 02 00 00 8c 11 72 61 6e 64 5f 70 73 65 75 64 6f 5f 62 79 74 65 73 94 6a 60 02 00 00 8c 09 j`.....rand_pseudo_bytes.j`.....
43580 72 61 6e 64 5f 73 65 65 64 94 6a 60 02 00 00 8c 0b 72 61 6e 64 5f 73 74 61 74 75 73 94 6a 60 02 rand_seed.j`.....rand_status.j`.
435a0 00 00 8c 09 73 61 76 65 5f 66 69 6c 65 94 6a 60 02 00 00 75 8c 0d 4d 32 43 72 79 70 74 6f 2e 52 ....save_file.j`...u..M2Crypto.R
435c0 61 6e 64 94 74 94 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 28 58 05 23 00 00 66 72 6f and.t...M2Crypto.SMIME.(X.#..fro
435e0 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 70 m.__future__.import.absolute_imp
43600 6f 72 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 ort.."""M2Crypto.wrapper.for.Ope
43620 6e 53 53 4c 20 53 2f 4d 49 4d 45 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 nSSL.S/MIME.API...Copyright.(c).
43640 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 69 1999-2003.Ng.Pheng.Siong..All.ri
43660 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 43 72 79 70 74 6f ghts.reserved."""..from.M2Crypto
43680 20 69 6d 70 6f 72 74 20 42 49 4f 2c 20 45 56 50 2c 20 45 72 72 2c 20 58 35 30 39 2c 20 6d 32 2c .import.BIO,.EVP,.Err,.X509,.m2,
436a0 20 75 74 69 6c 0a 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 .util.from.typing.import.AnyStr,
436c0 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 50 4b 43 .Callable,.Optional..#.noqa..PKC
436e0 53 37 5f 54 45 58 54 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 54 45 58 54 20 20 23 20 74 79 70 65 3a S7_TEXT.=.m2.PKCS7_TEXT..#.type:
43700 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 43 45 52 54 53 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f .int.PKCS7_NOCERTS.=.m2.PKCS7_NO
43720 43 45 52 54 53 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 53 49 47 53 20 CERTS..#.type:.int.PKCS7_NOSIGS.
43740 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f 53 49 47 53 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 =.m2.PKCS7_NOSIGS..#.type:.int.P
43760 4b 43 53 37 5f 4e 4f 43 48 41 49 4e 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f 43 48 41 49 4e 20 KCS7_NOCHAIN.=.m2.PKCS7_NOCHAIN.
43780 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 49 4e 54 45 52 4e 20 3d 20 6d 32 .#.type:.int.PKCS7_NOINTERN.=.m2
437a0 2e 50 4b 43 53 37 5f 4e 4f 49 4e 54 45 52 4e 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 .PKCS7_NOINTERN..#.type:.int.PKC
437c0 53 37 5f 4e 4f 56 45 52 49 46 59 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 4e 4f 56 45 52 49 46 59 20 S7_NOVERIFY.=.m2.PKCS7_NOVERIFY.
437e0 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 44 45 54 41 43 48 45 44 20 3d 20 6d 32 .#.type:.int.PKCS7_DETACHED.=.m2
43800 2e 50 4b 43 53 37 5f 44 45 54 41 43 48 45 44 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 .PKCS7_DETACHED..#.type:.int.PKC
43820 53 37 5f 42 49 4e 41 52 59 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 42 49 4e 41 52 59 20 20 23 20 74 S7_BINARY.=.m2.PKCS7_BINARY..#.t
43840 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 4e 4f 41 54 54 52 20 3d 20 6d 32 2e 50 4b 43 53 37 ype:.int.PKCS7_NOATTR.=.m2.PKCS7
43860 5f 4e 4f 41 54 54 52 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 0a 50 4b 43 53 37 5f 53 49 47 4e _NOATTR..#.type:.int..PKCS7_SIGN
43880 45 44 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 53 49 47 4e 45 44 20 20 23 20 74 79 70 65 3a 20 69 6e ED.=.m2.PKCS7_SIGNED..#.type:.in
438a0 74 0a 50 4b 43 53 37 5f 45 4e 56 45 4c 4f 50 45 44 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 45 4e 56 t.PKCS7_ENVELOPED.=.m2.PKCS7_ENV
438c0 45 4c 4f 50 45 44 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 50 4b 43 53 37 5f 53 49 47 4e 45 44 ELOPED..#.type:.int.PKCS7_SIGNED
438e0 5f 45 4e 56 45 4c 4f 50 45 44 20 3d 20 6d 32 2e 50 4b 43 53 37 5f 53 49 47 4e 45 44 5f 45 4e 56 _ENVELOPED.=.m2.PKCS7_SIGNED_ENV
43900 45 4c 4f 50 45 44 20 20 23 20 44 65 70 72 65 63 61 74 65 64 0a 50 4b 43 53 37 5f 44 41 54 41 20 ELOPED..#.Deprecated.PKCS7_DATA.
43920 3d 20 6d 32 2e 50 4b 43 53 37 5f 44 41 54 41 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 0a 0a 63 =.m2.PKCS7_DATA..#.type:.int...c
43940 6c 61 73 73 20 50 4b 43 53 37 5f 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 lass.PKCS7_Error(Exception):....
43960 20 70 61 73 73 0a 0a 0a 6d 32 2e 70 6b 63 73 37 5f 69 6e 69 74 28 50 4b 43 53 37 5f 45 72 72 6f .pass...m2.pkcs7_init(PKCS7_Erro
43980 72 29 0a 0a 0a 63 6c 61 73 73 20 50 4b 43 53 37 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 20 20 20 6d r)...class.PKCS7(object):......m
439a0 32 5f 70 6b 63 73 37 5f 66 72 65 65 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 66 72 65 65 0a 0a 20 20 2_pkcs7_free.=.m2.pkcs7_free....
439c0 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 6b 63 73 37 3d 4e 6f 6e 65 2c ..def.__init__(self,.pkcs7=None,
439e0 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 4f 70 ._pyfree=0):.........#.type:.(Op
43a00 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 20 20 20 20 tional[bytes],.int).->.None.....
43a20 20 20 20 20 22 22 22 50 4b 43 53 37 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 ...."""PKCS7.object...........:p
43a40 61 72 61 6d 20 70 6b 63 73 37 3a 20 62 69 6e 61 72 79 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f aram.pkcs7:.binary.representatio
43a60 6e 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 4f 70 65 6e 53 53 4c 20 n.of................the.OpenSSL.
43a80 74 79 70 65 20 50 4b 43 53 37 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 type.PKCS7.........""".........i
43aa0 66 20 70 6b 63 73 37 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 f.pkcs7.is.not.None:............
43ac0 20 73 65 6c 66 2e 70 6b 63 73 37 20 3d 20 70 6b 63 73 37 0a 20 20 20 20 20 20 20 20 20 20 20 20 .self.pkcs7.=.pkcs7.............
43ae0 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 20 20 20 20 20 20 65 self._pyfree.=._pyfree.........e
43b00 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 63 73 37 20 3d 20 6d 32 lse:.............self.pkcs7.=.m2
43b20 2e 70 6b 63 73 37 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 .pkcs7_new().............self._p
43b40 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 65 6c 66 29 yfree.=.1......def.__del__(self)
43b60 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....
43b80 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 2c .....if.getattr(self,.'_pyfree',
43ba0 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 70 6b 63 73 37 5f 66 .0):.............self.m2_pkcs7_f
43bc0 72 65 65 28 73 65 6c 66 2e 70 6b 63 73 37 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 ree(self.pkcs7)......def._ptr(se
43be0 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 70 6b 63 73 37 0a 0a lf):.........return.self.pkcs7..
43c00 20 20 20 20 64 65 66 20 74 79 70 65 28 73 65 6c 66 2c 20 74 65 78 74 5f 6e 61 6d 65 3d 30 29 3a ....def.type(self,.text_name=0):
43c20 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 0a 20 20 .........#.type:.(int).->.int...
43c40 20 20 20 20 20 20 69 66 20 74 65 78 74 5f 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ......if.text_name:.............
43c60 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 5f 74 79 70 65 5f 73 6e 28 73 65 6c 66 2e 70 6b 63 return.m2.pkcs7_type_sn(self.pkc
43c80 73 37 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 65 s7).........else:.............re
43ca0 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 5f 74 79 70 65 5f 6e 69 64 28 73 65 6c 66 2e 70 6b 63 73 turn.m2.pkcs7_type_nid(self.pkcs
43cc0 37 29 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 7)......def.write(self,.bio):...
43ce0 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 6e 74 0a 20 ......#.type:.(BIO.BIO).->.int..
43d00 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 5f 62 69 6f .......return.m2.pkcs7_write_bio
43d20 28 73 65 6c 66 2e 70 6b 63 73 37 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 (self.pkcs7,.bio._ptr())......de
43d40 66 20 77 72 69 74 65 5f 64 65 72 28 73 65 6c 66 2c 20 62 69 6f 29 3a 0a 20 20 20 20 20 20 20 20 f.write_der(self,.bio):.........
43d60 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........
43d80 20 72 65 74 75 72 6e 20 6d 32 2e 70 6b 63 73 37 5f 77 72 69 74 65 5f 62 69 6f 5f 64 65 72 28 73 .return.m2.pkcs7_write_bio_der(s
43da0 65 6c 66 2e 70 6b 63 73 37 2c 20 62 69 6f 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 elf.pkcs7,.bio._ptr())......def.
43dc0 67 65 74 30 5f 73 69 67 6e 65 72 73 28 73 65 6c 66 2c 20 63 65 72 74 73 2c 20 66 6c 61 67 73 3d get0_signers(self,.certs,.flags=
43de0 30 29 3a 0a 20 20 20 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 0):.........#.type:.(X509.X509_S
43e00 74 61 63 6b 2c 20 69 6e 74 29 20 2d 3e 20 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 0a 20 20 tack,.int).->.X509.X509_Stack...
43e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 28 6d 32 2e ......return.X509.X509_Stack(m2.
43e40 70 6b 63 73 37 5f 67 65 74 30 5f 73 69 67 6e 65 72 73 28 73 65 6c 66 2e 70 6b 63 73 37 2c 0a 20 pkcs7_get0_signers(self.pkcs7,..
43e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
43e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 73 2e 73 74 61 63 6b 2c ....................certs.stack,
43ea0 20 66 6c 61 67 73 29 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 6b 63 73 37 28 70 37 66 .flags),.1)...def.load_pkcs7(p7f
43ec0 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 50 4b ile):.....#.type:.(AnyStr).->.PK
43ee0 43 53 37 0a 20 20 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 CS7.....with.BIO.openfile(p7file
43f00 2c 20 27 72 27 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 ,.'r').as.bio:.........p7_ptr.=.
43f20 6d 32 2e 70 6b 63 73 37 5f 72 65 61 64 5f 62 69 6f 28 62 69 6f 2e 62 69 6f 29 0a 0a 20 20 20 20 m2.pkcs7_read_bio(bio.bio)......
43f40 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 64 65 66 20 6c 6f return.PKCS7(p7_ptr,.1)...def.lo
43f60 61 64 5f 70 6b 63 73 37 5f 64 65 72 28 70 37 66 69 6c 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 ad_pkcs7_der(p7file):.....#.type
43f80 3a 20 28 41 6e 79 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 :.(AnyStr).->.PKCS7.....with.BIO
43fa0 2e 6f 70 65 6e 66 69 6c 65 28 70 37 66 69 6c 65 2c 20 27 72 62 27 29 20 61 73 20 62 69 6f 3a 0a .openfile(p7file,.'rb').as.bio:.
43fc0 20 20 20 20 20 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 ........p7_ptr.=.m2.pkcs7_read_b
43fe0 69 6f 5f 64 65 72 28 62 69 6f 2e 62 69 6f 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 50 4b 43 53 io_der(bio.bio)......return.PKCS
44000 37 28 70 37 5f 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 7(p7_ptr,.1)...def.load_pkcs7_bi
44020 6f 28 70 37 5f 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 o(p7_bio):.....#.type:.(BIO.BIO)
44040 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 70 37 5f 70 74 72 20 3d 20 6d 32 2e 70 6b 63 73 37 5f .->.PKCS7.....p7_ptr.=.m2.pkcs7_
44060 72 65 61 64 5f 62 69 6f 28 70 37 5f 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 72 65 74 75 read_bio(p7_bio._ptr()).....retu
44080 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 64 5f 70 rn.PKCS7(p7_ptr,.1)...def.load_p
440a0 6b 63 73 37 5f 62 69 6f 5f 64 65 72 28 70 37 5f 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 kcs7_bio_der(p7_bio):.....#.type
440c0 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 20 :.(BIO.BIO).->.PKCS7.....p7_ptr.
440e0 3d 20 6d 32 2e 70 6b 63 73 37 5f 72 65 61 64 5f 62 69 6f 5f 64 65 72 28 70 37 5f 62 69 6f 2e 5f =.m2.pkcs7_read_bio_der(p7_bio._
44100 70 74 72 28 29 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 ptr()).....return.PKCS7(p7_ptr,.
44120 31 29 0a 0a 0a 64 65 66 20 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 28 70 37 66 69 6c 65 1)...def.smime_load_pkcs7(p7file
44140 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 50 4b 43 53 37 ):.....#.type:.(AnyStr).->.PKCS7
44160 0a 20 20 20 20 62 69 6f 20 3d 20 6d 32 2e 62 69 6f 5f 6e 65 77 5f 66 69 6c 65 28 70 37 66 69 6c .....bio.=.m2.bio_new_file(p7fil
44180 65 2c 20 27 72 27 29 0a 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 70 37 5f 70 74 72 e,.'r')......try:.........p7_ptr
441a0 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(
441c0 62 69 6f 29 0a 20 20 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 6d 32 2e 62 69 6f bio).....finally:.........m2.bio
441e0 5f 66 72 65 65 28 62 69 6f 29 0a 0a 20 20 20 20 69 66 20 62 69 6f 5f 70 74 72 20 69 73 20 4e 6f _free(bio)......if.bio_ptr.is.No
44200 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 5f 70 74 72 2c ne:.........return.PKCS7(p7_ptr,
44220 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 20 72 65 74 75 .1),.None.....else:.........retu
44240 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 4f 28 62 69 6f rn.PKCS7(p7_ptr,.1),.BIO.BIO(bio
44260 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 63 73 37 5f _ptr,.1)...def.smime_load_pkcs7_
44280 62 69 6f 28 70 37 5f 62 69 6f 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 bio(p7_bio):.....#.type:.(BIO.BI
442a0 4f 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 70 37 5f 70 74 72 2c 20 62 69 6f 5f 70 74 72 20 O).->.PKCS7.....p7_ptr,.bio_ptr.
442c0 3d 20 6d 32 2e 73 6d 69 6d 65 5f 72 65 61 64 5f 70 6b 63 73 37 28 70 37 5f 62 69 6f 2e 5f 70 74 =.m2.smime_read_pkcs7(p7_bio._pt
442e0 72 28 29 29 0a 20 20 20 20 69 66 20 70 37 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 r()).....if.p7_ptr.is.None:.....
44300 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
44320 72 6f 72 28 29 29 0a 20 20 20 20 69 66 20 62 69 6f 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 ror()).....if.bio_ptr.is.None:..
44340 20 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 .......return.PKCS7(p7_ptr,.1),.
44360 4e 6f 6e 65 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 50 4b None.....else:.........return.PK
44380 43 53 37 28 70 37 5f 70 74 72 2c 20 31 29 2c 20 42 49 4f 2e 42 49 4f 28 62 69 6f 5f 70 74 72 2c CS7(p7_ptr,.1),.BIO.BIO(bio_ptr,
443a0 20 31 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 20 20 20 20 .1)...class.Cipher(object):.....
443c0 22 22 22 4f 62 6a 65 63 74 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 45 56 50 5f 43 49 50 48 45 """Object.interface.to.EVP_CIPHE
443e0 52 20 77 69 74 68 6f 75 74 20 61 6c 6c 20 74 68 65 20 66 72 69 6c 6c 73 20 6f 66 0a 20 20 20 20 R.without.all.the.frills.of.....
44400 4d 32 43 72 79 70 74 6f 2e 45 56 50 2e 43 69 70 68 65 72 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 M2Crypto.EVP.Cipher......"""....
44420 20 20 64 65 66 20 5f 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 ..def.__init__(self,.algo):.....
44440 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 0a 20 20 20 20 20 20 ....#.type:.(str).->.None.......
44460 20 20 63 69 70 68 65 72 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 6f 2c 20 4e 6f 6e ..cipher.=.getattr(m2,.algo,.Non
44480 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 63 69 70 68 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 e).........if.cipher.is.None:...
444a0 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
444c0 6f 77 6e 20 63 69 70 68 65 72 27 2c 20 61 6c 67 6f 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e own.cipher',.algo).........self.
444e0 63 69 70 68 65 72 20 3d 20 63 69 70 68 65 72 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 cipher.=.cipher()......def._ptr(
44500 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 63 69 70 68 65 self):.........return.self.ciphe
44520 72 0a 0a 0a 63 6c 61 73 73 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 45 78 63 65 70 74 69 6f 6e 29 r...class.SMIME_Error(Exception)
44540 3a 0a 20 20 20 20 70 61 73 73 0a 0a 6d 32 2e 73 6d 69 6d 65 5f 69 6e 69 74 28 53 4d 49 4d 45 5f :.....pass..m2.smime_init(SMIME_
44560 45 72 72 6f 72 29 0a 0a 0a 23 20 46 49 58 4d 45 20 63 6c 61 73 73 20 68 61 73 20 6e 6f 20 5f 5f Error)...#.FIXME.class.has.no.__
44580 69 6e 69 74 5f 5f 20 6d 65 74 68 6f 64 0a 63 6c 61 73 73 20 53 4d 49 4d 45 28 6f 62 6a 65 63 74 init__.method.class.SMIME(object
445a0 29 3a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 6b 65 79 28 73 65 6c 66 2c 20 6b 65 79 66 69 6c ):.....def.load_key(self,.keyfil
445c0 65 2c 20 63 65 72 74 66 69 6c 65 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e,.certfile=None,...............
445e0 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 6c 6c ...callback=util.passphrase_call
44600 62 61 63 6b 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 back):.........#.type:.(AnyStr,.
44620 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 4e Optional[AnyStr],.Callable).->.N
44640 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 63 65 72 74 66 69 6c 65 20 69 73 20 4e 6f 6e 65 3a one.........if.certfile.is.None:
44660 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 66 69 6c 65 20 3d 20 6b 65 79 66 69 6c 65 0a .............certfile.=.keyfile.
44680 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 65 79 20 3d 20 45 56 50 2e 6c 6f 61 64 5f 6b 65 79 ........self.pkey.=.EVP.load_key
446a0 28 6b 65 79 66 69 6c 65 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 (keyfile,.callback).........self
446c0 2e 78 35 30 39 20 3d 20 58 35 30 39 2e 6c 6f 61 64 5f 63 65 72 74 28 63 65 72 74 66 69 6c 65 29 .x509.=.X509.load_cert(certfile)
446e0 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 28 73 65 6c 66 2c 20 6b 65 79 ......def.load_key_bio(self,.key
44700 62 69 6f 2c 20 63 65 72 74 62 69 6f 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 bio,.certbio=None,..............
44720 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 65 ........callback=util.passphrase
44740 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 4f _callback):.........#.type:.(BIO
44760 2e 42 49 4f 2c 20 4f 70 74 69 6f 6e 61 6c 5b 42 49 4f 2e 42 49 4f 5d 2c 20 43 61 6c 6c 61 62 6c .BIO,.Optional[BIO.BIO],.Callabl
44780 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 62 69 6f 20 69 73 e).->.None.........if.certbio.is
447a0 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 62 69 6f 20 3d 20 6b 65 79 .None:.............certbio.=.key
447c0 62 69 6f 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6b 65 79 20 3d 20 45 56 50 2e 6c 6f 61 64 bio.........self.pkey.=.EVP.load
447e0 5f 6b 65 79 5f 62 69 6f 28 6b 65 79 62 69 6f 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 _key_bio(keybio,.callback)......
44800 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 5f 62 69 ...self.x509.=.X509.load_cert_bi
44820 6f 28 63 65 72 74 62 69 6f 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 78 35 30 39 5f 73 74 61 o(certbio)......def.set_x509_sta
44840 63 6b 28 73 65 6c 66 2c 20 73 74 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a ck(self,.stack):.........#.type:
44860 20 28 58 35 30 39 2e 58 35 30 39 5f 53 74 61 63 6b 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 .(X509.X509_Stack).->.None......
44880 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 73 74 61 63 6b 2c 20 58 35 30 39 ...assert.isinstance(stack,.X509
448a0 2e 58 35 30 39 5f 53 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 5f 73 .X509_Stack).........self.x509_s
448c0 74 61 63 6b 20 3d 20 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 78 35 30 39 5f 73 tack.=.stack......def.set_x509_s
448e0 74 6f 72 65 28 73 65 6c 66 2c 20 73 74 6f 72 65 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 tore(self,.store):.........#.typ
44900 65 3a 20 28 58 35 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 e:.(X509.X509_Store).->.None....
44920 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 73 74 6f 72 65 2c 20 58 35 .....assert.isinstance(store,.X5
44940 30 39 2e 58 35 30 39 5f 53 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 09.X509_Store).........self.x509
44960 5f 73 74 6f 72 65 20 3d 20 73 74 6f 72 65 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 69 70 68 _store.=.store......def.set_ciph
44980 65 72 28 73 65 6c 66 2c 20 63 69 70 68 65 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 er(self,.cipher):.........#.type
449a0 3a 20 28 43 69 70 68 65 72 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 :.(Cipher).->.None.........asser
449c0 74 20 69 73 69 6e 73 74 61 6e 63 65 28 63 69 70 68 65 72 2c 20 43 69 70 68 65 72 29 0a 20 20 20 t.isinstance(cipher,.Cipher)....
449e0 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 20 20 20 64 .....self.cipher.=.cipher......d
44a00 65 66 20 75 6e 73 65 74 5f 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 ef.unset_key(self):.........#.ty
44a20 70 65 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 pe:.().->.None.........del.self.
44a40 70 6b 65 79 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 78 35 30 39 0a 0a 20 20 20 20 pkey.........del.self.x509......
44a60 64 65 66 20 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 73 65 6c 66 29 3a 0a 20 20 20 20 def.unset_x509_stack(self):.....
44a80 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 64 ....#.type:.().->.None.........d
44aa0 65 6c 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 75 6e 73 65 el.self.x509_stack......def.unse
44ac0 74 5f 78 35 30 39 5f 73 74 6f 72 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 t_x509_store(self):.........#.ty
44ae0 70 65 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 pe:.().->.None.........del.self.
44b00 78 35 30 39 5f 73 74 6f 72 65 0a 0a 20 20 20 20 64 65 66 20 75 6e 73 65 74 5f 63 69 70 68 65 72 x509_store......def.unset_cipher
44b20 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
44b40 6e 65 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 63 69 70 68 65 72 0a 0a 20 20 20 20 ne.........del.self.cipher......
44b60 64 65 66 20 65 6e 63 72 79 70 74 28 73 65 6c 66 2c 20 64 61 74 61 5f 62 69 6f 2c 20 66 6c 61 67 def.encrypt(self,.data_bio,.flag
44b80 73 3d 30 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 s=0):.........#.type:.(BIO.BIO,.
44ba0 69 6e 74 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 int).->.PKCS7.........if.not.has
44bc0 61 74 74 72 28 73 65 6c 66 2c 20 27 63 69 70 68 65 72 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 attr(self,.'cipher'):...........
44be0 20 20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 63 69 70 68 65 72 3a 20 ..raise.SMIME_Error('no.cipher:.
44c00 75 73 65 20 73 65 74 5f 63 69 70 68 65 72 28 29 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f use.set_cipher()').........if.no
44c20 74 20 68 61 73 61 74 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 t.hasattr(self,.'x509_stack'):..
44c40 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 6f ...........raise.SMIME_Error('no
44c60 20 72 65 63 69 70 69 65 6e 74 20 63 65 72 74 73 3a 20 75 73 65 20 73 65 74 5f 78 35 30 39 5f 73 .recipient.certs:.use.set_x509_s
44c80 74 61 63 6b 28 29 27 29 0a 0a 20 20 20 20 20 20 20 20 70 6b 63 73 37 20 3d 20 6d 32 2e 70 6b 63 tack()')..........pkcs7.=.m2.pkc
44ca0 73 37 5f 65 6e 63 72 79 70 74 28 73 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 6b 2e 5f 70 74 72 28 s7_encrypt(self.x509_stack._ptr(
44cc0 29 2c 20 64 61 74 61 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),.data_bio._ptr(),.............
44ce0 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 63 69 70 68 65 72 .....................self.cipher
44d00 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ._ptr(),.flags)..........return.
44d20 50 4b 43 53 37 28 70 6b 63 73 37 2c 20 31 29 0a 0a 20 20 20 20 64 65 66 20 64 65 63 72 79 70 74 PKCS7(pkcs7,.1)......def.decrypt
44d40 28 73 65 6c 66 2c 20 70 6b 63 73 37 2c 20 66 6c 61 67 73 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 (self,.pkcs7,.flags=0):.........
44d60 23 20 74 79 70 65 3a 20 28 50 4b 43 53 37 2c 20 69 6e 74 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c #.type:.(PKCS7,.int).->.Optional
44d80 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 28 73 [bytes].........if.not.hasattr(s
44da0 65 6c 66 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 elf,.'pkey'):.............raise.
44dc0 53 4d 49 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 SMIME_Error('no.private.key:.use
44de0 20 6c 6f 61 64 5f 6b 65 79 28 29 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 61 73 .load_key()').........if.not.has
44e00 61 74 74 72 28 73 65 6c 66 2c 20 27 78 35 30 39 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 attr(self,.'x509'):.............
44e20 72 61 69 73 65 20 53 4d 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 63 65 72 74 69 66 69 63 61 74 raise.SMIME_Error('no.certificat
44e40 65 3a 20 6c 6f 61 64 5f 6b 65 79 28 29 20 75 73 65 64 20 69 6e 63 6f 72 72 65 63 74 6c 79 3f 27 e:.load_key().used.incorrectly?'
44e60 29 0a 20 20 20 20 20 20 20 20 62 6c 6f 62 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 64 65 63 72 79 70 ).........blob.=.m2.pkcs7_decryp
44e80 74 28 70 6b 63 73 37 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 t(pkcs7._ptr(),.self.pkey._ptr()
44ea0 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 20 20 ,...............................
44ec0 20 20 73 65 6c 66 2e 78 35 30 39 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 ..self.x509._ptr(),.flags)......
44ee0 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 0a 0a 20 20 20 20 64 65 66 20 73 69 67 6e 28 73 65 6c ...return.blob......def.sign(sel
44f00 66 2c 20 64 61 74 61 5f 62 69 6f 2c 20 66 6c 61 67 73 3d 30 2c 20 61 6c 67 6f 3d 27 73 68 61 31 f,.data_bio,.flags=0,.algo='sha1
44f20 27 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 69 6e '):.........#.type:.(BIO.BIO,.in
44f40 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 29 20 2d 3e 20 50 4b 43 53 37 0a 20 20 20 20 20 t,.Optional[str]).->.PKCS7......
44f60 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 70 6b 65 79 27 29 3a ...if.not.hasattr(self,.'pkey'):
44f80 0a 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 .............raise.SMIME_Error('
44fa0 6e 6f 20 70 72 69 76 61 74 65 20 6b 65 79 3a 20 75 73 65 20 6c 6f 61 64 5f 6b 65 79 28 29 27 29 no.private.key:.use.load_key()')
44fc0 0a 0a 20 20 20 20 20 20 20 20 68 61 73 68 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 61 6c 67 ..........hash.=.getattr(m2,.alg
44fe0 6f 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 68 20 69 73 20 4e 6f 6e o,.None)..........if.hash.is.Non
45000 65 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 5f 45 72 72 6f 72 e:.............raise.SMIME_Error
45020 28 27 6e 6f 20 73 75 63 68 20 68 61 73 68 20 61 6c 67 6f 72 69 74 68 6d 20 25 73 27 20 25 20 61 ('no.such.hash.algorithm.%s'.%.a
45040 6c 67 6f 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 lgo)..........if.hasattr(self,.'
45060 78 35 30 39 5f 73 74 61 63 6b 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6b 63 73 37 20 x509_stack'):.............pkcs7.
45080 3d 20 6d 32 2e 70 6b 63 73 37 5f 73 69 67 6e 31 28 73 65 6c 66 2e 78 35 30 39 2e 5f 70 74 72 28 =.m2.pkcs7_sign1(self.x509._ptr(
450a0 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(),............
450c0 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
450e0 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 20 20 20 20 9_stack._ptr(),.................
45100 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 2e 5f 70 74 72 ...................data_bio._ptr
45120 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 20 20 20 20 72 (),.hash(),.flags).............r
45140 65 74 75 72 6e 20 50 4b 43 53 37 28 70 6b 63 73 37 2c 20 31 29 0a 20 20 20 20 20 20 20 20 65 6c eturn.PKCS7(pkcs7,.1).........el
45160 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6b 63 73 37 20 3d 20 6d 32 2e 70 6b 63 73 37 se:.............pkcs7.=.m2.pkcs7
45180 5f 73 69 67 6e 30 28 73 65 6c 66 2e 78 35 30 39 2e 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 70 6b _sign0(self.x509._ptr(),.self.pk
451a0 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 20 ey._ptr(),......................
451c0 20 20 20 20 20 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 68 ..............data_bio._ptr(),.h
451e0 61 73 68 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ash(),.flags).............return
45200 20 50 4b 43 53 37 28 70 6b 63 73 37 2c 20 31 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 .PKCS7(pkcs7,.1)......def.verify
45220 28 73 65 6c 66 2c 20 70 6b 63 73 37 2c 20 64 61 74 61 5f 62 69 6f 3d 4e 6f 6e 65 2c 20 66 6c 61 (self,.pkcs7,.data_bio=None,.fla
45240 67 73 3d 30 29 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 42 gs=0):.........#.type:.(PKCS7,.B
45260 49 4f 2e 42 49 4f 2c 20 69 6e 74 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 0a IO.BIO,.int).->.Optional[bytes].
45280 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 78 35 ........if.not.hasattr(self,.'x5
452a0 30 39 5f 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 09_stack'):.............raise.SM
452c0 49 4d 45 5f 45 72 72 6f 72 28 27 6e 6f 20 73 69 67 6e 65 72 20 63 65 72 74 73 3a 20 75 73 65 20 IME_Error('no.signer.certs:.use.
452e0 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 28 29 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f set_x509_stack()').........if.no
45300 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 78 35 30 39 5f 73 74 6f 72 65 27 29 3a 0a 20 t.hasattr(self,.'x509_store'):..
45320 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 6f ...........raise.SMIME_Error('no
45340 20 78 35 30 39 20 63 65 72 74 20 73 74 6f 72 65 3a 20 75 73 65 20 73 65 74 5f 78 35 30 39 5f 73 .x509.cert.store:.use.set_x509_s
45360 74 6f 72 65 28 29 27 29 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 69 73 69 6e 73 74 61 6e tore()').........assert.isinstan
45380 63 65 28 70 6b 63 73 37 2c 20 50 4b 43 53 37 29 2c 20 27 70 6b 63 73 37 20 6e 6f 74 20 61 6e 20 ce(pkcs7,.PKCS7),.'pkcs7.not.an.
453a0 69 6e 73 74 61 6e 63 65 20 6f 66 20 50 4b 43 53 37 27 0a 20 20 20 20 20 20 20 20 70 37 20 3d 20 instance.of.PKCS7'.........p7.=.
453c0 70 6b 63 73 37 2e 5f 70 74 72 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 5f 62 69 6f pkcs7._ptr().........if.data_bio
453e0 20 69 73 20 4e 6f 6e 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 .is.None:.............blob.=.m2.
45400 70 6b 63 73 37 5f 76 65 72 69 66 79 30 28 70 37 2c 20 73 65 6c 66 2e 78 35 30 39 5f 73 74 61 63 pkcs7_verify0(p7,.self.x509_stac
45420 6b 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 20 20 k._ptr(),.......................
45440 20 20 20 20 20 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 ..............self.x509_store._p
45460 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 tr(),.flags).........else:......
45480 20 20 20 20 20 20 20 62 6c 6f 62 20 3d 20 6d 32 2e 70 6b 63 73 37 5f 76 65 72 69 66 79 31 28 70 .......blob.=.m2.pkcs7_verify1(p
454a0 37 2c 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 7,.self.x509_stack._ptr(),......
454c0 20 20 20 20 20 20 20 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
454e0 65 6c 66 2e 78 35 30 39 5f 73 74 6f 72 65 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 elf.x509_store._ptr(),..........
45500 20 20 20 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 ...........................data_
45520 62 69 6f 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 bio._ptr(),.flags).........retur
45540 6e 20 62 6c 6f 62 0a 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 28 73 65 6c 66 2c 20 6f 75 74 5f n.blob......def.write(self,.out_
45560 62 69 6f 2c 20 70 6b 63 73 37 2c 20 64 61 74 61 5f 62 69 6f 3d 4e 6f 6e 65 2c 20 66 6c 61 67 73 bio,.pkcs7,.data_bio=None,.flags
45580 3d 30 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 50 =0):.........#.type:.(BIO.BIO,.P
455a0 4b 43 53 37 2c 20 4f 70 74 69 6f 6e 61 6c 5b 42 49 4f 2e 42 49 4f 5d 2c 20 69 6e 74 29 20 2d 3e KCS7,.Optional[BIO.BIO],.int).->
455c0 20 69 6e 74 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 70 .int.........assert.isinstance(p
455e0 6b 63 73 37 2c 20 50 4b 43 53 37 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 5f 62 69 6f kcs7,.PKCS7).........if.data_bio
45600 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 20 6d 32 2e .is.None:.............return.m2.
45620 73 6d 69 6d 65 5f 77 72 69 74 65 5f 70 6b 63 73 37 28 6f 75 74 5f 62 69 6f 2e 5f 70 74 72 28 29 smime_write_pkcs7(out_bio._ptr()
45640 2c 20 70 6b 63 73 37 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 ,.pkcs7._ptr(),.flags).........e
45660 6c 73 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 73 6d 69 6d 65 lse:.............return.m2.smime
45680 5f 77 72 69 74 65 5f 70 6b 63 73 37 5f 6d 75 6c 74 69 28 6f 75 74 5f 62 69 6f 2e 5f 70 74 72 28 _write_pkcs7_multi(out_bio._ptr(
456a0 29 2c 20 70 6b 63 73 37 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ),.pkcs7._ptr(),................
456c0 20 20 20 20 20 20 20 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 ...............................d
456e0 61 74 61 5f 62 69 6f 2e 5f 70 74 72 28 29 2c 20 66 6c 61 67 73 29 0a 0a 0a 64 65 66 20 74 65 78 ata_bio._ptr(),.flags)...def.tex
45700 74 5f 63 72 6c 66 28 74 65 78 74 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 t_crlf(text):.....#.type:.(bytes
45720 29 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 62 69 6f 5f 69 6e 20 3d 20 42 49 4f 2e 4d 65 6d 6f ).->.bytes.....bio_in.=.BIO.Memo
45740 72 79 42 75 66 66 65 72 28 74 65 78 74 29 0a 20 20 20 20 62 69 6f 5f 6f 75 74 20 3d 20 42 49 4f ryBuffer(text).....bio_out.=.BIO
45760 2e 4d 65 6d 6f 72 79 42 75 66 66 65 72 28 29 0a 20 20 20 20 69 66 20 6d 32 2e 73 6d 69 6d 65 5f .MemoryBuffer().....if.m2.smime_
45780 63 72 6c 66 5f 63 6f 70 79 28 62 69 6f 5f 69 6e 2e 5f 70 74 72 28 29 2c 20 62 69 6f 5f 6f 75 74 crlf_copy(bio_in._ptr(),.bio_out
457a0 2e 5f 70 74 72 28 29 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 69 6f 5f 6f 75 74 ._ptr()):.........return.bio_out
457c0 2e 72 65 61 64 28 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 .read().....else:.........raise.
457e0 53 4d 49 4d 45 5f 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 28 29 29 0a 0a 0a 64 SMIME_Error(Err.get_error())...d
45800 65 66 20 74 65 78 74 5f 63 72 6c 66 5f 62 69 6f 28 62 69 6f 5f 69 6e 29 3a 0a 20 20 20 20 23 20 ef.text_crlf_bio(bio_in):.....#.
45820 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 29 20 2d 3e 20 42 49 4f 2e 42 49 4f 0a 20 20 20 20 62 type:.(BIO.BIO).->.BIO.BIO.....b
45840 69 6f 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 io_out.=.BIO.MemoryBuffer().....
45860 69 66 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 if.m2.smime_crlf_copy(bio_in._pt
45880 72 28 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 r(),.bio_out._ptr()):.........re
458a0 74 75 72 6e 20 62 69 6f 5f 6f 75 74 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 turn.bio_out.....else:.........r
458c0 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 72 6f 72 28 29 aise.SMIME_Error(Err.get_error()
458e0 29 0a 94 7d 94 28 8c 0b 50 4b 43 53 37 5f 45 72 72 6f 72 94 6a 37 02 00 00 4b 1a 4b 1b 87 94 8c )..}.(..PKCS7_Error.j7...K.K....
45900 0e 50 4b 43 53 37 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 25 4b 31 87 94 8c 0d 50 4b 43 .PKCS7.__init__.j.%..K%K1....PKC
45920 53 37 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 33 4b 36 87 94 8c 0a 50 4b 43 53 37 2e 5f 70 S7.__del__.j.%..K3K6....PKCS7._p
45940 74 72 94 6a 18 25 00 00 4b 38 4b 39 87 94 8c 0a 50 4b 43 53 37 2e 74 79 70 65 94 6a 18 25 00 00 tr.j.%..K8K9....PKCS7.type.j.%..
45960 4b 3b 4b 40 87 94 8c 0b 50 4b 43 53 37 2e 77 72 69 74 65 94 6a 18 25 00 00 4b 42 4b 44 87 94 8c K;K@....PKCS7.write.j.%..KBKD...
45980 0f 50 4b 43 53 37 2e 77 72 69 74 65 5f 64 65 72 94 6a 18 25 00 00 4b 46 4b 48 87 94 8c 12 50 4b .PKCS7.write_der.j.%..KFKH....PK
459a0 43 53 37 2e 67 65 74 30 5f 73 69 67 6e 65 72 73 94 6a 18 25 00 00 4b 4a 4b 4d 87 94 8c 05 50 4b CS7.get0_signers.j.%..KJKM....PK
459c0 43 53 37 94 6a 37 02 00 00 4b 21 4b 4d 87 94 8c 0a 6c 6f 61 64 5f 70 6b 63 73 37 94 6a 18 25 00 CS7.j7...K!KM....load_pkcs7.j.%.
459e0 00 4b 50 4b 55 87 94 8c 0e 6c 6f 61 64 5f 70 6b 63 73 37 5f 64 65 72 94 6a 18 25 00 00 4b 58 4b .KPKU....load_pkcs7_der.j.%..KXK
45a00 5d 87 94 8c 0e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 18 25 00 00 4b 60 4b 63 87 94 8c ]....load_pkcs7_bio.j.%..K`Kc...
45a20 12 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 94 6a 18 25 00 00 4b 66 4b 69 87 94 8c .load_pkcs7_bio_der.j.%..KfKi...
45a40 10 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 94 6a 18 25 00 00 4b 6c 4b 78 87 94 8c 14 73 .smime_load_pkcs7.j.%..KlKx....s
45a60 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 18 25 00 00 4b 7b 4b 83 87 94 8c mime_load_pkcs7_bio.j.%..K{K....
45a80 0f 43 69 70 68 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 8b 4b 90 87 94 8c 0b 43 69 .Cipher.__init__.j.%..K.K.....Ci
45aa0 70 68 65 72 2e 5f 70 74 72 94 6a 18 25 00 00 4b 92 4b 93 87 94 8c 06 43 69 70 68 65 72 94 6a 37 pher._ptr.j.%..K.K.....Cipher.j7
45ac0 02 00 00 4b 86 4b 93 87 94 8c 0b 53 4d 49 4d 45 5f 45 72 72 6f 72 94 6a 37 02 00 00 4b 96 4b 97 ...K.K.....SMIME_Error.j7...K.K.
45ae0 87 94 8c 0e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 6a 18 25 00 00 4b 9e 4b a4 87 94 8c 12 ....SMIME.load_key.j.%..K.K.....
45b00 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 18 25 00 00 4b a6 4b ac 87 94 8c 14 SMIME.load_key_bio.j.%..K.K.....
45b20 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 18 25 00 00 4b ae 4b b1 87 94 SMIME.set_x509_stack.j.%..K.K...
45b40 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 18 25 00 00 4b b3 4b b6 ..SMIME.set_x509_store.j.%..K.K.
45b60 87 94 8c 10 53 4d 49 4d 45 2e 73 65 74 5f 63 69 70 68 65 72 94 6a 18 25 00 00 4b b8 4b bb 87 94 ....SMIME.set_cipher.j.%..K.K...
45b80 8c 0f 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 6b 65 79 94 6a 18 25 00 00 4b bd 4b c0 87 94 8c 16 53 ..SMIME.unset_key.j.%..K.K.....S
45ba0 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 61 63 6b 94 6a 18 25 00 00 4b c2 4b c4 87 MIME.unset_x509_stack.j.%..K.K..
45bc0 94 8c 16 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f 72 65 94 6a 18 25 00 00 4b ...SMIME.unset_x509_store.j.%..K
45be0 c6 4b c8 87 94 8c 12 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 63 69 70 68 65 72 94 6a 18 25 00 00 4b .K.....SMIME.unset_cipher.j.%..K
45c00 ca 4b cc 87 94 8c 0d 53 4d 49 4d 45 2e 65 6e 63 72 79 70 74 94 6a 18 25 00 00 4b ce 4b d8 87 94 .K.....SMIME.encrypt.j.%..K.K...
45c20 8c 0d 53 4d 49 4d 45 2e 64 65 63 72 79 70 74 94 6a 18 25 00 00 4b da 4b e2 87 94 8c 0a 53 4d 49 ..SMIME.decrypt.j.%..K.K.....SMI
45c40 4d 45 2e 73 69 67 6e 94 6a 18 25 00 00 4b e4 4b f6 87 94 8c 0c 53 4d 49 4d 45 2e 76 65 72 69 66 ME.sign.j.%..K.K.....SMIME.verif
45c60 79 94 6a 18 25 00 00 4b f8 4d 07 01 87 94 8c 0b 53 4d 49 4d 45 2e 77 72 69 74 65 94 6a 18 25 00 y.j.%..K.M......SMIME.write.j.%.
45c80 00 4d 09 01 4d 10 01 87 94 8c 05 53 4d 49 4d 45 94 6a 37 02 00 00 4b 9d 4d 10 01 87 94 8c 09 74 .M..M......SMIME.j7...K.M......t
45ca0 65 78 74 5f 63 72 6c 66 94 6a 18 25 00 00 4d 13 01 4d 1a 01 87 94 8c 0d 74 65 78 74 5f 63 72 6c ext_crlf.j.%..M..M......text_crl
45cc0 66 5f 62 69 6f 94 6a 18 25 00 00 4d 1d 01 4d 23 01 87 94 75 7d 94 28 8c 06 43 69 70 68 65 72 94 f_bio.j.%..M..M#...u}.(..Cipher.
45ce0 6a 60 02 00 00 8c 05 50 4b 43 53 37 94 6a 60 02 00 00 8c 12 50 4b 43 53 37 2e 67 65 74 30 5f 73 j`.....PKCS7.j`.....PKCS7.get0_s
45d00 69 67 6e 65 72 73 94 6a 60 02 00 00 8c 0a 50 4b 43 53 37 2e 74 79 70 65 94 6a 60 02 00 00 8c 0b igners.j`.....PKCS7.type.j`.....
45d20 50 4b 43 53 37 2e 77 72 69 74 65 94 6a 60 02 00 00 8c 0f 50 4b 43 53 37 2e 77 72 69 74 65 5f 64 PKCS7.write.j`.....PKCS7.write_d
45d40 65 72 94 6a 60 02 00 00 6a 51 16 00 00 6a 60 02 00 00 8c 05 53 4d 49 4d 45 94 6a 60 02 00 00 8c er.j`...jQ...j`.....SMIME.j`....
45d60 0d 53 4d 49 4d 45 2e 64 65 63 72 79 70 74 94 6a 60 02 00 00 8c 0d 53 4d 49 4d 45 2e 65 6e 63 72 .SMIME.decrypt.j`.....SMIME.encr
45d80 79 70 74 94 6a 60 02 00 00 8c 0e 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 94 6a 60 02 00 00 8c ypt.j`.....SMIME.load_key.j`....
45da0 12 53 4d 49 4d 45 2e 6c 6f 61 64 5f 6b 65 79 5f 62 69 6f 94 6a 60 02 00 00 8c 10 53 4d 49 4d 45 .SMIME.load_key_bio.j`.....SMIME
45dc0 2e 73 65 74 5f 63 69 70 68 65 72 94 6a 60 02 00 00 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 .set_cipher.j`.....SMIME.set_x50
45de0 39 5f 73 74 61 63 6b 94 6a 60 02 00 00 8c 14 53 4d 49 4d 45 2e 73 65 74 5f 78 35 30 39 5f 73 74 9_stack.j`.....SMIME.set_x509_st
45e00 6f 72 65 94 6a 60 02 00 00 8c 0a 53 4d 49 4d 45 2e 73 69 67 6e 94 6a 60 02 00 00 8c 12 53 4d 49 ore.j`.....SMIME.sign.j`.....SMI
45e20 4d 45 2e 75 6e 73 65 74 5f 63 69 70 68 65 72 94 6a 60 02 00 00 8c 0f 53 4d 49 4d 45 2e 75 6e 73 ME.unset_cipher.j`.....SMIME.uns
45e40 65 74 5f 6b 65 79 94 6a 60 02 00 00 8c 16 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 et_key.j`.....SMIME.unset_x509_s
45e60 74 61 63 6b 94 6a 60 02 00 00 8c 16 53 4d 49 4d 45 2e 75 6e 73 65 74 5f 78 35 30 39 5f 73 74 6f tack.j`.....SMIME.unset_x509_sto
45e80 72 65 94 6a 60 02 00 00 8c 0c 53 4d 49 4d 45 2e 76 65 72 69 66 79 94 6a 60 02 00 00 8c 0b 53 4d re.j`.....SMIME.verify.j`.....SM
45ea0 49 4d 45 2e 77 72 69 74 65 94 6a 60 02 00 00 6a 81 16 00 00 6a 60 02 00 00 8c 0a 6c 6f 61 64 5f IME.write.j`...j....j`.....load_
45ec0 70 6b 63 73 37 94 6a 60 02 00 00 8c 0e 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 94 6a 60 02 00 pkcs7.j`.....load_pkcs7_bio.j`..
45ee0 00 8c 12 6c 6f 61 64 5f 70 6b 63 73 37 5f 62 69 6f 5f 64 65 72 94 6a 60 02 00 00 8c 0e 6c 6f 61 ...load_pkcs7_bio_der.j`.....loa
45f00 64 5f 70 6b 63 73 37 5f 64 65 72 94 6a 60 02 00 00 8c 10 73 6d 69 6d 65 5f 6c 6f 61 64 5f 70 6b d_pkcs7_der.j`.....smime_load_pk
45f20 63 73 37 94 6a 60 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 cs7.j`.....smime_load_pkcs7_bio.
45f40 6a 60 02 00 00 8c 09 74 65 78 74 5f 63 72 6c 66 94 6a 60 02 00 00 8c 0d 74 65 78 74 5f 63 72 6c j`.....text_crlf.j`.....text_crl
45f60 66 5f 62 69 6f 94 6a 60 02 00 00 75 8c 0e 4d 32 43 72 79 70 74 6f 2e 53 4d 49 4d 45 94 74 94 8c f_bio.j`...u..M2Crypto.SMIME.t..
45f80 0d 4d 32 43 72 79 70 74 6f 2e 58 35 30 39 94 28 58 a7 ad 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 .M2Crypto.X509.(X....from.__futu
45fa0 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 22 re__.import.absolute_import.."""
45fc0 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 20 58 35 30 M2Crypto.wrapper.for.OpenSSL.X50
45fe0 39 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 34 20 9.API...Copyright.(c).1999-2004.
46000 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
46020 76 65 64 2e 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 ved...Portions.created.by.Open.S
46040 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 20 28 4f ource.Applications.Foundation.(O
46060 53 41 46 29 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 SAF).are.Copyright.(C).2004-2007
46080 20 4f 53 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 41 75 74 68 .OSAF..All.Rights.Reserved..Auth
460a0 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 70 6f 72 74 20 or:.Heikki.Toivonen."""..import.
460c0 62 69 6e 61 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 binascii.import.logging..from.M2
460e0 43 72 79 70 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 Crypto.import.ASN1,.BIO,.EVP,.m2
46100 2c 20 73 69 78 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 ,.six..#.noqa.from.typing.import
46120 20 41 6e 79 53 74 72 2c 20 4c 69 73 74 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a .AnyStr,.List,.Optional..#.noqa.
46140 0a 46 4f 52 4d 41 54 5f 44 45 52 20 3d 20 30 0a 46 4f 52 4d 41 54 5f 50 45 4d 20 3d 20 31 0a 0a .FORMAT_DER.=.0.FORMAT_PEM.=.1..
46160 76 65 72 69 66 79 5f 61 6c 6c 6f 77 5f 70 72 6f 78 79 5f 63 65 72 74 73 20 3d 20 6d 32 2e 56 45 verify_allow_proxy_certs.=.m2.VE
46180 52 49 46 59 5f 41 4c 4c 4f 57 5f 50 52 4f 58 59 5f 43 45 52 54 53 0a 76 65 72 69 66 79 5f 63 62 RIFY_ALLOW_PROXY_CERTS.verify_cb
461a0 5f 69 73 73 75 65 72 5f 63 68 65 63 6b 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 43 42 5f 49 53 53 _issuer_check.=.m2.VERIFY_CB_ISS
461c0 55 45 52 5f 43 48 45 43 4b 0a 76 65 72 69 66 79 5f 63 68 65 63 6b 5f 73 73 5f 73 69 67 6e 61 74 UER_CHECK.verify_check_ss_signat
461e0 75 72 65 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 43 48 45 43 4b 5f 53 53 5f 53 49 47 4e 41 54 55 ure.=.m2.VERIFY_CHECK_SS_SIGNATU
46200 52 45 0a 76 65 72 69 66 79 5f 63 72 6c 5f 63 68 65 63 6b 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f RE.verify_crl_check.=.m2.VERIFY_
46220 43 52 4c 5f 43 48 45 43 4b 0a 76 65 72 69 66 79 5f 63 72 6c 5f 63 68 65 63 6b 5f 61 6c 6c 20 3d CRL_CHECK.verify_crl_check_all.=
46240 20 6d 32 2e 56 45 52 49 46 59 5f 43 52 4c 5f 43 48 45 43 4b 5f 41 4c 4c 0a 76 65 72 69 66 79 5f .m2.VERIFY_CRL_CHECK_ALL.verify_
46260 65 78 70 6c 69 63 69 74 5f 70 6f 6c 69 63 79 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 45 58 50 4c explicit_policy.=.m2.VERIFY_EXPL
46280 49 43 49 54 5f 50 4f 4c 49 43 59 0a 76 65 72 69 66 79 5f 65 78 74 65 6e 64 65 64 5f 63 72 6c 5f ICIT_POLICY.verify_extended_crl_
462a0 73 75 70 70 6f 72 74 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 45 58 54 45 4e 44 45 44 5f 43 52 4c support.=.m2.VERIFY_EXTENDED_CRL
462c0 5f 53 55 50 50 4f 52 54 0a 76 65 72 69 66 79 5f 69 67 6e 6f 72 65 5f 63 72 69 74 69 63 61 6c 20 _SUPPORT.verify_ignore_critical.
462e0 3d 20 6d 32 2e 56 45 52 49 46 59 5f 49 47 4e 4f 52 45 5f 43 52 49 54 49 43 41 4c 0a 76 65 72 69 =.m2.VERIFY_IGNORE_CRITICAL.veri
46300 66 79 5f 69 6e 68 69 62 69 74 5f 61 6e 79 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 49 4e 48 49 42 fy_inhibit_any.=.m2.VERIFY_INHIB
46320 49 54 5f 41 4e 59 0a 76 65 72 69 66 79 5f 69 6e 68 69 62 69 74 5f 6d 61 70 20 3d 20 6d 32 2e 56 IT_ANY.verify_inhibit_map.=.m2.V
46340 45 52 49 46 59 5f 49 4e 48 49 42 49 54 5f 4d 41 50 0a 76 65 72 69 66 79 5f 6e 6f 5f 61 6c 74 5f ERIFY_INHIBIT_MAP.verify_no_alt_
46360 63 68 61 69 6e 73 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 4e 4f 5f 41 4c 54 5f 43 48 41 49 4e 53 chains.=.m2.VERIFY_NO_ALT_CHAINS
46380 0a 69 66 20 68 61 73 61 74 74 72 28 6d 32 2c 20 22 56 45 52 49 46 59 5f 4e 4f 5f 43 48 45 43 4b .if.hasattr(m2,."VERIFY_NO_CHECK
463a0 5f 54 49 4d 45 22 29 3a 0a 20 20 20 20 76 65 72 69 66 79 5f 6e 6f 5f 63 68 65 63 6b 5f 74 69 6d _TIME"):.....verify_no_check_tim
463c0 65 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 4e 4f 5f 43 48 45 43 4b 5f 54 49 4d 45 0a 76 65 72 69 e.=.m2.VERIFY_NO_CHECK_TIME.veri
463e0 66 79 5f 6e 6f 74 69 66 79 5f 70 6f 6c 69 63 79 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 4e 4f 54 fy_notify_policy.=.m2.VERIFY_NOT
46400 49 46 59 5f 50 4f 4c 49 43 59 0a 76 65 72 69 66 79 5f 70 61 72 74 69 61 6c 5f 63 68 61 69 6e 20 IFY_POLICY.verify_partial_chain.
46420 3d 20 6d 32 2e 56 45 52 49 46 59 5f 50 41 52 54 49 41 4c 5f 43 48 41 49 4e 0a 76 65 72 69 66 79 =.m2.VERIFY_PARTIAL_CHAIN.verify
46440 5f 70 6f 6c 69 63 79 5f 63 68 65 63 6b 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 50 4f 4c 49 43 59 _policy_check.=.m2.VERIFY_POLICY
46460 5f 43 48 45 43 4b 0a 76 65 72 69 66 79 5f 74 72 75 73 74 65 64 5f 66 69 72 73 74 20 3d 20 6d 32 _CHECK.verify_trusted_first.=.m2
46480 2e 56 45 52 49 46 59 5f 54 52 55 53 54 45 44 5f 46 49 52 53 54 0a 76 65 72 69 66 79 5f 75 73 65 .VERIFY_TRUSTED_FIRST.verify_use
464a0 5f 64 65 6c 74 61 73 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 55 53 45 5f 44 45 4c 54 41 53 0a 76 _deltas.=.m2.VERIFY_USE_DELTAS.v
464c0 65 72 69 66 79 5f 78 35 30 39 5f 73 74 72 69 63 74 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 58 35 erify_x509_strict.=.m2.VERIFY_X5
464e0 30 39 5f 53 54 52 49 43 54 0a 0a 6c 6f 67 20 3d 20 6c 6f 67 67 69 6e 67 2e 67 65 74 4c 6f 67 67 09_STRICT..log.=.logging.getLogg
46500 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 72 72 6f 72 28 56 er(__name__)...class.X509Error(V
46520 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 78 35 30 39 5f 69 alueError):.....pass...m2.x509_i
46540 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 35 30 39 5f 56 nit(X509Error)..V_OK.=.m2.X509_V
46560 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 5f 73 74 6f 72 _OK..#.type:.int...def.x509_stor
46580 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 23 20 74 79 70 e_default_cb(ok,.ctx):.....#.typ
465a0 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 29 20 2d 3e 20 e:.(int,.X509_Store_Context).->.
465c0 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 5f 65 78 74 65 int.....return.ok...def.new_exte
465e0 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 3d 30 2c 20 5f nsion(name,.value,.critical=0,._
46600 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 2c 20 62 79 74 pyfree=1):.....#.type:.(str,.byt
46620 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 73 69 6f 6e 0a es,.int,.int).->.X509_Extension.
46640 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 5f 45 78 74 65 ....""".....Create.new.X509_Exte
46660 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 20 69 66 20 6e nsion.instance......""".....if.n
46680 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 72 27 20 61 6e ame.==.'subjectKeyIdentifier'.an
466a0 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 28 27 30 31 32 d.\.............value.strip('012
466c0 33 34 35 36 37 38 39 61 62 63 64 65 66 41 42 43 44 45 46 3a 27 29 20 21 3d 20 27 27 3a 0a 20 20 3456789abcdefABCDEF:').!=.'':...
466e0 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 76 61 6c 75 65 20 6d 75 ......raise.ValueError('value.mu
46700 73 74 20 62 65 20 70 72 65 63 6f 6d 70 75 74 65 64 20 68 61 73 68 27 29 0a 20 20 20 20 63 74 78 st.be.precomputed.hash').....ctx
46720 20 3d 20 6d 32 2e 78 35 30 39 76 33 5f 73 65 74 5f 6e 63 6f 6e 66 28 29 0a 20 20 20 20 78 35 30 .=.m2.x509v3_set_nconf().....x50
46740 39 5f 65 78 74 5f 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 76 33 5f 65 78 74 5f 63 6f 6e 66 28 4e 9_ext_ptr.=.m2.x509v3_ext_conf(N
46760 6f 6e 65 2c 20 63 74 78 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 0a 20 20 20 20 69 66 20 78 35 one,.ctx,.name,.value).....if.x5
46780 30 39 5f 65 78 74 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 09_ext_ptr.is.None:.........rais
467a0 65 20 58 35 30 39 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 61 6e 6e 6f 74 e.X509Error(............."Cannot
467c0 20 63 72 65 61 74 65 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 77 69 74 68 20 6e 61 6d 65 .create.X509_Extension.with.name
467e0 20 27 25 73 27 20 61 6e 64 20 76 61 6c 75 65 20 27 25 73 27 22 20 25 0a 20 20 20 20 20 20 20 20 .'%s'.and.value.'%s'".%.........
46800 20 20 20 20 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 29 0a 20 20 20 20 78 35 30 39 5f 65 78 74 20 ....(name,.value)).....x509_ext.
46820 3d 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 78 35 30 39 5f 65 78 74 5f 70 74 72 2c 20 5f =.X509_Extension(x509_ext_ptr,._
46840 70 79 66 72 65 65 29 0a 20 20 20 20 78 35 30 39 5f 65 78 74 2e 73 65 74 5f 63 72 69 74 69 63 61 pyfree).....x509_ext.set_critica
46860 6c 28 63 72 69 74 69 63 61 6c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 78 35 30 39 5f 65 78 74 0a l(critical).....return.x509_ext.
46880 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 6f 62 6a 65 63 74 29 3a 0a ..class.X509_Extension(object):.
468a0 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 22 ....""".....X509.Extension....."
468c0 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 20 3d ""......m2_x509_extension_free.=
468e0 20 6d 32 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 .m2.x509_extension_free......def
46900 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 78 35 30 39 5f 65 78 74 5f 70 74 72 3d 4e 6f 6e .__init__(self,.x509_ext_ptr=Non
46920 65 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 e,._pyfree=1):.........#.type:.(
46940 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 20 20 Optional[bytes],.int).->.None...
46960 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 20 3d 20 78 35 30 39 5f 65 78 74 5f 70 ......self.x509_ext.=.x509_ext_p
46980 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 72 65 tr.........self._pyfree.=._pyfre
469a0 65 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 e......def.__del__(self):.......
469c0 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 69 66 20 ..#.type:.().->.None.........if.
469e0 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 20 61 6e 64 20 getattr(self,.'_pyfree',.0).and.
46a00 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e self.x509_ext:.............self.
46a20 6d 32 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 m2_x509_extension_free(self.x509
46a40 5f 65 78 74 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 _ext)......def._ptr(self):......
46a60 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 20 72 ...#.type:.().->.bytes.........r
46a80 65 74 75 72 6e 20 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 0a 0a 20 20 20 20 64 65 66 20 73 65 74 eturn.self.x509_ext......def.set
46aa0 5f 63 72 69 74 69 63 61 6c 28 73 65 6c 66 2c 20 63 72 69 74 69 63 61 6c 3d 31 29 3a 0a 20 20 20 _critical(self,.critical=1):....
46ac0 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 0a 20 20 20 20 20 20 .....#.type:.(int).->.int.......
46ae0 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 4d 61 72 6b 20 74 68 69 73 20 65 78 74 65 6e 73 69 6f ..""".........Mark.this.extensio
46b00 6e 20 63 72 69 74 69 63 61 6c 20 6f 72 20 6e 6f 6e 63 72 69 74 69 63 61 6c 2e 20 42 79 20 64 65 n.critical.or.noncritical..By.de
46b20 66 61 75 6c 74 20 61 6e 0a 20 20 20 20 20 20 20 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 6e 6f fault.an.........extension.is.no
46b40 74 20 63 72 69 74 69 63 61 6c 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 72 69 74 t.critical...........:param.crit
46b60 69 63 61 6c 3a 20 4e 6f 6e 7a 65 72 6f 20 73 65 74 73 20 74 68 69 73 20 65 78 74 65 6e 73 69 6f ical:.Nonzero.sets.this.extensio
46b80 6e 20 61 73 20 63 72 69 74 69 63 61 6c 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.as.critical...................
46ba0 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 74 68 ........Calling.this.method.with
46bc0 6f 75 74 20 61 72 67 75 6d 65 6e 74 73 20 77 69 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 out.arguments.will..............
46be0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 68 69 73 20 65 78 74 65 6e 73 69 6f 6e 20 74 ............set.this.extension.t
46c00 6f 20 63 72 69 74 69 63 61 6c 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 66 o.critical..........:return:.1.f
46c20 6f 72 20 73 75 63 63 65 73 73 2c 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 or.success,.0.for.failure.......
46c40 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 65 78 74 ..""".........return.m2.x509_ext
46c60 65 6e 73 69 6f 6e 5f 73 65 74 5f 63 72 69 74 69 63 61 6c 28 73 65 6c 66 2e 78 35 30 39 5f 65 78 ension_set_critical(self.x509_ex
46c80 74 2c 20 63 72 69 74 69 63 61 6c 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 63 72 69 74 69 63 t,.critical)......def.get_critic
46ca0 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 20 28 29 20 2d 3e 20 al(self):.........#.type:.().->.
46cc0 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 75 72 6e 20 77 int.........""".........Return.w
46ce0 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 69 73 20 61 20 63 72 69 74 69 63 61 6c hether.or.not.this.is.a.critical
46d00 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 4e .extension...........:return:..N
46d20 6f 6e 7a 65 72 6f 20 69 66 20 74 68 69 73 20 69 73 20 61 20 63 72 69 74 69 63 61 6c 20 65 78 74 onzero.if.this.is.a.critical.ext
46d40 65 6e 73 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 72 65 74 75 ension..........""".........retu
46d60 72 6e 20 6d 32 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 63 72 69 74 69 63 61 rn.m2.x509_extension_get_critica
46d80 6c 28 73 65 6c 66 2e 78 35 30 39 5f 65 78 74 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6e 61 l(self.x509_ext)......def.get_na
46da0 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 2d 3e 20 me(self):.........#.type:.().->.
46dc0 73 74 72 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 str.........""".........Get.the.
46de0 65 78 74 65 6e 73 69 6f 6e 20 6e 61 6d 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 73 75 62 extension.name,.for.example.'sub
46e00 6a 65 63 74 41 6c 74 4e 61 6d 65 27 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 jectAltName'..........""".......
46e20 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 78 35 30 39 ..return.six.ensure_text(m2.x509
46e40 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 78 35 30 39 5f 65 78 _extension_get_name(self.x509_ex
46e60 74 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 61 6c 75 65 28 73 65 6c 66 2c 20 66 6c 61 t))......def.get_value(self,.fla
46e80 67 3d 30 2c 20 69 6e 64 65 6e 74 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 g=0,.indent=0):.........#.type:.
46ea0 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 22 22 0a 20 20 (int,.int).->.str........."""...
46ec0 20 20 20 20 20 20 47 65 74 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 76 61 6c 75 65 2c 20 66 ......Get.the.extension.value,.f
46ee0 6f 72 20 65 78 61 6d 70 6c 65 20 27 44 4e 53 3a 77 77 77 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 or.example.'DNS:www.example.com'
46f00 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6c 61 67 3a 20 20 20 46 6c 61 67 20 74 ...........:param.flag:...Flag.t
46f20 6f 20 63 6f 6e 74 72 6f 6c 20 77 68 61 74 20 61 6e 64 20 68 6f 77 20 74 6f 20 70 72 69 6e 74 2e o.control.what.and.how.to.print.
46f40 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 6e 64 65 6e 74 3a 20 48 6f 77 20 6d 61 6e 79 .........:param.indent:.How.many
46f60 20 73 70 61 63 65 73 20 74 6f 20 70 72 69 6e 74 20 62 65 66 6f 72 65 20 61 63 74 75 61 6c 20 76 .spaces.to.print.before.actual.v
46f80 61 6c 75 65 2e 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 alue..........""".........buf.=.
46fa0 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 20 6d 32 2e 78 35 BIO.MemoryBuffer().........m2.x5
46fc0 30 39 5f 65 78 74 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 09_ext_print(buf.bio_ptr(),.self
46fe0 2e 78 35 30 39 5f 65 78 74 2c 20 66 6c 61 67 2c 20 69 6e 64 65 6e 74 29 0a 20 20 20 20 20 20 20 .x509_ext,.flag,.indent)........
47000 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
47020 5f 61 6c 6c 28 29 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 _all())...class.X509_Extension_S
47040 74 61 63 6b 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 20 45 tack(object):.....""".....X509.E
47060 78 74 65 6e 73 69 6f 6e 20 53 74 61 63 6b 0a 0a 20 20 20 20 3a 77 61 72 6e 69 6e 67 3a 20 44 6f xtension.Stack......:warning:.Do
47080 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
470a0 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
470c0 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
470e0 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
47100 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
47120 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
47140 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
47160 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............
47180 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
471a0 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.......
471c0 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!....
471e0 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 ."""......m2_sk_x509_extension_f
47200 72 65 65 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 0a ree.=.m2.sk_x509_extension_free.
47220 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 6b 3d 4e 6f .....def.__init__(self,.stack=No
47240 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 20 74 79 70 65 3a 20 ne,._pyfree=0):.........#.type:.
47260 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 20 4e 6f 6e 65 0a 20 (Optional[bytes],.int).->.None..
47280 20 20 20 20 20 20 20 69 66 20 73 74 61 63 6b 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 .......if.stack.is.not.None:....
472a0 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 73 74 61 63 6b 0a 20 20 20 20 .........self.stack.=.stack.....
472c0 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 20 ........self._pyfree.=._pyfree..
472e0 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 65 78 74 65 ...........num.=.m2.sk_x509_exte
47300 6e 73 69 6f 6e 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 nsion_num(self.stack)...........
47320 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 75 6d 29 3a 0a 20 20 20 20 20 20 20 20 20 ..for.i.in.range(num):..........
47340 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 61 70 70 65 6e 64 28 58 35 30 39 5f .......self.pystack.append(X509_
47360 45 78 74 65 6e 73 69 6f 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d Extension(.....................m
47380 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 76 61 6c 75 65 28 73 65 6c 66 2e 73 2.sk_x509_extension_value(self.s
473a0 74 61 63 6b 2c 20 69 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 70 tack,.i),....................._p
473c0 79 66 72 65 65 3d 5f 70 79 66 72 65 65 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 yfree=_pyfree)).........else:...
473e0 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 ..........self.stack.=.m2.sk_x50
47400 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 6e 65 77 5f 6e 75 6c 6c 28 29 0a 20 20 20 20 20 20 20 20 20 9_extension_new_null()..........
47420 20 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 ...self._pyfree.=.1.............
47440 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 20 62 self.pystack.=.[]..#.This.must.b
47460 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 0a 0a e.kept.in.sync.with.self.stack..
47480 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):.........#
474a0 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 20 73 65 65 20 .type:.().->.None.........#.see.
474c0 42 49 4f 2e 70 79 20 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 BIO.py.-.unbalanced.__init__./._
474e0 5f 64 65 6c 5f 5f 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 _del__.........if.getattr(self,.
47500 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.
47520 6d 32 5f 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 66 72 65 65 28 73 65 6c 66 2e 73 m2_sk_x509_extension_free(self.s
47540 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):...
47560 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.........
47580 61 73 73 65 72 74 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 6e 75 6d 28 assert.m2.sk_x509_extension_num(
475a0 73 65 6c 66 2e 73 74 61 63 6b 29 20 3d 3d 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 self.stack).==.len(self.pystack)
475c0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b .........return.len(self.pystack
475e0 29 0a 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 )......def.__getitem__(self,.idx
47600 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 58 35 30 39 ):.........#.type:.(int).->.X509
47620 5f 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 _Extension.........return.self.p
47640 79 73 74 61 63 6b 5b 69 64 78 5d 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 74 65 72 5f 5f 28 73 65 ystack[idx]......def.__iter__(se
47660 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 65 72 28 73 65 6c 66 2e 70 79 lf):.........return.iter(self.py
47680 73 74 61 63 6b 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 stack)......def._ptr(self):.....
476a0 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 20 ....#.type:.().->.bytes.........
476c0 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 70 75 73 68 28 return.self.stack......def.push(
476e0 73 65 6c 66 2c 20 78 35 30 39 5f 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a self,.x509_ext):.........#.type:
47700 20 28 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 .(X509_Extension).->.int........
47720 20 22 22 22 0a 20 20 20 20 20 20 20 20 50 75 73 68 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e .""".........Push.X509_Extension
47740 20 6f 62 6a 65 63 74 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 .object.onto.the.stack..........
47760 20 3a 70 61 72 61 6d 20 78 35 30 39 5f 65 78 74 3a 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e .:param.x509_ext:.X509_Extension
47780 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20 70 75 73 68 65 64 20 6f 6e 74 6f 20 74 68 65 20 73 74 .object.to.be.pushed.onto.the.st
477a0 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 6e 75 6d 62 65 72 ack..........:return:.The.number
477c0 20 6f 66 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 20 .of.extensions.on.the.stack.....
477e0 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 61 70 .....""".........self.pystack.ap
47800 70 65 6e 64 28 78 35 30 39 5f 65 78 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e pend(x509_ext).........ret.=.m2.
47820 73 6b 5f 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 70 75 73 68 28 73 65 6c 66 2e 73 74 61 63 sk_x509_extension_push(self.stac
47840 6b 2c 20 78 35 30 39 5f 65 78 74 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 61 73 73 65 k,.x509_ext._ptr()).........asse
47860 72 74 20 72 65 74 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 rt.ret.==.len(self.pystack).....
47880 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 64 65 66 20 70 6f 70 28 73 65 6c 66 ....return.ret......def.pop(self
478a0 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 5f 45 78 ):.........#.type:.().->.X509_Ex
478c0 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 50 6f 70 20 tension.........""".........Pop.
478e0 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 73 X509_Extension.object.from.the.s
47900 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 39 5f 45 78 74 tack...........:return:.X509_Ext
47920 65 6e 73 69 6f 6e 20 70 6f 70 70 65 64 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 ension.popped.........""".......
47940 20 20 78 35 30 39 5f 65 78 74 5f 70 74 72 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 65 78 74 65 ..x509_ext_ptr.=.m2.sk_x509_exte
47960 6e 73 69 6f 6e 5f 70 6f 70 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 69 66 nsion_pop(self.stack).........if
47980 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 20 20 20 20 20 20 .x509_ext_ptr.is.None:..........
479a0 20 20 20 61 73 73 65 72 74 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 20 3d 3d 20 30 ...assert.len(self.pystack).==.0
479c0 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 20 20 20 .............return.None........
479e0 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 70 6f 70 28 29 0a 0a 0a 63 6c 61 .return.self.pystack.pop()...cla
47a00 73 73 20 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 ss.X509_Name_Entry(object):.....
47a20 22 22 22 0a 20 20 20 20 58 35 30 39 20 4e 61 6d 65 20 45 6e 74 72 79 0a 20 20 20 20 22 22 22 0a """.....X509.Name.Entry.....""".
47a40 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 20 3d 20 6d .....m2_x509_name_entry_free.=.m
47a60 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 2.x509_name_entry_free......def.
47a80 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 2c 20 __init__(self,.x509_name_entry,.
47aa0 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
47ac0 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 20 20 20 es,.int).->.None........."""....
47ae0 20 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 3a .........:param.x509_name_entry:
47b00 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 4e 41 4d .this.should.be.OpenSSL.X509_NAM
47b20 45 5f 45 4e 54 52 59 20 62 69 6e 61 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 61 E_ENTRY.binary.............:para
47b40 6d 20 5f 70 79 66 72 65 65 3a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 m._pyfree:.........""".........s
47b60 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 20 3d 20 78 35 30 39 5f 6e 61 6d 65 5f elf.x509_name_entry.=.x509_name_
47b80 65 6e 74 72 79 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 entry.........self._pyfree.=._py
47ba0 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 29 3a 0a 20 20 20 free......def.__del__(self):....
47bc0 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.........
47be0 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):.
47c00 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 6e 61 6d 65 5f 65 6e ............self.m2_x509_name_en
47c20 74 72 79 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 29 0a 0a try_free(self.x509_name_entry)..
47c40 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 79 ....def._ptr(self):.........#.ty
47c60 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 73 pe:.().->.bytes.........return.s
47c80 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 0a 0a 20 20 20 20 64 65 66 20 73 65 74 elf.x509_name_entry......def.set
47ca0 5f 6f 62 6a 65 63 74 28 73 65 6c 66 2c 20 61 73 6e 31 6f 62 6a 29 3a 0a 20 20 20 20 20 20 20 20 _object(self,.asn1obj):.........
47cc0 23 20 74 79 70 65 3a 20 28 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 29 20 2d 3e 20 69 6e #.type:.(ASN1.ASN1_Object).->.in
47ce0 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 73 20 74 68 65 20 66 t.........""".........Sets.the.f
47d00 69 65 6c 64 20 6e 61 6d 65 20 74 6f 20 61 73 6e 31 6f 62 6a 0a 0a 20 20 20 20 20 20 20 20 3a 70 ield.name.to.asn1obj..........:p
47d20 61 72 61 6d 20 61 73 6e 31 6f 62 6a 3a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 aram.asn1obj:.........:return:.0
47d40 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 20 20 20 20 20 .on.failure,.1.on.success.......
47d60 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 6e 61 6d ..""".........return.m2.x509_nam
47d80 65 5f 65 6e 74 72 79 5f 73 65 74 5f 6f 62 6a 65 63 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d e_entry_set_object(self.x509_nam
47da0 65 5f 65 6e 74 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 e_entry,........................
47dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 6e 31 6f 62 6a 2e 5f 70 ......................asn1obj._p
47de0 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 64 61 74 61 28 73 65 6c 66 2c 20 64 61 tr())......def.set_data(self,.da
47e00 74 61 2c 20 74 79 70 65 3d 41 53 4e 31 2e 4d 42 53 54 52 49 4e 47 5f 41 53 43 29 3a 0a 20 20 20 ta,.type=ASN1.MBSTRING_ASC):....
47e20 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 69 6e 74 .....#.type:.(bytes,.int).->.int
47e40 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 65 20 66 69 .........""".........Sets.the.fi
47e60 65 6c 64 20 6e 61 6d 65 20 74 6f 20 61 73 6e 31 6f 62 6a 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 eld.name.to.asn1obj..........:pa
47e80 72 61 6d 20 64 61 74 61 3a 20 64 61 74 61 20 69 6e 20 61 20 62 69 6e 61 72 79 20 66 6f 72 6d 20 ram.data:.data.in.a.binary.form.
47ea0 74 6f 20 62 65 20 73 65 74 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 6f 6e 20 to.be.set.........:return:.0.on.
47ec0 66 61 69 6c 75 72 65 2c 20 31 20 6f 6e 20 73 75 63 63 65 73 73 0a 20 20 20 20 20 20 20 20 22 22 failure,.1.on.success.........""
47ee0 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 65 5f 65 6e ".........return.m2.x509_name_en
47f00 74 72 79 5f 73 65 74 5f 64 61 74 61 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 try_set_data(self.x509_name_entr
47f20 79 2c 20 74 79 70 65 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6f 62 6a 65 y,.type,.data)......def.get_obje
47f40 63 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 ct(self):.........#.type:.().->.
47f60 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ASN1.ASN1_Object.........return.
47f80 41 53 4e 31 2e 41 53 4e 31 5f 4f 62 6a 65 63 74 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 ASN1.ASN1_Object(.............m2
47fa0 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 67 65 74 5f 6f 62 6a 65 63 74 28 73 65 6c 66 .x509_name_entry_get_object(self
47fc0 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f .x509_name_entry))......def.get_
47fe0 64 61 74 61 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 data(self):.........#.type:.().-
48000 3e 20 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 >.ASN1.ASN1_String.........retur
48020 6e 20 41 53 4e 31 2e 41 53 4e 31 5f 53 74 72 69 6e 67 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 n.ASN1.ASN1_String(.............
48040 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 67 65 74 5f 64 61 74 61 28 73 65 6c 66 m2.x509_name_entry_get_data(self
48060 2e 78 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 29 29 0a 0a 20 20 20 20 64 65 66 20 63 72 65 61 .x509_name_entry))......def.crea
48080 74 65 5f 62 79 5f 74 78 74 28 73 65 6c 66 2c 20 66 69 65 6c 64 2c 20 74 79 70 65 2c 20 65 6e 74 te_by_txt(self,.field,.type,.ent
480a0 72 79 2c 20 6c 65 6e 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 ry,.len):.........return.m2.x509
480c0 5f 6e 61 6d 65 5f 65 6e 74 72 79 5f 63 72 65 61 74 65 5f 62 79 5f 74 78 74 28 73 65 6c 66 2e 78 _name_entry_create_by_txt(self.x
480e0 35 30 39 5f 6e 61 6d 65 5f 65 6e 74 72 79 2e 5f 70 74 72 28 29 2c 0a 20 20 20 20 20 20 20 20 20 509_name_entry._ptr(),..........
48100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
48120 20 20 20 20 20 20 20 66 69 65 6c 64 2c 20 74 79 70 65 2c 20 65 6e 74 72 79 2c 20 6c 65 6e 29 0a .......field,.type,.entry,.len).
48140 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 4e 61 6d 65 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 ..class.X509_Name(object):....."
48160 22 22 0a 20 20 20 20 58 35 30 39 20 4e 61 6d 65 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6e 69 "".....X509.Name....."""......ni
48180 64 20 3d 20 7b 27 43 27 3a 20 6d 32 2e 4e 49 44 5f 63 6f 75 6e 74 72 79 4e 61 6d 65 2c 0a 20 20 d.=.{'C':.m2.NID_countryName,...
481a0 20 20 20 20 20 20 20 20 20 27 53 50 27 3a 20 6d 32 2e 4e 49 44 5f 73 74 61 74 65 4f 72 50 72 6f .........'SP':.m2.NID_stateOrPro
481c0 76 69 6e 63 65 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 53 54 27 3a 20 6d 32 2e 4e vinceName,............'ST':.m2.N
481e0 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 20 20 20 20 20 20 20 ID_stateOrProvinceName,.........
48200 20 20 20 27 73 74 61 74 65 4f 72 50 72 6f 76 69 6e 63 65 4e 61 6d 65 27 3a 20 6d 32 2e 4e 49 44 ...'stateOrProvinceName':.m2.NID
48220 5f 73 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 _stateOrProvinceName,...........
48240 20 27 4c 27 3a 20 6d 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 .'L':.m2.NID_localityName,......
48260 20 20 20 20 20 20 27 6c 6f 63 61 6c 69 74 79 4e 61 6d 65 27 3a 20 6d 32 2e 4e 49 44 5f 6c 6f 63 ......'localityName':.m2.NID_loc
48280 61 6c 69 74 79 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 4f 27 3a 20 6d 32 2e 4e 49 alityName,............'O':.m2.NI
482a0 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 27 D_organizationName,............'
482c0 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 4e 61 6d 65 27 3a 20 6d 32 2e 4e 49 44 5f 6f 72 67 61 6e 69 organizationName':.m2.NID_organi
482e0 7a 61 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 4f 55 27 3a 20 6d 32 2e zationName,............'OU':.m2.
48300 4e 49 44 5f 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 61 6c 55 6e 69 74 4e 61 6d 65 2c 0a 20 20 20 20 NID_organizationalUnitName,.....
48320 20 20 20 20 20 20 20 27 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 55 6e 69 74 4e 61 6d 65 27 3a 20 6d .......'organizationUnitName':.m
48340 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 61 6d 65 2c 0a 20 20 2.NID_organizationalUnitName,...
48360 20 20 20 20 20 20 20 20 20 27 43 4e 27 3a 20 6d 32 2e 4e 49 44 5f 63 6f 6d 6d 6f 6e 4e 61 6d 65 .........'CN':.m2.NID_commonName
48380 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 63 6f 6d 6d 6f 6e 4e 61 6d 65 27 3a 20 6d 32 2e 4e 49 ,............'commonName':.m2.NI
483a0 44 5f 63 6f 6d 6d 6f 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 45 6d 61 69 6c 27 D_commonName,............'Email'
483c0 3a 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 :.m2.NID_pkcs9_emailAddress,....
483e0 20 20 20 20 20 20 20 20 27 65 6d 61 69 6c 41 64 64 72 65 73 73 27 3a 20 6d 32 2e 4e 49 44 5f 70 ........'emailAddress':.m2.NID_p
48400 6b 63 73 39 5f 65 6d 61 69 6c 41 64 64 72 65 73 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 73 kcs9_emailAddress,............'s
48420 65 72 69 61 6c 4e 75 6d 62 65 72 27 3a 20 6d 32 2e 4e 49 44 5f 73 65 72 69 61 6c 4e 75 6d 62 65 erialNumber':.m2.NID_serialNumbe
48440 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 53 4e 27 3a 20 6d 32 2e 4e 49 44 5f 73 75 72 6e 61 r,............'SN':.m2.NID_surna
48460 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 73 75 72 6e 61 6d 65 27 3a 20 6d 32 2e 4e 49 44 me,............'surname':.m2.NID
48480 5f 73 75 72 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 47 4e 27 3a 20 6d 32 2e 4e 49 _surname,............'GN':.m2.NI
484a0 44 5f 67 69 76 65 6e 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 67 69 76 65 6e 4e 61 D_givenName,............'givenNa
484c0 6d 65 27 3a 20 6d 32 2e 4e 49 44 5f 67 69 76 65 6e 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 me':.m2.NID_givenName...........
484e0 20 7d 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 6e 61 6d 65 5f 66 72 65 65 20 3d 20 6d 32 2e 78 .}......m2_x509_name_free.=.m2.x
48500 35 30 39 5f 6e 61 6d 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 509_name_free......def.__init__(
48520 73 65 6c 66 2c 20 78 35 30 39 5f 6e 61 6d 65 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 29 self,.x509_name=None,._pyfree=0)
48540 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 2d :.........#.type:.(bytes,.int).-
48560 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 3a 70 61 72 61 >.None.........""".........:para
48580 6d 20 78 35 30 39 5f 6e 61 6d 65 3a 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 4f 70 65 6e m.x509_name:.this.should.be.Open
485a0 53 53 4c 20 58 35 30 39 5f 4e 41 4d 45 20 62 69 6e 61 72 79 0a 20 20 20 20 20 20 20 20 3a 70 61 SSL.X509_NAME.binary.........:pa
485c0 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 20 20 20 20 20 20 20 ram._pyfree:........."""........
485e0 20 69 66 20 78 35 30 39 5f 6e 61 6d 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 .if.x509_name.is.not.None:......
48600 20 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 .......assert.m2.x509_name_type_
48620 63 68 65 63 6b 28 78 35 30 39 5f 6e 61 6d 65 29 2c 20 22 27 78 35 30 39 5f 6e 61 6d 65 27 20 74 check(x509_name),."'x509_name'.t
48640 79 70 65 20 65 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 ype.error".............self.x509
48660 5f 6e 61 6d 65 20 3d 20 78 35 30 39 5f 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 _name.=.x509_name.............se
48680 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 73 lf._pyfree.=._pyfree.........els
486a0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 20 3d 20 e:.............self.x509_name.=.
486c0 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 m2.x509_name_new().............s
486e0 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 65 6c 5f 5f elf._pyfree.=.1......def.__del__
48700 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
48720 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 70 79 ne.........if.getattr(self,.'_py
48740 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 5f 78 free',.0):.............self.m2_x
48760 35 30 39 5f 6e 61 6d 65 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 509_name_free(self.x509_name)...
48780 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 20 20 20 20 23 20 ...def.__str__(self):.........#.
487a0 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 61 73 73 65 72 74 type:.().->.bytes.........assert
487c0 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 73 65 6c 66 2e 78 35 .m2.x509_name_type_check(self.x5
487e0 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 27 78 35 30 39 5f 6e 09_name),.\............."'x509_n
48800 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 72 65 74 75 72 6e 20 ame'.type.error".........return.
48820 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 6f 6e 65 6c 69 6e 65 28 73 65 6c 66 2e 78 35 30 39 5f 6e m2.x509_name_oneline(self.x509_n
48840 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 ame)......def.__getattr__(self,.
48860 61 74 74 72 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 attr):.........#.type:.(str).->.
48880 73 74 72 0a 20 20 20 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 str.........if.attr.in.self.nid:
488a0 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 61 6d 65 .............assert.m2.x509_name
488c0 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 0a 20 _type_check(self.x509_name),.\..
488e0 20 20 20 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 ..............."'x509_name'.type
48900 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 .error".............return.six.e
48920 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 62 79 5f 6e 69 64 28 73 nsure_text(m2.x509_name_by_nid(s
48940 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 73 65 6c 66 2e 6e 69 64 5b 61 74 74 72 5d 29 29 0a elf.x509_name,.self.nid[attr])).
48960 0a 20 20 20 20 20 20 20 20 69 66 20 61 74 74 72 20 69 6e 20 73 65 6c 66 2e 5f 5f 64 69 63 74 5f .........if.attr.in.self.__dict_
48980 5f 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 5f 5f 64 69 63 _:.............return.self.__dic
489a0 74 5f 5f 5b 61 74 74 72 5d 0a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 41 74 74 72 69 62 75 t__[attr]..........raise.Attribu
489c0 74 65 45 72 72 6f 72 28 73 65 6c 66 2c 20 61 74 74 72 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 teError(self,.attr)......def.__s
489e0 65 74 61 74 74 72 5f 5f 28 73 65 6c 66 2c 20 61 74 74 72 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 etattr__(self,.attr,.value):....
48a00 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 41 6e 79 53 74 72 29 20 2d 3e 20 69 6e .....#.type:.(str,.AnyStr).->.in
48a20 74 0a 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 t.........""".........:return:.1
48a40 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 20 6f 63 .for.success.of.0.if.an.error.oc
48a60 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 69 66 20 61 curred..........""".........if.a
48a80 74 74 72 20 69 6e 20 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 ttr.in.self.nid:.............ass
48aa0 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 73 65 6c 66 ert.m2.x509_name_type_check(self
48ac0 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 20 20 20 20 22 .x509_name),.\................."
48ae0 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".........
48b00 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 73 65 74 5f 62 79 5f 6e ....return.m2.x509_name_set_by_n
48b20 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 5b 61 74 74 72 id(self.x509_name,.self.nid[attr
48b40 5d 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 20 ],..............................
48b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 6e 61 72 79 28 ..............six.ensure_binary(
48b80 76 61 6c 75 65 29 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 5f 64 69 63 74 5f 5f 5b 61 value))..........self.__dict__[a
48ba0 74 74 72 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 6c 65 6e 5f 5f 28 73 65 ttr].=.value......def.__len__(se
48bc0 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..
48be0 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 5f 65 6e 74 72 79 .......return.m2.x509_name_entry
48c00 5f 63 6f 75 6e 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 _count(self.x509_name)......def.
48c20 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 20 __getitem__(self,.idx):.........
48c40 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 #.type:.(int).->.X509_Name_Entry
48c60 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 30 20 3c 3d 20 69 64 78 20 3c 20 73 65 6c 66 2e .........if.not.0.<=.idx.<.self.
48c80 65 6e 74 72 79 5f 63 6f 75 6e 74 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 entry_count():.............raise
48ca0 20 49 6e 64 65 78 45 72 72 6f 72 28 22 69 6e 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 22 .IndexError("index.out.of.range"
48cc0 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 ).........return.X509_Name_Entry
48ce0 28 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 67 65 74 5f 65 6e 74 72 79 28 73 65 6c 66 2e 78 35 30 (m2.x509_name_get_entry(self.x50
48d00 39 5f 6e 61 6d 65 2c 20 69 64 78 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 74 65 72 5f 5f 28 9_name,.idx))......def.__iter__(
48d20 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 73 65 self):.........for.i.in.range(se
48d40 6c 66 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 79 lf.entry_count()):.............y
48d60 69 65 6c 64 20 73 65 6c 66 5b 69 5d 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c 66 29 ield.self[i]......def._ptr(self)
48d80 3a 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 6d 65 5f 74 79 :.........assert.m2.x509_name_ty
48da0 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 0a 20 20 20 20 pe_check(self.x509_name),.\.....
48dc0 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"
48de0 0a 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 6e 61 6d 65 0a 0a .........return.self.x509_name..
48e00 20 20 20 20 64 65 66 20 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 78 74 28 73 65 6c 66 2c 20 66 ....def.add_entry_by_txt(self,.f
48e20 69 65 6c 64 2c 20 74 79 70 65 2c 20 65 6e 74 72 79 2c 20 6c 65 6e 2c 20 6c 6f 63 2c 20 73 65 74 ield,.type,.entry,.len,.loc,.set
48e40 29 3a 0a 20 20 20 20 20 20 20 20 23 20 65 6e 74 72 79 5f 74 79 70 65 3a 20 28 73 74 72 2c 20 69 ):.........#.entry_type:.(str,.i
48e60 6e 74 2c 20 62 79 74 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 nt,.bytes,.int,.int,.int).->.int
48e80 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 39 5f 4e 61 .........""".........Add.X509_Na
48ea0 6d 65 20 66 69 65 6c 64 20 77 68 6f 73 65 20 6e 61 6d 65 20 69 73 20 69 64 65 6e 74 69 66 69 65 me.field.whose.name.is.identifie
48ec0 64 20 62 79 20 69 74 73 20 6e 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 d.by.its.name...........:param.f
48ee0 69 65 6c 64 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 ield:.name.of.the.entry.........
48f00 3a 70 61 72 61 6d 20 74 79 70 65 3a 20 75 73 65 20 4d 42 53 54 52 49 4e 47 5f 41 53 43 20 6f 72 :param.type:.use.MBSTRING_ASC.or
48f20 20 4d 42 53 54 52 49 4e 47 5f 55 54 46 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f .MBSTRING_UTF8................(o
48f40 72 20 73 74 61 6e 64 61 72 64 20 41 53 4e 31 20 74 79 70 65 20 6c 69 6b 65 20 56 5f 41 53 4e 31 r.standard.ASN1.type.like.V_ASN1
48f60 5f 49 41 35 53 54 52 49 4e 47 29 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 65 6e 74 72 79 _IA5STRING).........:param.entry
48f80 3a 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6c 65 6e 3a 20 62 75 66 5f :.value.........:param.len:.buf_
48fa0 6c 65 6e 20 6f 66 20 74 68 65 20 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 len.of.the.entry................
48fc0 28 2d 31 20 61 6e 64 20 74 68 65 20 6c 65 6e 67 74 68 20 69 73 20 63 6f 6d 70 75 74 65 64 20 61 (-1.and.the.length.is.computed.a
48fe0 75 74 6f 6d 61 67 69 63 61 6c 6c 79 29 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 60 60 6c 6f 63 utomagically)..........The.``loc
49000 60 60 20 61 6e 64 20 60 60 73 65 74 60 60 20 70 61 72 61 6d 65 74 65 72 73 20 64 65 74 65 72 6d ``.and.``set``.parameters.determ
49020 69 6e 65 20 77 68 65 72 65 20 61 20 6e 65 77 20 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 73 68 ine.where.a.new.entry.........sh
49040 6f 75 6c 64 20 62 65 20 61 64 64 65 64 2e 0a 20 20 20 20 20 20 20 20 46 6f 72 20 61 6c 6d 6f 73 ould.be.added..........For.almos
49060 74 20 61 6c 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 6c 6f 63 20 63 61 6e 20 62 65 20 73 65 t.all.applications.loc.can.be.se
49080 74 20 74 6f 20 2d 31 20 61 6e 64 20 73 65 74 20 74 6f 20 30 2e 0a 20 20 20 20 20 20 20 20 54 68 t.to.-1.and.set.to.0..........Th
490a0 69 73 20 61 64 64 73 20 61 20 6e 65 77 20 65 6e 74 72 79 20 74 6f 20 74 68 65 20 65 6e 64 20 6f is.adds.a.new.entry.to.the.end.o
490c0 66 20 6e 61 6d 65 20 61 73 20 61 20 73 69 6e 67 6c 65 20 76 61 6c 75 65 64 0a 20 20 20 20 20 20 f.name.as.a.single.valued.......
490e0 20 20 52 65 6c 61 74 69 76 65 44 69 73 74 69 6e 67 75 69 73 68 65 64 4e 61 6d 65 20 28 52 44 4e ..RelativeDistinguishedName.(RDN
49100 29 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6c 6f 63 3a 20 64 65 74 65 72 6d 69 6e )...........:param.loc:.determin
49120 65 73 20 74 68 65 20 69 6e 64 65 78 20 77 68 65 72 65 20 74 68 65 20 6e 65 77 20 65 6e 74 72 79 es.the.index.where.the.new.entry
49140 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 65 64 3a 20 69 66 20 .is................inserted:.if.
49160 69 74 20 69 73 20 2d 31 20 69 74 20 69 73 20 61 70 70 65 6e 64 65 64 2e 0a 20 20 20 20 20 20 20 it.is.-1.it.is.appended.........
49180 20 3a 70 61 72 61 6d 20 73 65 74 3a 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f 77 20 74 68 65 20 .:param.set:.determines.how.the.
491a0 6e 65 77 20 74 79 70 65 20 69 73 20 61 64 64 65 64 2e 20 49 66 20 69 74 20 69 73 20 7a 65 72 6f new.type.is.added..If.it.is.zero
491c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 6e 65 77 20 52 44 4e 20 69 73 20 63 72 65 ................a.new.RDN.is.cre
491e0 61 74 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 73 65 74 20 69 73 20 2d ated.................If.set.is.-
49200 31 20 6f 72 20 31 20 69 74 20 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 70 72 65 76 69 6f 1.or.1.it.is.added.to.the.previo
49220 75 73 20 6f 72 20 6e 65 78 74 20 52 44 4e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 us.or.next.RDN................st
49240 72 75 63 74 75 72 65 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 69 73 20 77 69 6c 6c 20 ructure.respectively..This.will.
49260 74 68 65 6e 20 62 65 20 61 20 6d 75 6c 74 69 76 61 6c 75 65 64 0a 20 20 20 20 20 20 20 20 20 20 then.be.a.multivalued...........
49280 20 20 20 20 20 52 44 4e 3a 20 73 69 6e 63 65 20 6d 75 6c 74 69 76 61 6c 75 65 73 20 52 44 4e 73 .....RDN:.since.multivalues.RDNs
492a0 20 61 72 65 20 76 65 72 79 20 73 65 6c 64 6f 6d 20 75 73 65 64 20 73 65 74 20 69 73 0a 20 20 20 .are.very.seldom.used.set.is....
492c0 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 65 74 20 74 6f ............almost.always.set.to
492e0 20 7a 65 72 6f 2e 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 .zero...........:return:.1.for.s
49300 75 63 63 65 73 73 20 6f 66 20 30 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 uccess.of.0.if.an.error.occurred
49320 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.
49340 78 35 30 39 5f 6e 61 6d 65 5f 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 78 74 28 73 65 6c 66 2e x509_name_add_entry_by_txt(self.
49360 78 35 30 39 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 x509_name,......................
49380 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 78 2e 65 6e 73 75 ........................six.ensu
493a0 72 65 5f 73 74 72 28 66 69 65 6c 64 29 2c 20 74 79 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 re_str(field),.type,............
493c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
493e0 20 20 73 69 78 2e 65 6e 73 75 72 65 5f 73 74 72 28 65 6e 74 72 79 29 2c 20 6c 65 6e 2c 20 6c 6f ..six.ensure_str(entry),.len,.lo
49400 63 2c 20 73 65 74 29 0a 0a 20 20 20 20 64 65 66 20 65 6e 74 72 79 5f 63 6f 75 6e 74 28 73 65 6c c,.set)......def.entry_count(sel
49420 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...
49440 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 5f 65 6e 74 72 79 5f ......return.m2.x509_name_entry_
49460 63 6f 75 6e 74 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 67 count(self.x509_name)......def.g
49480 65 74 5f 65 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 28 73 65 6c 66 2c 20 6e 69 64 29 3a 0a 20 20 et_entries_by_nid(self,.nid):...
494a0 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 29 20 2d 3e 20 4c 69 73 74 5b 58 35 30 39 ......#.type:.(int).->.List[X509
494c0 5f 4e 61 6d 65 5f 45 6e 74 72 79 5d 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 _Name_Entry]........."""........
494e0 20 52 65 74 72 69 65 76 65 20 74 68 65 20 6e 65 78 74 20 69 6e 64 65 78 20 6d 61 74 63 68 69 6e .Retrieve.the.next.index.matchin
49500 67 20 6e 69 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6e 69 64 3a 20 6e 61 6d 65 g.nid...........:param.nid:.name
49520 20 6f 66 20 74 68 65 20 65 6e 74 72 79 20 28 61 73 20 6d 32 2e 4e 49 44 2a 20 63 6f 6e 73 74 61 .of.the.entry.(as.m2.NID*.consta
49540 6e 74 73 29 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 6c 69 73 74 20 6f 66 20 58 nts)..........:return:.list.of.X
49560 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 20 69 74 65 6d 73 0a 20 20 20 20 20 20 20 20 22 22 22 509_Name_Entry.items........."""
49580 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 6c 61 73 74 70 6f .........ret.=.[].........lastpo
495a0 73 20 3d 20 2d 31 0a 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 0a 20 20 20 20 s.=.-1..........while.True:.....
495c0 20 20 20 20 20 20 20 20 6c 61 73 74 70 6f 73 20 3d 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 67 ........lastpos.=.m2.x509_name_g
495e0 65 74 5f 69 6e 64 65 78 5f 62 79 5f 6e 69 64 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 et_index_by_nid(self.x509_name,.
49600 6e 69 64 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 nid,............................
49620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 70 6f 73 .........................lastpos
49640 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 61 73 74 70 6f 73 20 3d 3d 20 2d 31 3a 0a ).............if.lastpos.==.-1:.
49660 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 20 20 20 20 20 ................break...........
49680 20 20 20 72 65 74 2e 61 70 70 65 6e 64 28 73 65 6c 66 5b 6c 61 73 74 70 6f 73 5d 29 0a 0a 20 20 ...ret.append(self[lastpos])....
496a0 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 61 73 5f 74 65 78 ......return.ret......def.as_tex
496c0 74 28 73 65 6c 66 2c 20 69 6e 64 65 6e 74 3d 30 2c 20 66 6c 61 67 73 3d 6d 32 2e 58 4e 5f 46 4c t(self,.indent=0,.flags=m2.XN_FL
496e0 41 47 5f 43 4f 4d 50 41 54 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 AG_COMPAT):.........#.type:.(int
49700 2c 20 69 6e 74 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 ,.int).->.str.........""".......
49720 20 20 61 73 5f 74 65 78 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 61 73 20 61 20 ..as_text.returns.the.name.as.a.
49740 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 6e 64 65 6e 74 3a 20 string...........:param.indent:.
49760 45 61 63 68 20 6c 69 6e 65 20 69 6e 20 6d 75 6c 74 69 6c 69 6e 65 20 66 6f 72 6d 61 74 20 69 73 Each.line.in.multiline.format.is
49780 20 69 6e 64 65 6e 74 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 .indented.......................
497a0 20 62 79 20 74 68 69 73 20 6d 61 6e 79 20 73 70 61 63 65 73 2e 0a 20 20 20 20 20 20 20 20 3a 70 .by.this.many.spaces..........:p
497c0 61 72 61 6d 20 66 6c 61 67 73 3a 20 20 46 6c 61 67 73 20 74 68 61 74 20 63 6f 6e 74 72 6f 6c 20 aram.flags:..Flags.that.control.
497e0 68 6f 77 20 74 68 65 20 6f 75 74 70 75 74 20 73 68 6f 75 6c 64 20 62 65 20 66 6f 72 6d 61 74 74 how.the.output.should.be.formatt
49800 65 64 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 6d ed..........""".........assert.m
49820 32 2e 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 2.x509_name_type_check(self.x509
49840 5f 6e 61 6d 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 _name),.\............."'x509_nam
49860 65 27 20 74 79 70 65 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 62 75 66 20 3d 20 42 49 4f e'.type.error".........buf.=.BIO
49880 2e 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 .MemoryBuffer().........m2.x509_
498a0 6e 61 6d 65 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 name_print_ex(buf.bio_ptr(),.sel
498c0 66 2e 78 35 30 39 5f 6e 61 6d 65 2c 20 69 6e 64 65 6e 74 2c 20 66 6c 61 67 73 29 0a 20 20 20 20 f.x509_name,.indent,.flags).....
498e0 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 62 75 66 2e 72 ....return.six.ensure_text(buf.r
49900 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 64 65 72 28 73 65 6c 66 29 ead_all())......def.as_der(self)
49920 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 20 :.........#.type:.().->.bytes...
49940 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
49960 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),.\.........
49980 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 0a 20 20 20 ...."'x509_name'.type.error"....
499a0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 6e 61 6d 65 5f 67 65 74 5f 64 65 72 .....return.m2.x509_name_get_der
499c0 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 68 61 73 (self.x509_name)......def.as_has
499e0 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 69 h(self):.........#.type:.().->.i
49a00 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 6e 61 6d 65 5f 74 nt.........assert.m2.x509_name_t
49a20 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 0a 20 20 20 ype_check(self.x509_name),.\....
49a40 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 72 72 6f 72 ........."'x509_name'.type.error
49a60 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 65 5f 68 61 ".........return.m2.x509_name_ha
49a80 73 68 28 73 65 6c 66 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 28 sh(self.x509_name)...class.X509(
49aa0 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 2e 35 30 39 20 43 65 72 74 69 object):.....""".....X.509.Certi
49ac0 66 69 63 61 74 65 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 66 72 65 65 ficate....."""......m2_x509_free
49ae0 20 3d 20 6d 32 2e 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 .=.m2.x509_free......def.__init_
49b00 5f 28 73 65 6c 66 2c 20 78 35 30 39 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 _(self,.x509=None,._pyfree=0):..
49b20 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 2c .......#.type:.(Optional[bytes],
49b40 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 20 20 .int).->.None.........""".......
49b60 20 20 3a 70 61 72 61 6d 20 78 35 30 39 3a 20 62 69 6e 61 72 79 20 72 65 70 72 65 73 65 6e 74 61 ..:param.x509:.binary.representa
49b80 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 65 20 75 6e 64 65 72 tion.of................the.under
49ba0 6c 79 69 6e 67 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 lying.OpenSSL.X509.object.......
49bc0 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 20 ...:param._pyfree:........."""..
49be0 20 20 20 20 20 20 20 69 66 20 78 35 30 39 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 .......if.x509.is.not.None:.....
49c00 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
49c20 6b 28 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 k(x509),."'x509'.type.error"....
49c40 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 35 30 39 20 3d 20 78 35 30 39 0a 20 20 20 20 20 20 .........self.x509.=.x509.......
49c60 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 20 ......self._pyfree.=._pyfree....
49c80 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 39 .....else:.............self.x509
49ca0 20 3d 20 6d 32 2e 78 35 30 39 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c .=.m2.x509_new().............sel
49cc0 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
49ce0 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
49d00 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
49d20 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
49d40 39 5f 66 72 65 65 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 9_free(self.x509)......def._ptr(
49d60 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 74 self):.........#.type:.().->.byt
49d80 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 74 79 70 65 5f 63 es.........assert.m2.x509_type_c
49da0 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 72 heck(self.x509),."'x509'.type.er
49dc0 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 30 39 0a 0a 20 ror".........return.self.x509...
49de0 20 20 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 ...def.as_text(self):.........#.
49e00 74 79 70 65 3a 20 28 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d type:.().->.str.........assert.m
49e20 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),."'
49e40 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 62 75 66 20 3d 20 x509'.type.error".........buf.=.
49e60 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 20 6d 32 2e 78 35 BIO.MemoryBuffer().........m2.x5
49e80 30 39 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 78 35 30 09_print(buf.bio_ptr(),.self.x50
49ea0 39 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 9).........return.six.ensure_tex
49ec0 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 64 65 t(buf.read_all())......def.as_de
49ee0 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 20 62 r(self):.........#.type:.().->.b
49f00 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 74 79 70 65 ytes.........assert.m2.x509_type
49f20 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.
49f40 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 69 32 64 5f 78 35 30 error".........return.m2.i2d_x50
49f60 39 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 70 65 6d 28 73 65 6c 9(self.x509)......def.as_pem(sel
49f80 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.
49fa0 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()
49fc0 0a 20 20 20 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 77 72 69 74 65 5f 70 65 6d 28 62 75 66 2e 62 .........m2.x509_write_pem(buf.b
49fe0 69 6f 5f 70 74 72 28 29 2c 20 73 65 6c 66 2e 78 35 30 39 29 0a 20 20 20 20 20 20 20 20 72 65 74 io_ptr(),.self.x509).........ret
4a000 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 73 61 76 65 urn.buf.read_all()......def.save
4a020 5f 70 65 6d 28 73 65 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 _pem(self,.filename):.........#.
4a040 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 20 20 20 20 22 22 type:.(AnyStr).->.int.........""
4a060 22 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 6e 61 6d 65 20 ".........:param.filename:.name.
4a080 6f 66 20 74 68 65 20 66 69 6c 65 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 0a 20 20 20 20 20 20 20 of.the.file.to.be.loaded........
4a0a0 20 3a 72 65 74 75 72 6e 3a 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 6f 72 20 30 20 66 6f 72 .:return:.1.for.success.or.0.for
4a0c0 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 77 69 74 .failure.........""".........wit
4a0e0 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 77 62 27 29 20 61 h.BIO.openfile(filename,.'wb').a
4a100 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 78 35 30 s.bio:.............return.m2.x50
4a120 39 5f 77 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 9_write_pem(bio.bio_ptr(),.self.
4a140 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 x509)......def.save(self,.filena
4a160 6d 65 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 20 20 20 20 me,.format=FORMAT_PEM):.........
4a180 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 69 6e 74 0a 20 20 20 #.type:.(AnyStr,.int).->.int....
4a1a0 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 73 20 58 2e 35 30 39 20 63 65 72 .....""".........Saves.X.509.cer
4a1c0 74 69 66 69 63 61 74 65 20 74 6f 20 61 20 66 69 6c 65 2e 20 44 65 66 61 75 6c 74 20 6f 75 74 70 tificate.to.a.file..Default.outp
4a1e0 75 74 0a 20 20 20 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 ut.........format.is.PEM........
4a200 20 20 20 3a 70 61 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 ...:param.filename:.Name.of.the.
4a220 66 69 6c 65 20 74 68 65 20 63 65 72 74 20 77 69 6c 6c 20 62 65 20 73 61 76 65 64 20 74 6f 2e 0a file.the.cert.will.be.saved.to..
4a240 0a 20 20 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 .........:param.format:.Controls
4a260 20 77 68 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 .what.output.format.is.used.to.s
4a280 61 76 65 20 74 68 65 20 63 65 72 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ave.the.cert....................
4a2a0 20 20 20 20 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 .....Either.FORMAT_PEM.or.FORMAT
4a2c0 5f 44 45 52 20 74 6f 20 73 61 76 65 20 69 6e 20 50 45 4d 20 6f 72 0a 20 20 20 20 20 20 20 20 20 _DER.to.save.in.PEM.or..........
4a2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 45 52 20 66 6f 72 6d 61 74 2e 20 20 52 61 69 73 65 ..............DER.format...Raise
4a300 73 20 61 20 56 61 6c 75 65 45 72 72 6f 72 20 69 66 20 61 6e 20 75 6e 6b 6e 6f 77 0a 20 20 20 20 s.a.ValueError.if.an.unknow.....
4a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 20 69 73 20 75 73 65 ...................format.is.use
4a340 64 2e 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 d...........:return:.1.for.succe
4a360 73 73 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 ss.or.0.for.failure.........""".
4a380 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
4a3a0 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 69 66 me,.'wb').as.bio:.............if
4a3c0 20 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 .format.==.FORMAT_PEM:..........
4a3e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 77 72 69 74 65 5f 70 65 6d 28 .......return.m2.x509_write_pem(
4a400 62 69 6f 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 20 20 20 20 bio.bio_ptr(),.self.x509).......
4a420 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 52 3a ......elif.format.==.FORMAT_DER:
4a440 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 5f 78 .................return.m2.i2d_x
4a460 35 30 39 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 78 35 30 39 509_bio(bio.bio_ptr(),.self.x509
4a480 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 20 ).............else:.............
4a4a0 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(...........
4a4c0 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 2e 20 4d 75 73 .........."Unknown.filetype..Mus
4a4e0 74 20 62 65 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 t.be.either.FORMAT_PEM.or.FORMAT
4a500 5f 44 45 52 22 29 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 _DER")......def.set_version(self
4a520 2c 20 76 65 72 73 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 ,.version):.........#.type:.(int
4a540 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 74 ).->.int.........""".........Set
4a560 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 .version.of.the.certificate.....
4a580 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 73 69 6f 6e 20 6e 75 ......:param.version:.Version.nu
4a5a0 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 20 20 20 20 20 52 65 mber..........:return:........Re
4a5c0 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 20 20 20 22 22 22 0a turns.0.on.failure..........""".
4a5e0 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
4a600 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
4a620 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 76 65 72 ".........return.m2.x509_set_ver
4a640 73 69 6f 6e 28 73 65 6c 66 2e 78 35 30 39 2c 20 76 65 72 73 69 6f 6e 29 0a 0a 20 20 20 20 64 65 sion(self.x509,.version)......de
4a660 66 20 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 28 73 65 6c 66 2c 20 61 73 6e 31 5f 74 69 6d 65 f.set_not_before(self,.asn1_time
4a680 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 54 49 ):.........#.type:.(ASN1.ASN1_TI
4a6a0 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 20 20 3a ME).->.int.........""".........:
4a6c0 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 69 6c 75 return:.1.on.success,.0.on.failu
4a6e0 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 20 6d 32 re.........""".........assert.m2
4a700 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 78 .x509_type_check(self.x509),."'x
4a720 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 20 509'.type.error".........return.
4a740 6d 32 2e 78 35 30 39 5f 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 28 73 65 6c 66 2e 78 35 30 39 m2.x509_set_not_before(self.x509
4a760 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 65 74 ,.asn1_time._ptr())......def.set
4a780 5f 6e 6f 74 5f 61 66 74 65 72 28 73 65 6c 66 2c 20 61 73 6e 31 5f 74 69 6d 65 29 3a 0a 20 20 20 _not_after(self,.asn1_time):....
4a7a0 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 29 20 2d 3e .....#.type:.(ASN1.ASN1_TIME).->
4a7c0 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 72 65 74 75 72 6e .int.........""".........:return
4a7e0 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 20 20 :.1.on.success,.0.on.failure....
4a800 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_
4a820 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
4a840 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
4a860 39 5f 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 28 73 65 6c 66 2e 78 35 30 39 2c 20 61 73 6e 31 5f 9_set_not_after(self.x509,.asn1_
4a880 74 69 6d 65 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 75 62 6a 65 63 time._ptr())......def.set_subjec
4a8a0 74 5f 6e 61 6d 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 t_name(self,.name):.........#.ty
4a8c0 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 20 22 pe:.(X509_Name).->.int........."
4a8e0 22 22 0a 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 "".........:return:.1.on.success
4a900 2c 20 30 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 ,.0.on.failure........."""......
4a920 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
4a940 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"....
4a960 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_
4a980 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).
4a9a0 0a 20 20 20 20 64 65 66 20 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 28 73 65 6c 66 2c 20 6e .....def.set_issuer_name(self,.n
4a9c0 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 61 6d 65 ame):.........#.type:.(X509_Name
4a9e0 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 72 65 ).->.int.........""".........:re
4aa00 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 69 6c 75 72 65 turn:.1.on.success,.0.on.failure
4aa20 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 78 .........""".........assert.m2.x
4aa40 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 30 509_type_check(self.x509),."'x50
4aa60 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 32 9'.type.error".........return.m2
4aa80 2e 78 35 30 39 5f 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 .x509_set_issuer_name(self.x509,
4aaa0 20 6e 61 6d 65 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 65 .name.x509_name)......def.get_ve
4aac0 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 70 65 3a 20 28 29 20 rsion(self):.........#.type:.().
4aae0 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 30 39 5f 74 79 ->.int.........assert.m2.x509_ty
4ab00 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
4ab20 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_
4ab40 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 get_version(self.x509)......def.
4ab60 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 get_serial_number(self):........
4ab80 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 41 53 4e 31 2e 41 53 4e 31 5f 49 6e 74 65 67 65 72 .#.type:.().->.ASN1.ASN1_Integer
4aba0 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
4abc0 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
4abe0 72 22 0a 20 20 20 20 20 20 20 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 20 3d 20 6d 32 2e 78 35 30 r".........asn1_integer.=.m2.x50
4ac00 39 5f 67 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 2e 78 35 30 39 29 0a 20 9_get_serial_number(self.x509)..
4ac20 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 67 65 .......return.m2.asn1_integer_ge
4ac40 74 28 61 73 6e 31 5f 69 6e 74 65 67 65 72 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 72 t(asn1_integer)......def.set_ser
4ac60 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 2c 20 73 65 72 69 61 6c 29 3a 0a 20 20 20 20 20 20 ial_number(self,.serial):.......
4ac80 20 20 23 20 74 79 70 65 3a 20 28 41 53 4e 31 2e 41 53 4e 31 5f 49 6e 74 65 67 65 72 29 20 2d 3e ..#.type:.(ASN1.ASN1_Integer).->
4aca0 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 73 65 72 .int.........""".........Set.ser
4acc0 69 61 6c 20 6e 75 6d 62 65 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 65 72 69 ial.number...........:param.seri
4ace0 61 6c 3a 20 20 53 65 72 69 61 6c 20 6e 75 6d 62 65 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 al:..Serial.number...........:re
4ad00 74 75 72 6e 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 69 turn.1.for.success.and.0.for.fai
4ad20 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 20 61 73 73 65 72 74 lure..........""".........assert
4ad40 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),.
4ad60 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 23 20 54 68 "'x509'.type.error".........#.Th
4ad80 69 73 20 22 6d 61 67 69 63 61 6c 6c 79 22 20 63 68 61 6e 67 65 73 20 73 65 72 69 61 6c 20 73 69 is."magically".changes.serial.si
4ada0 6e 63 65 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 20 20 23 20 69 73 20 43 20 nce.asn1_integer.........#.is.C.
4adc0 70 6f 69 6e 74 65 72 20 74 6f 20 78 35 30 39 27 73 20 69 6e 74 65 72 6e 61 6c 20 73 65 72 69 61 pointer.to.x509's.internal.seria
4ade0 6c 20 6e 75 6d 62 65 72 2e 0a 20 20 20 20 20 20 20 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 20 3d l.number..........asn1_integer.=
4ae00 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 66 2e .m2.x509_get_serial_number(self.
4ae20 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 6e 74 x509).........return.m2.asn1_int
4ae40 65 67 65 72 5f 73 65 74 28 61 73 6e 31 5f 69 6e 74 65 67 65 72 2c 20 73 65 72 69 61 6c 29 0a 20 eger_set(asn1_integer,.serial)..
4ae60 20 20 20 20 20 20 20 23 20 58 58 58 20 4f 72 20 73 68 6f 75 6c 64 20 49 20 64 6f 20 74 68 69 73 .......#.XXX.Or.should.I.do.this
4ae80 3f 0a 20 20 20 20 20 20 20 20 23 20 61 73 6e 31 5f 69 6e 74 65 67 65 72 20 3d 20 6d 32 2e 61 73 ?.........#.asn1_integer.=.m2.as
4aea0 6e 31 5f 69 6e 74 65 67 65 72 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 23 20 6d 32 2e 61 73 n1_integer_new().........#.m2.as
4aec0 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 73 65 72 n1_integer_set(asn1_integer,.ser
4aee0 69 61 6c 29 0a 20 20 20 20 20 20 20 20 23 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 ial).........#.return.m2.x509_se
4af00 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 28 73 65 6c 66 2e 78 35 30 39 2c 20 61 73 6e 31 5f t_serial_number(self.x509,.asn1_
4af20 69 6e 74 65 67 65 72 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 integer)......def.get_not_before
4af40 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 41 53 (self):.........#.type:.().->.AS
4af60 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 20 6d 32 2e 78 N1.ASN1_TIME.........assert.m2.x
4af80 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 30 509_type_check(self.x509),."'x50
4afa0 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 41 53 9'.type.error".........return.AS
4afc0 4e 31 2e 41 53 4e 31 5f 54 49 4d 45 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 6e 6f 74 5f 62 65 66 N1.ASN1_TIME(m2.x509_get_not_bef
4afe0 6f 72 65 28 73 65 6c 66 2e 78 35 30 39 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 6e 6f 74 ore(self.x509))......def.get_not
4b000 5f 61 66 74 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 _after(self):.........#.type:.()
4b020 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 73 65 72 .->.ASN1.ASN1_TIME.........asser
4b040 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 39 29 2c t.m2.x509_type_check(self.x509),
4b060 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 6f 75 74 ."'x509'.type.error".........out
4b080 20 3d 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 74 5f 6e 6f .=.ASN1.ASN1_TIME(m2.x509_get_no
4b0a0 74 5f 61 66 74 65 72 28 73 65 6c 66 2e 78 35 30 39 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 27 t_after(self.x509)).........if.'
4b0c0 42 61 64 20 74 69 6d 65 20 76 61 6c 75 65 27 20 69 6e 20 73 74 72 28 6f 75 74 29 3a 0a 20 20 20 Bad.time.value'.in.str(out):....
4b0e0 20 20 20 20 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 .........raise.X509Error(.......
4b100 20 20 20 20 20 20 20 20 20 20 27 27 27 4d 32 43 72 79 70 74 6f 20 63 61 6e 6e 6f 74 20 68 61 6e ..........'''M2Crypto.cannot.han
4b120 64 6c 65 20 64 61 74 65 73 20 61 66 74 65 72 20 79 65 61 72 20 32 30 35 30 2e 0a 20 20 20 20 20 dle.dates.after.year.2050.......
4b140 20 20 20 20 20 20 20 20 20 20 20 53 65 65 20 52 46 43 20 35 32 38 30 20 34 2e 31 2e 32 2e 35 20 ...........See.RFC.5280.4.1.2.5.
4b160 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 for.more.information............
4b180 20 20 20 20 20 20 27 27 27 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 75 74 0a 0a 20 ......''').........return.out...
4b1a0 20 20 20 64 65 66 20 67 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 ...def.get_pubkey(self):........
4b1c0 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 45 56 50 2e 50 4b 65 79 0a 20 20 20 20 20 20 20 20 .#.type:.().->.EVP.PKey.........
4b1e0 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
4b200 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".......
4b220 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 67 65 74 5f 70 75 ..return.EVP.PKey(m2.x509_get_pu
4b240 62 6b 65 79 28 73 65 6c 66 2e 78 35 30 39 29 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 20 20 20 bkey(self.x509),._pyfree=1).....
4b260 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 29 3a 0a 20 20 20 .def.set_pubkey(self,.pkey):....
4b280 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 20 69 6e 74 0a 20 .....#.type:.(EVP.PKey).->.int..
4b2a0 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 20 70 75 62 6c 69 .......""".........Set.the.publi
4b2c0 63 20 6b 65 79 20 66 6f 72 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 0a 0a 20 20 20 20 20 c.key.for.the.certificate.......
4b2e0 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 20 20 20 ...:param.pkey:.Public.key......
4b300 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 30 20 ....:return.1.for.success.and.0.
4b320 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 20 20 for.failure.........""".........
4b340 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
4b360 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".......
4b380 20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 ..return.m2.x509_set_pubkey(self
4b3a0 2e 78 35 30 39 2c 20 70 6b 65 79 2e 70 6b 65 79 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 69 .x509,.pkey.pkey)......def.get_i
4b3c0 73 73 75 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 ssuer(self):.........#.type:.().
4b3e0 2d 3e 20 58 35 30 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 ->.X509_Name.........assert.m2.x
4b400 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 30 509_type_check(self.x509),."'x50
4b420 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 58 35 9'.type.error".........return.X5
4b440 30 39 5f 4e 61 6d 65 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 28 09_Name(m2.x509_get_issuer_name(
4b460 73 65 6c 66 2e 78 35 30 39 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 69 73 73 75 65 72 28 self.x509))......def.set_issuer(
4b480 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 58 35 self,.name):.........#.type:.(X5
4b4a0 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 20 20 09_Name).->.int.........""".....
4b4c0 20 20 20 20 53 65 74 20 69 73 73 75 65 72 20 6e 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 ....Set.issuer.name...........:p
4b4e0 61 72 61 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 aram.name:....subjectName.field.
4b500 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 73 20 ..........:return.1.for.success.
4b520 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 20 20 and.0.for.failure........."""...
4b540 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 6b 28 ......assert.m2.x509_type_check(
4b560 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 22 0a self.x509),."'x509'.type.error".
4b580 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 69 73 73 75 65 ........return.m2.x509_set_issue
4b5a0 72 5f 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 r_name(self.x509,.name.x509_name
4b5c0 29 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 )......def.get_subject(self):...
4b5e0 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 4e 61 6d 65 0a 20 20 ......#.type:.().->.X509_Name...
4b600 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 6b 28 ......assert.m2.x509_type_check(
4b620 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 22 0a self.x509),."'x509'.type.error".
4b640 20 20 20 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 ........return.X509_Name(m2.x509
4b660 5f 67 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 78 35 30 39 29 29 0a 0a 20 _get_subject_name(self.x509))...
4b680 20 20 20 64 65 66 20 73 65 74 5f 73 75 62 6a 65 63 74 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a ...def.set_subject(self,.name):.
4b6a0 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 20 2d 3e 20 69 ........#.type:.(X509_Name).->.i
4b6c0 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 73 75 62 6a 65 nt.........""".........Set.subje
4b6e0 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 6d 65 3a 20 20 ct.name...........:param.name:..
4b700 20 20 73 75 62 6a 65 63 74 4e 61 6d 65 20 66 69 65 6c 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 ..subjectName.field...........:r
4b720 65 74 75 72 6e 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 eturn.1.for.success.and.0.for.fa
4b740 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
4b760 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),.
4b780 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
4b7a0 72 6e 20 6d 32 2e 78 35 30 39 5f 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 rn.m2.x509_set_subject_name(self
4b7c0 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 65 66 20 .x509,.name.x509_name)......def.
4b7e0 61 64 64 5f 65 78 74 28 73 65 6c 66 2c 20 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 add_ext(self,.ext):.........#.ty
4b800 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 74 0a 20 20 20 20 pe:.(X509_Extension).->.int.....
4b820 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
4b840 6f 6e 20 74 6f 20 74 68 69 73 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 on.to.this.certificate..........
4b860 20 3a 70 61 72 61 6d 20 65 78 74 3a 20 20 20 20 45 78 74 65 6e 73 69 6f 6e 0a 0a 20 20 20 20 20 .:param.ext:....Extension.......
4b880 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 30 20 66 ...:return.1.for.success.and.0.f
4b8a0 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 61 or.failure.........""".........a
4b8c0 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 35 ssert.m2.x509_type_check(self.x5
4b8e0 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 20 09),."'x509'.type.error"........
4b900 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 61 64 64 5f 65 78 74 28 73 65 6c 66 2e 78 35 30 .return.m2.x509_add_ext(self.x50
4b920 39 2c 20 65 78 74 2e 78 35 30 39 5f 65 78 74 2c 20 2d 31 29 0a 0a 20 20 20 20 64 65 66 20 67 65 9,.ext.x509_ext,.-1)......def.ge
4b940 74 5f 65 78 74 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 t_ext(self,.name):.........#.typ
4b960 65 3a 20 28 73 74 72 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 e:.(str).->.X509_Extension......
4b980 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 69 6f ...""".........Get.X509.extensio
4b9a0 6e 20 62 79 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 6d 65 3a n.by.name...........:param.name:
4b9c0 20 20 20 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 0a 0a 20 20 20 20 20 ....Name.of.the.extension.......
4b9e0 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 20 20 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e ...:return:.......X509_Extension
4ba00 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 4f 70 74 69 6d 69 7a 61 74 .........""".........#.Optimizat
4ba20 69 6f 6e 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 ions.to.reduce.attribute.accesse
4ba40 73 0a 20 20 20 20 20 20 20 20 6d 32 78 35 30 39 5f 67 65 74 5f 65 78 74 20 3d 20 6d 32 2e 78 35 s.........m2x509_get_ext.=.m2.x5
4ba60 30 39 5f 67 65 74 5f 65 78 74 0a 20 20 20 20 20 20 20 20 6d 32 78 35 30 39 5f 65 78 74 65 6e 73 09_get_ext.........m2x509_extens
4ba80 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 20 3d 20 6d 32 2e 78 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e ion_get_name.=.m2.x509_extension
4baa0 5f 67 65 74 5f 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 78 35 30 39 20 3d 20 73 65 6c 66 2e 78 35 _get_name.........x509.=.self.x5
4bac0 30 39 0a 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 73 69 78 2e 65 6e 73 75 72 65 5f 62 69 09..........name.=.six.ensure_bi
4bae0 6e 61 72 79 28 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 nary(name).........for.i.in.rang
4bb00 65 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 78 35 30 39 29 29 3a 0a e(m2.x509_get_ext_count(x509)):.
4bb20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 5f 70 74 72 20 3d 20 6d 32 78 35 30 39 5f 67 65 74 ............ext_ptr.=.m2x509_get
4bb40 5f 65 78 74 28 78 35 30 39 2c 20 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d 32 78 _ext(x509,.i).............if.m2x
4bb60 35 30 39 5f 65 78 74 65 6e 73 69 6f 6e 5f 67 65 74 5f 6e 61 6d 65 28 65 78 74 5f 70 74 72 29 20 509_extension_get_name(ext_ptr).
4bb80 3d 3d 20 6e 61 6d 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 ==.name:.................return.
4bba0 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 65 78 74 5f 70 74 72 2c 20 5f 70 79 66 72 65 65 3d X509_Extension(ext_ptr,._pyfree=
4bbc0 30 29 0a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4c 6f 6f 6b 75 70 45 72 72 6f 72 0a 0a 20 0)..........raise.LookupError...
4bbe0 20 20 20 64 65 66 20 67 65 74 5f 65 78 74 5f 61 74 28 73 65 6c 66 2c 20 69 6e 64 65 78 29 3a 0a ...def.get_ext_at(self,.index):.
4bc00 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 45 78 ........#.type:.(int).->.X509_Ex
4bc20 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 47 65 74 20 tension.........""".........Get.
4bc40 58 35 30 39 20 65 78 74 65 6e 73 69 6f 6e 20 62 79 20 69 6e 64 65 78 2e 0a 0a 20 20 20 20 20 20 X509.extension.by.index.........
4bc60 20 20 3a 70 61 72 61 6d 20 69 6e 64 65 78 3a 20 20 20 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 65 ..:param.index:....Name.of.the.e
4bc80 78 74 65 6e 73 69 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 xtension..........:return:......
4bca0 20 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........."""....
4bcc0 20 20 20 20 20 69 66 20 69 6e 64 65 78 20 3c 20 30 20 6f 72 20 69 6e 64 65 78 20 3e 3d 20 73 65 .....if.index.<.0.or.index.>=.se
4bce0 6c 66 2e 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 lf.get_ext_count():.............
4bd00 72 61 69 73 65 20 49 6e 64 65 78 45 72 72 6f 72 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e raise.IndexError..........return
4bd20 20 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 28 6d 32 2e 78 35 30 39 5f 67 65 74 5f 65 78 74 28 .X509_Extension(m2.x509_get_ext(
4bd40 73 65 6c 66 2e 78 35 30 39 2c 20 69 6e 64 65 78 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 self.x509,.index),..............
4bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 70 79 66 72 65 65 3d 30 29 0a 0a 20 20 20 ................._pyfree=0).....
4bd80 20 64 65 66 20 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 .def.get_ext_count(self):.......
4bda0 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 0a ..#.type:.().->.int.........""".
4bdc0 20 20 20 20 20 20 20 20 47 65 74 20 58 35 30 39 20 65 78 74 65 6e 73 69 6f 6e 20 63 6f 75 6e 74 ........Get.X509.extension.count
4bde0 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.
4be00 78 35 30 39 5f 67 65 74 5f 65 78 74 5f 63 6f 75 6e 74 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 x509_get_ext_count(self.x509)...
4be20 20 20 20 64 65 66 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 ...def.sign(self,.pkey,.md):....
4be40 20 20 20 20 20 23 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 .....#.type:.(EVP.PKey,.str).->.
4be60 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 69 67 6e 20 74 68 65 int.........""".........Sign.the
4be80 20 63 65 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6b .certificate...........:param.pk
4bea0 65 79 3a 20 50 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 6d ey:.Public.key..........:param.m
4bec0 64 3a 20 20 20 4d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f d:...Message.digest.algorithm.to
4bee0 20 75 73 65 20 66 6f 72 20 73 69 67 6e 69 6e 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .use.for.signing,...............
4bf00 20 20 20 20 20 20 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 73 68 61 31 27 2e 0a 0a 20 20 20 20 .......for.example.'sha1'.......
4bf20 20 20 20 20 3a 72 65 74 75 72 6e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 ....:return.int.........""".....
4bf40 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
4bf60 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"...
4bf80 20 20 20 20 20 20 6d 64 61 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 6d 64 2c 20 4e 6f 6e 65 ......mda.=.getattr(m2,.md,.None
4bfa0 29 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 20 20 20 20 20 ).........if.mda.is.None:.......
4bfc0 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 6f 77 6e 20 ......raise.ValueError('unknown.
4bfe0 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 20 20 72 65 74 message.digest',.md).........ret
4c000 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 69 67 6e 28 73 65 6c 66 2e 78 35 30 39 2c 20 70 6b 65 79 urn.m2.x509_sign(self.x509,.pkey
4c020 2e 70 6b 65 79 2c 20 6d 64 61 28 29 29 0a 0a 20 20 20 20 64 65 66 20 76 65 72 69 66 79 28 73 65 .pkey,.mda())......def.verify(se
4c040 6c 66 2c 20 70 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 lf,.pkey=None):.........#.type:.
4c060 28 4f 70 74 69 6f 6e 61 6c 5b 45 56 50 2e 50 4b 65 79 5d 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 (Optional[EVP.PKey]).->.int.....
4c080 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
4c0a0 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"...
4c0c0 20 20 20 20 20 20 69 66 20 70 6b 65 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 ......if.pkey:.............retur
4c0e0 6e 20 6d 32 2e 78 35 30 39 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 78 35 30 39 2c 20 70 6b 65 79 n.m2.x509_verify(self.x509,.pkey
4c100 2e 70 6b 65 79 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 .pkey).........else:............
4c120 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 35 30 39 .return.m2.x509_verify(self.x509
4c140 2c 20 73 65 6c 66 2e 67 65 74 5f 70 75 62 6b 65 79 28 29 2e 70 6b 65 79 29 0a 0a 20 20 20 20 64 ,.self.get_pubkey().pkey)......d
4c160 65 66 20 63 68 65 63 6b 5f 63 61 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 ef.check_ca(self):.........#.typ
4c180 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........."""........
4c1a0 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 61 20 43 .Check.if.the.certificate.is.a.C
4c1c0 65 72 74 69 66 69 63 61 74 65 20 41 75 74 68 6f 72 69 74 79 20 28 43 41 29 20 63 65 72 74 69 66 ertificate.Authority.(CA).certif
4c1e0 69 63 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 69 66 20 74 68 icate...........:return:.0.if.th
4c200 65 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 6e 6f 74 20 43 41 2c 20 6e 6f 6e 7a 65 72 6f e.certificate.is.not.CA,.nonzero
4c220 20 6f 74 68 65 72 77 69 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 73 3a 20 .otherwise...........:requires:.
4c240 4f 70 65 6e 53 53 4c 20 30 2e 39 2e 38 20 6f 72 20 6e 65 77 65 72 0a 20 20 20 20 20 20 20 20 22 OpenSSL.0.9.8.or.newer........."
4c260 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 63 68 65 63 6b 5f "".........return.m2.x509_check_
4c280 63 61 28 73 65 6c 66 2e 78 35 30 39 29 0a 0a 20 20 20 20 64 65 66 20 63 68 65 63 6b 5f 70 75 72 ca(self.x509)......def.check_pur
4c2a0 70 6f 73 65 28 73 65 6c 66 2c 20 69 64 2c 20 63 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 pose(self,.id,.ca):.........#.ty
4c2c0 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 pe:.(int,.int).->.int.........""
4c2e0 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
4c300 74 65 27 73 20 70 75 72 70 6f 73 65 20 6d 61 74 63 68 65 73 20 74 68 65 20 61 73 6b 65 64 20 70 te's.purpose.matches.the.asked.p
4c320 75 72 70 6f 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 64 3a 20 50 75 72 70 urpose...........:param.id:.Purp
4c340 6f 73 65 20 69 64 2e 20 53 65 65 20 58 35 30 39 5f 50 55 52 50 4f 53 45 5f 2a 20 63 6f 6e 73 74 ose.id..See.X509_PURPOSE_*.const
4c360 61 6e 74 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 3a 20 31 20 69 66 20 74 ants...........:param.ca:.1.if.t
4c380 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 73 68 6f 75 6c 64 20 62 65 20 43 41 2c 20 30 20 6f he.certificate.should.be.CA,.0.o
4c3a0 74 68 65 72 77 69 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 69 66 therwise...........:return:.0.if
4c3c0 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 20 70 75 72 70 6f 73 65 20 64 6f 65 73 20 6e 6f .the.certificate.purpose.does.no
4c3e0 74 20 6d 61 74 63 68 2c 20 6e 6f 6e 7a 65 72 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.match,.nonzero................
4c400 20 20 6f 74 68 65 72 77 69 73 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 ..otherwise.........."""........
4c420 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 63 68 65 63 6b 5f 70 75 72 70 6f 73 65 28 73 65 .return.m2.x509_check_purpose(se
4c440 6c 66 2e 78 35 30 39 2c 20 69 64 2c 20 63 61 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 66 69 lf.x509,.id,.ca)......def.get_fi
4c460 6e 67 65 72 70 72 69 6e 74 28 73 65 6c 66 2c 20 6d 64 3d 27 6d 64 35 27 29 3a 0a 20 20 20 20 20 ngerprint(self,.md='md5'):......
4c480 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 20 20 20 20 ...#.type:.(str).->.str.........
4c4a0 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 74 68 65 20 66 69 6e 67 65 72 70 72 69 6e 74 20 """.........Get.the.fingerprint.
4c4c0 6f 66 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 3a 70 61 of.the.certificate...........:pa
4c4e0 72 61 6d 20 6d 64 3a 20 4d 65 73 73 61 67 65 20 64 69 67 65 73 74 20 61 6c 67 6f 72 69 74 68 6d ram.md:.Message.digest.algorithm
4c500 20 74 6f 20 75 73 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 53 74 72 .to.use...........:return:...Str
4c520 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 66 69 6e 67 65 72 70 72 69 6e 74 20 69 ing.containing.the.fingerprint.i
4c540 6e 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 n.hex.format..........""".......
4c560 20 20 64 65 72 20 3d 20 73 65 6c 66 2e 61 73 5f 64 65 72 28 29 0a 20 20 20 20 20 20 20 20 6d 64 ..der.=.self.as_der().........md
4c580 20 3d 20 45 56 50 2e 4d 65 73 73 61 67 65 44 69 67 65 73 74 28 6d 64 29 0a 20 20 20 20 20 20 20 .=.EVP.MessageDigest(md)........
4c5a0 20 6d 64 2e 75 70 64 61 74 65 28 64 65 72 29 0a 20 20 20 20 20 20 20 20 64 69 67 65 73 74 20 3d .md.update(der).........digest.=
4c5c0 20 6d 64 2e 66 69 6e 61 6c 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 78 2e 65 .md.final().........return.six.e
4c5e0 6e 73 75 72 65 5f 74 65 78 74 28 62 69 6e 61 73 63 69 69 2e 68 65 78 6c 69 66 79 28 64 69 67 65 nsure_text(binascii.hexlify(dige
4c600 73 74 29 2e 75 70 70 65 72 28 29 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 28 66 69 6c st).upper())...def.load_cert(fil
4c620 65 2c 20 66 6f 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 e,.format=FORMAT_PEM):.....#.typ
4c640 65 3a 20 28 41 6e 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 e:.(AnyStr,.int).->.X509....."""
4c660 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 66 69 6c 65 2e .....Load.certificate.from.file.
4c680 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 20 66 69 6c 65 20 ......:param.file:.Name.of.file.
4c6a0 63 6f 6e 74 61 69 6e 69 6e 67 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e 20 65 69 74 68 65 72 containing.certificate.in.either
4c6c0 20 44 45 52 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 45 4d 20 66 6f 72 .DER.or..................PEM.for
4c6e0 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 62 mat.......:param.format:.Describ
4c700 65 73 20 74 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 6f 20 62 65 20 es.the.format.of.the.file.to.be.
4c720 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 65 loaded,....................eithe
4c740 72 20 50 45 4d 20 6f 72 20 44 45 52 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 r.PEM.or.DER.......:return:.M2Cr
4c760 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 22 22 0a 20 ypto.X509.X509.object......"""..
4c780 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 62 69 ...with.BIO.openfile(file).as.bi
4c7a0 6f 3a 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 o:.........if.format.==.FORMAT_P
4c7c0 45 4d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 6f 61 64 5f 63 65 72 74 EM:.............return.load_cert
4c7e0 5f 62 69 6f 28 62 69 6f 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 6f 72 6d 61 74 20 3d 3d _bio(bio).........elif.format.==
4c800 20 46 4f 52 4d 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 .FORMAT_DER:.............cptr.=.
4c820 6d 32 2e 64 32 69 5f 78 35 30 39 28 62 69 6f 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 m2.d2i_x509(bio._ptr()).........
4c840 20 20 20 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 ....return.X509(cptr,._pyfree=1)
4c860 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 69 73 65 .........else:.............raise
4c880 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e .ValueError(................."Un
4c8a0 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 72 20 46 4f 52 known.format..Must.be.either.FOR
4c8c0 4d 41 54 5f 44 45 52 20 6f 72 20 46 4f 52 4d 41 54 5f 50 45 4d 22 29 0a 0a 0a 64 65 66 20 6c 6f MAT_DER.or.FORMAT_PEM")...def.lo
4c8e0 61 64 5f 63 65 72 74 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 ad_cert_bio(bio,.format=FORMAT_P
4c900 45 4d 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 69 6e 74 29 20 EM):.....#.type:.(BIO.BIO,.int).
4c920 2d 3e 20 58 35 30 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 ->.X509.....""".....Load.certifi
4c940 63 61 74 65 20 66 72 6f 6d 20 61 20 62 69 6f 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 62 69 6f cate.from.a.bio.......:param.bio
4c960 3a 20 42 49 4f 20 70 6f 69 6e 74 69 6e 67 20 61 74 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 :.BIO.pointing.at.a.certificate.
4c980 69 6e 20 65 69 74 68 65 72 20 44 45 52 20 6f 72 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 0a 20 20 in.either.DER.or.PEM.format.....
4c9a0 20 20 3a 70 61 72 61 6d 20 66 6f 72 6d 61 74 3a 20 44 65 73 63 72 69 62 65 73 20 74 68 65 20 66 ..:param.format:.Describes.the.f
4c9c0 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 63 65 72 74 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a ormat.of.the.cert.to.be.loaded,.
4c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 ...................either.PEM.or
4ca00 20 44 45 52 20 28 76 69 61 20 63 6f 6e 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a 20 .DER.(via.constants.FORMAT_PEM..
4ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 46 4f 52 ..................and.FORMAT_FOR
4ca40 4d 41 54 5f 44 45 52 29 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 79 70 74 6f 2e MAT_DER)......:return:.M2Crypto.
4ca60 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 20 20 69 66 X509.X509.object......""".....if
4ca80 20 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 63 .format.==.FORMAT_PEM:.........c
4caa0 70 74 72 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 61 64 5f 70 65 6d 28 62 69 6f 2e 5f 70 74 72 28 ptr.=.m2.x509_read_pem(bio._ptr(
4cac0 29 29 0a 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 52 )).....elif.format.==.FORMAT_DER
4cae0 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 64 32 69 5f 78 35 30 39 28 62 69 6f :.........cptr.=.m2.d2i_x509(bio
4cb00 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 ._ptr()).....else:.........raise
4cb20 20 56 61 6c 75 65 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 6b 6e 6f 77 .ValueError(............."Unknow
4cb40 6e 20 66 6f 72 6d 61 74 2e 20 4d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 46 4f 52 4d 41 54 5f n.format..Must.be.either.FORMAT_
4cb60 44 45 52 20 6f 72 20 46 4f 52 4d 41 54 5f 50 45 4d 22 29 0a 20 20 20 20 72 65 74 75 72 6e 20 58 DER.or.FORMAT_PEM").....return.X
4cb80 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 20 6c 6f 61 64 5f 509(cptr,._pyfree=1)...def.load_
4cba0 63 65 72 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 cert_string(string,.format=FORMA
4cbc0 54 5f 50 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 T_PEM):.....#.type:.(AnyStr,.int
4cbe0 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 64 20 63 65 72 74 69 ).->.X509.....""".....Load.certi
4cc00 66 69 63 61 74 65 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 ficate.from.a.string.......:para
4cc20 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
4cc40 72 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 rtificate.in.either.DER.or.PEM.f
4cc60 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 3a 20 44 65 73 63 72 ormat.......:param.format:.Descr
4cc80 69 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 ibes.the.format.of.the.cert.to.b
4cca0 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 20 20 65 69 74 e.loaded,....................eit
4ccc0 68 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 her.PEM.or.DER.(via.constants.FO
4cce0 52 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 RMAT_PEM....................and.
4cd00 46 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 FORMAT_FORMAT_DER)......:return:
4cd20 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 20 20 20 20 .M2Crypto.X509.X509.object......
4cd40 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 62 69 6e 61 """.....string.=.six.ensure_bina
4cd60 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 6f 72 79 42 ry(string).....bio.=.BIO.MemoryB
4cd80 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 64 5f 63 65 uffer(string).....return.load_ce
4cda0 72 74 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d 61 74 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 63 rt_bio(bio,.format)...def.load_c
4cdc0 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 28 73 74 72 69 6e 67 29 3a 0a 20 20 20 20 23 20 74 79 ert_der_string(string):.....#.ty
4cde0 70 65 3a 20 28 41 6e 79 53 74 72 29 20 2d 3e 20 58 35 30 39 0a 20 20 20 20 22 22 22 0a 20 20 20 pe:.(AnyStr).->.X509....."""....
4ce00 20 4c 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 .Load.certificate.from.a.string.
4ce20 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 20 63 6f 6e 74 ......:param.string:.String.cont
4ce40 61 69 6e 69 6e 67 20 61 20 63 65 72 74 69 66 69 63 61 74 65 20 69 6e 20 44 45 52 20 66 6f 72 6d aining.a.certificate.in.DER.form
4ce60 61 74 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 58 35 30 39 2e at.......:return:.M2Crypto.X509.
4ce80 58 35 30 39 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 X509.object......""".....string.
4cea0 3d 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 =.six.ensure_binary(string).....
4cec0 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 69 6e 67 29 0a 20 bio.=.BIO.MemoryBuffer(string)..
4cee0 20 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 ...cptr.=.m2.d2i_x509(bio._ptr()
4cf00 29 0a 20 20 20 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 ).....return.X509(cptr,._pyfree=
4cf20 31 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 28 6f 62 1)...class.X509_Store_Context(ob
4cf40 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 53 74 6f 72 65 20 43 6f ject):.....""".....X509.Store.Co
4cf60 6e 74 65 78 74 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 65 ntext....."""......m2_x509_store
4cf80 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 66 72 _ctx_free.=.m2.x509_store_ctx_fr
4cfa0 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 78 35 30 39 5f ee......def.__init__(self,.x509_
4cfc0 73 74 6f 72 65 5f 63 74 78 2c 20 5f 70 79 66 72 65 65 3d 30 29 3a 0a 20 20 20 20 20 20 20 20 23 store_ctx,._pyfree=0):.........#
4cfe0 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 6e 65 0a 20 20 20 20 .type:.(bytes,.int).->.None.....
4d000 20 20 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 5f 73 74 6f ...."""..........:param.x509_sto
4d020 72 65 5f 63 74 78 3a 20 62 69 6e 61 72 79 20 64 61 74 61 20 66 6f 72 0a 20 20 20 20 20 20 20 20 re_ctx:.binary.data.for.........
4d040 20 20 20 20 20 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 53 54 4f 52 45 5f 43 54 58 20 74 79 70 ......OpenSSL.X509_STORE_CTX.typ
4d060 65 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 63 74 78 20 3d e.........""".........self.ctx.=
4d080 20 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 .x509_store_ctx.........self._py
4d0a0 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 5f 5f 28 free.=._pyfree......def.__del__(
4d0c0 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 6e self):.........#.type:.().->.Non
4d0e0 65 0a 20 20 20 20 20 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 e.........#.see.BIO.py.-.unbalan
4d100 63 65 64 20 5f 5f 69 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 ced.__init__./.__del__.........i
4d120 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 27 5f 70 79 66 72 65 65 27 29 3a 0a f.not.hasattr(self,.'_pyfree'):.
4d140 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 20 20 23 20 70 72 69 6e 74 28 22 4f 4f 50 53 22 ............pass..#.print("OOPS"
4d160 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 5f 70 79 66 72 65 65 3a 0a 20 20 20 ).........elif.self._pyfree:....
4d180 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f .........self.m2_x509_store_ctx_
4d1a0 66 72 65 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 6c free(self.ctx)......def._ptr(sel
4d1c0 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 63 74 78 0a 0a 20 20 20 f):.........return.self.ctx.....
4d1e0 20 64 65 66 20 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 28 73 65 6c 66 29 3a 0a 20 20 20 .def.get_current_cert(self):....
4d200 20 20 20 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 .....#.type:.().->.X509.........
4d220 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 63 75 72 72 65 6e 74 20 58 2e 35 30 39 20 63 65 """.........Get.current.X.509.ce
4d240 72 74 69 66 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 77 61 72 6e 69 6e 67 3a 20 54 68 rtificate...........:warning:.Th
4d260 65 20 72 65 74 75 72 6e 65 64 20 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 4e 4f 54 20 72 65 e.returned.certificate.is.NOT.re
4d280 66 63 6f 75 6e 74 65 64 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 6e 6f 74 0a 20 20 20 20 20 20 20 fcounted,.so.you.can.not........
4d2a0 20 20 20 20 20 20 20 20 20 20 20 72 65 6c 79 20 6f 6e 20 69 74 20 62 65 69 6e 67 20 76 61 6c 69 ...........rely.on.it.being.vali
4d2c0 64 20 6f 6e 63 65 20 74 68 65 20 73 74 6f 72 65 20 63 6f 6e 74 65 78 74 20 67 6f 65 73 0a 20 20 d.once.the.store.context.goes...
4d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 77 61 79 20 6f 72 20 69 73 20 6d 6f 64 69 66 ................away.or.is.modif
4d300 69 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 75 72 6e 20 ied..........""".........return.
4d320 58 35 30 39 28 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 67 65 74 5f 63 75 72 72 65 X509(m2.x509_store_ctx_get_curre
4d340 6e 74 5f 63 65 72 74 28 73 65 6c 66 2e 63 74 78 29 2c 20 5f 70 79 66 72 65 65 3d 30 29 0a 0a 20 nt_cert(self.ctx),._pyfree=0)...
4d360 20 20 20 64 65 66 20 67 65 74 5f 65 72 72 6f 72 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 ...def.get_error(self):.........
4d380 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........."""...
4d3a0 20 20 20 20 20 20 47 65 74 20 65 72 72 6f 72 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 20 20 22 22 ......Get.error.code..........""
4d3c0 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 74 6f 72 65 5f 63 ".........return.m2.x509_store_c
4d3e0 74 78 5f 67 65 74 5f 65 72 72 6f 72 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 tx_get_error(self.ctx)......def.
4d400 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 get_error_depth(self):.........#
4d420 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 20 .type:.().->.int........."""....
4d440 20 20 20 20 20 47 65 74 20 65 72 72 6f 72 20 64 65 70 74 68 2e 0a 20 20 20 20 20 20 20 20 22 22 .....Get.error.depth..........""
4d460 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 74 6f 72 65 5f 63 ".........return.m2.x509_store_c
4d480 74 78 5f 67 65 74 5f 65 72 72 6f 72 5f 64 65 70 74 68 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 tx_get_error_depth(self.ctx)....
4d4a0 20 20 64 65 66 20 67 65 74 31 5f 63 68 61 69 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 ..def.get1_chain(self):.........
4d4c0 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 5f 53 74 61 63 6b 0a 20 20 20 20 20 20 20 #.type:.().->.X509_Stack........
4d4e0 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 .""".........Get.certificate.cha
4d500 69 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 65 66 65 72 65 6e 63 65 20 in...........:return:.Reference.
4d520 63 6f 75 6e 74 65 64 20 28 69 2e 65 2e 20 73 61 66 65 20 74 6f 20 75 73 65 20 65 76 65 6e 20 61 counted.(i.e..safe.to.use.even.a
4d540 66 74 65 72 20 74 68 65 20 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fter.the.store..................
4d560 63 6f 6e 74 65 78 74 20 67 6f 65 73 20 61 77 61 79 29 20 73 74 61 63 6b 20 6f 66 20 63 65 72 74 context.goes.away).stack.of.cert
4d580 69 66 69 63 61 74 65 73 20 69 6e 20 74 68 65 20 63 68 61 69 6e 2e 0a 20 20 20 20 20 20 20 20 22 ificates.in.the.chain.........."
4d5a0 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 53 74 61 63 6b 28 6d 32 2e "".........return.X509_Stack(m2.
4d5c0 78 35 30 39 5f 73 74 6f 72 65 5f 63 74 78 5f 67 65 74 31 5f 63 68 61 69 6e 28 73 65 6c 66 2e 63 x509_store_ctx_get1_chain(self.c
4d5e0 74 78 29 2c 20 31 2c 20 31 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 53 74 6f 72 65 28 6f 62 tx),.1,.1)...class.X509_Store(ob
4d600 6a 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 53 74 6f 72 65 0a 20 20 ject):.....""".....X509.Store...
4d620 20 20 22 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 73 74 6f 72 65 5f 66 72 65 65 20 3d 20 .."""......m2_x509_store_free.=.
4d640 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 66 72 65 65 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e m2.x509_store_free......def.__in
4d660 69 74 5f 5f 28 73 65 6c 66 2c 20 73 74 6f 72 65 3d 4e 6f 6e 65 2c 20 5f 70 79 66 72 65 65 3d 30 it__(self,.store=None,._pyfree=0
4d680 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 6c 5b 62 79 74 ):.........#.type:.(Optional[byt
4d6a0 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 22 22 0a 20 20 es],.int).->.None........."""...
4d6c0 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 74 6f 72 65 3a 20 62 69 6e 61 72 79 20 64 61 74 61 20 ......:param.store:.binary.data.
4d6e0 66 6f 72 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 53 54 4f 52 45 5f 43 54 58 20 74 79 70 65 2e for.OpenSSL.X509_STORE_CTX.type.
4d700 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 73 74 6f 72 65 20 69 73 .........""".........if.store.is
4d720 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 73 74 6f 72 .not.None:.............self.stor
4d740 65 20 3d 20 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 79 66 72 e.=.store.............self._pyfr
4d760 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 20 20 20 ee.=._pyfree.........else:......
4d780 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 6f 72 65 20 3d 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 .......self.store.=.m2.x509_stor
4d7a0 65 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 65 e_new().............self._pyfree
4d7c0 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 20 .=.1......def.__del__(self):....
4d7e0 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.........
4d800 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):.
4d820 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 74 6f 72 65 5f 66 ............self.m2_x509_store_f
4d840 72 65 65 28 73 65 6c 66 2e 73 74 6f 72 65 29 0a 0a 20 20 20 20 64 65 66 20 5f 70 74 72 28 73 65 ree(self.store)......def._ptr(se
4d860 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 6f 72 65 0a 0a lf):.........return.self.store..
4d880 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 69 6e 66 6f 28 73 65 6c 66 2c 20 66 69 6c 65 29 3a 0a 20 ....def.load_info(self,.file):..
4d8a0 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..
4d8c0 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 3a 20 .......""".........:param.file:.
4d8e0 66 69 6c 65 6e 61 6d 65 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 6f 6e 20 filename..........:return:.1.on.
4d900 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 22 22 success,.0.on.failure.........""
4d920 22 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 6c 6f ".........ret.=.m2.x509_store_lo
4d940 61 64 5f 6c 6f 63 61 74 69 6f 6e 73 28 73 65 6c 66 2e 73 74 6f 72 65 2c 20 66 69 6c 65 29 0a 20 ad_locations(self.store,.file)..
4d960 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 0a 0a 20 20 20 20 6c 6f 61 64 5f 6c 6f 63 61 .......return.ret......load_loca
4d980 74 69 6f 6e 73 20 3d 20 6c 6f 61 64 5f 69 6e 66 6f 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 78 tions.=.load_info......def.add_x
4d9a0 35 30 39 28 73 65 6c 66 2c 20 78 35 30 39 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 509(self,.x509):.........#.type:
4d9c0 20 28 58 35 30 39 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 .(X509).->.int.........assert.is
4d9e0 69 6e 73 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 72 65 74 instance(x509,.X509).........ret
4da00 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 61 64 64 5f 63 65 72 74 28 73 65 6c 66 2e urn.m2.x509_store_add_cert(self.
4da20 73 74 6f 72 65 2c 20 78 35 30 39 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 store,.x509._ptr())......def.set
4da40 5f 76 65 72 69 66 79 5f 63 62 28 73 65 6c 66 2c 20 63 61 6c 6c 62 61 63 6b 3d 4e 6f 6e 65 29 3a _verify_cb(self,.callback=None):
4da60 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 6c 5b 63 61 6c 6c 61 .........#.type:.(Optional[calla
4da80 62 6c 65 5d 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 ble]).->.None.........""".......
4daa0 20 20 53 65 74 20 63 61 6c 6c 62 61 63 6b 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 63 61 6c ..Set.callback.which.will.be.cal
4dac0 6c 65 64 20 77 68 65 6e 20 74 68 65 20 73 74 6f 72 65 20 69 73 20 76 65 72 69 66 69 65 64 2e 0a led.when.the.store.is.verified..
4dae0 20 20 20 20 20 20 20 20 57 72 61 70 70 65 72 20 6f 76 65 72 20 4f 70 65 6e 53 53 4c 20 58 35 30 ........Wrapper.over.OpenSSL.X50
4db00 39 5f 53 54 4f 52 45 5f 73 65 74 5f 76 65 72 69 66 79 5f 63 62 28 29 2e 0a 0a 20 20 20 20 20 20 9_STORE_set_verify_cb().........
4db20 20 20 3a 70 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 20 20 20 43 61 6c 6c 61 62 6c 65 20 74 ..:param.callback:....Callable.t
4db40 6f 20 73 70 65 63 69 66 79 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 2e 0a o.specify.verification.options..
4db60 20 20 20 20 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 79 70 65 ............................Type
4db80 20 6f 66 20 74 68 65 20 63 61 6c 6c 61 62 6c 65 20 6d 75 73 74 20 62 65 3a 0a 20 20 20 20 20 20 .of.the.callable.must.be:.......
4dba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 2c 20 58 35 30 39 ......................(int,.X509
4dbc0 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 29 20 2d 3e 20 69 6e 74 2e 0a 20 20 20 20 20 20 20 20 _Store_Context).->.int..........
4dbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 4e 6f 6e 65 3a 20 73 65 74 ....................If.None:.set
4dc00 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6f 70 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 20 20 20 20 .the.standard.options...........
4dc20 3a 6e 6f 74 65 3a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 20 :note:.compile-time.or.run-time.
4dc40 65 72 72 6f 72 73 20 69 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 6f 75 6c 64 20 72 65 73 errors.in.the.callback.would.res
4dc60 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 6d 79 73 74 65 72 69 6f 75 73 ult................in.mysterious
4dc80 20 65 72 72 6f 72 73 20 64 75 72 69 6e 67 20 76 65 72 69 66 69 63 61 74 69 6f 6e 2c 20 77 68 69 .errors.during.verification,.whi
4dca0 63 68 20 63 6f 75 6c 64 20 62 65 20 68 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch.could.be.hard................
4dcc0 74 6f 20 74 72 61 63 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 6e 6f 74 65 3a 20 50 79 74 68 6f 6e to.trace...........:note:.Python
4dce0 20 65 78 63 65 70 74 69 6f 6e 73 20 72 61 69 73 65 64 20 69 6e 20 63 61 6c 6c 62 61 63 6b 73 20 .exceptions.raised.in.callbacks.
4dd00 64 6f 20 6e 6f 74 20 70 72 6f 70 61 67 61 74 65 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 do.not.propagate.to.............
4dd20 20 20 20 76 65 72 69 66 79 28 29 20 63 61 6c 6c 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 ...verify().call...........:retu
4dd40 72 6e 3a 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 69 66 20 rn:.None.........""".........if.
4dd60 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 callback.is.None:.............re
4dd80 74 75 72 6e 20 73 65 6c 66 2e 73 65 74 5f 76 65 72 69 66 79 5f 63 62 28 78 35 30 39 5f 73 74 6f turn.self.set_verify_cb(x509_sto
4dda0 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 re_default_cb)..........if.not.c
4ddc0 61 6c 6c 61 62 6c 65 28 63 61 6c 6c 62 61 63 6b 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 allable(callback):.............r
4dde0 61 69 73 65 20 58 35 30 39 45 72 72 6f 72 28 22 73 65 74 5f 76 65 72 69 66 79 28 29 3a 20 63 61 aise.X509Error("set_verify():.ca
4de00 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74 20 63 61 6c 6c 61 62 6c 65 22 29 0a 20 20 20 20 20 20 20 llback.is.not.callable")........
4de20 20 72 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 73 65 74 5f 76 65 72 69 66 79 .return.m2.x509_store_set_verify
4de40 5f 63 62 28 73 65 6c 66 2e 73 74 6f 72 65 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 61 _cb(self.store,.callback)......a
4de60 64 64 5f 63 65 72 74 20 3d 20 61 64 64 5f 78 35 30 39 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f dd_cert.=.add_x509......def.set_
4de80 66 6c 61 67 73 28 73 65 6c 66 2c 20 66 6c 61 67 73 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 flags(self,.flags):.........#.ty
4dea0 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........."""....
4dec0 20 20 20 20 20 53 65 74 20 74 68 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 66 6c 61 67 73 20 .....Set.the.verification.flags.
4dee0 66 6f 72 20 74 68 65 20 58 35 30 39 53 74 6f 72 65 0a 20 20 20 20 20 20 20 20 57 72 61 70 70 65 for.the.X509Store.........Wrappe
4df00 72 20 6f 76 65 72 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 53 54 4f 52 45 5f 73 65 74 5f 66 6c r.over.OpenSSL.X509_STORE_set_fl
4df20 61 67 73 28 29 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 66 6c 61 67 73 3a 20 60 56 45 ags()..........:param.flags:.`VE
4df40 52 49 46 49 43 41 54 49 4f 4e 20 46 4c 41 47 53 60 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 RIFICATION.FLAGS`.section.of.the
4df60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 35 30 39 5f 56 45 52 49 .......................X509_VERI
4df80 46 59 5f 50 41 52 41 4d 5f 73 65 74 5f 66 6c 61 67 73 20 6d 61 6e 20 70 61 67 65 20 68 61 73 0a FY_PARAM_set_flags.man.page.has.
4dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 63 6f 6d 70 6c 65 74 65 ......................a.complete
4dfc0 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 76 61 6c 75 65 73 20 74 68 65 20 66 6c 61 67 73 .description.of.values.the.flags
4dfe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 .......................parameter
4e000 20 63 61 6e 20 74 61 6b 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .can.take.......................
4e020 20 54 68 65 69 72 20 4d 32 43 72 79 70 74 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 69 73 20 74 72 .Their.M2Crypto.equivalent.is.tr
4e040 61 6e 73 66 6f 72 6d 65 64 20 66 6f 6c 6c 6f 77 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 ansformed.following.............
4e060 20 20 20 20 20 20 20 20 20 20 74 68 65 20 70 61 74 74 65 72 6e 3a 20 22 58 35 30 39 5f 56 5f 46 ..........the.pattern:."X509_V_F
4e080 4c 41 47 5f 58 59 5a 22 20 2d 3e 20 6c 6f 77 65 72 63 61 73 65 28 22 56 45 52 49 46 59 5f 58 59 LAG_XYZ".->.lowercase("VERIFY_XY
4e0a0 5a 22 29 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 Z").........""".........return.m
4e0c0 32 2e 78 35 30 39 5f 73 74 6f 72 65 5f 73 65 74 5f 66 6c 61 67 73 28 73 65 6c 66 2e 73 74 6f 72 2.x509_store_set_flags(self.stor
4e0e0 65 2c 20 66 6c 61 67 73 29 0a 0a 0a 63 6c 61 73 73 20 58 35 30 39 5f 53 74 61 63 6b 28 6f 62 6a e,.flags)...class.X509_Stack(obj
4e100 65 63 74 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 58 35 30 39 20 53 74 61 63 6b 0a 0a 20 20 ect):.....""".....X509.Stack....
4e120 20 20 3a 77 61 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 ..:warning:.Do.not.modify.the.un
4e140 64 65 72 6c 79 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 derlying.OpenSSL.stack..........
4e160 20 20 20 20 20 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 .....except.through.this.interfa
4e180 63 65 2c 20 6f 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 ce,.or.use.any.OpenSSL..........
4e1a0 20 20 20 20 20 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 .....functions.that.do.so.indire
4e1c0 63 74 6c 79 2e 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 ctly..Doing.so.will.get.the.....
4e1e0 20 20 20 20 20 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 ..........OpenSSL.stack.and.the.
4e200 69 6e 74 65 72 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 internal.pystack.of.this.class.o
4e220 75 74 0a 20 20 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 ut...............of.sync,.leadin
4e240 67 20 74 6f 20 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 g.to.python.memory.leaks,.except
4e260 69 6f 6e 73 20 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 ions.or...............even.pytho
4e280 6e 20 63 72 61 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 n.crashes!....."""......m2_sk_x5
4e2a0 30 39 5f 66 72 65 65 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 66 72 65 65 0a 0a 20 20 20 20 64 09_free.=.m2.sk_x509_free......d
4e2c0 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 74 61 63 6b 3d 4e 6f 6e 65 2c 20 5f 70 ef.__init__(self,.stack=None,._p
4e2e0 79 66 72 65 65 3d 30 2c 20 5f 70 79 66 72 65 65 5f 78 35 30 39 3d 30 29 3a 0a 20 20 20 20 20 20 yfree=0,._pyfree_x509=0):.......
4e300 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d 3e 20 4e ..#.type:.(bytes,.int,.int).->.N
4e320 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 4e 6f 6e 65 one.........if.stack.is.not.None
4e340 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 74 61 63 6b :.............self.stack.=.stack
4e360 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 79 66 .............self._pyfree.=._pyf
4e380 72 65 65 0a 20 20 20 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 ree.............self.pystack.=.[
4e3a0 5d 20 20 23 20 54 68 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 ]..#.This.must.be.kept.in.sync.w
4e3c0 69 74 68 20 73 65 6c 66 2e 73 74 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 20 3d ith.self.stack.............num.=
4e3e0 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 29 0a 20 20 20 20 .m2.sk_x509_num(self.stack).....
4e400 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 20 20 20 ........for.i.in.range(num):....
4e420 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 65 6e 64 .............self.pystack.append
4e440 28 58 35 30 39 28 6d 32 2e 73 6b 5f 78 35 30 39 5f 76 61 6c 75 65 28 73 65 6c 66 2e 73 74 61 63 (X509(m2.sk_x509_value(self.stac
4e460 6b 2c 20 69 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 k,.i),..........................
4e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 70 79 66 72 65 65 3d 5f 70 79 66 72 65 65 5f ................_pyfree=_pyfree_
4e4a0 78 35 30 39 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 x509)).........else:............
4e4c0 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 6e 65 77 5f 6e 75 6c .self.stack.=.m2.sk_x509_new_nul
4e4e0 6c 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 65 20 3d 20 31 l().............self._pyfree.=.1
4e500 0a 20 20 20 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 .............self.pystack.=.[]..
4e520 23 20 54 68 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 #.This.must.be.kept.in.sync.with
4e540 20 73 65 6c 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 .self.stack......def.__del__(sel
4e560 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 20 f):.........#.type:.().->.None..
4e580 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 65 65 .......if.getattr(self,.'_pyfree
4e5a0 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 73 6b 5f 78 35 ',.0):.............self.m2_sk_x5
4e5c0 30 39 5f 66 72 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 09_free(self.stack)......def.__l
4e5e0 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 20 2d en__(self):.........#.type:.().-
4e600 3e 20 69 6e 74 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 >.int.........assert.m2.sk_x509_
4e620 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 2e 70 79 73 74 num(self.stack).==.len(self.pyst
4e640 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 66 2e 70 79 73 ack).........return.len(self.pys
4e660 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 73 65 6c 66 2c tack)......def.__getitem__(self,
4e680 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 29 20 2d 3e 20 .idx):.........#.type:.(int).->.
4e6a0 58 35 30 39 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 X509.........return.self.pystack
4e6c0 5b 69 64 78 5d 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 [idx]......def.__iter__(self):..
4e6e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 65 72 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 .......return.iter(self.pystack)
4e700 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
4e720 74 75 72 6e 20 73 65 6c 66 2e 73 74 61 63 6b 0a 0a 20 20 20 20 64 65 66 20 70 75 73 68 28 73 65 turn.self.stack......def.push(se
4e740 6c 66 2c 20 78 35 30 39 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 58 35 30 39 lf,.x509):.........#.type:.(X509
4e760 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 70 75 73 ).->.int.........""".........pus
4e780 68 20 61 6e 20 58 35 30 39 20 63 65 72 74 69 66 69 63 61 74 65 20 6f 6e 74 6f 20 74 68 65 20 73 h.an.X509.certificate.onto.the.s
4e7a0 74 61 63 6b 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 78 35 30 39 3a 20 58 35 30 39 tack...........:param.x509:.X509
4e7c0 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 54 68 65 20 6e .object...........:return:.The.n
4e7e0 75 6d 62 65 72 20 6f 66 20 58 35 30 39 20 6f 62 6a 65 63 74 73 20 63 75 72 72 65 6e 74 6c 79 20 umber.of.X509.objects.currently.
4e800 6f 6e 20 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 on.the.stack..........""".......
4e820 20 20 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 ..assert.isinstance(x509,.X509).
4e840 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 61 70 70 65 6e 64 28 78 35 30 39 ........self.pystack.append(x509
4e860 29 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 73 6b 5f 78 35 30 39 5f 70 75 73 68 28 ).........ret.=.m2.sk_x509_push(
4e880 73 65 6c 66 2e 73 74 61 63 6b 2c 20 78 35 30 39 2e 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 self.stack,.x509._ptr())........
4e8a0 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 61 63 6b 29 .assert.ret.==.len(self.pystack)
4e8c0 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 70 6f 70 .........return.ret......def.pop
4e8e0 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 58 35 (self):.........#.type:.().->.X5
4e900 30 39 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 70 6f 70 20 61 20 63 65 72 09.........""".........pop.a.cer
4e920 74 69 66 69 63 61 74 65 20 66 72 6f 6d 20 74 68 65 20 73 74 61 63 6b 2e 0a 0a 20 20 20 20 20 20 tificate.from.the.stack.........
4e940 20 20 3a 72 65 74 75 72 6e 3a 20 58 35 30 39 20 6f 62 6a 65 63 74 20 74 68 61 74 20 77 61 73 20 ..:return:.X509.object.that.was.
4e960 70 6f 70 70 65 64 2c 20 6f 72 20 4e 6f 6e 65 20 69 66 20 74 68 65 72 65 20 69 73 0a 20 20 20 20 popped,.or.None.if.there.is.....
4e980 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 68 69 6e 67 20 74 6f 20 70 6f 70 2e 0a 20 20 20 .............nothing.to.pop.....
4e9a0 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 78 35 30 39 5f 70 74 72 20 3d 20 6d 32 2e 73 .....""".........x509_ptr.=.m2.s
4e9c0 6b 5f 78 35 30 39 5f 70 6f 70 28 73 65 6c 66 2e 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 69 k_x509_pop(self.stack).........i
4e9e0 66 20 78 35 30 39 5f 70 74 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 f.x509_ptr.is.None:.............
4ea00 61 73 73 65 72 74 20 6c 65 6e 28 73 65 6c 66 2e 70 79 73 74 61 63 6b 29 20 3d 3d 20 30 0a 20 20 assert.len(self.pystack).==.0...
4ea20 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 72 65 ..........return.None.........re
4ea40 74 75 72 6e 20 73 65 6c 66 2e 70 79 73 74 61 63 6b 2e 70 6f 70 28 29 0a 0a 20 20 20 20 64 65 66 turn.self.pystack.pop()......def
4ea60 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:.(
4ea80 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
4eaa0 65 74 75 72 6e 20 74 68 65 20 73 74 61 63 6b 20 61 73 20 61 20 44 45 52 20 65 6e 63 6f 64 65 64 eturn.the.stack.as.a.DER.encoded
4eac0 20 73 74 72 69 6e 67 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 .string.........""".........retu
4eae0 72 6e 20 6d 32 2e 67 65 74 5f 64 65 72 5f 65 6e 63 6f 64 69 6e 67 5f 73 74 61 63 6b 28 73 65 6c rn.m2.get_der_encoding_stack(sel
4eb00 66 2e 73 74 61 63 6b 29 0a 0a 0a 64 65 66 20 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 f.stack)...def.new_stack_from_de
4eb20 72 28 64 65 72 5f 73 74 72 69 6e 67 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 r(der_string):.....#.type:.(byte
4eb40 73 29 20 2d 3e 20 58 35 30 39 5f 53 74 61 63 6b 0a 20 20 20 20 22 22 22 0a 20 20 20 20 43 72 65 s).->.X509_Stack.....""".....Cre
4eb60 61 74 65 20 61 20 6e 65 77 20 58 35 30 39 5f 53 74 61 63 6b 20 66 72 6f 6d 20 44 45 52 20 73 74 ate.a.new.X509_Stack.from.DER.st
4eb80 72 69 6e 67 2e 0a 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 58 35 30 39 5f 53 74 61 63 6b 0a 20 ring.......:return:.X509_Stack..
4eba0 20 20 20 22 22 22 0a 20 20 20 20 64 65 72 5f 73 74 72 69 6e 67 20 3d 20 73 69 78 2e 65 6e 73 75 ...""".....der_string.=.six.ensu
4ebc0 72 65 5f 62 69 6e 61 72 79 28 64 65 72 5f 73 74 72 69 6e 67 29 0a 20 20 20 20 73 74 61 63 6b 5f re_binary(der_string).....stack_
4ebe0 70 74 72 20 3d 20 6d 32 2e 6d 61 6b 65 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 72 5f 73 65 71 ptr.=.m2.make_stack_from_der_seq
4ec00 75 65 6e 63 65 28 64 65 72 5f 73 74 72 69 6e 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 uence(der_string).....return.X50
4ec20 39 5f 53 74 61 63 6b 28 73 74 61 63 6b 5f 70 74 72 2c 20 31 2c 20 31 29 0a 0a 0a 63 6c 61 73 73 9_Stack(stack_ptr,.1,.1)...class
4ec40 20 52 65 71 75 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 58 35 .Request(object):.....""".....X5
4ec60 30 39 20 43 65 72 74 69 66 69 63 61 74 65 20 52 65 71 75 65 73 74 2e 0a 20 20 20 20 22 22 22 0a 09.Certificate.Request......""".
4ec80 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 72 65 71 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 30 39 5f .....m2_x509_req_free.=.m2.x509_
4eca0 72 65 71 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 req_free......def.__init__(self,
4ecc0 20 72 65 71 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 .req=None,._pyfree=0):.........#
4ece0 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 2c 20 69 6e 74 29 20 2d 3e 20 4e .type:.(Optional[int],.int).->.N
4ed00 6f 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a one.........if.req.is.not.None:.
4ed20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 71 20 3d 20 72 65 71 0a 20 20 20 20 20 ............self.req.=.req......
4ed40 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...
4ed60 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 72 65 71 ......else:.............self.req
4ed80 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 .=.m2.x509_req_new()............
4eda0 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 73 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 72 65 .m2.x509_req_set_version(self.re
4edc0 71 2c 20 30 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 65 20 3d q,.0).............self._pyfree.=
4ede0 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 20 20 20 .1......def.__del__(self):......
4ee00 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 69 66 ...#.type:.().->.None.........if
4ee20 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 20 20 .getattr(self,.'_pyfree',.0):...
4ee40 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 32 5f 78 35 30 39 5f 72 65 71 5f 66 72 65 65 28 ..........self.m2_x509_req_free(
4ee60 73 65 6c 66 2e 72 65 71 29 0a 0a 20 20 20 20 64 65 66 20 61 73 5f 74 65 78 74 28 73 65 6c 66 29 self.req)......def.as_text(self)
4ee80 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 20 :.........#.type:.().->.str.....
4eea0 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 20 20 ....buf.=.BIO.MemoryBuffer()....
4eec0 20 20 20 20 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 70 72 69 6e 74 28 62 75 66 2e 62 69 6f 5f 70 .....m2.x509_req_print(buf.bio_p
4eee0 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 71 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 tr(),.self.req).........return.s
4ef00 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 29 29 0a 0a ix.ensure_text(buf.read_all())..
4ef20 20 20 20 20 64 65 66 20 61 73 5f 70 65 6d 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 ....def.as_pem(self):.........#.
4ef40 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 62 75 66 20 3d 20 type:.().->.bytes.........buf.=.
4ef60 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 20 6d 32 2e 78 35 BIO.MemoryBuffer().........m2.x5
4ef80 30 39 5f 72 65 71 5f 77 72 69 74 65 5f 70 65 6d 28 62 75 66 2e 62 69 6f 5f 70 74 72 28 29 2c 20 09_req_write_pem(buf.bio_ptr(),.
4efa0 73 65 6c 66 2e 72 65 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 self.req).........return.buf.rea
4efc0 64 5f 61 6c 6c 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 0a 20 d_all()......def.as_der(self):..
4efe0 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......
4f000 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().....
4f020 20 20 20 20 6d 32 2e 69 32 64 5f 78 35 30 39 5f 72 65 71 5f 62 69 6f 28 62 75 66 2e 62 69 6f 5f ....m2.i2d_x509_req_bio(buf.bio_
4f040 70 74 72 28 29 2c 20 73 65 6c 66 2e 72 65 71 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ptr(),.self.req).........return.
4f060 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 70 65 6d buf.read_all()......def.save_pem
4f080 28 73 65 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 (self,.filename):.........#.type
4f0a0 3a 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 77 69 74 68 20 42 :.(AnyStr).->.int.........with.B
4f0c0 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 20 62 IO.openfile(filename,.'wb').as.b
4f0e0 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 78 35 30 39 5f 72 io:.............return.m2.x509_r
4f100 65 71 5f 77 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 eq_write_pem(bio.bio_ptr(),.self
4f120 2e 72 65 71 29 0a 0a 20 20 20 20 64 65 66 20 73 61 76 65 28 73 65 6c 66 2c 20 66 69 6c 65 6e 61 .req)......def.save(self,.filena
4f140 6d 65 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 20 20 20 20 20 20 me,.format=FORMAT_PEM):.........
4f160 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 69 6e 74 0a 20 20 20 #.type:.(AnyStr,.int).->.int....
4f180 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 53 61 76 65 73 20 58 2e 35 30 39 20 63 65 72 .....""".........Saves.X.509.cer
4f1a0 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 20 74 6f 20 61 20 66 69 6c 65 2e 20 44 65 66 61 tificate.request.to.a.file..Defa
4f1c0 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 4d ult.output.........format.is.PEM
4f1e0 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 65 ...........:param.filename:.Name
4f200 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 68 65 20 72 65 71 75 65 73 74 20 77 69 6c 6c 20 62 65 .of.the.file.the.request.will.be
4f220 20 73 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 .saved.to...........:param.forma
4f240 74 3a 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 t:.Controls.what.output.format.i
4f260 73 20 75 73 65 64 20 74 6f 20 73 61 76 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.used.to.save.the..............
4f280 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 20 45 69 74 68 65 72 20 46 4f 52 4d 41 54 ..........request..Either.FORMAT
4f2a0 5f 50 45 4d 20 6f 72 20 46 4f 52 4d 41 54 5f 44 45 52 20 74 6f 20 73 61 76 65 0a 20 20 20 20 20 _PEM.or.FORMAT_DER.to.save......
4f2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 50 45 4d 20 6f 72 20 44 45 52 20 ..................in.PEM.or.DER.
4f2e0 66 6f 72 6d 61 74 2e 20 52 61 69 73 65 73 20 56 61 6c 75 65 45 72 72 6f 72 20 69 66 20 61 6e 0a format..Raises.ValueError.if.an.
4f300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6b 6e 6f 77 6e 20 66 .......................unknown.f
4f320 6f 72 6d 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 ormat.is.used...........:return:
4f340 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 72 65 2e 0a 20 .1.for.success,.0.for.failure...
4f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 63 ................The.error.code.c
4f380 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 45 52 52 5f 67 65 74 5f 65 72 72 6f 72 2e an.be.obtained.by.ERR_get_error.
4f3a0 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 6f 70 .........""".........with.BIO.op
4f3c0 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 20 62 69 6f 3a 0a 20 enfile(filename,.'wb').as.bio:..
4f3e0 20 20 20 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 ...........if.format.==.FORMAT_P
4f400 45 4d 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 78 35 EM:.................return.m2.x5
4f420 30 39 5f 72 65 71 5f 77 72 69 74 65 5f 70 65 6d 28 62 69 6f 2e 62 69 6f 5f 70 74 72 28 29 2c 20 09_req_write_pem(bio.bio_ptr(),.
4f440 73 65 6c 66 2e 72 65 71 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 6f 72 6d 61 self.req).............elif.forma
4f460 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 20 20 20 20 20 t.==.FORMAT_DER:................
4f480 20 72 65 74 75 72 6e 20 6d 32 2e 69 32 64 5f 78 35 30 39 5f 72 65 71 5f 62 69 6f 28 62 69 6f 2e .return.m2.i2d_x509_req_bio(bio.
4f4a0 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 20 20 20 20 20 20 20 bio_ptr(),.self.req)............
4f4c0 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
4f4e0 75 65 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 22 55 6e ueError(....................."Un
4f500 6b 6e 6f 77 6e 20 66 69 6c 65 74 79 70 65 2e 20 4d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 46 known.filetype..Must.be.either.F
4f520 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 0a 20 20 20 20 64 ORMAT_DER.or.FORMAT_PEM")......d
4f540 65 66 20 67 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 ef.get_pubkey(self):.........#.t
4f560 79 70 65 3a 20 28 29 20 2d 3e 20 45 56 50 2e 50 4b 65 79 0a 20 20 20 20 20 20 20 20 22 22 22 0a ype:.().->.EVP.PKey.........""".
4f580 20 20 20 20 20 20 20 20 47 65 74 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 66 6f 72 20 74 ........Get.the.public.key.for.t
4f5a0 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 he.request...........:return:...
4f5c0 20 20 50 75 62 6c 69 63 20 6b 65 79 20 66 72 6f 6d 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 20 ..Public.key.from.the.request...
4f5e0 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 45 56 50 2e 50 4b .......""".........return.EVP.PK
4f600 65 79 28 6d 32 2e 78 35 30 39 5f 72 65 71 5f 67 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 2e 72 ey(m2.x509_req_get_pubkey(self.r
4f620 65 71 29 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 70 75 62 eq),._pyfree=1)......def.set_pub
4f640 6b 65 79 28 73 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 key(self,.pkey):.........#.type:
4f660 20 28 45 56 50 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 20 .(EVP.PKey).->.int........."""..
4f680 20 20 20 20 20 20 20 53 65 74 20 74 68 65 20 70 75 62 6c 69 63 20 6b 65 79 20 66 6f 72 20 74 68 .......Set.the.public.key.for.th
4f6a0 65 20 72 65 71 75 65 73 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 6b 65 79 3a e.request...........:param.pkey:
4f6c0 20 50 75 62 6c 69 63 20 6b 65 79 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 .Public.key..........:return:...
4f6e0 20 20 52 65 74 75 72 6e 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 30 20 66 6f 72 ..Return.1.for.success.and.0.for
4f700 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 20 72 65 .failure..........""".........re
4f720 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 73 65 74 5f 70 75 62 6b 65 79 28 73 65 6c 66 turn.m2.x509_req_set_pubkey(self
4f740 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 20 67 65 74 5f 76 65 .req,.pkey.pkey)......def.get_ve
4f760 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 70 65 3a 20 28 29 20 rsion(self):.........#.type:.().
4f780 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 47 65 74 20 76 ->.int.........""".........Get.v
4f7a0 65 72 73 69 6f 6e 2e 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 ersion...........:return:.......
4f7c0 20 52 65 74 75 72 6e 73 20 76 65 72 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 .Returns.version.........."""...
4f7e0 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 67 65 74 5f 76 65 72 ......return.m2.x509_req_get_ver
4f800 73 69 6f 6e 28 73 65 6c 66 2e 72 65 71 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 76 65 72 73 sion(self.req)......def.set_vers
4f820 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 79 ion(self,.version):.........#.ty
4f840 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........."""....
4f860 20 20 20 20 20 53 65 74 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 .....Set.version...........:para
4f880 6d 20 76 65 72 73 69 6f 6e 3a 20 56 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2e 0a 20 20 20 20 20 m.version:.Version.number.......
4f8a0 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 30 20 6f 6e 20 ...:return:........Returns.0.on.
4f8c0 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 20 72 65 74 failure..........""".........ret
4f8e0 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 73 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 urn.m2.x509_req_set_version(self
4f900 2e 72 65 71 2c 20 76 65 72 73 69 6f 6e 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 75 62 6a .req,.version)......def.get_subj
4f920 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 3a 20 28 29 20 2d 3e ect(self):.........#.type:.().->
4f940 20 58 35 30 39 5f 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 58 35 30 39 5f 4e .X509_Name.........return.X509_N
4f960 61 6d 65 28 6d 32 2e 78 35 30 39 5f 72 65 71 5f 67 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 ame(m2.x509_req_get_subject_name
4f980 28 73 65 6c 66 2e 72 65 71 29 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 75 62 6a 65 63 74 (self.req))......def.set_subject
4f9a0 5f 6e 61 6d 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 _name(self,.name):.........#.typ
4f9c0 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 20 22 22 e:.(X509_Name).->.int.........""
4f9e0 22 0a 20 20 20 20 20 20 20 20 53 65 74 20 73 75 62 6a 65 63 74 20 6e 61 6d 65 2e 0a 0a 20 20 20 ".........Set.subject.name......
4fa00 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 6d 65 .....:param.name:....subjectName
4fa20 20 66 69 65 6c 64 2e 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 20 20 20 31 20 66 6f .field..........:return:....1.fo
4fa40 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 20 r.success.and.0.for.failure.....
4fa60 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
4fa80 65 71 5f 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 28 73 65 6c 66 2e 72 65 71 2c 20 6e 61 eq_set_subject_name(self.req,.na
4faa0 6d 65 2e 78 35 30 39 5f 6e 61 6d 65 29 0a 0a 20 20 20 20 73 65 74 5f 73 75 62 6a 65 63 74 20 3d me.x509_name)......set_subject.=
4fac0 20 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 65 .set_subject_name......def.add_e
4fae0 78 74 65 6e 73 69 6f 6e 73 28 73 65 6c 66 2c 20 65 78 74 5f 73 74 61 63 6b 29 3a 0a 20 20 20 20 xtensions(self,.ext_stack):.....
4fb00 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 5f 53 74 61 63 ....#.type:.(X509_Extension_Stac
4fb20 6b 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 k).->.int.........""".........Ad
4fb40 64 20 58 35 30 39 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 6f 20 74 68 69 73 20 72 65 71 75 65 73 d.X509.extensions.to.this.reques
4fb60 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 65 78 74 5f 73 74 61 63 6b 3a 20 53 74 t...........:param.ext_stack:.St
4fb80 61 63 6b 20 6f 66 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 6f 20 61 64 64 2e 0a 20 20 20 20 20 20 ack.of.extensions.to.add........
4fba0 20 20 3a 72 65 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 ..:return:.1.for.success.and.0.f
4fbc0 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
4fbe0 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 eturn.m2.x509_req_add_extensions
4fc00 28 73 65 6c 66 2e 72 65 71 2c 20 65 78 74 5f 73 74 61 63 6b 2e 5f 70 74 72 28 29 29 0a 0a 20 20 (self.req,.ext_stack._ptr())....
4fc20 20 20 64 65 66 20 76 65 72 69 66 79 28 73 65 6c 66 2c 20 70 6b 65 79 29 3a 0a 20 20 20 20 20 20 ..def.verify(self,.pkey):.......
4fc40 20 20 23 20 74 79 70 65 3a 20 28 45 56 50 2e 50 4b 65 79 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 ..#.type:.(EVP.PKey).->.int.....
4fc60 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 50 4b ...."""..........:param.pkey:.PK
4fc80 65 79 20 74 6f 20 62 65 20 76 65 72 69 66 69 65 64 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 ey.to.be.verified.........:retur
4fca0 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 69 6c 75 n:.1.for.success.and.0.for.failu
4fcc0 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
4fce0 2e 78 35 30 39 5f 72 65 71 5f 76 65 72 69 66 79 28 73 65 6c 66 2e 72 65 71 2c 20 70 6b 65 79 2e .x509_req_verify(self.req,.pkey.
4fd00 70 6b 65 79 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 20 pkey)......def.sign(self,.pkey,.
4fd20 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 20 md):.........#.type:.(EVP.PKey,.
4fd40 73 74 72 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 20 20 str).->.int.........""".........
4fd60 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 73 69 67 6e 65 64 0a .:param.pkey:.PKey.to.be.signed.
4fd80 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 64 3a 20 75 73 65 64 20 61 6c 67 6f 72 69 67 74 ........:param.md:.used.algorigt
4fda0 68 6d 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 hm.........:return:.1.for.succes
4fdc0 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.........""".
4fde0 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 20 6d 64 2c 20 4e 6f ........mda.=.getattr(m2,.md,.No
4fe00 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 65 3a 0a 20 20 20 20 ne).........if.mda.is.None:.....
4fe20 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 6f 77 ........raise.ValueError('unknow
4fe40 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 20 20 72 n.message.digest',.md).........r
4fe60 65 74 75 72 6e 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 73 69 67 6e 28 73 65 6c 66 2e 72 65 71 2c eturn.m2.x509_req_sign(self.req,
4fe80 20 70 6b 65 79 2e 70 6b 65 79 2c 20 6d 64 61 28 29 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 72 65 .pkey.pkey,.mda())...def.load_re
4fea0 71 75 65 73 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 quest(file,.format=FORMAT_PEM):.
4fec0 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 52 65 71 ....#.type:.(AnyStr,.int).->.Req
4fee0 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 66 69 63 61 74 uest.....""".....Load.certificat
4ff00 65 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 66 69 6c 65 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d e.request.from.file.......:param
4ff20 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 63 .file:.Name.of.file.containing.c
4ff40 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 20 20 20 20 20 20 20 ertificate.request.in...........
4ff60 20 20 20 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 52 20 66 6f 72 6d 61 74 2e .......either.PEM.or.DER.format.
4ff80 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 62 65 73 20 74 68 .....:param.format:.Describes.th
4ffa0 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 6f 20 62 65 20 6c 6f 61 64 65 e.format.of.the.file.to.be.loade
4ffc0 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 65 72 20 50 45 4d d,....................either.PEM
4ffe0 20 6f 72 20 44 45 52 2e 20 28 75 73 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 .or.DER..(using.constants.FORMAT
50000 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 4f 52 4d _PEM....................and.FORM
50020 41 54 5f 44 45 52 29 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 52 65 71 75 65 73 74 20 6f 62 6a AT_DER).....:return:.Request.obj
50040 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 66 69 ect......""".....with.BIO.openfi
50060 6c 65 28 66 69 6c 65 29 20 61 73 20 66 3a 0a 20 20 20 20 20 20 20 20 69 66 20 66 6f 72 6d 61 74 le(file).as.f:.........if.format
50080 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 20 20 63 70 74 72 .==.FORMAT_PEM:.............cptr
500a0 20 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 72 65 61 64 5f 70 65 6d 28 66 2e 62 69 6f 5f 70 74 .=.m2.x509_req_read_pem(f.bio_pt
500c0 72 28 29 29 0a 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 r()).........elif.format.==.FORM
500e0 41 54 5f 44 45 52 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 70 74 72 20 3d 20 6d 32 2e 64 32 AT_DER:.............cptr.=.m2.d2
50100 69 5f 78 35 30 39 5f 72 65 71 28 66 2e 62 69 6f 5f 70 74 72 28 29 29 0a 20 20 20 20 20 20 20 20 i_x509_req(f.bio_ptr()).........
50120 65 6c 73 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 else:.............raise.ValueErr
50140 6f 72 28 0a 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 or(................."Unknown.fil
50160 65 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 etype..Must.be.either.FORMAT_PEM
50180 20 6f 72 20 46 4f 52 4d 41 54 5f 44 45 52 22 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 52 65 71 .or.FORMAT_DER")......return.Req
501a0 75 65 73 74 28 63 70 74 72 2c 20 31 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 uest(cptr,.1)...def.load_request
501c0 5f 62 69 6f 28 62 69 6f 2c 20 66 6f 72 6d 61 74 3d 46 4f 52 4d 41 54 5f 50 45 4d 29 3a 0a 20 20 _bio(bio,.format=FORMAT_PEM):...
501e0 20 20 23 20 74 79 70 65 3a 20 28 42 49 4f 2e 42 49 4f 2c 20 69 6e 74 29 20 2d 3e 20 52 65 71 75 ..#.type:.(BIO.BIO,.int).->.Requ
50200 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 66 69 63 61 74 65 est.....""".....Load.certificate
50220 20 72 65 71 75 65 73 74 20 66 72 6f 6d 20 61 20 62 69 6f 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d .request.from.a.bio.......:param
50240 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 74 69 66 69 63 .bio:.BIO.pointing.at.a.certific
50260 61 74 65 20 72 65 71 75 65 73 74 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 ate.request.in.................e
50280 69 74 68 65 72 20 44 45 52 20 6f 72 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 3a 70 61 ither.DER.or.PEM.format......:pa
502a0 72 61 6d 20 66 6f 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 ram.format:.Describes.the.format
502c0 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 .of.the.request.to.be.loaded,...
502e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 .................either.PEM.or.D
50300 45 52 2e 20 28 75 73 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a ER..(using.constants.FORMAT_PEM.
50320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 44 45 ...................and.FORMAT_DE
50340 52 29 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 R).....:return:.M2Crypto.X509.Re
50360 71 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 69 66 20 66 6f 72 quest.object......""".....if.for
50380 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 63 70 74 72 20 mat.==.FORMAT_PEM:.........cptr.
503a0 3d 20 6d 32 2e 78 35 30 39 5f 72 65 71 5f 72 65 61 64 5f 70 65 6d 28 62 69 6f 2e 5f 70 74 72 28 =.m2.x509_req_read_pem(bio._ptr(
503c0 29 29 0a 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 52 )).....elif.format.==.FORMAT_DER
503e0 3a 0a 20 20 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 :.........cptr.=.m2.d2i_x509_req
50400 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 20 20 20 20 72 (bio._ptr()).....else:.........r
50420 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 20 20 22 55 6e aise.ValueError(............."Un
50440 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 72 20 46 4f 52 known.format..Must.be.either.FOR
50460 4d 41 54 5f 44 45 52 20 6f 72 20 46 4f 52 4d 41 54 5f 50 45 4d 22 29 0a 0a 20 20 20 20 72 65 74 MAT_DER.or.FORMAT_PEM")......ret
50480 75 72 6e 20 52 65 71 75 65 73 74 28 63 70 74 72 2c 20 5f 70 79 66 72 65 65 3d 31 29 0a 0a 0a 64 urn.Request(cptr,._pyfree=1)...d
504a0 65 66 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 74 72 69 6e 67 28 73 74 72 69 6e 67 2c 20 66 ef.load_request_string(string,.f
504c0 6f 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 ormat=FORMAT_PEM):.....#.type:.(
504e0 41 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 AnyStr,.int).->.Request.....""".
50500 20 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 ....Load.certificate.request.fro
50520 6d 20 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 m.a.string.......:param.string:.
50540 53 74 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 String.containing.a.certificate.
50560 72 65 71 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 20 20 65 69 request.in....................ei
50580 74 68 65 72 20 44 45 52 20 6f 72 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 3a 70 61 72 ther.DER.or.PEM.format......:par
505a0 61 6d 20 66 6f 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 am.format:.Describes.the.format.
505c0 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 0a 20 20 20 of.the.request.to.be.loaded,....
505e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 69 74 68 65 72 20 50 45 4d 20 6f 72 20 44 45 ................either.PEM.or.DE
50600 52 2e 20 28 75 73 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 46 4f 52 4d 41 54 5f 50 45 4d 0a 20 R..(using.constants.FORMAT_PEM..
50620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 46 4f 52 4d 41 54 5f 44 45 52 ..................and.FORMAT_DER
50640 29 0a 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 )......:return:.M2Crypto.X509.Re
50660 71 75 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 quest.object......""".....string
50680 20 3d 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 .=.six.ensure_binary(string)....
506a0 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 69 6e 67 29 0a .bio.=.BIO.MemoryBuffer(string).
506c0 20 20 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 ....return.load_request_bio(bio,
506e0 20 66 6f 72 6d 61 74 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 64 65 72 5f .format)...def.load_request_der_
50700 73 74 72 69 6e 67 28 73 74 72 69 6e 67 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 string(string):.....#.type:.(Any
50720 53 74 72 29 20 2d 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 Str).->.Request.....""".....Load
50740 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 61 20 73 74 72 69 .certificate.request.from.a.stri
50760 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 20 63 ng.......:param.string:.String.c
50780 6f 6e 74 61 69 6e 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 ontaining.a.certificate.request.
507a0 69 6e 20 44 45 52 20 66 6f 72 6d 61 74 2e 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 4d 32 43 72 in.DER.format......:return:.M2Cr
507c0 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 20 20 20 20 22 22 ypto.X509.Request.object......""
507e0 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 62 69 6e 61 72 79 ".....string.=.six.ensure_binary
50800 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 6f 72 79 42 75 66 (string).....bio.=.BIO.MemoryBuf
50820 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 64 5f 72 65 71 75 fer(string).....return.load_requ
50840 65 73 74 5f 62 69 6f 28 62 69 6f 2c 20 46 4f 52 4d 41 54 5f 44 45 52 29 0a 0a 0a 63 6c 61 73 73 est_bio(bio,.FORMAT_DER)...class
50860 20 43 52 4c 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 20 43 .CRL(object):.....""".....X509.C
50880 65 72 74 69 66 69 63 61 74 65 20 52 65 76 6f 63 61 74 69 6f 6e 20 4c 69 73 74 0a 20 20 20 20 22 ertificate.Revocation.List....."
508a0 22 22 0a 0a 20 20 20 20 6d 32 5f 78 35 30 39 5f 63 72 6c 5f 66 72 65 65 20 3d 20 6d 32 2e 78 35 ""......m2_x509_crl_free.=.m2.x5
508c0 30 39 5f 63 72 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 09_crl_free......def.__init__(se
508e0 6c 66 2c 20 63 72 6c 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 lf,.crl=None,._pyfree=0):.......
50900 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 2c 20 69 6e 74 29 ..#.type:.(Optional[bytes],.int)
50920 20 2d 3e 20 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 .->.None........."""..........:p
50940 61 72 61 6d 20 63 72 6c 3a 20 62 69 6e 61 72 79 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 aram.crl:.binary.representation.
50960 6f 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 of................the.underlying
50980 20 4f 70 65 6e 53 53 4c 20 58 35 30 39 5f 43 52 4c 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 .OpenSSL.X509_CRL.object........
509a0 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 63 72 6c 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 ..""".........if.crl.is.not.None
509c0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 72 6c 20 3d 20 63 72 6c 0a 20 20 20 :.............self.crl.=.crl....
509e0 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 0a .........self._pyfree.=._pyfree.
50a00 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
50a20 72 6c 20 3d 20 6d 32 2e 78 35 30 39 5f 63 72 6c 5f 6e 65 77 28 29 0a 20 20 20 20 20 20 20 20 20 rl.=.m2.x509_crl_new()..........
50a40 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
50a60 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:.().-
50a80 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,.
50aa0 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.
50ac0 6d 32 5f 78 35 30 39 5f 63 72 6c 5f 66 72 65 65 28 73 65 6c 66 2e 63 72 6c 29 0a 0a 20 20 20 20 m2_x509_crl_free(self.crl)......
50ae0 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 70 def.as_text(self):.........#.typ
50b00 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........."""........
50b20 20 52 65 74 75 72 6e 20 43 52 4c 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 20 69 6e 20 61 20 73 .Return.CRL.in.PEM.format.in.a.s
50b40 74 72 69 6e 67 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 53 74 72 69 6e 67 20 tring...........:return:.String.
50b60 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 43 52 4c 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 containing.the.CRL.in.PEM.format
50b80 2e 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 42 49 4f 2e ..........""".........buf.=.BIO.
50ba0 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 63 MemoryBuffer().........m2.x509_c
50bc0 72 6c 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 63 72 6c rl_print(buf.bio_ptr(),.self.crl
50be0 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
50c00 28 62 75 66 2e 72 65 61 64 5f 61 6c 6c 28 29 29 0a 0a 0a 64 65 66 20 6c 6f 61 64 5f 63 72 6c 28 (buf.read_all())...def.load_crl(
50c20 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 29 20 2d 3e 20 43 file):.....#.type:.(AnyStr).->.C
50c40 52 4c 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4c 6f 61 64 20 43 52 4c 20 66 72 6f 6d 20 66 69 6c RL.....""".....Load.CRL.from.fil
50c60 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 20 66 69 6c e.......:param.file:.Name.of.fil
50c80 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 43 52 4c 20 69 6e 20 50 45 4d 20 66 6f 72 6d 61 74 2e 0a e.containing.CRL.in.PEM.format..
50ca0 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 43 52 4c 20 .....:return:.M2Crypto.X509.CRL.
50cc0 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 6f 70 65 object......""".....with.BIO.ope
50ce0 6e 66 69 6c 65 28 66 69 6c 65 29 20 61 73 20 66 3a 0a 20 20 20 20 20 20 20 20 63 70 74 72 20 3d nfile(file).as.f:.........cptr.=
50d00 20 6d 32 2e 78 35 30 39 5f 63 72 6c 5f 72 65 61 64 5f 70 65 6d 28 66 2e 62 69 6f 5f 70 74 72 28 .m2.x509_crl_read_pem(f.bio_ptr(
50d20 29 29 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 43 52 4c 28 63 70 74 72 2c 20 31 29 0a 94 7d 94 28 ))......return.CRL(cptr,.1)..}.(
50d40 8c 09 58 35 30 39 45 72 72 6f 72 94 6a 37 02 00 00 4b 2c 4b 2d 87 94 8c 15 78 35 30 39 5f 73 74 ..X509Error.j7...K,K-....x509_st
50d60 6f 72 65 5f 64 65 66 61 75 6c 74 5f 63 62 94 6a 18 25 00 00 4b 35 4b 37 87 94 8c 0d 6e 65 77 5f ore_default_cb.j.%..K5K7....new_
50d80 65 78 74 65 6e 73 69 6f 6e 94 6a 18 25 00 00 4b 3a 4b 4a 87 94 8c 17 58 35 30 39 5f 45 78 74 65 extension.j.%..K:KJ....X509_Exte
50da0 6e 73 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 54 4b 57 87 94 8c 16 58 35 30 39 nsion.__init__.j.%..KTKW....X509
50dc0 5f 45 78 74 65 6e 73 69 6f 6e 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 59 4b 5c 87 94 8c 13 _Extension.__del__.j.%..KYK\....
50de0 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 2e 5f 70 74 72 94 6a 18 25 00 00 4b 5e 4b 60 87 94 8c X509_Extension._ptr.j.%..K^K`...
50e00 1b 58 35 30 39 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 18 25 .X509_Extension.set_critical.j.%
50e20 00 00 4b 62 4b 6d 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 ..KbKm....X509_Extension.get_cri
50e40 74 69 63 61 6c 94 6a 18 25 00 00 4b 6f 4b 76 87 94 8c 17 58 35 30 39 5f 45 78 74 65 6e 73 69 6f tical.j.%..KoKv....X509_Extensio
50e60 6e 2e 67 65 74 5f 6e 61 6d 65 94 6a 18 25 00 00 4b 78 4b 7d 87 94 8c 18 58 35 30 39 5f 45 78 74 n.get_name.j.%..KxK}....X509_Ext
50e80 65 6e 73 69 6f 6e 2e 67 65 74 5f 76 61 6c 75 65 94 6a 18 25 00 00 4b 7f 4b 89 87 94 8c 0e 58 35 ension.get_value.j.%..K.K.....X5
50ea0 30 39 5f 45 78 74 65 6e 73 69 6f 6e 94 6a 37 02 00 00 4b 4d 4b 89 87 94 8c 1d 58 35 30 39 5f 45 09_Extension.j7...KMK.....X509_E
50ec0 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 9a 4b xtension_Stack.__init__.j.%..K.K
50ee0 a7 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 5f 64 65 6c 5f .....X509_Extension_Stack.__del_
50f00 5f 94 6a 18 25 00 00 4b a9 4b ad 87 94 8c 1c 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 _.j.%..K.K.....X509_Extension_St
50f20 61 63 6b 2e 5f 5f 6c 65 6e 5f 5f 94 6a 18 25 00 00 4b af 4b b2 87 94 8c 20 58 35 30 39 5f 45 78 ack.__len__.j.%..K.K.....X509_Ex
50f40 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 94 6a 18 25 00 00 4b tension_Stack.__getitem__.j.%..K
50f60 b4 4b b6 87 94 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 .K.....X509_Extension_Stack.__it
50f80 65 72 5f 5f 94 6a 18 25 00 00 4b b8 4b b9 87 94 8c 19 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e er__.j.%..K.K.....X509_Extension
50fa0 5f 53 74 61 63 6b 2e 5f 70 74 72 94 6a 18 25 00 00 4b bb 4b bd 87 94 8c 19 58 35 30 39 5f 45 78 _Stack._ptr.j.%..K.K.....X509_Ex
50fc0 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 18 25 00 00 4b bf 4b ca 87 94 8c 18 tension_Stack.push.j.%..K.K.....
50fe0 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 18 25 00 00 4b cc X509_Extension_Stack.pop.j.%..K.
51000 4b d7 87 94 8c 14 58 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 94 6a 37 02 00 00 K.....X509_Extension_Stack.j7...
51020 4b 8c 4b d7 87 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 K.K.....X509_Name_Entry.__init__
51040 94 6a 18 25 00 00 4b e1 4b e8 87 94 8c 17 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 5f 5f .j.%..K.K.....X509_Name_Entry.__
51060 64 65 6c 5f 5f 94 6a 18 25 00 00 4b ea 4b ed 87 94 8c 14 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 del__.j.%..K.K.....X509_Name_Ent
51080 72 79 2e 5f 70 74 72 94 6a 18 25 00 00 4b ef 4b f1 87 94 8c 1a 58 35 30 39 5f 4e 61 6d 65 5f 45 ry._ptr.j.%..K.K.....X509_Name_E
510a0 6e 74 72 79 2e 73 65 74 5f 6f 62 6a 65 63 74 94 6a 18 25 00 00 4b f3 4b fc 87 94 8c 18 58 35 30 ntry.set_object.j.%..K.K.....X50
510c0 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 73 65 74 5f 64 61 74 61 94 6a 18 25 00 00 4b fe 4d 06 01 9_Name_Entry.set_data.j.%..K.M..
510e0 87 94 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 65 63 74 94 6a ....X509_Name_Entry.get_object.j
51100 18 25 00 00 4d 08 01 4d 0b 01 87 94 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 67 65 .%..M..M......X509_Name_Entry.ge
51120 74 5f 64 61 74 61 94 6a 18 25 00 00 4d 0d 01 4d 10 01 87 94 8c 1d 58 35 30 39 5f 4e 61 6d 65 5f t_data.j.%..M..M......X509_Name_
51140 45 6e 74 72 79 2e 63 72 65 61 74 65 5f 62 79 5f 74 78 74 94 6a 18 25 00 00 4d 12 01 4d 14 01 87 Entry.create_by_txt.j.%..M..M...
51160 94 8c 0f 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 94 6a 37 02 00 00 4b da 4d 14 01 87 94 8c ...X509_Name_Entry.j7...K.M.....
51180 12 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 33 01 4d 3f 01 87 .X509_Name.__init__.j.%..M3.M?..
511a0 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d 41 01 4d 44 01 ...X509_Name.__del__.j.%..MA.MD.
511c0 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 73 74 72 5f 5f 94 6a 18 25 00 00 4d 46 01 4d 4a ....X509_Name.__str__.j.%..MF.MJ
511e0 01 87 94 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 67 65 74 61 74 74 72 5f 5f 94 6a 18 25 00 00 .....X509_Name.__getattr__.j.%..
51200 4d 4c 01 4d 56 01 87 94 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 73 65 74 61 74 74 72 5f 5f 94 ML.MV.....X509_Name.__setattr__.
51220 6a 18 25 00 00 4d 58 01 4d 63 01 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 6c 65 6e 5f 5f j.%..MX.Mc.....X509_Name.__len__
51240 94 6a 18 25 00 00 4d 65 01 4d 67 01 87 94 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 5f 5f 67 65 74 69 .j.%..Me.Mg.....X509_Name.__geti
51260 74 65 6d 5f 5f 94 6a 18 25 00 00 4d 69 01 4d 6d 01 87 94 8c 12 58 35 30 39 5f 4e 61 6d 65 2e 5f tem__.j.%..Mi.Mm.....X509_Name._
51280 5f 69 74 65 72 5f 5f 94 6a 18 25 00 00 4d 6f 01 4d 71 01 87 94 8c 0e 58 35 30 39 5f 4e 61 6d 65 _iter__.j.%..Mo.Mq.....X509_Name
512a0 2e 5f 70 74 72 94 6a 18 25 00 00 4d 73 01 4d 76 01 87 94 8c 1a 58 35 30 39 5f 4e 61 6d 65 2e 61 ._ptr.j.%..Ms.Mv.....X509_Name.a
512c0 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 78 74 94 6a 18 25 00 00 4d 78 01 4d 97 01 87 94 8c 15 58 dd_entry_by_txt.j.%..Mx.M......X
512e0 35 30 39 5f 4e 61 6d 65 2e 65 6e 74 72 79 5f 63 6f 75 6e 74 94 6a 18 25 00 00 4d 99 01 4d 9b 01 509_Name.entry_count.j.%..M..M..
51300 87 94 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 79 5f 6e 69 64 ....X509_Name.get_entries_by_nid
51320 94 6a 18 25 00 00 4d 9d 01 4d b1 01 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 74 65 78 .j.%..M..M......X509_Name.as_tex
51340 74 94 6a 18 25 00 00 4d b3 01 4d c0 01 87 94 8c 10 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 t.j.%..M..M......X509_Name.as_de
51360 72 94 6a 18 25 00 00 4d c2 01 4d c6 01 87 94 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 68 61 r.j.%..M..M......X509_Name.as_ha
51380 73 68 94 6a 18 25 00 00 4d c8 01 4d cc 01 87 94 8c 09 58 35 30 39 5f 4e 61 6d 65 94 6a 37 02 00 sh.j.%..M..M......X509_Name.j7..
513a0 00 4d 17 01 4d cc 01 87 94 8c 0d 58 35 30 39 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d d6 .M..M......X509.__init__.j.%..M.
513c0 01 4d e3 01 87 94 8c 0c 58 35 30 39 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d e5 01 4d e8 01 .M......X509.__del__.j.%..M..M..
513e0 87 94 8c 09 58 35 30 39 2e 5f 70 74 72 94 6a 18 25 00 00 4d ea 01 4d ed 01 87 94 8c 0c 58 35 30 ....X509._ptr.j.%..M..M......X50
51400 39 2e 61 73 5f 74 65 78 74 94 6a 18 25 00 00 4d ef 01 4d f4 01 87 94 8c 0b 58 35 30 39 2e 61 73 9.as_text.j.%..M..M......X509.as
51420 5f 64 65 72 94 6a 18 25 00 00 4d f6 01 4d f9 01 87 94 8c 0b 58 35 30 39 2e 61 73 5f 70 65 6d 94 _der.j.%..M..M......X509.as_pem.
51440 6a 18 25 00 00 4d fb 01 4d ff 01 87 94 8c 0d 58 35 30 39 2e 73 61 76 65 5f 70 65 6d 94 6a 18 25 j.%..M..M......X509.save_pem.j.%
51460 00 00 4d 01 02 4d 08 02 87 94 8c 09 58 35 30 39 2e 73 61 76 65 94 6a 18 25 00 00 4d 0a 02 4d 20 ..M..M......X509.save.j.%..M..M.
51480 02 87 94 8c 10 58 35 30 39 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a 18 25 00 00 4d 22 02 4d 2b .....X509.set_version.j.%..M".M+
514a0 02 87 94 8c 13 58 35 30 39 2e 73 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 18 25 00 00 4d 2d .....X509.set_not_before.j.%..M-
514c0 02 4d 33 02 87 94 8c 12 58 35 30 39 2e 73 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 18 25 00 00 .M3.....X509.set_not_after.j.%..
514e0 4d 35 02 4d 3b 02 87 94 8c 15 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 M5.M;.....X509.set_subject_name.
51500 6a 18 25 00 00 4d 3d 02 4d 43 02 87 94 8c 14 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 5f 6e j.%..M=.MC.....X509.set_issuer_n
51520 61 6d 65 94 6a 18 25 00 00 4d 45 02 4d 4b 02 87 94 8c 10 58 35 30 39 2e 67 65 74 5f 76 65 72 73 ame.j.%..ME.MK.....X509.get_vers
51540 69 6f 6e 94 6a 18 25 00 00 4d 4d 02 4d 50 02 87 94 8c 16 58 35 30 39 2e 67 65 74 5f 73 65 72 69 ion.j.%..MM.MP.....X509.get_seri
51560 61 6c 5f 6e 75 6d 62 65 72 94 6a 18 25 00 00 4d 52 02 4d 56 02 87 94 8c 16 58 35 30 39 2e 73 65 al_number.j.%..MR.MV.....X509.se
51580 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 18 25 00 00 4d 58 02 4d 65 02 87 94 8c 13 58 t_serial_number.j.%..MX.Me.....X
515a0 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 18 25 00 00 4d 6b 02 4d 6e 02 87 94 509.get_not_before.j.%..Mk.Mn...
515c0 8c 12 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 18 25 00 00 4d 70 02 4d 79 02 ..X509.get_not_after.j.%..Mp.My.
515e0 87 94 8c 0f 58 35 30 39 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 18 25 00 00 4d 7b 02 4d 7e 02 87 ....X509.get_pubkey.j.%..M{.M~..
51600 94 8c 0f 58 35 30 39 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 18 25 00 00 4d 80 02 4d 8a 02 87 94 ...X509.set_pubkey.j.%..M..M....
51620 8c 0f 58 35 30 39 2e 67 65 74 5f 69 73 73 75 65 72 94 6a 18 25 00 00 4d 8c 02 4d 8f 02 87 94 8c ..X509.get_issuer.j.%..M..M.....
51640 0f 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 94 6a 18 25 00 00 4d 91 02 4d 9b 02 87 94 8c 10 .X509.set_issuer.j.%..M..M......
51660 58 35 30 39 2e 67 65 74 5f 73 75 62 6a 65 63 74 94 6a 18 25 00 00 4d 9d 02 4d a0 02 87 94 8c 10 X509.get_subject.j.%..M..M......
51680 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 94 6a 18 25 00 00 4d a2 02 4d ac 02 87 94 8c 0c X509.set_subject.j.%..M..M......
516a0 58 35 30 39 2e 61 64 64 5f 65 78 74 94 6a 18 25 00 00 4d ae 02 4d b8 02 87 94 8c 0c 58 35 30 39 X509.add_ext.j.%..M..M......X509
516c0 2e 67 65 74 5f 65 78 74 94 6a 18 25 00 00 4d ba 02 4d ce 02 87 94 8c 0f 58 35 30 39 2e 67 65 74 .get_ext.j.%..M..M......X509.get
516e0 5f 65 78 74 5f 61 74 94 6a 18 25 00 00 4d d0 02 4d dd 02 87 94 8c 12 58 35 30 39 2e 67 65 74 5f _ext_at.j.%..M..M......X509.get_
51700 65 78 74 5f 63 6f 75 6e 74 94 6a 18 25 00 00 4d df 02 4d e4 02 87 94 8c 09 58 35 30 39 2e 73 69 ext_count.j.%..M..M......X509.si
51720 67 6e 94 6a 18 25 00 00 4d e6 02 4d f6 02 87 94 8c 0b 58 35 30 39 2e 76 65 72 69 66 79 94 6a 18 gn.j.%..M..M......X509.verify.j.
51740 25 00 00 4d f8 02 4d fe 02 87 94 8c 0d 58 35 30 39 2e 63 68 65 63 6b 5f 63 61 94 6a 18 25 00 00 %..M..M......X509.check_ca.j.%..
51760 4d 00 03 4d 09 03 87 94 8c 12 58 35 30 39 2e 63 68 65 63 6b 5f 70 75 72 70 6f 73 65 94 6a 18 25 M..M......X509.check_purpose.j.%
51780 00 00 4d 0b 03 4d 17 03 87 94 8c 14 58 35 30 39 2e 67 65 74 5f 66 69 6e 67 65 72 70 72 69 6e 74 ..M..M......X509.get_fingerprint
517a0 94 6a 18 25 00 00 4d 19 03 4d 26 03 87 94 8c 04 58 35 30 39 94 6a 37 02 00 00 4d cf 01 4d 26 03 .j.%..M..M&.....X509.j7...M..M&.
517c0 87 94 8c 09 6c 6f 61 64 5f 63 65 72 74 94 6a 18 25 00 00 4d 29 03 4d 3e 03 87 94 8c 0d 6c 6f 61 ....load_cert.j.%..M).M>.....loa
517e0 64 5f 63 65 72 74 5f 62 69 6f 94 6a 18 25 00 00 4d 41 03 4d 55 03 87 94 8c 10 6c 6f 61 64 5f 63 d_cert_bio.j.%..MA.MU.....load_c
51800 65 72 74 5f 73 74 72 69 6e 67 94 6a 18 25 00 00 4d 58 03 4d 67 03 87 94 8c 14 6c 6f 61 64 5f 63 ert_string.j.%..MX.Mg.....load_c
51820 65 72 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 18 25 00 00 4d 6a 03 4d 76 03 87 94 8c 1b 58 35 ert_der_string.j.%..Mj.Mv.....X5
51840 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 09_Store_Context.__init__.j.%..M
51860 80 03 4d 88 03 87 94 8c 1a 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 5f 5f 64 65 ..M......X509_Store_Context.__de
51880 6c 5f 5f 94 6a 18 25 00 00 4d 8a 03 4d 90 03 87 94 8c 17 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f l__.j.%..M..M......X509_Store_Co
518a0 6e 74 65 78 74 2e 5f 70 74 72 94 6a 18 25 00 00 4d 92 03 4d 93 03 87 94 8c 23 58 35 30 39 5f 53 ntext._ptr.j.%..M..M.....#X509_S
518c0 74 6f 72 65 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 18 tore_Context.get_current_cert.j.
518e0 25 00 00 4d 95 03 4d 9e 03 87 94 8c 1c 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e %..M..M......X509_Store_Context.
51900 67 65 74 5f 65 72 72 6f 72 94 6a 18 25 00 00 4d a0 03 4d a5 03 87 94 8c 22 58 35 30 39 5f 53 74 get_error.j.%..M..M....."X509_St
51920 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 18 25 00 ore_Context.get_error_depth.j.%.
51940 00 4d a7 03 4d ac 03 87 94 8c 1d 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 65 78 74 2e 67 65 .M..M......X509_Store_Context.ge
51960 74 31 5f 63 68 61 69 6e 94 6a 18 25 00 00 4d ae 03 4d b6 03 87 94 8c 12 58 35 30 39 5f 53 74 6f t1_chain.j.%..M..M......X509_Sto
51980 72 65 5f 43 6f 6e 74 65 78 74 94 6a 37 02 00 00 4d 79 03 4d b6 03 87 94 8c 13 58 35 30 39 5f 53 re_Context.j7...My.M......X509_S
519a0 74 6f 72 65 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d c0 03 4d ca 03 87 94 8c 12 58 35 30 tore.__init__.j.%..M..M......X50
519c0 39 5f 53 74 6f 72 65 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d cc 03 4d cf 03 87 94 8c 0f 58 9_Store.__del__.j.%..M..M......X
519e0 35 30 39 5f 53 74 6f 72 65 2e 5f 70 74 72 94 6a 18 25 00 00 4d d1 03 4d d2 03 87 94 8c 14 58 35 509_Store._ptr.j.%..M..M......X5
51a00 30 39 5f 53 74 6f 72 65 2e 6c 6f 61 64 5f 69 6e 66 6f 94 6a 18 25 00 00 4d d4 03 4d dc 03 87 94 09_Store.load_info.j.%..M..M....
51a20 8c 13 58 35 30 39 5f 53 74 6f 72 65 2e 61 64 64 5f 78 35 30 39 94 6a 18 25 00 00 4d e0 03 4d e3 ..X509_Store.add_x509.j.%..M..M.
51a40 03 87 94 8c 18 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 5f 76 65 72 69 66 79 5f 63 62 94 6a 18 .....X509_Store.set_verify_cb.j.
51a60 25 00 00 4d e5 03 4d fe 03 87 94 8c 14 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 5f 66 6c 61 67 %..M..M......X509_Store.set_flag
51a80 73 94 6a 18 25 00 00 4d 02 04 4d 0f 04 87 94 8c 0a 58 35 30 39 5f 53 74 6f 72 65 94 6a 37 02 00 s.j.%..M..M......X509_Store.j7..
51aa0 00 4d b9 03 4d 0f 04 87 94 8c 13 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 69 6e 69 74 5f 5f 94 6a .M..M......X509_Stack.__init__.j
51ac0 18 25 00 00 4d 20 04 4d 2d 04 87 94 8c 12 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 64 65 6c 5f 5f .%..M..M-.....X509_Stack.__del__
51ae0 94 6a 18 25 00 00 4d 2f 04 4d 32 04 87 94 8c 12 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 6c 65 6e .j.%..M/.M2.....X509_Stack.__len
51b00 5f 5f 94 6a 18 25 00 00 4d 34 04 4d 37 04 87 94 8c 16 58 35 30 39 5f 53 74 61 63 6b 2e 5f 5f 67 __.j.%..M4.M7.....X509_Stack.__g
51b20 65 74 69 74 65 6d 5f 5f 94 6a 18 25 00 00 4d 39 04 4d 3b 04 87 94 8c 13 58 35 30 39 5f 53 74 61 etitem__.j.%..M9.M;.....X509_Sta
51b40 63 6b 2e 5f 5f 69 74 65 72 5f 5f 94 6a 18 25 00 00 4d 3d 04 4d 3e 04 87 94 8c 0f 58 35 30 39 5f ck.__iter__.j.%..M=.M>.....X509_
51b60 53 74 61 63 6b 2e 5f 70 74 72 94 6a 18 25 00 00 4d 40 04 4d 41 04 87 94 8c 0f 58 35 30 39 5f 53 Stack._ptr.j.%..M@.MA.....X509_S
51b80 74 61 63 6b 2e 70 75 73 68 94 6a 18 25 00 00 4d 43 04 4d 50 04 87 94 8c 0e 58 35 30 39 5f 53 74 tack.push.j.%..MC.MP.....X509_St
51ba0 61 63 6b 2e 70 6f 70 94 6a 18 25 00 00 4d 52 04 4d 5e 04 87 94 8c 11 58 35 30 39 5f 53 74 61 63 ack.pop.j.%..MR.M^.....X509_Stac
51bc0 6b 2e 61 73 5f 64 65 72 94 6a 18 25 00 00 4d 60 04 4d 65 04 87 94 8c 0a 58 35 30 39 5f 53 74 61 k.as_der.j.%..M`.Me.....X509_Sta
51be0 63 6b 94 6a 37 02 00 00 4d 12 04 4d 65 04 87 94 8c 12 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d ck.j7...M..Me.....new_stack_from
51c00 5f 64 65 72 94 6a 18 25 00 00 4d 68 04 4d 71 04 87 94 8c 10 52 65 71 75 65 73 74 2e 5f 5f 69 6e _der.j.%..Mh.Mq.....Request.__in
51c20 69 74 5f 5f 94 6a 18 25 00 00 4d 7b 04 4d 83 04 87 94 8c 0f 52 65 71 75 65 73 74 2e 5f 5f 64 65 it__.j.%..M{.M......Request.__de
51c40 6c 5f 5f 94 6a 18 25 00 00 4d 85 04 4d 88 04 87 94 8c 0f 52 65 71 75 65 73 74 2e 61 73 5f 74 65 l__.j.%..M..M......Request.as_te
51c60 78 74 94 6a 18 25 00 00 4d 8a 04 4d 8e 04 87 94 8c 0e 52 65 71 75 65 73 74 2e 61 73 5f 70 65 6d xt.j.%..M..M......Request.as_pem
51c80 94 6a 18 25 00 00 4d 90 04 4d 94 04 87 94 8c 0e 52 65 71 75 65 73 74 2e 61 73 5f 64 65 72 94 6a .j.%..M..M......Request.as_der.j
51ca0 18 25 00 00 4d 96 04 4d 9a 04 87 94 8c 10 52 65 71 75 65 73 74 2e 73 61 76 65 5f 70 65 6d 94 6a .%..M..M......Request.save_pem.j
51cc0 18 25 00 00 4d 9c 04 4d 9f 04 87 94 8c 0c 52 65 71 75 65 73 74 2e 73 61 76 65 94 6a 18 25 00 00 .%..M..M......Request.save.j.%..
51ce0 4d a1 04 4d b8 04 87 94 8c 12 52 65 71 75 65 73 74 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 18 25 M..M......Request.get_pubkey.j.%
51d00 00 00 4d ba 04 4d c1 04 87 94 8c 12 52 65 71 75 65 73 74 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a ..M..M......Request.set_pubkey.j
51d20 18 25 00 00 4d c3 04 4d cc 04 87 94 8c 13 52 65 71 75 65 73 74 2e 67 65 74 5f 76 65 72 73 69 6f .%..M..M......Request.get_versio
51d40 6e 94 6a 18 25 00 00 4d ce 04 4d d5 04 87 94 8c 13 52 65 71 75 65 73 74 2e 73 65 74 5f 76 65 72 n.j.%..M..M......Request.set_ver
51d60 73 69 6f 6e 94 6a 18 25 00 00 4d d7 04 4d df 04 87 94 8c 13 52 65 71 75 65 73 74 2e 67 65 74 5f sion.j.%..M..M......Request.get_
51d80 73 75 62 6a 65 63 74 94 6a 18 25 00 00 4d e1 04 4d e3 04 87 94 8c 18 52 65 71 75 65 73 74 2e 73 subject.j.%..M..M......Request.s
51da0 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 18 25 00 00 4d e5 04 4d ed 04 87 94 8c 16 52 et_subject_name.j.%..M..M......R
51dc0 65 71 75 65 73 74 2e 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 94 6a 18 25 00 00 4d f1 04 4d f9 equest.add_extensions.j.%..M..M.
51de0 04 87 94 8c 0e 52 65 71 75 65 73 74 2e 76 65 72 69 66 79 94 6a 18 25 00 00 4d fb 04 4d 02 05 87 .....Request.verify.j.%..M..M...
51e00 94 8c 0c 52 65 71 75 65 73 74 2e 73 69 67 6e 94 6a 18 25 00 00 4d 04 05 4d 0f 05 87 94 8c 07 52 ...Request.sign.j.%..M..M......R
51e20 65 71 75 65 73 74 94 6a 37 02 00 00 4d 74 04 4d 0f 05 87 94 8c 0c 6c 6f 61 64 5f 72 65 71 75 65 equest.j7...Mt.M......load_reque
51e40 73 74 94 6a 18 25 00 00 4d 12 05 4d 27 05 87 94 8c 10 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 st.j.%..M..M'.....load_request_b
51e60 69 6f 94 6a 18 25 00 00 4d 2a 05 4d 3e 05 87 94 8c 13 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 io.j.%..M*.M>.....load_request_s
51e80 74 72 69 6e 67 94 6a 18 25 00 00 4d 41 05 4d 50 05 87 94 8c 17 6c 6f 61 64 5f 72 65 71 75 65 73 tring.j.%..MA.MP.....load_reques
51ea0 74 5f 64 65 72 5f 73 74 72 69 6e 67 94 6a 18 25 00 00 4d 53 05 4d 5d 05 87 94 8c 0c 43 52 4c 2e t_der_string.j.%..MS.M].....CRL.
51ec0 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 67 05 4d 73 05 87 94 8c 0b 43 52 4c 2e 5f 5f 64 65 __init__.j.%..Mg.Ms.....CRL.__de
51ee0 6c 5f 5f 94 6a 18 25 00 00 4d 75 05 4d 78 05 87 94 8c 0b 43 52 4c 2e 61 73 5f 74 65 78 74 94 6a l__.j.%..Mu.Mx.....CRL.as_text.j
51f00 18 25 00 00 4d 7a 05 4d 83 05 87 94 8c 03 43 52 4c 94 6a 37 02 00 00 4d 60 05 4d 83 05 87 94 8c .%..Mz.M......CRL.j7...M`.M.....
51f20 08 6c 6f 61 64 5f 63 72 6c 94 6a 18 25 00 00 4d 86 05 4d 92 05 87 94 75 7d 94 28 8c 03 43 52 4c .load_crl.j.%..M..M....u}.(..CRL
51f40 94 6a 60 02 00 00 8c 0b 43 52 4c 2e 61 73 5f 74 65 78 74 94 6a 60 02 00 00 8c 07 52 65 71 75 65 .j`.....CRL.as_text.j`.....Reque
51f60 73 74 94 6a 60 02 00 00 8c 16 52 65 71 75 65 73 74 2e 61 64 64 5f 65 78 74 65 6e 73 69 6f 6e 73 st.j`.....Request.add_extensions
51f80 94 6a 60 02 00 00 8c 0e 52 65 71 75 65 73 74 2e 61 73 5f 64 65 72 94 6a 60 02 00 00 8c 0e 52 65 .j`.....Request.as_der.j`.....Re
51fa0 71 75 65 73 74 2e 61 73 5f 70 65 6d 94 6a 60 02 00 00 8c 0f 52 65 71 75 65 73 74 2e 61 73 5f 74 quest.as_pem.j`.....Request.as_t
51fc0 65 78 74 94 6a 60 02 00 00 8c 12 52 65 71 75 65 73 74 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 60 ext.j`.....Request.get_pubkey.j`
51fe0 02 00 00 8c 13 52 65 71 75 65 73 74 2e 67 65 74 5f 73 75 62 6a 65 63 74 94 6a 60 02 00 00 8c 13 .....Request.get_subject.j`.....
52000 52 65 71 75 65 73 74 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 60 02 00 00 8c 0c 52 65 71 75 65 Request.get_version.j`.....Reque
52020 73 74 2e 73 61 76 65 94 6a 60 02 00 00 8c 10 52 65 71 75 65 73 74 2e 73 61 76 65 5f 70 65 6d 94 st.save.j`.....Request.save_pem.
52040 6a 60 02 00 00 8c 12 52 65 71 75 65 73 74 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a 60 02 00 00 8c j`.....Request.set_pubkey.j`....
52060 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 94 6a 60 02 00 00 8c .Request.set_subject_name.j`....
52080 13 52 65 71 75 65 73 74 2e 73 65 74 5f 76 65 72 73 69 6f 6e 94 6a 60 02 00 00 8c 0c 52 65 71 75 .Request.set_version.j`.....Requ
520a0 65 73 74 2e 73 69 67 6e 94 6a 60 02 00 00 8c 0e 52 65 71 75 65 73 74 2e 76 65 72 69 66 79 94 6a est.sign.j`.....Request.verify.j
520c0 60 02 00 00 8c 04 58 35 30 39 94 6a 60 02 00 00 8c 0c 58 35 30 39 2e 61 64 64 5f 65 78 74 94 6a `.....X509.j`.....X509.add_ext.j
520e0 60 02 00 00 8c 0b 58 35 30 39 2e 61 73 5f 64 65 72 94 6a 60 02 00 00 8c 0b 58 35 30 39 2e 61 73 `.....X509.as_der.j`.....X509.as
52100 5f 70 65 6d 94 6a 60 02 00 00 8c 0c 58 35 30 39 2e 61 73 5f 74 65 78 74 94 6a 60 02 00 00 8c 0d _pem.j`.....X509.as_text.j`.....
52120 58 35 30 39 2e 63 68 65 63 6b 5f 63 61 94 6a 60 02 00 00 8c 12 58 35 30 39 2e 63 68 65 63 6b 5f X509.check_ca.j`.....X509.check_
52140 70 75 72 70 6f 73 65 94 6a 60 02 00 00 8c 0c 58 35 30 39 2e 67 65 74 5f 65 78 74 94 6a 60 02 00 purpose.j`.....X509.get_ext.j`..
52160 00 8c 0f 58 35 30 39 2e 67 65 74 5f 65 78 74 5f 61 74 94 6a 60 02 00 00 8c 12 58 35 30 39 2e 67 ...X509.get_ext_at.j`.....X509.g
52180 65 74 5f 65 78 74 5f 63 6f 75 6e 74 94 6a 60 02 00 00 8c 14 58 35 30 39 2e 67 65 74 5f 66 69 6e et_ext_count.j`.....X509.get_fin
521a0 67 65 72 70 72 69 6e 74 94 6a 60 02 00 00 8c 0f 58 35 30 39 2e 67 65 74 5f 69 73 73 75 65 72 94 gerprint.j`.....X509.get_issuer.
521c0 6a 60 02 00 00 8c 12 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 60 02 00 00 8c j`.....X509.get_not_after.j`....
521e0 13 58 35 30 39 2e 67 65 74 5f 6e 6f 74 5f 62 65 66 6f 72 65 94 6a 60 02 00 00 8c 0f 58 35 30 39 .X509.get_not_before.j`.....X509
52200 2e 67 65 74 5f 70 75 62 6b 65 79 94 6a 60 02 00 00 8c 16 58 35 30 39 2e 67 65 74 5f 73 65 72 69 .get_pubkey.j`.....X509.get_seri
52220 61 6c 5f 6e 75 6d 62 65 72 94 6a 60 02 00 00 8c 10 58 35 30 39 2e 67 65 74 5f 73 75 62 6a 65 63 al_number.j`.....X509.get_subjec
52240 74 94 6a 60 02 00 00 8c 10 58 35 30 39 2e 67 65 74 5f 76 65 72 73 69 6f 6e 94 6a 60 02 00 00 8c t.j`.....X509.get_version.j`....
52260 09 58 35 30 39 2e 73 61 76 65 94 6a 60 02 00 00 8c 0d 58 35 30 39 2e 73 61 76 65 5f 70 65 6d 94 .X509.save.j`.....X509.save_pem.
52280 6a 60 02 00 00 8c 0f 58 35 30 39 2e 73 65 74 5f 69 73 73 75 65 72 94 6a 60 02 00 00 8c 14 58 35 j`.....X509.set_issuer.j`.....X5
522a0 30 39 2e 73 65 74 5f 69 73 73 75 65 72 5f 6e 61 6d 65 94 6a 60 02 00 00 8c 12 58 35 30 39 2e 73 09.set_issuer_name.j`.....X509.s
522c0 65 74 5f 6e 6f 74 5f 61 66 74 65 72 94 6a 60 02 00 00 8c 13 58 35 30 39 2e 73 65 74 5f 6e 6f 74 et_not_after.j`.....X509.set_not
522e0 5f 62 65 66 6f 72 65 94 6a 60 02 00 00 8c 0f 58 35 30 39 2e 73 65 74 5f 70 75 62 6b 65 79 94 6a _before.j`.....X509.set_pubkey.j
52300 60 02 00 00 8c 16 58 35 30 39 2e 73 65 74 5f 73 65 72 69 61 6c 5f 6e 75 6d 62 65 72 94 6a 60 02 `.....X509.set_serial_number.j`.
52320 00 00 8c 10 58 35 30 39 2e 73 65 74 5f 73 75 62 6a 65 63 74 94 6a 60 02 00 00 8c 15 58 35 30 39 ....X509.set_subject.j`.....X509
52340 2e 73 65 74 5f 73 75 62 6a 65 63 74 5f 6e 61 6d 65 94 6a 60 02 00 00 8c 10 58 35 30 39 2e 73 65 .set_subject_name.j`.....X509.se
52360 74 5f 76 65 72 73 69 6f 6e 94 6a 60 02 00 00 8c 09 58 35 30 39 2e 73 69 67 6e 94 6a 60 02 00 00 t_version.j`.....X509.sign.j`...
52380 8c 0b 58 35 30 39 2e 76 65 72 69 66 79 94 6a 60 02 00 00 6a 3b 17 00 00 6a 60 02 00 00 8c 0e 58 ..X509.verify.j`...j;...j`.....X
523a0 35 30 39 5f 45 78 74 65 6e 73 69 6f 6e 94 6a 60 02 00 00 8c 1b 58 35 30 39 5f 45 78 74 65 6e 73 509_Extension.j`.....X509_Extens
523c0 69 6f 6e 2e 67 65 74 5f 63 72 69 74 69 63 61 6c 94 6a 60 02 00 00 8c 17 58 35 30 39 5f 45 78 74 ion.get_critical.j`.....X509_Ext
523e0 65 6e 73 69 6f 6e 2e 67 65 74 5f 6e 61 6d 65 94 6a 60 02 00 00 8c 18 58 35 30 39 5f 45 78 74 65 ension.get_name.j`.....X509_Exte
52400 6e 73 69 6f 6e 2e 67 65 74 5f 76 61 6c 75 65 94 6a 60 02 00 00 8c 1b 58 35 30 39 5f 45 78 74 65 nsion.get_value.j`.....X509_Exte
52420 6e 73 69 6f 6e 2e 73 65 74 5f 63 72 69 74 69 63 61 6c 94 6a 60 02 00 00 8c 14 58 35 30 39 5f 45 nsion.set_critical.j`.....X509_E
52440 78 74 65 6e 73 69 6f 6e 5f 53 74 61 63 6b 94 6a 60 02 00 00 8c 18 58 35 30 39 5f 45 78 74 65 6e xtension_Stack.j`.....X509_Exten
52460 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 60 02 00 00 8c 19 58 35 30 39 5f 45 78 74 65 6e sion_Stack.pop.j`.....X509_Exten
52480 73 69 6f 6e 5f 53 74 61 63 6b 2e 70 75 73 68 94 6a 60 02 00 00 8c 09 58 35 30 39 5f 4e 61 6d 65 sion_Stack.push.j`.....X509_Name
524a0 94 6a 60 02 00 00 8c 1a 58 35 30 39 5f 4e 61 6d 65 2e 61 64 64 5f 65 6e 74 72 79 5f 62 79 5f 74 .j`.....X509_Name.add_entry_by_t
524c0 78 74 94 6a 60 02 00 00 8c 10 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 64 65 72 94 6a 60 02 00 00 xt.j`.....X509_Name.as_der.j`...
524e0 8c 11 58 35 30 39 5f 4e 61 6d 65 2e 61 73 5f 68 61 73 68 94 6a 60 02 00 00 8c 11 58 35 30 39 5f ..X509_Name.as_hash.j`.....X509_
52500 4e 61 6d 65 2e 61 73 5f 74 65 78 74 94 6a 60 02 00 00 8c 15 58 35 30 39 5f 4e 61 6d 65 2e 65 6e Name.as_text.j`.....X509_Name.en
52520 74 72 79 5f 63 6f 75 6e 74 94 6a 60 02 00 00 8c 1c 58 35 30 39 5f 4e 61 6d 65 2e 67 65 74 5f 65 try_count.j`.....X509_Name.get_e
52540 6e 74 72 69 65 73 5f 62 79 5f 6e 69 64 94 6a 60 02 00 00 8c 0f 58 35 30 39 5f 4e 61 6d 65 5f 45 ntries_by_nid.j`.....X509_Name_E
52560 6e 74 72 79 94 6a 60 02 00 00 8c 1d 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 2e 63 72 65 61 ntry.j`.....X509_Name_Entry.crea
52580 74 65 5f 62 79 5f 74 78 74 94 6a 60 02 00 00 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 te_by_txt.j`.....X509_Name_Entry
525a0 2e 67 65 74 5f 64 61 74 61 94 6a 60 02 00 00 8c 1a 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 72 79 .get_data.j`.....X509_Name_Entry
525c0 2e 67 65 74 5f 6f 62 6a 65 63 74 94 6a 60 02 00 00 8c 18 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 .get_object.j`.....X509_Name_Ent
525e0 72 79 2e 73 65 74 5f 64 61 74 61 94 6a 60 02 00 00 8c 1a 58 35 30 39 5f 4e 61 6d 65 5f 45 6e 74 ry.set_data.j`.....X509_Name_Ent
52600 72 79 2e 73 65 74 5f 6f 62 6a 65 63 74 94 6a 60 02 00 00 8c 0a 58 35 30 39 5f 53 74 61 63 6b 94 ry.set_object.j`.....X509_Stack.
52620 6a 60 02 00 00 8c 11 58 35 30 39 5f 53 74 61 63 6b 2e 61 73 5f 64 65 72 94 6a 60 02 00 00 8c 0e j`.....X509_Stack.as_der.j`.....
52640 58 35 30 39 5f 53 74 61 63 6b 2e 70 6f 70 94 6a 60 02 00 00 8c 0f 58 35 30 39 5f 53 74 61 63 6b X509_Stack.pop.j`.....X509_Stack
52660 2e 70 75 73 68 94 6a 60 02 00 00 8c 0a 58 35 30 39 5f 53 74 6f 72 65 94 6a 60 02 00 00 8c 13 58 .push.j`.....X509_Store.j`.....X
52680 35 30 39 5f 53 74 6f 72 65 2e 61 64 64 5f 78 35 30 39 94 6a 60 02 00 00 8c 14 58 35 30 39 5f 53 509_Store.add_x509.j`.....X509_S
526a0 74 6f 72 65 2e 6c 6f 61 64 5f 69 6e 66 6f 94 6a 60 02 00 00 8c 14 58 35 30 39 5f 53 74 6f 72 65 tore.load_info.j`.....X509_Store
526c0 2e 73 65 74 5f 66 6c 61 67 73 94 6a 60 02 00 00 8c 18 58 35 30 39 5f 53 74 6f 72 65 2e 73 65 74 .set_flags.j`.....X509_Store.set
526e0 5f 76 65 72 69 66 79 5f 63 62 94 6a 60 02 00 00 8c 12 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e _verify_cb.j`.....X509_Store_Con
52700 74 65 78 74 94 6a 60 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 text.j`.....X509_Store_Context.g
52720 65 74 31 5f 63 68 61 69 6e 94 6a 60 02 00 00 8c 23 58 35 30 39 5f 53 74 6f 72 65 5f 43 6f 6e 74 et1_chain.j`....#X509_Store_Cont
52740 65 78 74 2e 67 65 74 5f 63 75 72 72 65 6e 74 5f 63 65 72 74 94 6a 60 02 00 00 8c 1c 58 35 30 39 ext.get_current_cert.j`.....X509
52760 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 60 02 00 00 8c 22 _Store_Context.get_error.j`...."
52780 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 5f 64 65 70 X509_Store_Context.get_error_dep
527a0 74 68 94 6a 60 02 00 00 8c 09 6c 6f 61 64 5f 63 65 72 74 94 6a 60 02 00 00 8c 0d 6c 6f 61 64 5f th.j`.....load_cert.j`.....load_
527c0 63 65 72 74 5f 62 69 6f 94 6a 60 02 00 00 8c 14 6c 6f 61 64 5f 63 65 72 74 5f 64 65 72 5f 73 74 cert_bio.j`.....load_cert_der_st
527e0 72 69 6e 67 94 6a 60 02 00 00 8c 10 6c 6f 61 64 5f 63 65 72 74 5f 73 74 72 69 6e 67 94 6a 60 02 ring.j`.....load_cert_string.j`.
52800 00 00 8c 08 6c 6f 61 64 5f 63 72 6c 94 6a 60 02 00 00 8c 0c 6c 6f 61 64 5f 72 65 71 75 65 73 74 ....load_crl.j`.....load_request
52820 94 6a 60 02 00 00 8c 10 6c 6f 61 64 5f 72 65 71 75 65 73 74 5f 62 69 6f 94 6a 60 02 00 00 8c 17 .j`.....load_request_bio.j`.....
52840 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 60 02 00 00 8c 13 6c load_request_der_string.j`.....l
52860 6f 61 64 5f 72 65 71 75 65 73 74 5f 73 74 72 69 6e 67 94 6a 60 02 00 00 8c 0d 6e 65 77 5f 65 78 oad_request_string.j`.....new_ex
52880 74 65 6e 73 69 6f 6e 94 6a 60 02 00 00 8c 12 6e 65 77 5f 73 74 61 63 6b 5f 66 72 6f 6d 5f 64 65 tension.j`.....new_stack_from_de
528a0 72 94 6a 60 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 r.j`.....x509_store_default_cb.j
528c0 60 02 00 00 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 `...u..M2Crypto.X509.t...M2Crypt
528e0 6f 2e 66 74 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 o.ftpslib.(X....from.__future__.
52900 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 79 import.absolute_import.."""M2Cry
52920 70 74 6f 20 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 pto.client-side.FTP/TLS...This.i
52940 6d 70 6c 65 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 mplementation.complies.with.draf
52960 74 2d 6d 75 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 t-murray-auth-ftp-ssl-07.txt...E
52980 78 61 6d 70 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 xample:..>>>.from.M2Crypto.impor
529a0 74 20 66 74 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 t.ftpslib.>>>.f.=.ftpslib.FTP_TL
529c0 53 28 29 0a 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 S().>>>.f.connect('',.9021).'220
529e0 20 73 70 69 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 .spinnaker.dyndns.org.M2Crypto.(
52a00 4d 65 64 75 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 Medusa).FTP/TLS.server.v0.07.rea
52a20 64 79 2e 27 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 dy.'.>>>.f.auth_tls().>>>.f.set_
52a40 70 61 73 76 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 pasv(0).>>>.f.login('ftp',.'ngps
52a60 40 27 29 0a 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 @').'230.Ok.'.>>>.f.retrlines('L
52a80 49 53 54 27 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 IST').-rw-rw-r--...1.0........19
52aa0 38 20 20 20 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 8..........2326.Jul..3..1996.apa
52ac0 63 68 65 5f 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 che_pb.gif.drwxrwxr-x...7.0.....
52ae0 20 20 20 31 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 ...198..........1536.Oct.10..200
52b00 30 20 6d 61 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 0.manual.drwxrwxr-x...2.0.......
52b20 20 31 39 38 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 .198...........512.Oct.31..2000.
52b40 6d 6f 64 70 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 modpy.drwxrwxr-x...2.0........19
52b60 38 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 62 6f 62 8...........512.Oct.31..2000.bob
52b80 6f 0a 64 72 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 o.drwxr-xr-x...2.0........198...
52ba0 20 20 20 20 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 ......14336.May.28.15:54.postgre
52bc0 73 71 6c 0a 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 sql.drwxr-xr-x...4.100......198.
52be0 20 20 20 20 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 ..........512.May.16.17:19.home.
52c00 64 72 77 78 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 drwxr-xr-x...7.100......100.....
52c20 20 20 20 20 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 .....3584.Sep.23..2000.openacs.d
52c40 72 77 78 72 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 rwxr-xr-x..10.0........0........
52c60 20 20 20 20 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 .....512.Aug..5..2000.python1.5.
52c80 2d 72 77 2d 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 -rw-r--r--...1.100......198.....
52ca0 20 20 20 20 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 ......326.Jul.29.03:29.index.htm
52cc0 6c 0a 64 72 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 l.drwxr-xr-x..12.0........0.....
52ce0 20 20 20 20 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 ........512.May.31.17:08.python2
52d00 2e 31 0a 27 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 .1.'226.Transfer.complete'.>>>.f
52d20 2e 71 75 69 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 .quit().'221.Goodbye.'.>>>...Cop
52d40 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 6e 67 20 53 69 yright.(c).1999-2003.Ng.Pheng.Si
52d60 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 22 0a 0a 23 20 ong..All.rights.reserved."""..#.
52d80 57 65 20 77 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 We.want.to.import.whole.stdlib.f
52da0 74 70 6c 69 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 tplib.objects,.because.our.users
52dc0 20 77 61 6e 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 .want.#.to.use.them..from.ftplib
52de0 20 69 6d 70 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 .import.*..#.noqa..#.M2Crypto.fr
52e00 6f 6d 20 4d 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 om.M2Crypto.import.SSL...class.F
52e20 54 50 5f 54 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 TP_TLS(FTP):......"""Python.OO.i
52e40 6e 74 65 72 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 nterface.to.client-side.FTP/TLS.
52e60 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 68 6f 73 74 """......def.__init__(self,.host
52e80 3d 4e 6f 6e 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 =None,.ssl_ctx=None):.........""
52ea0 22 49 6e 69 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 "Initialise.the.client..If.'host
52ec0 27 20 69 73 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 '.is.supplied,.connect.to.it."""
52ee0 0a 20 20 20 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 .........if.ssl_ctx.is.not.None:
52f00 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 20 73 73 6c 5f .............self.ssl_ctx.=.ssl_
52f20 63 74 78 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 ctx.........else:.............se
52f40 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 20 20 lf.ssl_ctx.=.SSL.Context()......
52f60 20 20 20 46 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 ...FTP.__init__(self,.host).....
52f80 20 20 20 20 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 ....self.prot.=.0......def.auth_
52fa0 74 6c 73 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 tls(self):........."""Secure.the
52fc0 20 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 54 4c 53 .control.connection.per.AUTH.TLS
52fe0 2c 20 61 6b 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 ,.aka.AUTH.TLS-C.""".........sel
53000 66 2e 76 6f 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 f.voidcmd('AUTH.TLS').........s.
53020 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 73 =.SSL.Connection(self.ssl_ctx,.s
53040 65 6c 66 2e 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 elf.sock).........s.setup_ssl().
53060 20 20 20 20 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 ........s.set_connect_state()...
53080 20 20 20 20 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 ......s.connect_ssl().........se
530a0 6c 66 2e 73 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 lf.sock.=.s.........self.file.=.
530c0 73 65 6c 66 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 self.sock.makefile()......def.au
530e0 74 68 5f 73 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 th_ssl(self):........."""Secure.
53100 74 68 65 20 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 the.control.connection.per.AUTH.
53120 53 53 4c 2c 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 SSL,.aka.AUTH.TLS-P.""".........
53140 72 61 69 73 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 raise.NotImplementedError......d
53160 65 66 20 70 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 ef.prot_p(self):........."""Set.
53180 75 70 20 73 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 up.secure.data.connection."""...
531a0 20 20 20 20 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 ......self.voidcmd('PBSZ.0')....
531c0 20 20 20 20 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 .....self.voidcmd('PROT.P').....
531e0 20 20 20 20 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 ....self.prot.=.1......def.prot_
53200 63 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 64 61 74 61 20 c(self):........."""Set.up.data.
53220 63 6f 6e 6e 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 connection.in.the.clear.""".....
53240 20 20 20 20 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 ....self.voidcmd('PROT.C')......
53260 20 20 20 73 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 ...self.prot.=.0......def.ntrans
53280 66 65 72 63 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 fercmd(self,.cmd,.rest=None):...
532a0 20 20 20 20 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 ......"""Initiate.a.data.transfe
532c0 72 2e 22 22 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 r.""".........conn,.size.=.FTP.n
532e0 74 72 61 6e 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 transfercmd(self,.cmd,.rest)....
53300 20 20 20 20 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 .....if.self.prot:.............c
53320 6f 6e 6e 20 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 onn.=.SSL.Connection(self.ssl_ct
53340 78 2c 20 63 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 x,.conn).............conn.setup_
53360 73 73 6c 28 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 ssl().............conn.set_conne
53380 63 74 5f 73 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 ct_state().............conn.set_
533a0 73 65 73 73 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 session(self.sock.get_session())
533c0 0a 20 20 20 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 .............conn.connect_ssl().
533e0 20 20 20 20 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 ........return.conn,.size..}.(..
53400 46 54 50 5f 54 4c 53 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 30 4b 37 87 94 8c 10 46 54 FTP_TLS.__init__.j.%..K0K7....FT
53420 50 5f 54 4c 53 2e 61 75 74 68 5f 74 6c 73 94 6a 18 25 00 00 4b 39 4b 41 87 94 95 d5 57 00 00 00 P_TLS.auth_tls.j.%..K9KA....W...
53440 00 00 00 8c 10 46 54 50 5f 54 4c 53 2e 61 75 74 68 5f 73 73 6c 94 6a 18 25 00 00 4b 43 4b 45 87 .....FTP_TLS.auth_ssl.j.%..KCKE.
53460 94 8c 0e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 70 94 6a 18 25 00 00 4b 47 4b 4b 87 94 8c 0e 46 ...FTP_TLS.prot_p.j.%..KGKK....F
53480 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 63 94 6a 18 25 00 00 4b 4d 4b 50 87 94 8c 14 46 54 50 5f 54 TP_TLS.prot_c.j.%..KMKP....FTP_T
534a0 4c 53 2e 6e 74 72 61 6e 73 66 65 72 63 6d 64 94 6a 18 25 00 00 4b 52 4b 5b 87 94 8c 07 46 54 50 LS.ntransfercmd.j.%..KRK[....FTP
534c0 5f 54 4c 53 94 6a 37 02 00 00 4b 2c 4b 5b 87 94 75 7d 94 28 8c 07 46 54 50 5f 54 4c 53 94 6a 60 _TLS.j7...K,K[..u}.(..FTP_TLS.j`
534e0 02 00 00 8c 10 46 54 50 5f 54 4c 53 2e 61 75 74 68 5f 73 73 6c 94 6a 60 02 00 00 8c 10 46 54 50 .....FTP_TLS.auth_ssl.j`.....FTP
53500 5f 54 4c 53 2e 61 75 74 68 5f 74 6c 73 94 6a 60 02 00 00 8c 14 46 54 50 5f 54 4c 53 2e 6e 74 72 _TLS.auth_tls.j`.....FTP_TLS.ntr
53520 61 6e 73 66 65 72 63 6d 64 94 6a 60 02 00 00 8c 0e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 63 94 ansfercmd.j`.....FTP_TLS.prot_c.
53540 6a 60 02 00 00 8c 0e 46 54 50 5f 54 4c 53 2e 70 72 6f 74 5f 70 94 6a 60 02 00 00 75 8c 10 4d 32 j`.....FTP_TLS.prot_p.j`...u..M2
53560 43 72 79 70 74 6f 2e 66 74 70 73 6c 69 62 94 74 94 8c 11 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 Crypto.ftpslib.t...M2Crypto.http
53580 73 6c 69 62 94 28 58 11 28 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 6f 72 slib.(X.(..from.__future__.impor
535a0 74 20 61 62 73 6f 6c 75 74 65 5f 69 6d 70 6f 72 74 0a 0a 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e t.absolute_import..import.warnin
535c0 67 73 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 50 79 74 68 gs.."""M2Crypto.support.for.Pyth
535e0 6f 6e 27 73 20 68 74 74 70 6c 69 62 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 on's.httplib...Copyright.(c).199
53600 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 67 68 74 9-2004.Ng.Pheng.Siong..All.right
53620 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 34 0a 69 6d s.reserved."""..import.base64.im
53640 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 72 port.socket..from.M2Crypto.impor
53660 74 20 53 53 4c 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 t.SSL,.six.from.M2Crypto.six.mov
53680 65 73 2e 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 es.urllib_parse.import.urlsplit,
536a0 20 75 72 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 .urlunsplit.from.M2Crypto.six.mo
536c0 76 65 73 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 ves.http_client.import.*..#.noqa
536e0 0a 23 20 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 .#.This.is.not.imported.with.jus
53700 74 20 27 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 t.'*'.from.M2Crypto.six.moves.ht
53720 74 70 5f 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 66 72 6f 6d tp_client.import.HTTPS_PORT.from
53740 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 6c .typing.import.Any,.AnyStr,.Call
53760 61 62 6c 65 2c 20 44 69 63 74 2c 20 4f 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 able,.Dict,.Optional..#.noqa...c
53780 6c 61 73 73 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 48 54 54 50 43 6f 6e 6e 65 63 74 lass.HTTPSConnection(HTTPConnect
537a0 69 6f 6e 29 3a 0a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 54 68 69 73 20 63 6c 61 73 73 20 61 6c ion):......""".....This.class.al
537c0 6c 6f 77 73 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 76 69 61 20 53 53 4c 20 75 73 69 6e 67 lows.communication.via.SSL.using
537e0 20 4d 32 43 72 79 70 74 6f 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 61 75 6c 74 5f .M2Crypto......"""......default_
53800 70 6f 72 74 20 3d 20 48 54 54 50 53 5f 50 4f 52 54 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 port.=.HTTPS_PORT......def.__ini
53820 74 5f 5f 28 73 65 6c 66 2c 20 68 6f 73 74 2c 20 70 6f 72 74 3d 4e 6f 6e 65 2c 20 73 74 72 69 63 t__(self,.host,.port=None,.stric
53840 74 3d 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 t=None,.**ssl):.........#.type:.
53860 28 73 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 (str,.Optional[int],.Optional[bo
53880 6f 6c 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 22 0a ol],.**Any).->.None.........""".
538a0 20 20 20 20 20 20 20 20 52 65 70 72 65 73 65 6e 74 73 20 6f 6e 65 20 74 72 61 6e 73 61 63 74 69 ........Represents.one.transacti
538c0 6f 6e 20 77 69 74 68 20 61 6e 20 48 54 54 50 20 73 65 72 76 65 72 20 6f 76 65 72 20 74 68 65 20 on.with.an.HTTP.server.over.the.
538e0 53 53 4c 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 SSL.........connection..........
53900 20 3a 70 61 72 61 6d 20 68 6f 73 74 3a 20 68 6f 73 74 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 .:param.host:.host.name.........
53920 3a 70 61 72 61 6d 20 70 6f 72 74 3a 20 70 6f 72 74 20 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 :param.port:.port.number........
53940 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 2c 20 .:param.strict:.if.switched.on,.
53960 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 20 20 it.raises.BadStatusLine.to.be...
53980 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 20 74 .....................raised.if.t
539a0 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 20 61 he.status.line.can't.be.parsed.a
539c0 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 69 64 s........................a.valid
539e0 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 20 20 .HTTP/1.0.or.1.1.status.line....
53a00 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 73 6c 3a 20 64 69 63 74 20 77 69 74 68 20 61 6c 6c 20 ......:param.ssl:.dict.with.all.
53a20 72 65 6d 61 69 6e 69 6e 67 20 6e 61 6d 65 64 20 72 65 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 remaining.named.real.parameters.
53a40 6f 66 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 66 75 6e 63 74 of.the.....................funct
53a60 69 6f 6e 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 20 60 60 73 73 6c 5f 63 6f 6e 74 65 78 74 ion..Specifically,.``ssl_context
53a80 60 60 20 69 73 20 65 78 70 65 63 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ``.is.expected..................
53aa0 20 20 20 74 6f 20 62 65 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 53 53 4c 2e 43 6f 6e 74 65 ...to.be.included.with.SSL.Conte
53ac0 78 74 3b 20 69 66 20 69 74 20 69 73 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xt;.if.it.is.not................
53ae0 20 20 20 20 20 64 65 66 61 75 6c 74 20 60 60 27 73 73 6c 76 32 33 27 60 60 20 69 73 20 73 75 62 .....default.``'sslv23'``.is.sub
53b00 73 74 69 74 75 74 65 64 29 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 stituted)..........""".........s
53b20 65 6c 66 2e 73 65 73 73 69 6f 6e 20 3d 20 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 62 79 74 65 elf.session.=.None..#.type:.byte
53b40 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 6f 73 74 20 3d 20 68 6f 73 74 0a 20 20 20 20 20 s.........self.host.=.host......
53b60 20 20 20 73 65 6c 66 2e 70 6f 72 74 20 3d 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 6b 65 79 73 ...self.port.=.port.........keys
53b80 20 3d 20 73 65 74 28 73 73 6c 2e 6b 65 79 73 28 29 29 20 2d 20 73 65 74 28 28 27 6b 65 79 5f 66 .=.set(ssl.keys()).-.set(('key_f
53ba0 69 6c 65 27 2c 20 27 63 65 72 74 5f 66 69 6c 65 27 2c 20 27 73 73 6c 5f 63 6f 6e 74 65 78 74 27 ile',.'cert_file',.'ssl_context'
53bc0 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 )).........if.keys:.............
53be0 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 6b 65 79 77 6f 72 raise.ValueError('unknown.keywor
53c00 64 20 61 72 67 75 6d 65 6e 74 3a 20 25 73 27 2c 20 6b 65 79 73 29 0a 20 20 20 20 20 20 20 20 74 d.argument:.%s',.keys).........t
53c20 72 79 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 20 73 ry:.............self.ssl_ctx.=.s
53c40 73 6c 5b 27 73 73 6c 5f 63 6f 6e 74 65 78 74 27 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 73 sl['ssl_context'].............as
53c60 73 65 72 74 20 69 73 69 6e 73 74 61 6e 63 65 28 73 65 6c 66 2e 73 73 6c 5f 63 74 78 2c 20 53 53 sert.isinstance(self.ssl_ctx,.SS
53c80 4c 2e 43 6f 6e 74 65 78 74 29 2c 20 73 65 6c 66 2e 73 73 6c 5f 63 74 78 0a 20 20 20 20 20 20 20 L.Context),.self.ssl_ctx........
53ca0 20 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 73 65 .except.KeyError:.............se
53cc0 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 20 20 lf.ssl_ctx.=.SSL.Context()......
53ce0 20 20 20 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c ...HTTPConnection.__init__(self,
53d00 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 73 74 72 69 63 74 29 0a 0a 20 20 20 20 64 65 66 20 63 6f .host,.port,.strict)......def.co
53d20 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 3a 20 28 29 20 nnect(self):.........#.type:.().
53d40 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 4e 6f 6e 65 0a 20 20 20 ->.None.........error.=.None....
53d60 20 20 20 20 20 23 20 57 65 20 69 67 6e 6f 72 65 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 73 6f .....#.We.ignore.the.returned.so
53d80 63 6b 61 64 64 72 20 62 65 63 61 75 73 65 20 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f ckaddr.because.SSL.Connection.co
53da0 6e 6e 65 63 74 20 6e 65 65 64 73 0a 20 20 20 20 20 20 20 20 23 20 61 20 68 6f 73 74 20 6e 61 6d nnect.needs.........#.a.host.nam
53dc0 65 2e 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 66 61 6d 69 6c 79 2c 20 5f 2c 20 5f 2c 20 5f 2c e..........for.(family,._,._,._,
53de0 20 5f 29 20 69 6e 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 2e ._).in.\.................socket.
53e00 67 65 74 61 64 64 72 69 6e 66 6f 28 73 65 6c 66 2e 68 6f 73 74 2c 20 73 65 6c 66 2e 70 6f 72 74 getaddrinfo(self.host,.self.port
53e20 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 20 20 20 20 20 20 20 ,.0,............................
53e40 20 20 20 20 20 20 20 20 73 6f 63 6b 65 74 2e 53 4f 43 4b 5f 53 54 52 45 41 4d 29 3a 0a 20 20 20 ........socket.SOCK_STREAM):....
53e60 20 20 20 20 20 20 20 20 20 73 6f 63 6b 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 .........sock.=.None............
53e80 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 20 3d 20 53 53 4c .try:.................sock.=.SSL
53ea0 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 66 61 6d 69 6c 79 .Connection(self.ssl_ctx,.family
53ec0 3d 66 61 6d 69 6c 79 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 74 20 =family)..................#.set.
53ee0 53 4e 49 20 73 65 72 76 65 72 20 6e 61 6d 65 20 73 69 6e 63 65 20 77 65 20 6b 6e 6f 77 20 69 74 SNI.server.name.since.we.know.it
53f00 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 .at.this.point.................s
53f20 6f 63 6b 2e 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 68 6f ock.set_tlsext_host_name(self.ho
53f40 73 74 29 0a 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 73 65 73 st)..................if.self.ses
53f60 73 69 6f 6e 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 sion.is.not.None:...............
53f80 20 20 20 20 20 20 73 6f 63 6b 2e 73 65 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2e 73 65 73 73 ......sock.set_session(self.sess
53fa0 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 2e 63 6f 6e 6e 65 63 ion).................sock.connec
53fc0 74 28 28 73 65 6c 66 2e 68 6f 73 74 2c 20 73 65 6c 66 2e 70 6f 72 74 29 29 0a 0a 20 20 20 20 20 t((self.host,.self.port)).......
53fe0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 20 3d 20 73 6f 63 6b 0a 20 20 20 20 ...........self.sock.=.sock.....
54000 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 ............sock.=.None.........
54020 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 ........return.............excep
54040 74 20 73 6f 63 6b 65 74 2e 65 72 72 6f 72 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 t.socket.error.as.e:............
54060 20 20 20 20 20 23 20 4f 74 68 65 72 20 65 78 63 65 70 74 69 6f 6e 20 61 72 65 20 70 72 6f 62 61 .....#.Other.exception.are.proba
54080 62 6c 79 20 53 53 4c 2d 72 65 6c 61 74 65 64 2c 20 69 6e 20 74 68 61 74 20 63 61 73 65 20 77 65 bly.SSL-related,.in.that.case.we
540a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 62 6f 72 74 20 61 6e 64 20 74 68 65 .................#.abort.and.the
540c0 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20 66 6f 72 77 61 72 64 65 64 20 74 6f 20 74 68 65 20 63 .exception.is.forwarded.to.the.c
540e0 61 6c 6c 65 72 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 65 aller..................error.=.e
54100 0a 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 20 .............finally:...........
54120 20 20 20 20 20 20 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 ......if.sock.is.not.None:......
54140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 63 6b 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 ...............sock.close().....
54160 20 20 20 20 20 69 66 20 65 72 72 6f 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 .....if.error.is.None:..........
54180 20 20 20 72 61 69 73 65 20 41 73 73 65 72 74 69 6f 6e 45 72 72 6f 72 28 22 45 6d 70 74 79 20 6c ...raise.AssertionError("Empty.l
541a0 69 73 74 20 72 65 74 75 72 6e 65 64 20 62 79 20 67 65 74 61 64 64 72 69 6e 66 6f 22 29 0a 20 20 ist.returned.by.getaddrinfo")...
541c0 20 20 20 20 20 20 72 61 69 73 65 20 65 72 72 6f 72 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 ......raise.error......def.close
541e0 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
54200 6e 65 0a 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 6b 6c 75 64 67 65 73 20 61 72 6f 75 6e 64 ne.........#.This.kludges.around
54220 20 6c 69 6e 65 20 35 34 35 20 6f 66 20 68 74 74 70 6c 69 62 2e 70 79 2c 0a 20 20 20 20 20 20 20 .line.545.of.httplib.py,........
54240 20 23 20 77 68 69 63 68 20 63 6c 6f 73 65 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 .#.which.closes.the.connection.i
54260 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 3b 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 63 6f 6e n.this.object;.........#.the.con
54280 6e 65 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 6f 70 65 6e 20 69 6e 20 74 68 65 20 72 65 73 70 nection.remains.open.in.the.resp
542a0 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 23 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 23 onse.........#.object..........#
542c0 0a 20 20 20 20 20 20 20 20 23 20 4d 32 43 72 79 70 74 6f 20 64 6f 65 73 6e 27 74 20 63 6c 6f 73 .........#.M2Crypto.doesn't.clos
542e0 65 2d 68 65 72 65 2d 6b 65 65 70 2d 6f 70 65 6e 2d 74 68 65 72 65 2c 0a 20 20 20 20 20 20 20 20 e-here-keep-open-there,.........
54300 23 20 73 6f 2c 20 69 6e 20 65 66 66 65 63 74 2c 20 77 65 20 64 6f 6e 27 74 20 63 6c 6f 73 65 20 #.so,.in.effect,.we.don't.close.
54320 75 6e 74 69 6c 20 74 68 65 20 77 68 6f 6c 65 0a 20 20 20 20 20 20 20 20 23 20 62 75 73 69 6e 65 until.the.whole.........#.busine
54340 73 73 20 69 73 20 6f 76 65 72 20 61 6e 64 20 67 63 20 6b 69 63 6b 73 20 69 6e 2e 0a 20 20 20 20 ss.is.over.and.gc.kicks.in......
54360 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 4c 6f 6e 67 2d 72 75 6e 6e 69 6e 67 ....#.........#.XXX.Long-running
54380 20 63 61 6c 6c 65 72 73 20 62 65 77 61 72 65 20 6c 65 61 6b 61 67 65 2e 0a 20 20 20 20 20 20 20 .callers.beware.leakage.........
543a0 20 23 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 30 35 2d 4a 61 6e 2d 32 30 30 32 3a 20 54 68 .#.........#.XXX.05-Jan-2002:.Th
543c0 69 73 20 6d 6f 64 75 6c 65 20 77 6f 72 6b 73 20 77 69 74 68 20 50 79 74 68 6f 6e 20 32 2e 32 2c is.module.works.with.Python.2.2,
543e0 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 62 75 74 20 49 27 76 65 20 6e 6f 74 20 69 6e 76 65 .........#.XXX.but.I've.not.inve
54400 73 74 69 67 61 74 65 64 20 69 66 20 74 68 65 20 61 62 6f 76 65 20 63 6f 6e 64 69 74 69 6f 6e 73 stigated.if.the.above.conditions
54420 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 72 65 6d 61 69 6e 2e 0a 20 20 20 20 20 20 20 20 70 .........#.XXX.remain..........p
54440 61 73 73 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 29 3a 0a ass......def.get_session(self):.
54460 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 53 53 4c 2e 53 65 73 73 69 6f ........#.type:.().->.SSL.Sessio
54480 6e 2e 53 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f n.Session.........return.self.so
544a0 63 6b 2e 67 65 74 5f 73 65 73 73 69 6f 6e 28 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 ck.get_session()......def.set_se
544c0 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):.........#.
544e0 74 79 70 65 3a 20 28 53 53 4c 2e 53 65 73 73 69 6f 6e 2e 53 65 73 73 69 6f 6e 29 20 2d 3e 20 4e type:.(SSL.Session.Session).->.N
54500 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 73 73 69 6f 6e 20 3d 20 73 65 73 73 69 one.........self.session.=.sessi
54520 6f 6e 0a 0a 0a 63 6c 61 73 73 20 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 on...class.ProxyHTTPSConnection(
54540 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 41 6e HTTPSConnection):.....""".....An
54560 20 48 54 54 50 53 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 75 73 65 73 20 61 20 70 72 .HTTPS.Connection.that.uses.a.pr
54580 6f 78 79 20 61 6e 64 20 74 68 65 20 43 4f 4e 4e 45 43 54 20 72 65 71 75 65 73 74 2e 0a 0a 20 20 oxy.and.the.CONNECT.request.....
545a0 20 20 57 68 65 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69 6e 69 74 69 61 74 ..When.the.connection.is.initiat
545c0 65 64 2c 20 43 4f 4e 4e 45 43 54 20 69 73 20 66 69 72 73 74 20 73 65 6e 74 20 74 6f 20 74 68 65 ed,.CONNECT.is.first.sent.to.the
545e0 20 70 72 6f 78 79 20 28 61 6c 6f 6e 67 0a 20 20 20 20 77 69 74 68 20 61 75 74 68 6f 72 69 7a 61 .proxy.(along.....with.authoriza
54600 74 69 6f 6e 20 68 65 61 64 65 72 73 2c 20 69 66 20 73 75 70 70 6c 69 65 64 29 2e 20 49 66 20 73 tion.headers,.if.supplied)..If.s
54620 75 63 63 65 73 73 66 75 6c 2c 20 61 6e 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 uccessful,.an.SSL.connection....
54640 20 77 69 6c 6c 20 62 65 20 65 73 74 61 62 6c 69 73 68 65 64 20 6f 76 65 72 20 74 68 65 20 73 6f .will.be.established.over.the.so
54660 63 6b 65 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 70 72 6f 78 79 20 61 6e 64 20 74 6f 20 74 68 cket.through.the.proxy.and.to.th
54680 65 20 74 61 72 67 65 74 0a 20 20 20 20 68 6f 73 74 2e 0a 0a 20 20 20 20 46 69 6e 61 6c 6c 79 2c e.target.....host.......Finally,
546a0 20 74 68 65 20 61 63 74 75 61 6c 20 72 65 71 75 65 73 74 20 69 73 20 73 65 6e 74 20 6f 76 65 72 .the.actual.request.is.sent.over
546c0 20 74 68 65 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 75 6e 6e 65 6c 69 6e 67 0a 20 20 .the.SSL.connection.tunneling...
546e0 20 20 74 68 72 6f 75 67 68 20 74 68 65 20 70 72 6f 78 79 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 ..through.the.proxy......"""....
54700 20 20 5f 70 6f 72 74 73 20 3d 20 7b 27 68 74 74 70 27 3a 20 38 30 2c 20 27 68 74 74 70 73 27 3a .._ports.=.{'http':.80,.'https':
54720 20 34 34 33 7d 0a 20 20 20 20 5f 41 55 54 48 5f 48 45 41 44 45 52 20 3d 20 22 50 72 6f 78 79 2d .443}....._AUTH_HEADER.=."Proxy-
54740 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 0a 20 20 20 20 5f 55 41 5f 48 45 41 44 45 52 20 3d 20 Authorization"....._UA_HEADER.=.
54760 22 55 73 65 72 2d 41 67 65 6e 74 22 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 "User-Agent"......def.__init__(s
54780 65 6c 66 2c 20 68 6f 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 elf,.host,.port=None,.strict=Non
547a0 65 2c 20 75 73 65 72 6e 61 6d 65 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e,.username=None,...............
547c0 20 20 20 70 61 73 73 77 6f 72 64 3d 4e 6f 6e 65 2c 20 2a 2a 73 73 6c 29 3a 0a 20 20 20 20 20 20 ...password=None,.**ssl):.......
547e0 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 2c 20 4f ..#.type:.(str,.Optional[int],.O
54800 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c ptional[bool],.Optional[AnyStr],
54820 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e .Optional[AnyStr],.**Any).->.Non
54840 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 43 72 65 61 74 65 20 74 68 65 e.........""".........Create.the
54860 20 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0a 0a 20 .ProxyHTTPSConnection.object....
54880 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 68 6f 73 74 3a 20 68 6f 73 74 20 6e 61 6d 65 20 6f 66 .......:param.host:.host.name.of
548a0 20 74 68 65 20 70 72 6f 78 79 20 73 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d .the.proxy.server.........:param
548c0 20 70 6f 72 74 3a 20 70 6f 72 74 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 70 72 6f 78 79 20 .port:.port.number.of.the.proxy.
548e0 73 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 73 74 72 69 63 74 3a 20 69 66 server.........:param.strict:.if
54900 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 64 53 74 61 74 75 .switched.on,.it.raises.BadStatu
54920 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 20 20 20 20 20 20 sLine.to.be.....................
54940 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 6e 65 20 63 61 6e ...raised.if.the.status.line.can
54960 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 20 20 20 20 20 20 't.be.parsed.as.................
54980 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 20 31 2e 31 20 73 .......a.valid.HTTP/1.0.or.1.1.s
549a0 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 20 75 73 65 72 6e tatus.line..........:param.usern
549c0 61 6d 65 3a 20 75 73 65 72 6e 61 6d 65 20 6f 6e 20 74 68 65 20 70 72 6f 78 79 20 73 65 72 76 65 ame:.username.on.the.proxy.serve
549e0 72 2c 20 77 68 65 6e 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r,.when.required................
54a00 20 20 20 20 20 20 20 20 20 20 55 73 65 72 6e 61 6d 65 20 63 61 6e 20 62 65 20 60 60 73 74 72 60 ..........Username.can.be.``str`
54a20 60 2c 20 62 75 74 20 70 72 65 66 65 72 72 65 64 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 `,.but.preferred.type...........
54a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 60 60 62 79 74 65 73 60 60 2e 20 4d 32 43 ...............is.``bytes``..M2C
54a60 72 79 70 74 6f 20 64 6f 65 73 20 73 6f 6d 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 74 6f 0a 20 20 rypto.does.some.conversion.to...
54a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 60 62 79 74 65 73 60 60 .......................``bytes``
54aa0 20 77 68 65 6e 20 6e 65 63 65 73 73 61 72 79 2c 20 62 75 74 20 69 74 27 73 20 62 65 74 74 65 72 .when.necessary,.but.it's.better
54ac0 20 77 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 20 20 74 .when..........................t
54ae0 68 65 20 75 73 65 72 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 69 74 20 6f he.user.of.the.library.does.it.o
54b00 6e 20 69 74 73 20 6f 77 6e 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 70 61 73 73 77 6f n.its.own..........:param.passwo
54b20 72 64 3a 20 70 61 73 73 77 6f 72 64 20 6f 6e 20 74 68 65 20 70 72 6f 78 79 20 73 65 72 76 65 72 rd:.password.on.the.proxy.server
54b40 2c 20 77 68 65 6e 20 72 65 71 75 69 72 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.when.required.................
54b60 20 20 20 20 20 20 20 20 20 54 68 65 20 73 61 6d 65 20 61 73 20 77 69 74 68 20 60 60 75 73 65 72 .........The.same.as.with.``user
54b80 6e 61 6d 65 60 60 2c 20 60 60 73 74 72 60 60 20 69 73 20 61 63 63 65 70 74 65 64 2c 0a 20 20 20 name``,.``str``.is.accepted,....
54ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 74 20 60 60 62 79 74 65 ......................but.``byte
54bc0 73 60 60 20 61 72 65 20 70 72 65 66 65 72 72 65 64 2e 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 s``.are.preferred..........:para
54be0 6d 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 m.ssl:.dict.with.all.remaining.n
54c00 61 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 amed.real.parameters.of.the.....
54c20 20 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 ................function..Specif
54c40 69 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 ically,.``ssl_context``.is.expec
54c60 74 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 ted.....................to.be.in
54c80 63 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 cluded.with.SSL.Context;.if.it.i
54ca0 73 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 s.not.....................defaul
54cc0 74 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 t.``'sslv23'``.is.substituted)..
54ce0 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 ........""".........HTTPSConnect
54d00 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 20 73 ion.__init__(self,.host,.port,.s
54d20 74 72 69 63 74 2c 20 2a 2a 73 73 6c 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 75 73 65 trict,.**ssl)..........self._use
54d40 72 6e 61 6d 65 20 3d 20 75 73 65 72 6e 61 6d 65 2e 65 6e 63 6f 64 65 28 27 75 74 66 38 27 29 20 rname.=.username.encode('utf8').
54d60 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 75 73 65 72 \.............if.isinstance(user
54d80 6e 61 6d 65 2c 20 73 69 78 2e 73 74 72 69 6e 67 5f 74 79 70 65 73 29 20 65 6c 73 65 20 75 73 65 name,.six.string_types).else.use
54da0 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 61 73 73 77 6f 72 64 20 3d 20 70 rname.........self._password.=.p
54dc0 61 73 73 77 6f 72 64 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 assword.encode('utf8').\........
54de0 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 70 61 73 73 77 6f 72 64 2c 20 73 69 78 .....if.isinstance(password,.six
54e00 2e 73 74 72 69 6e 67 5f 74 79 70 65 73 29 20 65 6c 73 65 20 70 61 73 73 77 6f 72 64 0a 20 20 20 .string_types).else.password....
54e20 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 20 3d 20 4e 6f 6e 65 20 20 23 20 .....self._proxy_auth.=.None..#.
54e40 74 79 70 65 3a 20 73 74 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 type:.str.........self._proxy_UA
54e60 20 3d 20 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 73 74 72 0a 0a 20 20 20 20 64 65 66 20 70 75 .=.None..#.type:.str......def.pu
54e80 74 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 6d 65 74 68 6f 64 2c 20 75 72 6c 2c 20 73 6b 69 70 trequest(self,.method,.url,.skip
54ea0 5f 68 6f 73 74 3d 30 2c 20 73 6b 69 70 5f 61 63 63 65 70 74 5f 65 6e 63 6f 64 69 6e 67 3d 30 29 _host=0,.skip_accept_encoding=0)
54ec0 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 53 74 :.........#.type:.(AnyStr,.AnySt
54ee0 72 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 22 22 22 r,.int,.int).->.None........."""
54f00 0a 20 20 20 20 20 20 20 20 70 75 74 72 65 71 75 65 73 74 20 69 73 20 63 61 6c 6c 65 64 20 62 65 .........putrequest.is.called.be
54f20 66 6f 72 65 20 63 6f 6e 6e 65 63 74 2c 20 73 6f 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 75 fore.connect,.so.can.interpret.u
54f40 72 6c 20 61 6e 64 20 67 65 74 0a 20 20 20 20 20 20 20 20 72 65 61 6c 20 68 6f 73 74 2f 70 6f 72 rl.and.get.........real.host/por
54f60 74 20 74 6f 20 62 65 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 43 4f 4e 4e 45 43 54 20 72 65 71 t.to.be.used.to.make.CONNECT.req
54f80 75 65 73 74 20 74 6f 20 70 72 6f 78 79 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 uest.to.proxy.........""".......
54fa0 20 20 70 72 6f 74 6f 2c 20 6e 65 74 6c 6f 63 2c 20 70 61 74 68 2c 20 71 75 65 72 79 2c 20 66 72 ..proto,.netloc,.path,.query,.fr
54fc0 61 67 6d 65 6e 74 20 3d 20 75 72 6c 73 70 6c 69 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 69 agment.=.urlsplit(url).........i
54fe0 66 20 6e 6f 74 20 70 72 6f 74 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 f.not.proto:.............raise.V
55000 61 6c 75 65 45 72 72 6f 72 28 22 75 6e 6b 6e 6f 77 6e 20 55 52 4c 20 74 79 70 65 3a 20 25 73 22 alueError("unknown.URL.type:.%s"
55020 20 25 20 75 72 6c 29 0a 0a 20 20 20 20 20 20 20 20 23 20 67 65 74 20 68 6f 73 74 20 26 20 70 6f .%.url)..........#.get.host.&.po
55040 72 74 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 rt.........try:.............user
55060 6e 61 6d 65 5f 70 61 73 73 77 6f 72 64 2c 20 68 6f 73 74 5f 70 6f 72 74 20 3d 20 6e 65 74 6c 6f name_password,.host_port.=.netlo
55080 63 2e 73 70 6c 69 74 28 27 40 27 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 56 61 6c 75 c.split('@').........except.Valu
550a0 65 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 5f 70 6f 72 74 20 3d 20 eError:.............host_port.=.
550c0 6e 65 74 6c 6f 63 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 netloc..........try:............
550e0 20 68 6f 73 74 2c 20 70 6f 72 74 5f 73 20 3d 20 68 6f 73 74 5f 70 6f 72 74 2e 73 70 6c 69 74 28 .host,.port_s.=.host_port.split(
55100 27 3a 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 20 3d 20 69 6e 74 28 70 6f 72 74 ':').............port.=.int(port
55120 5f 73 29 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 _s).........except.ValueError:..
55140 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 68 6f 73 74 5f 70 6f 72 74 0a 20 20 20 20 ...........host.=.host_port.....
55160 20 20 20 20 20 20 20 20 23 20 74 72 79 20 74 6f 20 67 65 74 20 70 6f 72 74 20 66 72 6f 6d 20 70 ........#.try.to.get.port.from.p
55180 72 6f 74 6f 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 roto.............try:...........
551a0 20 20 20 20 20 20 70 6f 72 74 20 3d 20 73 65 6c 66 2e 5f 70 6f 72 74 73 5b 70 72 6f 74 6f 5d 0a ......port.=.self._ports[proto].
551c0 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 72 72 6f 72 3a 0a 20 20 20 ............except.KeyError:....
551e0 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 22 75 .............raise.ValueError("u
55200 6e 6b 6e 6f 77 6e 20 70 72 6f 74 6f 63 6f 6c 20 66 6f 72 3a 20 25 73 22 20 25 20 75 72 6c 29 0a nknown.protocol.for:.%s".%.url).
55220 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 72 65 61 6c 5f 68 6f 73 74 20 3d 20 68 6f 73 74 20 .........self._real_host.=.host.
55240 20 23 20 74 79 70 65 3a 20 73 74 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 72 65 61 6c 5f .#.type:.str.........self._real_
55260 70 6f 72 74 20 3d 20 70 6f 72 74 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 20 20 20 20 20 20 20 port.=.port..#.type:.int........
55280 20 72 65 73 74 20 3d 20 75 72 6c 75 6e 73 70 6c 69 74 28 28 27 27 2c 20 27 27 2c 20 70 61 74 68 .rest.=.urlunsplit(('',.'',.path
552a0 2c 20 71 75 65 72 79 2c 20 66 72 61 67 6d 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 48 54 54 50 ,.query,.fragment)).........HTTP
552c0 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 6d 65 74 SConnection.putrequest(self,.met
552e0 68 6f 64 2c 20 72 65 73 74 2c 20 73 6b 69 70 5f 68 6f 73 74 2c 0a 20 20 20 20 20 20 20 20 20 20 hod,.rest,.skip_host,...........
55300 20 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 6b 69 70 5f 61 63 .........................skip_ac
55320 63 65 70 74 5f 65 6e 63 6f 64 69 6e 67 29 0a 0a 20 20 20 20 64 65 66 20 70 75 74 68 65 61 64 65 cept_encoding)......def.putheade
55340 72 28 73 65 6c 66 2c 20 68 65 61 64 65 72 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 r(self,.header,.value):.........
55360 23 20 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 4e 6f 6e 65 #.type:.(AnyStr,.AnyStr).->.None
55380 0a 20 20 20 20 20 20 20 20 23 20 53 74 6f 72 65 20 74 68 65 20 61 75 74 68 20 68 65 61 64 65 72 .........#.Store.the.auth.header
553a0 20 69 66 20 70 61 73 73 65 64 20 69 6e 2e 0a 20 20 20 20 20 20 20 20 69 66 20 68 65 61 64 65 72 .if.passed.in..........if.header
553c0 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 73 65 6c 66 2e 5f 55 41 5f 48 45 41 44 45 52 2e 6c 6f 77 65 .lower().==.self._UA_HEADER.lowe
553e0 72 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 20 r():.............self._proxy_UA.
55400 3d 20 76 61 6c 75 65 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 =.value.........if.header.lower(
55420 29 20 3d 3d 20 73 65 6c 66 2e 5f 41 55 54 48 5f 48 45 41 44 45 52 2e 6c 6f 77 65 72 28 29 3a 0a ).==.self._AUTH_HEADER.lower():.
55440 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 20 3d 20 76 ............self._proxy_auth.=.v
55460 61 6c 75 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 48 alue.........else:.............H
55480 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 68 65 61 64 65 72 28 73 65 6c 66 2c 20 68 TTPSConnection.putheader(self,.h
554a0 65 61 64 65 72 2c 20 76 61 6c 75 65 29 0a 0a 20 20 20 20 64 65 66 20 65 6e 64 68 65 61 64 65 72 eader,.value)......def.endheader
554c0 73 28 73 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 s(self,.*args,.**kwargs):.......
554e0 20 20 23 20 74 79 70 65 3a 20 28 2a 41 6e 79 2c 20 2a 2a 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a ..#.type:.(*Any,.**Any).->.None.
55500 20 20 20 20 20 20 20 20 23 20 57 65 27 76 65 20 72 65 63 69 65 76 65 64 20 61 6c 6c 20 6f 66 20 ........#.We've.recieved.all.of.
55520 68 74 65 20 68 65 61 64 65 72 73 2e 20 55 73 65 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 75 73 hte.headers..Use.the.supplied.us
55540 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 70 61 73 73 77 6f 72 64 20 66 6f ername.........#.and.password.fo
55560 72 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 2c 20 70 6f 73 73 69 62 6c 79 20 6f 76 65 72 72 69 r.authorization,.possibly.overri
55580 64 69 6e 67 20 74 68 65 20 61 75 74 68 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 23 20 73 75 ding.the.authstring.........#.su
555a0 70 70 6c 69 65 64 20 69 6e 20 74 68 65 20 68 65 61 64 65 72 73 2e 0a 20 20 20 20 20 20 20 20 69 pplied.in.the.headers..........i
555c0 66 20 6e 6f 74 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 f.not.self._proxy_auth:.........
555e0 20 20 20 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 20 3d 20 73 65 6c 66 2e 5f 65 6e 63 ....self._proxy_auth.=.self._enc
55600 6f 64 65 5f 61 75 74 68 28 29 0a 0a 20 20 20 20 20 20 20 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 ode_auth()..........HTTPSConnect
55620 69 6f 6e 2e 65 6e 64 68 65 61 64 65 72 73 28 73 65 6c 66 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 ion.endheaders(self,.*args,.**kw
55640 61 72 67 73 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 0a 20 20 args)......def.connect(self):...
55660 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........
55680 20 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 29 0a 0a 20 .HTTPConnection.connect(self)...
556a0 20 20 20 20 20 20 20 23 20 73 65 6e 64 20 70 72 6f 78 79 20 43 4f 4e 4e 45 43 54 20 72 65 71 75 .......#.send.proxy.CONNECT.requ
556c0 65 73 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 2e 73 65 6e 64 61 6c 6c 28 73 65 est.........self.sock.sendall(se
556e0 6c 66 2e 5f 67 65 74 5f 63 6f 6e 6e 65 63 74 5f 6d 73 67 28 29 29 0a 20 20 20 20 20 20 20 20 72 lf._get_connect_msg()).........r
55700 65 73 70 6f 6e 73 65 20 3d 20 48 54 54 50 52 65 73 70 6f 6e 73 65 28 73 65 6c 66 2e 73 6f 63 6b esponse.=.HTTPResponse(self.sock
55720 29 0a 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 2e 62 65 67 69 6e 28 29 0a 0a 20 20 20 20 ).........response.begin()......
55740 20 20 20 20 63 6f 64 65 20 3d 20 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 0a 20 20 20 20 20 ....code.=.response.status......
55760 20 20 20 69 66 20 63 6f 64 65 20 21 3d 20 32 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 ...if.code.!=.200:.............#
55780 20 70 72 6f 78 79 20 72 65 74 75 72 6e 65 64 20 61 6e 64 20 65 72 72 6f 72 2c 20 61 62 6f 72 74 .proxy.returned.and.error,.abort
557a0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 61 6e 64 20 72 61 69 73 65 20 65 78 63 65 70 74 69 6f 6e .connection,.and.raise.exception
557c0 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 20 20 20 20 20 20 .............self.close().......
557e0 20 20 20 20 20 20 72 61 69 73 65 20 73 6f 63 6b 65 74 2e 65 72 72 6f 72 28 22 50 72 6f 78 79 20 ......raise.socket.error("Proxy.
55800 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 61 69 6c 65 64 3a 20 25 64 22 20 25 20 63 6f 64 65 29 0a 0a connection.failed:.%d".%.code)..
55820 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 74 61 72 74 5f 73 73 6c 28 29 0a 0a 20 20 20 20 64 ........self._start_ssl()......d
55840 65 66 20 5f 67 65 74 5f 63 6f 6e 6e 65 63 74 5f 6d 73 67 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 ef._get_connect_msg(self):......
55860 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 20 22 ...#.type:.().->.bytes........."
55880 22 22 20 52 65 74 75 72 6e 20 61 6e 20 48 54 54 50 20 43 4f 4e 4e 45 43 54 20 72 65 71 75 65 73 "".Return.an.HTTP.CONNECT.reques
558a0 74 20 74 6f 20 73 65 6e 64 20 74 6f 20 74 68 65 20 70 72 6f 78 79 2e 20 22 22 22 0a 20 20 20 20 t.to.send.to.the.proxy..""".....
558c0 20 20 20 20 6d 73 67 20 3d 20 22 43 4f 4e 4e 45 43 54 20 25 73 3a 25 64 20 48 54 54 50 2f 31 2e ....msg.=."CONNECT.%s:%d.HTTP/1.
558e0 31 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 1\r\n".%.(self._real_host,.self.
55900 5f 72 65 61 6c 5f 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 6d 73 67 20 2b 20 _real_port).........msg.=.msg.+.
55920 22 48 6f 73 74 3a 20 25 73 3a 25 64 5c 72 5c 6e 22 20 25 20 28 73 65 6c 66 2e 5f 72 65 61 6c 5f "Host:.%s:%d\r\n".%.(self._real_
55940 68 6f 73 74 2c 20 73 65 6c 66 2e 5f 72 65 61 6c 5f 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 69 host,.self._real_port).........i
55960 66 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 f.self._proxy_UA:.............ms
55980 67 20 3d 20 6d 73 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 g.=.msg.+."%s:.%s\r\n".%.(self._
559a0 55 41 5f 48 45 41 44 45 52 2c 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 55 41 29 0a 20 20 20 20 20 UA_HEADER,.self._proxy_UA)......
559c0 20 20 20 69 66 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 ...if.self._proxy_auth:.........
559e0 20 20 20 20 6d 73 67 20 3d 20 6d 73 67 20 2b 20 22 25 73 3a 20 25 73 5c 72 5c 6e 22 20 25 20 28 ....msg.=.msg.+."%s:.%s\r\n".%.(
55a00 73 65 6c 66 2e 5f 41 55 54 48 5f 48 45 41 44 45 52 2c 20 73 65 6c 66 2e 5f 70 72 6f 78 79 5f 61 self._AUTH_HEADER,.self._proxy_a
55a20 75 74 68 29 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 6d 73 67 20 2b 20 22 5c 72 5c 6e 22 0a uth).........msg.=.msg.+."\r\n".
55a40 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 79 ........return.six.ensure_binary
55a60 28 6d 73 67 29 0a 0a 20 20 20 20 64 65 66 20 5f 73 74 61 72 74 5f 73 73 6c 28 73 65 6c 66 29 3a (msg)......def._start_ssl(self):
55a80 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.....
55aa0 20 20 20 20 22 22 22 20 4d 61 6b 65 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 27 73 20 73 ....""".Make.this.connection's.s
55ac0 6f 63 6b 65 74 20 53 53 4c 2d 61 77 61 72 65 2e 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c ocket.SSL-aware..""".........sel
55ae0 66 2e 73 6f 63 6b 20 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 f.sock.=.SSL.Connection(self.ssl
55b00 5f 63 74 78 2c 20 73 65 6c 66 2e 73 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f _ctx,.self.sock).........self.so
55b20 63 6b 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 2e 73 6f 63 6b ck.setup_ssl().........self.sock
55b40 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 73 65 6c .set_connect_state().........sel
55b60 66 2e 73 6f 63 6b 2e 63 6f 6e 6e 65 63 74 5f 73 73 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 65 f.sock.connect_ssl()......def._e
55b80 6e 63 6f 64 65 5f 61 75 74 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 ncode_auth(self):.........#.type
55ba0 3a 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 :.().->.Optional[bytes].........
55bc0 22 22 22 20 45 6e 63 6f 64 65 20 74 68 65 20 75 73 65 72 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 """.Encode.the.username.and.pass
55be0 77 6f 72 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 20 61 75 74 68 20 68 65 61 64 65 72 2e word.for.use.in.the.auth.header.
55c00 20 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 28 73 65 6c 66 2e 5f 75 73 65 72 6e .""".........if.not.(self._usern
55c20 61 6d 65 20 61 6e 64 20 73 65 6c 66 2e 5f 70 61 73 73 77 6f 72 64 29 3a 0a 20 20 20 20 20 20 20 ame.and.self._password):........
55c40 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 23 20 41 75 74 68 65 .....return.None.........#.Authe
55c60 6e 74 69 63 61 74 65 64 20 70 72 6f 78 79 0a 20 20 20 20 20 20 20 20 75 73 65 72 70 61 73 73 20 nticated.proxy.........userpass.
55c80 3d 20 22 25 73 3a 25 73 22 20 25 20 28 73 65 6c 66 2e 5f 75 73 65 72 6e 61 6d 65 2c 20 73 65 6c =."%s:%s".%.(self._username,.sel
55ca0 66 2e 5f 70 61 73 73 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 77 61 72 6e 69 6e f._password).........with.warnin
55cc0 67 73 2e 63 61 74 63 68 5f 77 61 72 6e 69 6e 67 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 gs.catch_warnings():............
55ce0 20 77 61 72 6e 69 6e 67 73 2e 73 69 6d 70 6c 65 66 69 6c 74 65 72 28 22 69 67 6e 6f 72 65 22 2c .warnings.simplefilter("ignore",
55d00 20 44 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 .DeprecationWarning)............
55d20 20 65 6e 63 5f 75 73 65 72 70 61 73 73 20 3d 20 62 61 73 65 36 34 2e 65 6e 63 6f 64 65 73 74 72 .enc_userpass.=.base64.encodestr
55d40 69 6e 67 28 75 73 65 72 70 61 73 73 29 2e 72 65 70 6c 61 63 65 28 22 5c 6e 22 2c 20 22 22 29 0a ing(userpass).replace("\n",."").
55d60 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 79 ........return.six.ensure_binary
55d80 28 22 42 61 73 69 63 20 25 73 22 20 25 20 65 6e 63 5f 75 73 65 72 70 61 73 73 29 0a 94 7d 94 28 ("Basic.%s".%.enc_userpass)..}.(
55da0 8c 18 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 ..HTTPSConnection.__init__.j.%..
55dc0 4b 1c 4b 37 87 94 8c 17 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 K.K7....HTTPSConnection.connect.
55de0 6a 18 25 00 00 4b 39 4b 59 87 94 8c 15 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f j.%..K9KY....HTTPSConnection.clo
55e00 73 65 94 6a 18 25 00 00 4b 5b 4b 6b 87 94 8c 1b 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e se.j.%..K[Kk....HTTPSConnection.
55e20 67 65 74 5f 73 65 73 73 69 6f 6e 94 6a 18 25 00 00 4b 6d 4b 6f 87 94 8c 1b 48 54 54 50 53 43 6f get_session.j.%..KmKo....HTTPSCo
55e40 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 73 69 6f 6e 94 6a 18 25 00 00 4b 71 4b 73 87 94 nnection.set_session.j.%..KqKs..
55e60 8c 0f 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 94 6a 37 02 00 00 4b 14 4b 73 87 94 8c 1d 50 ..HTTPSConnection.j7...K.Ks....P
55e80 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 roxyHTTPSConnection.__init__.j.%
55ea0 00 00 4b 87 4b a6 87 94 8c 1f 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 ..K.K.....ProxyHTTPSConnection.p
55ec0 75 74 72 65 71 75 65 73 74 94 6a 18 25 00 00 4b a8 4b c7 87 94 8c 1e 50 72 6f 78 79 48 54 54 50 utrequest.j.%..K.K.....ProxyHTTP
55ee0 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 70 75 74 68 65 61 64 65 72 94 6a 18 25 00 00 4b c9 4b d1 87 SConnection.putheader.j.%..K.K..
55f00 94 8c 1f 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 ...ProxyHTTPSConnection.endheade
55f20 72 73 94 6a 18 25 00 00 4b d3 4b db 87 94 8c 1c 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 rs.j.%..K.K.....ProxyHTTPSConnec
55f40 74 69 6f 6e 2e 63 6f 6e 6e 65 63 74 94 6a 18 25 00 00 4b dd 4b ec 87 94 8c 25 50 72 6f 78 79 48 tion.connect.j.%..K.K....%ProxyH
55f60 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 67 65 74 5f 63 6f 6e 6e 65 63 74 5f 6d 73 67 94 TTPSConnection._get_connect_msg.
55f80 6a 18 25 00 00 4b ee 4b f8 87 94 8c 1f 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f j.%..K.K.....ProxyHTTPSConnectio
55fa0 6e 2e 5f 73 74 61 72 74 5f 73 73 6c 94 6a 18 25 00 00 4b fa 4d 00 01 87 94 8c 21 50 72 6f 78 79 n._start_ssl.j.%..K.M.....!Proxy
55fc0 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 65 6e 63 6f 64 65 5f 61 75 74 68 94 6a 18 25 HTTPSConnection._encode_auth.j.%
55fe0 00 00 4d 02 01 4d 0c 01 87 94 8c 14 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e ..M..M......ProxyHTTPSConnection
56000 94 6a 37 02 00 00 4b 76 4d 0c 01 87 94 75 7d 94 28 8c 0f 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 .j7...KvM....u}.(..HTTPSConnecti
56020 6f 6e 94 6a 60 02 00 00 8c 15 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 63 6c 6f 73 65 94 on.j`.....HTTPSConnection.close.
56040 6a 60 02 00 00 8c 17 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 j`.....HTTPSConnection.connect.j
56060 60 02 00 00 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 `.....HTTPSConnection.get_sessio
56080 6e 94 6a 60 02 00 00 8c 1b 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 2e 73 65 74 5f 73 65 73 n.j`.....HTTPSConnection.set_ses
560a0 73 69 6f 6e 94 6a 60 02 00 00 8c 14 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e sion.j`.....ProxyHTTPSConnection
560c0 94 6a 60 02 00 00 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 .j`.....ProxyHTTPSConnection.con
560e0 6e 65 63 74 94 6a 60 02 00 00 8c 1f 50 72 6f 78 79 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e nect.j`.....ProxyHTTPSConnection
56100 2e 65 6e 64 68 65 61 64 65 72 73 94 6a 60 02 00 00 8c 1e 50 72 6f 78 79 48 54 54 50 53 43 6f 6e .endheaders.j`.....ProxyHTTPSCon
56120 6e 65 63 74 69 6f 6e 2e 70 75 74 68 65 61 64 65 72 94 6a 60 02 00 00 8c 1f 50 72 6f 78 79 48 54 nection.putheader.j`.....ProxyHT
56140 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 60 02 00 00 75 8c TPSConnection.putrequest.j`...u.
56160 11 4d 32 43 72 79 70 74 6f 2e 68 74 74 70 73 6c 69 62 94 74 94 8c 11 4d 32 43 72 79 70 74 6f 2e .M2Crypto.httpslib.t...M2Crypto.
56180 6d 32 75 72 6c 6c 69 62 94 28 58 3d 10 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 m2urllib.(X=...from.__future__.i
561a0 6d 70 6f 72 74 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 mport.absolute_import,.print_fun
561c0 63 74 69 6f 6e 0a 0a 22 22 22 4d 32 43 72 79 70 74 6f 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 74 ction.."""M2Crypto.enhancement.t
561e0 6f 20 50 79 74 68 6f 6e 27 73 20 75 72 6c 6c 69 62 20 66 6f 72 20 68 61 6e 64 6c 69 6e 67 0a 27 o.Python's.urllib.for.handling.'
56200 68 74 74 70 73 27 20 75 72 6c 27 73 2e 0a 0a 46 49 58 4d 45 3a 20 69 74 20 69 73 20 71 75 65 73 https'.url's...FIXME:.it.is.ques
56220 74 69 6f 6e 61 62 6c 65 20 77 68 65 74 68 65 72 20 77 65 20 6e 65 65 64 20 74 68 69 73 20 6f 6c tionable.whether.we.need.this.ol
56240 64 2d 73 74 79 6c 65 20 6d 6f 64 75 6c 65 20 61 74 20 61 6c 6c 2e 20 75 72 6c 6c 69 62 0a 28 6e d-style.module.at.all..urllib.(n
56260 6f 74 20 75 72 6c 6c 69 62 32 29 20 69 73 20 69 6e 20 50 79 74 68 6f 6e 20 33 20 73 75 70 70 6f ot.urllib2).is.in.Python.3.suppo
56280 72 74 20 6a 75 73 74 20 61 73 20 61 20 6c 65 67 61 63 79 20 41 50 49 2e 0a 0a 43 6f 70 79 72 69 rt.just.as.a.legacy.API...Copyri
562a0 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 67 ght.(c).1999-2003.Ng.Pheng.Siong
562c0 2e 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 69 6d 70 6f 72 ..All.rights.reserved."""..impor
562e0 74 20 62 61 73 65 36 34 0a 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e 67 73 0a 0a 66 72 6f 6d 20 4d t.base64.import.warnings..from.M
56300 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 53 53 4c 2c 20 68 74 74 70 73 6c 69 62 2c 20 73 69 2Crypto.import.SSL,.httpslib,.si
56320 78 0a 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 6c 69 x..from.M2Crypto.six.moves.urlli
56340 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 66 72 6f b_response.import.addinfourl.fro
56360 6d 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 m.typing.import.AnyStr,.Optional
56380 20 20 23 20 6e 6f 71 61 0a 0a 23 20 73 69 78 2e 6d 6f 76 65 73 20 64 6f 65 73 6e 27 74 20 73 75 ..#.noqa..#.six.moves.doesn't.su
563a0 70 70 6f 72 74 20 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 pport.star.imports.if.six.PY3:..
563c0 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 20 69 6d 70 6f 72 74 20 2a 20 ...from.urllib.request.import.*.
563e0 20 23 20 6e 6f 71 61 20 66 6f 72 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 74 6f 20 69 6d 70 .#.noqa.for.other.modules.to.imp
56400 6f 72 74 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 70 61 72 73 65 20 69 6d 70 6f 72 74 ort.....from.urllib.parse.import
56420 20 2a 20 20 23 20 6e 6f 71 61 20 66 6f 72 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 74 6f 20 .*..#.noqa.for.other.modules.to.
56440 69 6d 70 6f 72 74 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 65 72 72 6f 72 20 69 6d 70 import.....from.urllib.error.imp
56460 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 20 66 6f 72 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 ort.*..#.noqa.for.other.modules.
56480 74 6f 20 69 6d 70 6f 72 74 0a 65 6c 73 65 3a 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 20 to.import.else:.....from.urllib.
564a0 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 0a 0a 0a 64 65 66 20 6f 70 65 6e 5f 68 74 74 70 import.*..#.noqa...def.open_http
564c0 73 28 73 65 6c 66 2c 20 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 20 73 73 6c 5f 63 6f 6e 74 s(self,.url,.data=None,.ssl_cont
564e0 65 78 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 55 52 4c 4f 70 65 6e 65 ext=None):.....#.type:.(URLOpene
56500 72 2c 20 41 6e 79 53 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 62 79 74 65 73 5d 2c 20 4f 70 74 69 r,.AnyStr,.Optional[bytes],.Opti
56520 6f 6e 61 6c 5b 53 53 4c 2e 43 6f 6e 74 65 78 74 5d 29 20 2d 3e 20 61 64 64 69 6e 66 6f 75 72 6c onal[SSL.Context]).->.addinfourl
56540 0a 20 20 20 20 22 22 22 0a 20 20 20 20 4f 70 65 6e 20 55 52 4c 20 6f 76 65 72 20 74 68 65 20 53 .....""".....Open.URL.over.the.S
56560 53 4c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 3a 70 61 72 61 6d 20 75 72 6c 3a 20 SL.connection.......:param.url:.
56580 55 52 4c 20 74 6f 20 62 65 20 6f 70 65 6e 65 64 0a 20 20 20 20 3a 70 61 72 61 6d 20 64 61 74 61 URL.to.be.opened.....:param.data
565a0 3a 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 50 4f 53 54 20 72 65 71 75 65 73 74 0a 20 20 20 20 :.data.for.the.POST.request.....
565c0 3a 70 61 72 61 6d 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3a 20 53 53 4c 2e 43 6f 6e 74 65 78 74 20 :param.ssl_context:.SSL.Context.
565e0 74 6f 20 62 65 20 75 73 65 64 0a 20 20 20 20 3a 72 65 74 75 72 6e 3a 0a 20 20 20 20 22 22 22 0a to.be.used.....:return:.....""".
56600 20 20 20 20 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 ....if.six.PY3:.........warnings
56620 2e 77 61 72 6e 28 27 55 52 4c 4f 70 65 6e 65 72 20 68 61 73 20 62 65 65 6e 20 64 65 70 72 65 63 .warn('URLOpener.has.been.deprec
56640 61 74 65 64 20 69 6e 20 50 79 33 6b 27 2c 20 44 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e ated.in.Py3k',.DeprecationWarnin
56660 67 29 0a 0a 20 20 20 20 69 66 20 73 73 6c 5f 63 6f 6e 74 65 78 74 20 69 73 20 6e 6f 74 20 4e 6f g)......if.ssl_context.is.not.No
56680 6e 65 20 61 6e 64 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 ne.and.isinstance(ssl_context,.S
566a0 53 4c 2e 43 6f 6e 74 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 SL.Context):.........self.ctx.=.
566c0 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 73 65 ssl_context.....else:.........se
566e0 6c 66 2e 63 74 78 20 3d 20 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 20 20 20 20 75 73 65 72 5f lf.ctx.=.SSL.Context().....user_
56700 70 61 73 73 77 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 passwd.=.None.....if.isinstance(
56720 75 72 6c 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 url,.six.string_types):.........
56740 74 72 79 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 79 74 68 6f 6e 20 32 0a 20 20 try:...............#.python.2...
56760 20 20 20 20 20 20 20 20 20 20 23 20 68 74 74 70 3a 2f 2f 70 79 64 6f 63 2e 6f 72 67 2f 32 2e 35 ..........#.http://pydoc.org/2.5
56780 2e 31 2f 75 72 6c 6c 69 62 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 2c .1/urllib.html.............host,
567a0 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)......
567c0 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 20 20 20 20 20 .......if.host:.................
567e0 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 65 72 28 68 6f user_passwd,.host.=.splituser(ho
56800 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 75 6e 71 75 6f st).................host.=.unquo
56820 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 73 74 20 3d 20 te(host).............realhost.=.
56840 68 6f 73 74 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 20 20 host.........except.NameError:..
56860 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 0a 20 20 20 20 #.python.3.has.no.splithost.....
56880 20 20 20 20 20 20 20 20 23 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 70 79 74 68 6f 6e 2e 6f 72 ........#.https://docs.python.or
568a0 67 2f 33 2f 6c 69 62 72 61 72 79 2f 75 72 6c 6c 69 62 2e 70 61 72 73 65 2e 68 74 6d 6c 0a 20 20 g/3/library/urllib.parse.html...
568c0 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 73 65 28 75 72 6c 29 ..........parsed.=.urlparse(url)
568e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 70 61 72 73 65 64 2e 68 6f 73 74 6e .............host.=.parsed.hostn
56900 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 61 72 73 65 64 2e 70 6f 72 74 3a 0a ame.............if.parsed.port:.
56920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 2b 3d 20 22 3a 7b 30 7d 22 2e 66 ................host.+=.":{0}".f
56940 6f 72 6d 61 74 28 70 61 72 73 65 64 2e 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 ormat(parsed.port).............u
56960 73 65 72 5f 70 61 73 73 77 64 20 3d 20 70 61 72 73 65 64 2e 70 61 73 73 77 6f 72 64 0a 20 20 20 ser_passwd.=.parsed.password....
56980 20 20 20 20 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 .........if.parsed.password:....
569a0 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
569c0 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)......
569e0 20 20 20 20 20 20 20 73 65 6c 65 63 74 6f 72 20 3d 20 70 61 72 73 65 64 2e 70 61 74 68 0a 20 20 .......selector.=.parsed.path...
56a00 20 20 65 6c 73 65 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 ..else:.........host,.selector.=
56a20 20 75 72 6c 0a 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 2c 20 72 65 73 74 20 3d 20 73 70 6c .url.........urltype,.rest.=.spl
56a40 69 74 74 79 70 65 28 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 20 20 75 72 6c 20 3d 20 72 ittype(selector).........url.=.r
56a60 65 73 74 0a 20 20 20 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 est.........user_passwd.=.None..
56a80 20 20 20 20 20 20 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 .......if.urltype.lower().!=.'ht
56aa0 74 70 27 3a 0a 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 tp':.............realhost.=.None
56ac0 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 74 72 79 3a 20 .........else:.............try:.
56ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 79 74 68 6f 6e 20 32 0a 20 20 20 20 20 20 20 ..............#.python.2........
56b00 20 20 20 20 20 20 20 20 20 72 65 61 6c 68 6f 73 74 2c 20 72 65 73 74 20 3d 20 73 70 6c 69 74 68 .........realhost,.rest.=.splith
56b20 6f 73 74 28 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 72 65 61 ost(rest).................if.rea
56b40 6c 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f lhost:.....................user_
56b60 70 61 73 73 77 64 2c 20 72 65 61 6c 68 6f 73 74 20 3d 20 73 70 6c 69 74 75 73 65 72 28 72 65 61 passwd,.realhost.=.splituser(rea
56b80 6c 68 6f 73 74 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 75 73 lhost).....................if.us
56ba0 65 72 5f 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er_passwd:......................
56bc0 20 20 20 73 65 6c 65 63 74 6f 72 20 3d 20 22 25 73 3a 2f 2f 25 73 25 73 22 20 25 20 28 75 72 6c ...selector.=."%s://%s%s".%.(url
56be0 74 79 70 65 2c 20 72 65 61 6c 68 6f 73 74 2c 20 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 type,.realhost,.rest)...........
56c00 20 20 65 78 63 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 ..except.NameError:..#.python.3.
56c20 68 61 73 20 6e 6f 20 73 70 6c 69 74 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 has.no.splithost................
56c40 20 70 61 72 73 65 64 20 3d 20 75 72 6c 70 61 72 73 65 28 72 65 73 74 29 0a 20 20 20 20 20 20 20 .parsed.=.urlparse(rest)........
56c60 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 70 61 72 73 65 64 2e 68 6f 73 74 6e 61 6d 65 0a .........host.=.parsed.hostname.
56c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 61 72 73 65 64 2e 70 6f 72 74 3a 0a ................if.parsed.port:.
56ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 2b 3d 20 22 3a 7b 30 ....................host.+=.":{0
56cc0 7d 22 2e 66 6f 72 6d 61 74 28 70 61 72 73 65 64 2e 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 }".format(parsed.port)..........
56ce0 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 70 61 72 73 65 64 2e 75 73 65 72 .......user_passwd.=.parsed.user
56d00 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 61 72 73 65 64 2e 70 name.................if.parsed.p
56d20 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 20 20 20 20 75 73 65 assword:.....................use
56d40 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
56d60 2e 70 61 73 73 77 6f 72 64 29 0a 20 20 20 20 20 20 20 20 23 20 70 72 69 6e 74 28 22 70 72 6f 78 .password).........#.print("prox
56d80 79 20 76 69 61 20 68 74 74 70 3a 22 2c 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 y.via.http:",.host,.selector)...
56da0 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 49 4f 45 ..if.not.host:.........raise.IOE
56dc0 72 72 6f 72 28 27 68 74 74 70 20 65 72 72 6f 72 27 2c 20 27 6e 6f 20 68 6f 73 74 20 67 69 76 65 rror('http.error',.'no.host.give
56de0 6e 27 29 0a 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 20 n').....if.user_passwd:.........
56e00 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 20 3d 20 62 if.six.PY3:.............auth.=.b
56e20 61 73 65 36 34 2e 65 6e 63 6f 64 65 62 79 74 65 73 28 75 73 65 72 5f 70 61 73 73 77 64 29 2e 73 ase64.encodebytes(user_passwd).s
56e40 74 72 69 70 28 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 trip().........else:............
56e60 20 61 75 74 68 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 .auth.=.base64.encodestring(user
56e80 5f 70 61 73 73 77 64 29 2e 73 74 72 69 70 28 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 _passwd).strip().....else:......
56ea0 20 20 20 61 75 74 68 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 23 20 53 74 61 72 74 20 68 65 72 65 21 ...auth.=.None.....#.Start.here!
56ec0 0a 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 65 63 74 69 6f .....h.=.httpslib.HTTPSConnectio
56ee0 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 73 65 6c 66 2e 63 74 n(host=host,.ssl_context=self.ct
56f00 78 29 0a 20 20 20 20 23 20 68 2e 73 65 74 5f 64 65 62 75 67 6c 65 76 65 6c 28 31 29 0a 20 20 20 x).....#.h.set_debuglevel(1)....
56f20 20 23 20 53 74 6f 70 20 68 65 72 65 21 0a 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 6e 6f 74 .#.Stop.here!.....if.data.is.not
56f40 20 4e 6f 6e 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 50 4f 53 .None:.........h.putrequest('POS
56f60 54 27 2c 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 T',.selector).........h.putheade
56f80 72 28 27 43 6f 6e 74 65 6e 74 2d 74 79 70 65 27 2c 20 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 r('Content-type',.'application/x
56fa0 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 20 20 20 68 -www-form-urlencoded').........h
56fc0 2e 70 75 74 68 65 61 64 65 72 28 27 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 27 2c 20 27 25 64 .putheader('Content-length',.'%d
56fe0 27 20 25 20 6c 65 6e 28 64 61 74 61 29 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 '.%.len(data)).....else:........
57000 20 68 2e 70 75 74 72 65 71 75 65 73 74 28 27 47 45 54 27 2c 20 73 65 6c 65 63 74 6f 72 29 0a 20 .h.putrequest('GET',.selector)..
57020 20 20 20 69 66 20 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 ...if.auth:.........h.putheader(
57040 27 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 27 2c 20 27 42 61 73 69 63 20 25 73 27 20 25 20 61 75 'Authorization',.'Basic.%s'.%.au
57060 74 68 29 0a 20 20 20 20 66 6f 72 20 61 72 67 73 20 69 6e 20 73 65 6c 66 2e 61 64 64 68 65 61 64 th).....for.args.in.self.addhead
57080 65 72 73 3a 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 68 65 61 64 65 72 28 2a 61 72 67 73 29 20 ers:.........h.putheader(*args).
570a0 20 20 23 20 66 6f 72 20 70 79 74 68 6f 6e 33 20 2d 20 75 73 65 64 20 74 6f 20 75 73 65 20 61 70 ..#.for.python3.-.used.to.use.ap
570c0 70 6c 79 0a 20 20 20 20 68 2e 65 6e 64 68 65 61 64 65 72 73 28 29 0a 20 20 20 20 69 66 20 64 61 ply.....h.endheaders().....if.da
570e0 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 2e 73 65 6e 64 28 64 ta.is.not.None:.........h.send(d
57100 61 74 61 20 2b 20 27 5c 72 5c 6e 27 29 0a 20 20 20 20 23 20 48 65 72 65 20 61 67 61 69 6e 21 0a ata.+.'\r\n').....#.Here.again!.
57120 20 20 20 20 72 65 73 70 20 3d 20 68 2e 67 65 74 72 65 73 70 6f 6e 73 65 28 29 0a 20 20 20 20 66 ....resp.=.h.getresponse().....f
57140 70 20 3d 20 72 65 73 70 2e 66 70 0a 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 p.=.resp.fp.....return.addinfour
57160 6c 28 66 70 2c 20 72 65 73 70 2e 6d 73 67 2c 20 22 68 74 74 70 73 3a 22 20 2b 20 75 72 6c 29 0a l(fp,.resp.msg,."https:".+.url).
57180 20 20 20 20 23 20 53 74 6f 70 20 61 67 61 69 6e 2e 0a 0a 23 20 4d 69 6e 6f 72 20 62 72 61 69 6e ....#.Stop.again...#.Minor.brain
571a0 20 73 75 72 67 65 72 79 2e 0a 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 68 74 74 70 73 20 3d .surgery..URLopener.open_https.=
571c0 20 6f 70 65 6e 5f 68 74 74 70 73 0a 94 7d 94 8c 0a 6f 70 65 6e 5f 68 74 74 70 73 94 6a 18 25 00 .open_https..}...open_https.j.%.
571e0 00 4b 1c 4b 74 87 94 73 7d 94 8c 0a 6f 70 65 6e 5f 68 74 74 70 73 94 6a 60 02 00 00 73 8c 11 4d .K.Kt..s}...open_https.j`...s..M
57200 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 94 74 94 8c 12 4d 32 43 72 79 70 74 6f 2e 6d 32 2Crypto.m2urllib.t...M2Crypto.m2
57220 75 72 6c 6c 69 62 32 94 28 58 d4 18 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d urllib2.(X....from.__future__.im
57240 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 0a 4d 32 43 72 79 70 port.absolute_import..""".M2Cryp
57260 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 72 6c 6c 69 to.enhancement.to.Python's.urlli
57280 62 32 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 2e 0a 0a b2.for.handling.'https'.url's...
572a0 43 6f 64 65 20 66 72 6f 6d 20 75 72 6c 6c 69 62 32 20 69 73 20 43 6f 70 79 72 69 67 68 74 20 28 Code.from.urllib2.is.Copyright.(
572c0 63 29 20 32 30 30 31 2c 20 32 30 30 32 2c 20 32 30 30 33 2c 20 32 30 30 34 2c 20 32 30 30 35 2c c).2001,.2002,.2003,.2004,.2005,
572e0 20 32 30 30 36 2c 20 32 30 30 37 0a 50 79 74 68 6f 6e 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e .2006,.2007.Python.Software.Foun
57300 64 61 74 69 6f 6e 3b 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 0a 0a 53 75 6d dation;.All.Rights.Reserved..Sum
57320 6d 61 72 79 20 6f 66 20 63 68 61 6e 67 65 73 3a 0a 20 2d 20 55 73 65 20 61 6e 20 48 54 54 50 53 mary.of.changes:..-.Use.an.HTTPS
57340 50 72 6f 78 79 43 6f 6e 6e 65 63 74 69 6f 6e 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 69 ProxyConnection.if.the.request.i
57360 73 20 67 6f 69 6e 67 20 74 68 72 6f 75 67 68 20 61 20 70 72 6f 78 79 2e 0a 20 2d 20 41 64 64 20 s.going.through.a.proxy...-.Add.
57380 74 68 65 20 53 53 4c 20 63 6f 6e 74 65 78 74 20 74 6f 20 74 68 65 20 68 74 74 70 73 20 63 6f 6e the.SSL.context.to.the.https.con
573a0 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 70 65 72 66 6f 72 6d 69 6e 67 20 68 74 74 70 73 5f 6f 70 nection.when.performing.https_op
573c0 65 6e 2e 0a 20 2d 20 41 64 64 20 74 68 65 20 4d 32 43 72 79 70 74 6f 20 48 54 54 50 53 48 61 6e en...-.Add.the.M2Crypto.HTTPSHan
573e0 64 6c 65 72 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 61 20 64 65 66 61 75 6c 74 20 6f 70 65 dler.when.building.a.default.ope
57400 6e 65 72 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 0a 66 72 6f 6d 20 4d 32 ner.."""..import.socket..from.M2
57420 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 53 53 4c 2c 20 68 74 74 70 73 6c 69 62 2c 20 73 69 78 Crypto.import.SSL,.httpslib,.six
57440 0a 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 6c 69 62 ..from.M2Crypto.six.moves.urllib
57460 5f 70 61 72 73 65 20 69 6d 70 6f 72 74 20 75 72 6c 64 65 66 72 61 67 2c 20 75 72 6c 70 61 72 73 _parse.import.urldefrag,.urlpars
57480 65 20 61 73 20 75 72 6c 5f 70 61 72 73 65 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 e.as.url_parse.from.M2Crypto.six
574a0 2e 6d 6f 76 65 73 2e 75 72 6c 6c 69 62 5f 72 65 73 70 6f 6e 73 65 20 69 6d 70 6f 72 74 20 61 64 .moves.urllib_response.import.ad
574c0 64 69 6e 66 6f 75 72 6c 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 4f 70 74 69 dinfourl.from.typing.import.Opti
574e0 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 23 20 73 69 78 2e 6d 6f 76 65 73 20 64 6f 65 73 6e 27 onal..#.noqa..#.six.moves.doesn'
57500 74 20 73 75 70 70 6f 72 74 20 73 74 61 72 20 69 6d 70 6f 72 74 73 0a 69 66 20 73 69 78 2e 50 59 t.support.star.imports.if.six.PY
57520 33 3a 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 20 69 6d 70 6f 72 3:.....from.urllib.request.impor
57540 74 20 2a 20 20 23 20 6e 6f 71 61 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 77 61 6e 74 20 74 t.*..#.noqa.other.modules.want.t
57560 6f 20 69 6d 70 6f 72 74 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 65 72 72 6f 72 20 69 o.import.....from.urllib.error.i
57580 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 20 6f 74 68 65 72 20 6d 6f 64 75 6c 65 73 20 77 61 mport.*..#.noqa.other.modules.wa
575a0 6e 74 20 74 6f 20 69 6d 70 6f 72 74 0a 65 6c 73 65 3a 0a 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c nt.to.import.else:.....from.urll
575c0 69 62 32 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 ib2.import.*..#.noqa...try:.....
575e0 6d 6f 74 68 65 72 5f 63 6c 61 73 73 20 3d 20 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 mother_class.=.socket._fileobjec
57600 74 0a 65 78 63 65 70 74 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 3a 0a 20 20 20 20 6d 6f 74 t.except.AttributeError:.....mot
57620 68 65 72 5f 63 6c 61 73 73 20 3d 20 73 6f 63 6b 65 74 2e 53 6f 63 6b 65 74 49 4f 0a 0a 0a 63 6c her_class.=.socket.SocketIO...cl
57640 61 73 73 20 5f 63 6c 6f 73 69 6e 67 5f 66 69 6c 65 6f 62 6a 65 63 74 28 6d 6f 74 68 65 72 5f 63 ass._closing_fileobject(mother_c
57660 6c 61 73 73 29 3a 20 20 23 20 6e 6f 71 61 0a 20 20 20 20 22 22 22 73 6f 63 6b 65 74 2e 5f 66 69 lass):..#.noqa....."""socket._fi
57680 6c 65 6f 62 6a 65 63 74 20 74 68 61 74 20 70 72 6f 70 61 67 61 74 65 73 20 73 65 6c 66 2e 63 6c leobject.that.propagates.self.cl
576a0 6f 73 65 28 29 20 74 6f 20 74 68 65 20 73 6f 63 6b 65 74 2e 0a 0a 20 20 20 20 50 79 74 68 6f 6e ose().to.the.socket.......Python
576c0 20 32 2e 35 20 70 72 6f 76 69 64 65 73 20 74 68 69 73 20 61 73 20 73 6f 63 6b 65 74 2e 5f 66 69 .2.5.provides.this.as.socket._fi
576e0 6c 65 6f 62 6a 65 63 74 28 73 6f 63 6b 2c 20 63 6c 6f 73 65 3d 54 72 75 65 29 2e 0a 20 20 20 20 leobject(sock,.close=True)......
57700 22 22 22 0a 0a 23 20 66 6f 72 20 70 79 74 68 6f 6e 20 33 0a 74 72 79 3a 0a 20 20 20 20 41 62 73 """..#.for.python.3.try:.....Abs
57720 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f tractHTTPHandler.except.NameErro
57740 72 3a 0a 20 20 20 20 23 20 73 6f 6d 65 68 6f 77 20 74 68 69 73 20 77 6f 6e 27 74 20 67 65 74 20 r:.....#.somehow.this.won't.get.
57760 69 6d 70 6f 72 74 65 64 20 62 79 20 74 68 65 20 69 6d 70 6f 72 74 20 2a 20 61 62 6f 76 65 0a 20 imported.by.the.import.*.above..
57780 20 20 20 69 6d 70 6f 72 74 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 0a 20 20 20 20 41 62 73 ...import.urllib.request.....Abs
577a0 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 tractHTTPHandler.=.urllib.reques
577c0 74 2e 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 0a 0a 0a 63 6c 61 73 73 20 48 54 t.AbstractHTTPHandler...class.HT
577e0 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 6e 64 6c 65 72 29 3a TPSHandler(AbstractHTTPHandler):
57800 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 73 6c 5f 63 6f 6e 74 .....def.__init__(self,.ssl_cont
57820 65 78 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 53 53 4c 2e ext=None):.........#.type:.(SSL.
57840 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 41 62 73 74 72 61 63 Context).->.None.........Abstrac
57860 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 0a 20 20 20 tHTTPHandler.__init__(self).....
57880 20 20 20 20 20 69 66 20 73 73 6c 5f 63 6f 6e 74 65 78 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a .....if.ssl_context.is.not.None:
578a0 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 6e 63 65 28 73 .............assert.isinstance(s
578c0 73 6c 5f 63 6f 6e 74 65 78 74 2c 20 53 53 4c 2e 43 6f 6e 74 65 78 74 29 2c 20 73 73 6c 5f 63 6f sl_context,.SSL.Context),.ssl_co
578e0 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 73 73 6c ntext.............self.ctx.=.ssl
57900 5f 63 6f 6e 74 65 78 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 _context.........else:..........
57920 20 20 20 73 65 6c 66 2e 63 74 78 20 3d 20 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 0a 20 20 20 ...self.ctx.=.SSL.Context().....
57940 20 23 20 43 6f 70 69 65 64 20 66 72 6f 6d 20 75 72 6c 6c 69 62 32 2c 20 73 6f 20 77 65 20 63 61 .#.Copied.from.urllib2,.so.we.ca
57960 6e 20 73 65 74 20 74 68 65 20 73 73 6c 20 63 6f 6e 74 65 78 74 2e 0a 20 20 20 20 64 65 66 20 68 n.set.the.ssl.context......def.h
57980 74 74 70 73 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 23 20 ttps_open(self,.req):.........#.
579a0 74 79 70 65 3a 20 28 52 65 71 75 65 73 74 29 20 2d 3e 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 type:.(Request).->.addinfourl...
579c0 20 20 20 20 20 20 22 22 22 52 65 74 75 72 6e 20 61 6e 20 61 64 64 69 6e 66 6f 75 72 6c 20 6f 62 ......"""Return.an.addinfourl.ob
579e0 6a 65 63 74 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 2c 20 75 73 69 6e 67 20 68 74 74 70 ject.for.the.request,.using.http
57a00 5f 63 6c 61 73 73 2e 0a 0a 20 20 20 20 20 20 20 20 68 74 74 70 5f 63 6c 61 73 73 20 6d 75 73 74 _class...........http_class.must
57a20 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 20 41 50 .implement.the.HTTPConnection.AP
57a40 49 20 66 72 6f 6d 20 68 74 74 70 6c 69 62 2e 0a 20 20 20 20 20 20 20 20 54 68 65 20 61 64 64 69 I.from.httplib..........The.addi
57a60 6e 66 6f 75 72 6c 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 61 20 66 69 6c 65 2d 6c 69 nfourl.return.value.is.a.file-li
57a80 6b 65 20 6f 62 6a 65 63 74 2e 20 20 49 74 20 61 6c 73 6f 0a 20 20 20 20 20 20 20 20 68 61 73 20 ke.object...It.also.........has.
57aa0 6d 65 74 68 6f 64 73 20 61 6e 64 20 61 74 74 72 69 62 75 74 65 73 20 69 6e 63 6c 75 64 69 6e 67 methods.and.attributes.including
57ac0 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 69 6e 66 6f 28 29 3a 20 72 65 74 75 72 6e 20 :..............-.info():.return.
57ae0 61 20 6d 69 6d 65 74 6f 6f 6c 73 2e 4d 65 73 73 61 67 65 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 a.mimetools.Message.object.for.t
57b00 68 65 20 68 65 61 64 65 72 73 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 67 65 74 75 72 6c he.headers..............-.geturl
57b20 28 29 3a 20 72 65 74 75 72 6e 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 72 65 71 75 65 73 74 20 ():.return.the.original.request.
57b40 55 52 4c 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 63 6f 64 65 3a 20 48 54 54 50 20 73 74 URL..............-.code:.HTTP.st
57b60 61 74 75 73 20 63 6f 64 65 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 atus.code.........""".........#.
57b80 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 2e 33 2f 6c 69 62 72 https://docs.python.org/3.3/libr
57ba0 61 72 79 2f 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 68 74 6d 6c 23 75 72 6c 6c 69 62 2e 72 ary/urllib.request.html#urllib.r
57bc0 65 71 75 65 73 74 2e 52 65 71 75 65 73 74 2e 67 65 74 5f 68 6f 73 74 0a 20 20 20 20 20 20 20 20 equest.Request.get_host.........
57be0 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 20 20 20 20 try:.....#.up.to.python-3.2.....
57c00 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 2e 67 65 74 5f 68 6f 73 74 28 29 0a 20 20 ........host.=.req.get_host()...
57c20 20 20 20 20 20 20 65 78 63 65 70 74 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 3a 20 20 23 20 ......except.AttributeError:..#.
57c40 66 72 6f 6d 20 70 79 74 68 6f 6e 2d 33 2e 33 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 from.python-3.3.............host
57c60 20 3d 20 72 65 71 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 .=.req.host.........if.not.host:
57c80 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.
57ca0 68 6f 73 74 20 67 69 76 65 6e 27 29 0a 0a 20 20 20 20 20 20 20 20 23 20 4f 75 72 20 63 68 61 6e host.given')..........#.Our.chan
57cc0 67 65 3a 20 43 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 77 65 27 72 65 20 75 73 69 6e 67 20 ge:.Check.to.see.if.we're.using.
57ce0 61 20 70 72 6f 78 79 2e 0a 20 20 20 20 20 20 20 20 23 20 54 68 65 6e 20 63 72 65 61 74 65 20 61 a.proxy..........#.Then.create.a
57d00 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 73 6c 2d 61 77 61 72 65 20 63 6f 6e 6e 65 63 74 69 n.appropriate.ssl-aware.connecti
57d20 6f 6e 2e 0a 20 20 20 20 20 20 20 20 66 75 6c 6c 5f 75 72 6c 20 3d 20 72 65 71 2e 67 65 74 5f 66 on..........full_url.=.req.get_f
57d40 75 6c 6c 5f 75 72 6c 28 29 0a 20 20 20 20 20 20 20 20 74 61 72 67 65 74 5f 68 6f 73 74 20 3d 20 ull_url().........target_host.=.
57d60 75 72 6c 5f 70 61 72 73 65 28 66 75 6c 6c 5f 75 72 6c 29 5b 31 5d 0a 0a 20 20 20 20 20 20 20 20 url_parse(full_url)[1]..........
57d80 69 66 20 74 61 72 67 65 74 5f 68 6f 73 74 20 21 3d 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 if.target_host.!=.host:.........
57da0 20 20 20 20 72 65 71 75 65 73 74 5f 75 72 69 20 3d 20 75 72 6c 64 65 66 72 61 67 28 66 75 6c 6c ....request_uri.=.urldefrag(full
57dc0 5f 75 72 6c 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 20 3d 20 68 74 74 70 73 6c 69 _url)[0].............h.=.httpsli
57de0 62 2e 50 72 6f 78 79 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 b.ProxyHTTPSConnection(host=host
57e00 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 20 20 20 20 ,.ssl_context=self.ctx).........
57e20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 20 20 20 20 20 23 20 75 70 20 else:.............try:.....#.up.
57e40 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 20 20 20 20 72 65 to.python-3.2.................re
57e60 71 75 65 73 74 5f 75 72 69 20 3d 20 72 65 71 2e 67 65 74 5f 73 65 6c 65 63 74 6f 72 28 29 0a 20 quest_uri.=.req.get_selector()..
57e80 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 41 74 74 72 69 62 75 74 65 45 72 72 6f 72 ...........except.AttributeError
57ea0 3a 20 20 23 20 66 72 6f 6d 20 70 79 74 68 6f 6e 2d 33 2e 33 0a 20 20 20 20 20 20 20 20 20 20 20 :..#.from.python-3.3............
57ec0 20 20 20 20 20 72 65 71 75 65 73 74 5f 75 72 69 20 3d 20 72 65 71 2e 73 65 6c 65 63 74 6f 72 0a .....request_uri.=.req.selector.
57ee0 20 20 20 20 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 ............h.=.httpslib.HTTPSCo
57f00 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=
57f20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 23 20 45 6e 64 20 6f 75 72 20 63 68 61 6e self.ctx).........#.End.our.chan
57f40 67 65 0a 20 20 20 20 20 20 20 20 68 2e 73 65 74 5f 64 65 62 75 67 6c 65 76 65 6c 28 73 65 6c 66 ge.........h.set_debuglevel(self
57f60 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 64 65 72 73 20 3d ._debuglevel)..........headers.=
57f80 20 64 69 63 74 28 72 65 71 2e 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 .dict(req.headers).........heade
57fa0 72 73 2e 75 70 64 61 74 65 28 72 65 71 2e 75 6e 72 65 64 69 72 65 63 74 65 64 5f 68 64 72 73 29 rs.update(req.unredirected_hdrs)
57fc0 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 77 61 6e 74 20 74 6f 20 6d 61 6b 65 20 61 6e 20 48 54 .........#.We.want.to.make.an.HT
57fe0 54 50 2f 31 2e 31 20 72 65 71 75 65 73 74 2c 20 62 75 74 20 74 68 65 20 61 64 64 69 6e 66 6f 75 TP/1.1.request,.but.the.addinfou
58000 72 6c 0a 20 20 20 20 20 20 20 20 23 20 63 6c 61 73 73 20 69 73 6e 27 74 20 70 72 65 70 61 72 65 rl.........#.class.isn't.prepare
58020 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 61 20 70 65 72 73 69 73 74 65 6e 74 20 63 6f 6e 6e d.to.deal.with.a.persistent.conn
58040 65 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 23 20 49 74 20 77 69 6c 6c 20 74 72 79 20 74 6f ection..........#.It.will.try.to
58060 20 72 65 61 64 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e 67 20 64 61 74 61 20 66 72 6f 6d 20 74 68 .read.all.remaining.data.from.th
58080 65 20 73 6f 63 6b 65 74 2c 0a 20 20 20 20 20 20 20 20 23 20 77 68 69 63 68 20 77 69 6c 6c 20 62 e.socket,.........#.which.will.b
580a0 6c 6f 63 6b 20 77 68 69 6c 65 20 74 68 65 20 73 65 72 76 65 72 20 77 61 69 74 73 20 66 6f 72 20 lock.while.the.server.waits.for.
580c0 74 68 65 20 6e 65 78 74 20 72 65 71 75 65 73 74 2e 0a 20 20 20 20 20 20 20 20 23 20 53 6f 20 6d the.next.request..........#.So.m
580e0 61 6b 65 20 73 75 72 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 67 65 74 73 20 63 6c 6f ake.sure.the.connection.gets.clo
58100 73 65 64 20 61 66 74 65 72 20 74 68 65 20 28 6f 6e 6c 79 29 0a 20 20 20 20 20 20 20 20 23 20 72 sed.after.the.(only).........#.r
58120 65 71 75 65 73 74 2e 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 22 43 6f 6e 6e 65 63 74 equest..........headers["Connect
58140 69 6f 6e 22 5d 20 3d 20 22 63 6c 6f 73 65 22 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 ion"].=."close".........try:....
58160 20 20 20 20 20 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 .........h.request(req.get_metho
58180 64 28 29 2c 20 72 65 71 75 65 73 74 5f 75 72 69 2c 20 72 65 71 2e 64 61 74 61 2c 20 68 65 61 64 d(),.request_uri,.req.data,.head
581a0 65 72 73 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 6e ers).............r.=.h.getrespon
581c0 73 65 28 29 0a 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 6f 72 se().........except.socket.error
581e0 20 61 73 20 65 72 72 3a 20 20 23 20 58 58 58 20 77 68 61 74 20 65 72 72 6f 72 3f 0a 20 20 20 20 .as.err:..#.XXX.what.error?.....
58200 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 65 72 72 29 0a 0a 20 20 20 ........raise.URLError(err).....
58220 20 20 20 20 20 23 20 50 69 63 6b 20 61 70 61 72 74 20 74 68 65 20 48 54 54 50 52 65 73 70 6f 6e .....#.Pick.apart.the.HTTPRespon
58240 73 65 20 6f 62 6a 65 63 74 20 74 6f 20 67 65 74 20 74 68 65 20 61 64 64 69 6e 66 6f 75 72 6c 0a se.object.to.get.the.addinfourl.
58260 20 20 20 20 20 20 20 20 23 20 6f 62 6a 65 63 74 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 70 72 6f ........#.object.initialized.pro
58280 70 65 72 6c 79 2e 0a 0a 20 20 20 20 20 20 20 20 23 20 57 72 61 70 20 74 68 65 20 48 54 54 50 52 perly...........#.Wrap.the.HTTPR
582a0 65 73 70 6f 6e 73 65 20 6f 62 6a 65 63 74 20 69 6e 20 73 6f 63 6b 65 74 27 73 20 66 69 6c 65 20 esponse.object.in.socket's.file.
582c0 6f 62 6a 65 63 74 20 61 64 61 70 74 65 72 0a 20 20 20 20 20 20 20 20 23 20 66 6f 72 20 57 69 6e object.adapter.........#.for.Win
582e0 64 6f 77 73 2e 20 20 54 68 61 74 20 61 64 61 70 74 65 72 20 63 61 6c 6c 73 20 72 65 63 76 28 29 dows...That.adapter.calls.recv()
58300 2c 20 73 6f 20 64 65 6c 65 67 61 74 65 20 72 65 63 76 28 29 0a 20 20 20 20 20 20 20 20 23 20 74 ,.so.delegate.recv().........#.t
58320 6f 20 72 65 61 64 28 29 2e 20 20 54 68 69 73 20 77 65 69 72 64 20 77 72 61 70 70 69 6e 67 20 61 o.read()...This.weird.wrapping.a
58340 6c 6c 6f 77 73 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 6f 62 6a 65 63 74 20 74 6f 0a 20 20 20 llows.the.returned.object.to....
58360 20 20 20 20 20 23 20 68 61 76 65 20 72 65 61 64 6c 69 6e 65 28 29 20 61 6e 64 20 72 65 61 64 6c .....#.have.readline().and.readl
58380 69 6e 65 73 28 29 20 6d 65 74 68 6f 64 73 2e 0a 20 20 20 20 20 20 20 20 72 2e 72 65 63 76 20 3d ines().methods..........r.recv.=
583a0 20 72 2e 72 65 61 64 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 78 2e 50 59 32 3a 0a 20 20 20 20 .r.read.........if.six.PY2:.....
583c0 20 20 20 20 20 20 20 20 66 70 20 3d 20 73 6f 63 6b 65 74 2e 5f 66 69 6c 65 6f 62 6a 65 63 74 28 ........fp.=.socket._fileobject(
583e0 72 2c 20 63 6c 6f 73 65 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 r,.close=True).........else:....
58400 20 20 20 20 20 20 20 20 20 72 2e 5f 64 65 63 72 65 66 5f 73 6f 63 6b 65 74 69 6f 73 20 3d 20 6c .........r._decref_socketios.=.l
58420 61 6d 62 64 61 3a 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 2e 73 73 6c 20 3d 20 ambda:.None.............r.ssl.=.
58440 68 2e 73 6f 63 6b 2e 73 73 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 2e 5f 74 69 6d 65 6f 75 h.sock.ssl.............r._timeou
58460 74 20 3d 20 2d 31 2e 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 2e 72 65 63 76 5f 69 6e 74 6f t.=.-1.0.............r.recv_into
58480 20 3d 20 72 2e 72 65 61 64 69 6e 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 20 3d 20 73 .=.r.readinto.............fp.=.s
584a0 6f 63 6b 65 74 2e 53 6f 63 6b 65 74 49 4f 28 72 2c 20 27 72 62 27 29 0a 0a 20 20 20 20 20 20 20 ocket.SocketIO(r,.'rb').........
584c0 20 72 65 73 70 20 3d 20 61 64 64 69 6e 66 6f 75 72 6c 28 66 70 2c 20 72 2e 6d 73 67 2c 20 72 65 .resp.=.addinfourl(fp,.r.msg,.re
584e0 71 2e 67 65 74 5f 66 75 6c 6c 5f 75 72 6c 28 29 29 0a 20 20 20 20 20 20 20 20 72 65 73 70 2e 63 q.get_full_url()).........resp.c
58500 6f 64 65 20 3d 20 72 2e 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 72 65 73 70 2e 6d 73 67 20 ode.=.r.status.........resp.msg.
58520 3d 20 72 2e 72 65 61 73 6f 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 0a 0a =.r.reason.........return.resp..
58540 20 20 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 ....https_request.=.AbstractHTTP
58560 48 61 6e 64 6c 65 72 2e 64 6f 5f 72 65 71 75 65 73 74 5f 0a 0a 0a 23 20 43 6f 70 69 65 64 20 66 Handler.do_request_...#.Copied.f
58580 72 6f 6d 20 75 72 6c 6c 69 62 32 20 77 69 74 68 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 66 rom.urllib2.with.modifications.f
585a0 6f 72 20 73 73 6c 0a 64 65 66 20 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 73 73 6c 5f 63 6f 6e 74 or.ssl.def.build_opener(ssl_cont
585c0 65 78 74 3d 4e 6f 6e 65 2c 20 2a 68 61 6e 64 6c 65 72 73 29 3a 0a 20 20 20 20 23 20 74 79 70 65 ext=None,.*handlers):.....#.type
585e0 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 53 53 4c 2e 43 6f 6e 74 65 78 74 5d 2c 20 2a 6f 62 6a 65 63 :.(Optional[SSL.Context],.*objec
58600 74 29 20 2d 3e 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 0a 20 20 20 20 22 22 22 43 72 65 61 t).->.OpenerDirector....."""Crea
58620 74 65 20 61 6e 20 6f 70 65 6e 65 72 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 61 20 6c 69 73 74 20 te.an.opener.object.from.a.list.
58640 6f 66 20 68 61 6e 64 6c 65 72 73 2e 0a 0a 20 20 20 20 54 68 65 20 6f 70 65 6e 65 72 20 77 69 6c of.handlers.......The.opener.wil
58660 6c 20 75 73 65 20 73 65 76 65 72 61 6c 20 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 73 2c 20 l.use.several.default.handlers,.
58680 69 6e 63 6c 75 64 69 6e 67 20 73 75 70 70 6f 72 74 0a 20 20 20 20 66 6f 72 20 48 54 54 50 20 61 including.support.....for.HTTP.a
586a0 6e 64 20 46 54 50 2e 0a 0a 20 20 20 20 49 66 20 61 6e 79 20 6f 66 20 74 68 65 20 68 61 6e 64 6c nd.FTP.......If.any.of.the.handl
586c0 65 72 73 20 70 61 73 73 65 64 20 61 73 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 73 75 62 63 ers.passed.as.arguments.are.subc
586e0 6c 61 73 73 65 73 20 6f 66 20 74 68 65 0a 20 20 20 20 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 lasses.of.the.....default.handle
58700 72 73 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 72 73 20 77 69 6c 6c 20 6e 6f rs,.the.default.handlers.will.no
58720 74 20 62 65 20 75 73 65 64 2e 0a 20 20 20 20 22 22 22 0a 0a 20 20 20 20 64 65 66 20 69 73 63 6c t.be.used......"""......def.iscl
58740 61 73 73 28 6f 62 6a 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 69 6e 73 74 61 ass(obj):.........return.isinsta
58760 6e 63 65 28 6f 62 6a 2c 20 74 79 70 65 29 20 6f 72 20 68 61 73 61 74 74 72 28 6f 62 6a 2c 20 22 nce(obj,.type).or.hasattr(obj,."
58780 5f 5f 62 61 73 65 73 5f 5f 22 29 0a 0a 20 20 20 20 6f 70 65 6e 65 72 20 3d 20 4f 70 65 6e 65 72 __bases__")......opener.=.Opener
587a0 44 69 72 65 63 74 6f 72 28 29 0a 20 20 20 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 20 3d Director().....default_classes.=
587c0 20 5b 50 72 6f 78 79 48 61 6e 64 6c 65 72 2c 20 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 .[ProxyHandler,.UnknownHandler,.
587e0 48 54 54 50 48 61 6e 64 6c 65 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 HTTPHandler,....................
58800 20 20 20 20 48 54 54 50 44 65 66 61 75 6c 74 45 72 72 6f 72 48 61 6e 64 6c 65 72 2c 20 48 54 54 ....HTTPDefaultErrorHandler,.HTT
58820 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PRedirectHandler,...............
58840 20 20 20 20 20 20 20 20 20 46 54 50 48 61 6e 64 6c 65 72 2c 20 46 69 6c 65 48 61 6e 64 6c 65 72 .........FTPHandler,.FileHandler
58860 2c 20 48 54 54 50 45 72 72 6f 72 50 72 6f 63 65 73 73 6f 72 5d 0a 20 20 20 20 73 6b 69 70 20 3d ,.HTTPErrorProcessor].....skip.=
58880 20 5b 5d 0a 20 20 20 20 66 6f 72 20 6b 6c 61 73 73 20 69 6e 20 64 65 66 61 75 6c 74 5f 63 6c 61 .[].....for.klass.in.default_cla
588a0 73 73 65 73 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 63 68 65 63 6b 20 69 6e 20 68 61 6e 64 6c sses:.........for.check.in.handl
588c0 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 63 6c 61 73 73 28 63 68 65 63 ers:.............if.isclass(chec
588e0 6b 29 3a 0a 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 k):.................if.issubclas
58900 73 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 20 20 20 20 s(check,.klass):................
58920 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 20 20 20 20 .....skip.append(klass).........
58940 20 20 20 20 65 6c 69 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 ....elif.isinstance(check,.klass
58960 29 3a 0a 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 6e 64 28 6b ):.................skip.append(k
58980 6c 61 73 73 29 0a 20 20 20 20 66 6f 72 20 6b 6c 61 73 73 20 69 6e 20 73 6b 69 70 3a 0a 20 20 20 lass).....for.klass.in.skip:....
589a0 20 20 20 20 20 64 65 66 61 75 6c 74 5f 63 6c 61 73 73 65 73 2e 72 65 6d 6f 76 65 28 6b 6c 61 73 .....default_classes.remove(klas
589c0 73 29 0a 0a 20 20 20 20 66 6f 72 20 6b 6c 61 73 73 20 69 6e 20 64 65 66 61 75 6c 74 5f 63 6c 61 s)......for.klass.in.default_cla
589e0 73 73 65 73 3a 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 sses:.........opener.add_handler
58a00 28 6b 6c 61 73 73 28 29 29 0a 0a 20 20 20 20 23 20 41 64 64 20 74 68 65 20 48 54 54 50 53 20 68 (klass())......#.Add.the.HTTPS.h
58a20 61 6e 64 6c 65 72 20 77 69 74 68 20 73 73 6c 5f 63 6f 6e 74 65 78 74 0a 20 20 20 20 69 66 20 48 andler.with.ssl_context.....if.H
58a40 54 54 50 53 48 61 6e 64 6c 65 72 20 6e 6f 74 20 69 6e 20 73 6b 69 70 3a 0a 20 20 20 20 20 20 20 TTPSHandler.not.in.skip:........
58a60 20 6f 70 65 6e 65 72 2e 61 64 64 5f 68 61 6e 64 6c 65 72 28 48 54 54 50 53 48 61 6e 64 6c 65 72 .opener.add_handler(HTTPSHandler
58a80 28 73 73 6c 5f 63 6f 6e 74 65 78 74 29 29 0a 0a 20 20 20 20 66 6f 72 20 68 20 69 6e 20 68 61 6e (ssl_context))......for.h.in.han
58aa0 64 6c 65 72 73 3a 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 63 6c 61 73 73 28 68 29 3a 0a 20 20 dlers:.........if.isclass(h):...
58ac0 20 20 20 20 20 20 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 ..........h.=.h().........opener
58ae0 2e 61 64 64 5f 68 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 .add_handler(h).....return.opene
58b00 72 0a 94 7d 94 28 8c 13 5f 63 6c 6f 73 69 6e 67 5f 66 69 6c 65 6f 62 6a 65 63 74 94 6a 37 02 00 r..}.(.._closing_fileobject.j7..
58b20 00 4b 26 4b 2a 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 .K&K*....HTTPSHandler.__init__.j
58b40 18 25 00 00 4b 36 4b 3e 87 94 8c 17 48 54 54 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 6f .%..K6K>....HTTPSHandler.https_o
58b60 70 65 6e 94 6a 18 25 00 00 4b 41 4b 8b 87 94 8c 0c 48 54 54 50 53 48 61 6e 64 6c 65 72 94 6a 37 pen.j.%..KAK.....HTTPSHandler.j7
58b80 02 00 00 4b 35 4b 8d 87 94 8c 0c 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 6a 18 25 00 00 4b 91 4b ...K5K.....build_opener.j.%..K.K
58ba0 b9 87 94 75 7d 94 28 8c 0c 48 54 54 50 53 48 61 6e 64 6c 65 72 94 6a 60 02 00 00 8c 17 48 54 54 ...u}.(..HTTPSHandler.j`.....HTT
58bc0 50 53 48 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 6f 70 65 6e 94 6a 60 02 00 00 8c 0c 62 75 69 6c PSHandler.https_open.j`.....buil
58be0 64 5f 6f 70 65 6e 65 72 94 6a 60 02 00 00 75 8c 12 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c d_opener.j`...u..M2Crypto.m2urll
58c00 69 62 32 94 74 94 8c 0e 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 94 28 58 bc 8b 01 00 22 22 22 ib2.t...urllib.request.(X...."""
58c20 41 6e 20 65 78 74 65 6e 73 69 62 6c 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 6f 70 65 6e 69 6e An.extensible.library.for.openin
58c40 67 20 55 52 4c 73 20 75 73 69 6e 67 20 61 20 76 61 72 69 65 74 79 20 6f 66 20 70 72 6f 74 6f 63 g.URLs.using.a.variety.of.protoc
58c60 6f 6c 73 0a 0a 54 68 65 20 73 69 6d 70 6c 65 73 74 20 77 61 79 20 74 6f 20 75 73 65 20 74 68 69 ols..The.simplest.way.to.use.thi
58c80 73 20 6d 6f 64 75 6c 65 20 69 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 75 72 6c 6f 70 65 6e 20 s.module.is.to.call.the.urlopen.
58ca0 66 75 6e 63 74 69 6f 6e 2c 0a 77 68 69 63 68 20 61 63 63 65 70 74 73 20 61 20 73 74 72 69 6e 67 function,.which.accepts.a.string
58cc0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 55 52 4c 20 6f 72 20 61 20 52 65 71 75 65 73 74 20 6f .containing.a.URL.or.a.Request.o
58ce0 62 6a 65 63 74 20 28 64 65 73 63 72 69 62 65 64 0a 62 65 6c 6f 77 29 2e 20 20 49 74 20 6f 70 65 bject.(described.below)...It.ope
58d00 6e 73 20 74 68 65 20 55 52 4c 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c ns.the.URL.and.returns.the.resul
58d20 74 73 20 61 73 20 66 69 6c 65 2d 6c 69 6b 65 0a 6f 62 6a 65 63 74 3b 20 74 68 65 20 72 65 74 75 ts.as.file-like.object;.the.retu
58d40 72 6e 65 64 20 6f 62 6a 65 63 74 20 68 61 73 20 73 6f 6d 65 20 65 78 74 72 61 20 6d 65 74 68 6f rned.object.has.some.extra.metho
58d60 64 73 20 64 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 2e 0a 0a 54 68 65 20 4f 70 65 6e 65 72 44 ds.described.below...The.OpenerD
58d80 69 72 65 63 74 6f 72 20 6d 61 6e 61 67 65 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 irector.manages.a.collection.of.
58da0 48 61 6e 64 6c 65 72 20 6f 62 6a 65 63 74 73 20 74 68 61 74 20 64 6f 0a 61 6c 6c 20 74 68 65 20 Handler.objects.that.do.all.the.
58dc0 61 63 74 75 61 6c 20 77 6f 72 6b 2e 20 20 45 61 63 68 20 48 61 6e 64 6c 65 72 20 69 6d 70 6c 65 actual.work...Each.Handler.imple
58de0 6d 65 6e 74 73 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 70 72 6f 74 6f 63 6f 6c 20 6f 72 0a 6f ments.a.particular.protocol.or.o
58e00 70 74 69 6f 6e 2e 20 20 54 68 65 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 20 69 73 20 61 20 ption...The.OpenerDirector.is.a.
58e20 63 6f 6d 70 6f 73 69 74 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 6e 76 6f 6b 65 73 20 74 68 composite.object.that.invokes.th
58e40 65 0a 48 61 6e 64 6c 65 72 73 20 6e 65 65 64 65 64 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 72 65 e.Handlers.needed.to.open.the.re
58e60 71 75 65 73 74 65 64 20 55 52 4c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 0a 48 quested.URL...For.example,.the.H
58e80 54 54 50 48 61 6e 64 6c 65 72 20 70 65 72 66 6f 72 6d 73 20 48 54 54 50 20 47 45 54 20 61 6e 64 TTPHandler.performs.HTTP.GET.and
58ea0 20 50 4f 53 54 20 72 65 71 75 65 73 74 73 20 61 6e 64 20 64 65 61 6c 73 20 77 69 74 68 0a 6e 6f .POST.requests.and.deals.with.no
58ec0 6e 2d 65 72 72 6f 72 20 72 65 74 75 72 6e 73 2e 20 20 54 68 65 20 48 54 54 50 52 65 64 69 72 65 n-error.returns...The.HTTPRedire
58ee0 63 74 48 61 6e 64 6c 65 72 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 61 6c 73 20 77 69 ctHandler.automatically.deals.wi
58f00 74 68 0a 48 54 54 50 20 33 30 31 2c 20 33 30 32 2c 20 33 30 33 20 61 6e 64 20 33 30 37 20 72 65 th.HTTP.301,.302,.303.and.307.re
58f20 64 69 72 65 63 74 20 65 72 72 6f 72 73 2c 20 61 6e 64 20 74 68 65 20 48 54 54 50 44 69 67 65 73 direct.errors,.and.the.HTTPDiges
58f40 74 41 75 74 68 48 61 6e 64 6c 65 72 0a 64 65 61 6c 73 20 77 69 74 68 20 64 69 67 65 73 74 20 61 tAuthHandler.deals.with.digest.a
58f60 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2e 0a 0a 75 72 6c 6f 70 65 6e 28 75 72 6c 2c 20 64 61 74 uthentication...urlopen(url,.dat
58f80 61 3d 4e 6f 6e 65 29 20 2d 2d 20 42 61 73 69 63 20 75 73 61 67 65 20 69 73 20 74 68 65 20 73 61 a=None).--.Basic.usage.is.the.sa
58fa0 6d 65 20 61 73 20 6f 72 69 67 69 6e 61 6c 0a 75 72 6c 6c 69 62 2e 20 20 70 61 73 73 20 74 68 65 me.as.original.urllib...pass.the
58fc0 20 75 72 6c 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 64 61 74 61 20 74 6f 20 70 6f 73 74 .url.and.optionally.data.to.post
58fe0 20 74 6f 20 61 6e 20 48 54 54 50 20 55 52 4c 2c 20 61 6e 64 0a 67 65 74 20 61 20 66 69 6c 65 2d .to.an.HTTP.URL,.and.get.a.file-
59000 6c 69 6b 65 20 6f 62 6a 65 63 74 20 62 61 63 6b 2e 20 20 4f 6e 65 20 64 69 66 66 65 72 65 6e 63 like.object.back...One.differenc
59020 65 20 69 73 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 61 6c 73 6f 20 70 61 73 73 0a 61 20 52 65 e.is.that.you.can.also.pass.a.Re
59040 71 75 65 73 74 20 69 6e 73 74 61 6e 63 65 20 69 6e 73 74 65 61 64 20 6f 66 20 55 52 4c 2e 20 20 quest.instance.instead.of.URL...
59060 52 61 69 73 65 73 20 61 20 55 52 4c 45 72 72 6f 72 20 28 73 75 62 63 6c 61 73 73 20 6f 66 0a 4f Raises.a.URLError.(subclass.of.O
59080 53 45 72 72 6f 72 29 3b 20 66 6f 72 20 48 54 54 50 20 65 72 72 6f 72 73 2c 20 72 61 69 73 65 73 SError);.for.HTTP.errors,.raises
590a0 20 61 6e 20 48 54 54 50 45 72 72 6f 72 2c 20 77 68 69 63 68 20 63 61 6e 20 61 6c 73 6f 20 62 65 .an.HTTPError,.which.can.also.be
590c0 0a 74 72 65 61 74 65 64 20 61 73 20 61 20 76 61 6c 69 64 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 62 .treated.as.a.valid.response...b
590e0 75 69 6c 64 5f 6f 70 65 6e 65 72 20 2d 2d 20 46 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 63 72 65 uild_opener.--.Function.that.cre
59100 61 74 65 73 20 61 20 6e 65 77 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 20 69 6e 73 74 61 6e ates.a.new.OpenerDirector.instan
59120 63 65 2e 0a 57 69 6c 6c 20 69 6e 73 74 61 6c 6c 20 74 68 65 20 64 65 66 61 75 6c 74 20 68 61 6e ce..Will.install.the.default.han
59140 64 6c 65 72 73 2e 20 20 41 63 63 65 70 74 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 48 61 6e 64 dlers...Accepts.one.or.more.Hand
59160 6c 65 72 73 20 61 73 0a 61 72 67 75 6d 65 6e 74 73 2c 20 65 69 74 68 65 72 20 69 6e 73 74 61 6e lers.as.arguments,.either.instan
59180 63 65 73 20 6f 72 20 48 61 6e 64 6c 65 72 20 63 6c 61 73 73 65 73 20 74 68 61 74 20 69 74 20 77 ces.or.Handler.classes.that.it.w
591a0 69 6c 6c 0a 69 6e 73 74 61 6e 74 69 61 74 65 2e 20 20 49 66 20 6f 6e 65 20 6f 66 20 74 68 65 20 ill.instantiate...If.one.of.the.
591c0 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 73 75 62 63 6c 61 73 73 20 6f 66 20 74 68 65 20 64 65 argument.is.a.subclass.of.the.de
591e0 66 61 75 6c 74 0a 68 61 6e 64 6c 65 72 2c 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 6c 6c fault.handler,.the.argument.will
59200 20 62 65 20 69 6e 73 74 61 6c 6c 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 64 65 66 .be.installed.instead.of.the.def
59220 61 75 6c 74 2e 0a 0a 69 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 20 2d 2d 20 49 6e 73 74 61 6c 6c ault...install_opener.--.Install
59240 73 20 61 20 6e 65 77 20 6f 70 65 6e 65 72 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f 70 s.a.new.opener.as.the.default.op
59260 65 6e 65 72 2e 0a 0a 6f 62 6a 65 63 74 73 20 6f 66 20 69 6e 74 65 72 65 73 74 3a 0a 0a 4f 70 65 ener...objects.of.interest:..Ope
59280 6e 65 72 44 69 72 65 63 74 6f 72 20 2d 2d 20 53 65 74 73 20 75 70 20 74 68 65 20 55 73 65 72 20 nerDirector.--.Sets.up.the.User.
592a0 41 67 65 6e 74 20 61 73 20 74 68 65 20 50 79 74 68 6f 6e 2d 75 72 6c 6c 69 62 20 63 6c 69 65 6e Agent.as.the.Python-urllib.clien
592c0 74 20 61 6e 64 20 6d 61 6e 61 67 65 73 0a 74 68 65 20 48 61 6e 64 6c 65 72 20 63 6c 61 73 73 65 t.and.manages.the.Handler.classe
592e0 73 2c 20 77 68 69 6c 65 20 64 65 61 6c 69 6e 67 20 77 69 74 68 20 72 65 71 75 65 73 74 73 20 61 s,.while.dealing.with.requests.a
59300 6e 64 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 52 65 71 75 65 73 74 20 2d 2d 20 41 6e 20 6f 62 6a nd.responses...Request.--.An.obj
59320 65 63 74 20 74 68 61 74 20 65 6e 63 61 70 73 75 6c 61 74 65 73 20 74 68 65 20 73 74 61 74 65 20 ect.that.encapsulates.the.state.
59340 6f 66 20 61 20 72 65 71 75 65 73 74 2e 20 20 54 68 65 0a 73 74 61 74 65 20 63 61 6e 20 62 65 20 of.a.request...The.state.can.be.
59360 61 73 20 73 69 6d 70 6c 65 20 61 73 20 74 68 65 20 55 52 4c 2e 20 20 49 74 20 63 61 6e 20 61 6c as.simple.as.the.URL...It.can.al
59380 73 6f 20 69 6e 63 6c 75 64 65 20 65 78 74 72 61 20 48 54 54 50 0a 68 65 61 64 65 72 73 2c 20 65 so.include.extra.HTTP.headers,.e
593a0 2e 67 2e 20 61 20 55 73 65 72 2d 41 67 65 6e 74 2e 0a 0a 42 61 73 65 48 61 6e 64 6c 65 72 20 2d .g..a.User-Agent...BaseHandler.-
593c0 2d 0a 0a 69 6e 74 65 72 6e 61 6c 73 3a 0a 42 61 73 65 48 61 6e 64 6c 65 72 20 61 6e 64 20 70 61 -..internals:.BaseHandler.and.pa
593e0 72 65 6e 74 0a 5f 63 61 6c 6c 5f 63 68 61 69 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 0a 0a 45 78 rent._call_chain.conventions..Ex
59400 61 6d 70 6c 65 20 75 73 61 67 65 3a 0a 0a 69 6d 70 6f 72 74 20 75 72 6c 6c 69 62 2e 72 65 71 75 ample.usage:..import.urllib.requ
59420 65 73 74 0a 0a 23 20 73 65 74 20 75 70 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 69 6e 66 est..#.set.up.authentication.inf
59440 6f 0a 61 75 74 68 69 6e 66 6f 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 48 54 54 50 o.authinfo.=.urllib.request.HTTP
59460 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 28 29 0a 61 75 74 68 69 6e 66 6f 2e 61 64 64 5f BasicAuthHandler().authinfo.add_
59480 70 61 73 73 77 6f 72 64 28 72 65 61 6c 6d 3d 27 50 44 51 20 41 70 70 6c 69 63 61 74 69 6f 6e 27 password(realm='PDQ.Application'
594a0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 69 3d 27 68 74 74 ,.......................uri='htt
594c0 70 73 3a 2f 2f 6d 61 68 6c 65 72 3a 38 30 39 32 2f 73 69 74 65 2d 75 70 64 61 74 65 73 2e 70 79 ps://mahler:8092/site-updates.py
594e0 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 75 73 65 72 3d 27 6b ',.......................user='k
59500 6c 65 6d 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 70 61 73 73 lem',.......................pass
59520 77 64 3d 27 67 65 68 65 69 6d 24 70 61 72 6f 6c 65 27 29 0a 0a 70 72 6f 78 79 5f 73 75 70 70 6f wd='geheim$parole')..proxy_suppo
59540 72 74 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 50 72 6f 78 79 48 61 6e 64 6c 65 72 rt.=.urllib.request.ProxyHandler
59560 28 7b 22 68 74 74 70 22 20 3a 20 22 68 74 74 70 3a 2f 2f 61 68 61 64 2d 68 61 61 6d 3a 33 31 32 ({"http".:."http://ahad-haam:312
59580 38 22 7d 29 0a 0a 23 20 62 75 69 6c 64 20 61 20 6e 65 77 20 6f 70 65 6e 65 72 20 74 68 61 74 20 8"})..#.build.a.new.opener.that.
595a0 61 64 64 73 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 61 6e 64 20 63 61 63 68 69 6e 67 20 adds.authentication.and.caching.
595c0 46 54 50 20 68 61 6e 64 6c 65 72 73 0a 6f 70 65 6e 65 72 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 FTP.handlers.opener.=.urllib.req
595e0 75 65 73 74 2e 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 70 72 6f 78 79 5f 73 75 70 70 6f 72 74 2c uest.build_opener(proxy_support,
59600 20 61 75 74 68 69 6e 66 6f 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .authinfo,......................
59620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 43 ................urllib.request.C
59640 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 29 0a 0a 23 20 69 6e 73 74 61 6c 6c 20 69 74 0a 75 72 acheFTPHandler)..#.install.it.ur
59660 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 69 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 28 6f 70 65 6e llib.request.install_opener(open
59680 65 72 29 0a 0a 66 20 3d 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 2e 75 72 6c 6f 70 65 6e 28 er)..f.=.urllib.request.urlopen(
596a0 27 68 74 74 70 3a 2f 2f 77 77 77 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 27 29 0a 22 22 22 0a 0a 23 'http://www.python.org/')."""..#
596c0 20 58 58 58 20 69 73 73 75 65 73 3a 0a 23 20 49 66 20 61 6e 20 61 75 74 68 65 6e 74 69 63 61 74 .XXX.issues:.#.If.an.authenticat
596e0 69 6f 6e 20 65 72 72 6f 72 20 68 61 6e 64 6c 65 72 20 74 68 61 74 20 74 72 69 65 73 20 74 6f 20 ion.error.handler.that.tries.to.
59700 70 65 72 66 6f 72 6d 0a 23 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 66 6f 72 20 73 6f 6d perform.#.authentication.for.som
59720 65 20 72 65 61 73 6f 6e 20 62 75 74 20 66 61 69 6c 73 2c 20 68 6f 77 20 73 68 6f 75 6c 64 20 74 e.reason.but.fails,.how.should.t
59740 68 65 20 65 72 72 6f 72 20 62 65 0a 23 20 73 69 67 6e 61 6c 6c 65 64 3f 20 20 54 68 65 20 63 6c he.error.be.#.signalled?..The.cl
59760 69 65 6e 74 20 6e 65 65 64 73 20 74 6f 20 6b 6e 6f 77 20 74 68 65 20 48 54 54 50 20 65 72 72 6f ient.needs.to.know.the.HTTP.erro
59780 72 20 63 6f 64 65 2e 20 20 42 75 74 20 69 66 0a 23 20 74 68 65 20 68 61 6e 64 6c 65 72 20 6b 6e r.code...But.if.#.the.handler.kn
597a0 6f 77 73 20 74 68 61 74 20 74 68 65 20 70 72 6f 62 6c 65 6d 20 77 61 73 2c 20 65 2e 67 2e 2c 20 ows.that.the.problem.was,.e.g.,.
597c0 74 68 61 74 20 69 74 20 64 69 64 6e 27 74 20 6b 6e 6f 77 0a 23 20 74 68 61 74 20 68 61 73 68 20 that.it.didn't.know.#.that.hash.
597e0 61 6c 67 6f 20 74 68 61 74 20 72 65 71 75 65 73 74 65 64 20 69 6e 20 74 68 65 20 63 68 61 6c 6c algo.that.requested.in.the.chall
59800 65 6e 67 65 2c 20 69 74 20 77 6f 75 6c 64 20 62 65 20 67 6f 6f 64 20 74 6f 0a 23 20 70 61 73 73 enge,.it.would.be.good.to.#.pass
59820 20 74 68 61 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6c 6f 6e 67 20 74 6f 20 74 68 65 20 63 .that.information.along.to.the.c
59840 6c 69 65 6e 74 2c 20 74 6f 6f 2e 0a 23 20 66 74 70 20 65 72 72 6f 72 73 20 61 72 65 6e 27 74 20 lient,.too..#.ftp.errors.aren't.
59860 68 61 6e 64 6c 65 64 20 63 6c 65 61 6e 6c 79 0a 23 20 63 68 65 63 6b 20 64 69 67 65 73 74 20 61 handled.cleanly.#.check.digest.a
59880 67 61 69 6e 73 74 20 63 6f 72 72 65 63 74 20 28 69 2e 65 2e 20 6e 6f 6e 2d 61 70 61 63 68 65 29 gainst.correct.(i.e..non-apache)
598a0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 23 20 50 6f 73 73 69 62 6c 65 20 65 78 74 65 .implementation..#.Possible.exte
598c0 6e 73 69 6f 6e 73 3a 0a 23 20 63 6f 6d 70 6c 65 78 20 70 72 6f 78 69 65 73 20 20 58 58 58 20 6e nsions:.#.complex.proxies..XXX.n
598e0 6f 74 20 73 75 72 65 20 77 68 61 74 20 65 78 61 63 74 6c 79 20 77 61 73 20 6d 65 61 6e 74 20 62 ot.sure.what.exactly.was.meant.b
59900 79 20 74 68 69 73 0a 23 20 61 62 73 74 72 61 63 74 20 66 61 63 74 6f 72 79 20 66 6f 72 20 6f 70 y.this.#.abstract.factory.for.op
59920 65 6e 65 72 0a 0a 69 6d 70 6f 72 74 20 62 61 73 65 36 34 0a 69 6d 70 6f 72 74 20 62 69 73 65 63 ener..import.base64.import.bisec
59940 74 0a 69 6d 70 6f 72 74 20 65 6d 61 69 6c 0a 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 0a 69 6d t.import.email.import.hashlib.im
59960 70 6f 72 74 20 68 74 74 70 2e 63 6c 69 65 6e 74 0a 69 6d 70 6f 72 74 20 69 6f 0a 69 6d 70 6f 72 port.http.client.import.io.impor
59980 74 20 6f 73 0a 69 6d 70 6f 72 74 20 70 6f 73 69 78 70 61 74 68 0a 69 6d 70 6f 72 74 20 72 65 0a t.os.import.posixpath.import.re.
599a0 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 69 6d 70 6f 72 74 20 73 74 72 69 6e 67 0a 69 6d 70 6f import.socket.import.string.impo
599c0 72 74 20 73 79 73 0a 69 6d 70 6f 72 74 20 74 69 6d 65 0a 69 6d 70 6f 72 74 20 74 65 6d 70 66 69 rt.sys.import.time.import.tempfi
599e0 6c 65 0a 69 6d 70 6f 72 74 20 63 6f 6e 74 65 78 74 6c 69 62 0a 69 6d 70 6f 72 74 20 77 61 72 6e le.import.contextlib.import.warn
59a00 69 6e 67 73 0a 0a 0a 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 65 72 72 6f 72 20 69 6d 70 6f 72 74 20 ings...from.urllib.error.import.
59a20 55 52 4c 45 72 72 6f 72 2c 20 48 54 54 50 45 72 72 6f 72 2c 20 43 6f 6e 74 65 6e 74 54 6f 6f 53 URLError,.HTTPError,.ContentTooS
59a40 68 6f 72 74 45 72 72 6f 72 0a 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 70 61 72 73 65 20 69 6d 70 6f hortError.from.urllib.parse.impo
59a60 72 74 20 28 0a 20 20 20 20 75 72 6c 70 61 72 73 65 2c 20 75 72 6c 73 70 6c 69 74 2c 20 75 72 6c rt.(.....urlparse,.urlsplit,.url
59a80 6a 6f 69 6e 2c 20 75 6e 77 72 61 70 2c 20 71 75 6f 74 65 2c 20 75 6e 71 75 6f 74 65 2c 0a 20 20 join,.unwrap,.quote,.unquote,...
59aa0 20 20 5f 73 70 6c 69 74 74 79 70 65 2c 20 5f 73 70 6c 69 74 68 6f 73 74 2c 20 5f 73 70 6c 69 74 .._splittype,._splithost,._split
59ac0 70 6f 72 74 2c 20 5f 73 70 6c 69 74 75 73 65 72 2c 20 5f 73 70 6c 69 74 70 61 73 73 77 64 2c 0a port,._splituser,._splitpasswd,.
59ae0 20 20 20 20 5f 73 70 6c 69 74 61 74 74 72 2c 20 5f 73 70 6c 69 74 71 75 65 72 79 2c 20 5f 73 70 ...._splitattr,._splitquery,._sp
59b00 6c 69 74 76 61 6c 75 65 2c 20 5f 73 70 6c 69 74 74 61 67 2c 20 5f 74 6f 5f 62 79 74 65 73 2c 0a litvalue,._splittag,._to_bytes,.
59b20 20 20 20 20 75 6e 71 75 6f 74 65 5f 74 6f 5f 62 79 74 65 73 2c 20 75 72 6c 75 6e 70 61 72 73 65 ....unquote_to_bytes,.urlunparse
59b40 29 0a 66 72 6f 6d 20 75 72 6c 6c 69 62 2e 72 65 73 70 6f 6e 73 65 20 69 6d 70 6f 72 74 20 61 64 ).from.urllib.response.import.ad
59b60 64 69 6e 66 6f 75 72 6c 2c 20 61 64 64 63 6c 6f 73 65 68 6f 6f 6b 0a 0a 23 20 63 68 65 63 6b 20 dinfourl,.addclosehook..#.check.
59b80 66 6f 72 20 53 53 4c 0a 74 72 79 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20 73 73 6c 0a 65 78 63 65 for.SSL.try:.....import.ssl.exce
59ba0 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 5f 68 61 76 65 5f 73 73 6c 20 3d 20 pt.ImportError:....._have_ssl.=.
59bc0 46 61 6c 73 65 0a 65 6c 73 65 3a 0a 20 20 20 20 5f 68 61 76 65 5f 73 73 6c 20 3d 20 54 72 75 65 False.else:....._have_ssl.=.True
59be0 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 0a 20 20 20 20 23 20 43 6c 61 73 73 65 73 0a 20 20 20 20 ..__all__.=.[.....#.Classes.....
59c00 27 52 65 71 75 65 73 74 27 2c 20 27 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 27 2c 20 27 42 61 'Request',.'OpenerDirector',.'Ba
59c20 73 65 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 50 44 65 66 61 75 6c 74 45 72 72 6f 72 48 61 6e seHandler',.'HTTPDefaultErrorHan
59c40 64 6c 65 72 27 2c 0a 20 20 20 20 27 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 27 dler',.....'HTTPRedirectHandler'
59c60 2c 20 27 48 54 54 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 27 2c 20 27 50 72 6f 78 79 48 ,.'HTTPCookieProcessor',.'ProxyH
59c80 61 6e 64 6c 65 72 27 2c 0a 20 20 20 20 27 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 27 2c 20 andler',.....'HTTPPasswordMgr',.
59ca0 27 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 52 65 61 6c 6d 'HTTPPasswordMgrWithDefaultRealm
59cc0 27 2c 0a 20 20 20 20 27 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 57 69 74 68 50 72 69 6f 72 ',.....'HTTPPasswordMgrWithPrior
59ce0 41 75 74 68 27 2c 20 27 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 Auth',.'AbstractBasicAuthHandler
59d00 27 2c 0a 20 20 20 20 27 48 54 54 50 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 20 27 ',.....'HTTPBasicAuthHandler',.'
59d20 50 72 6f 78 79 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 20 27 41 62 73 74 72 61 63 ProxyBasicAuthHandler',.'Abstrac
59d40 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 0a 20 20 20 20 27 48 54 54 50 44 69 tDigestAuthHandler',.....'HTTPDi
59d60 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 27 2c 20 27 50 72 6f 78 79 44 69 67 65 73 74 41 75 gestAuthHandler',.'ProxyDigestAu
59d80 74 68 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 50 48 61 6e 64 6c 65 72 27 2c 0a 20 20 20 20 27 thHandler',.'HTTPHandler',.....'
59da0 46 69 6c 65 48 61 6e 64 6c 65 72 27 2c 20 27 46 54 50 48 61 6e 64 6c 65 72 27 2c 20 27 43 61 63 FileHandler',.'FTPHandler',.'Cac
59dc0 68 65 46 54 50 48 61 6e 64 6c 65 72 27 2c 20 27 44 61 74 61 48 61 6e 64 6c 65 72 27 2c 0a 20 20 heFTPHandler',.'DataHandler',...
59de0 20 20 27 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 27 2c 20 27 48 54 54 50 45 72 72 6f 72 50 72 ..'UnknownHandler',.'HTTPErrorPr
59e00 6f 63 65 73 73 6f 72 27 2c 0a 20 20 20 20 23 20 46 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 27 75 ocessor',.....#.Functions.....'u
59e20 72 6c 6f 70 65 6e 27 2c 20 27 69 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 27 2c 20 27 62 75 69 6c rlopen',.'install_opener',.'buil
59e40 64 5f 6f 70 65 6e 65 72 27 2c 0a 20 20 20 20 27 70 61 74 68 6e 61 6d 65 32 75 72 6c 27 2c 20 27 d_opener',.....'pathname2url',.'
59e60 75 72 6c 32 70 61 74 68 6e 61 6d 65 27 2c 20 27 67 65 74 70 72 6f 78 69 65 73 27 2c 0a 20 20 20 url2pathname',.'getproxies',....
59e80 20 23 20 4c 65 67 61 63 79 20 69 6e 74 65 72 66 61 63 65 0a 20 20 20 20 27 75 72 6c 72 65 74 72 .#.Legacy.interface.....'urlretr
59ea0 69 65 76 65 27 2c 20 27 75 72 6c 63 6c 65 61 6e 75 70 27 2c 20 27 55 52 4c 6f 70 65 6e 65 72 27 ieve',.'urlcleanup',.'URLopener'
59ec0 2c 20 27 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 27 2c 0a 5d 0a 0a 23 20 75 73 65 64 20 69 6e ,.'FancyURLopener',.]..#.used.in
59ee0 20 55 73 65 72 2d 41 67 65 6e 74 20 68 65 61 64 65 72 20 73 65 6e 74 0a 5f 5f 76 65 72 73 69 6f .User-Agent.header.sent.__versio
59f00 6e 5f 5f 20 3d 20 27 25 64 2e 25 64 27 20 25 20 73 79 73 2e 76 65 72 73 69 6f 6e 5f 69 6e 66 6f n__.=.'%d.%d'.%.sys.version_info
59f20 5b 3a 32 5d 0a 0a 5f 6f 70 65 6e 65 72 20 3d 20 4e 6f 6e 65 0a 64 65 66 20 75 72 6c 6f 70 65 6e [:2].._opener.=.None.def.urlopen
59f40 28 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 20 74 69 6d 65 6f 75 74 3d 73 6f 63 6b 65 74 2e (url,.data=None,.timeout=socket.
59f60 5f 47 4c 4f 42 41 4c 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 2c 0a 20 20 20 20 20 20 20 _GLOBAL_DEFAULT_TIMEOUT,........
59f80 20 20 20 20 20 2a 2c 20 63 61 66 69 6c 65 3d 4e 6f 6e 65 2c 20 63 61 70 61 74 68 3d 4e 6f 6e 65 .....*,.cafile=None,.capath=None
59fa0 2c 20 63 61 64 65 66 61 75 6c 74 3d 46 61 6c 73 65 2c 20 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 29 ,.cadefault=False,.context=None)
59fc0 3a 0a 20 20 20 20 27 27 27 4f 70 65 6e 20 74 68 65 20 55 52 4c 20 75 72 6c 2c 20 77 68 69 63 68 :.....'''Open.the.URL.url,.which
59fe0 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 20 73 74 72 69 6e 67 20 6f 72 20 61 20 52 65 71 .can.be.either.a.string.or.a.Req
5a000 75 65 73 74 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 2a 64 61 74 61 2a 20 6d 75 73 74 20 62 65 uest.object.......*data*.must.be
5a020 20 61 6e 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66 79 69 6e 67 20 61 64 64 69 74 69 6f 6e 61 6c .an.object.specifying.additional
5a040 20 64 61 74 61 20 74 6f 20 62 65 20 73 65 6e 74 20 74 6f 0a 20 20 20 20 74 68 65 20 73 65 72 76 .data.to.be.sent.to.....the.serv
5a060 65 72 2c 20 6f 72 20 4e 6f 6e 65 20 69 66 20 6e 6f 20 73 75 63 68 20 64 61 74 61 20 69 73 20 6e er,.or.None.if.no.such.data.is.n
5a080 65 65 64 65 64 2e 20 20 53 65 65 20 52 65 71 75 65 73 74 20 66 6f 72 0a 20 20 20 20 64 65 74 61 eeded...See.Request.for.....deta
5a0a0 69 6c 73 2e 0a 0a 20 20 20 20 75 72 6c 6c 69 62 2e 72 65 71 75 65 73 74 20 6d 6f 64 75 6c 65 20 ils.......urllib.request.module.
5a0c0 75 73 65 73 20 48 54 54 50 2f 31 2e 31 20 61 6e 64 20 69 6e 63 6c 75 64 65 73 20 61 20 22 43 6f uses.HTTP/1.1.and.includes.a."Co
5a0e0 6e 6e 65 63 74 69 6f 6e 3a 63 6c 6f 73 65 22 0a 20 20 20 20 68 65 61 64 65 72 20 69 6e 20 69 74 nnection:close".....header.in.it
5a100 73 20 48 54 54 50 20 72 65 71 75 65 73 74 73 2e 0a 0a 20 20 20 20 54 68 65 20 6f 70 74 69 6f 6e s.HTTP.requests.......The.option
5a120 61 6c 20 2a 74 69 6d 65 6f 75 74 2a 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 73 al.*timeout*.parameter.specifies
5a140 20 61 20 74 69 6d 65 6f 75 74 20 69 6e 20 73 65 63 6f 6e 64 73 20 66 6f 72 0a 20 20 20 20 62 6c .a.timeout.in.seconds.for.....bl
5a160 6f 63 6b 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 73 20 6c 69 6b 65 20 74 68 65 20 63 6f 6e 6e 65 ocking.operations.like.the.conne
5a180 63 74 69 6f 6e 20 61 74 74 65 6d 70 74 20 28 69 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2c ction.attempt.(if.not.specified,
5a1a0 20 74 68 65 0a 20 20 20 20 67 6c 6f 62 61 6c 20 64 65 66 61 75 6c 74 20 74 69 6d 65 6f 75 74 20 .the.....global.default.timeout.
5a1c0 73 65 74 74 69 6e 67 20 77 69 6c 6c 20 62 65 20 75 73 65 64 29 2e 20 54 68 69 73 20 6f 6e 6c 79 setting.will.be.used)..This.only
5a1e0 20 77 6f 72 6b 73 20 66 6f 72 20 48 54 54 50 2c 0a 20 20 20 20 48 54 54 50 53 20 61 6e 64 20 46 .works.for.HTTP,.....HTTPS.and.F
5a200 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 49 66 20 2a 63 6f 6e 74 65 78 74 TP.connections.......If.*context
5a220 2a 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 69 74 20 6d 75 73 74 20 62 65 20 61 20 73 73 6c *.is.specified,.it.must.be.a.ssl
5a240 2e 53 53 4c 43 6f 6e 74 65 78 74 20 69 6e 73 74 61 6e 63 65 20 64 65 73 63 72 69 62 69 6e 67 0a .SSLContext.instance.describing.
5a260 20 20 20 20 74 68 65 20 76 61 72 69 6f 75 73 20 53 53 4c 20 6f 70 74 69 6f 6e 73 2e 20 53 65 65 ....the.various.SSL.options..See
5a280 20 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c .HTTPSConnection.for.more.detail
5a2a0 73 2e 0a 0a 20 20 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 2a 63 61 66 69 6c 65 2a 20 61 6e s.......The.optional.*cafile*.an
5a2c0 64 20 2a 63 61 70 61 74 68 2a 20 70 61 72 61 6d 65 74 65 72 73 20 73 70 65 63 69 66 79 20 61 20 d.*capath*.parameters.specify.a.
5a2e0 73 65 74 20 6f 66 20 74 72 75 73 74 65 64 20 43 41 0a 20 20 20 20 63 65 72 74 69 66 69 63 61 74 set.of.trusted.CA.....certificat
5a300 65 73 20 66 6f 72 20 48 54 54 50 53 20 72 65 71 75 65 73 74 73 2e 20 63 61 66 69 6c 65 20 73 68 es.for.HTTPS.requests..cafile.sh
5a320 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 66 69 6c 65 0a 20 20 20 20 ould.point.to.a.single.file.....
5a340 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 62 75 6e 64 6c 65 20 6f 66 20 43 41 20 63 65 72 74 69 66 containing.a.bundle.of.CA.certif
5a360 69 63 61 74 65 73 2c 20 77 68 65 72 65 61 73 20 63 61 70 61 74 68 20 73 68 6f 75 6c 64 20 70 6f icates,.whereas.capath.should.po
5a380 69 6e 74 20 74 6f 20 61 0a 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 68 61 73 68 65 64 int.to.a.....directory.of.hashed
5a3a0 20 63 65 72 74 69 66 69 63 61 74 65 20 66 69 6c 65 73 2e 20 4d 6f 72 65 20 69 6e 66 6f 72 6d 61 .certificate.files..More.informa
5a3c0 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 0a 20 20 20 20 73 73 6c 2e 53 53 4c tion.can.be.found.in.....ssl.SSL
5a3e0 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 28 29 2e Context.load_verify_locations().
5a400 0a 0a 20 20 20 20 54 68 65 20 2a 63 61 64 65 66 61 75 6c 74 2a 20 70 61 72 61 6d 65 74 65 72 20 ......The.*cadefault*.parameter.
5a420 69 73 20 69 67 6e 6f 72 65 64 2e 0a 0a 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 is.ignored.......This.function.a
5a440 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20 61 6e 20 6f 62 6a 65 63 74 20 77 68 69 63 68 20 63 61 lways.returns.an.object.which.ca
5a460 6e 20 77 6f 72 6b 20 61 73 20 61 20 63 6f 6e 74 65 78 74 0a 20 20 20 20 6d 61 6e 61 67 65 72 20 n.work.as.a.context.....manager.
5a480 61 6e 64 20 68 61 73 20 6d 65 74 68 6f 64 73 20 73 75 63 68 20 61 73 0a 0a 20 20 20 20 2a 20 67 and.has.methods.such.as......*.g
5a4a0 65 74 75 72 6c 28 29 20 2d 20 72 65 74 75 72 6e 20 74 68 65 20 55 52 4c 20 6f 66 20 74 68 65 20 eturl().-.return.the.URL.of.the.
5a4c0 72 65 73 6f 75 72 63 65 20 72 65 74 72 69 65 76 65 64 2c 20 63 6f 6d 6d 6f 6e 6c 79 20 75 73 65 resource.retrieved,.commonly.use
5a4e0 64 20 74 6f 0a 20 20 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 20 72 65 64 69 72 65 d.to.......determine.if.a.redire
5a500 63 74 20 77 61 73 20 66 6f 6c 6c 6f 77 65 64 0a 0a 20 20 20 20 2a 20 69 6e 66 6f 28 29 20 2d 20 ct.was.followed......*.info().-.
5a520 72 65 74 75 72 6e 20 74 68 65 20 6d 65 74 61 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 74 return.the.meta-information.of.t
5a540 68 65 20 70 61 67 65 2c 20 73 75 63 68 20 61 73 20 68 65 61 64 65 72 73 2c 20 69 6e 20 74 68 65 he.page,.such.as.headers,.in.the
5a560 0a 20 20 20 20 20 20 66 6f 72 6d 20 6f 66 20 61 6e 20 65 6d 61 69 6c 2e 6d 65 73 73 61 67 65 5f .......form.of.an.email.message_
5a580 66 72 6f 6d 5f 73 74 72 69 6e 67 28 29 20 69 6e 73 74 61 6e 63 65 20 28 73 65 65 20 51 75 69 63 from_string().instance.(see.Quic
5a5a0 6b 20 52 65 66 65 72 65 6e 63 65 20 74 6f 0a 20 20 20 20 20 20 48 54 54 50 20 48 65 61 64 65 72 k.Reference.to.......HTTP.Header
5a5c0 73 29 0a 0a 20 20 20 20 2a 20 67 65 74 63 6f 64 65 28 29 20 2d 20 72 65 74 75 72 6e 20 74 68 65 s)......*.getcode().-.return.the
5a5e0 20 48 54 54 50 20 73 74 61 74 75 73 20 63 6f 64 65 20 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 .HTTP.status.code.of.the.respons
5a600 65 2e 20 20 52 61 69 73 65 73 20 55 52 4c 45 72 72 6f 72 0a 20 20 20 20 20 20 6f 6e 20 65 72 72 e...Raises.URLError.......on.err
5a620 6f 72 73 2e 0a 0a 20 20 20 20 46 6f 72 20 48 54 54 50 20 61 6e 64 20 48 54 54 50 53 20 55 52 4c ors.......For.HTTP.and.HTTPS.URL
5a640 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 68 74 74 70 2e s,.this.function.returns.a.http.
5a660 63 6c 69 65 6e 74 2e 48 54 54 50 52 65 73 70 6f 6e 73 65 0a 20 20 20 20 6f 62 6a 65 63 74 20 73 client.HTTPResponse.....object.s
5a680 6c 69 67 68 74 6c 79 20 6d 6f 64 69 66 69 65 64 2e 20 49 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f lightly.modified..In.addition.to
5a6a0 20 74 68 65 20 74 68 72 65 65 20 6e 65 77 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 2c 20 74 68 .the.three.new.methods.above,.th
5a6c0 65 0a 20 20 20 20 6d 73 67 20 61 74 74 72 69 62 75 74 65 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 e.....msg.attribute.contains.the
5a6e0 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20 74 68 65 20 72 65 61 73 6f 6e 20 .same.information.as.the.reason.
5a700 61 74 74 72 69 62 75 74 65 20 2d 2d 2d 0a 20 20 20 20 74 68 65 20 72 65 61 73 6f 6e 20 70 68 72 attribute.---.....the.reason.phr
5a720 61 73 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 73 65 72 76 65 72 20 2d 2d 2d 20 69 ase.returned.by.the.server.---.i
5a740 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 68 65 61 64 65 nstead.of.the.response.....heade
5a760 72 73 20 61 73 20 69 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 64 6f 63 rs.as.it.is.specified.in.the.doc
5a780 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 48 54 54 50 52 65 73 70 6f 6e 73 65 2e 0a 0a 20 20 umentation.for.HTTPResponse.....
5a7a0 20 20 46 6f 72 20 46 54 50 2c 20 66 69 6c 65 2c 20 61 6e 64 20 64 61 74 61 20 55 52 4c 73 20 61 ..For.FTP,.file,.and.data.URLs.a
5a7c0 6e 64 20 72 65 71 75 65 73 74 73 20 65 78 70 6c 69 63 69 74 6c 79 20 68 61 6e 64 6c 65 64 20 62 nd.requests.explicitly.handled.b
5a7e0 79 20 6c 65 67 61 63 79 0a 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 20 61 6e 64 20 46 61 6e 63 79 y.legacy.....URLopener.and.Fancy
5a800 55 52 4c 6f 70 65 6e 65 72 20 63 6c 61 73 73 65 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e URLopener.classes,.this.function
5a820 20 72 65 74 75 72 6e 73 20 61 0a 20 20 20 20 75 72 6c 6c 69 62 2e 72 65 73 70 6f 6e 73 65 2e 61 .returns.a.....urllib.response.a
5a840 64 64 69 6e 66 6f 75 72 6c 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 4e 6f 74 65 20 74 68 61 74 ddinfourl.object.......Note.that
5a860 20 4e 6f 6e 65 20 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 6e 6f 20 68 61 6e 64 .None.may.be.returned.if.no.hand
5a880 6c 65 72 20 68 61 6e 64 6c 65 73 20 74 68 65 20 72 65 71 75 65 73 74 20 28 74 68 6f 75 67 68 0a ler.handles.the.request.(though.
5a8a0 20 20 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6c 6c 65 64 20 67 6c 6f 62 61 6c ....the.default.installed.global
5a8c0 20 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 20 75 73 65 73 20 55 6e 6b 6e 6f 77 6e 48 61 6e 64 .OpenerDirector.uses.UnknownHand
5a8e0 6c 65 72 20 74 6f 20 65 6e 73 75 72 65 0a 20 20 20 20 74 68 69 73 20 6e 65 76 65 72 20 68 61 70 ler.to.ensure.....this.never.hap
5a900 70 65 6e 73 29 2e 0a 0a 20 20 20 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 69 66 20 70 72 6f 78 pens).......In.addition,.if.prox
5a920 79 20 73 65 74 74 69 6e 67 73 20 61 72 65 20 64 65 74 65 63 74 65 64 20 28 66 6f 72 20 65 78 61 y.settings.are.detected.(for.exa
5a940 6d 70 6c 65 2c 20 77 68 65 6e 20 61 20 2a 5f 70 72 6f 78 79 0a 20 20 20 20 65 6e 76 69 72 6f 6e mple,.when.a.*_proxy.....environ
5a960 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 6c 69 6b 65 20 68 74 74 70 5f 70 72 6f 78 79 20 69 73 ment.variable.like.http_proxy.is
5a980 20 73 65 74 29 2c 20 50 72 6f 78 79 48 61 6e 64 6c 65 72 20 69 73 20 64 65 66 61 75 6c 74 0a 20 .set),.ProxyHandler.is.default..
5a9a0 20 20 20 69 6e 73 74 61 6c 6c 65 64 20 61 6e 64 20 6d 61 6b 65 73 20 73 75 72 65 20 74 68 65 20 ...installed.and.makes.sure.the.
5a9c0 72 65 71 75 65 73 74 73 20 61 72 65 20 68 61 6e 64 6c 65 64 20 74 68 72 6f 75 67 68 20 74 68 65 requests.are.handled.through.the
5a9e0 20 70 72 6f 78 79 2e 0a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 67 6c 6f 62 61 6c 20 5f 6f 70 65 .proxy.......'''.....global._ope
5aa00 6e 65 72 0a 20 20 20 20 69 66 20 63 61 66 69 6c 65 20 6f 72 20 63 61 70 61 74 68 20 6f 72 20 63 ner.....if.cafile.or.capath.or.c
5aa20 61 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 77 61 72 6e 69 6e 67 adefault:.........import.warning
5aa40 73 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 2e 77 61 72 6e 28 22 63 61 66 69 6c 65 2c s.........warnings.warn("cafile,
5aa60 20 63 61 70 61 74 68 20 61 6e 64 20 63 61 64 65 66 61 75 6c 74 20 61 72 65 20 64 65 70 72 65 63 .capath.and.cadefault.are.deprec
5aa80 61 74 65 64 2c 20 75 73 65 20 61 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ated,.use.a."...................
5aaa0 20 20 20 20 22 63 75 73 74 6f 6d 20 63 6f 6e 74 65 78 74 20 69 6e 73 74 65 61 64 2e 22 2c 20 44 ...."custom.context.instead.",.D
5aac0 65 70 72 65 63 61 74 69 6f 6e 57 61 72 6e 69 6e 67 2c 20 32 29 0a 20 20 20 20 20 20 20 20 69 66 eprecationWarning,.2).........if
5aae0 20 63 6f 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 .context.is.not.None:...........
5ab00 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 20 20 ..raise.ValueError(.............
5ab20 20 20 20 20 22 59 6f 75 20 63 61 6e 27 74 20 70 61 73 73 20 62 6f 74 68 20 63 6f 6e 74 65 78 74 ...."You.can't.pass.both.context
5ab40 20 61 6e 64 20 61 6e 79 20 6f 66 20 63 61 66 69 6c 65 2c 20 63 61 70 61 74 68 2c 20 61 6e 64 20 .and.any.of.cafile,.capath,.and.
5ab60 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 61 64 65 66 61 75 6c 74 22 0a 20 20 "................."cadefault"...
5ab80 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 5f 68 61 76 65 ..........).........if.not._have
5aba0 5f 73 73 6c 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 _ssl:.............raise.ValueErr
5abc0 6f 72 28 27 53 53 4c 20 73 75 70 70 6f 72 74 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 27 29 0a or('SSL.support.not.available').
5abe0 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 20 3d 20 73 73 6c 2e 63 72 65 61 74 65 5f 64 65 66 ........context.=.ssl.create_def
5ac00 61 75 6c 74 5f 63 6f 6e 74 65 78 74 28 73 73 6c 2e 50 75 72 70 6f 73 65 2e 53 45 52 56 45 52 5f ault_context(ssl.Purpose.SERVER_
5ac20 41 55 54 48 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 AUTH,...........................
5ac40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 66 69 6c 65 3d 63 61 66 69 6c 65 ...................cafile=cafile
5ac60 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 20 20 ,...............................
5ac80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 70 61 74 68 3d 63 61 70 61 74 68 29 0a 20 20 ...............capath=capath)...
5aca0 20 20 20 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 ......https_handler.=.HTTPSHandl
5acc0 65 72 28 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 er(context=context).........open
5ace0 65 72 20 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 er.=.build_opener(https_handler)
5ad00 0a 20 20 20 20 65 6c 69 66 20 63 6f 6e 74 65 78 74 3a 0a 20 20 20 20 20 20 20 20 68 74 74 70 73 .....elif.context:.........https
5ad20 5f 68 61 6e 64 6c 65 72 20 3d 20 48 54 54 50 53 48 61 6e 64 6c 65 72 28 63 6f 6e 74 65 78 74 3d _handler.=.HTTPSHandler(context=
5ad40 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 20 3d 20 62 75 69 6c 64 5f context).........opener.=.build_
5ad60 6f 70 65 6e 65 72 28 68 74 74 70 73 5f 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 65 6c 69 66 20 5f opener(https_handler).....elif._
5ad80 6f 70 65 6e 65 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 5f 6f 70 65 6e 65 72 20 opener.is.None:........._opener.
5ada0 3d 20 6f 70 65 6e 65 72 20 3d 20 62 75 69 6c 64 5f 6f 70 65 6e 65 72 28 29 0a 20 20 20 20 65 6c =.opener.=.build_opener().....el
5adc0 73 65 3a 0a 20 20 20 20 20 20 20 20 6f 70 65 6e 65 72 20 3d 20 5f 6f 70 65 6e 65 72 0a 20 20 20 se:.........opener.=._opener....
5ade0 20 72 65 74 75 72 6e 20 6f 70 65 6e 65 72 2e 6f 70 65 6e 28 75 72 6c 2c 20 64 61 74 61 2c 20 74 .return.opener.open(url,.data,.t
5ae00 69 6d 65 6f 75 74 29 0a 0a 64 65 66 20 69 6e 73 74 61 6c 6c 5f 6f 70 65 6e 65 72 28 6f 70 65 6e imeout)..def.install_opener(open
5ae20 65 72 29 3a 0a 20 20 20 20 67 6c 6f 62 61 6c 20 5f 6f 70 65 6e 65 72 0a 20 20 20 20 5f 6f 70 65 er):.....global._opener....._ope
5ae40 6e 65 72 20 3d 20 6f 70 65 6e 65 72 0a 0a 5f 75 72 6c 5f 74 65 6d 70 66 69 6c 65 73 20 3d 20 5b ner.=.opener.._url_tempfiles.=.[
5ae60 5d 0a 64 65 66 20 75 72 6c 72 65 74 72 69 65 76 65 28 75 72 6c 2c 20 66 69 6c 65 6e 61 6d 65 3d ].def.urlretrieve(url,.filename=
5ae80 4e 6f 6e 65 2c 20 72 65 70 6f 72 74 68 6f 6f 6b 3d 4e 6f 6e 65 2c 20 64 61 74 61 3d 4e 6f 6e 65 None,.reporthook=None,.data=None
5aea0 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 20 20 52 65 74 72 69 65 76 65 20 61 20 55 52 4c 20 69 6e ):.....""".....Retrieve.a.URL.in
5aec0 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 6c 6f 63 61 74 69 6f 6e 20 6f 6e 20 64 69 73 6b 2e to.a.temporary.location.on.disk.
5aee0 0a 0a 20 20 20 20 52 65 71 75 69 72 65 73 20 61 20 55 52 4c 20 61 72 67 75 6d 65 6e 74 2e 20 49 ......Requires.a.URL.argument..I
5af00 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 70 61 73 73 65 64 2c 20 69 74 20 69 73 20 75 73 f.a.filename.is.passed,.it.is.us
5af20 65 64 20 61 73 0a 20 20 20 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 20 6c 6f 63 ed.as.....the.temporary.file.loc
5af40 61 74 69 6f 6e 2e 20 54 68 65 20 72 65 70 6f 72 74 68 6f 6f 6b 20 61 72 67 75 6d 65 6e 74 20 73 ation..The.reporthook.argument.s
5af60 68 6f 75 6c 64 20 62 65 0a 20 20 20 20 61 20 63 61 6c 6c 61 62 6c 65 20 74 68 61 74 20 61 63 63 hould.be.....a.callable.that.acc
5af80 65 70 74 73 20 61 20 62 6c 6f 63 6b 20 6e 75 6d 62 65 72 2c 20 61 20 72 65 61 64 20 73 69 7a 65 epts.a.block.number,.a.read.size
5afa0 2c 20 61 6e 64 20 74 68 65 0a 20 20 20 20 74 6f 74 61 6c 20 66 69 6c 65 20 73 69 7a 65 20 6f 66 ,.and.the.....total.file.size.of
5afc0 20 74 68 65 20 55 52 4c 20 74 61 72 67 65 74 2e 20 54 68 65 20 64 61 74 61 20 61 72 67 75 6d 65 .the.URL.target..The.data.argume
5afe0 6e 74 20 73 68 6f 75 6c 64 20 62 65 0a 20 20 20 20 76 61 6c 69 64 20 55 52 4c 20 65 6e 63 6f 64 nt.should.be.....valid.URL.encod
5b000 65 64 20 64 61 74 61 2e 0a 0a 20 20 20 20 49 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 70 ed.data.......If.a.filename.is.p
5b020 61 73 73 65 64 20 61 6e 64 20 74 68 65 20 55 52 4c 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 6c 6f assed.and.the.URL.points.to.a.lo
5b040 63 61 6c 20 72 65 73 6f 75 72 63 65 2c 0a 20 20 20 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 cal.resource,.....the.result.is.
5b060 61 20 63 6f 70 79 20 66 72 6f 6d 20 6c 6f 63 61 6c 20 66 69 6c 65 20 74 6f 20 6e 65 77 20 66 69 a.copy.from.local.file.to.new.fi
5b080 6c 65 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 20 61 20 74 75 70 6c 65 20 63 6f 6e 74 61 69 6e le.......Returns.a.tuple.contain
5b0a0 69 6e 67 20 74 68 65 20 70 61 74 68 20 74 6f 20 74 68 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 ing.the.path.to.the.newly.create
5b0c0 64 0a 20 20 20 20 64 61 74 61 20 66 69 6c 65 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 72 d.....data.file.as.well.as.the.r
5b0e0 65 73 75 6c 74 69 6e 67 20 48 54 54 50 4d 65 73 73 61 67 65 20 6f 62 6a 65 63 74 2e 0a 20 20 20 esulting.HTTPMessage.object.....
5b100 20 22 22 22 0a 20 20 20 20 75 72 6c 5f 74 79 70 65 2c 20 70 61 74 68 20 3d 20 5f 73 70 6c 69 74 .""".....url_type,.path.=._split
5b120 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 78 74 6c 69 62 2e 63 type(url)......with.contextlib.c
5b140 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 29 20 61 73 20 66 70 losing(urlopen(url,.data)).as.fp
5b160 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 66 6f 28 29 0a 0a 20 :.........headers.=.fp.info()...
5b180 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 6c 6f 63 61 6c 20 70 .......#.Just.return.the.local.p
5b1a0 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 20 66 69 6c 65 3a 2f ath.and.the."headers".for.file:/
5b1c0 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 65 20 69 6e 20 70 65 /.........#.URLs..No.sense.in.pe
5b1e0 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 71 75 65 73 74 65 64 rforming.a.copy.unless.requested
5b200 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 22 66 69 6c 65 22 20 ..........if.url_type.==."file".
5b220 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 20 20 20 20 20 72 65 and.not.filename:.............re
5b240 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 68 29 2c 20 68 65 61 turn.os.path.normpath(path),.hea
5b260 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 6d 70 6f 72 61 72 79 ders..........#.Handle.temporary
5b280 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 69 6c 65 6e 61 6d 65 .file.setup..........if.filename
5b2a0 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 66 69 6c 65 6e 61 6d :.............tfp.=.open(filenam
5b2c0 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 20 20 20 20 20 20 20 e,.'wb').........else:..........
5b2e0 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 6d 70 6f 72 61 72 79 ...tfp.=.tempfile.NamedTemporary
5b300 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 20 20 20 20 20 20 66 File(delete=False).............f
5b320 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 20 20 20 20 20 20 5f ilename.=.tfp.name............._
5b340 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 6e 61 6d 65 29 0a 0a url_tempfiles.append(filename)..
5b360 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 20 20 20 20 20 72 65 ........with.tfp:.............re
5b380 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 20 20 20 20 20 20 20 sult.=.filename,.headers........
5b3a0 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 20 20 20 20 73 69 7a .....bs.=.1024*8.............siz
5b3c0 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 20 30 0a 20 20 20 20 e.=.-1.............read.=.0.....
5b3e0 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 20 20 20 20 20 20 20 ........blocknum.=.0............
5b400 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 72 73 3a .if."content-length".in.headers:
5b420 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 6e 74 28 68 65 61 64 .................size.=.int(head
5b440 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 20 20 20 20 20 20 20 ers["Content-Length"])..........
5b460 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 20 20 20 20 20 20 20 ....if.reporthook:..............
5b480 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 73 2c 20 73 69 7a 65 ...reporthook(blocknum,.bs,.size
5b4a0 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 3a 0a 20 20 20 20 20 )..............while.True:......
5b4c0 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 64 28 62 73 29 0a 20 ...........block.=.fp.read(bs)..
5b4e0 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 63 6b 3a 0a 20 20 20 ...............if.not.block:....
5b500 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 20 20 20 .................break..........
5b520 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 0a 20 20 20 20 20 20 .......read.+=.len(block).......
5b540 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 20 20 ..........tfp.write(block)......
5b560 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 20 20 20 20 20 20 ...........blocknum.+=.1........
5b580 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 20 20 .........if.reporthook:.........
5b5a0 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 6b 6e 75 6d 2c ............reporthook(blocknum,
5b5c0 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 3d 20 30 20 61 6e 64 .bs,.size)......if.size.>=.0.and
5b5e0 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 73 65 20 43 6f 6e 74 .read.<.size:.........raise.Cont
5b600 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 20 20 20 20 20 22 72 entTooShortError(............."r
5b620 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 69 etrieval.incomplete:.got.only.%i
5b640 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 25 20 .out.of.%i.bytes".............%.
5b660 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 72 65 74 75 72 (read,.size),.result)......retur
5b680 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 29 3a 0a 20 20 20 20 n.result..def.urlcleanup():.....
5b6a0 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 65 73 20 66 72 6f 6d """Clean.up.temporary.files.from
5b6c0 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 20 20 66 6f 72 20 74 .urlretrieve.calls.""".....for.t
5b6e0 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 73 3a 0a 20 20 20 20 emp_file.in._url_tempfiles:.....
5b700 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 6e 6c 69 6e 6b 28 74 ....try:.............os.unlink(t
5b720 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 4f 53 45 72 72 6f 72 emp_file).........except.OSError
5b740 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 65 6c 20 5f 75 72 6c :.............pass......del._url
5b760 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 5f 6f 70 65 6e 65 72 _tempfiles[:].....global._opener
5b780 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 5f 6f 70 65 6e 65 72 .....if._opener:........._opener
5b7a0 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 6f 6b 69 65 6c 69 62 .=.None..#.copied.from.cookielib
5b7c0 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 70 69 6c 65 28 72 22 .py._cut_port_re.=.re.compile(r"
5b7e0 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 75 65 73 74 5f 68 6f :\d+$",.re.ASCII).def.request_ho
5b800 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 6e 20 72 65 71 75 65 st(request):....."""Return.reque
5b820 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 43 20 32 39 36 35 2e st-host,.as.defined.by.RFC.2965.
5b840 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 20 72 65 74 75 72 6e ......Variation.from.RFC:.return
5b860 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 6f 72 20 63 6f 6e 76 ed.value.is.lowercased,.for.conv
5b880 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 20 20 20 22 22 22 0a enient.....comparison.......""".
5b8a0 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 6c 0a 20 20 20 20 68 ....url.=.request.full_url.....h
5b8c0 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 20 20 69 66 20 68 6f ost.=.urlparse(url)[1].....if.ho
5b8e0 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 72 65 71 75 65 73 74 st.==."":.........host.=.request
5b900 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 20 20 20 20 23 20 72 .get_header("Host",."")......#.r
5b920 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 20 20 68 6f 73 74 20 emove.port,.if.present.....host.
5b940 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 73 74 2c 20 31 29 0a =._cut_port_re.sub("",.host,.1).
5b960 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 63 6c 61 73 73 20 52 ....return.host.lower()..class.R
5b980 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 28 73 65 6c 66 2c 20 equest:......def.__init__(self,.
5b9a0 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 7d 2c 0a 20 20 20 20 url,.data=None,.headers={},.....
5b9c0 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 6f 73 74 3d 4e 6f 6e .............origin_req_host=Non
5b9e0 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 20 20 20 20 20 20 20 e,.unverifiable=False,..........
5ba00 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 20 20 20 20 20 73 65 ........method=None):.........se
5ba20 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 20 73 65 6c 66 2e 68 lf.full_url.=.url.........self.h
5ba40 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 75 6e 72 65 64 69 72 eaders.=.{}.........self.unredir
5ba60 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 65 6c 66 2e 5f 64 61 ected_hdrs.=.{}.........self._da
5ba80 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 74 61 20 3d 20 64 61 ta.=.None.........self.data.=.da
5baa0 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 6f 73 74 20 3d 20 4e ta.........self._tunnel_host.=.N
5bac0 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 65 20 69 6e 20 68 65 one.........for.key,.value.in.he
5bae0 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 20 20 73 65 6c 66 2e aders.items():.............self.
5bb00 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 20 20 20 20 20 20 69 add_header(key,.value).........i
5bb20 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 3a 0a 20 20 20 20 20 f.origin_req_host.is.None:......
5bb40 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 72 65 71 75 65 73 74 .......origin_req_host.=.request
5bb60 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 6f 72 69 67 69 6e 5f _host(self).........self.origin_
5bb80 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 74 0a 20 20 20 20 20 req_host.=.origin_req_host......
5bba0 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 76 65 72 69 66 69 61 ...self.unverifiable.=.unverifia
5bbc0 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 20 20 20 20 20 20 20 ble.........if.method:..........
5bbe0 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 20 20 20 20 40 70 72 ...self.method.=.method......@pr
5bc00 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 65 6c 66 29 3a 0a 20 operty.....def.full_url(self):..
5bc20 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 20 20 20 20 20 20 20 .......if.self.fragment:........
5bc40 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 74 28 73 65 6c 66 2e .....return.'{}#{}'.format(self.
5bc60 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 0a 20 20 20 20 20 20 _full_url,.self.fragment).......
5bc80 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 20 20 20 20 40 66 75 ..return.self._full_url......@fu
5bca0 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 6c 5f 75 72 6c 28 73 ll_url.setter.....def.full_url(s
5bcc0 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 61 70 28 27 3c 55 52 elf,.url):.........#.unwrap('<UR
5bce0 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 20 27 74 79 70 65 3a L:type://host/path>').-->.'type:
5bd00 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 2e 5f 66 75 6c 6c 5f //host/path'.........self._full_
5bd20 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 20 73 65 6c 66 2e 5f url.=.unwrap(url).........self._
5bd40 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 20 5f 73 70 6c 69 74 full_url,.self.fragment.=._split
5bd60 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 20 20 73 65 6c 66 tag(self._full_url).........self
5bd80 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 65 6c 65 74 65 72 ._parse()......@full_url.deleter
5bda0 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 20 20 20 20 20 20 .....def.full_url(self):........
5bdc0 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 20 20 20 20 20 73 .self._full_url.=.None.........s
5bde0 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 20 20 73 65 6c 66 elf.fragment.=.None.........self
5be00 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 72 74 79 0a 20 20 .selector.=.''......@property...
5be20 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 72 65 74 75 72 6e ..def.data(self):.........return
5be40 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 74 65 72 0a 20 20 .self._data......@data.setter...
5be60 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 20 20 20 20 20 20 ..def.data(self,.data):.........
5be80 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 20 20 20 20 20 20 if.data.!=.self._data:..........
5bea0 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 20 20 20 ...self._data.=.data............
5bec0 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 20 23 20 69 66 20 .#.issue.16464.............#.if.
5bee0 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 72 65 6d 6f 76 65 we.change.data.we.need.to.remove
5bf00 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 20 20 20 20 20 20 .content-length.header..........
5bf20 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 61 62 6c 79 20 63 ...#.(cause.it's.most.probably.c
5bf40 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 75 65 29 0a 20 20 alculated.for.previous.value)...
5bf60 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 65 72 28 22 43 6f ..........if.self.has_header("Co
5bf80 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 20 20 20 20 20 20 ntent-length"):.................
5bfa0 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 74 2d 6c 65 6e 67 self.remove_header("Content-leng
5bfc0 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 20 20 64 65 66 20 th")......@data.deleter.....def.
5bfe0 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 61 74 61 20 3d 20 data(self):.........self.data.=.
5c000 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 3a 0a 20 20 20 20 None......def._parse(self):.....
5c020 20 20 20 20 73 65 6c 66 2e 74 79 70 65 2c 20 72 65 73 74 20 3d 20 5f 73 70 6c 69 74 74 79 70 65 ....self.type,.rest.=._splittype
5c040 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 20 73 65 6c 66 (self._full_url).........if.self
5c060 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 72 61 69 73 65 .type.is.None:.............raise
5c080 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 70 65 3a 20 25 .ValueError("unknown.url.type:.%
5c0a0 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 20 73 65 6c 66 r".%.self.full_url).........self
5c0c0 2e 68 6f 73 74 2c 20 73 65 6c 66 2e 73 65 6c 65 63 74 6f 72 20 3d 20 5f 73 70 6c 69 74 68 6f 73 .host,.self.selector.=._splithos
5c0e0 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 3a 0a 20 20 t(rest).........if.self.host:...
5c100 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 65 28 73 65 ..........self.host.=.unquote(se
5c120 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 28 73 65 6c lf.host)......def.get_method(sel
5c140 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 6e 67 20 69 f):........."""Return.a.string.i
5c160 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 65 74 68 6f ndicating.the.HTTP.request.metho
5c180 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 20 3d 20 22 d.""".........default_method.=."
5c1a0 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 6e 65 20 65 POST".if.self.data.is.not.None.e
5c1c0 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 61 74 74 72 lse."GET".........return.getattr
5c1e0 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 68 6f 64 29 (self,.'method',.default_method)
5c200 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 3a 0a 20 20 ......def.get_full_url(self):...
5c220 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 20 20 20 20 ......return.self.full_url......
5c240 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 70 65 29 3a def.set_proxy(self,.host,.type):
5c260 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 74 70 73 27 .........if.self.type.==.'https'
5c280 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 20 20 20 20 .and.not.self._tunnel_host:.....
5c2a0 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 73 65 6c 66 ........self._tunnel_host.=.self
5c2c0 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 20 20 20 20 .host.........else:.............
5c2e0 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 73 65 6c 66 self.type=.type.............self
5c300 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 20 20 20 20 .selector.=.self.full_url.......
5c320 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 68 61 73 5f ..self.host.=.host......def.has_
5c340 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 73 65 6c 66 proxy(self):.........return.self
5c360 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 20 20 20 20 .selector.==.self.full_url......
5c380 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 6c 29 3a 0a def.add_header(self,.key,.val):.
5c3a0 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 6e 67 20 6c ........#.useful.for.something.l
5c3c0 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 65 6c 66 2e ike.authentication.........self.
5c3e0 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 76 61 6c 0a headers[key.capitalize()].=.val.
5c400 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 61 64 65 72 .....def.add_unredirected_header
5c420 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 77 69 6c 6c (self,.key,.val):.........#.will
5c440 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 64 20 72 65 .not.be.added.to.a.redirected.re
5c460 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 74 65 64 5f quest.........self.unredirected_
5c480 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 0a 0a 20 20 hdrs[key.capitalize()].=.val....
5c4a0 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 72 5f 6e 61 ..def.has_header(self,.header_na
5c4c0 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 6e 61 6d 65 me):.........return.(header_name
5c4e0 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 20 20 20 20 .in.self.headers.or.............
5c500 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 64 69 72 65 ....header_name.in.self.unredire
5c520 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 65 72 28 73 cted_hdrs)......def.get_header(s
5c540 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 6e 65 29 3a elf,.header_name,.default=None):
5c560 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 2e 67 65 74 .........return.self.headers.get
5c580 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 20 20 20 20 (.............header_name,......
5c5a0 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 73 2e 67 65 .......self.unredirected_hdrs.ge
5c5c0 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 20 20 64 65 t(header_name,.default))......de
5c5e0 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 5f 6e 61 6d f.remove_header(self,.header_nam
5c600 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 28 68 65 61 e):.........self.headers.pop(hea
5c620 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 2e 75 6e 72 der_name,.None).........self.unr
5c640 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 6d 65 2c 20 edirected_hdrs.pop(header_name,.
5c660 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 73 65 6c 66 None)......def.header_items(self
5c680 29 3a 0a 20 20 20 20 20 20 20 20 68 64 72 73 20 3d 20 7b 2a 2a 73 65 6c 66 2e 75 6e 72 65 64 69 ):.........hdrs.=.{**self.unredi
5c6a0 72 65 63 74 65 64 5f 68 64 72 73 2c 20 2a 2a 73 65 6c 66 2e 68 65 61 64 65 72 73 7d 0a 20 20 20 rected_hdrs,.**self.headers}....
5c6c0 20 20 20 20 20 72 65 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 .....return.list(hdrs.items())..
5c6e0 63 6c 61 73 73 20 4f 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 class.OpenerDirector:.....def.__
5c700 69 6e 69 74 5f 5f 28 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 init__(self):.........client_ver
5c720 73 69 6f 6e 20 3d 20 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 sion.=."Python-urllib/%s".%.__ve
5c740 72 73 69 6f 6e 5f 5f 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 rsion__.........self.addheaders.
5c760 3d 20 5b 28 27 55 73 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 =.[('User-agent',.client_version
5c780 29 5d 0a 20 20 20 20 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 )].........#.self.handlers.is.re
5c7a0 74 61 69 6e 65 64 20 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 tained.only.for.backward.compati
5c7c0 62 69 6c 69 74 79 0a 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 bility.........self.handlers.=.[
5c7e0 5d 0a 20 20 20 20 20 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 ].........#.manage.the.individua
5c800 6c 20 68 61 6e 64 6c 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 l.handlers.........self.handle_o
5c820 70 65 6e 20 3d 20 7b 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 pen.=.{}.........self.handle_err
5c840 6f 72 20 3d 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 73 or.=.{}.........self.process_res
5c860 70 6f 6e 73 65 20 3d 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 ponse.=.{}.........self.process_
5c880 72 65 71 75 65 73 74 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 request.=.{}......def.add_handle
5c8a0 72 28 73 65 6c 66 2c 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 r(self,.handler):.........if.not
5c8c0 20 68 61 73 61 74 74 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 .hasattr(handler,."add_parent"):
5c8e0 0a 20 20 20 20 20 20 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 .............raise.TypeError("ex
5c900 70 65 63 74 65 64 20 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 pected.BaseHandler.instance,.got
5c920 20 25 72 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 .%r".%..........................
5c940 20 20 20 74 79 70 65 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 ...type(handler))..........added
5c960 20 3d 20 46 61 6c 73 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 .=.False.........for.meth.in.dir
5c980 28 68 61 6e 64 6c 65 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 (handler):.............if.meth.i
5c9a0 6e 20 5b 22 72 65 64 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 n.["redirect_request",."do_open"
5c9c0 2c 20 22 70 72 6f 78 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 ,."proxy_open"]:................
5c9e0 20 23 20 6f 6f 70 73 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 .#.oops,.coincidental.match.....
5ca00 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 20 20 ............continue............
5ca20 20 20 69 20 3d 20 6d 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 ..i.=.meth.find("_")............
5ca40 20 70 72 6f 74 6f 63 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 .protocol.=.meth[:i]............
5ca60 20 63 6f 6e 64 69 74 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 .condition.=.meth[i+1:].........
5ca80 20 20 20 20 20 69 66 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 .....if.condition.startswith("er
5caa0 72 6f 72 22 29 3a 0a 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 ror"):.................j.=.condi
5cac0 74 69 6f 6e 2e 66 69 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 tion.find("_").+.i.+.1..........
5cae0 20 20 20 20 20 20 20 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 .......kind.=.meth[j+1:]........
5cb00 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:...................
5cb20 20 20 6b 69 6e 64 20 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 ..kind.=.int(kind)..............
5cb40 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 20 20 20 ...except.ValueError:...........
5cb60 20 20 20 20 20 20 20 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 ..........pass.................l
5cb80 6f 6f 6b 75 70 20 3d 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 ookup.=.self.handle_error.get(pr
5cba0 6f 74 6f 63 6f 6c 2c 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 otocol,.{}).................self
5cbc0 2e 68 61 6e 64 6c 65 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 .handle_error[protocol].=.lookup
5cbe0 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 20 22 .............elif.condition.==."
5cc00 6f 70 65 6e 22 3a 0a 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 open":.................kind.=.pr
5cc20 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 75 70 20 3d 20 otocol.................lookup.=.
5cc40 73 65 6c 66 2e 68 61 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 self.handle_open.............eli
5cc60 66 20 63 6f 6e 64 69 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 f.condition.==."response":......
5cc80 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 20 20 20 20 20 ...........kind.=.protocol......
5cca0 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 70 72 6f 63 65 73 73 ...........lookup.=.self.process
5ccc0 5f 72 65 73 70 6f 6e 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 _response.............elif.condi
5cce0 74 69 6f 6e 20 3d 3d 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 tion.==."request":..............
5cd00 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 20 ...kind.=.protocol..............
5cd20 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 71 75 65 73 74 ...lookup.=.self.process_request
5cd40 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 20 .............else:..............
5cd60 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 68 61 6e 64 6c 65 72 ...continue..............handler
5cd80 73 20 3d 20 6c 6f 6f 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 s.=.lookup.setdefault(kind,.[]).
5cda0 20 20 20 20 20 20 20 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 ............if.handlers:........
5cdc0 20 20 20 20 20 20 20 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 .........bisect.insort(handlers,
5cde0 20 68 61 6e 64 6c 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 .handler).............else:.....
5ce00 20 20 20 20 20 20 20 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 ............handlers.append(hand
5ce20 6c 65 72 29 0a 20 20 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 ler).............added.=.True...
5ce40 20 20 20 20 20 20 20 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 .......if.added:.............bis
5ce60 65 63 74 2e 69 6e 73 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 ect.insort(self.handlers,.handle
5ce80 72 29 0a 20 20 20 20 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 r).............handler.add_paren
5cea0 74 28 73 65 6c 66 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 t(self)......def.close(self):...
5cec0 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
5cee0 73 20 63 6f 6d 70 61 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 s.compatibility..........pass...
5cf00 20 20 20 64 65 66 20 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 ...def._call_chain(self,.chain,.
5cf20 6b 69 6e 64 2c 20 6d 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 kind,.meth_name,.*args):........
5cf40 20 23 20 48 61 6e 64 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 .#.Handlers.raise.an.exception.i
5cf60 66 20 6e 6f 20 6f 6e 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 f.no.one.else.should.try.to.hand
5cf80 6c 65 0a 20 20 20 20 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 le.........#.the.request,.or.ret
5cfa0 75 72 6e 20 4e 6f 6e 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 urn.None.if.they.can't.but.anoth
5cfc0 65 72 20 68 61 6e 64 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 er.handler.........#.could...Oth
5cfe0 65 72 77 69 73 65 2c 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 erwise,.they.return.the.response
5d000 2e 0a 20 20 20 20 20 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 ..........handlers.=.chain.get(k
5d020 69 6e 64 2c 20 28 29 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 ind,.()).........for.handler.in.
5d040 68 61 6e 64 6c 65 72 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 handlers:.............func.=.get
5d060 61 74 74 72 28 68 61 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 attr(handler,.meth_name)........
5d080 20 20 20 20 20 72 65 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 .....result.=.func(*args).......
5d0a0 20 20 20 20 20 20 69 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 ......if.result.is.not.None:....
5d0c0 20 20 20 20 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 .............return.result......
5d0e0 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 6f 6e def.open(self,.fullurl,.data=Non
5d100 65 2c 20 74 69 6d 65 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 e,.timeout=socket._GLOBAL_DEFAUL
5d120 54 5f 54 49 4d 45 4f 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 T_TIMEOUT):.........#.accept.a.U
5d140 52 4c 20 6f 72 20 61 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 RL.or.a.Request.object.........i
5d160 66 20 69 73 69 6e 73 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 f.isinstance(fullurl,.str):.....
5d180 20 20 20 20 20 20 20 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 ........req.=.Request(fullurl,.d
5d1a0 61 74 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 ata).........else:.............r
5d1c0 65 71 20 3d 20 66 75 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 eq.=.fullurl.............if.data
5d1e0 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 72 65 .is.not.None:.................re
5d200 71 2e 64 61 74 61 20 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 q.data.=.data..........req.timeo
5d220 75 74 20 3d 20 74 69 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 ut.=.timeout.........protocol.=.
5d240 72 65 71 2e 74 79 70 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 req.type..........#.pre-process.
5d260 72 65 71 75 65 73 74 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 request.........meth_name.=.prot
5d280 6f 63 6f 6c 2b 22 5f 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 ocol+"_request".........for.proc
5d2a0 65 73 73 6f 72 20 69 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 essor.in.self.process_request.ge
5d2c0 74 28 70 72 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 t(protocol,.[]):.............met
5d2e0 68 20 3d 20 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 h.=.getattr(processor,.meth_name
5d300 29 0a 20 20 20 20 20 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 ).............req.=.meth(req)...
5d320 20 20 20 20 20 20 20 73 79 73 2e 61 75 64 69 74 28 27 75 72 6c 6c 69 62 2e 52 65 71 75 65 73 74 .......sys.audit('urllib.Request
5d340 27 2c 20 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 2c 20 72 65 71 2e 64 61 74 61 2c 20 72 65 71 2e 68 ',.req.full_url,.req.data,.req.h
5d360 65 61 64 65 72 73 2c 20 72 65 71 2e 67 65 74 5f 6d 65 74 68 6f 64 28 29 29 0a 20 20 20 20 20 20 eaders,.req.get_method()).......
5d380 20 20 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 ..response.=.self._open(req,.dat
5d3a0 61 29 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 a)..........#.post-process.respo
5d3c0 6e 73 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 nse.........meth_name.=.protocol
5d3e0 2b 22 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 +"_response".........for.process
5d400 6f 72 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 or.in.self.process_response.get(
5d420 70 72 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 protocol,.[]):.............meth.
5d440 3d 20 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 =.getattr(processor,.meth_name).
5d460 20 20 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 ............response.=.meth(req,
5d480 20 72 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 .response)..........return.respo
5d4a0 6e 73 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 nse......def._open(self,.req,.da
5d4c0 74 61 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 ta=None):.........result.=.self.
5d4e0 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 20 27 64 _call_chain(self.handle_open,.'d
5d500 65 66 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 efault',........................
5d520 20 20 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 ...........'default_open',.req).
5d540 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 72 ........if.result:.............r
5d560 65 74 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 eturn.result..........protocol.=
5d580 20 72 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 .req.type.........result.=.self.
5d5a0 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 20 70 72 _call_chain(self.handle_open,.pr
5d5c0 6f 74 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 otocol,.protocol.+..............
5d5e0 20 20 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 .....................'_open',.re
5d600 71 29 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 q).........if.result:...........
5d620 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 72 65 74 75 72 6e 20 ..return.result..........return.
5d640 73 65 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 self._call_chain(self.handle_ope
5d660 6e 2c 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 n,.'unknown',...................
5d680 20 20 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 ..............'unknown_open',.re
5d6a0 71 29 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 q)......def.error(self,.proto,.*
5d6c0 61 72 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 args):.........if.proto.in.('htt
5d6e0 70 27 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 p',.'https'):.............#.XXX.
5d700 68 74 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 http[s].protocols.are.special-ca
5d720 73 65 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 sed.............dict.=.self.hand
5d740 6c 65 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 le_error['http'].#.https.is.not.
5d760 64 69 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 different.than.http.............
5d780 70 72 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 proto.=.args[2]..#.YUCK!........
5d7a0 20 20 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 .....meth_name.=.'http_error_%s'
5d7c0 20 25 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 .%.proto.............http_err.=.
5d7e0 31 0a 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 1.............orig_args.=.args..
5d800 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 69 63 74 20 3d 20 .......else:.............dict.=.
5d820 73 65 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 self.handle_error.............me
5d840 74 68 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 th_name.=.proto.+.'_error'......
5d860 20 20 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 .......http_err.=.0.........args
5d880 20 3d 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 .=.(dict,.proto,.meth_name).+.ar
5d8a0 67 73 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 gs.........result.=.self._call_c
5d8c0 68 61 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 hain(*args).........if.result:..
5d8e0 20 20 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 ...........return.result........
5d900 20 20 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 ..if.http_err:.............args.
5d920 3d 20 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 =.(dict,.'default',.'http_error_
5d940 64 65 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 default').+.orig_args...........
5d960 20 20 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 ..return.self._call_chain(*args)
5d980 0a 0a 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 ..#.XXX.probably.also.want.an.ab
5d9a0 73 74 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 stract.factory.that.knows.when.i
5d9c0 74 20 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 t.makes.#.sense.to.skip.a.superc
5d9e0 6c 61 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 lass.in.favor.of.a.subclass.and.
5da00 77 68 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 when.it.might.#.make.sense.to.in
5da20 63 6c 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 clude.both..def.build_opener(*ha
5da40 6e 64 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 ndlers):....."""Create.an.opener
5da60 20 6f 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 .object.from.a.list.of.handlers.
5da80 0a 0a 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 ......The.opener.will.use.severa
5daa0 6c 20 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 l.default.handlers,.including.su
5dac0 70 70 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 pport.....for.HTTP,.FTP.and.when
5dae0 20 61 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 .applicable.HTTPS.......If.any.o
5db00 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 61 72 67 75 6d 65 6e f.the.handlers.passed.as.argumen
5db20 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 20 20 20 20 64 65 66 ts.are.subclasses.of.the.....def
5db40 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 74 20 68 61 6e 64 6c ault.handlers,.the.default.handl
5db60 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 20 22 22 22 0a 20 20 ers.will.not.be.used......"""...
5db80 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 20 ..opener.=.OpenerDirector().....
5dba0 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 2c default_classes.=.[ProxyHandler,
5dbc0 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 20 .UnknownHandler,.HTTPHandler,...
5dbe0 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 74 .....................HTTPDefault
5dc00 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 65 ErrorHandler,.HTTPRedirectHandle
5dc20 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 6e r,........................FTPHan
5dc40 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 63 dler,.FileHandler,.HTTPErrorProc
5dc60 65 73 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 essor,........................Da
5dc80 74 61 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 taHandler].....if.hasattr(http.c
5dca0 6c 69 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 lient,."HTTPSConnection"):......
5dcc0 20 20 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 ...default_classes.append(HTTPSH
5dce0 61 6e 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 andler).....skip.=.set().....for
5dd00 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 20 .klass.in.default_classes:......
5dd20 20 20 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 ...for.check.in.handlers:.......
5dd40 20 20 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 ......if.isinstance(check,.type)
5dd60 3a 0a 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 :.................if.issubclass(
5dd80 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 20 20 20 20 20 20 check,.klass):..................
5dda0 20 20 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 ...skip.add(klass).............e
5ddc0 6c 69 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 lif.isinstance(check,.klass):...
5dde0 20 20 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 ..............skip.add(klass)...
5de00 20 20 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 ..for.klass.in.skip:.........def
5de20 61 75 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 ault_classes.remove(klass)......
5de40 66 6f 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 for.klass.in.default_classes:...
5de60 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 6b 6c 61 73 73 28 29 ......opener.add_handler(klass()
5de80 29 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 )......for.h.in.handlers:.......
5dea0 20 20 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 ..if.isinstance(h,.type):.......
5dec0 20 20 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 ......h.=.h().........opener.add
5dee0 5f 68 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 _handler(h).....return.opener..c
5df00 6c 61 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 lass.BaseHandler:.....handler_or
5df20 64 65 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 der.=.500......def.add_parent(se
5df40 6c 66 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 lf,.parent):.........self.parent
5df60 20 3d 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 .=.parent......def.close(self):.
5df80 20 20 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 ........#.Only.exists.for.backwa
5dfa0 72 64 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 rds.compatibility.........pass..
5dfc0 20 20 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 ....def.__lt__(self,.other):....
5dfe0 20 20 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 .....if.not.hasattr(other,."hand
5e000 6c 65 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 ler_order"):.............#.Try.t
5e020 6f 20 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 o.preserve.the.old.behavior.of.h
5e040 61 76 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 aving.custom.classes............
5e060 20 23 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 .#.inserted.after.default.ones.(
5e080 77 6f 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 works.only.for.custom.user......
5e0a0 20 20 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 .......#.classes.which.are.not.a
5e0c0 77 61 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 ware.of.handler_order)..........
5e0e0 20 20 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 ....return.True.........return.s
5e100 65 6c 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 elf.handler_order.<.other.handle
5e120 72 5f 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 r_order...class.HTTPErrorProcess
5e140 6f 72 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 or(BaseHandler):....."""Process.
5e160 48 54 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 HTTP.error.responses.""".....han
5e180 64 6c 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 dler_order.=.1000..#.after.all.o
5e1a0 74 68 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 ther.processing......def.http_re
5e1c0 73 70 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 sponse(self,.request,.response):
5e1e0 0a 20 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 .........code,.msg,.hdrs.=.respo
5e200 6e 73 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 nse.code,.response.msg,.response
5e220 2e 69 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 .info()..........#.According.to.
5e240 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 74 65 73 20 74 RFC.2616,."2xx".code.indicates.t
5e260 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 72 65 71 75 65 hat.the.client's.........#.reque
5e280 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 64 2c 20 75 6e st.was.successfully.received,.un
5e2a0 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 20 20 20 20 20 derstood,.and.accepted..........
5e2c0 69 66 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 if.not.(200.<=.code.<.300):.....
5e2e0 20 20 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 ........response.=.self.parent.e
5e300 72 72 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 rror(.................'http',.re
5e320 71 75 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 quest,.response,.code,.msg,.hdrs
5e340 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 65 0a 0a 20 20 20 20 )..........return.response......
5e360 68 74 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 https_response.=.http_response..
5e380 63 6c 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 class.HTTPDefaultErrorHandler(Ba
5e3a0 73 65 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 seHandler):.....def.http_error_d
5e3c0 65 66 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 efault(self,.req,.fp,.code,.msg,
5e3e0 20 68 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 .hdrs):.........raise.HTTPError(
5e400 72 65 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 req.full_url,.code,.msg,.hdrs,.f
5e420 70 29 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 p)..class.HTTPRedirectHandler(Ba
5e440 73 65 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 seHandler):.....#.maximum.number
5e460 20 6f 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 .of.redirections.to.any.single.U
5e480 52 4c 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 RL.....#.this.is.needed.because.
5e4a0 6f 66 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 of.the.state.that.cookies.introd
5e4c0 75 63 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 uce.....max_repeats.=.4.....#.ma
5e4e0 78 69 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 ximum.total.number.of.redirectio
5e500 6e 73 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 ns.(regardless.of.URL).before...
5e520 20 20 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 ..#.assuming.we're.in.a.loop....
5e540 20 6d 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 .max_redirections.=.10......def.
5e560 72 65 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 redirect_request(self,.req,.fp,.
5e580 63 6f 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 code,.msg,.headers,.newurl):....
5e5a0 20 20 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 ....."""Return.a.Request.or.None
5e5c0 20 69 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 .in.response.to.a.redirect......
5e5e0 20 20 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 .....This.is.called.by.the.http_
5e600 65 72 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 error_30x.methods.when.a........
5e620 20 72 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 .redirection.response.is.receive
5e640 64 2e 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 d...If.a.redirection.should.....
5e660 20 20 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 ....take.place,.return.a.new.Req
5e680 75 65 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 uest.to.allow.http_error_30x.to.
5e6a0 20 20 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 ........perform.the.redirect...O
5e6c0 74 68 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 therwise,.raise.HTTPError.if.no-
5e6e0 6f 6e 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 one.........else.should.try.to.h
5e700 61 6e 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 andle.this.url...Return.None.if.
5e720 79 6f 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 you.can't.........but.another.Ha
5e740 6e 64 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 ndler.might.........."""........
5e760 20 6d 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 .m.=.req.get_method().........if
5e780 20 28 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 .(not.(code.in.(301,.302,.303,.3
5e7a0 30 37 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 07).and.m.in.("GET",."HEAD")....
5e7c0 20 20 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 .........or.code.in.(301,.302,.3
5e7e0 30 33 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 03).and.m.==."POST")):..........
5e800 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 75 72 6c 2c ...raise.HTTPError(req.full_url,
5e820 20 63 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 .code,.msg,.headers,.fp)........
5e840 20 20 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 ..#.Strictly.(according.to.RFC.2
5e860 36 31 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 616),.301.or.302.in.response.to.
5e880 20 20 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 ........#.a.POST.MUST.NOT.cause.
5e8a0 61 20 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 a.redirection.without.confirmati
5e8c0 6f 6e 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 on.........#.from.the.user.(of.u
5e8e0 72 6c 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 rllib.request,.in.this.case)...I
5e900 6e 20 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 n.practice,.........#.essentiall
5e920 79 20 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 y.all.clients.do.redirect.in.thi
5e940 73 20 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 s.case,.so.we.do.........#.the.s
5e960 61 6d 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 ame...........#.Be.conciliant.wi
5e980 74 68 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 th.URIs.containing.a.space...Thi
5e9a0 73 20 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 s.is.mainly.........#.redundant.
5e9c0 77 69 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 with.the.more.complete.encoding.
5e9e0 64 6f 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 done.in.http_error_302(),.......
5ea00 20 20 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 ..#.but.it.is.kept.for.compatibi
5ea20 6c 69 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 lity.with.other.callers.........
5ea40 20 6e 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 .newurl.=.newurl.replace('.',.'%
5ea60 32 30 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 20')..........CONTENT_HEADERS.=.
5ea80 28 22 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 ("content-length",."content-type
5eaa0 22 29 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 ").........newheaders.=.{k:.v.fo
5eac0 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 20 20 r.k,.v.in.req.headers.items()...
5eae0 20 20 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 ....................if.k.lower()
5eb00 20 6e 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 .not.in.CONTENT_HEADERS}........
5eb20 20 72 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 .return.Request(newurl,.........
5eb40 20 20 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 ...............headers=newheader
5eb60 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 6f 72 69 67 69 6e s,........................origin
5eb80 5f 72 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 _req_host=req.origin_req_host,..
5eba0 20 20 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 ......................unverifiab
5ebc0 6c 65 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 le=True)......#.Implementation.n
5ebe0 6f 74 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 ote:.To.avoid.the.server.sending
5ec00 20 75 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 .us.into.an.....#.infinite.loop,
5ec20 20 74 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 .the.request.object.needs.to.tra
5ec40 63 6b 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 ck.what.URLs.we.....#.have.alrea
5ec60 64 79 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 dy.seen...Do.this.by.adding.a.ha
5ec80 6e 64 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 ndler-specific.....#.attribute.t
5eca0 6f 20 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 o.the.Request.object......def.ht
5ecc0 74 70 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 tp_error_302(self,.req,.fp,.code
5ece0 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 23 20 53 6f 6d 65 20 ,.msg,.headers):.........#.Some.
5ed00 73 65 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 servers.(incorrectly).return.mul
5ed20 74 69 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 tiple.Location.headers.........#
5ed40 20 28 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 .(so.probably.same.goes.for.URI)
5ed60 2e 20 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 ...Use.first.header..........if.
5ed80 22 6c 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 "location".in.headers:..........
5eda0 20 20 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 ...newurl.=.headers["location"].
5edc0 20 20 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 ........elif."uri".in.headers:..
5ede0 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 22 75 72 69 ...........newurl.=.headers["uri
5ee00 22 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 20 72 65 74 "].........else:.............ret
5ee20 75 72 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 urn..........#.fix.a.possible.ma
5ee40 6c 66 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 lformed.URL.........urlparts.=.u
5ee60 72 6c 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 rlparse(newurl)..........#.For.s
5ee80 65 63 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 ecurity.reasons.we.don't.allow.r
5eea0 65 64 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 edirection.to.anything.other....
5eec0 20 20 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 .....#.than.http,.https.or.ftp..
5eee0 0a 20 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 .........if.urlparts.scheme.not.
5ef00 69 6e 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 in.('http',.'https',.'ftp',.''):
5ef20 0a 20 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 .............raise.HTTPError(...
5ef40 20 20 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 ..............newurl,.code,.....
5ef60 20 20 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 ............"%s.-.Redirection.to
5ef80 20 75 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 .url.'%s'.is.not.allowed".%.(msg
5efa0 2c 20 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 ,.newurl),.................heade
5efc0 72 73 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 rs,.fp)..........if.not.urlparts
5efe0 2e 70 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 .path.and.urlparts.netloc:......
5f000 20 20 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 .......urlparts.=.list(urlparts)
5f020 0a 20 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 .............urlparts[2].=."/"..
5f040 20 20 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 .......newurl.=.urlunparse(urlpa
5f060 72 74 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 rts)..........#.http.client.pars
5f080 65 5f 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 e_headers().decodes.as.ISO-8859-
5f0a0 31 2e 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 1...Recover.the.........#.origin
5f0c0 61 6c 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 al.bytes.and.percent-encode.non-
5f0e0 41 53 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 ASCII.bytes,.and.any.special....
5f100 20 20 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 .....#.characters.such.as.the.sp
5f120 61 63 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 ace..........newurl.=.quote(....
5f140 20 20 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 .........newurl,.encoding="iso-8
5f160 38 35 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 859-1",.safe=string.punctuation)
5f180 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 72 65 71 2e 66 75 .........newurl.=.urljoin(req.fu
5f1a0 6c 6c 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 ll_url,.newurl)..........#.XXX.P
5f1c0 72 6f 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 robably.want.to.forget.about.the
5f1e0 20 73 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 .state.of.the.current.........#.
5f200 72 65 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 request,.although.that.might.int
5f220 65 72 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 eract.poorly.with.other.........
5f240 23 20 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 #.handlers.that.also.use.handler
5f260 2d 73 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 -specific.request.attributes....
5f280 20 20 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 .....new.=.self.redirect_request
5f2a0 28 72 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 (req,.fp,.code,.msg,.headers,.ne
5f2c0 77 75 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 wurl).........if.new.is.None:...
5f2e0 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 23 20 6c 6f 6f 70 ..........return..........#.loop
5f300 20 64 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 .detection.........#..redirect_d
5f320 69 63 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 ict.has.a.key.url.if.url.was.pre
5f340 76 69 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 viously.visited..........if.hasa
5f360 74 74 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 ttr(req,.'redirect_dict'):......
5f380 20 20 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 .......visited.=.new.redirect_di
5f3a0 63 74 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 ct.=.req.redirect_dict..........
5f3c0 20 20 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 ...if.(visited.get(newurl,.0).>=
5f3e0 20 73 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 .self.max_repeats.or............
5f400 20 20 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 .....len(visited).>=.self.max_re
5f420 64 69 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 directions):.................rai
5f440 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 6f 64 65 2c se.HTTPError(req.full_url,.code,
5f460 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 ................................
5f480 20 73 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 .self.inf_msg.+.msg,.headers,.fp
5f4a0 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 76 69 73 69 ).........else:.............visi
5f4c0 74 65 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 ted.=.new.redirect_dict.=.req.re
5f4e0 64 69 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 direct_dict.=.{}.........visited
5f500 5b 6e 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 [newurl].=.visited.get(newurl,.0
5f520 29 20 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 ).+.1..........#.Don't.close.the
5f540 20 66 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 .fp.until.we.are.sure.that.we.wo
5f560 6e 27 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 n't.use.it.........#.with.HTTPEr
5f580 72 6f 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 ror..........fp.read().........f
5f5a0 70 2e 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 p.close()..........return.self.p
5f5c0 61 72 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 arent.open(new,.timeout=req.time
5f5e0 6f 75 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 out)......http_error_301.=.http_
5f600 65 72 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 error_303.=.http_error_307.=.htt
5f620 70 5f 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 p_error_302......inf_msg.=."The.
5f640 48 54 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 HTTP.server.returned.a.redirect.
5f660 65 72 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 error.that.would.".\............
5f680 20 20 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 ..."lead.to.an.infinite.loop.\n"
5f6a0 20 5c 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 .\..............."The.last.30x.e
5f6c0 72 72 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 rror.message.was:\n"...def._pars
5f6e0 65 5f 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 e_proxy(proxy):....."""Return.(s
5f700 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 2f 70 6f 72 74 cheme,.user,.password,.host/port
5f720 29 20 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 ).given.a.URL.or.an.authority...
5f740 20 20 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 ....If.a.URL.is.supplied,.it.mus
5f760 74 20 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 t.have.an.authority.(host:port).
5f780 63 6f 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 component......According.to.RFC.
5f7a0 33 39 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 3986,.having.an.authority.compon
5f7c0 65 6e 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 ent.means.the.URL.must.....have.
5f7e0 74 77 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 two.slashes.after.the.scheme....
5f800 20 20 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 5f 73 70 ..""".....scheme,.r_scheme.=._sp
5f820 6c 69 74 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 littype(proxy).....if.not.r_sche
5f840 6d 65 2e 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 me.startswith("/"):.........#.au
5f860 74 68 6f 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 thority.........scheme.=.None...
5f880 20 20 20 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 ......authority.=.proxy.....else
5f8a0 3a 0a 20 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 :.........#.URL.........if.not.r
5f8c0 5f 73 63 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 _scheme.startswith("//"):.......
5f8e0 20 20 20 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 ......raise.ValueError("proxy.UR
5f900 4c 20 77 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 L.with.no.authority:.%r".%.proxy
5f920 29 0a 20 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 ).........#.We.have.an.authority
5f940 2c 20 73 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 ,.so.for.RFC.3986-compliant.URLs
5f960 20 28 62 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 .(by.ss.3..........#.and.3.3.),.
5f980 70 61 74 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 path.is.empty.or.starts.with.'/'
5f9a0 0a 20 20 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 .........end.=.r_scheme.find("/"
5f9c0 2c 20 32 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 ,.2).........if.end.==.-1:......
5f9e0 20 20 20 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 .......end.=.None.........author
5fa00 69 74 79 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 ity.=.r_scheme[2:end].....userin
5fa20 66 6f 2c 20 68 6f 73 74 70 6f 72 74 20 3d 20 5f 73 70 6c 69 74 75 73 65 72 28 61 75 74 68 6f 72 fo,.hostport.=._splituser(author
5fa40 69 74 79 29 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 ity).....if.userinfo.is.not.None
5fa60 3a 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 5f 73 70 6c 69 :.........user,.password.=._spli
5fa80 74 70 61 73 73 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 tpasswd(userinfo).....else:.....
5faa0 20 20 20 20 75 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 ....user.=.password.=.None.....r
5fac0 65 74 75 72 6e 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 eturn.scheme,.user,.password,.ho
5fae0 73 74 70 6f 72 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 stport..class.ProxyHandler(BaseH
5fb00 61 6e 64 6c 65 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 andler):.....#.Proxies.must.be.i
5fb20 6e 20 66 72 6f 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 n.front.....handler_order.=.100.
5fb40 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 65 73 3d .....def.__init__(self,.proxies=
5fb60 4e 6f 6e 65 29 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 None):.........if.proxies.is.Non
5fb80 65 3a 0a 20 20 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 e:.............proxies.=.getprox
5fba0 69 65 73 28 29 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 ies().........assert.hasattr(pro
5fbc0 78 69 65 73 2c 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 xies,.'keys'),."proxies.must.be.
5fbe0 61 20 6d 61 70 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 a.mapping".........self.proxies.
5fc00 3d 20 70 72 6f 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 =.proxies.........for.type,.url.
5fc20 69 6e 20 70 72 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 in.proxies.items():.............
5fc40 74 79 70 65 20 3d 20 74 79 70 65 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 type.=.type.lower().............
5fc60 73 65 74 61 74 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 setattr(self,.'%s_open'.%.type,.
5fc80 20 20 20 20 20 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 ....................lambda.r,.pr
5fca0 6f 78 79 3d 75 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 oxy=url,.type=type,.meth=self.pr
5fcc0 6f 78 79 5f 6f 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 oxy_open:.......................
5fce0 20 20 6d 65 74 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 ..meth(r,.proxy,.type))......def
5fd00 20 70 72 6f 78 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 .proxy_open(self,.req,.proxy,.ty
5fd20 70 65 29 3a 0a 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 pe):.........orig_type.=.req.typ
5fd40 65 0a 20 20 20 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 e.........proxy_type,.user,.pass
5fd60 77 6f 72 64 2c 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 word,.hostport.=._parse_proxy(pr
5fd80 6f 78 79 29 0a 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 oxy).........if.proxy_type.is.No
5fda0 6e 65 3a 0a 20 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 ne:.............proxy_type.=.ori
5fdc0 67 5f 74 79 70 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 g_type..........if.req.host.and.
5fde0 70 72 6f 78 79 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 proxy_bypass(req.host):.........
5fe00 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 69 66 20 75 73 65 72 ....return.None..........if.user
5fe20 20 61 6e 64 20 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 .and.password:.............user_
5fe40 70 61 73 73 20 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 pass.=.'%s:%s'.%.(unquote(user),
5fe60 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 ................................
5fe80 20 20 20 20 75 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 ....unquote(password))..........
5fea0 20 20 20 63 72 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 ...creds.=.base64.b64encode(user
5fec0 5f 70 61 73 73 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 _pass.encode()).decode("ascii").
5fee0 20 20 20 20 20 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 ............req.add_header('Prox
5ff00 79 2d 61 75 74 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 y-authorization',.'Basic.'.+.cre
5ff20 64 73 29 0a 20 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 ds).........hostport.=.unquote(h
5ff40 6f 73 74 70 6f 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 ostport).........req.set_proxy(h
5ff60 6f 73 74 70 6f 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 ostport,.proxy_type).........if.
5ff80 6f 72 69 67 5f 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 orig_type.==.proxy_type.or.orig_
5ffa0 74 79 70 65 20 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 type.==.'https':.............#.l
5ffc0 65 74 20 6f 74 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 et.other.handlers.take.care.of.i
5ffe0 74 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 20 20 t.............return.None.......
60000 20 20 65 6c 73 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 ..else:.............#.need.to.st
60020 61 72 74 20 6f 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 art.over,.because.the.other.hand
60040 6c 65 72 73 20 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 lers.don't.............#.grok.th
60060 65 20 70 72 6f 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 e.proxy's.URL.type.............#
60080 20 65 2e 67 2e 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 .e.g..if.we.have.a.constructor.a
600a0 72 67 20 70 72 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 rg.proxies.like.so:.............
600c0 23 20 7b 27 68 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 #.{'http':.'ftp://proxy.example.
600e0 63 6f 6d 27 7d 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 com'},.we.may.end.up.turning....
60100 20 20 20 20 20 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 .........#.a.request.for.http://
60120 61 63 6d 65 2e 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 acme.example.com/a.into.one.for.
60140 20 20 20 20 20 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 ............#.ftp://proxy.exampl
60160 65 2e 63 6f 6d 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 e.com/a.............return.self.
60180 70 61 72 65 6e 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 parent.open(req,.timeout=req.tim
601a0 65 6f 75 74 29 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 eout)..class.HTTPPasswordMgr:...
601c0 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 20 20 20 20 73 ...def.__init__(self):.........s
601e0 65 6c 66 2e 70 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 elf.passwd.=.{}......def.add_pas
60200 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
60220 73 73 77 64 29 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 sswd):.........#.uri.could.be.a.
60240 73 69 6e 67 6c 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 single.URI.or.a.sequence........
60260 20 69 66 20 69 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 .if.isinstance(uri,.str):.......
60280 20 20 20 20 20 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 ......uri.=.[uri].........if.rea
602a0 6c 6d 20 6e 6f 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 lm.not.in.self.passwd:..........
602c0 20 20 20 73 65 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 ...self.passwd[realm].=.{}......
602e0 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 6c ...for.default_port.in.True,.Fal
60300 73 65 3a 0a 20 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 se:.............reduced_uri.=.tu
60320 70 6c 65 28 0a 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 ple(.................self.reduce
60340 5f 75 72 69 28 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 _uri(u,.default_port).for.u.in.u
60360 72 69 29 0a 20 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 ri).............self.passwd[real
60380 6d 5d 5b 72 65 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 m][reduced_uri].=.(user,.passwd)
603a0 0a 0a 20 20 20 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 ......def.find_user_password(sel
603c0 66 2c 20 72 65 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 f,.realm,.authuri):.........doma
603e0 69 6e 73 20 3d 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 ins.=.self.passwd.get(realm,.{})
60400 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 20 54 72 75 .........for.default_port.in.Tru
60420 65 2c 20 46 61 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 e,.False:.............reduced_au
60440 74 68 75 72 69 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 thuri.=.self.reduce_uri(authuri,
60460 20 64 65 66 61 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 .default_port).............for.u
60480 72 69 73 2c 20 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 ris,.authinfo.in.domains.items()
604a0 3a 0a 20 20 20 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 :.................for.uri.in.uri
604c0 73 3a 0a 20 20 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 s:.....................if.self.i
604e0 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 75 72 69 29 3a 0a s_suburi(uri,.reduced_authuri):.
60500 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 6e 20 61 ........................return.a
60520 75 74 68 69 6e 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 uthinfo.........return.None,.Non
60540 65 0a 0a 20 20 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 e......def.reduce_uri(self,.uri,
60560 20 64 65 66 61 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 .default_port=True):........."""
60580 41 63 63 65 70 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 Accept.authority.or.URI.and.extr
605a0 61 63 74 20 6f 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 act.only.the.authority.and.path.
605c0 22 22 22 0a 20 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 """.........#.note.HTTP.URLs.do.
605e0 6e 6f 74 20 68 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 not.have.a.userinfo.component...
60600 20 20 20 20 20 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 ......parts.=.urlsplit(uri).....
60620 20 20 20 20 69 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 ....if.parts[1]:.............#.U
60640 52 49 0a 20 20 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 RI.............scheme.=.parts[0]
60660 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 70 61 72 74 73 5b 31 .............authority.=.parts[1
60680 5d 0a 20 20 20 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 ].............path.=.parts[2].or
606a0 20 27 2f 27 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 23 .'/'.........else:.............#
606c0 20 68 6f 73 74 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 .host.or.host:port.............s
606e0 63 68 65 6d 65 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 cheme.=.None.............authori
60700 74 79 20 3d 20 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 ty.=.uri.............path.=.'/'.
60720 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 20 3d 20 5f 73 70 6c 69 74 70 6f 72 74 28 ........host,.port.=._splitport(
60740 61 75 74 68 6f 72 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 authority).........if.default_po
60760 72 74 20 61 6e 64 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 rt.and.port.is.None.and.scheme.i
60780 73 20 6e 6f 74 20 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 s.not.None:.............dport.=.
607a0 7b 22 68 74 74 70 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 {"http":.80,....................
607c0 20 20 22 68 74 74 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 .."https":.443,.................
607e0 20 20 20 20 20 7d 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 .....}.get(scheme).............i
60800 66 20 64 70 6f 72 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 f.dport.is.not.None:............
60820 20 20 20 20 20 61 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 .....authority.=."%s:%d".%.(host
60840 2c 20 64 70 6f 72 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 ,.dport).........return.authorit
60860 79 2c 20 70 61 74 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 y,.path......def.is_suburi(self,
60880 20 62 61 73 65 2c 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 .base,.test):........."""Check.i
608a0 66 20 74 65 73 74 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 f.test.is.below.base.in.a.URI.tr
608c0 65 65 0a 0a 20 20 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 ee..........Both.args.must.be.UR
608e0 49 73 20 69 6e 20 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 Is.in.reduced.form..........""".
60900 20 20 20 20 20 20 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 ........if.base.==.test:........
60920 20 20 20 20 20 72 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 .....return.True.........if.base
60940 5b 30 5d 20 21 3d 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 [0].!=.test[0]:.............retu
60960 72 6e 20 46 61 6c 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 rn.False.........common.=.posixp
60980 61 74 68 2e 63 6f 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 ath.commonprefix((base[1],.test[
609a0 31 5d 29 29 0a 20 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 1])).........if.len(common).==.l
609c0 65 6e 28 62 61 73 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 en(base[1]):.............return.
609e0 54 72 75 65 0a 20 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 True.........return.False...clas
60a00 73 20 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 52 65 61 6c s.HTTPPasswordMgrWithDefaultReal
60a20 6d 28 48 54 54 50 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 m(HTTPPasswordMgr):......def.fin
60a40 64 5f 75 73 65 72 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 d_user_password(self,.realm,.aut
60a60 68 75 72 69 29 3a 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 huri):.........user,.password.=.
60a80 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 77 6f HTTPPasswordMgr.find_user_passwo
60aa0 72 64 28 73 65 6c 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 rd(self,.realm,.................
60ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
60ae0 20 20 20 20 20 20 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 ............authuri).........if.
60b00 75 73 65 72 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 72 65 user.is.not.None:.............re
60b20 74 75 72 6e 20 75 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 turn.user,.password.........retu
60b40 72 6e 20 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 rn.HTTPPasswordMgr.find_user_pas
60b60 73 77 6f 72 64 28 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 sword(self,.None,.authuri)...cla
60b80 73 73 20 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 28 ss.HTTPPasswordMgrWithPriorAuth(
60ba0 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 52 65 61 6c 6d 29 HTTPPasswordMgrWithDefaultRealm)
60bc0 3a 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 2a 61 72 67 73 2c :......def.__init__(self,.*args,
60be0 20 2a 2a 6b 77 61 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 .**kwargs):.........self.authent
60c00 69 63 61 74 65 64 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 icated.=.{}.........super().__in
60c20 69 74 5f 5f 28 2a 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 it__(*args,.**kwargs)......def.a
60c40 64 64 5f 70 61 73 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 dd_password(self,.realm,.uri,.us
60c60 65 72 2c 20 70 61 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 er,.passwd,.is_authenticated=Fal
60c80 73 65 29 3a 0a 20 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 se):.........self.update_authent
60ca0 69 63 61 74 65 64 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 icated(uri,.is_authenticated)...
60cc0 20 20 20 20 20 20 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 ......#.Add.a.default.for.prior.
60ce0 61 75 74 68 20 72 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 auth.requests.........if.realm.i
60d00 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 75 70 65 72 28 29 2e s.not.None:.............super().
60d20 61 64 64 5f 70 61 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 add_password(None,.uri,.user,.pa
60d40 73 73 77 64 29 0a 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 sswd).........super().add_passwo
60d60 72 64 28 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 0a 0a 20 20 rd(realm,.uri,.user,.passwd)....
60d80 20 20 64 65 66 20 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 ..def.update_authenticated(self,
60da0 20 75 72 69 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 .uri,.is_authenticated=False):..
60dc0 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 65 20 55 .......#.uri.could.be.a.single.U
60de0 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 73 69 6e RI.or.a.sequence.........if.isin
60e00 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 20 75 72 stance(uri,.str):.............ur
60e20 69 20 3d 20 5b 75 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 i.=.[uri]..........for.default_p
60e40 6f 72 74 20 69 6e 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 ort.in.True,.False:.............
60e60 66 6f 72 20 75 20 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 for.u.in.uri:.................re
60e80 64 75 63 65 64 5f 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 duced_uri.=.self.reduce_uri(u,.d
60ea0 65 66 61 75 6c 74 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 efault_port).................sel
60ec0 66 2e 61 75 74 68 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 f.authenticated[reduced_uri].=.i
60ee0 73 5f 61 75 74 68 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 s_authenticated......def.is_auth
60f00 65 6e 74 69 63 61 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 enticated(self,.authuri):.......
60f20 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 6c 73 ..for.default_port.in.True,.Fals
60f40 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 20 3d e:.............reduced_authuri.=
60f60 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 75 6c .self.reduce_uri(authuri,.defaul
60f80 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 20 69 6e 20 73 t_port).............for.uri.in.s
60fa0 65 6c 66 2e 61 75 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 elf.authenticated:..............
60fc0 20 20 20 69 66 20 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 ...if.self.is_suburi(uri,.reduce
60fe0 64 5f 61 75 74 68 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 d_authuri):.....................
61000 72 65 74 75 72 6e 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 return.self.authenticated[uri]..
61020 0a 63 6c 61 73 73 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 .class.AbstractBasicAuthHandler:
61040 0a 0a 20 20 20 20 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 ......#.XXX.this.allows.for.mult
61060 69 70 6c 65 20 61 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 iple.auth-schemes,.but.will.stup
61080 69 64 6c 79 20 70 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 idly.pick.....#.the.last.one.wit
610a0 68 20 61 20 72 65 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 h.a.realm.specified.......#.allo
610c0 77 20 66 6f 72 20 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 w.for.double-.and.single-quoted.
610e0 72 65 61 6c 6d 20 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 realm.values.....#.(single.quote
61100 73 20 61 72 65 20 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 s.are.a.violation.of.the.RFC,.bu
61120 74 20 61 70 70 65 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 t.appear.in.the.wild).....rx.=.r
61140 65 2e 63 6f 6d 70 69 6c 65 28 27 28 3f 3a 5e 7c 2c 29 27 20 20 20 23 20 73 74 61 72 74 20 6f 66 e.compile('(?:^|,)'...#.start.of
61160 20 74 68 65 20 73 74 72 69 6e 67 20 6f 72 20 27 2c 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .the.string.or.','..............
61180 20 20 20 20 20 20 20 27 5b 20 5c 74 5d 2a 27 20 20 20 20 23 20 6f 70 74 69 6f 6e 61 6c 20 77 68 .......'[.\t]*'....#.optional.wh
611a0 69 74 65 73 70 61 63 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 itespaces.....................'(
611c0 5b 5e 20 5c 74 5d 2b 29 27 20 23 20 73 63 68 65 6d 65 20 6c 69 6b 65 20 22 42 61 73 69 63 22 0a [^.\t]+)'.#.scheme.like."Basic".
611e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 5b 20 5c 74 5d 2b 27 20 20 20 20 ....................'[.\t]+'....
61200 23 20 6d 61 6e 64 61 74 6f 72 79 20 77 68 69 74 65 73 70 61 63 65 73 0a 20 20 20 20 20 20 20 20 #.mandatory.whitespaces.........
61220 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 61 6c 6d 3d 78 78 78 0a 20 20 20 20 20 20 20 20 ............#.realm=xxx.........
61240 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 61 6c 6d 3d 27 78 78 78 27 0a 20 20 20 20 20 20 ............#.realm='xxx'.......
61260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 61 6c 6d 3d 22 78 78 78 22 0a 20 20 20 20 ..............#.realm="xxx".....
61280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 65 61 6c 6d 3d 28 5b 22 5c 27 5d 3f 29 28 ................'realm=(["\']?)(
612a0 5b 5e 22 5c 27 5d 2a 29 5c 5c 32 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 [^"\']*)\\2',...................
612c0 20 20 72 65 2e 49 29 0a 0a 20 20 20 20 23 20 58 58 58 20 63 6f 75 6c 64 20 70 72 65 2d 65 6d 70 ..re.I)......#.XXX.could.pre-emp
612e0 74 69 76 65 6c 79 20 73 65 6e 64 20 61 75 74 68 20 69 6e 66 6f 20 61 6c 72 65 61 64 79 20 61 63 tively.send.auth.info.already.ac
61300 63 65 70 74 65 64 20 28 52 46 43 20 32 36 31 37 2c 0a 20 20 20 20 23 20 65 6e 64 20 6f 66 20 73 cepted.(RFC.2617,.....#.end.of.s
61320 65 63 74 69 6f 6e 20 32 2c 20 61 6e 64 20 73 65 63 74 69 6f 6e 20 31 2e 32 20 69 6d 6d 65 64 69 ection.2,.and.section.1.2.immedi
61340 61 74 65 6c 79 20 61 66 74 65 72 20 22 63 72 65 64 65 6e 74 69 61 6c 73 22 0a 20 20 20 20 23 20 ately.after."credentials".....#.
61360 70 72 6f 64 75 63 74 69 6f 6e 29 2e 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 production).......def.__init__(s
61380 65 6c 66 2c 20 70 61 73 73 77 6f 72 64 5f 6d 67 72 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 elf,.password_mgr=None):........
613a0 20 69 66 20 70 61 73 73 77 6f 72 64 5f 6d 67 72 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 .if.password_mgr.is.None:.......
613c0 20 20 20 20 20 20 70 61 73 73 77 6f 72 64 5f 6d 67 72 20 3d 20 48 54 54 50 50 61 73 73 77 6f 72 ......password_mgr.=.HTTPPasswor
613e0 64 4d 67 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 73 73 77 64 20 3d 20 70 61 73 dMgr().........self.passwd.=.pas
61400 73 77 6f 72 64 5f 6d 67 72 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 5f 70 61 73 73 77 sword_mgr.........self.add_passw
61420 6f 72 64 20 3d 20 73 65 6c 66 2e 70 61 73 73 77 64 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 0a 0a ord.=.self.passwd.add_password..
61440 20 20 20 20 64 65 66 20 5f 70 61 72 73 65 5f 72 65 61 6c 6d 28 73 65 6c 66 2c 20 68 65 61 64 65 ....def._parse_realm(self,.heade
61460 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 70 61 72 73 65 20 57 57 57 2d 41 75 74 68 65 6e 74 69 r):.........#.parse.WWW-Authenti
61480 63 61 74 65 20 68 65 61 64 65 72 3a 20 61 63 63 65 70 74 20 6d 75 6c 74 69 70 6c 65 20 63 68 61 cate.header:.accept.multiple.cha
614a0 6c 6c 65 6e 67 65 73 20 70 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 66 6f 75 6e 64 llenges.per.header.........found
614c0 5f 63 68 61 6c 6c 65 6e 67 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6d _challenge.=.False.........for.m
614e0 6f 20 69 6e 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 2e 72 78 o.in.AbstractBasicAuthHandler.rx
61500 2e 66 69 6e 64 69 74 65 72 28 68 65 61 64 65 72 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 .finditer(header):.............s
61520 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 70 73 28 cheme,.quote,.realm.=.mo.groups(
61540 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 71 75 6f 74 65 20 6e 6f 74 20 69 6e 20 5b 27 ).............if.quote.not.in.['
61560 22 27 2c 20 22 27 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e "',."'"]:.................warnin
61580 67 73 2e 77 61 72 6e 28 22 42 61 73 69 63 20 41 75 74 68 20 52 65 61 6c 6d 20 77 61 73 20 75 6e gs.warn("Basic.Auth.Realm.was.un
615a0 71 75 6f 74 65 64 22 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 quoted",........................
615c0 20 20 20 20 20 20 20 55 73 65 72 57 61 72 6e 69 6e 67 2c 20 33 29 0a 0a 20 20 20 20 20 20 20 20 .......UserWarning,.3)..........
615e0 20 20 20 20 79 69 65 6c 64 20 28 73 63 68 65 6d 65 2c 20 72 65 61 6c 6d 29 0a 0a 20 20 20 20 20 ....yield.(scheme,.realm).......
61600 20 20 20 20 20 20 20 66 6f 75 6e 64 5f 63 68 61 6c 6c 65 6e 67 65 20 3d 20 54 72 75 65 0a 0a 20 .......found_challenge.=.True...
61620 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 5f 63 68 61 6c 6c 65 6e 67 65 3a 0a 20 .......if.not.found_challenge:..
61640 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 65 61 64 65 72 3a 0a 20 20 20 20 20 20 20 20 20 20 ...........if.header:...........
61660 20 20 20 20 20 20 73 63 68 65 6d 65 20 3d 20 68 65 61 64 65 72 2e 73 70 6c 69 74 28 29 5b 30 5d ......scheme.=.header.split()[0]
61680 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 20 .............else:..............
616a0 20 20 20 73 63 68 65 6d 65 20 3d 20 27 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 79 69 65 6c 64 ...scheme.=.''.............yield
616c0 20 28 73 63 68 65 6d 65 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 .(scheme,.None)......def.http_er
616e0 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 20 68 6f ror_auth_reqed(self,.authreq,.ho
61700 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 68 6f 73 st,.req,.headers):.........#.hos
61720 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 74 20 75 t.may.be.an.authority.(without.u
61740 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 20 20 20 serinfo).or.a.URL.with.an.......
61760 20 20 23 20 61 75 74 68 6f 72 69 74 79 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 ..#.authority.........headers.=.
61780 68 65 61 64 65 72 73 2e 67 65 74 5f 61 6c 6c 28 61 75 74 68 72 65 71 29 0a 20 20 20 20 20 20 20 headers.get_all(authreq)........
617a0 20 69 66 20 6e 6f 74 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e .if.not.headers:.............#.n
617c0 6f 20 68 65 61 64 65 72 20 66 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 o.header.found.............retur
617e0 6e 0a 0a 20 20 20 20 20 20 20 20 75 6e 73 75 70 70 6f 72 74 65 64 20 3d 20 4e 6f 6e 65 0a 20 20 n..........unsupported.=.None...
61800 20 20 20 20 20 20 66 6f 72 20 68 65 61 64 65 72 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 ......for.header.in.headers:....
61820 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 63 68 65 6d 65 2c 20 72 65 61 6c 6d 20 69 6e 20 73 65 .........for.scheme,.realm.in.se
61840 6c 66 2e 5f 70 61 72 73 65 5f 72 65 61 6c 6d 28 68 65 61 64 65 72 29 3a 0a 20 20 20 20 20 20 20 lf._parse_realm(header):........
61860 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 20 21 3d 20 27 62 .........if.scheme.lower().!=.'b
61880 61 73 69 63 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 73 75 70 asic':.....................unsup
618a0 70 6f 72 74 65 64 20 3d 20 73 63 68 65 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ported.=.scheme.................
618c0 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 20 20 20 20 69 66 ....continue..................if
618e0 20 72 65 61 6c 6d 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 .realm.is.not.None:.............
61900 20 20 20 20 20 20 20 20 23 20 55 73 65 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 69 6e 67 ........#.Use.the.first.matching
61920 20 42 61 73 69 63 20 63 68 61 6c 6c 65 6e 67 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .Basic.challenge................
61940 20 20 20 20 20 20 23 20 49 67 6e 6f 72 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 68 61 6c 6c 65 6e ......#.Ignore.following.challen
61960 67 65 73 20 65 76 65 6e 20 69 66 20 74 68 65 79 20 75 73 65 20 74 68 65 20 42 61 73 69 63 0a 20 ges.even.if.they.use.the.Basic..
61980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 63 68 65 6d 65 2e 0a 20 20 20 ...................#.scheme.....
619a0 20 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 72 65 74 .................return.self.ret
619c0 72 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 28 68 6f 73 74 2c 20 72 65 71 2c 20 72 65 ry_http_basic_auth(host,.req,.re
619e0 61 6c 6d 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 75 6e 73 75 70 70 6f 72 74 65 64 20 69 73 20 alm)..........if.unsupported.is.
61a00 6e 6f 74 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 not.None:.............raise.Valu
61a20 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 48 61 6e 64 6c 65 72 eError("AbstractBasicAuthHandler
61a40 20 64 6f 65 73 20 6e 6f 74 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .does.not.".....................
61a60 20 20 20 20 20 20 20 20 20 22 73 75 70 70 6f 72 74 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 ........."support.the.following.
61a80 73 63 68 65 6d 65 3a 20 25 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 scheme:.%r".....................
61aa0 20 20 20 20 20 20 20 20 20 25 20 28 73 63 68 65 6d 65 2c 29 29 0a 0a 20 20 20 20 64 65 66 20 72 .........%.(scheme,))......def.r
61ac0 65 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 68 6f 73 74 2c etry_http_basic_auth(self,.host,
61ae0 20 72 65 71 2c 20 72 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 .req,.realm):.........user,.pw.=
61b00 20 73 65 6c 66 2e 70 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 .self.passwd.find_user_password(
61b20 72 65 61 6c 6d 2c 20 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 realm,.host).........if.pw.is.no
61b40 74 20 4e 6f 6e 65 3a 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 t.None:.............raw.=."%s:%s
61b60 22 20 25 20 28 75 73 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 ".%.(user,.pw).............auth.
61b80 3d 20 22 42 61 73 69 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 =."Basic.".+.base64.b64encode(ra
61ba0 77 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 w.encode()).decode("ascii").....
61bc0 20 20 20 20 20 20 20 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 ........if.req.get_header(self.a
61be0 75 74 68 5f 68 65 61 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 uth_header,.None).==.auth:......
61c00 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..........
61c20 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
61c40 65 6c 66 2e 61 75 74 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 elf.auth_header,.auth)..........
61c60 20 20 20 72 65 74 75 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 ...return.self.parent.open(req,.
61c80 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 20 65 6c 73 timeout=req.timeout).........els
61ca0 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 20 e:.............return.None......
61cc0 64 65 66 20 68 74 74 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 def.http_request(self,.req):....
61ce0 20 20 20 20 20 69 66 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 .....if.(not.hasattr(self.passwd
61d00 2c 20 27 69 73 5f 61 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 ,.'is_authenticated').or........
61d20 20 20 20 20 6e 6f 74 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 ....not.self.passwd.is_authentic
61d40 61 74 65 64 28 72 65 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 ated(req.full_url)):............
61d60 20 72 65 74 75 72 6e 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 .return.req..........if.not.req.
61d80 68 61 73 5f 68 65 61 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 has_header('Authorization'):....
61da0 20 20 20 20 20 20 20 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 .........user,.passwd.=.self.pas
61dc0 73 77 64 2e 66 69 6e 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 swd.find_user_password(None,.req
61de0 2e 66 75 6c 6c 5f 75 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 .full_url).............credentia
61e00 6c 73 20 3d 20 27 7b 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 ls.=.'{0}:{1}'.format(user,.pass
61e20 77 64 29 2e 65 6e 63 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 wd).encode().............auth_st
61e40 72 20 3d 20 62 61 73 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 r.=.base64.standard_b64encode(cr
61e60 65 64 65 6e 74 69 61 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 edentials).decode().............
61e80 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 27 41 75 74 req.add_unredirected_header('Aut
61ea0 68 6f 72 69 7a 61 74 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 horization',....................
61ec0 20 20 20 20 20 20 20 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 .....................'Basic.{}'.
61ee0 66 6f 72 6d 61 74 28 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 format(auth_str.strip())).......
61f00 20 20 72 65 74 75 72 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 ..return.req......def.http_respo
61f20 6e 73 65 28 73 65 6c 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 nse(self,.req,.response):.......
61f40 20 20 69 66 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 75 ..if.hasattr(self.passwd,.'is_au
61f60 74 68 65 6e 74 69 63 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 thenticated'):.............if.20
61f80 30 20 3c 3d 20 72 65 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 0.<=.response.code.<.300:.......
61fa0 20 20 20 20 20 20 20 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 ..........self.passwd.update_aut
61fc0 68 65 6e 74 69 63 61 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 henticated(req.full_url,.True)..
61fe0 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:................
62000 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 74 65 .self.passwd.update_authenticate
62020 64 28 72 65 71 2e 66 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 d(req.full_url,.False).........r
62040 65 74 75 72 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 eturn.response......https_reques
62060 74 20 3d 20 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 t.=.http_request.....https_respo
62080 6e 73 65 20 3d 20 68 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 nse.=.http_response....class.HTT
620a0 50 42 61 73 69 63 41 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 PBasicAuthHandler(AbstractBasicA
620c0 75 74 68 48 61 6e 64 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 uthHandler,.BaseHandler):......a
620e0 75 74 68 5f 68 65 61 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 uth_header.=.'Authorization'....
62100 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 71 2c 20 ..def.http_error_401(self,.req,.
62120 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 20 20 20 fp,.code,.msg,.headers):........
62140 20 75 72 6c 20 3d 20 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 .url.=.req.full_url.........resp
62160 6f 6e 73 65 20 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 onse.=.self.http_error_auth_reqe
62180 64 28 27 77 77 77 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 d('www-authenticate',...........
621a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
621c0 75 72 6c 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 74 75 72 url,.req,.headers).........retur
621e0 6e 20 72 65 73 70 6f 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 n.response...class.ProxyBasicAut
62200 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 6c 65 hHandler(AbstractBasicAuthHandle
62220 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 64 65 r,.BaseHandler):......auth_heade
62240 72 20 3d 20 27 50 72 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 r.=.'Proxy-authorization'......d
62260 65 66 20 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 ef.http_error_407(self,.req,.fp,
62280 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 20 20 20 20 23 20 .code,.msg,.headers):.........#.
622a0 68 74 74 70 5f 65 72 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 http_error_auth_reqed.requires.t
622c0 68 61 74 20 74 68 65 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 hat.there.is.no.userinfo.compone
622e0 6e 74 20 69 6e 0a 20 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 nt.in.........#.authority...Assu
62300 6d 65 20 74 68 65 72 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 me.there.isn't.one,.since.urllib
62320 2e 72 65 71 75 65 73 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 .request.does.not.(and.........#
62340 20 73 68 6f 75 6c 64 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 .should.not,.RFC.3986.s..3.2.1).
62360 73 75 70 70 6f 72 74 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 support.requests.for.URLs.contai
62380 6e 69 6e 67 0a 20 20 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 ning.........#.userinfo.........
623a0 20 61 75 74 68 6f 72 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 .authority.=.req.host.........re
623c0 73 70 6f 6e 73 65 20 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 sponse.=.self.http_error_auth_re
623e0 71 65 64 28 27 70 72 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 qed('proxy-authenticate',.......
62400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
62420 20 20 20 20 61 75 74 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 ....authority,.req,.headers)....
62440 20 20 20 20 20 72 65 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 .....return.response...#.Return.
62460 6e 20 72 61 6e 64 6f 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 n.random.bytes.._randombytes.=.o
62480 73 2e 75 72 61 6e 64 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 s.urandom...class.AbstractDigest
624a0 41 75 74 68 48 61 6e 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 AuthHandler:.....#.Digest.authen
624c0 74 69 63 61 74 69 6f 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 tication.is.specified.in.RFC.261
624e0 37 2e 0a 0a 20 20 20 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 7.......#.XXX.The.client.does.no
62500 74 20 69 6e 73 70 65 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 t.inspect.the.Authentication-Inf
62520 6f 20 68 65 61 64 65 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 o.header.....#.in.a.successful.r
62540 65 73 70 6f 6e 73 65 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 esponse.......#.XXX.It.should.be
62560 20 70 6f 73 73 69 62 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 .possible.to.test.this.implement
62580 61 74 69 6f 6e 20 61 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 ation.against.....#.a.mock.serve
625a0 72 20 74 68 61 74 20 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 r.that.just.generates.a.static.s
625c0 65 74 20 6f 66 20 63 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 et.of.challenges.......#.XXX.qop
625e0 3d 22 61 75 74 68 2d 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 ="auth-int".supports.is.shaky...
62600 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 64 3d 4e 6f 6e ...def.__init__(self,.passwd=Non
62620 65 29 3a 0a 20 20 20 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 e):.........if.passwd.is.None:..
62640 20 20 20 20 20 20 20 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 ...........passwd.=.HTTPPassword
62660 4d 67 72 28 29 0a 20 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 Mgr().........self.passwd.=.pass
62680 77 64 0a 20 20 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 wd.........self.add_password.=.s
626a0 65 6c 66 2e 70 61 73 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 elf.passwd.add_password.........
626c0 73 65 6c 66 2e 72 65 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 self.retried.=.0.........self.no
626e0 6e 63 65 5f 63 6f 75 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 nce_count.=.0.........self.last_
62700 6e 6f 6e 63 65 20 3d 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 nonce.=.None......def.reset_retr
62720 79 5f 63 6f 75 6e 74 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 y_count(self):.........self.retr
62740 69 65 64 20 3d 20 30 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 ied.=.0......def.http_error_auth
62760 5f 72 65 71 65 64 28 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 _reqed(self,.auth_header,.host,.
62780 72 65 71 2c 20 68 65 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 req,.headers):.........authreq.=
627a0 20 68 65 61 64 65 72 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 .headers.get(auth_header,.None).
627c0 20 20 20 20 20 20 20 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 ........if.self.retried.>.5:....
627e0 20 20 20 20 20 20 20 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 .........#.Don't.fail.endlessly.
62800 2d 20 69 66 20 77 65 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 -.if.we.failed.once,.we'll.proba
62820 62 6c 79 0a 20 20 20 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 bly.............#.fail.a.second.
62840 74 69 6d 65 2e 20 48 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 time..Hm..Unless.the.Password.Ma
62860 6e 61 67 65 72 20 69 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 nager.is.............#.prompting
62880 20 66 6f 72 20 74 68 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 .for.the.information..Crap..This
628a0 20 69 73 6e 27 74 20 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 .isn't.great.............#.but.i
628c0 74 27 73 20 62 65 74 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 t's.better.than.the.current.'rep
628e0 65 61 74 20 75 6e 74 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 eat.until.recursion.............
62900 23 20 64 65 70 74 68 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 #.depth.exceeded'.approach.<wink
62920 3e 0a 20 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 72 65 >.............raise.HTTPError(re
62940 71 2e 66 75 6c 6c 5f 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 q.full_url,.401,."digest.auth.fa
62960 69 6c 65 64 22 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 iled",..........................
62980 20 20 20 68 65 61 64 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 ...headers,.None).........else:.
629a0 20 20 20 20 20 20 20 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 ............self.retried.+=.1...
629c0 20 20 20 20 20 20 69 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 ......if.authreq:.............sc
629e0 68 65 6d 65 20 3d 20 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 heme.=.authreq.split()[0].......
62a00 20 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 64 69 67 65 ......if.scheme.lower().==.'dige
62a20 73 74 27 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 st':.................return.self
62a40 2e 72 65 74 72 79 5f 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 .retry_http_digest_auth(req,.aut
62a60 68 72 65 71 29 0a 20 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 hreq).............elif.scheme.lo
62a80 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 20 20 20 20 20 20 20 wer().!=.'basic':...............
62aa0 20 20 72 61 69 73 65 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 ..raise.ValueError("AbstractDige
62ac0 73 74 41 75 74 68 48 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 stAuthHandler.does.not.support".
62ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
62b00 20 22 20 74 68 65 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 .".the.following.scheme:.'%s'".%
62b20 20 73 63 68 65 6d 65 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 .scheme)......def.retry_http_dig
62b40 65 73 74 5f 61 75 74 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 est_auth(self,.req,.auth):......
62b60 20 20 20 74 6f 6b 65 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 ...token,.challenge.=.auth.split
62b80 28 27 20 27 2c 20 31 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 ('.',.1).........chal.=.parse_ke
62ba0 71 76 5f 6c 69 73 74 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 qv_list(filter(None,.parse_http_
62bc0 6c 69 73 74 28 63 68 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 list(challenge))).........auth.=
62be0 20 73 65 6c 66 2e 67 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 .self.get_authorization(req,.cha
62c00 6c 29 0a 20 20 20 20 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 l).........if.auth:.............
62c20 61 75 74 68 5f 76 61 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 auth_val.=.'Digest.%s'.%.auth...
62c40 20 20 20 20 20 20 20 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 ..........if.req.headers.get(sel
62c60 66 2e 61 75 74 68 5f 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 f.auth_header,.None).==.auth_val
62c80 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 4e 6f 6e 65 0a 20 20 :.................return.None...
62ca0 20 20 20 20 20 20 20 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 ..........req.add_unredirected_h
62cc0 65 61 64 65 72 28 73 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 eader(self.auth_header,.auth_val
62ce0 29 0a 20 20 20 20 20 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 ).............resp.=.self.parent
62d00 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 0a .open(req,.timeout=req.timeout).
62d20 20 20 20 20 20 20 20 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 ............return.resp......def
62d40 20 67 65 74 5f 63 6e 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 .get_cnonce(self,.nonce):.......
62d60 20 20 23 20 54 68 65 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 ..#.The.cnonce-value.is.an.opaqu
62d80 65 0a 20 20 20 20 20 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 e.........#.quoted.string.value.
62da0 70 72 6f 76 69 64 65 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 provided.by.the.client.and.used.
62dc0 62 79 20 62 6f 74 68 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 by.both.client.........#.and.ser
62de0 76 65 72 20 74 6f 20 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 ver.to.avoid.chosen.plaintext.at
62e00 74 61 63 6b 73 2c 20 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 tacks,.to.provide.mutual........
62e20 20 23 20 61 75 74 68 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 .#.authentication,.and.to.provid
62e40 65 20 73 6f 6d 65 20 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 e.some.message.integrity.protect
62e60 69 6f 6e 2e 0a 20 20 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 ion..........#.This.isn't.a.fabu
62e80 6c 6f 75 73 20 65 66 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 lous.effort,.but.it's.probably.G
62ea0 6f 6f 64 20 45 6e 6f 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 ood.Enough..........s.=."%s:%s:%
62ec0 73 3a 22 20 25 20 28 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 s:".%.(self.nonce_count,.nonce,.
62ee0 74 69 6d 65 2e 63 74 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 time.ctime()).........b.=.s.enco
62f00 64 65 28 22 61 73 63 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 de("ascii").+._randombytes(8)...
62f20 20 20 20 20 20 20 64 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 ......dig.=.hashlib.sha1(b).hexd
62f40 69 67 65 73 74 28 29 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 igest().........return.dig[:16].
62f60 0a 20 20 20 20 64 65 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 .....def.get_authorization(self,
62f80 20 72 65 71 2c 20 63 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 .req,.chal):.........try:.......
62fa0 20 20 20 20 20 20 72 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 ......realm.=.chal['realm'].....
62fc0 20 20 20 20 20 20 20 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 ........nonce.=.chal['nonce']...
62fe0 20 20 20 20 20 20 20 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 ..........qop.=.chal.get('qop').
63000 20 20 20 20 20 20 20 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 ............algorithm.=.chal.get
63020 28 27 61 6c 67 6f 72 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 ('algorithm',.'MD5')............
63040 20 23 20 6d 6f 64 5f 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 .#.mod_digest.doesn't.send.an.op
63060 61 71 75 65 2c 20 65 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 aque,.even.though.it.isn't......
63080 20 20 20 20 20 20 20 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 .......#.supposed.to.be.optional
630a0 0a 20 20 20 20 20 20 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 .............opaque.=.chal.get('
630c0 6f 70 61 71 75 65 27 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 opaque',.None).........except.Ke
630e0 79 45 72 72 6f 72 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 yError:.............return.None.
63100 0a 20 20 20 20 20 20 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 .........H,.KD.=.self.get_algori
63120 74 68 6d 5f 69 6d 70 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 thm_impls(algorithm).........if.
63140 48 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 20 4e 6f H.is.None:.............return.No
63160 6e 65 0a 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 61 73 73 ne..........user,.pw.=.self.pass
63180 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 72 65 71 wd.find_user_password(realm,.req
631a0 2e 66 75 6c 6c 5f 75 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 .full_url).........if.user.is.No
631c0 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.....
631e0 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 74 0a 20 .....#.XXX.not.implemented.yet..
63200 20 20 20 20 20 20 20 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 .......if.req.data.is.not.None:.
63220 20 20 20 20 20 20 20 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 ............entdig.=.self.get_en
63240 74 69 74 79 5f 64 69 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 tity_digest(req.data,.chal).....
63260 20 20 20 20 65 6c 73 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 ....else:.............entdig.=.N
63280 6f 6e 65 0a 0a 20 20 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 one..........A1.=."%s:%s:%s".%.(
632a0 75 73 65 72 2c 20 72 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 user,.realm,.pw).........A2.=."%
632c0 73 3a 25 73 22 20 25 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 s:%s".%.(req.get_method(),......
632e0 20 20 20 20 20 20 20 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 ...................#.XXX.selecto
63300 72 3a 20 77 68 61 74 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 r:.what.about.proxies.and.full.u
63320 72 6c 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 72 65 71 2e rls.........................req.
63340 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 73 20 70 65 72 selector).........#.NOTE:.As.per
63360 20 20 52 46 43 20 32 36 31 37 2c 20 77 68 65 6e 20 73 65 72 76 65 72 20 73 65 6e 64 73 20 22 61 ..RFC.2617,.when.server.sends."a
63380 75 74 68 2c 61 75 74 68 2d 69 6e 74 22 2c 20 74 68 65 20 63 6c 69 65 6e 74 20 63 6f 75 6c 64 20 uth,auth-int",.the.client.could.
633a0 75 73 65 20 65 69 74 68 65 72 20 60 61 75 74 68 60 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 use.either.`auth`.........#.....
633c0 6f 72 20 60 61 75 74 68 2d 69 6e 74 60 20 74 6f 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 62 61 or.`auth-int`.to.the.response.ba
633e0 63 6b 2e 20 77 65 20 75 73 65 20 60 61 75 74 68 60 20 74 6f 20 73 65 6e 64 20 74 68 65 20 72 65 ck..we.use.`auth`.to.send.the.re
63400 73 70 6f 6e 73 65 20 62 61 63 6b 2e 0a 20 20 20 20 20 20 20 20 69 66 20 71 6f 70 20 69 73 20 4e sponse.back..........if.qop.is.N
63420 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 64 69 67 20 3d 20 4b 44 28 48 28 one:.............respdig.=.KD(H(
63440 41 31 29 2c 20 22 25 73 3a 25 73 22 20 25 20 28 6e 6f 6e 63 65 2c 20 48 28 41 32 29 29 29 0a 20 A1),."%s:%s".%.(nonce,.H(A2)))..
63460 20 20 20 20 20 20 20 65 6c 69 66 20 27 61 75 74 68 27 20 69 6e 20 71 6f 70 2e 73 70 6c 69 74 28 .......elif.'auth'.in.qop.split(
63480 27 2c 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 6e 63 65 20 3d 3d 20 73 65 ','):.............if.nonce.==.se
634a0 6c 66 2e 6c 61 73 74 5f 6e 6f 6e 63 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 lf.last_nonce:.................s
634c0 65 6c 66 2e 6e 6f 6e 63 65 5f 63 6f 75 6e 74 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 elf.nonce_count.+=.1............
634e0 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 6e 6f 6e 63 .else:.................self.nonc
63500 65 5f 63 6f 75 6e 74 20 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 e_count.=.1.................self
63520 2e 6c 61 73 74 5f 6e 6f 6e 63 65 20 3d 20 6e 6f 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 .last_nonce.=.nonce.............
63540 6e 63 76 61 6c 75 65 20 3d 20 27 25 30 38 78 27 20 25 20 73 65 6c 66 2e 6e 6f 6e 63 65 5f 63 6f ncvalue.=.'%08x'.%.self.nonce_co
63560 75 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6e 6f 6e 63 65 20 3d 20 73 65 6c 66 2e 67 65 unt.............cnonce.=.self.ge
63580 74 5f 63 6e 6f 6e 63 65 28 6e 6f 6e 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e 63 t_cnonce(nonce).............nonc
635a0 65 62 69 74 20 3d 20 22 25 73 3a 25 73 3a 25 73 3a 25 73 3a 25 73 22 20 25 20 28 6e 6f 6e 63 65 ebit.=."%s:%s:%s:%s:%s".%.(nonce
635c0 2c 20 6e 63 76 61 6c 75 65 2c 20 63 6e 6f 6e 63 65 2c 20 27 61 75 74 68 27 2c 20 48 28 41 32 29 ,.ncvalue,.cnonce,.'auth',.H(A2)
635e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 64 69 67 20 3d 20 4b 44 28 48 28 41 31 29 ).............respdig.=.KD(H(A1)
63600 2c 20 6e 6f 6e 63 65 62 69 74 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 ,.noncebit).........else:.......
63620 20 20 20 20 20 20 23 20 58 58 58 20 68 61 6e 64 6c 65 20 61 75 74 68 2d 69 6e 74 2e 0a 20 20 20 ......#.XXX.handle.auth-int.....
63640 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 22 71 6f 70 20 27 25 73 .........raise.URLError("qop.'%s
63660 27 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 22 20 25 20 71 6f 70 29 0a 0a 20 20 20 '.is.not.supported.".%.qop).....
63680 20 20 20 20 20 23 20 58 58 58 20 73 68 6f 75 6c 64 20 74 68 65 20 70 61 72 74 69 61 6c 20 64 69 .....#.XXX.should.the.partial.di
636a0 67 65 73 74 73 20 62 65 20 65 6e 63 6f 64 65 64 20 74 6f 6f 3f 0a 0a 20 20 20 20 20 20 20 20 62 gests.be.encoded.too?..........b
636c0 61 73 65 20 3d 20 27 75 73 65 72 6e 61 6d 65 3d 22 25 73 22 2c 20 72 65 61 6c 6d 3d 22 25 73 22 ase.=.'username="%s",.realm="%s"
636e0 2c 20 6e 6f 6e 63 65 3d 22 25 73 22 2c 20 75 72 69 3d 22 25 73 22 2c 20 27 20 5c 0a 20 20 20 20 ,.nonce="%s",.uri="%s",.'.\.....
63700 20 20 20 20 20 20 20 20 20 20 20 27 72 65 73 70 6f 6e 73 65 3d 22 25 73 22 27 20 25 20 28 75 73 ...........'response="%s"'.%.(us
63720 65 72 2c 20 72 65 61 6c 6d 2c 20 6e 6f 6e 63 65 2c 20 72 65 71 2e 73 65 6c 65 63 74 6f 72 2c 0a er,.realm,.nonce,.req.selector,.
63740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
63760 20 20 72 65 73 70 64 69 67 29 0a 20 20 20 20 20 20 20 20 69 66 20 6f 70 61 71 75 65 3a 0a 20 20 ..respdig).........if.opaque:...
63780 20 20 20 20 20 20 20 20 20 20 62 61 73 65 20 2b 3d 20 27 2c 20 6f 70 61 71 75 65 3d 22 25 73 22 ..........base.+=.',.opaque="%s"
637a0 27 20 25 20 6f 70 61 71 75 65 0a 20 20 20 20 20 20 20 20 69 66 20 65 6e 74 64 69 67 3a 0a 20 20 '.%.opaque.........if.entdig:...
637c0 20 20 20 20 20 20 20 20 20 20 62 61 73 65 20 2b 3d 20 27 2c 20 64 69 67 65 73 74 3d 22 25 73 22 ..........base.+=.',.digest="%s"
637e0 27 20 25 20 65 6e 74 64 69 67 0a 20 20 20 20 20 20 20 20 62 61 73 65 20 2b 3d 20 27 2c 20 61 6c '.%.entdig.........base.+=.',.al
63800 67 6f 72 69 74 68 6d 3d 22 25 73 22 27 20 25 20 61 6c 67 6f 72 69 74 68 6d 0a 20 20 20 20 20 20 gorithm="%s"'.%.algorithm.......
63820 20 20 69 66 20 71 6f 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 20 2b 3d 20 27 2c ..if.qop:.............base.+=.',
63840 20 71 6f 70 3d 61 75 74 68 2c 20 6e 63 3d 25 73 2c 20 63 6e 6f 6e 63 65 3d 22 25 73 22 27 20 25 .qop=auth,.nc=%s,.cnonce="%s"'.%
63860 20 28 6e 63 76 61 6c 75 65 2c 20 63 6e 6f 6e 63 65 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .(ncvalue,.cnonce).........retur
63880 6e 20 62 61 73 65 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 61 6c 67 6f 72 69 74 68 6d 5f 69 6d n.base......def.get_algorithm_im
638a0 70 6c 73 28 73 65 6c 66 2c 20 61 6c 67 6f 72 69 74 68 6d 29 3a 0a 20 20 20 20 20 20 20 20 23 20 pls(self,.algorithm):.........#.
638c0 6c 61 6d 62 64 61 73 20 61 73 73 75 6d 65 20 64 69 67 65 73 74 20 6d 6f 64 75 6c 65 73 20 61 72 lambdas.assume.digest.modules.ar
638e0 65 20 69 6d 70 6f 72 74 65 64 20 61 74 20 74 68 65 20 74 6f 70 20 6c 65 76 65 6c 0a 20 20 20 20 e.imported.at.the.top.level.....
63900 20 20 20 20 69 66 20 61 6c 67 6f 72 69 74 68 6d 20 3d 3d 20 27 4d 44 35 27 3a 0a 20 20 20 20 20 ....if.algorithm.==.'MD5':......
63920 20 20 20 20 20 20 20 48 20 3d 20 6c 61 6d 62 64 61 20 78 3a 20 68 61 73 68 6c 69 62 2e 6d 64 35 .......H.=.lambda.x:.hashlib.md5
63940 28 78 2e 65 6e 63 6f 64 65 28 22 61 73 63 69 69 22 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 0a (x.encode("ascii")).hexdigest().
63960 20 20 20 20 20 20 20 20 65 6c 69 66 20 61 6c 67 6f 72 69 74 68 6d 20 3d 3d 20 27 53 48 41 27 3a ........elif.algorithm.==.'SHA':
63980 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 68 6c .............H.=.lambda.x:.hashl
639a0 69 62 2e 73 68 61 31 28 78 2e 65 6e 63 6f 64 65 28 22 61 73 63 69 69 22 29 29 2e 68 65 78 64 69 ib.sha1(x.encode("ascii")).hexdi
639c0 67 65 73 74 28 29 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 4d 44 35 2d 73 65 73 73 0a 20 20 gest().........#.XXX.MD5-sess...
639e0 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 56 61 ......else:.............raise.Va
63a00 6c 75 65 45 72 72 6f 72 28 22 55 6e 73 75 70 70 6f 72 74 65 64 20 64 69 67 65 73 74 20 61 75 74 lueError("Unsupported.digest.aut
63a20 68 65 6e 74 69 63 61 74 69 6f 6e 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hentication."...................
63a40 20 20 20 20 20 20 20 20 20 20 20 22 61 6c 67 6f 72 69 74 68 6d 20 25 72 22 20 25 20 61 6c 67 6f ..........."algorithm.%r".%.algo
63a60 72 69 74 68 6d 29 0a 20 20 20 20 20 20 20 20 4b 44 20 3d 20 6c 61 6d 62 64 61 20 73 2c 20 64 3a rithm).........KD.=.lambda.s,.d:
63a80 20 48 28 22 25 73 3a 25 73 22 20 25 20 28 73 2c 20 64 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 .H("%s:%s".%.(s,.d)).........ret
63aa0 75 72 6e 20 48 2c 20 4b 44 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 65 6e 74 69 74 79 5f 64 69 urn.H,.KD......def.get_entity_di
63ac0 67 65 73 74 28 73 65 6c 66 2c 20 64 61 74 61 2c 20 63 68 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 gest(self,.data,.chal):.........
63ae0 23 20 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 #.XXX.not.implemented.yet.......
63b00 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 0a 63 6c 61 73 73 20 48 54 54 50 44 69 67 65 73 74 ..return.None...class.HTTPDigest
63b20 41 75 74 68 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 6c 65 72 2c 20 41 62 73 74 72 61 63 AuthHandler(BaseHandler,.Abstrac
63b40 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 29 3a 0a 20 20 20 20 22 22 22 41 6e 20 61 tDigestAuthHandler):....."""An.a
63b60 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 70 72 6f 74 6f 63 6f 6c 20 64 65 66 69 6e 65 64 20 62 uthentication.protocol.defined.b
63b80 79 20 52 46 43 20 32 30 36 39 0a 0a 20 20 20 20 44 69 67 65 73 74 20 61 75 74 68 65 6e 74 69 63 y.RFC.2069......Digest.authentic
63ba0 61 74 69 6f 6e 20 69 6d 70 72 6f 76 65 73 20 6f 6e 20 62 61 73 69 63 20 61 75 74 68 65 6e 74 69 ation.improves.on.basic.authenti
63bc0 63 61 74 69 6f 6e 20 62 65 63 61 75 73 65 20 69 74 0a 20 20 20 20 64 6f 65 73 20 6e 6f 74 20 74 cation.because.it.....does.not.t
63be0 72 61 6e 73 6d 69 74 20 70 61 73 73 77 6f 72 64 73 20 69 6e 20 74 68 65 20 63 6c 65 61 72 2e 0a ransmit.passwords.in.the.clear..
63c00 20 20 20 20 22 22 22 0a 0a 20 20 20 20 61 75 74 68 5f 68 65 61 64 65 72 20 3d 20 27 41 75 74 68 ...."""......auth_header.=.'Auth
63c20 6f 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 orization'.....handler_order.=.4
63c40 39 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 90..#.before.Basic.auth......def
63c60 20 68 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 .http_error_401(self,.req,.fp,.c
63c80 6f 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 ode,.msg,.headers):.........host
63ca0 20 3d 20 75 72 6c 70 61 72 73 65 28 72 65 71 2e 66 75 6c 6c 5f 75 72 6c 29 5b 31 5d 0a 20 20 20 .=.urlparse(req.full_url)[1]....
63cc0 20 20 20 20 20 72 65 74 72 79 20 3d 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 5f 61 75 74 .....retry.=.self.http_error_aut
63ce0 68 5f 72 65 71 65 64 28 27 77 77 77 2d 61 75 74 68 65 6e 74 69 63 61 74 65 27 2c 0a 20 20 20 20 h_reqed('www-authenticate',.....
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 20 20 20 20 20 20 ................................
63d20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 72 65 71 2c 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 .......host,.req,.headers)......
63d40 20 20 20 73 65 6c 66 2e 72 65 73 65 74 5f 72 65 74 72 79 5f 63 6f 75 6e 74 28 29 0a 20 20 20 20 ...self.reset_retry_count().....
63d60 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 72 79 0a 0a 0a 63 6c 61 73 73 20 50 72 6f 78 79 44 69 ....return.retry...class.ProxyDi
63d80 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 20 41 62 73 gestAuthHandler(BaseHandler,.Abs
63da0 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 0a 20 20 20 20 61 75 tractDigestAuthHandler):......au
63dc0 74 68 5f 68 65 61 64 65 72 20 3d 20 27 50 72 6f 78 79 2d 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e th_header.=.'Proxy-Authorization
63de0 27 0a 20 20 20 20 68 61 6e 64 6c 65 72 5f 6f 72 64 65 72 20 3d 20 34 39 30 20 20 23 20 62 65 66 '.....handler_order.=.490..#.bef
63e00 6f 72 65 20 42 61 73 69 63 20 61 75 74 68 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 ore.Basic.auth......def.http_err
63e20 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 6d 73 67 2c or_407(self,.req,.fp,.code,.msg,
63e40 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 2e 68 6f .headers):.........host.=.req.ho
63e60 73 74 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 72 72 st.........retry.=.self.http_err
63e80 6f 72 5f 61 75 74 68 5f 72 65 71 65 64 28 27 70 72 6f 78 79 2d 61 75 74 68 65 6e 74 69 63 61 74 or_auth_reqed('proxy-authenticat
63ea0 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',.............................
63ec0 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
63ee0 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
63f00 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 63 6c 61 73 73 20 t().........return.retry..class.
63f20 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 28 42 61 73 65 48 61 6e 64 6c 65 72 29 AbstractHTTPHandler(BaseHandler)
63f40 3a 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 64 65 62 75 67 6c :......def.__init__(self,.debugl
63f60 65 76 65 6c 3d 30 29 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 evel=0):.........self._debugleve
63f80 6c 20 3d 20 64 65 62 75 67 6c 65 76 65 6c 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 68 74 74 70 l.=.debuglevel......def.set_http
63fa0 5f 64 65 62 75 67 6c 65 76 65 6c 28 73 65 6c 66 2c 20 6c 65 76 65 6c 29 3a 0a 20 20 20 20 20 20 _debuglevel(self,.level):.......
63fc0 20 20 73 65 6c 66 2e 5f 64 65 62 75 67 6c 65 76 65 6c 20 3d 20 6c 65 76 65 6c 0a 0a 20 20 20 20 ..self._debuglevel.=.level......
63fe0 64 65 66 20 5f 67 65 74 5f 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 28 73 65 6c 66 2c 20 72 65 def._get_content_length(self,.re
64000 71 75 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 74 74 70 2e 63 6c 69 65 quest):.........return.http.clie
64020 6e 74 2e 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 67 65 74 5f 63 6f 6e 74 65 6e 74 5f 6c nt.HTTPConnection._get_content_l
64040 65 6e 67 74 68 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 64 61 74 61 2c ength(.............request.data,
64060 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 67 65 74 5f 6d 65 74 68 6f 64 28 .............request.get_method(
64080 29 29 0a 0a 20 20 20 20 64 65 66 20 64 6f 5f 72 65 71 75 65 73 74 5f 28 73 65 6c 66 2c 20 72 65 ))......def.do_request_(self,.re
640a0 71 75 65 73 74 29 3a 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 71 75 65 73 74 2e 68 quest):.........host.=.request.h
640c0 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:........
640e0 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
64100 65 6e 27 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 75 65 73 74 2e 64 61 74 61 20 69 73 en')..........if.request.data.is
64120 20 6e 6f 74 20 4e 6f 6e 65 3a 20 20 23 20 50 4f 53 54 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 .not.None:..#.POST.............d
64140 61 74 61 20 3d 20 72 65 71 75 65 73 74 2e 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ata.=.request.data.............i
64160 66 20 69 73 69 6e 73 74 61 6e 63 65 28 64 61 74 61 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 f.isinstance(data,.str):........
64180 20 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 22 50 4f 53 54 20 64 61 74 61 20 73 68 6f 75 6c 64 .........msg.=."POST.data.should
641a0 20 62 65 20 62 79 74 65 73 2c 20 61 6e 20 69 74 65 72 61 62 6c 65 20 6f 66 20 62 79 74 65 73 2c .be.bytes,.an.iterable.of.bytes,
641c0 20 22 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6f 72 20 61 .".\......................."or.a
641e0 20 66 69 6c 65 20 6f 62 6a 65 63 74 2e 20 49 74 20 63 61 6e 6e 6f 74 20 62 65 20 6f 66 20 74 79 .file.object..It.cannot.be.of.ty
64200 70 65 20 73 74 72 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 54 pe.str.".................raise.T
64220 79 70 65 45 72 72 6f 72 28 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 ypeError(msg).............if.not
64240 20 72 65 71 75 65 73 74 2e 68 61 73 5f 68 65 61 64 65 72 28 27 43 6f 6e 74 65 6e 74 2d 74 79 70 .request.has_header('Content-typ
64260 65 27 29 3a 0a 20 20 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 e'):.................request.add
64280 5f 75 6e 72 65 64 69 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 _unredirected_header(...........
642a0 20 20 20 20 20 20 20 20 20 20 27 43 6f 6e 74 65 6e 74 2d 74 79 70 65 27 2c 0a 20 20 20 20 20 20 ..........'Content-type',.......
642c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 ..............'application/x-www
642e0 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 -form-urlencoded').............i
64300 66 20 28 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 74 65 f.(not.request.has_header('Conte
64320 6e 74 2d 6c 65 6e 67 74 68 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt-length').....................
64340 61 6e 64 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 54 72 61 6e and.not.request.has_header('Tran
64360 73 66 65 72 2d 65 6e 63 6f 64 69 6e 67 27 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sfer-encoding')):...............
64380 20 20 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 20 3d 20 73 65 6c 66 2e 5f 67 65 74 5f 63 6f 6e ..content_length.=.self._get_con
643a0 74 65 6e 74 5f 6c 65 6e 67 74 68 28 72 65 71 75 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 tent_length(request)............
643c0 20 20 20 20 20 69 66 20 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 20 69 73 20 6e 6f 74 20 4e 6f .....if.content_length.is.not.No
643e0 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e ne:.....................request.
64400 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 20 20 20 20 20 add_unredirected_header(........
64420 20 20 20 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 6c 65 .....................'Content-le
64440 6e 67 74 68 27 2c 20 73 74 72 28 63 6f 6e 74 65 6e 74 5f 6c 65 6e 67 74 68 29 29 0a 20 20 20 20 ngth',.str(content_length)).....
64460 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 20 20 ............else:...............
64480 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 5f 68 ......request.add_unredirected_h
644a0 65 61 64 65 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 20 20 20 eader(..........................
644c0 20 20 20 27 54 72 61 6e 73 66 65 72 2d 65 6e 63 6f 64 69 6e 67 27 2c 20 27 63 68 75 6e 6b 65 64 ...'Transfer-encoding',.'chunked
644e0 27 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 5f 68 6f 73 74 20 3d 20 68 6f 73 74 0a 20 20 20 20 ')..........sel_host.=.host.....
64500 20 20 20 20 69 66 20 72 65 71 75 65 73 74 2e 68 61 73 5f 70 72 6f 78 79 28 29 3a 0a 20 20 20 20 ....if.request.has_proxy():.....
64520 20 20 20 20 20 20 20 20 73 63 68 65 6d 65 2c 20 73 65 6c 20 3d 20 5f 73 70 6c 69 74 74 79 70 65 ........scheme,.sel.=._splittype
64540 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 20 20 20 20 20 20 73 (request.selector).............s
64560 65 6c 5f 68 6f 73 74 2c 20 73 65 6c 5f 70 61 74 68 20 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 73 el_host,.sel_path.=._splithost(s
64580 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 2e 68 61 73 5f 68 el).........if.not.request.has_h
645a0 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 20 72 65 71 75 65 eader('Host'):.............reque
645c0 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 27 48 6f 73 74 st.add_unredirected_header('Host
645e0 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 61 6d 65 2c 20 76 ',.sel_host).........for.name,.v
64600 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 64 65 72 73 3a 0a alue.in.self.parent.addheaders:.
64620 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 70 69 74 61 6c 69 ............name.=.name.capitali
64640 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 71 75 65 73 74 2e ze().............if.not.request.
64660 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 20 20 20 20 20 20 has_header(name):...............
64680 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 5f 68 65 61 64 65 ..request.add_unredirected_heade
646a0 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 74 75 72 6e 20 72 r(name,.value)..........return.r
646c0 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 6c 66 2c 20 68 74 equest......def.do_open(self,.ht
646e0 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 5f 61 72 67 73 29 tp_class,.req,.**http_conn_args)
64700 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 50 52 65 73 70 6f :........."""Return.an.HTTPRespo
64720 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 2c 20 75 73 69 6e nse.object.for.the.request,.usin
64740 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 70 5f 63 6c 61 73 g.http_class...........http_clas
64760 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 6f 6e 6e 65 63 74 s.must.implement.the.HTTPConnect
64780 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 20 20 20 20 20 20 ion.API.from.http.client........
647a0 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 6f 73 74 0a 20 20 ..""".........host.=.req.host...
647c0 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
647e0 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')..
64800 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 70 6f 72 74 0a 20 ........#.will.parse.host:port..
64820 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 2c 20 74 69 6d 65 .......h.=.http_class(host,.time
64840 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 6e 6e 5f 61 72 67 out=req.timeout,.**http_conn_arg
64860 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 6c 28 73 65 6c 66 s).........h.set_debuglevel(self
64880 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 64 65 72 73 20 3d ._debuglevel)..........headers.=
648a0 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 73 29 0a 20 20 20 .dict(req.unredirected_hdrs)....
648c0 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 66 6f 72 20 6b 2c .....headers.update({k:.v.for.k,
648e0 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 20 20 .v.in.req.headers.items().......
64900 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 20 69 6e 20 68 65 ..................if.k.not.in.he
64920 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 79 6c 74 6f 6e 29 aders})..........#.TODO(jhylton)
64940 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 64 20 74 6f 20 68 :.Should.this.be.redesigned.to.h
64960 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 20 63 6f 6e 6e 65 andle.........#.persistent.conne
64980 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 20 74 6f 20 6d 61 ctions?..........#.We.want.to.ma
649a0 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 74 20 74 68 65 20 ke.an.HTTP/1.1.request,.but.the.
649c0 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 20 69 73 6e 27 74 addinfourl.........#.class.isn't
649e0 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 65 72 73 69 73 74 .prepared.to.deal.with.a.persist
64a00 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 49 74 20 77 69 6c ent.connection..........#.It.wil
64a20 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 67 20 64 61 74 61 l.try.to.read.all.remaining.data
64a40 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 23 20 77 68 69 63 .from.the.socket,.........#.whic
64a60 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 76 65 72 20 77 61 h.will.block.while.the.server.wa
64a80 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 20 20 20 20 20 20 its.for.the.next.request........
64aa0 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 63 74 69 6f 6e 20 ..#.So.make.sure.the.connection.
64ac0 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 79 29 0a 20 20 20 gets.closed.after.the.(only)....
64ae0 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 61 64 65 72 73 5b .....#.request..........headers[
64b00 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 20 20 20 20 20 20 "Connection"].=."close".........
64b20 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 61 6c 20 66 6f 72 headers.=.{name.title():.val.for
64b40 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 73 28 29 7d 0a 0a .name,.val.in.headers.items()}..
64b60 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 74 3a 0a 20 20 20 ........if.req._tunnel_host:....
64b80 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 7b 7d 0a 20 20 20 .........tunnel_headers.=.{}....
64ba0 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 22 50 72 6f 78 79 .........proxy_auth_hdr.=."Proxy
64bc0 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 20 20 69 66 20 70 -Authorization".............if.p
64be0 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 20 20 20 20 20 20 roxy_auth_hdr.in.headers:.......
64c00 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 72 6f 78 79 5f 61 ..........tunnel_headers[proxy_a
64c20 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 75 74 68 5f 68 64 uth_hdr].=.headers[proxy_auth_hd
64c40 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 2d 41 75 74 68 6f r].................#.Proxy-Autho
64c60 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 74 20 74 6f 20 6f rization.should.not.be.sent.to.o
64c80 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 72 76 65 72 2e 0a rigin.................#.server..
64ca0 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 73 5b 70 72 6f 78 ................del.headers[prox
64cc0 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 73 65 74 5f 74 75 y_auth_hdr].............h.set_tu
64ce0 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 64 65 72 73 3d 74 nnel(req._tunnel_host,.headers=t
64d00 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 79 3a 0a 20 20 20 unnel_headers)..........try:....
64d20 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 68 2e .........try:.................h.
64d40 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 72 65 71 2e 73 65 request(req.get_method(),.req.se
64d60 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 0a 20 20 20 20 20 lector,.req.data,.headers,......
64d80 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 65 5f 63 68 75 6e .....................encode_chun
64da0 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 65 72 2d 65 6e 63 ked=req.has_header('Transfer-enc
64dc0 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 74 20 4f 53 45 72 oding')).............except.OSEr
64de0 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 72 0a 20 20 20 20 ror.as.err:.#.timeout.error.....
64e00 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 65 72 72 29 0a ............raise.URLError(err).
64e20 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 6e 73 65 28 29 0a ............r.=.h.getresponse().
64e40 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 20 20 68 2e 63 6c ........except:.............h.cl
64e60 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 20 20 20 20 20 20 ose().............raise.........
64e80 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 73 65 6e 64 20 75 .#.If.the.server.does.not.send.u
64ea0 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 61 64 65 72 2c 0a s.a.'Connection:.close'.header,.
64ec0 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 73 73 75 6d 65 73 ........#.HTTPConnection.assumes
64ee0 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 20 6f 70 65 6e 2e .the.socket.should.be.left.open.
64f00 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 68 65 20 73 6f 63 .Manually.........#.mark.the.soc
64f20 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 20 72 65 73 70 6f ket.to.be.closed.when.this.respo
64f40 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 20 20 20 20 69 66 nse.object.goes.away..........if
64f60 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 6b 2e 63 6c 6f 73 .h.sock:.............h.sock.clos
64f80 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 6f 6e 65 0a 0a 20 e().............h.sock.=.None...
64fa0 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 6c 5f 75 72 6c 28 .......r.url.=.req.get_full_url(
64fc0 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 61 63 65 73 20 74 ).........#.This.line.replaces.t
64fe0 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 54 54 50 52 65 73 he..msg.attribute.of.the.HTTPRes
65000 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 65 72 73 2c 20 62 ponse.........#.with..headers,.b
65020 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 63 74 20 74 68 65 ecause.urllib.clients.expect.the
65040 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 65 20 74 68 65 20 .response.to.........#.have.the.
65060 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 62 65 20 67 6f 6f reason.in..msg...It.would.be.goo
65080 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 74 74 72 69 62 75 d.to.mark.this.........#.attribu
650a0 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 68 65 6e 20 74 6f te.is.deprecated.and.get.then.to
650c0 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 68 65 61 64 65 72 .use.info().or.........#..header
650e0 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 6e 0a 20 20 20 20 s..........r.msg.=.r.reason.....
65100 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 61 6e 64 6c 65 72 ....return.r...class.HTTPHandler
65120 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 20 20 64 65 66 20 (AbstractHTTPHandler):......def.
65140 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 20 20 20 20 72 65 http_open(self,.req):.........re
65160 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 65 6e 74 2e 48 54 turn.self.do_open(http.client.HT
65180 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 74 70 5f 72 65 71 TPConnection,.req)......http_req
651a0 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 2e 64 6f 5f 72 65 uest.=.AbstractHTTPHandler.do_re
651c0 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 69 65 6e 74 2c 20 quest_..if.hasattr(http.client,.
651e0 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 6c 61 73 73 20 48 'HTTPSConnection'):......class.H
65200 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 6e 64 6c 65 72 29 TTPSHandler(AbstractHTTPHandler)
65220 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 6c 66 2c 20 64 65 :..........def.__init__(self,.de
65240 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 63 68 65 63 6b 5f buglevel=0,.context=None,.check_
65260 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 20 20 41 62 73 74 hostname=None):.............Abst
65280 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 65 6c 66 2c 20 64 ractHTTPHandler.__init__(self,.d
652a0 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 66 2e 5f 63 6f 6e ebuglevel).............self._con
652c0 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 20 73 65 6c 66 2e text.=.context.............self.
652e0 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 73 74 6e 61 6d 65 _check_hostname.=.check_hostname
65300 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 65 6c 66 2c 20 72 ..........def.https_open(self,.r
65320 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 6c 66 2e 64 6f 5f eq):.............return.self.do_
65340 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 65 63 74 69 6f 6e open(http.client.HTTPSConnection
65360 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 74 65 78 74 3d 73 ,.req,.................context=s
65380 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 6d 65 3d 73 65 6c elf._context,.check_hostname=sel
653a0 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 20 20 68 74 74 70 f._check_hostname)..........http
653c0 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 6e 64 6c 65 72 2e s_request.=.AbstractHTTPHandler.
653e0 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 70 70 65 6e 64 28 do_request_......__all__.append(
65400 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 50 43 6f 6f 6b 69 'HTTPSHandler')..class.HTTPCooki
65420 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 20 20 20 64 65 66 eProcessor(BaseHandler):.....def
65440 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 4e 6f 6e 65 29 3a .__init__(self,.cookiejar=None):
65460 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 65 6a 61 72 0a 20 .........import.http.cookiejar..
65480 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 65 3a 0a 20 20 20 .......if.cookiejar.is.None:....
654a0 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 63 6f 6f 6b 69 65 .........cookiejar.=.http.cookie
654c0 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 6c 66 2e 63 6f 6f jar.CookieJar().........self.coo
654e0 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 66 20 68 74 74 70 kiejar.=.cookiejar......def.http
65500 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 20 20 20 20 20 20 _request(self,.request):........
65520 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 5f 68 65 61 64 65 .self.cookiejar.add_cookie_heade
65540 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 72 65 71 75 65 73 r(request).........return.reques
65560 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 65 6c 66 2c 20 72 t......def.http_response(self,.r
65580 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 20 73 65 6c 66 2e equest,.response):.........self.
655a0 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 72 65 73 70 6f 6e cookiejar.extract_cookies(respon
655c0 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 6e 20 72 65 73 70 se,.request).........return.resp
655e0 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 70 5f 72 onse......https_request.=.http_r
65600 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 74 74 70 equest.....https_response.=.http
65620 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 6e 64 6c 65 72 28 _response..class.UnknownHandler(
65640 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 6f 77 6e 5f 6f 70 BaseHandler):.....def.unknown_op
65660 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 65 20 3d 20 72 65 en(self,.req):.........type.=.re
65680 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 72 6f 72 28 27 75 q.type.........raise.URLError('u
656a0 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 65 29 0a 0a 64 65 nknown.url.type:.%s'.%.type)..de
656c0 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 22 22 22 50 61 72 f.parse_keqv_list(l):....."""Par
656e0 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 67 73 20 77 68 65 se.list.of.key=value.strings.whe
65700 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 2e 22 22 22 0a 20 re.keys.are.not.duplicated."""..
65720 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 20 69 6e 20 6c 3a ...parsed.=.{}.....for.elt.in.l:
65740 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 27 3d 27 2c 20 31 .........k,.v.=.elt.split('=',.1
65760 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 6e 64 20 76 5b 2d ).........if.v[0].==.'"'.and.v[-
65780 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 20 76 5b 31 3a 2d 1].==.'"':.............v.=.v[1:-
657a0 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 20 20 20 72 65 74 1].........parsed[k].=.v.....ret
657c0 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 5f 6c 69 73 74 28 urn.parsed..def.parse_http_list(
657e0 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 64 65 73 63 72 69 s):....."""Parse.lists.as.descri
65800 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 0a 0a 20 20 20 20 bed.by.RFC.2068.Section.2.......
65820 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 2d 73 65 70 61 72 In.particular,.parse.comma-separ
65840 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 6e 74 73 20 6f 66 ated.lists.where.the.elements.of
65860 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 71 75 6f 74 65 64 .....the.list.may.include.quoted
65880 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 20 63 6f 75 6c 64 -strings...A.quoted-string.could
658a0 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 6f 6e 2d 71 75 6f .....contain.a.comma...A.non-quo
658c0 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 65 73 20 69 6e 20 ted.string.could.have.quotes.in.
658e0 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 6f 6d 6d 61 73 20 the.....middle...Neither.commas.
65900 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 72 65 20 65 73 63 nor.quotes.count.if.they.are.esc
65920 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 65 73 20 63 6f 75 aped......Only.double-quotes.cou
65940 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 20 22 22 22 0a 20 nt,.not.single-quotes......"""..
65960 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 0a 20 20 20 20 65 ...res.=.[].....part.=.''......e
65980 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 66 6f 72 20 63 75 scape.=.quote.=.False.....for.cu
659a0 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 0a 20 20 20 20 20 r.in.s:.........if.escape:......
659c0 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 20 20 20 20 20 65 .......part.+=.cur.............e
659e0 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 63 6f 6e 74 69 6e scape.=.False.............contin
65a00 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 20 20 20 20 20 20 ue.........if.quote:............
65a20 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 20 20 20 20 20 20 .if.cur.==.'\\':................
65a40 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 20 20 20 20 20 63 .escape.=.True.................c
65a60 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 75 72 20 3d 3d 20 ontinue.............elif.cur.==.
65a80 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 20 3d 20 46 61 6c '"':.................quote.=.Fal
65aa0 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 0a 20 20 20 20 20 se.............part.+=.cur......
65ac0 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 66 20 63 75 72 20 .......continue..........if.cur.
65ae0 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 70 65 6e 64 28 70 ==.',':.............res.append(p
65b00 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 0a 20 20 20 20 20 art).............part.=.''......
65b20 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 66 20 63 75 72 20 .......continue..........if.cur.
65b40 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 3d 20 54 72 75 65 ==.'"':.............quote.=.True
65b60 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 20 23 20 61 70 70 ..........part.+=.cur......#.app
65b80 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 0a 20 20 20 20 20 end.last.part.....if.part:......
65ba0 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 65 74 75 72 6e 20 ...res.append(part)......return.
65bc0 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 72 65 73 5d 0a 0a [part.strip().for.part.in.res]..
65be0 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 6c 65 72 29 3a 0a class.FileHandler(BaseHandler):.
65c00 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 50 20 64 65 70 65 ....#.Use.local.file.or.FTP.depe
65c20 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 65 66 20 66 69 6c nding.on.form.of.URL.....def.fil
65c40 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 20 75 72 6c 20 3d e_open(self,.req):.........url.=
65c60 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 72 6c 5b 3a 32 5d .req.selector.........if.url[:2]
65c80 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 2f 27 20 61 6e 64 .==.'//'.and.url[2:3].!=.'/'.and
65ca0 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 20 20 20 20 20 72 .(req.host.and.................r
65cc0 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 20 20 20 20 20 20 eq.host.!=.'localhost'):........
65ce0 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 6c 66 2e 67 65 74 .....if.not.req.host.in.self.get
65d00 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 72 61 69 73 65 20 _names():.................raise.
65d20 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 73 20 73 75 70 70 URLError("file://.scheme.is.supp
65d40 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 20 20 20 20 20 20 orted.only.on.localhost").......
65d60 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.
65d80 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 23 20 6e 61 6d 65 open_local_file(req)......#.name
65da0 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 6d 65 73 20 3d 20 s.for.the.localhost.....names.=.
65dc0 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 66 29 3a 0a 20 20 None.....def.get_names(self):...
65de0 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 20 69 73 20 4e 6f ......if.FileHandler.names.is.No
65e00 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 20 20 20 20 20 20 ne:.............try:............
65e20 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 75 70 6c 65 28 0a .....FileHandler.names.=.tuple(.
65e40 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 65 74 68 6f ....................socket.getho
65e60 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 5d 20 2b 0a 20 20 stbyname_ex('localhost')[2].+...
65e80 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 65 74 68 6f 73 74 ..................socket.gethost
65ea0 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 6d 65 28 29 29 5b byname_ex(socket.gethostname())[
65ec0 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 6b 65 74 2e 67 61 2]).............except.socket.ga
65ee0 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 6c 65 48 61 6e 64 ierror:.................FileHand
65f00 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 74 62 79 6e 61 6d ler.names.=.(socket.gethostbynam
65f20 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 65 74 75 72 6e 20 e('localhost'),).........return.
65f40 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 6f 74 20 65 6e 74 FileHandler.names......#.not.ent
65f60 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 61 72 65 20 68 65 irely.sure.what.the.rules.are.he
65f80 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 28 73 65 6c 66 2c re.....def.open_local_file(self,
65fa0 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 6c 2e 75 74 69 6c .req):.........import.email.util
65fc0 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 20 20 s.........import.mimetypes......
65fe0 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 20 66 69 6c 65 6e ...host.=.req.host.........filen
66000 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 20 6c 6f 63 61 6c ame.=.req.selector.........local
66020 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 6d 65 29 0a 20 20 file.=.url2pathname(filename)...
66040 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 74 73 20 3d 20 6f ......try:.............stats.=.o
66060 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 20 20 20 20 73 69 s.stat(localfile).............si
66080 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 20 20 20 20 20 6d ze.=.stats.st_size.............m
660a0 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 61 74 64 61 74 65 odified.=.email.utils.formatdate
660c0 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 75 65 29 0a 20 20 (stats.st_mtime,.usegmt=True)...
660e0 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 67 75 65 73 ..........mtype.=.mimetypes.gues
66100 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 20 20 20 20 20 20 s_type(filename)[0].............
66120 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 73 74 72 headers.=.email.message_from_str
66140 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 65 6e 74 2d 74 79 ing(.................'Content-ty
66160 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 5c 6e 4c 61 73 74 pe:.%s\nContent-length:.%d\nLast
66180 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 20 -modified:.%s\n'.%..............
661a0 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 20 73 69 7a 65 2c ...(mtype.or.'text/plain',.size,
661c0 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 20 68 6f 73 74 3a .modified)).............if.host:
661e0 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 74 20 3d 20 5f 73 .................host,.port.=._s
66200 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 69 66 20 6e 6f plitport(host).............if.no
66220 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 20 28 6e 6f 74 t.host.or.\.................(not
66240 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 6d 65 28 68 6f .port.and._safe_gethostbyname(ho
66260 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 20 20 20 20 20 st).in.self.get_names()):.......
66280 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 20 20 ..........if.host:..............
662a0 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 2b 20 68 6f 73 .......origurl.=.'file://'.+.hos
662c0 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 20 20 65 6c 73 t.+.filename.................els
662e0 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 75 72 6c 20 3d e:.....................origurl.=
66300 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 20 20 20 20 20 .'file://'.+.filename...........
66320 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 6e 28 6c 6f 63 ......return.addinfourl(open(loc
66340 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 67 75 72 6c 29 alfile,.'rb'),.headers,.origurl)
66360 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 65 78 70 3a 0a .........except.OSError.as.exp:.
66380 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 65 78 70 29 0a ............raise.URLError(exp).
663a0 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 65 20 6e 6f 74 ........raise.URLError('file.not
663c0 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 5f 67 65 74 68 .on.local.host')..def._safe_geth
663e0 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 20 20 20 20 20 ostbyname(host):.....try:.......
66400 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 6d 65 28 68 6f ..return.socket.gethostbyname(ho
66420 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 72 6f 72 3a 0a st).....except.socket.gaierror:.
66440 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 46 54 50 48 61 ........return.None..class.FTPHa
66460 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 66 74 70 5f ndler(BaseHandler):.....def.ftp_
66480 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 70 6f 72 74 20 open(self,.req):.........import.
664a0 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 79 70 65 73 0a ftplib.........import.mimetypes.
664c0 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 20 ........host.=.req.host.........
664e0 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 69 73 65 20 55 if.not.host:.............raise.U
66500 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 20 67 69 76 65 RLError('ftp.error:.no.host.give
66520 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 5f 73 70 6c 69 74 70 n').........host,.port.=._splitp
66540 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 20 4e 6f 6e ort(host).........if.port.is.Non
66560 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 2e 46 54 50 e:.............port.=.ftplib.FTP
66580 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 20 20 20 _PORT.........else:.............
665a0 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 75 73 65 72 port.=.int(port)..........#.user
665c0 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 20 20 20 75 name/password.handling.........u
665e0 73 65 72 2c 20 68 6f 73 74 20 3d 20 5f 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a 20 20 20 ser,.host.=._splituser(host)....
66600 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 72 2c 20 .....if.user:.............user,.
66620 70 61 73 73 77 64 20 3d 20 5f 73 70 6c 69 74 70 61 73 73 77 64 28 75 73 65 72 29 0a 20 20 20 20 passwd.=._splitpasswd(user).....
66640 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 20 4e ....else:.............passwd.=.N
66660 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 74 29 one.........host.=.unquote(host)
66680 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 20 20 .........user.=.user.or.''......
666a0 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 20 20 ...passwd.=.passwd.or.''........
666c0 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 65 74 ..try:.............host.=.socket
666e0 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 78 63 .gethostbyname(host).........exc
66700 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 20 20 ept.OSError.as.msg:.............
66720 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 74 68 raise.URLError(msg).........path
66740 2c 20 61 74 74 72 73 20 3d 20 5f 73 70 6c 69 74 61 74 74 72 28 72 65 71 2e 73 65 6c 65 63 74 6f ,.attrs.=._splitattr(req.selecto
66760 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 27 r).........dirs.=.path.split('/'
66780 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 74 ).........dirs.=.list(map(unquot
667a0 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 64 e,.dirs)).........dirs,.file.=.d
667c0 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 69 irs[:-1],.dirs[-1].........if.di
667e0 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 20 rs.and.not.dirs[0]:.............
66800 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 20 dirs.=.dirs[1:].........try:....
66820 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 75 .........fw.=.self.connect_ftp(u
66840 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 72 ser,.passwd,.host,.port,.dirs,.r
66860 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 66 eq.timeout).............type.=.f
66880 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 66 ile.and.'I'.or.'D'.............f
668a0 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 20 or.attr.in.attrs:...............
668c0 20 20 61 74 74 72 2c 20 76 61 6c 75 65 20 3d 20 5f 73 70 6c 69 74 76 61 6c 75 65 28 61 74 74 72 ..attr,.value.=._splitvalue(attr
668e0 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(
66900 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.\...............
66920 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
66940 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'):...................
66960 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()..........
66980 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
669a0 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.=."
669c0 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.
669e0 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].....
66a00 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:...............
66a20 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
66a40 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
66a60 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:..
66a80 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
66aa0 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......
66ac0 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
66ae0 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).............
66b00 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
66b20 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
66b40 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:...........
66b60 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'
66b80 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
66ba0 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]).
66bc0 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,
66be0 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
66c00 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
66c20 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
66c40 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,.........................
66c60 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
66c80 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
66ca0 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
66cc0 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
66ce0 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
66d00 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):...
66d20 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
66d40 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
66d60 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
66d80 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....
66da0 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):......
66dc0 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
66de0 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
66e00 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
66e20 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,
66e40 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
66e60 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),
66e80 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.
66ea0 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[
66ec0 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.
66ee0 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
66f00 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
66f20 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,................
66f40 20 20 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,.
66f60 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
66f80 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
66fa0 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()....
66fc0 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].....
66fe0 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):.........
67000 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......
67020 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
67040 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
67060 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
67080 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:..
670a0 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]
670c0 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
670e0 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]..................
67100 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
67120 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
67140 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
67160 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
67180 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:.....
671a0 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
671c0 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()):.................
671e0 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:...........
67200 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].....
67220 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
67240 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...
67260 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
67280 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
672a0 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
672c0 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():..
672e0 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().........
67300 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.
67320 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
67340 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
67360 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
67380 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.....
673a0 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.
673c0 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:
673e0 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:".
67400 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".].",".
67420 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
67440 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
67460 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
67480 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
674a0 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
674c0 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.
674e0 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
67500 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)..
67520 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
67540 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
67560 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
67580 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
675a0 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"):.
675c0 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
675e0 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
67600 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
67620 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
67640 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
67660 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
67680 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:.
676a0 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".%.....
676c0 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))).
676e0 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
67700 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
67720 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
67740 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
67760 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
67780 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
677a0 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
677c0 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
677e0 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
67800 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-
67820 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
67840 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....
67860 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.
67880 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.""".
678a0 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)
678c0 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)
678e0 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
67900 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
67920 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
67940 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.
67960 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
67980 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.=.{}..
679a0 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
679c0 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
679e0 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
67a00 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
67a20 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
67a40 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
67a60 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
67a80 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
67aa0 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
67ac0 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
67ae0 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
67b00 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/%
67b20 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
67b40 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
67b60 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.=.
67b80 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
67ba0 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..".\........
67bc0 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
67be0 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.__
67c00 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
67c20 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,
67c40 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
67c60 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.=
67c80 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
67ca0 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.
67cc0 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.
67ce0 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
67d00 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')..
67d20 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
67d40 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
67d60 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
67d80 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',.'*/*')].......
67da0 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.=.[].........
67dc0 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.
67de0 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
67e00 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
67e20 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
67e40 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
67e60 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.......
67e80 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
67ea0 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
67ec0 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
67ee0 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
67f00 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
67f20 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)..
67f40 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
67f60 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:
67f80 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........
67fa0 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
67fc0 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.
67fe0 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
68000 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
68020 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......
68040 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
68060 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):..
68080 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
680a0 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
680c0 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
680e0 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
68100 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
68120 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
68140 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
68160 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
68180 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:..............
681a0 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
681c0 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).................
681e0 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:.................
68200 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.__
68220 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
68240 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
68260 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
68280 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
682a0 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
682c0 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
682e0 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')"""..
68300 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
68320 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...
68340 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
68360 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()
68380 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
683a0 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
683c0 72 61 70 28 5f 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 rap(_to_bytes(fullurl)).........
683e0 66 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 fullurl.=.quote(fullurl,.safe="%
68400 2f 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 /:=&?~#+!$,;'@()*[]|").........i
68420 66 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 f.self.tempcache.and.fullurl.in.
68440 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 66 69 6c 65 self.tempcache:.............file
68460 6e 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 name,.headers.=.self.tempcache[f
68480 75 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 ullurl].............fp.=.open(fi
684a0 6c 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 lename,.'rb').............return
684c0 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 66 75 6c 6c 75 72 6c .addinfourl(fp,.headers,.fullurl
684e0 29 0a 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 2c 20 75 72 6c 20 3d 20 5f 73 70 6c 69 74 74 ).........urltype,.url.=._splitt
68500 79 70 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 ype(fullurl).........if.not.urlt
68520 79 70 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 ype:.............urltype.=.'file
68540 27 0a 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 '.........if.urltype.in.self.pro
68560 78 69 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 xies:.............proxy.=.self.p
68580 72 6f 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 roxies[urltype].............urlt
685a0 79 70 65 2c 20 70 72 6f 78 79 68 6f 73 74 20 3d 20 5f 73 70 6c 69 74 74 79 70 65 28 70 72 6f 78 ype,.proxyhost.=._splittype(prox
685c0 79 29 0a 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 y).............host,.selector.=.
685e0 5f 73 70 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 20 20 _splithost(proxyhost)...........
68600 20 20 75 72 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 ..url.=.(host,.fullurl).#.Signal
68620 20 73 70 65 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 .special.case.to.open_*().......
68640 20 20 65 6c 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 ..else:.............proxy.=.None
68660 0a 20 20 20 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 .........name.=.'open_'.+.urltyp
68680 65 0a 20 20 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 e.........self.type.=.urltype...
686a0 20 20 20 20 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 ......name.=.name.replace('-',.'
686c0 5f 27 29 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 2c _').........if.not.hasattr(self,
686e0 20 6e 61 6d 65 29 20 6f 72 20 6e 61 6d 65 20 3d 3d 20 27 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 .name).or.name.==.'open_local_fi
68700 6c 65 27 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 le':.............if.proxy:......
68720 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 5f 75 6e 6b 6e ...........return.self.open_unkn
68740 6f 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 own_proxy(proxy,.fullurl,.data).
68760 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 20 20 ............else:...............
68780 20 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 ..return.self.open_unknown(fullu
687a0 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 20 20 20 20 rl,.data).........try:..........
687c0 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 20 20 20 ...if.data.is.None:.............
687e0 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 75 ....return.getattr(self,.name)(u
68800 72 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 rl).............else:...........
68820 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 20 6e 61 6d 65 29 ......return.getattr(self,.name)
68840 28 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 (url,.data).........except.(HTTP
68860 45 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 Error,.URLError):.............ra
68880 69 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 ise.........except.OSError.as.ms
688a0 67 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 g:.............raise.OSError('so
688c0 63 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 cket.error',.msg).with_traceback
688e0 28 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 (sys.exc_info()[2])......def.ope
68900 6e 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 n_unknown(self,.fullurl,.data=No
68920 6e 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 ne):........."""Overridable.inte
68940 72 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 rface.to.open.unknown.URL.type."
68960 22 22 0a 20 20 20 20 20 20 20 20 74 79 70 65 2c 20 75 72 6c 20 3d 20 5f 73 70 6c 69 74 74 79 70 "".........type,.url.=._splittyp
68980 65 28 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 e(fullurl).........raise.OSError
689a0 28 27 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 ('url.error',.'unknown.url.type'
689c0 2c 20 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 ,.type)......def.open_unknown_pr
689e0 6f 78 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 oxy(self,.proxy,.fullurl,.data=N
68a00 6f 6e 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 one):........."""Overridable.int
68a20 65 72 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 erface.to.open.unknown.URL.type.
68a40 22 22 22 0a 20 20 20 20 20 20 20 20 74 79 70 65 2c 20 75 72 6c 20 3d 20 5f 73 70 6c 69 74 74 79 """.........type,.url.=._splitty
68a60 70 65 28 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 pe(fullurl).........raise.OSErro
68a80 72 28 27 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 r('url.error',.'invalid.proxy.fo
68aa0 72 20 25 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 r.%s'.%.type,.proxy)......#.Exte
68ac0 72 6e 61 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 rnal.interface.....def.retrieve(
68ae0 73 65 6c 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 self,.url,.filename=None,.report
68b00 68 6f 6f 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 hook=None,.data=None):........."
68b20 22 22 72 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 ""retrieve(url).returns.(filenam
68b40 65 2c 20 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 e,.headers).for.a.local.object..
68b60 20 20 20 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 .......or.(tempfilename,.headers
68b80 29 20 66 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 ).for.a.remote.object.""".......
68ba0 20 20 75 72 6c 20 3d 20 75 6e 77 72 61 70 28 5f 74 6f 5f 62 79 74 65 73 28 75 72 6c 29 29 0a 20 ..url.=.unwrap(_to_bytes(url))..
68bc0 20 20 20 20 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 .......if.self.tempcache.and.url
68be0 20 69 6e 20 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 .in.self.tempcache:.............
68c00 72 65 74 75 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 return.self.tempcache[url]......
68c20 20 20 20 74 79 70 65 2c 20 75 72 6c 31 20 3d 20 5f 73 70 6c 69 74 74 79 70 65 28 75 72 6c 29 0a ...type,.url1.=._splittype(url).
68c40 20 20 20 20 20 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 ........if.filename.is.None.and.
68c60 28 6e 6f 74 20 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 (not.type.or.type.==.'file'):...
68c80 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 66 ..........try:.................f
68ca0 70 20 3d 20 73 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 p.=.self.open_local_file(url1)..
68cc0 20 20 20 20 20 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 ...............hdrs.=.fp.info().
68ce0 20 20 20 20 20 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 ................fp.close()......
68d00 20 20 20 20 20 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 5f ...........return.url2pathname(_
68d20 73 70 6c 69 74 68 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 splithost(url1)[1]),.hdrs.......
68d40 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 3a 0a 20 20 20 ......except.OSError.as.msg:....
68d60 20 20 20 20 20 20 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 .............pass.........fp.=.s
68d80 65 6c 66 2e 6f 70 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 elf.open(url,.data).........try:
68da0 0a 20 20 20 20 20 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 .............headers.=.fp.info()
68dc0 0a 20 20 20 20 20 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 .............if.filename:.......
68de0 20 20 20 20 20 20 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 ..........tfp.=.open(filename,.'
68e00 77 62 27 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 wb').............else:..........
68e20 20 20 20 20 20 20 20 67 61 72 62 61 67 65 2c 20 70 61 74 68 20 3d 20 5f 73 70 6c 69 74 74 79 70 .......garbage,.path.=._splittyp
68e40 65 28 75 72 6c 29 0a 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 e(url).................garbage,.
68e60 70 61 74 68 20 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 70 61 74 68 20 6f 72 20 22 22 29 0a 20 20 path.=._splithost(path.or."")...
68e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 2c 20 67 61 72 62 61 67 65 20 3d 20 5f 73 ..............path,.garbage.=._s
68ea0 70 6c 69 74 71 75 65 72 79 28 70 61 74 68 20 6f 72 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 plitquery(path.or."")...........
68ec0 20 20 20 20 20 20 70 61 74 68 2c 20 67 61 72 62 61 67 65 20 3d 20 5f 73 70 6c 69 74 61 74 74 72 ......path,.garbage.=._splitattr
68ee0 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 73 75 66 (path.or."").................suf
68f00 66 69 78 20 3d 20 6f 73 2e 70 61 74 68 2e 73 70 6c 69 74 65 78 74 28 70 61 74 68 29 5b 31 5d 0a fix.=.os.path.splitext(path)[1].
68f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 64 2c 20 66 69 6c 65 6e 61 6d 65 29 20 3d ................(fd,.filename).=
68f40 20 74 65 6d 70 66 69 6c 65 2e 6d 6b 73 74 65 6d 70 28 73 75 66 66 69 78 29 0a 20 20 20 20 20 20 .tempfile.mkstemp(suffix).......
68f60 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 5f 74 65 6d 70 66 69 6c 65 73 2e 61 70 70 65 6e ..........self.__tempfiles.appen
68f80 64 28 66 69 6c 65 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 66 70 20 d(filename).................tfp.
68fa0 3d 20 6f 73 2e 66 64 6f 70 65 6e 28 66 64 2c 20 27 77 62 27 29 0a 20 20 20 20 20 20 20 20 20 20 =.os.fdopen(fd,.'wb')...........
68fc0 20 20 74 72 79 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 20 ..try:.................result.=.
68fe0 66 69 6c 65 6e 61 6d 65 2c 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 filename,.headers...............
69000 20 20 69 66 20 73 65 6c 66 2e 74 65 6d 70 63 61 63 68 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a ..if.self.tempcache.is.not.None:
69020 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 2e 74 65 6d 70 63 61 .....................self.tempca
69040 63 68 65 5b 75 72 6c 5d 20 3d 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 che[url].=.result...............
69060 20 20 62 73 20 3d 20 31 30 32 34 2a 38 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 ..bs.=.1024*8.................si
69080 7a 65 20 3d 20 2d 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 20 3d 20 30 ze.=.-1.................read.=.0
690a0 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 3d 20 30 0a 20 20 .................blocknum.=.0...
690c0 20 20 20 20 20 20 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 ..............if."content-length
690e0 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 20 20 20 20 20 20 20 ".in.headers:...................
69100 20 20 73 69 7a 65 20 3d 20 69 6e 74 28 68 65 61 64 65 72 73 5b 22 43 6f 6e 74 65 6e 74 2d 4c 65 ..size.=.int(headers["Content-Le
69120 6e 67 74 68 22 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 70 6f 72 ngth"]).................if.repor
69140 74 68 6f 6f 6b 3a 0a 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 thook:.....................repor
69160 74 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 thook(blocknum,.bs,.size).......
69180 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........while.1:..............
691a0 20 20 20 20 20 20 20 62 6c 6f 63 6b 20 3d 20 66 70 2e 72 65 61 64 28 62 73 29 0a 20 20 20 20 20 .......block.=.fp.read(bs)......
691c0 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 63 6b 3a 0a 20 20 20 ...............if.not.block:....
691e0 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 20 20 20 20 20 .....................break......
69200 20 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 ...............read.+=.len(block
69220 29 0a 20 20 20 20 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 ).....................tfp.write(
69240 62 6c 6f 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b block).....................block
69260 6e 75 6d 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 num.+=.1.....................if.
69280 72 65 70 6f 72 74 68 6f 6f 6b 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 reporthook:.....................
692a0 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 73 2c 20 73 69 7a ....reporthook(blocknum,.bs,.siz
692c0 65 29 0a 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 e).............finally:.........
692e0 20 20 20 20 20 20 20 20 74 66 70 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 66 69 6e 61 ........tfp.close().........fina
69300 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 2e 63 6c 6f 73 65 28 29 0a 0a 20 20 20 lly:.............fp.close().....
69320 20 20 20 20 20 23 20 72 61 69 73 65 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 61 63 74 75 61 6c .....#.raise.exception.if.actual
69340 20 73 69 7a 65 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e .size.does.not.match.content-len
69360 67 74 68 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 69 66 20 73 69 7a 65 20 3e 3d 20 30 20 gth.header.........if.size.>=.0.
69380 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 20 20 20 20 72 61 69 and.read.<.size:.............rai
693a0 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(........
693c0 20 20 20 20 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 ........."retrieval.incomplete:.
693e0 67 6f 74 20 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 got.only.%i.out.of.%i.bytes"....
69400 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 28 72 65 61 64 2c 20 73 69 7a 65 29 2c 20 72 65 73 .............%.(read,.size),.res
69420 75 6c 74 29 0a 0a 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 ult)..........return.result.....
69440 20 23 20 45 61 63 68 20 6d 65 74 68 6f 64 20 6e 61 6d 65 64 20 6f 70 65 6e 5f 3c 74 79 70 65 3e .#.Each.method.named.open_<type>
69460 20 6b 6e 6f 77 73 20 68 6f 77 20 74 6f 20 6f 70 65 6e 20 74 68 61 74 20 74 79 70 65 20 6f 66 20 .knows.how.to.open.that.type.of.
69480 55 52 4c 0a 0a 20 20 20 20 64 65 66 20 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 5f 68 74 74 70 28 URL......def._open_generic_http(
694a0 73 65 6c 66 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 5f 66 61 63 74 6f 72 79 2c 20 75 72 6c 2c 20 64 self,.connection_factory,.url,.d
694c0 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 4d 61 6b 65 20 61 6e 20 48 54 54 50 20 63 6f ata):........."""Make.an.HTTP.co
694e0 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 6c 61 73 73 2e nnection.using.connection_class.
69500 0a 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 6d 65 ..........This.is.an.internal.me
69520 74 68 6f 64 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 20 66 72 6f 6d 0a thod.that.should.be.called.from.
69540 20 20 20 20 20 20 20 20 6f 70 65 6e 5f 68 74 74 70 28 29 20 6f 72 20 6f 70 65 6e 5f 68 74 74 70 ........open_http().or.open_http
69560 73 28 29 2e 0a 0a 20 20 20 20 20 20 20 20 41 72 67 75 6d 65 6e 74 73 3a 0a 20 20 20 20 20 20 20 s()...........Arguments:........
69580 20 2d 20 63 6f 6e 6e 65 63 74 69 6f 6e 5f 66 61 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 74 61 6b .-.connection_factory.should.tak
695a0 65 20 61 20 68 6f 73 74 20 6e 61 6d 65 20 61 6e 64 20 72 65 74 75 72 6e 20 61 6e 0a 20 20 20 20 e.a.host.name.and.return.an.....
695c0 20 20 20 20 20 20 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0a 20 ......HTTPConnection.instance...
695e0 20 20 20 20 20 20 20 2d 20 75 72 6c 20 69 73 20 74 68 65 20 75 72 6c 20 74 6f 20 72 65 74 72 69 .......-.url.is.the.url.to.retri
69600 65 76 61 6c 20 6f 72 20 61 20 68 6f 73 74 2c 20 72 65 6c 61 74 69 76 65 2d 70 61 74 68 20 70 61 eval.or.a.host,.relative-path.pa
69620 69 72 2e 0a 20 20 20 20 20 20 20 20 2d 20 64 61 74 61 20 69 73 20 70 61 79 6c 6f 61 64 20 66 6f ir..........-.data.is.payload.fo
69640 72 20 61 20 50 4f 53 54 20 72 65 71 75 65 73 74 20 6f 72 20 4e 6f 6e 65 2e 0a 20 20 20 20 20 20 r.a.POST.request.or.None........
69660 20 20 22 22 22 0a 0a 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 20 3d 20 4e 6f 6e .."""..........user_passwd.=.Non
69680 65 0a 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f 70 61 73 73 77 64 3d 20 4e 6f 6e 65 0a 20 20 20 e.........proxy_passwd=.None....
696a0 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 75 72 6c 2c 20 73 74 72 29 3a 0a 20 20 .....if.isinstance(url,.str):...
696c0 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 5f 73 70 6c 69 ..........host,.selector.=._spli
696e0 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:.
69700 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
69720 74 20 3d 20 5f 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 t.=._splituser(host)............
69740 20 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 .....host.=.unquote(host).......
69760 20 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 6c ......realhost.=.host.........el
69780 73 65 3a 0a 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 se:.............host,.selector.=
697a0 20 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 68 65 63 6b 20 77 68 65 74 68 65 72 .url.............#.check.whether
697c0 20 74 68 65 20 70 72 6f 78 79 20 63 6f 6e 74 61 69 6e 73 20 61 75 74 68 6f 72 69 7a 61 74 69 6f .the.proxy.contains.authorizatio
697e0 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 5f n.information.............proxy_
69800 70 61 73 73 77 64 2c 20 68 6f 73 74 20 3d 20 5f 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a passwd,.host.=._splituser(host).
69820 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f 77 20 77 65 20 70 72 6f 63 65 65 64 20 77 69 74 ............#.now.we.proceed.wit
69840 68 20 74 68 65 20 75 72 6c 20 77 65 20 77 61 6e 74 20 74 6f 20 6f 62 74 61 69 6e 0a 20 20 20 20 h.the.url.we.want.to.obtain.....
69860 20 20 20 20 20 20 20 20 75 72 6c 74 79 70 65 2c 20 72 65 73 74 20 3d 20 5f 73 70 6c 69 74 74 79 ........urltype,.rest.=._splitty
69880 70 65 28 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 20 3d 20 72 pe(selector).............url.=.r
698a0 65 73 74 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 4e 6f est.............user_passwd.=.No
698c0 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 75 72 6c 74 79 70 65 2e 6c 6f 77 65 72 28 ne.............if.urltype.lower(
698e0 29 20 21 3d 20 27 68 74 74 70 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 ).!=.'http':.................rea
69900 6c 68 6f 73 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 lhost.=.None.............else:..
69920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 6c 68 6f 73 74 2c 20 72 65 73 74 20 3d 20 ...............realhost,.rest.=.
69940 5f 73 70 6c 69 74 68 6f 73 74 28 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _splithost(rest)................
69960 20 69 66 20 72 65 61 6c 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .if.realhost:...................
69980 20 20 75 73 65 72 5f 70 61 73 73 77 64 2c 20 72 65 61 6c 68 6f 73 74 20 3d 20 5f 73 70 6c 69 74 ..user_passwd,.realhost.=._split
699a0 75 73 65 72 28 72 65 61 6c 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 user(realhost).................i
699c0 66 20 75 73 65 72 5f 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.user_passwd:..................
699e0 20 20 20 73 65 6c 65 63 74 6f 72 20 3d 20 22 25 73 3a 2f 2f 25 73 25 73 22 20 25 20 28 75 72 6c ...selector.=."%s://%s%s".%.(url
69a00 74 79 70 65 2c 20 72 65 61 6c 68 6f 73 74 2c 20 72 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 type,.realhost,.rest)...........
69a20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 5f 62 79 70 61 73 73 28 72 65 61 6c 68 6f 73 74 29 3a ......if.proxy_bypass(realhost):
69a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 72 65 61 6c .....................host.=.real
69a60 68 6f 73 74 0a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 20 72 61 69 73 65 host..........if.not.host:.raise
69a80 20 4f 53 45 72 72 6f 72 28 27 68 74 74 70 20 65 72 72 6f 72 27 2c 20 27 6e 6f 20 68 6f 73 74 20 .OSError('http.error',.'no.host.
69aa0 67 69 76 65 6e 27 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 5f 70 61 73 73 77 64 given')..........if.proxy_passwd
69ac0 3a 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 20 3d 20 75 6e 71 :.............proxy_passwd.=.unq
69ae0 75 6f 74 65 28 70 72 6f 78 79 5f 70 61 73 73 77 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 uote(proxy_passwd).............p
69b00 72 6f 78 79 5f 61 75 74 68 20 3d 20 62 61 73 65 36 34 2e 62 36 34 65 6e 63 6f 64 65 28 70 72 6f roxy_auth.=.base64.b64encode(pro
69b20 78 79 5f 70 61 73 73 77 64 2e 65 6e 63 6f 64 65 28 29 29 2e 64 65 63 6f 64 65 28 27 61 73 63 69 xy_passwd.encode()).decode('asci
69b40 69 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 i').........else:.............pr
69b60 6f 78 79 5f 61 75 74 68 20 3d 20 4e 6f 6e 65 0a 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 oxy_auth.=.None..........if.user
69b80 5f 70 61 73 73 77 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 _passwd:.............user_passwd
69ba0 20 3d 20 75 6e 71 75 6f 74 65 28 75 73 65 72 5f 70 61 73 73 77 64 29 0a 20 20 20 20 20 20 20 20 .=.unquote(user_passwd).........
69bc0 20 20 20 20 61 75 74 68 20 3d 20 62 61 73 65 36 34 2e 62 36 34 65 6e 63 6f 64 65 28 75 73 65 72 ....auth.=.base64.b64encode(user
69be0 5f 70 61 73 73 77 64 2e 65 6e 63 6f 64 65 28 29 29 2e 64 65 63 6f 64 65 28 27 61 73 63 69 69 27 _passwd.encode()).decode('ascii'
69c00 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 61 75 74 68 ).........else:.............auth
69c20 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 68 74 74 70 5f 63 6f 6e 6e 20 3d 20 63 6f 6e 6e .=.None.........http_conn.=.conn
69c40 65 63 74 69 6f 6e 5f 66 61 63 74 6f 72 79 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 68 65 61 ection_factory(host).........hea
69c60 64 65 72 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 5f 61 75 74 68 3a ders.=.{}.........if.proxy_auth:
69c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 22 50 72 6f 78 79 2d 41 75 74 68 .............headers["Proxy-Auth
69ca0 6f 72 69 7a 61 74 69 6f 6e 22 5d 20 3d 20 22 42 61 73 69 63 20 25 73 22 20 25 20 70 72 6f 78 79 orization"].=."Basic.%s".%.proxy
69cc0 5f 61 75 74 68 0a 20 20 20 20 20 20 20 20 69 66 20 61 75 74 68 3a 0a 20 20 20 20 20 20 20 20 20 _auth.........if.auth:..........
69ce0 20 20 20 68 65 61 64 65 72 73 5b 22 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 22 5d 20 3d 20 20 22 ...headers["Authorization"].=.."
69d00 42 61 73 69 63 20 25 73 22 20 25 20 61 75 74 68 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 61 6c Basic.%s".%.auth.........if.real
69d20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 22 48 6f 73 74 22 host:.............headers["Host"
69d40 5d 20 3d 20 72 65 61 6c 68 6f 73 74 0a 0a 20 20 20 20 20 20 20 20 23 20 41 64 64 20 43 6f 6e 6e ].=.realhost..........#.Add.Conn
69d60 65 63 74 69 6f 6e 3a 63 6c 6f 73 65 20 61 73 20 77 65 20 64 6f 6e 27 74 20 73 75 70 70 6f 72 74 ection:close.as.we.don't.support
69d80 20 70 65 72 73 69 73 74 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 79 65 74 2e 0a 20 20 20 .persistent.connections.yet.....
69da0 20 20 20 20 20 23 20 54 68 69 73 20 68 65 6c 70 73 20 69 6e 20 63 6c 6f 73 69 6e 67 20 74 68 65 .....#.This.helps.in.closing.the
69dc0 20 73 6f 63 6b 65 74 20 61 6e 64 20 61 76 6f 69 64 69 6e 67 20 52 65 73 6f 75 72 63 65 57 61 72 .socket.and.avoiding.ResourceWar
69de0 6e 69 6e 67 0a 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 22 43 6f 6e 6e 65 63 74 69 6f ning..........headers["Connectio
69e00 6e 22 5d 20 3d 20 22 63 6c 6f 73 65 22 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 68 65 61 64 65 n"].=."close"..........for.heade
69e20 72 2c 20 76 61 6c 75 65 20 69 6e 20 73 65 6c 66 2e 61 64 64 68 65 61 64 65 72 73 3a 0a 20 20 20 r,.value.in.self.addheaders:....
69e40 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 68 65 61 64 65 72 5d 20 3d 20 76 61 6c 75 65 .........headers[header].=.value
69e60 0a 0a 20 20 20 20 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 20 ..........if.data.is.not.None:..
69e80 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 5b 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 ...........headers["Content-Type
69ea0 22 5d 20 3d 20 22 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 "].=."application/x-www-form-url
69ec0 65 6e 63 6f 64 65 64 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 5f 63 6f 6e 6e 2e 72 encoded".............http_conn.r
69ee0 65 71 75 65 73 74 28 22 50 4f 53 54 22 2c 20 73 65 6c 65 63 74 6f 72 2c 20 64 61 74 61 2c 20 68 equest("POST",.selector,.data,.h
69f00 65 61 64 65 72 73 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 eaders).........else:...........
69f20 20 20 68 74 74 70 5f 63 6f 6e 6e 2e 72 65 71 75 65 73 74 28 22 47 45 54 22 2c 20 73 65 6c 65 63 ..http_conn.request("GET",.selec
69f40 74 6f 72 2c 20 68 65 61 64 65 72 73 3d 68 65 61 64 65 72 73 29 0a 0a 20 20 20 20 20 20 20 20 74 tor,.headers=headers)..........t
69f60 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 3d 20 68 74 74 70 5f ry:.............response.=.http_
69f80 63 6f 6e 6e 2e 67 65 74 72 65 73 70 6f 6e 73 65 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 conn.getresponse().........excep
69fa0 74 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e 42 61 64 53 74 61 74 75 73 4c 69 6e 65 3a 0a 20 20 20 t.http.client.BadStatusLine:....
69fc0 20 20 20 20 20 20 20 20 20 23 20 73 6f 6d 65 74 68 69 6e 67 20 77 65 6e 74 20 77 72 6f 6e 67 20 .........#.something.went.wrong.
69fe0 77 69 74 68 20 74 68 65 20 48 54 54 50 20 73 74 61 74 75 73 20 6c 69 6e 65 0a 20 20 20 20 20 20 with.the.HTTP.status.line.......
6a000 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 22 68 74 74 70 20 70 72 6f 74 6f ......raise.URLError("http.proto
6a020 63 6f 6c 20 65 72 72 6f 72 3a 20 62 61 64 20 73 74 61 74 75 73 20 6c 69 6e 65 22 29 0a 0a 20 20 col.error:.bad.status.line")....
6a040 20 20 20 20 20 20 23 20 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 52 46 43 20 32 36 31 36 2c 20 22 ......#.According.to.RFC.2616,."
6a060 32 78 78 22 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 63 6c 69 2xx".code.indicates.that.the.cli
6a080 65 6e 74 27 73 0a 20 20 20 20 20 20 20 20 23 20 72 65 71 75 65 73 74 20 77 61 73 20 73 75 63 63 ent's.........#.request.was.succ
6a0a0 65 73 73 66 75 6c 6c 79 20 72 65 63 65 69 76 65 64 2c 20 75 6e 64 65 72 73 74 6f 6f 64 2c 20 61 essfully.received,.understood,.a
6a0c0 6e 64 20 61 63 63 65 70 74 65 64 2e 0a 20 20 20 20 20 20 20 20 69 66 20 32 30 30 20 3c 3d 20 72 nd.accepted..........if.200.<=.r
6a0e0 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 20 3c 20 33 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 esponse.status.<.300:...........
6a100 20 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 72 65 73 70 6f 6e 73 65 2c 20 72 65 ..return.addinfourl(response,.re
6a120 73 70 6f 6e 73 65 2e 6d 73 67 2c 20 22 68 74 74 70 3a 22 20 2b 20 75 72 6c 2c 0a 20 20 20 20 20 sponse.msg,."http:".+.url,......
6a140 20 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 73 70 6f 6e 73 .........................respons
6a160 65 2e 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 e.status).........else:.........
6a180 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 28 0a 20 20 20 20 ....return.self.http_error(.....
6a1a0 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 2c 20 72 65 73 70 6f 6e 73 65 2e 66 70 2c 0a 20 20 ............url,.response.fp,...
6a1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 2c 20 72 ..............response.status,.r
6a1e0 65 73 70 6f 6e 73 65 2e 72 65 61 73 6f 6e 2c 20 72 65 73 70 6f 6e 73 65 2e 6d 73 67 2c 20 64 61 esponse.reason,.response.msg,.da
6a200 74 61 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 68 74 74 70 28 73 65 6c 66 2c 20 75 72 6c ta)......def.open_http(self,.url
6a220 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 55 73 65 20 48 54 54 ,.data=None):........."""Use.HTT
6a240 50 20 70 72 6f 74 6f 63 6f 6c 2e 22 22 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 P.protocol.""".........return.se
6a260 6c 66 2e 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 5f 68 74 74 70 28 68 74 74 70 2e 63 6c 69 65 6e lf._open_generic_http(http.clien
6a280 74 2e 48 54 54 50 43 6f 6e 6e 65 63 74 69 6f 6e 2c 20 75 72 6c 2c 20 64 61 74 61 29 0a 0a 20 20 t.HTTPConnection,.url,.data)....
6a2a0 20 20 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 ..def.http_error(self,.url,.fp,.
6a2c0 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 64 61 74 61 3d 4e errcode,.errmsg,.headers,.data=N
6a2e0 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 48 61 6e 64 6c 65 20 68 74 74 70 20 65 72 72 one):........."""Handle.http.err
6a300 6f 72 73 2e 0a 0a 20 20 20 20 20 20 20 20 44 65 72 69 76 65 64 20 63 6c 61 73 73 20 63 61 6e 20 ors...........Derived.class.can.
6a320 6f 76 65 72 72 69 64 65 20 74 68 69 73 2c 20 6f 72 20 70 72 6f 76 69 64 65 20 73 70 65 63 69 66 override.this,.or.provide.specif
6a340 69 63 20 68 61 6e 64 6c 65 72 73 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 64 20 68 74 74 70 5f 65 ic.handlers.........named.http_e
6a360 72 72 6f 72 5f 44 44 44 20 77 68 65 72 65 20 44 44 44 20 69 73 20 74 68 65 20 33 2d 64 69 67 69 rror_DDD.where.DDD.is.the.3-digi
6a380 74 20 65 72 72 6f 72 20 63 6f 64 65 2e 22 22 22 0a 20 20 20 20 20 20 20 20 23 20 46 69 72 73 74 t.error.code.""".........#.First
6a3a0 20 63 68 65 63 6b 20 69 66 20 74 68 65 72 65 27 73 20 61 20 73 70 65 63 69 66 69 63 20 68 61 6e .check.if.there's.a.specific.han
6a3c0 64 6c 65 72 20 66 6f 72 20 74 68 69 73 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 dler.for.this.error.........name
6a3e0 20 3d 20 27 68 74 74 70 5f 65 72 72 6f 72 5f 25 64 27 20 25 20 65 72 72 63 6f 64 65 0a 20 20 20 .=.'http_error_%d'.%.errcode....
6a400 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20 20 .....if.hasattr(self,.name):....
6a420 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 73 65 6c 66 2c 20 .........method.=.getattr(self,.
6a440 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 20 69 73 20 4e 6f 6e name).............if.data.is.Non
6a460 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 20 6d 65 74 68 e:.................result.=.meth
6a480 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 2c 20 68 65 61 od(url,.fp,.errcode,.errmsg,.hea
6a4a0 64 65 72 73 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 ders).............else:.........
6a4c0 20 20 20 20 20 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 ........result.=.method(url,.fp,
6a4e0 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 64 61 74 61 29 .errcode,.errmsg,.headers,.data)
6a500 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 73 75 6c 74 3a 20 72 65 74 75 72 6e 20 72 .............if.result:.return.r
6a520 65 73 75 6c 74 0a 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 esult.........return.self.http_e
6a540 72 72 6f 72 5f 64 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 rror_default(url,.fp,.errcode,.e
6a560 72 72 6d 73 67 2c 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 rrmsg,.headers)......def.http_er
6a580 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 20 65 72 72 63 6f ror_default(self,.url,.fp,.errco
6a5a0 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 22 22 de,.errmsg,.headers):.........""
6a5c0 22 44 65 66 61 75 6c 74 20 65 72 72 6f 72 20 68 61 6e 64 6c 65 72 3a 20 63 6c 6f 73 65 20 74 68 "Default.error.handler:.close.th
6a5e0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 20 72 61 69 73 65 20 4f 53 45 72 72 6f 72 2e 22 e.connection.and.raise.OSError."
6a600 22 22 0a 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 72 61 "".........fp.close().........ra
6a620 69 73 65 20 48 54 54 50 45 72 72 6f 72 28 75 72 6c 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 6d ise.HTTPError(url,.errcode,.errm
6a640 73 67 2c 20 68 65 61 64 65 72 73 2c 20 4e 6f 6e 65 29 0a 0a 20 20 20 20 69 66 20 5f 68 61 76 65 sg,.headers,.None)......if._have
6a660 5f 73 73 6c 3a 0a 20 20 20 20 20 20 20 20 64 65 66 20 5f 68 74 74 70 73 5f 63 6f 6e 6e 65 63 74 _ssl:.........def._https_connect
6a680 69 6f 6e 28 73 65 6c 66 2c 20 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ion(self,.host):.............ret
6a6a0 75 72 6e 20 68 74 74 70 2e 63 6c 69 65 6e 74 2e 48 54 54 50 53 43 6f 6e 6e 65 63 74 69 6f 6e 28 urn.http.client.HTTPSConnection(
6a6c0 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 20 20 20 20 host,...........................
6a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 5f 66 69 6c 65 3d 73 65 6c 66 2e 6b .................key_file=self.k
6a700 65 79 5f 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 20 ey_file,........................
6a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 65 72 74 5f 66 69 6c 65 3d 73 65 ....................cert_file=se
6a740 6c 66 2e 63 65 72 74 5f 66 69 6c 65 29 0a 0a 20 20 20 20 20 20 20 20 64 65 66 20 6f 70 65 6e 5f lf.cert_file)..........def.open_
6a760 68 74 74 70 73 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 20 https(self,.url,.data=None):....
6a780 20 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 48 54 54 50 53 20 70 72 6f 74 6f 63 6f 6c 2e 22 ........."""Use.HTTPS.protocol."
6a7a0 22 22 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 6f 70 65 6e "".............return.self._open
6a7c0 5f 67 65 6e 65 72 69 63 5f 68 74 74 70 28 73 65 6c 66 2e 5f 68 74 74 70 73 5f 63 6f 6e 6e 65 63 _generic_http(self._https_connec
6a7e0 74 69 6f 6e 2c 20 75 72 6c 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 6f 70 65 6e 5f 66 tion,.url,.data)......def.open_f
6a800 69 6c 65 28 73 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 ile(self,.url):........."""Use.l
6a820 6f 63 61 6c 20 66 69 6c 65 20 6f 72 20 46 54 50 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 66 6f ocal.file.or.FTP.depending.on.fo
6a840 72 6d 20 6f 66 20 55 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 rm.of.URL.""".........if.not.isi
6a860 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 72 nstance(url,.str):.............r
6a880 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 66 69 6c 65 20 65 72 72 6f 72 3a 20 70 72 6f 78 79 aise.URLError('file.error:.proxy
6a8a0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 66 69 6c 65 20 70 72 6f 74 6f 63 6f 6c 20 63 75 72 72 65 .support.for.file.protocol.curre
6a8c0 6e 74 6c 79 20 6e 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 ntly.not.implemented').........i
6a8e0 66 20 75 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 f.url[:2].==.'//'.and.url[2:3].!
6a900 3d 20 27 2f 27 20 61 6e 64 20 75 72 6c 5b 32 3a 31 32 5d 2e 6c 6f 77 65 72 28 29 20 21 3d 20 27 =.'/'.and.url[2:12].lower().!=.'
6a920 6c 6f 63 61 6c 68 6f 73 74 2f 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 localhost/':.............raise.V
6a940 61 6c 75 65 45 72 72 6f 72 28 22 66 69 6c 65 3a 2f 2f 20 73 63 68 65 6d 65 20 69 73 20 73 75 70 alueError("file://.scheme.is.sup
6a960 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 20 20 20 20 20 ported.only.on.localhost")......
6a980 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 66 ...else:.............return.self
6a9a0 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 28 75 72 6c 29 0a 0a 20 20 20 20 64 65 66 20 6f .open_local_file(url)......def.o
6a9c0 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 28 73 65 6c 66 2c 20 75 72 6c 29 3a 0a 20 20 20 20 20 pen_local_file(self,.url):......
6a9e0 20 20 20 22 22 22 55 73 65 20 6c 6f 63 61 6c 20 66 69 6c 65 2e 22 22 22 0a 20 20 20 20 20 20 20 ..."""Use.local.file."""........
6aa00 20 69 6d 70 6f 72 74 20 65 6d 61 69 6c 2e 75 74 69 6c 73 0a 20 20 20 20 20 20 20 20 69 6d 70 6f .import.email.utils.........impo
6aa20 72 74 20 6d 69 6d 65 74 79 70 65 73 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 66 69 6c 65 20 rt.mimetypes.........host,.file.
6aa40 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 6e =._splithost(url).........localn
6aa60 61 6d 65 20 3d 20 75 72 6c 32 70 61 74 68 6e 61 6d 65 28 66 69 6c 65 29 0a 20 20 20 20 20 20 20 ame.=.url2pathname(file)........
6aa80 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 73 20 3d 20 6f 73 2e 73 74 61 .try:.............stats.=.os.sta
6aaa0 74 28 6c 6f 63 61 6c 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 t(localname).........except.OSEr
6aac0 72 6f 72 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 ror.as.e:.............raise.URLE
6aae0 72 72 6f 72 28 65 2e 73 74 72 65 72 72 6f 72 2c 20 65 2e 66 69 6c 65 6e 61 6d 65 29 0a 20 20 20 rror(e.strerror,.e.filename)....
6ab00 20 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 .....size.=.stats.st_size.......
6ab20 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 61 74 64 ..modified.=.email.utils.formatd
6ab40 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 75 65 29 ate(stats.st_mtime,.usegmt=True)
6ab60 0a 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 67 75 65 73 73 .........mtype.=.mimetypes.guess
6ab80 5f 74 79 70 65 28 75 72 6c 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 _type(url)[0].........headers.=.
6aba0 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 0a 20 20 20 20 20 email.message_from_string(......
6abc0 20 20 20 20 20 20 20 27 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 25 73 5c 6e 43 6f 6e 74 65 6e .......'Content-Type:.%s\nConten
6abe0 74 2d 4c 65 6e 67 74 68 3a 20 25 64 5c 6e 4c 61 73 74 2d 6d 6f 64 69 66 69 65 64 3a 20 25 73 5c t-Length:.%d\nLast-modified:.%s\
6ac00 6e 27 20 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 74 79 70 65 20 6f 72 20 27 74 65 78 74 n'.%.............(mtype.or.'text
6ac20 2f 70 6c 61 69 6e 27 2c 20 73 69 7a 65 2c 20 6d 6f 64 69 66 69 65 64 29 29 0a 20 20 20 20 20 20 /plain',.size,.modified)).......
6ac40 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 75 72 6c 66 69 ..if.not.host:.............urlfi
6ac60 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 5b 3a 31 le.=.file.............if.file[:1
6ac80 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 66 69 6c ].==.'/':.................urlfil
6aca0 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 20 20 20 e.=.'file://'.+.file............
6acc0 20 72 65 74 75 72 6e 20 61 64 64 69 6e 66 6f 75 72 6c 28 6f 70 65 6e 28 6c 6f 63 61 6c 6e 61 6d .return.addinfourl(open(localnam
6ace0 65 2c 20 27 72 62 27 29 2c 20 68 65 61 64 65 72 73 2c 20 75 72 6c 66 69 6c 65 29 0a 20 20 20 20 e,.'rb'),.headers,.urlfile).....
6ad00 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 20 3d 20 5f 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 ....host,.port.=._splitport(host
6ad20 29 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 ).........if.(not.port..........
6ad40 20 20 61 6e 64 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 68 6f 73 74 29 ..and.socket.gethostbyname(host)
6ad60 20 69 6e 20 28 28 6c 6f 63 61 6c 68 6f 73 74 28 29 2c 29 20 2b 20 74 68 69 73 68 6f 73 74 28 29 .in.((localhost(),).+.thishost()
6ad80 29 29 3a 0a 20 20 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 )):.............urlfile.=.file..
6ada0 20 20 20 20 20 20 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 ...........if.file[:1].==.'/':..
6adc0 20 20 20 20 20 20 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 ...............urlfile.=.'file:/
6ade0 2f 27 20 2b 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 69 6c 65 5b /'.+.file.............elif.file[
6ae00 3a 32 5d 20 3d 3d 20 27 2e 2f 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 :2].==.'./':.................rai
6ae20 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 6c 6f 63 61 6c 20 66 69 6c 65 20 75 72 6c 20 6d 61 se.ValueError("local.file.url.ma
6ae40 79 20 73 74 61 72 74 20 77 69 74 68 20 2f 20 6f 72 20 66 69 6c 65 3a 2e 20 55 6e 6b 6e 6f 77 6e y.start.with./.or.file:..Unknown
6ae60 20 75 72 6c 20 6f 66 20 74 79 70 65 3a 20 25 73 22 20 25 20 75 72 6c 29 0a 20 20 20 20 20 20 20 .url.of.type:.%s".%.url)........
6ae80 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 6e 28 6c 6f 63 61 .....return.addinfourl(open(loca
6aea0 6c 6e 61 6d 65 2c 20 27 72 62 27 29 2c 20 68 65 61 64 65 72 73 2c 20 75 72 6c 66 69 6c 65 29 0a lname,.'rb'),.headers,.urlfile).
6aec0 20 20 20 20 20 20 20 20 72 61 69 73 65 20 55 52 4c 45 72 72 6f 72 28 27 6c 6f 63 61 6c 20 66 69 ........raise.URLError('local.fi
6aee0 6c 65 20 65 72 72 6f 72 3a 20 6e 6f 74 20 6f 6e 20 6c 6f 63 61 6c 20 68 6f 73 74 27 29 0a 0a 20 le.error:.not.on.local.host')...
6af00 20 20 20 64 65 66 20 6f 70 65 6e 5f 66 74 70 28 73 65 6c 66 2c 20 75 72 6c 29 3a 0a 20 20 20 20 ...def.open_ftp(self,.url):.....
6af20 20 20 20 20 22 22 22 55 73 65 20 46 54 50 20 70 72 6f 74 6f 63 6f 6c 2e 22 22 22 0a 20 20 20 20 ...."""Use.FTP.protocol.""".....
6af40 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 29 3a ....if.not.isinstance(url,.str):
6af60 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 74 70 .............raise.URLError('ftp
6af80 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 74 70 20 70 72 .error:.proxy.support.for.ftp.pr
6afa0 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 6e 74 65 64 otocol.currently.not.implemented
6afc0 27 29 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 20 ').........import.mimetypes.....
6afe0 20 20 20 20 68 6f 73 74 2c 20 70 61 74 68 20 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 ....host,.path.=._splithost(url)
6b000 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 68 6f 73 74 3a 20 72 61 69 73 65 20 55 52 4c 45 .........if.not.host:.raise.URLE
6b020 72 72 6f 72 28 27 66 74 70 20 65 72 72 6f 72 3a 20 6e 6f 20 68 6f 73 74 20 67 69 76 65 6e 27 29 rror('ftp.error:.no.host.given')
6b040 0a 20 20 20 20 20 20 20 20 68 6f 73 74 2c 20 70 6f 72 74 20 3d 20 5f 73 70 6c 69 74 70 6f 72 74 .........host,.port.=._splitport
6b060 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 75 73 65 72 2c 20 68 6f 73 74 20 3d 20 5f 73 70 6c (host).........user,.host.=._spl
6b080 69 74 75 73 65 72 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 3a 20 75 73 ituser(host).........if.user:.us
6b0a0 65 72 2c 20 70 61 73 73 77 64 20 3d 20 5f 73 70 6c 69 74 70 61 73 73 77 64 28 75 73 65 72 29 0a er,.passwd.=._splitpasswd(user).
6b0c0 20 20 20 20 20 20 20 20 65 6c 73 65 3a 20 70 61 73 73 77 64 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 ........else:.passwd.=.None.....
6b0e0 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)........
6b100 20 75 73 65 72 20 3d 20 75 6e 71 75 6f 74 65 28 75 73 65 72 20 6f 72 20 27 27 29 0a 20 20 20 20 .user.=.unquote(user.or.'').....
6b120 20 20 20 20 70 61 73 73 77 64 20 3d 20 75 6e 71 75 6f 74 65 28 70 61 73 73 77 64 20 6f 72 20 27 ....passwd.=.unquote(passwd.or.'
6b140 27 29 0a 20 20 20 20 20 20 20 20 68 6f 73 74 20 3d 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 ').........host.=.socket.gethost
6b160 62 79 6e 61 6d 65 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 70 6f 72 74 byname(host).........if.not.port
6b180 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 66 74 70 6c 69 62 0a 20 20 20 20 :.............import.ftplib.....
6b1a0 20 20 20 20 20 20 20 20 70 6f 72 74 20 3d 20 66 74 70 6c 69 62 2e 46 54 50 5f 50 4f 52 54 0a 20 ........port.=.ftplib.FTP_PORT..
6b1c0 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 6f 72 74 20 3d 20 .......else:.............port.=.
6b1e0 69 6e 74 28 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 70 61 74 68 2c 20 61 74 74 72 73 20 3d 20 int(port).........path,.attrs.=.
6b200 5f 73 70 6c 69 74 61 74 74 72 28 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 70 61 74 68 20 3d 20 _splitattr(path).........path.=.
6b220 75 6e 71 75 6f 74 65 28 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 64 69 72 73 20 3d 20 70 61 74 unquote(path).........dirs.=.pat
6b240 68 2e 73 70 6c 69 74 28 27 2f 27 29 0a 20 20 20 20 20 20 20 20 64 69 72 73 2c 20 66 69 6c 65 20 h.split('/').........dirs,.file.
6b260 3d 20 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 =.dirs[:-1],.dirs[-1].........if
6b280 20 64 69 72 73 20 61 6e 64 20 6e 6f 74 20 64 69 72 73 5b 30 5d 3a 20 64 69 72 73 20 3d 20 64 69 .dirs.and.not.dirs[0]:.dirs.=.di
6b2a0 72 73 5b 31 3a 5d 0a 20 20 20 20 20 20 20 20 69 66 20 64 69 72 73 20 61 6e 64 20 6e 6f 74 20 64 rs[1:].........if.dirs.and.not.d
6b2c0 69 72 73 5b 30 5d 3a 20 64 69 72 73 5b 30 5d 20 3d 20 27 2f 27 0a 20 20 20 20 20 20 20 20 6b 65 irs[0]:.dirs[0].=.'/'.........ke
6b2e0 79 20 3d 20 75 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 y.=.user,.host,.port,.'/'.join(d
6b300 69 72 73 29 0a 20 20 20 20 20 20 20 20 23 20 58 58 58 20 74 68 72 65 61 64 20 75 6e 73 61 66 65 irs).........#.XXX.thread.unsafe
6b320 21 0a 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 73 65 6c 66 2e 66 74 70 63 61 63 68 65 29 20 !.........if.len(self.ftpcache).
6b340 3e 20 4d 41 58 46 54 50 43 41 43 48 45 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 50 72 75 >.MAXFTPCACHE:.............#.Pru
6b360 6e 65 20 74 68 65 20 63 61 63 68 65 2c 20 72 61 74 68 65 72 20 61 72 62 69 74 72 61 72 69 6c 79 ne.the.cache,.rather.arbitrarily
6b380 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 20 69 6e 20 6c 69 73 74 28 73 65 6c 66 2e .............for.k.in.list(self.
6b3a0 66 74 70 63 61 63 68 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 20 ftpcache):.................if.k.
6b3c0 21 3d 20 6b 65 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 20 3d 20 !=.key:.....................v.=.
6b3e0 73 65 6c 66 2e 66 74 70 63 61 63 68 65 5b 6b 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 self.ftpcache[k]................
6b400 20 20 20 20 20 64 65 6c 20 73 65 6c 66 2e 66 74 70 63 61 63 68 65 5b 6b 5d 0a 20 20 20 20 20 20 .....del.self.ftpcache[k].......
6b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 20 20 20 20 ..............v.close().........
6b440 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 73 try:.............if.key.not.in.s
6b460 65 6c 66 2e 66 74 70 63 61 63 68 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 elf.ftpcache:.................se
6b480 6c 66 2e 66 74 70 63 61 63 68 65 5b 6b 65 79 5d 20 3d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 lf.ftpcache[key].=.\............
6b4a0 20 20 20 20 20 20 20 20 20 66 74 70 77 72 61 70 70 65 72 28 75 73 65 72 2c 20 70 61 73 73 77 64 .........ftpwrapper(user,.passwd
6b4c0 2c 20 68 6f 73 74 2c 20 70 6f 72 74 2c 20 64 69 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ,.host,.port,.dirs).............
6b4e0 69 66 20 6e 6f 74 20 66 69 6c 65 3a 20 74 79 70 65 20 3d 20 27 44 27 0a 20 20 20 20 20 20 20 20 if.not.file:.type.=.'D'.........
6b500 20 20 20 20 65 6c 73 65 3a 20 74 79 70 65 20 3d 20 27 49 27 0a 20 20 20 20 20 20 20 20 20 20 20 ....else:.type.=.'I'............
6b520 20 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 .for.attr.in.attrs:.............
6b540 20 20 20 20 61 74 74 72 2c 20 76 61 6c 75 65 20 3d 20 5f 73 70 6c 69 74 76 61 6c 75 65 28 61 74 ....attr,.value.=._splitvalue(at
6b560 74 72 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 tr).................if.attr.lowe
6b580 72 28 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 r().==.'type'.and.\.............
6b5a0 20 20 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 .......value.in.('a',.'A',.'i',.
6b5c0 27 49 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 'I',.'d',.'D'):.................
6b5e0 20 20 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 ....type.=.value.upper()........
6b600 20 20 20 20 20 28 66 70 2c 20 72 65 74 72 6c 65 6e 29 20 3d 20 73 65 6c 66 2e 66 74 70 63 61 63 .....(fp,.retrlen).=.self.ftpcac
6b620 68 65 5b 6b 65 79 5d 2e 72 65 74 72 66 69 6c 65 28 66 69 6c 65 2c 20 74 79 70 65 29 0a 20 20 20 he[key].retrfile(file,.type)....
6b640 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 67 75 65 73 73 .........mtype.=.mimetypes.guess
6b660 5f 74 79 70 65 28 22 66 74 70 3a 22 20 2b 20 75 72 6c 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 _type("ftp:".+.url)[0]..........
6b680 20 20 20 68 65 61 64 65 72 73 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d ...headers.=."".............if.m
6b6a0 74 79 70 65 3a 0a 20 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 type:.................headers.+=
6b6c0 20 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 25 73 5c 6e 22 20 25 20 6d 74 79 70 65 0a 20 20 ."Content-Type:.%s\n".%.mtype...
6b6e0 20 20 20 20 20 20 20 20 20 20 69 66 20 72 65 74 72 6c 65 6e 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 ..........if.retrlen.is.not.None
6b700 20 61 6e 64 20 72 65 74 72 6c 65 6e 20 3e 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .and.retrlen.>=.0:..............
6b720 20 20 20 68 65 61 64 65 72 73 20 2b 3d 20 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 25 ...headers.+=."Content-Length:.%
6b740 64 5c 6e 22 20 25 20 72 65 74 72 6c 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 d\n".%.retrlen.............heade
6b760 72 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 68 rs.=.email.message_from_string(h
6b780 65 61 64 65 72 73 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 eaders).............return.addin
6b7a0 66 6f 75 72 6c 28 66 70 2c 20 68 65 61 64 65 72 73 2c 20 22 66 74 70 3a 22 20 2b 20 75 72 6c 29 fourl(fp,.headers,."ftp:".+.url)
6b7c0 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 66 74 70 65 72 72 6f 72 73 28 29 20 61 73 20 65 .........except.ftperrors().as.e
6b7e0 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 27 xp:.............raise.URLError('
6b800 66 74 70 20 65 72 72 6f 72 20 25 72 27 20 25 20 65 78 70 29 2e 77 69 74 68 5f 74 72 61 63 65 62 ftp.error.%r'.%.exp).with_traceb
6b820 61 63 6b 28 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 ack(sys.exc_info()[2])......def.
6b840 6f 70 65 6e 5f 64 61 74 61 28 73 65 6c 66 2c 20 75 72 6c 2c 20 64 61 74 61 3d 4e 6f 6e 65 29 3a open_data(self,.url,.data=None):
6b860 0a 20 20 20 20 20 20 20 20 22 22 22 55 73 65 20 22 64 61 74 61 22 20 55 52 4c 2e 22 22 22 0a 20 ........."""Use."data".URL."""..
6b880 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 75 72 6c 2c 20 73 74 .......if.not.isinstance(url,.st
6b8a0 72 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 r):.............raise.URLError('
6b8c0 64 61 74 61 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 64 61 data.error:.proxy.support.for.da
6b8e0 74 61 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 ta.protocol.currently.not.implem
6b900 65 6e 74 65 64 27 29 0a 20 20 20 20 20 20 20 20 23 20 69 67 6e 6f 72 65 20 50 4f 53 54 65 64 20 ented').........#.ignore.POSTed.
6b920 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 20 data.........#.........#.syntax.
6b940 6f 66 20 64 61 74 61 20 55 52 4c 73 3a 0a 20 20 20 20 20 20 20 20 23 20 64 61 74 61 75 72 6c 20 of.data.URLs:.........#.dataurl.
6b960 20 20 3a 3d 20 22 64 61 74 61 3a 22 20 5b 20 6d 65 64 69 61 74 79 70 65 20 5d 20 5b 20 22 3b 62 ..:=."data:".[.mediatype.].[.";b
6b980 61 73 65 36 34 22 20 5d 20 22 2c 22 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 23 20 6d 65 64 69 ase64".].",".data.........#.medi
6b9a0 61 74 79 70 65 20 3a 3d 20 5b 20 74 79 70 65 20 22 2f 22 20 73 75 62 74 79 70 65 20 5d 20 2a 28 atype.:=.[.type."/".subtype.].*(
6b9c0 20 22 3b 22 20 70 61 72 61 6d 65 74 65 72 20 29 0a 20 20 20 20 20 20 20 20 23 20 64 61 74 61 20 .";".parameter.).........#.data.
6b9e0 20 20 20 20 20 3a 3d 20 2a 75 72 6c 63 68 61 72 0a 20 20 20 20 20 20 20 20 23 20 70 61 72 61 6d .....:=.*urlchar.........#.param
6ba00 65 74 65 72 20 3a 3d 20 61 74 74 72 69 62 75 74 65 20 22 3d 22 20 76 61 6c 75 65 0a 20 20 20 20 eter.:=.attribute."=".value.....
6ba20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 74 79 70 65 2c 20 64 61 74 61 ....try:.............[type,.data
6ba40 5d 20 3d 20 75 72 6c 2e 73 70 6c 69 74 28 27 2c 27 2c 20 31 29 0a 20 20 20 20 20 20 20 20 65 78 ].=.url.split(',',.1).........ex
6ba60 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 72 61 69 cept.ValueError:.............rai
6ba80 73 65 20 4f 53 45 72 72 6f 72 28 27 64 61 74 61 20 65 72 72 6f 72 27 2c 20 27 62 61 64 20 64 61 se.OSError('data.error',.'bad.da
6baa0 74 61 20 55 52 4c 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 74 79 70 65 3a 0a 20 20 ta.URL').........if.not.type:...
6bac0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d 20 27 74 65 78 74 2f 70 6c 61 69 6e 3b 63 68 61 ..........type.=.'text/plain;cha
6bae0 72 73 65 74 3d 55 53 2d 41 53 43 49 49 27 0a 20 20 20 20 20 20 20 20 73 65 6d 69 20 3d 20 74 79 rset=US-ASCII'.........semi.=.ty
6bb00 70 65 2e 72 66 69 6e 64 28 27 3b 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6d 69 20 3e 3d pe.rfind(';').........if.semi.>=
6bb20 20 30 20 61 6e 64 20 27 3d 27 20 6e 6f 74 20 69 6e 20 74 79 70 65 5b 73 65 6d 69 3a 5d 3a 0a 20 .0.and.'='.not.in.type[semi:]:..
6bb40 20 20 20 20 20 20 20 20 20 20 20 65 6e 63 6f 64 69 6e 67 20 3d 20 74 79 70 65 5b 73 65 6d 69 2b ...........encoding.=.type[semi+
6bb60 31 3a 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d 20 74 79 70 65 5b 3a 73 65 6d 1:].............type.=.type[:sem
6bb80 69 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 20 65 6e 63 i].........else:.............enc
6bba0 6f 64 69 6e 67 20 3d 20 27 27 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 5b 5d 0a 20 20 20 20 oding.=.''.........msg.=.[].....
6bbc0 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 44 61 74 65 3a 20 25 73 27 25 74 69 6d 65 2e 73 ....msg.append('Date:.%s'%time.s
6bbe0 74 72 66 74 69 6d 65 28 27 25 61 2c 20 25 64 20 25 62 20 25 59 20 25 48 3a 25 4d 3a 25 53 20 47 trftime('%a,.%d.%b.%Y.%H:%M:%S.G
6bc00 4d 54 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 MT',............................
6bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 2e 67 6d 74 69 6d 65 28 74 69 6d .................time.gmtime(tim
6bc40 65 2e 74 69 6d 65 28 29 29 29 29 0a 20 20 20 20 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 e.time()))).........msg.append('
6bc60 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 25 73 27 20 25 20 74 79 70 65 29 0a 20 20 20 20 20 20 Content-type:.%s'.%.type).......
6bc80 20 20 69 66 20 65 6e 63 6f 64 69 6e 67 20 3d 3d 20 27 62 61 73 65 36 34 27 3a 0a 20 20 20 20 20 ..if.encoding.==.'base64':......
6bca0 20 20 20 20 20 20 20 23 20 58 58 58 20 69 73 20 74 68 69 73 20 65 6e 63 6f 64 69 6e 67 2f 64 65 .......#.XXX.is.this.encoding/de
6bcc0 63 6f 64 69 6e 67 20 6f 6b 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 62 61 coding.ok?.............data.=.ba
6bce0 73 65 36 34 2e 64 65 63 6f 64 65 62 79 74 65 73 28 64 61 74 61 2e 65 6e 63 6f 64 65 28 27 61 73 se64.decodebytes(data.encode('as
6bd00 63 69 69 27 29 29 2e 64 65 63 6f 64 65 28 27 6c 61 74 69 6e 2d 31 27 29 0a 20 20 20 20 20 20 20 cii')).decode('latin-1')........
6bd20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 75 6e 71 75 6f 74 .else:.............data.=.unquot
6bd40 65 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 43 6f 6e 74 e(data).........msg.append('Cont
6bd60 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 25 64 27 20 25 20 6c 65 6e 28 64 61 74 61 29 29 0a 20 20 20 ent-Length:.%d'.%.len(data))....
6bd80 20 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 27 29 0a 20 20 20 20 20 20 20 20 6d 73 67 2e .....msg.append('').........msg.
6bda0 61 70 70 65 6e 64 28 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 27 5c 6e 27 2e append(data).........msg.=.'\n'.
6bdc0 6a 6f 69 6e 28 6d 73 67 29 0a 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 20 3d 20 65 6d 61 69 join(msg).........headers.=.emai
6bde0 6c 2e 6d 65 73 73 61 67 65 5f 66 72 6f 6d 5f 73 74 72 69 6e 67 28 6d 73 67 29 0a 20 20 20 20 20 l.message_from_string(msg)......
6be00 20 20 20 66 20 3d 20 69 6f 2e 53 74 72 69 6e 67 49 4f 28 6d 73 67 29 0a 20 20 20 20 20 20 20 20 ...f.=.io.StringIO(msg).........
6be20 23 66 2e 66 69 6c 65 6e 6f 20 3d 20 4e 6f 6e 65 20 20 20 20 20 23 20 6e 65 65 64 65 64 20 66 6f #f.fileno.=.None.....#.needed.fo
6be40 72 20 61 64 64 69 6e 66 6f 75 72 6c 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 64 64 69 r.addinfourl.........return.addi
6be60 6e 66 6f 75 72 6c 28 66 2c 20 68 65 61 64 65 72 73 2c 20 75 72 6c 29 0a 0a 0a 63 6c 61 73 73 20 nfourl(f,.headers,.url)...class.
6be80 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 28 55 52 4c 6f 70 65 6e 65 72 29 3a 0a 20 20 20 20 22 FancyURLopener(URLopener):....."
6bea0 22 22 44 65 72 69 76 65 64 20 63 6c 61 73 73 20 77 69 74 68 20 68 61 6e 64 6c 65 72 73 20 66 6f ""Derived.class.with.handlers.fo
6bec0 72 20 65 72 72 6f 72 73 20 77 65 20 63 61 6e 20 68 61 6e 64 6c 65 20 28 70 65 72 68 61 70 73 29 r.errors.we.can.handle.(perhaps)
6bee0 2e 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 2a 61 72 ."""......def.__init__(self,.*ar
6bf00 67 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 55 52 4c 6f 70 65 6e 65 72 gs,.**kwargs):.........URLopener
6bf20 2e 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 72 67 73 29 .__init__(self,.*args,.**kwargs)
6bf40 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 75 74 68 5f 63 61 63 68 65 20 3d 20 7b 7d 0a 20 20 .........self.auth_cache.=.{}...
6bf60 20 20 20 20 20 20 73 65 6c 66 2e 74 72 69 65 73 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c ......self.tries.=.0.........sel
6bf80 66 2e 6d 61 78 74 72 69 65 73 20 3d 20 31 30 0a 0a 20 20 20 20 64 65 66 20 68 74 74 70 5f 65 72 f.maxtries.=.10......def.http_er
6bfa0 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 20 65 72 72 63 6f ror_default(self,.url,.fp,.errco
6bfc0 64 65 2c 20 65 72 72 6d 73 67 2c 20 68 65 61 64 65 72 73 29 3a 0a 20 20 20 20 20 20 20 20 22 22 de,.errmsg,.headers):.........""
6bfe0 22 44 65 66 61 75 6c 74 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 2d 2d 20 64 6f 6e 27 74 "Default.error.handling.--.don't
6c000 20 72 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 22 22 22 0a 20 20 20 20 20 20 20 20 .raise.an.exception.""".........
6c020 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 22 return.addinfourl(fp,.headers,."
6c040 68 74 74 70 3a 22 20 2b 20 75 72 6c 2c 20 65 72 72 63 6f 64 65 29 0a 0a 20 20 20 20 64 65 66 20 http:".+.url,.errcode)......def.
6c060 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 2c 20 65 72 http_error_302(self,.url,.fp,.er
6c080 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 6e rcode,.errmsg,.headers,.data=Non
6c0a0 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 20 33 30 32 20 2d 2d 20 72 65 6c 6f e):........."""Error.302.--.relo
6c0c0 63 61 74 65 64 20 28 74 65 6d 70 6f 72 61 72 69 6c 79 29 2e 22 22 22 0a 20 20 20 20 20 20 20 20 cated.(temporarily).""".........
6c0e0 73 65 6c 66 2e 74 72 69 65 73 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 self.tries.+=.1.........try:....
6c100 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 6d 61 78 74 72 69 65 73 20 61 6e 64 20 73 65 .........if.self.maxtries.and.se
6c120 6c 66 2e 74 72 69 65 73 20 3e 3d 20 73 65 6c 66 2e 6d 61 78 74 72 69 65 73 3a 0a 20 20 20 20 20 lf.tries.>=.self.maxtries:......
6c140 20 20 20 20 20 20 20 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 73 65 6c 66 2c 20 22 68 74 74 ...........if.hasattr(self,."htt
6c160 70 5f 65 72 72 6f 72 5f 35 30 30 22 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p_error_500"):..................
6c180 20 20 20 6d 65 74 68 20 3d 20 73 65 6c 66 2e 68 74 74 70 5f 65 72 72 6f 72 5f 35 30 30 0a 20 20 ...meth.=.self.http_error_500...
6c1a0 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 20 20 ..............else:.............
6c1c0 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 72 5f 64 ........meth.=.self.http_error_d
6c1e0 65 66 61 75 6c 74 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 65 efault.................return.me
6c200 74 68 28 75 72 6c 2c 20 66 70 2c 20 35 30 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 th(url,.fp,.500,................
6c220 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 74 65 72 6e 61 6c 20 53 65 72 76 65 72 20 45 72 ............."Internal.Server.Er
6c240 72 6f 72 3a 20 52 65 64 69 72 65 63 74 20 52 65 63 75 72 73 69 6f 6e 22 2c 0a 20 20 20 20 20 20 ror:.Redirect.Recursion",.......
6c260 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 29 0a 20 ......................headers)..
6c280 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 65 6c 66 2e 72 65 64 69 72 65 63 ...........result.=.self.redirec
6c2a0 74 5f 69 6e 74 65 72 6e 61 6c 28 75 72 6c 2c 20 66 70 2c 20 65 72 72 63 6f 64 65 2c 20 65 72 72 t_internal(url,.fp,.errcode,.err
6c2c0 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 20 20 20 20 20 20 20 msg,............................
6c2e0 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 64 61 74 61 29 0a .................headers,.data).
6c300 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 ............return.result.......
6c320 20 20 66 69 6e 61 6c 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 72 69 65 ..finally:.............self.trie
6c340 73 20 3d 20 30 0a 0a 20 20 20 20 64 65 66 20 72 65 64 69 72 65 63 74 5f 69 6e 74 65 72 6e 61 6c s.=.0......def.redirect_internal
6c360 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,
6c380 20 68 65 61 64 65 72 73 2c 20 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 27 6c 6f 63 .headers,.data):.........if.'loc
6c3a0 61 74 69 6f 6e 27 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ation'.in.headers:.............n
6c3c0 65 77 75 72 6c 20 3d 20 68 65 61 64 65 72 73 5b 27 6c 6f 63 61 74 69 6f 6e 27 5d 0a 20 20 20 20 ewurl.=.headers['location'].....
6c3e0 20 20 20 20 65 6c 69 66 20 27 75 72 69 27 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 ....elif.'uri'.in.headers:......
6c400 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 75 72 69 27 5d 0a 20 .......newurl.=.headers['uri']..
6c420 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 0a .......else:.............return.
6c440 20 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 49 6e ........fp.close()..........#.In
6c460 20 63 61 73 65 20 74 68 65 20 73 65 72 76 65 72 20 73 65 6e 74 20 61 20 72 65 6c 61 74 69 76 65 .case.the.server.sent.a.relative
6c480 20 55 52 4c 2c 20 6a 6f 69 6e 20 77 69 74 68 20 6f 72 69 67 69 6e 61 6c 3a 0a 20 20 20 20 20 20 .URL,.join.with.original:.......
6c4a0 20 20 6e 65 77 75 72 6c 20 3d 20 75 72 6c 6a 6f 69 6e 28 73 65 6c 66 2e 74 79 70 65 20 2b 20 22 ..newurl.=.urljoin(self.type.+."
6c4c0 3a 22 20 2b 20 75 72 6c 2c 20 6e 65 77 75 72 6c 29 0a 0a 20 20 20 20 20 20 20 20 75 72 6c 70 61 :".+.url,.newurl)..........urlpa
6c4e0 72 74 73 20 3d 20 75 72 6c 70 61 72 73 65 28 6e 65 77 75 72 6c 29 0a 0a 20 20 20 20 20 20 20 20 rts.=.urlparse(newurl)..........
6c500 23 20 46 6f 72 20 73 65 63 75 72 69 74 79 20 72 65 61 73 6f 6e 73 2c 20 77 65 20 64 6f 6e 27 74 #.For.security.reasons,.we.don't
6c520 20 61 6c 6c 6f 77 20 72 65 64 69 72 65 63 74 69 6f 6e 20 74 6f 20 61 6e 79 74 68 69 6e 67 20 6f .allow.redirection.to.anything.o
6c540 74 68 65 72 0a 20 20 20 20 20 20 20 20 23 20 74 68 61 6e 20 68 74 74 70 2c 20 68 74 74 70 73 20 ther.........#.than.http,.https.
6c560 61 6e 64 20 66 74 70 2e 0a 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 61 72 65 20 75 73 69 6e 67 and.ftp...........#.We.are.using
6c580 20 6e 65 77 65 72 20 48 54 54 50 45 72 72 6f 72 20 77 69 74 68 20 6f 6c 64 65 72 20 72 65 64 69 .newer.HTTPError.with.older.redi
6c5a0 72 65 63 74 5f 69 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 20 23 20 54 rect_internal.method.........#.T
6c5c0 68 69 73 20 6f 6c 64 65 72 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 67 65 74 20 64 65 70 72 65 63 his.older.method.will.get.deprec
6c5e0 61 74 65 64 20 69 6e 20 33 2e 33 0a 0a 20 20 20 20 20 20 20 20 69 66 20 75 72 6c 70 61 72 74 73 ated.in.3.3..........if.urlparts
6c600 2e 73 63 68 65 6d 65 20 6e 6f 74 20 69 6e 20 28 27 68 74 74 70 27 2c 20 27 68 74 74 70 73 27 2c .scheme.not.in.('http',.'https',
6c620 20 27 66 74 70 27 2c 20 27 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 48 .'ftp',.''):.............raise.H
6c640 54 54 50 45 72 72 6f 72 28 6e 65 77 75 72 6c 2c 20 65 72 72 63 6f 64 65 2c 0a 20 20 20 20 20 20 TTPError(newurl,.errcode,.......
6c660 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 6d 73 67 20 2b 0a 20 ......................errmsg.+..
6c680 20 20 20 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 52 65 64 ...........................".Red
6c6a0 69 72 65 63 74 69 6f 6e 20 74 6f 20 75 72 6c 20 27 25 73 27 20 69 73 20 6e 6f 74 20 61 6c 6c 6f irection.to.url.'%s'.is.not.allo
6c6c0 77 65 64 2e 22 20 25 20 6e 65 77 75 72 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 wed.".%.newurl,.................
6c6e0 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 2c 20 66 70 29 0a 0a 20 20 20 20 20 20 ............headers,.fp)........
6c700 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 0a 20 20 20 20 ..return.self.open(newurl)......
6c720 64 65 66 20 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 31 28 73 65 6c 66 2c 20 75 72 6c 2c 20 66 70 def.http_error_301(self,.url,.fp
6c740 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 64 61 74 61 ,.errcode,.errmsg,.headers,.data
6c760 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 31 20 2d 2d 20 =None):........."""Error.301.--.
6c780 61 6c 73 6f 20 72 65 6c 6f 63 61 74 65 64 20 28 70 65 72 6d 61 6e 65 6e 74 6c 79 29 2e 22 22 22 also.relocated.(permanently)."""
6c7a0 0a 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 .........return.self.http_error_
6c7c0 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 65 302(url,.fp,.errcode,.errmsg,.he
6c7e0 61 64 65 72 73 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 aders,.data)......def.http_error
6c800 5f 33 30 33 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 _303(self,.url,.fp,.errcode,.err
6c820 6d 73 67 2c 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 msg,.headers,.data=None):.......
6c840 20 20 22 22 22 45 72 72 6f 72 20 33 30 33 20 2d 2d 20 61 6c 73 6f 20 72 65 6c 6f 63 61 74 65 64 .."""Error.303.--.also.relocated
6c860 20 28 65 73 73 65 6e 74 69 61 6c 6c 79 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 33 30 32 29 2e .(essentially.identical.to.302).
6c880 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 70 5f 65 72 72 """.........return.self.http_err
6c8a0 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 72 6d 73 67 2c or_302(url,.fp,.errcode,.errmsg,
6c8c0 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 74 70 5f 65 72 .headers,.data)......def.http_er
6c8e0 72 6f 72 5f 33 30 37 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 ror_307(self,.url,.fp,.errcode,.
6c900 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 3a 0a 20 20 20 errmsg,.headers,.data=None):....
6c920 20 20 20 20 20 22 22 22 45 72 72 6f 72 20 33 30 37 20 2d 2d 20 72 65 6c 6f 63 61 74 65 64 2c 20 ....."""Error.307.--.relocated,.
6c940 62 75 74 20 74 75 72 6e 20 50 4f 53 54 20 69 6e 74 6f 20 65 72 72 6f 72 2e 22 22 22 0a 20 20 20 but.turn.POST.into.error."""....
6c960 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 20 .....if.data.is.None:...........
6c980 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 33 30 32 28 75 72 6c ..return.self.http_error_302(url
6c9a0 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,.
6c9c0 64 61 74 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 data).........else:.............
6c9e0 72 65 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 return.self.http_error_default(u
6ca00 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 72 73 rl,.fp,.errcode,.errmsg,.headers
6ca20 29 0a 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 )......def.http_error_401(self,.
6ca40 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 72 url,.fp,.errcode,.errmsg,.header
6ca60 73 2c 20 64 61 74 61 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 72 79 3d s,.data=None,.............retry=
6ca80 46 61 6c 73 65 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 45 72 72 6f 72 20 34 30 31 20 2d 2d 20 False):........."""Error.401.--.
6caa0 61 75 74 68 65 6e 74 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 authentication.required.........
6cac0 20 54 68 69 73 20 66 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 .This.function.supports.Basic.au
6cae0 74 68 65 6e 74 69 63 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 thentication.only.""".........if
6cb00 20 27 77 77 77 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 .'www-authenticate'.not.in.heade
6cb20 72 73 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 5f 65 rs:.............URLopener.http_e
6cb40 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 20 20 rror_default(self,.url,.fp,.....
6cb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6cb80 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 0a 20 .....errcode,.errmsg,.headers)..
6cba0 20 20 20 20 20 20 20 73 74 75 66 66 20 3d 20 68 65 61 64 65 72 73 5b 27 77 77 77 2d 61 75 74 68 .......stuff.=.headers['www-auth
6cbc0 65 6e 74 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 enticate'].........match.=.re.ma
6cbe0 74 63 68 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 tch('[.\t]*([^.\t]+)[.\t]+realm=
6cc00 22 28 5b 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 "([^"]*)"',.stuff).........if.no
6cc20 74 20 6d 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 t.match:.............URLopener.h
6cc40 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 2c ttp_error_default(self,.url,.fp,
6cc60 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 ................................
6cc80 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 61 64 65 ..........errcode,.errmsg,.heade
6cca0 72 73 29 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 rs).........scheme,.realm.=.matc
6ccc0 68 2e 67 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 h.groups().........if.scheme.low
6cce0 65 72 28 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 er().!=.'basic':.............URL
6cd00 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,.
6cd20 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,........................
6cd40 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
6cd60 67 2c 20 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 g,.headers).........if.not.retry
6cd80 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 5f 65 72 72 :.............URLopener.http_err
6cda0 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 20 65 72 72 63 6f 64 or_default(self,.url,.fp,.errcod
6cdc0 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 20 68 e,.errmsg,.....................h
6cde0 65 61 64 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 27 20 eaders).........name.=.'retry_'.
6ce00 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 20 20 20 +.self.type.+.'_basic_auth'.....
6ce20 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 20 20 ....if.data.is.None:............
6ce40 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 6c 2c 20 .return.getattr(self,name)(url,.
6ce60 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 20 20 20 realm).........else:............
6ce80 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 6c 2c 20 .return.getattr(self,name)(url,.
6cea0 72 65 61 6c 6d 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 realm,.data)......def.http_error
6cec0 5f 34 30 37 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 _407(self,.url,.fp,.errcode,.err
6cee0 6d 73 67 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 msg,.headers,.data=None,........
6cf00 20 20 20 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 .....retry=False):........."""Er
6cf20 72 6f 72 20 34 30 37 20 2d 2d 20 70 72 6f 78 79 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 ror.407.--.proxy.authentication.
6cf40 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 required..........This.function.
6cf60 73 75 70 70 6f 72 74 73 20 42 61 73 69 63 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 6f 6e supports.Basic.authentication.on
6cf80 6c 79 2e 22 22 22 0a 20 20 20 20 20 20 20 20 69 66 20 27 70 72 6f 78 79 2d 61 75 74 68 65 6e 74 ly.""".........if.'proxy-authent
6cfa0 69 63 61 74 65 27 20 6e 6f 74 20 69 6e 20 68 65 61 64 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 icate'.not.in.headers:..........
6cfc0 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 74 28 ...URLopener.http_error_default(
6cfe0 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 20 20 self,.url,.fp,..................
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 65 72 72 63 6f 64 65 2c ........................errcode,
6d020 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 73 74 75 66 66 20 .errmsg,.headers).........stuff.
6d040 3d 20 68 65 61 64 65 72 73 5b 27 70 72 6f 78 79 2d 61 75 74 68 65 6e 74 69 63 61 74 65 27 5d 0a =.headers['proxy-authenticate'].
6d060 20 20 20 20 20 20 20 20 6d 61 74 63 68 20 3d 20 72 65 2e 6d 61 74 63 68 28 27 5b 20 5c 74 5d 2a ........match.=.re.match('[.\t]*
6d080 28 5b 5e 20 5c 74 5d 2b 29 5b 20 5c 74 5d 2b 72 65 61 6c 6d 3d 22 28 5b 5e 22 5d 2a 29 22 27 2c ([^.\t]+)[.\t]+realm="([^"]*)"',
6d0a0 20 73 74 75 66 66 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 61 74 63 68 3a 0a 20 20 .stuff).........if.not.match:...
6d0c0 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 64 ..........URLopener.http_error_d
6d0e0 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 20 efault(self,.url,.fp,...........
6d100 20 20 20 20 20 20 20 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 ...............................e
6d120 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 20 rrcode,.errmsg,.headers)........
6d140 20 73 63 68 65 6d 65 2c 20 72 65 61 6c 6d 20 3d 20 6d 61 74 63 68 2e 67 72 6f 75 70 73 28 29 0a .scheme,.realm.=.match.groups().
6d160 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 20 21 3d 20 27 62 61 ........if.scheme.lower().!=.'ba
6d180 73 69 63 27 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 sic':.............URLopener.http
6d1a0 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,...
6d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6d1e0 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)
6d200 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 .........if.not.retry:..........
6d220 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 74 28 ...URLopener.http_error_default(
6d240 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 0a self,.url,.fp,.errcode,.errmsg,.
6d260 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 29 0a 20 20 20 ....................headers)....
6d280 20 20 20 20 20 6e 61 6d 65 20 3d 20 27 72 65 74 72 79 5f 70 72 6f 78 79 5f 27 20 2b 20 73 65 6c .....name.=.'retry_proxy_'.+.sel
6d2a0 66 2e 74 79 70 65 20 2b 20 27 5f 62 61 73 69 63 5f 61 75 74 68 27 0a 20 20 20 20 20 20 20 20 69 f.type.+.'_basic_auth'.........i
6d2c0 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 72 65 74 75 f.data.is.None:.............retu
6d2e0 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 6e 61 6d 65 29 28 75 72 6c 2c 20 72 65 61 6c 6d rn.getattr(self,name)(url,.realm
6d300 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 65 74 75 ).........else:.............retu
6d320 72 6e 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 6e 61 6d 65 29 28 75 72 6c 2c 20 72 65 61 6c 6d rn.getattr(self,name)(url,.realm
6d340 2c 20 64 61 74 61 29 0a 0a 20 20 20 20 64 65 66 20 72 65 74 72 79 5f 70 72 6f 78 79 5f 68 74 74 ,.data)......def.retry_proxy_htt
6d360 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 65 61 6c 6d 2c 20 64 p_basic_auth(self,.url,.realm,.d
6d380 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 73 65 6c 65 63 74 6f ata=None):.........host,.selecto
6d3a0 72 20 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 20 6e 65 77 75 r.=._splithost(url).........newu
6d3c0 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 65 6c 65 63 74 6f 72 rl.=.'http://'.+.host.+.selector
6d3e0 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 78 69 65 73 5b 27 68 .........proxy.=.self.proxies['h
6d400 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 6f 78 79 68 6f 73 74 ttp'].........urltype,.proxyhost
6d420 20 3d 20 5f 73 70 6c 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 .=._splittype(proxy).........pro
6d440 78 79 68 6f 73 74 2c 20 70 72 6f 78 79 73 65 6c 65 63 74 6f 72 20 3d 20 5f 73 70 6c 69 74 68 6f xyhost,.proxyselector.=._splitho
6d460 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 72 6f 78 79 68 st(proxyhost).........i.=.proxyh
6d480 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 72 6f 78 79 68 ost.find('@').+.1.........proxyh
6d4a0 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 20 75 73 65 72 ost.=.proxyhost[i:].........user
6d4c0 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 73 73 77 64 28 ,.passwd.=.self.get_user_passwd(
6d4e0 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 20 20 69 66 20 proxyhost,.realm,.i).........if.
6d500 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 6e 20 4e 6f 6e not.(user.or.passwd):.return.Non
6d520 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 73 40 25 73 22 e.........proxyhost.=."%s:%s@%s"
6d540 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 20 20 20 20 20 .%.(quote(user,.safe=''),.......
6d560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 71 75 6f 74 ............................quot
6d580 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 73 74 29 0a 20 e(passwd,.safe=''),.proxyhost)..
6d5a0 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 20 3d 20 27 68 .......self.proxies['http'].=.'h
6d5c0 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 73 65 6c 65 63 ttp://'.+.proxyhost.+.proxyselec
6d5e0 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 3a 0a 20 20 20 tor.........if.data.is.None:....
6d600 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 77 75 72 6c .........return.self.open(newurl
6d620 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 65 74 75 ).........else:.............retu
6d640 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 0a 20 20 20 20 rn.self.open(newurl,.data)......
6d660 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 5f 61 75 74 68 def.retry_proxy_https_basic_auth
6d680 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 65 29 3a 0a 20 (self,.url,.realm,.data=None):..
6d6a0 20 20 20 20 20 20 20 68 6f 73 74 2c 20 73 65 6c 65 63 74 6f 72 20 3d 20 5f 73 70 6c 69 74 68 6f .......host,.selector.=._splitho
6d6c0 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 74 70 73 3a st(url).........newurl.=.'https:
6d6e0 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 20 20 70 72 //'.+.host.+.selector.........pr
6d700 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 20 20 20 20 oxy.=.self.proxies['https'].....
6d720 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 5f 73 70 6c 69 74 74 ....urltype,.proxyhost.=._splitt
6d740 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 20 70 72 ype(proxy).........proxyhost,.pr
6d760 6f 78 79 73 65 6c 65 63 74 6f 72 20 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 70 72 6f 78 79 68 6f oxyselector.=._splithost(proxyho
6d780 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 28 27 st).........i.=.proxyhost.find('
6d7a0 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 6f 78 @').+.1.........proxyhost.=.prox
6d7c0 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 20 3d yhost[i:].........user,.passwd.=
6d7e0 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 74 2c .self.get_user_passwd(proxyhost,
6d800 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 72 20 .realm,.i).........if.not.(user.
6d820 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 20 20 or.passwd):.return.None.........
6d840 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 65 28 proxyhost.=."%s:%s@%s".%.(quote(
6d860 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 20 20 user,.safe=''),.................
6d880 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 2c 20 ..................quote(passwd,.
6d8a0 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 65 6c safe=''),.proxyhost).........sel
6d8c0 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 27 20 f.proxies['https'].=.'https://'.
6d8e0 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 20 20 +.proxyhost.+.proxyselector.....
6d900 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 20 20 ....if.data.is.None:............
6d920 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 20 20 .return.self.open(newurl).......
6d940 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.
6d960 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 74 72 open(newurl,.data)......def.retr
6d980 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 65 61 y_http_basic_auth(self,.url,.rea
6d9a0 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 73 65 lm,.data=None):.........host,.se
6d9c0 6c 65 63 74 6f 72 20 3d 20 5f 73 70 6c 69 74 68 6f 73 74 28 75 72 6c 29 0a 20 20 20 20 20 20 20 lector.=._splithost(url)........
6d9e0 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 20 .i.=.host.find('@').+.1.........
6da00 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 61 host.=.host[i:].........user,.pa
6da20 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 74 sswd.=.self.get_user_passwd(host
6da40 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 72 ,.realm,.i).........if.not.(user
6da60 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 20 .or.passwd):.return.None........
6da80 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 72 .host.=."%s:%s@%s".%.(quote(user
6daa0 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 20 ,.safe=''),.....................
6dac0 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 2c .........quote(passwd,.safe=''),
6dae0 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 2f .host).........newurl.=.'http://
6db00 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 64 '.+.host.+.selector.........if.d
6db20 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 20 ata.is.None:.............return.
6db40 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 0a self.open(newurl).........else:.
6db60 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 77 ............return.self.open(new
6db80 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 5f url,.data)......def.retry_https_
6dba0 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 74 basic_auth(self,.url,.realm,.dat
6dbc0 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 20 a=None):.........host,.selector.
6dbe0 3d 20 5f 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
6dc00 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.=.
6dc20 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.=.
6dc40 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
6dc60 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
6dc80 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.=
6dca0 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=
6dcc0 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 ''),............................
6dce0 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).
6dd00 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
6dd20 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
6dd40 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
6dd60 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:.......
6dd80 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
6dda0 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
6ddc0 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):
6dde0 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
6de00 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
6de20 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
6de40 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
6de60 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
6de80 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.
6dea0 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
6dec0 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
6dee0 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
6df00 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
6df20 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
6df40 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
6df60 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):........
6df80 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
6dfa0 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
6dfc0 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.
6dfe0 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
6e000 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))........
6e020 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
6e040 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
6e060 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
6e080 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
6e0a0 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
6e0c0 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()
6e0e0 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..
6e100 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
6e120 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():....."""
6e140 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
6e160 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'.""".....
6e180 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
6e1a0 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.
6e1c0 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
6e1e0 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
6e200 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():.....
6e220 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
6e240 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
6e260 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
6e280 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
6e2a0 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
6e2c0 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])..
6e2e0 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:..
6e300 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
6e320 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'
6e340 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
6e360 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():..
6e380 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
6e3a0 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
6e3c0 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
6e3e0 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
6e400 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
6e420 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..
6e440 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(
6e460 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.
6e480 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
6e4a0 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
6e4c0 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
6e4e0 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
6e500 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
6e520 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
6e540 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
6e560 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
6e580 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,.
6e5a0 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,.
6e5c0 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
6e5e0 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.....
6e600 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........
6e620 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
6e640 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
6e660 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
6e680 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....
6e6a0 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
6e6c0 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
6e6e0 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:...........
6e700 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
6e720 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
6e740 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.=.
6e760 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(
6e780 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.
6e7a0 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)..
6e7c0 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,
6e7e0 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.=.
6e800 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
6e820 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
6e840 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
6e860 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
6e880 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',
6e8a0 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
6e8c0 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
6e8e0 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:.....
6e900 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)...
6e920 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:.
6e940 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().........
6e960 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).......
6e980 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
6e9a0 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
6e9c0 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............
6e9e0 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
6ea00 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,
6ea20 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
6ea40 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.
6ea60 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:...........
6ea80 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
6eaa0 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
6eac0 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).
6eae0 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(.................
6eb00 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])......
6eb20 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
6eb40 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!.......
6eb60 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')
6eb80 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
6eba0 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
6ebc0 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:......
6ebe0 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().
6ec00 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:............
6ec20 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:...................
6ec40 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)........
6ec60 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
6ec80 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:................
6eca0 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
6ecc0 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...
6ece0 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:..........
6ed00 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)....
6ed20 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
6ed40 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:.............
6ed60 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
6ed80 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
6eda0 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...
6edc0 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
6ede0 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
6ee00 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...
6ee20 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
6ee40 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
6ee60 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..
6ee80 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).
6eea0 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):.....
6eec0 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
6eee0 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.=
6ef00 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.
6ef20 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
6ef40 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):..
6ef60 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().......
6ef80 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.
6efa0 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.
6efc0 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
6efe0 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
6f000 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()..
6f020 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
6f040 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
6f060 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
6f080 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
6f0a0 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
6f0c0 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
6f0e0 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
6f100 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>_
6f120 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.
6f140 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
6f160 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
6f180 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.
6f1a0 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
6f1c0 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.=.{}.....
6f1e0 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
6f200 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
6f220 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
6f240 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
6f260 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.
6f280 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
6f2a0 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
6f2c0 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':.....
6f2e0 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
6f300 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
6f320 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
6f340 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
6f360 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
6f380 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:".....
6f3a0 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
6f3c0 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.
6f3e0 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
6f400 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
6f420 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
6f440 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
6f460 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():......
6f480 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':....
6f4a0 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()....
6f4c0 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:..............
6f4e0 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...
6f500 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:.................
6f520 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)....
6f540 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
6f560 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
6f580 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
6f5a0 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
6f5c0 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
6f5e0 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.
6f600 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
6f620 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
6f640 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
6f660 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
6f680 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
6f6a0 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
6f6c0 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
6f6e0 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
6f700 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 20 20 20 20 Error:.........return.False.....
6f720 23 20 27 2a 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 #.'*'.is.special.case.for.always
6f740 20 62 79 70 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 .bypass.....if.no_proxy.==.'*':.
6f760 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 68 6f 73 74 20 3d 20 68 ........return.True.....host.=.h
6f780 6f 73 74 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 23 20 73 74 72 69 70 20 70 6f 72 74 20 6f 66 66 ost.lower().....#.strip.port.off
6f7a0 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 5f 73 70 6c 69 .host.....hostonly,.port.=._spli
6f7c0 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
6f7e0 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
6f800 66 69 78 65 73 0a 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 69 6e 20 6e 6f 5f 70 72 6f 78 79 2e 73 fixes.....for.name.in.no_proxy.s
6f820 70 6c 69 74 28 27 2c 27 29 3a 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 73 plit(','):.........name.=.name.s
6f840 74 72 69 70 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 trip().........if.name:.........
6f860 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 23 20 69 ....name.=.name.lstrip('.')..#.i
6f880 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 20 20 6e gnore.leading.dots.............n
6f8a0 61 6d 65 20 3d 20 6e 61 6d 65 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ame.=.name.lower().............i
6f8c0 66 20 68 6f 73 74 6f 6e 6c 79 20 3d 3d 20 6e 61 6d 65 20 6f 72 20 68 6f 73 74 20 3d 3d 20 6e 61 f.hostonly.==.name.or.host.==.na
6f8e0 6d 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 54 72 75 65 0a me:.................return.True.
6f900 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 27 2e 27 20 2b 20 6e 61 6d 65 0a 20 20 ............name.=.'.'.+.name...
6f920 20 20 20 20 20 20 20 20 20 20 69 66 20 68 6f 73 74 6f 6e 6c 79 2e 65 6e 64 73 77 69 74 68 28 6e ..........if.hostonly.endswith(n
6f940 61 6d 65 29 20 6f 72 20 68 6f 73 74 2e 65 6e 64 73 77 69 74 68 28 6e 61 6d 65 29 3a 0a 20 20 20 ame).or.host.endswith(name):....
6f960 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 20 20 23 20 6f .............return.True.....#.o
6f980 74 68 65 72 77 69 73 65 2c 20 64 6f 6e 27 74 20 62 79 70 61 73 73 0a 20 20 20 20 72 65 74 75 72 therwise,.don't.bypass.....retur
6f9a0 6e 20 46 61 6c 73 65 0a 0a 0a 23 20 54 68 69 73 20 63 6f 64 65 20 74 65 73 74 73 20 61 6e 20 4f n.False...#.This.code.tests.an.O
6f9c0 53 58 20 73 70 65 63 69 66 69 63 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 20 62 75 74 20 69 SX.specific.data.structure.but.i
6f9e0 73 20 74 65 73 74 61 62 6c 65 20 6f 6e 20 61 6c 6c 0a 23 20 70 6c 61 74 66 6f 72 6d 73 0a 64 65 s.testable.on.all.#.platforms.de
6fa00 66 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 68 f._proxy_bypass_macosx_sysconf(h
6fa20 6f 73 74 2c 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 29 3a 0a 20 20 20 20 22 22 22 0a 20 20 ost,.proxy_settings):....."""...
6fa40 20 20 52 65 74 75 72 6e 20 54 72 75 65 20 69 66 66 20 74 68 69 73 20 68 6f 73 74 20 73 68 6f 75 ..Return.True.iff.this.host.shou
6fa60 6c 64 6e 27 74 20 62 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 20 61 20 70 72 6f 78 79 0a ldn't.be.accessed.using.a.proxy.
6fa80 0a 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20 4d 61 63 4f .....This.function.uses.the.MacO
6faa0 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 75 72 61 74 69 6f 6e SX.framework.SystemConfiguration
6fac0 0a 20 20 20 20 74 6f 20 66 65 74 63 68 20 74 68 65 20 70 72 6f 78 79 20 69 6e 66 6f 72 6d 61 74 .....to.fetch.the.proxy.informat
6fae0 69 6f 6e 2e 0a 0a 20 20 20 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 20 63 6f 6d 65 20 66 72 ion.......proxy_settings.come.fr
6fb00 6f 6d 20 5f 73 63 70 72 6f 78 79 2e 5f 67 65 74 5f 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 20 om._scproxy._get_proxy_settings.
6fb20 6f 72 20 67 65 74 20 6d 6f 63 6b 65 64 20 69 65 3a 0a 20 20 20 20 7b 20 27 65 78 63 6c 75 64 65 or.get.mocked.ie:.....{.'exclude
6fb40 5f 73 69 6d 70 6c 65 27 3a 20 62 6f 6f 6c 2c 0a 20 20 20 20 20 20 27 65 78 63 65 70 74 69 6f 6e _simple':.bool,.......'exception
6fb60 73 27 3a 20 5b 27 66 6f 6f 2e 62 61 72 27 2c 20 27 2a 2e 62 61 72 2e 63 6f 6d 27 2c 20 27 31 32 s':.['foo.bar',.'*.bar.com',.'12
6fb80 37 2e 30 2e 30 2e 31 27 2c 20 27 31 30 2e 31 27 2c 20 27 31 30 2e 30 2f 31 36 27 5d 0a 20 20 20 7.0.0.1',.'10.1',.'10.0/16']....
6fba0 20 7d 0a 20 20 20 20 22 22 22 0a 20 20 20 20 66 72 6f 6d 20 66 6e 6d 61 74 63 68 20 69 6d 70 6f .}.....""".....from.fnmatch.impo
6fbc0 72 74 20 66 6e 6d 61 74 63 68 0a 0a 20 20 20 20 68 6f 73 74 6f 6e 6c 79 2c 20 70 6f 72 74 20 3d rt.fnmatch......hostonly,.port.=
6fbe0 20 5f 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 0a 20 20 20 20 64 65 66 20 69 70 32 6e 75 ._splitport(host)......def.ip2nu
6fc00 6d 28 69 70 41 64 64 72 29 3a 0a 20 20 20 20 20 20 20 20 70 61 72 74 73 20 3d 20 69 70 41 64 64 m(ipAddr):.........parts.=.ipAdd
6fc20 72 2e 73 70 6c 69 74 28 27 2e 27 29 0a 20 20 20 20 20 20 20 20 70 61 72 74 73 20 3d 20 6c 69 73 r.split('.').........parts.=.lis
6fc40 74 28 6d 61 70 28 69 6e 74 2c 20 70 61 72 74 73 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 6c 65 t(map(int,.parts)).........if.le
6fc60 6e 28 70 61 72 74 73 29 20 21 3d 20 34 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 74 73 n(parts).!=.4:.............parts
6fc80 20 3d 20 28 70 61 72 74 73 20 2b 20 5b 30 2c 20 30 2c 20 30 2c 20 30 5d 29 5b 3a 34 5d 0a 20 20 .=.(parts.+.[0,.0,.0,.0])[:4]...
6fca0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 61 72 74 73 5b 30 5d 20 3c 3c 20 32 34 29 20 7c 20 ......return.(parts[0].<<.24).|.
6fcc0 28 70 61 72 74 73 5b 31 5d 20 3c 3c 20 31 36 29 20 7c 20 28 70 61 72 74 73 5b 32 5d 20 3c 3c 20 (parts[1].<<.16).|.(parts[2].<<.
6fce0 38 29 20 7c 20 70 61 72 74 73 5b 33 5d 0a 0a 20 20 20 20 23 20 43 68 65 63 6b 20 66 6f 72 20 73 8).|.parts[3]......#.Check.for.s
6fd00 69 6d 70 6c 65 20 68 6f 73 74 20 6e 61 6d 65 73 3a 0a 20 20 20 20 69 66 20 27 2e 27 20 6e 6f 74 imple.host.names:.....if.'.'.not
6fd20 20 69 6e 20 68 6f 73 74 3a 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 79 5f 73 65 74 74 69 .in.host:.........if.proxy_setti
6fd40 6e 67 73 5b 27 65 78 63 6c 75 64 65 5f 73 69 6d 70 6c 65 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 ngs['exclude_simple']:..........
6fd60 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 68 6f 73 74 49 50 20 3d 20 4e 6f 6e ...return.True......hostIP.=.Non
6fd80 65 0a 0a 20 20 20 20 66 6f 72 20 76 61 6c 75 65 20 69 6e 20 70 72 6f 78 79 5f 73 65 74 74 69 6e e......for.value.in.proxy_settin
6fda0 67 73 2e 67 65 74 28 27 65 78 63 65 70 74 69 6f 6e 73 27 2c 20 28 29 29 3a 0a 20 20 20 20 20 20 gs.get('exceptions',.()):.......
6fdc0 20 20 23 20 49 74 65 6d 73 20 69 6e 20 74 68 65 20 6c 69 73 74 20 61 72 65 20 73 74 72 69 6e 67 ..#.Items.in.the.list.are.string
6fde0 73 20 6c 69 6b 65 20 74 68 65 73 65 3a 20 2a 2e 6c 6f 63 61 6c 2c 20 31 36 39 2e 32 35 34 2f 31 s.like.these:.*.local,.169.254/1
6fe00 36 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 76 61 6c 75 65 3a 20 63 6f 6e 74 69 6e 75 65 6.........if.not.value:.continue
6fe20 0a 0a 20 20 20 20 20 20 20 20 6d 20 3d 20 72 65 2e 6d 61 74 63 68 28 72 22 28 5c 64 2b 28 3f 3a ..........m.=.re.match(r"(\d+(?:
6fe40 5c 2e 5c 64 2b 29 2a 29 28 2f 5c 64 2b 29 3f 22 2c 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 \.\d+)*)(/\d+)?",.value)........
6fe60 20 69 66 20 6d 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 69 .if.m.is.not.None:.............i
6fe80 66 20 68 6f 73 74 49 50 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.hostIP.is.None:...............
6fea0 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 68 6f 73 74 49 ..try:.....................hostI
6fec0 50 20 3d 20 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 68 6f 73 74 6f 6e 6c P.=.socket.gethostbyname(hostonl
6fee0 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 49 50 20 3d 20 y).....................hostIP.=.
6ff00 69 70 32 6e 75 6d 28 68 6f 73 74 49 50 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 ip2num(hostIP).................e
6ff20 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 20 xcept.OSError:..................
6ff40 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 62 61 73 65 20 3d 20 ...continue..............base.=.
6ff60 69 70 32 6e 75 6d 28 6d 2e 67 72 6f 75 70 28 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d ip2num(m.group(1)).............m
6ff80 61 73 6b 20 3d 20 6d 2e 67 72 6f 75 70 28 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ask.=.m.group(2).............if.
6ffa0 6d 61 73 6b 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 6d 61 mask.is.None:.................ma
6ffc0 73 6b 20 3d 20 38 20 2a 20 28 6d 2e 67 72 6f 75 70 28 31 29 2e 63 6f 75 6e 74 28 27 2e 27 29 20 sk.=.8.*.(m.group(1).count('.').
6ffe0 2b 20 31 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 +.1).............else:..........
70000 20 20 20 20 20 20 20 6d 61 73 6b 20 3d 20 69 6e 74 28 6d 61 73 6b 5b 31 3a 5d 29 0a 20 20 20 20 .......mask.=.int(mask[1:]).....
70020 20 20 20 20 20 20 20 20 6d 61 73 6b 20 3d 20 33 32 20 2d 20 6d 61 73 6b 0a 0a 20 20 20 20 20 20 ........mask.=.32.-.mask........
70040 20 20 20 20 20 20 69 66 20 28 68 6f 73 74 49 50 20 3e 3e 20 6d 61 73 6b 29 20 3d 3d 20 28 62 61 ......if.(hostIP.>>.mask).==.(ba
70060 73 65 20 3e 3e 20 6d 61 73 6b 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 se.>>.mask):.................ret
70080 75 72 6e 20 54 72 75 65 0a 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 66 6e 6d 61 74 63 68 28 68 urn.True..........elif.fnmatch(h
700a0 6f 73 74 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ost,.value):.............return.
700c0 54 72 75 65 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 0a 0a 69 66 20 73 79 73 2e True......return.False...if.sys.
700e0 70 6c 61 74 66 6f 72 6d 20 3d 3d 20 27 64 61 72 77 69 6e 27 3a 0a 20 20 20 20 66 72 6f 6d 20 5f platform.==.'darwin':.....from._
70100 73 63 70 72 6f 78 79 20 69 6d 70 6f 72 74 20 5f 67 65 74 5f 70 72 6f 78 79 5f 73 65 74 74 69 6e scproxy.import._get_proxy_settin
70120 67 73 2c 20 5f 67 65 74 5f 70 72 6f 78 69 65 73 0a 0a 20 20 20 20 64 65 66 20 70 72 6f 78 79 5f gs,._get_proxies......def.proxy_
70140 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 3a 0a 20 20 20 bypass_macosx_sysconf(host):....
70160 20 20 20 20 20 70 72 6f 78 79 5f 73 65 74 74 69 6e 67 73 20 3d 20 5f 67 65 74 5f 70 72 6f 78 79 .....proxy_settings.=._get_proxy
70180 5f 73 65 74 74 69 6e 67 73 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 70 72 6f 78 _settings().........return._prox
701a0 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 73 74 2c 20 70 72 y_bypass_macosx_sysconf(host,.pr
701c0 6f 78 79 5f 73 65 74 74 69 6e 67 73 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 70 72 6f 78 69 65 oxy_settings)......def.getproxie
701e0 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 s_macosx_sysconf():........."""R
70200 65 74 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 eturn.a.dictionary.of.scheme.->.
70220 70 72 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 proxy.server.URL.mappings.......
70240 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20 4d 61 63 4f 53 ....This.function.uses.the.MacOS
70260 58 20 66 72 61 6d 65 77 6f 72 6b 20 53 79 73 74 65 6d 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a X.framework.SystemConfiguration.
70280 20 20 20 20 20 20 20 20 74 6f 20 66 65 74 63 68 20 74 68 65 20 70 72 6f 78 79 20 69 6e 66 6f 72 ........to.fetch.the.proxy.infor
702a0 6d 61 74 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 72 65 74 75 mation..........""".........retu
702c0 72 6e 20 5f 67 65 74 5f 70 72 6f 78 69 65 73 28 29 0a 0a 0a 0a 20 20 20 20 64 65 66 20 70 72 6f rn._get_proxies()........def.pro
702e0 78 79 5f 62 79 70 61 73 73 28 68 6f 73 74 29 3a 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 74 75 xy_bypass(host):........."""Retu
70300 72 6e 20 54 72 75 65 2c 20 69 66 20 68 6f 73 74 20 73 68 6f 75 6c 64 20 62 65 20 62 79 70 61 73 rn.True,.if.host.should.be.bypas
70320 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 73 20 70 72 6f 78 79 20 73 65 74 74 69 sed...........Checks.proxy.setti
70340 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 6f 6e 6d 65 6e ngs.gathered.from.the.environmen
70360 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 20 66 72 6f 6d t,.if.specified,.........or.from
70380 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
703a0 69 67 75 72 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 iguration...........""".........
703c0 70 72 6f 78 69 65 73 20 3d 20 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 proxies.=.getproxies_environment
703e0 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 78 69 65 73 3a 0a 20 20 20 20 20 20 20 20 20 ().........if.proxies:..........
70400 20 20 20 72 65 74 75 72 6e 20 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 65 6e 76 69 72 6f 6e 6d 65 ...return.proxy_bypass_environme
70420 6e 74 28 68 6f 73 74 2c 20 70 72 6f 78 69 65 73 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a nt(host,.proxies).........else:.
70440 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 5f ............return.proxy_bypass_
70460 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 68 6f 73 74 29 0a 0a 20 20 20 20 64 65 66 20 67 65 macosx_sysconf(host)......def.ge
70480 74 70 72 6f 78 69 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 70 72 tproxies():.........return.getpr
704a0 6f 78 69 65 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 28 29 20 6f 72 20 67 65 74 70 72 6f 78 69 65 oxies_environment().or.getproxie
704c0 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 28 29 0a 0a 0a 65 6c 69 66 20 6f 73 2e 6e 61 6d s_macosx_sysconf()...elif.os.nam
704e0 65 20 3d 3d 20 27 6e 74 27 3a 0a 20 20 20 20 64 65 66 20 67 65 74 70 72 6f 78 69 65 73 5f 72 65 e.==.'nt':.....def.getproxies_re
70500 67 69 73 74 72 79 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 gistry():........."""Return.a.di
70520 63 74 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 ctionary.of.scheme.->.proxy.serv
70540 65 72 20 55 52 4c 20 6d 61 70 70 69 6e 67 73 2e 0a 0a 20 20 20 20 20 20 20 20 57 69 6e 33 32 20 er.URL.mappings...........Win32.
70560 75 73 65 73 20 74 68 65 20 72 65 67 69 73 74 72 79 20 74 6f 20 73 74 6f 72 65 20 70 72 6f 78 69 uses.the.registry.to.store.proxi
70580 65 73 2e 0a 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 70 72 6f 78 69 65 73 es...........""".........proxies
705a0 20 3d 20 7b 7d 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 .=.{}.........try:.............i
705c0 6d 70 6f 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 mport.winreg.........except.Impo
705e0 72 74 45 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 rtError:.............#.Std.modul
70600 65 2c 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 e,.so.should.be.around.-.but.you
70620 20 6e 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 .never.know!.............return.
70640 70 72 6f 78 69 65 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 proxies.........try:............
70660 20 69 6e 74 65 72 6e 65 74 53 65 74 74 69 6e 67 73 20 3d 20 77 69 6e 72 65 67 2e 4f 70 65 6e 4b .internetSettings.=.winreg.OpenK
70680 65 79 28 77 69 6e 72 65 67 2e 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 2c 0a 20 20 20 ey(winreg.HKEY_CURRENT_USER,....
706a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 27 53 6f 66 74 77 61 72 65 5c 4d 69 63 72 6f 73 6f 66 .............r'Software\Microsof
706c0 74 5c 57 69 6e 64 6f 77 73 5c 43 75 72 72 65 6e 74 56 65 72 73 69 6f 6e 5c 49 6e 74 65 72 6e 65 t\Windows\CurrentVersion\Interne
706e0 74 20 53 65 74 74 69 6e 67 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 78 79 45 6e t.Settings').............proxyEn
70700 61 62 6c 65 20 3d 20 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 able.=.winreg.QueryValueEx(inter
70720 6e 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 netSettings,....................
70740 20 20 20 20 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 72 6f ............................'Pro
70760 78 79 45 6e 61 62 6c 65 27 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 6f xyEnable')[0].............if.pro
70780 78 79 45 6e 61 62 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 52 65 74 75 xyEnable:.................#.Retu
707a0 72 6e 65 64 20 61 73 20 55 6e 69 63 6f 64 65 20 62 75 74 20 70 72 6f 62 6c 65 6d 73 20 69 66 20 rned.as.Unicode.but.problems.if.
707c0 6e 6f 74 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 41 53 43 49 49 0a 20 20 20 20 20 20 20 20 20 not.converted.to.ASCII..........
707e0 20 20 20 20 20 20 20 70 72 6f 78 79 53 65 72 76 65 72 20 3d 20 73 74 72 28 77 69 6e 72 65 67 2e .......proxyServer.=.str(winreg.
70800 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 6e 67 73 2c 0a 20 QueryValueEx(internetSettings,..
70820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
70840 20 20 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 53 65 72 76 ......................'ProxyServ
70860 65 72 27 29 5b 30 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 27 3d 27 20 er')[0]).................if.'='.
70880 69 6e 20 70 72 6f 78 79 53 65 72 76 65 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in.proxyServer:.................
708a0 20 20 20 20 23 20 50 65 72 2d 70 72 6f 74 6f 63 6f 6c 20 73 65 74 74 69 6e 67 73 0a 20 20 20 20 ....#.Per-protocol.settings.....
708c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 70 20 69 6e 20 70 72 6f 78 79 53 65 ................for.p.in.proxySe
708e0 72 76 65 72 2e 73 70 6c 69 74 28 27 3b 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rver.split(';'):................
70900 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 2c 20 61 64 64 72 65 73 73 20 3d 20 70 2e 73 .........protocol,.address.=.p.s
70920 70 6c 69 74 28 27 3d 27 2c 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 plit('=',.1)....................
70940 20 20 20 20 20 23 20 53 65 65 20 69 66 20 61 64 64 72 65 73 73 20 68 61 73 20 61 20 74 79 70 65 .....#.See.if.address.has.a.type
70960 3a 2f 2f 20 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ://.prefix......................
70980 20 20 20 69 66 20 6e 6f 74 20 72 65 2e 6d 61 74 63 68 28 27 28 3f 3a 5b 5e 2f 3a 5d 2b 29 3a 2f ...if.not.re.match('(?:[^/:]+):/
709a0 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 20 20 20 20 20 20 20 /',.address):...................
709c0 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 2f 25 73 27 20 25 20 ..........address.=.'%s://%s'.%.
709e0 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 20 20 20 20 20 20 20 (protocol,.address).............
70a00 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 63 6f 6c 5d 20 3d 20 ............proxies[protocol].=.
70a20 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 6c 73 65 3a 0a 20 20 address.................else:...
70a40 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 6e 65 20 73 65 74 74 ..................#.Use.one.sett
70a60 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 20 20 20 20 20 20 20 ing.for.all.protocols...........
70a80 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 3a 35 5d 20 3d 3d 20 ..........if.proxyServer[:5].==.
70aa0 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 20 20 20 20 20 20 20 'http:':........................
70ac0 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 65 72 76 65 72 0a 20 .proxies['http'].=.proxyServer..
70ae0 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 20 20 20 20 20 20 20 ...................else:........
70b00 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 27 68 74 74 70 27 5d .................proxies['http']
70b20 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 76 65 72 0a 20 20 20 .=.'http://%s'.%.proxyServer....
70b40 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 27 68 74 .....................proxies['ht
70b60 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 6f 78 79 53 65 72 76 tps'].=.'https://%s'.%.proxyServ
70b80 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 69 er.........................proxi
70ba0 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 70 72 6f 78 79 53 65 es['ftp'].=.'ftp://%s'.%.proxySe
70bc0 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 53 65 74 74 69 6e 67 rver.............internetSetting
70be0 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 28 4f 53 45 72 72 6f s.Close().........except.(OSErro
70c00 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 3a 0a 20 20 20 20 20 r,.ValueError,.TypeError):......
70c20 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 6b 65 79 20 6e 6f 74 .......#.Either.registry.key.not
70c40 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 69 6e 20 61 6e 0a 20 .found.etc,.or.the.value.in.an..
70c60 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 6f 72 6d 61 74 2e 0a ...........#.unexpected.format..
70c80 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 65 61 64 79 20 73 65 ............#.proxies.already.se
70ca0 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 6e 67 20 74 6f 20 64 t.up.to.be.empty.so.nothing.to.d
70cc0 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 20 20 72 65 74 75 72 o.............pass.........retur
70ce0 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 78 69 65 73 28 29 3a n.proxies......def.getproxies():
70d00 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 69 6f 6e 61 72 79 20 ........."""Return.a.dictionary.
70d20 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 61 of.scheme.->.proxy.server.URL.ma
70d40 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 73 65 74 74 69 6e 67 ppings...........Returns.setting
70d60 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 6f 6e 6d 65 6e 74 2c s.gathered.from.the.environment,
70d80 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 20 74 68 65 20 72 65 .if.specified,.........or.the.re
70da0 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 20 20 20 20 72 65 74 gistry...........""".........ret
70dc0 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 74 28 29 20 6f 72 20 urn.getproxies_environment().or.
70de0 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 20 20 64 65 66 20 70 getproxies_registry()......def.p
70e00 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 29 3a 0a 20 20 20 20 roxy_bypass_registry(host):.....
70e20 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 72 74 20 77 69 6e 72 ....try:.............import.winr
70e40 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 72 72 6f 72 3a 0a 20 eg.........except.ImportError:..
70e60 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 20 73 6f 20 73 68 6f ...........#.Std.modules,.so.sho
70e80 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 65 76 65 72 20 6b 6e uld.be.around.-.but.you.never.kn
70ea0 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 20 20 20 20 20 20 20 ow!.............return.0........
70ec0 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 74 53 65 74 74 69 6e .try:.............internetSettin
70ee0 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 67 2e 48 4b 45 59 5f gs.=.winreg.OpenKey(winreg.HKEY_
70f00 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 20 20 20 20 20 72 27 CURRENT_USER,.................r'
70f20 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 73 5c 43 75 72 72 65 Software\Microsoft\Windows\Curre
70f40 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 67 73 27 29 0a 20 20 ntVersion\Internet.Settings')...
70f60 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 69 6e 72 65 67 2e 51 ..........proxyEnable.=.winreg.Q
70f80 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 6e 67 73 2c 0a 20 20 ueryValueEx(internetSettings,...
70fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
70fc0 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 27 29 5b 30 5d 0a 20 .............'ProxyEnable')[0]..
70fe0 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 3d 20 73 74 72 28 77 ...........proxyOverride.=.str(w
71000 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
71020 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,............................
71040 20 20 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 72 6f 78 79 ..........................'Proxy
71060 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 20 20 23 20 5e 5e 5e Override')[0]).............#.^^^
71080 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 20 70 72 6f 62 6c 65 ^.Returned.as.Unicode.but.proble
710a0 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 20 20 ms.if.not.converted.to.ASCII....
710c0 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 20 20 .....except.OSError:............
710e0 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 70 72 6f 78 79 45 6e .return.0.........if.not.proxyEn
71100 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 3a 0a 20 20 20 20 20 able.or.not.proxyOverride:......
71120 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 20 74 72 79 20 74 6f .......return.0.........#.try.to
71140 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 6d 65 20 61 6e 64 20 .make.a.host.list.from.name.and.
71160 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 73 74 2c 20 70 6f 72 IP.address..........rawHost,.por
71180 74 20 3d 20 5f 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 68 6f 73 t.=._splitport(host).........hos
711a0 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 0a 20 20 20 20 20 t.=.[rawHost].........try:......
711c0 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 73 74 62 79 6e 61 .......addr.=.socket.gethostbyna
711e0 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 20 61 64 64 72 20 me(rawHost).............if.addr.
71200 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 20 20 68 6f 73 74 !=.rawHost:.................host
71220 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 70 74 20 4f 53 45 .append(addr).........except.OSE
71240 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 20 20 20 20 20 74 rror:.............pass.........t
71260 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 6b 65 74 2e 67 65 ry:.............fqdn.=.socket.ge
71280 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 20 69 66 20 66 71 tfqdn(rawHost).............if.fq
712a0 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 20 20 20 20 20 68 dn.!=.rawHost:.................h
712c0 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 78 63 65 70 74 20 ost.append(fqdn).........except.
712e0 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 20 20 20 OSError:.............pass.......
71300 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 74 20 66 72 6f 6d ..#.make.a.check.value.list.from
71320 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 63 65 20 74 68 65 .the.registry.entry:.replace.the
71340 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 67 20 62 79 20 74 .........#.'<local>'.string.by.t
71360 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 20 63 6f 72 72 65 he.localhost.entry.and.the.corre
71380 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 61 6c 20 65 6e 74 sponding.........#.canonical.ent
713a0 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 3d 20 70 72 6f 78 ry..........proxyOverride.=.prox
713c0 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 20 20 20 23 20 6e yOverride.split(';').........#.n
713e0 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 66 20 74 68 65 20 ow.check.if.we.match.one.of.the.
71400 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 6f 72 20 74 65 73 registry.values..........for.tes
71420 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 20 20 20 20 20 20 t.in.proxyOverride:.............
71440 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 20 20 20 20 20 20 if.test.==.'<local>':...........
71460 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 74 3a 0a 20 20 20 ......if.'.'.not.in.rawHost:....
71480 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 20 20 20 20 20 20 .................return.1.......
714a0 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 2e 22 2c 20 72 ......test.=.test.replace(".",.r
714c0 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 20 20 20 20 20 20 "\.").....#.mask.dots...........
714e0 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 20 72 22 2e 2a 22 ..test.=.test.replace("*",.r".*"
71500 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 63 65 0a 20 20 20 ).....#.change.glob.sequence....
71520 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 22 3f 22 .........test.=.test.replace("?"
71540 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 20 63 68 61 72 0a ,.r".")......#.change.glob.char.
71560 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 74 3a 0a 20 20 20 ............for.val.in.host:....
71580 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 65 73 74 2c 20 76 .............if.re.match(test,.v
715a0 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 20 20 20 20 20 72 al,.re.I):.....................r
715c0 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 20 20 20 20 64 65 eturn.1.........return.0......de
715e0 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 20 22 22 f.proxy_bypass(host):.........""
71600 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 62 65 20 "Return.True,.if.host.should.be.
71620 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 78 79 20 bypassed...........Checks.proxy.
71640 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
71660 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
71680 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...........""".....
716a0 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 69 72 6f 6e ....proxies.=.getproxies_environ
716c0 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 20 20 20 20 ment().........if.proxies:......
716e0 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 6e 76 69 72 .......return.proxy_bypass_envir
71700 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 20 20 65 6c onment(host,.proxies).........el
71720 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 5f 62 79 70 se:.............return.proxy_byp
71740 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 20 20 20 20 23 20 ass_registry(host)..else:.....#.
71760 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 20 76 61 72 69 61 By.default.use.environment.varia
71780 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 72 6f 78 69 65 73 bles.....getproxies.=.getproxies
717a0 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 61 73 73 20 3d 20 _environment.....proxy_bypass.=.
717c0 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 06 11 01 00 00 00 proxy_bypass_environment........
717e0 00 00 94 7d 94 28 8c 07 75 72 6c 6f 70 65 6e 94 6a 18 25 00 00 4b 8b 4b de 87 94 8c 0e 69 6e 73 ...}.(..urlopen.j.%..K.K.....ins
71800 74 61 6c 6c 5f 6f 70 65 6e 65 72 94 6a 18 25 00 00 4b e0 4b e2 87 94 8c 0b 75 72 6c 72 65 74 72 tall_opener.j.%..K.K.....urlretr
71820 69 65 76 65 94 6a 18 25 00 00 4b e5 4d 22 01 87 94 8c 0a 75 72 6c 63 6c 65 61 6e 75 70 94 6a 18 ieve.j.%..K.M".....urlcleanup.j.
71840 25 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 6a 18 25 00 00 4d %..M$.M/.....request_host.j.%..M
71860 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 6a 18 25 00 00 4d 3.MA.....Request.__init__.j.%..M
71880 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 6a 18 25 00 00 4d E.MU.....Request.full_url.j.%..M
718a0 64 01 4d 68 01 87 94 8c 0c 52 65 71 75 65 73 74 2e 64 61 74 61 94 6a 18 25 00 00 4d 78 01 4d 7a d.Mh.....Request.data.j.%..Mx.Mz
718c0 01 87 94 8c 0e 52 65 71 75 65 73 74 2e 5f 70 61 72 73 65 94 6a 18 25 00 00 4d 7c 01 4d 82 01 87 .....Request._parse.j.%..M|.M...
718e0 94 8c 12 52 65 71 75 65 73 74 2e 67 65 74 5f 6d 65 74 68 6f 64 94 6a 18 25 00 00 4d 84 01 4d 87 ...Request.get_method.j.%..M..M.
71900 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 6a 18 25 00 00 4d .....Request.get_full_url.j.%..M
71920 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 94 6a 18 25 00 00 ..M......Request.set_proxy.j.%..
71940 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 79 94 6a 18 25 00 M..M......Request.has_proxy.j.%.
71960 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 64 65 72 94 6a 18 .M..M......Request.add_header.j.
71980 25 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 6e 72 65 64 69 72 %..M..M......Request.add_unredir
719a0 65 63 74 65 64 5f 68 65 61 64 65 72 94 6a 18 25 00 00 4d 9b 01 4d 9d 01 87 94 8c 12 52 65 71 75 ected_header.j.%..M..M......Requ
719c0 65 73 74 2e 68 61 73 5f 68 65 61 64 65 72 94 6a 18 25 00 00 4d 9f 01 4d a1 01 87 94 8c 12 52 65 est.has_header.j.%..M..M......Re
719e0 71 75 65 73 74 2e 67 65 74 5f 68 65 61 64 65 72 94 6a 18 25 00 00 4d a3 01 4d a6 01 87 94 8c 15 quest.get_header.j.%..M..M......
71a00 52 65 71 75 65 73 74 2e 72 65 6d 6f 76 65 5f 68 65 61 64 65 72 94 6a 18 25 00 00 4d a8 01 4d aa Request.remove_header.j.%..M..M.
71a20 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 6a 18 25 00 00 4d .....Request.header_items.j.%..M
71a40 ac 01 4d ae 01 87 94 8c 07 52 65 71 75 65 73 74 94 6a 37 02 00 00 4d 43 01 4d ae 01 87 94 8c 17 ..M......Request.j7...MC.M......
71a60 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 18 25 00 00 4d b1 01 OpenerDirector.__init__.j.%..M..
71a80 4d ba 01 87 94 8c 1a 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 61 64 64 5f 68 61 6e 64 6c 65 M......OpenerDirector.add_handle
71aa0 72 94 6a 18 25 00 00 4d bc 01 4d e9 01 87 94 8c 14 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e r.j.%..M..M......OpenerDirector.
71ac0 63 6c 6f 73 65 94 6a 18 25 00 00 4d eb 01 4d ed 01 87 94 8c 1a 4f 70 65 6e 65 72 44 69 72 65 63 close.j.%..M..M......OpenerDirec
71ae0 74 6f 72 2e 5f 63 61 6c 6c 5f 63 68 61 69 6e 94 6a 18 25 00 00 4d ef 01 4d f8 01 87 94 8c 13 4f tor._call_chain.j.%..M..M......O
71b00 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 6f 70 65 6e 94 6a 18 25 00 00 4d fa 01 4d 15 02 87 94 penerDirector.open.j.%..M..M....
71b20 8c 14 4f 70 65 6e 65 72 44 69 72 65 63 74 6f 72 2e 5f 6f 70 65 6e 94 6a 18 25 00 00 4d 17 02 4d ..OpenerDirector._open.j.%..M..M
71b40 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 94 6a 18 25 00 00 $.....OpenerDirector.error.j.%..
71b60 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 37 02 00 00 4d b0 M&.M9.....OpenerDirector.j7...M.
71b80 01 4d 39 02 87 94 8c 0c 62 75 69 6c 64 5f 6f 70 65 6e 65 72 94 6a 18 25 00 00 4d 3f 02 4d 61 02 .M9.....build_opener.j.%..M?.Ma.
71ba0 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 94 6a 18 25 00 00 ....BaseHandler.add_parent.j.%..
71bc0 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 65 94 6a 18 25 00 Mf.Mg.....BaseHandler.close.j.%.
71be0 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 74 5f 5f 94 6a 18 .Mi.Mk.....BaseHandler.__lt__.j.
71c00 25 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 37 02 00 00 4d 63 %..Mm.Ms.....BaseHandler.j7...Mc
71c20 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 2e 68 74 74 70 5f .Ms.....HTTPErrorProcessor.http_
71c40 72 65 73 70 6f 6e 73 65 94 6a 18 25 00 00 4d 7a 02 4d 83 02 87 94 8c 12 48 54 54 50 45 72 72 6f response.j.%..Mz.M......HTTPErro
71c60 72 50 72 6f 63 65 73 73 6f 72 94 6a 37 02 00 00 4d 76 02 4d 85 02 87 94 8c 2a 48 54 54 50 44 65 rProcessor.j7...Mv.M.....*HTTPDe
71c80 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 6f 72 5f 64 65 66 faultErrorHandler.http_error_def
71ca0 61 75 6c 74 94 6a 18 25 00 00 4d 88 02 4d 89 02 87 94 8c 17 48 54 54 50 44 65 66 61 75 6c 74 45 ault.j.%..M..M......HTTPDefaultE
71cc0 72 72 6f 72 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 87 02 4d 89 02 87 94 8c 24 48 54 54 50 52 rrorHandler.j7...M..M.....$HTTPR
71ce0 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 71 75 65 73 74 94 edirectHandler.redirect_request.
71d00 6a 18 25 00 00 4d 93 02 4d b3 02 87 94 8c 22 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c j.%..M..M....."HTTPRedirectHandl
71d20 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 32 94 6a 18 25 00 00 4d b9 02 4d f3 02 87 94 8c er.http_error_302.j.%..M..M.....
71d40 13 48 54 54 50 52 65 64 69 72 65 63 74 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 8b 02 4d f9 02 .HTTPRedirectHandler.j7...M..M..
71d60 87 94 8c 0c 5f 70 61 72 73 65 5f 70 72 6f 78 79 94 6a 18 25 00 00 4d fc 02 4d 17 03 87 94 8c 15 ...._parse_proxy.j.%..M..M......
71d80 50 72 6f 78 79 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 1d 03 4d 26 ProxyHandler.__init__.j.%..M..M&
71da0 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 65 6e 94 6a 18 25 .....ProxyHandler.proxy_open.j.%
71dc0 00 00 4d 28 03 4d 42 03 87 94 8c 0c 50 72 6f 78 79 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 19 ..M(.MB.....ProxyHandler.j7...M.
71de0 03 4d 42 03 87 94 8c 18 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 2e 5f 5f 69 6e 69 74 5f 5f .MB.....HTTPPasswordMgr.__init__
71e00 94 6a 18 25 00 00 4d 46 03 4d 47 03 87 94 8c 1c 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 2e .j.%..MF.MG.....HTTPPasswordMgr.
71e20 61 64 64 5f 70 61 73 73 77 6f 72 64 94 6a 18 25 00 00 4d 49 03 4d 52 03 87 94 8c 22 48 54 54 50 add_password.j.%..MI.MR...."HTTP
71e40 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 94 6a PasswordMgr.find_user_password.j
71e60 18 25 00 00 4d 54 03 4d 5c 03 87 94 8c 1a 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 2e 72 65 .%..MT.M\.....HTTPPasswordMgr.re
71e80 64 75 63 65 5f 75 72 69 94 6a 18 25 00 00 4d 5e 03 4d 73 03 87 94 8c 19 48 54 54 50 50 61 73 73 duce_uri.j.%..M^.Ms.....HTTPPass
71ea0 77 6f 72 64 4d 67 72 2e 69 73 5f 73 75 62 75 72 69 94 6a 18 25 00 00 4d 75 03 4d 81 03 87 94 8c wordMgr.is_suburi.j.%..Mu.M.....
71ec0 0f 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 94 6a 37 02 00 00 4d 44 03 4d 81 03 87 94 8c 32 .HTTPPasswordMgr.j7...MD.M.....2
71ee0 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 52 65 61 6c 6d 2e HTTPPasswordMgrWithDefaultRealm.
71f00 66 69 6e 64 5f 75 73 65 72 5f 70 61 73 73 77 6f 72 64 94 6a 18 25 00 00 4d 86 03 4d 8b 03 87 94 find_user_password.j.%..M..M....
71f20 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 6c 74 52 65 61 6c ..HTTPPasswordMgrWithDefaultReal
71f40 6d 94 6a 37 02 00 00 4d 84 03 4d 8b 03 87 94 8c 25 48 54 54 50 50 61 73 73 77 6f 72 64 4d 67 72 m.j7...M..M.....%HTTPPasswordMgr
71f60 57 69 74 68 50 72 69 6f 72 41 75 74 68 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 90 03 4d WithPriorAuth.__init__.j.%..M..M
71f80 92 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 72 69 6f 72 41 75 .....)HTTPPasswordMgrWithPriorAu
71fa0 74 68 2e 61 64 64 5f 70 61 73 73 77 6f 72 64 94 6a 18 25 00 00 4d 94 03 4d 99 03 87 94 8c 31 48 th.add_password.j.%..M..M.....1H
71fc0 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 2e 75 70 64 61 TTPPasswordMgrWithPriorAuth.upda
71fe0 74 65 5f 61 75 74 68 65 6e 74 69 63 61 74 65 64 94 6a 18 25 00 00 4d 9b 03 4d a3 03 87 94 8c 2d te_authenticated.j.%..M..M.....-
72000 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 2e 69 73 5f HTTPPasswordMgrWithPriorAuth.is_
72020 61 75 74 68 65 6e 74 69 63 61 74 65 64 94 6a 18 25 00 00 4d a5 03 4d aa 03 87 94 8c 1c 48 54 54 authenticated.j.%..M..M......HTT
72040 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 6a 37 02 00 00 4d PPasswordMgrWithPriorAuth.j7...M
72060 8e 03 4d aa 03 87 94 8c 21 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 ..M.....!AbstractBasicAuthHandle
72080 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d c2 03 4d c6 03 87 94 8c 25 41 62 73 74 72 61 r.__init__.j.%..M..M.....%Abstra
720a0 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 2e 5f 70 61 72 73 65 5f 72 65 61 6c 6d 94 ctBasicAuthHandler._parse_realm.
720c0 6a 18 25 00 00 4d c8 03 4d da 03 87 94 8c 2e 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 j.%..M..M......AbstractBasicAuth
720e0 48 61 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 18 Handler.http_error_auth_reqed.j.
72100 25 00 00 4d dc 03 4d f4 03 87 94 8c 2e 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 %..M..M......AbstractBasicAuthHa
72120 6e 64 6c 65 72 2e 72 65 74 72 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 94 6a 18 25 00 ndler.retry_http_basic_auth.j.%.
72140 00 4d f6 03 4d 00 04 87 94 8c 25 41 62 73 74 72 61 63 74 42 61 73 69 63 41 75 74 68 48 61 6e 64 .M..M.....%AbstractBasicAuthHand
72160 6c 65 72 2e 68 74 74 70 5f 72 65 71 75 65 73 74 94 6a 18 25 00 00 4d 02 04 4d 0d 04 87 94 8c 26 ler.http_request.j.%..M..M.....&
72180 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 72 65 AbstractBasicAuthHandler.http_re
721a0 73 70 6f 6e 73 65 94 6a 18 25 00 00 4d 0f 04 4d 15 04 87 94 8c 18 41 62 73 74 72 61 63 74 42 61 sponse.j.%..M..M......AbstractBa
721c0 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d ad 03 4d 18 04 87 94 8c 23 48 54 sicAuthHandler.j7...M..M.....#HT
721e0 54 50 42 61 73 69 63 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 TPBasicAuthHandler.http_error_40
72200 31 94 6a 18 25 00 00 4d 20 04 4d 24 04 87 94 8c 14 48 54 54 50 42 61 73 69 63 41 75 74 68 48 61 1.j.%..M..M$.....HTTPBasicAuthHa
72220 6e 64 6c 65 72 94 6a 37 02 00 00 4d 1c 04 4d 24 04 87 94 8c 24 50 72 6f 78 79 42 61 73 69 63 41 ndler.j7...M..M$....$ProxyBasicA
72240 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 18 25 00 00 4d uthHandler.http_error_407.j.%..M
72260 2b 04 4d 33 04 87 94 8c 15 50 72 6f 78 79 42 61 73 69 63 41 75 74 68 48 61 6e 64 6c 65 72 94 6a +.M3.....ProxyBasicAuthHandler.j
72280 37 02 00 00 4d 27 04 4d 33 04 87 94 8c 22 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 7...M'.M3...."AbstractDigestAuth
722a0 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 45 04 4d 4c 04 87 94 8c 2b Handler.__init__.j.%..ME.ML....+
722c0 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 2e 72 65 73 65 74 5f AbstractDigestAuthHandler.reset_
722e0 72 65 74 72 79 5f 63 6f 75 6e 74 94 6a 18 25 00 00 4d 4e 04 4d 4f 04 87 94 8c 2f 41 62 73 74 72 retry_count.j.%..MN.MO..../Abstr
72300 61 63 74 44 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 actDigestAuthHandler.http_error_
72320 61 75 74 68 5f 72 65 71 65 64 94 6a 18 25 00 00 4d 51 04 4d 63 04 87 94 8c 30 41 62 73 74 72 61 auth_reqed.j.%..MQ.Mc....0Abstra
72340 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 72 65 74 72 79 5f 68 74 74 70 5f 64 ctDigestAuthHandler.retry_http_d
72360 69 67 65 73 74 5f 61 75 74 68 94 6a 18 25 00 00 4d 65 04 4d 6f 04 87 94 8c 24 41 62 73 74 72 61 igest_auth.j.%..Me.Mo....$Abstra
72380 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 67 65 74 5f 63 6e 6f 6e 63 65 94 6a ctDigestAuthHandler.get_cnonce.j
723a0 18 25 00 00 4d 71 04 4d 7a 04 87 94 8c 2b 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 .%..Mq.Mz....+AbstractDigestAuth
723c0 48 61 6e 64 6c 65 72 2e 67 65 74 5f 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 94 6a 18 25 00 00 4d Handler.get_authorization.j.%..M
723e0 7c 04 4d b8 04 87 94 8c 2d 41 62 73 74 72 61 63 74 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c |.M.....-AbstractDigestAuthHandl
72400 65 72 2e 67 65 74 5f 61 6c 67 6f 72 69 74 68 6d 5f 69 6d 70 6c 73 94 6a 18 25 00 00 4d ba 04 4d er.get_algorithm_impls.j.%..M..M
72420 c5 04 87 94 8c 2b 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 2e .....+AbstractDigestAuthHandler.
72440 67 65 74 5f 65 6e 74 69 74 79 5f 64 69 67 65 73 74 94 6a 18 25 00 00 4d c7 04 4d c9 04 87 94 8c get_entity_digest.j.%..M..M.....
72460 19 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 94 6a 37 02 00 00 .AbstractDigestAuthHandler.j7...
72480 4d 3a 04 4d c9 04 87 94 8c 24 48 54 54 50 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e M:.M.....$HTTPDigestAuthHandler.
724a0 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 31 94 6a 18 25 00 00 4d d6 04 4d db 04 87 94 8c 15 48 54 http_error_401.j.%..M..M......HT
724c0 54 50 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d cc 04 4d db 04 87 TPDigestAuthHandler.j7...M..M...
724e0 94 8c 25 50 72 6f 78 79 44 69 67 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 2e 68 74 74 70 5f 65 ..%ProxyDigestAuthHandler.http_e
72500 72 72 6f 72 5f 34 30 37 94 6a 18 25 00 00 4d e3 04 4d e8 04 87 94 8c 16 50 72 6f 78 79 44 69 67 rror_407.j.%..M..M......ProxyDig
72520 65 73 74 41 75 74 68 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d de 04 4d e8 04 87 94 8c 1c 41 62 estAuthHandler.j7...M..M......Ab
72540 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 94 6a 18 25 00 00 stractHTTPHandler.__init__.j.%..
72560 4d ec 04 4d ed 04 87 94 8c 27 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 73 65 M..M.....'AbstractHTTPHandler.se
72580 74 5f 68 74 74 70 5f 64 65 62 75 67 6c 65 76 65 6c 94 6a 18 25 00 00 4d ef 04 4d f0 04 87 94 8c t_http_debuglevel.j.%..M..M.....
725a0 27 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 5f 67 65 74 5f 63 6f 6e 74 65 6e 'AbstractHTTPHandler._get_conten
725c0 74 5f 6c 65 6e 67 74 68 94 6a 18 25 00 00 4d f2 04 4d f5 04 87 94 8c 1f 41 62 73 74 72 61 63 74 t_length.j.%..M..M......Abstract
725e0 48 54 54 50 48 61 6e 64 6c 65 72 2e 64 6f 5f 72 65 71 75 65 73 74 5f 94 6a 18 25 00 00 4d f7 04 HTTPHandler.do_request_.j.%..M..
72600 4d 1b 05 87 94 8c 1b 41 62 73 74 72 61 63 74 48 54 54 50 48 61 6e 64 6c 65 72 2e 64 6f 5f 6f 70 M......AbstractHTTPHandler.do_op
72620 65 6e 94 6a 18 25 00 00 4d 1d 05 4d 5d 05 87 94 8c 13 41 62 73 74 72 61 63 74 48 54 54 50 48 61 en.j.%..M..M].....AbstractHTTPHa
72640 6e 64 6c 65 72 94 6a 37 02 00 00 4d ea 04 4d 5d 05 87 94 8c 15 48 54 54 50 48 61 6e 64 6c 65 72 ndler.j7...M..M].....HTTPHandler
72660 2e 68 74 74 70 5f 6f 70 65 6e 94 6a 18 25 00 00 4d 62 05 4d 63 05 87 94 8c 0b 48 54 54 50 48 61 .http_open.j.%..Mb.Mc.....HTTPHa
72680 6e 64 6c 65 72 94 6a 37 02 00 00 4d 60 05 4d 65 05 87 94 8c 15 48 54 54 50 53 48 61 6e 64 6c 65 ndler.j7...M`.Me.....HTTPSHandle
726a0 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 6b 05 4d 6e 05 87 94 8c 17 48 54 54 50 53 48 r.__init__.j.%..Mk.Mn.....HTTPSH
726c0 61 6e 64 6c 65 72 2e 68 74 74 70 73 5f 6f 70 65 6e 94 6a 18 25 00 00 4d 70 05 4d 72 05 87 94 8c andler.https_open.j.%..Mp.Mr....
726e0 0c 48 54 54 50 53 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 69 05 4d 74 05 87 94 8c 1c 48 54 54 .HTTPSHandler.j7...Mi.Mt.....HTT
72700 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d PCookieProcessor.__init__.j.%..M
72720 79 05 4d 7d 05 87 94 8c 20 48 54 54 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 2e 68 74 74 y.M}.....HTTPCookieProcessor.htt
72740 70 5f 72 65 71 75 65 73 74 94 6a 18 25 00 00 4d 7f 05 4d 81 05 87 94 8c 21 48 54 54 50 43 6f 6f p_request.j.%..M..M.....!HTTPCoo
72760 6b 69 65 50 72 6f 63 65 73 73 6f 72 2e 68 74 74 70 5f 72 65 73 70 6f 6e 73 65 94 6a 18 25 00 00 kieProcessor.http_response.j.%..
72780 4d 83 05 4d 85 05 87 94 8c 13 48 54 54 50 43 6f 6f 6b 69 65 50 72 6f 63 65 73 73 6f 72 94 6a 37 M..M......HTTPCookieProcessor.j7
727a0 02 00 00 4d 78 05 4d 88 05 87 94 8c 1b 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2e 75 6e 6b 6e ...Mx.M......UnknownHandler.unkn
727c0 6f 77 6e 5f 6f 70 65 6e 94 6a 18 25 00 00 4d 8b 05 4d 8d 05 87 94 8c 0e 55 6e 6b 6e 6f 77 6e 48 own_open.j.%..M..M......UnknownH
727e0 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 8a 05 4d 8d 05 87 94 8c 0f 70 61 72 73 65 5f 6b 65 71 76 andler.j7...M..M......parse_keqv
72800 5f 6c 69 73 74 94 6a 18 25 00 00 4d 8f 05 4d 97 05 87 94 8c 0f 70 61 72 73 65 5f 68 74 74 70 5f _list.j.%..M..M......parse_http_
72820 6c 69 73 74 94 6a 18 25 00 00 4d 99 05 4d c2 05 87 94 8c 15 46 69 6c 65 48 61 6e 64 6c 65 72 2e list.j.%..M..M......FileHandler.
72840 66 69 6c 65 5f 6f 70 65 6e 94 6a 18 25 00 00 4d c6 05 4d cd 05 87 94 8c 15 46 69 6c 65 48 61 6e file_open.j.%..M..M......FileHan
72860 64 6c 65 72 2e 67 65 74 5f 6e 61 6d 65 73 94 6a 18 25 00 00 4d d1 05 4d d9 05 87 94 8c 1b 46 69 dler.get_names.j.%..M..M......Fi
72880 6c 65 48 61 6e 64 6c 65 72 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c 65 94 6a 18 25 00 00 4d leHandler.open_local_file.j.%..M
728a0 dc 05 4d f5 05 87 94 8c 0b 46 69 6c 65 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d c4 05 4d f5 05 ..M......FileHandler.j7...M..M..
728c0 87 94 8c 13 5f 73 61 66 65 5f 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 94 6a 18 25 00 00 4d f7 05 ...._safe_gethostbyname.j.%..M..
728e0 4d fb 05 87 94 8c 13 46 54 50 48 61 6e 64 6c 65 72 2e 66 74 70 5f 6f 70 65 6e 94 6a 18 25 00 00 M......FTPHandler.ftp_open.j.%..
72900 4d fe 05 4d 31 06 87 94 8c 16 46 54 50 48 61 6e 64 6c 65 72 2e 63 6f 6e 6e 65 63 74 5f 66 74 70 M..M1.....FTPHandler.connect_ftp
72920 94 6a 18 25 00 00 4d 33 06 4d 35 06 87 94 8c 0a 46 54 50 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 .j.%..M3.M5.....FTPHandler.j7...
72940 4d fd 05 4d 35 06 87 94 8c 18 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 5f 5f 69 6e 69 74 M..M5.....CacheFTPHandler.__init
72960 5f 5f 94 6a 18 25 00 00 4d 3a 06 4d 3f 06 87 94 8c 1a 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 __.j.%..M:.M?.....CacheFTPHandle
72980 72 2e 73 65 74 54 69 6d 65 6f 75 74 94 6a 18 25 00 00 4d 41 06 4d 42 06 87 94 8c 1b 43 61 63 68 r.setTimeout.j.%..MA.MB.....Cach
729a0 65 46 54 50 48 61 6e 64 6c 65 72 2e 73 65 74 4d 61 78 43 6f 6e 6e 73 94 6a 18 25 00 00 4d 44 06 eFTPHandler.setMaxConns.j.%..MD.
729c0 4d 45 06 87 94 8c 1b 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 63 6f 6e 6e 65 63 74 5f 66 ME.....CacheFTPHandler.connect_f
729e0 74 70 94 6a 18 25 00 00 4d 47 06 4d 50 06 87 94 8c 1b 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 tp.j.%..MG.MP.....CacheFTPHandle
72a00 72 2e 63 68 65 63 6b 5f 63 61 63 68 65 94 6a 18 25 00 00 4d 52 06 4d 64 06 87 94 8c 1b 43 61 63 r.check_cache.j.%..MR.Md.....Cac
72a20 68 65 46 54 50 48 61 6e 64 6c 65 72 2e 63 6c 65 61 72 5f 63 61 63 68 65 94 6a 18 25 00 00 4d 66 heFTPHandler.clear_cache.j.%..Mf
72a40 06 4d 6a 06 87 94 8c 0f 43 61 63 68 65 46 54 50 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 37 06 .Mj.....CacheFTPHandler.j7...M7.
72a60 4d 6a 06 87 94 8c 15 44 61 74 61 48 61 6e 64 6c 65 72 2e 64 61 74 61 5f 6f 70 65 6e 94 6a 18 25 Mj.....DataHandler.data_open.j.%
72a80 00 00 4d 6d 06 4d 88 06 87 94 8c 0b 44 61 74 61 48 61 6e 64 6c 65 72 94 6a 37 02 00 00 4d 6c 06 ..Mm.M......DataHandler.j7...Ml.
72aa0 4d 88 06 87 94 8c 0c 75 72 6c 32 70 61 74 68 6e 61 6d 65 94 6a 18 25 00 00 4d 93 06 4d 96 06 87 M......url2pathname.j.%..M..M...
72ac0 94 8c 0c 70 61 74 68 6e 61 6d 65 32 75 72 6c 94 6a 18 25 00 00 4d 98 06 4d 9b 06 87 94 8c 12 55 ...pathname2url.j.%..M..M......U
72ae0 52 4c 6f 70 65 6e 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d ae 06 4d c2 06 87 94 8c RLopener.__init__.j.%..M..M.....
72b00 11 55 52 4c 6f 70 65 6e 65 72 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4d c8 06 4d c9 06 87 94 .URLopener.__del__.j.%..M..M....
72b20 8c 0f 55 52 4c 6f 70 65 6e 65 72 2e 63 6c 6f 73 65 94 6a 18 25 00 00 4d cb 06 4d cc 06 87 94 8c ..URLopener.close.j.%..M..M.....
72b40 11 55 52 4c 6f 70 65 6e 65 72 2e 63 6c 65 61 6e 75 70 94 6a 18 25 00 00 4d ce 06 4d da 06 87 94 .URLopener.cleanup.j.%..M..M....
72b60 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 61 64 64 68 65 61 64 65 72 94 6a 18 25 00 00 4d dc 06 4d df ..URLopener.addheader.j.%..M..M.
72b80 06 87 94 8c 0e 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 94 6a 18 25 00 00 4d e2 06 4d 04 07 87 .....URLopener.open.j.%..M..M...
72ba0 94 8c 16 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 75 6e 6b 6e 6f 77 6e 94 6a 18 25 00 00 4d ...URLopener.open_unknown.j.%..M
72bc0 06 07 4d 09 07 87 94 8c 1c 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 75 6e 6b 6e 6f 77 6e 5f ..M......URLopener.open_unknown_
72be0 70 72 6f 78 79 94 6a 18 25 00 00 4d 0b 07 4d 0e 07 87 94 8c 12 55 52 4c 6f 70 65 6e 65 72 2e 72 proxy.j.%..M..M......URLopener.r
72c00 65 74 72 69 65 76 65 94 6a 18 25 00 00 4d 11 07 4d 4e 07 87 94 8c 1c 55 52 4c 6f 70 65 6e 65 72 etrieve.j.%..M..MN.....URLopener
72c20 2e 5f 6f 70 65 6e 5f 67 65 6e 65 72 69 63 5f 68 74 74 70 94 6a 18 25 00 00 4d 52 07 4d ac 07 87 ._open_generic_http.j.%..MR.M...
72c40 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 68 74 74 70 94 6a 18 25 00 00 4d ae 07 4d ...URLopener.open_http.j.%..M..M
72c60 b0 07 87 94 8c 14 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 94 6a 18 25 00 00 ......URLopener.http_error.j.%..
72c80 4d b2 07 4d c0 07 87 94 8c 1c 55 52 4c 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 64 M..M......URLopener.http_error_d
72ca0 65 66 61 75 6c 74 94 6a 18 25 00 00 4d c2 07 4d c5 07 87 94 8c 1b 55 52 4c 6f 70 65 6e 65 72 2e efault.j.%..M..M......URLopener.
72cc0 5f 68 74 74 70 73 5f 63 6f 6e 6e 65 63 74 69 6f 6e 94 6a 18 25 00 00 4d c8 07 4d cb 07 87 94 8c _https_connection.j.%..M..M.....
72ce0 14 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 68 74 74 70 73 94 6a 18 25 00 00 4d cd 07 4d cf .URLopener.open_https.j.%..M..M.
72d00 07 87 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 66 69 6c 65 94 6a 18 25 00 00 4d d1 .....URLopener.open_file.j.%..M.
72d20 07 4d d8 07 87 94 8c 19 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f 6c 6f 63 61 6c 5f 66 69 6c .M......URLopener.open_local_fil
72d40 65 94 6a 18 25 00 00 4d da 07 4d f8 07 87 94 8c 12 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 6e 5f e.j.%..M..M......URLopener.open_
72d60 66 74 70 94 6a 18 25 00 00 4d fa 07 4d 32 08 87 94 8c 13 55 52 4c 6f 70 65 6e 65 72 2e 6f 70 65 ftp.j.%..M..M2.....URLopener.ope
72d80 6e 5f 64 61 74 61 94 6a 18 25 00 00 4d 34 08 4d 5b 08 87 94 8c 09 55 52 4c 6f 70 65 6e 65 72 94 n_data.j.%..M4.M[.....URLopener.
72da0 6a 37 02 00 00 4d a1 06 4d 5b 08 87 94 8c 17 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 5f 5f j7...M..M[.....FancyURLopener.__
72dc0 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 61 08 4d 65 08 87 94 8c 21 46 61 6e 63 79 55 52 4c 6f 70 init__.j.%..Ma.Me....!FancyURLop
72de0 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 18 25 00 00 4d 67 08 ener.http_error_default.j.%..Mg.
72e00 4d 69 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 6f 72 Mi.....FancyURLopener.http_error
72e20 5f 33 30 32 94 6a 18 25 00 00 4d 6b 08 4d 7b 08 87 94 8c 20 46 61 6e 63 79 55 52 4c 6f 70 65 6e _302.j.%..Mk.M{.....FancyURLopen
72e40 65 72 2e 72 65 64 69 72 65 63 74 5f 69 6e 74 65 72 6e 61 6c 94 6a 18 25 00 00 4d 7d 08 4d 97 08 er.redirect_internal.j.%..M}.M..
72e60 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 6f 72 5f 33 30 ....FancyURLopener.http_error_30
72e80 31 94 6a 18 25 00 00 4d 99 08 4d 9b 08 87 94 8c 1d 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 1.j.%..M..M......FancyURLopener.
72ea0 68 74 74 70 5f 65 72 72 6f 72 5f 33 30 33 94 6a 18 25 00 00 4d 9d 08 4d 9f 08 87 94 8c 1d 46 61 http_error_303.j.%..M..M......Fa
72ec0 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 37 94 6a 18 25 00 ncyURLopener.http_error_307.j.%.
72ee0 00 4d a1 08 4d a6 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 .M..M......FancyURLopener.http_e
72f00 72 72 6f 72 5f 34 30 31 94 6a 18 25 00 00 4d a8 08 4d bf 08 87 94 8c 1d 46 61 6e 63 79 55 52 4c rror_401.j.%..M..M......FancyURL
72f20 6f 70 65 6e 65 72 2e 68 74 74 70 5f 65 72 72 6f 72 5f 34 30 37 94 6a 18 25 00 00 4d c1 08 4d d8 opener.http_error_407.j.%..M..M.
72f40 08 87 94 8c 2a 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 65 74 72 79 5f 70 72 6f 78 79 5f ....*FancyURLopener.retry_proxy_
72f60 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 94 6a 18 25 00 00 4d da 08 4d ea 08 87 94 8c 2b 46 http_basic_auth.j.%..M..M.....+F
72f80 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 65 74 72 79 5f 70 72 6f 78 79 5f 68 74 74 70 73 5f ancyURLopener.retry_proxy_https_
72fa0 62 61 73 69 63 5f 61 75 74 68 94 6a 18 25 00 00 4d ec 08 4d fc 08 87 94 8c 24 46 61 6e 63 79 55 basic_auth.j.%..M..M.....$FancyU
72fc0 52 4c 6f 70 65 6e 65 72 2e 72 65 74 72 79 5f 68 74 74 70 5f 62 61 73 69 63 5f 61 75 74 68 94 6a RLopener.retry_http_basic_auth.j
72fe0 18 25 00 00 4d fe 08 4d 0a 09 87 94 8c 25 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 72 65 74 .%..M..M.....%FancyURLopener.ret
73000 72 79 5f 68 74 74 70 73 5f 62 61 73 69 63 5f 61 75 74 68 94 6a 18 25 00 00 4d 0c 09 4d 18 09 87 ry_https_basic_auth.j.%..M..M...
73020 94 8c 1e 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e 67 65 74 5f 75 73 65 72 5f 70 61 73 73 77 ...FancyURLopener.get_user_passw
73040 64 94 6a 18 25 00 00 4d 1a 09 4d 23 09 87 94 8c 21 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 2e d.j.%..M..M#....!FancyURLopener.
73060 70 72 6f 6d 70 74 5f 75 73 65 72 5f 70 61 73 73 77 64 94 6a 18 25 00 00 4d 25 09 4d 2f 09 87 94 prompt_user_passwd.j.%..M%.M/...
73080 8c 0e 46 61 6e 63 79 55 52 4c 6f 70 65 6e 65 72 94 6a 37 02 00 00 4d 5e 08 4d 2f 09 87 94 8c 09 ..FancyURLopener.j7...M^.M/.....
730a0 6c 6f 63 61 6c 68 6f 73 74 94 6a 18 25 00 00 4d 35 09 4d 3a 09 87 94 8c 08 74 68 69 73 68 6f 73 localhost.j.%..M5.M:.....thishos
730c0 74 94 6a 18 25 00 00 4d 3d 09 4d 45 09 87 94 8c 09 66 74 70 65 72 72 6f 72 73 94 6a 18 25 00 00 t.j.%..M=.ME.....ftperrors.j.%..
730e0 4d 48 09 4d 4e 09 87 94 8c 09 6e 6f 68 65 61 64 65 72 73 94 6a 18 25 00 00 4d 51 09 4d 56 09 87 MH.MN.....noheaders.j.%..MQ.MV..
73100 94 8c 13 66 74 70 77 72 61 70 70 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4d 5e 09 4d ...ftpwrapper.__init__.j.%..M^.M
73120 6c 09 87 94 8c 0f 66 74 70 77 72 61 70 70 65 72 2e 69 6e 69 74 94 6a 18 25 00 00 4d 6e 09 4d 75 l.....ftpwrapper.init.j.%..Mn.Mu
73140 09 87 94 8c 13 66 74 70 77 72 61 70 70 65 72 2e 72 65 74 72 66 69 6c 65 94 6a 18 25 00 00 4d 77 .....ftpwrapper.retrfile.j.%..Mw
73160 09 4d a2 09 87 94 8c 16 66 74 70 77 72 61 70 70 65 72 2e 65 6e 64 74 72 61 6e 73 66 65 72 94 6a .M......ftpwrapper.endtransfer.j
73180 18 25 00 00 4d a4 09 4d a5 09 87 94 8c 10 66 74 70 77 72 61 70 70 65 72 2e 63 6c 6f 73 65 94 6a .%..M..M......ftpwrapper.close.j
731a0 18 25 00 00 4d a7 09 4d aa 09 87 94 8c 15 66 74 70 77 72 61 70 70 65 72 2e 66 69 6c 65 5f 63 6c .%..M..M......ftpwrapper.file_cl
731c0 6f 73 65 94 6a 18 25 00 00 4d ac 09 4d b0 09 87 94 8c 15 66 74 70 77 72 61 70 70 65 72 2e 72 65 ose.j.%..M..M......ftpwrapper.re
731e0 61 6c 5f 63 6c 6f 73 65 94 6a 18 25 00 00 4d b2 09 4d b7 09 87 94 8c 0a 66 74 70 77 72 61 70 70 al_close.j.%..M..M......ftpwrapp
73200 65 72 94 6a 37 02 00 00 4d 5b 09 4d b7 09 87 94 8c 16 67 65 74 70 72 6f 78 69 65 73 5f 65 6e 76 er.j7...M[.M......getproxies_env
73220 69 72 6f 6e 6d 65 6e 74 94 6a 18 25 00 00 4d ba 09 4d d7 09 87 94 8c 18 70 72 6f 78 79 5f 62 79 ironment.j.%..M..M......proxy_by
73240 70 61 73 73 5f 65 6e 76 69 72 6f 6e 6d 65 6e 74 94 6a 18 25 00 00 4d d9 09 4d f9 09 87 94 8c 1c pass_environment.j.%..M..M......
73260 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 94 6a 18 25 _proxy_bypass_macosx_sysconf.j.%
73280 00 00 4d fe 09 4d 37 0a 87 94 8c 1b 70 72 6f 78 79 5f 62 79 70 61 73 73 5f 6d 61 63 6f 73 78 5f ..M..M7.....proxy_bypass_macosx_
732a0 73 79 73 63 6f 6e 66 94 6a 18 25 00 00 4d 3d 0a 4d 3f 0a 87 94 8c 19 67 65 74 70 72 6f 78 69 65 sysconf.j.%..M=.M?.....getproxie
732c0 73 5f 6d 61 63 6f 73 78 5f 73 79 73 63 6f 6e 66 94 6a 18 25 00 00 4d 41 0a 4d 47 0a 87 94 8c 0c s_macosx_sysconf.j.%..MA.MG.....
732e0 70 72 6f 78 79 5f 62 79 70 61 73 73 94 6a 18 25 00 00 4d c5 0a 4d d0 0a 87 94 8c 0a 67 65 74 70 proxy_bypass.j.%..M..M......getp
73300 72 6f 78 69 65 73 94 6a 18 25 00 00 4d 8a 0a 4d 91 0a 87 94 8c 13 67 65 74 70 72 6f 78 69 65 73 roxies.j.%..M..M......getproxies
73320 5f 72 65 67 69 73 74 72 79 94 6a 18 25 00 00 4d 5d 0a 4d 88 0a 87 94 8c 15 70 72 6f 78 79 5f 62 _registry.j.%..M].M......proxy_b
73340 79 70 61 73 73 5f 72 65 67 69 73 74 72 79 94 6a 18 25 00 00 4d 93 0a 4d c3 0a 87 94 75 7d 94 8c ypass_registry.j.%..M..M....u}..
73360 12 4d 32 43 72 79 70 74 6f 2e 6d 32 75 72 6c 6c 69 62 32 94 74 94 8c 14 4d 32 43 72 79 70 74 6f .M2Crypto.m2urllib2.t...M2Crypto
73380 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 94 28 58 49 09 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 .m2xmlrpclib.(XI...from.__future
733a0 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
733c0 43 72 79 70 74 6f 20 65 6e 68 61 6e 63 65 6d 65 6e 74 20 74 6f 20 78 6d 6c 72 70 63 6c 69 62 2e Crypto.enhancement.to.xmlrpclib.
733e0 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 65 ..Copyright.(c).1999-2003.Ng.Phe
73400 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.""
73420 22 0a 0a 69 6d 70 6f 72 74 20 62 61 73 65 36 34 0a 0a 69 6d 70 6f 72 74 20 4d 32 43 72 79 70 74 "..import.base64..import.M2Crypt
73440 6f 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 4c 2c 20 68 74 74 o..from.M2Crypto.import.SSL,.htt
73460 70 73 6c 69 62 2c 20 6d 32 75 72 6c 6c 69 62 2c 20 73 69 78 0a 66 72 6f 6d 20 74 79 70 69 6e 67 pslib,.m2urllib,.six.from.typing
73480 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 4f .import.Any,.AnyStr,.Callable,.O
734a0 70 74 69 6f 6e 61 6c 20 20 23 20 6e 6f 71 61 0a 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 ptional..#.noqa..from.M2Crypto.s
734c0 69 78 2e 6d 6f 76 65 73 2e 78 6d 6c 72 70 63 5f 63 6c 69 65 6e 74 20 69 6d 70 6f 72 74 20 50 72 ix.moves.xmlrpc_client.import.Pr
734e0 6f 74 6f 63 6f 6c 45 72 72 6f 72 2c 20 54 72 61 6e 73 70 6f 72 74 0a 23 20 73 69 78 2e 6d 6f 76 otocolError,.Transport.#.six.mov
73500 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 74 73 0a es.doesn't.support.star.imports.
73520 69 66 20 73 69 78 2e 50 59 33 3a 0a 20 20 20 20 66 72 6f 6d 20 78 6d 6c 72 70 63 2e 63 6c 69 65 if.six.PY3:.....from.xmlrpc.clie
73540 6e 74 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 0a 65 6c 73 65 3a 0a 20 20 20 20 66 72 nt.import.*..#.noqa.else:.....fr
73560 6f 6d 20 78 6d 6c 72 70 63 6c 69 62 20 69 6d 70 6f 72 74 20 2a 20 20 23 20 6e 6f 71 61 0a 0a 5f om.xmlrpclib.import.*..#.noqa.._
73580 5f 76 65 72 73 69 6f 6e 5f 5f 20 3d 20 4d 32 43 72 79 70 74 6f 2e 5f 5f 76 65 72 73 69 6f 6e 5f _version__.=.M2Crypto.__version_
735a0 5f 0a 0a 0a 63 6c 61 73 73 20 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 28 54 72 61 6e 73 70 6f 72 _...class.SSL_Transport(Transpor
735c0 74 29 3a 0a 0a 20 20 20 20 75 73 65 72 5f 61 67 65 6e 74 20 3d 20 22 4d 32 43 72 79 70 74 6f 5f t):......user_agent.=."M2Crypto_
735e0 58 4d 4c 52 50 43 2f 25 73 20 2d 20 25 73 22 20 25 20 28 5f 5f 76 65 72 73 69 6f 6e 5f 5f 2c 0a XMLRPC/%s.-.%s".%.(__version__,.
73600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
73620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 6e 73 70 6f 72 74 2e 75 73 65 72 5f 61 67 65 ..............Transport.user_age
73640 6e 74 29 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 73 73 6c 5f nt)......def.__init__(self,.ssl_
73660 63 6f 6e 74 65 78 74 3d 4e 6f 6e 65 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 29 3a 0a 20 20 20 20 context=None,.*args,.**kw):.....
73680 20 20 20 20 23 20 74 79 70 65 3a 20 28 4f 70 74 69 6f 6e 61 6c 5b 53 53 4c 2e 43 6f 6e 74 65 78 ....#.type:.(Optional[SSL.Contex
736a0 74 5d 2c 20 2a 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 t],.*Any,.**Any).->.None........
736c0 20 54 72 61 6e 73 70 6f 72 74 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 2a 61 72 67 73 2c .Transport.__init__(self,.*args,
736e0 20 2a 2a 6b 77 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 73 6c 5f 63 6f 6e 74 65 78 74 20 69 73 .**kw).........if.ssl_context.is
73700 20 4e 6f 6e 65 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 .None:.............self.ssl_ctx.
73720 3d 20 53 53 4c 2e 43 6f 6e 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 =.SSL.Context().........else:...
73740 20 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 6f 6e ..........self.ssl_ctx.=.ssl_con
73760 74 65 78 74 0a 0a 20 20 20 20 64 65 66 20 72 65 71 75 65 73 74 28 73 65 6c 66 2c 20 68 6f 73 74 text......def.request(self,.host
73780 2c 20 68 61 6e 64 6c 65 72 2c 20 72 65 71 75 65 73 74 5f 62 6f 64 79 2c 20 76 65 72 62 6f 73 65 ,.handler,.request_body,.verbose
737a0 3d 30 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 43 61 =0):.........#.type:.(AnyStr,.Ca
737c0 6c 6c 61 62 6c 65 2c 20 62 79 74 65 73 2c 20 69 6e 74 29 20 2d 3e 20 6f 62 6a 65 63 74 0a 20 20 llable,.bytes,.int).->.object...
737e0 20 20 20 20 20 20 23 20 48 61 6e 64 6c 65 20 75 73 65 72 6e 61 6d 65 20 61 6e 64 20 70 61 73 73 ......#.Handle.username.and.pass
73800 77 6f 72 64 2e 0a 20 20 20 20 20 20 20 20 75 73 65 72 5f 70 61 73 73 77 64 2c 20 68 6f 73 74 5f word..........user_passwd,.host_
73820 70 6f 72 74 20 3d 20 6d 32 75 72 6c 6c 69 62 2e 73 70 6c 69 74 75 73 65 72 28 68 6f 73 74 29 0a port.=.m2urllib.splituser(host).
73840 20 20 20 20 20 20 20 20 5f 68 6f 73 74 2c 20 5f 70 6f 72 74 20 3d 20 6d 32 75 72 6c 6c 69 62 2e ........_host,._port.=.m2urllib.
73860 73 70 6c 69 74 70 6f 72 74 28 68 6f 73 74 5f 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 68 20 3d splitport(host_port).........h.=
73880 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 5f 68 6f 73 74 2c .httpslib.HTTPSConnection(_host,
738a0 20 69 6e 74 28 5f 70 6f 72 74 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .int(_port),....................
738c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 73 6c 5f 63 6f 6e 74 65 78 74 3d 73 65 ..................ssl_context=se
738e0 6c 66 2e 73 73 6c 5f 63 74 78 29 0a 20 20 20 20 20 20 20 20 69 66 20 76 65 72 62 6f 73 65 3a 0a lf.ssl_ctx).........if.verbose:.
73900 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 73 65 74 5f 64 65 62 75 67 6c 65 76 65 6c 28 31 29 0a ............h.set_debuglevel(1).
73920 0a 20 20 20 20 20 20 20 20 23 20 57 68 61 74 20 66 6f 6c 6c 6f 77 73 20 69 73 20 61 73 20 69 6e .........#.What.follows.is.as.in
73940 20 78 6d 6c 72 70 63 6c 69 62 2e 54 72 61 6e 73 70 6f 72 74 2e 20 28 45 78 63 65 70 74 20 74 68 .xmlrpclib.Transport..(Except.th
73960 65 20 61 75 74 68 7a 20 62 69 74 2e 29 0a 20 20 20 20 20 20 20 20 68 2e 70 75 74 72 65 71 75 65 e.authz.bit.).........h.putreque
73980 73 74 28 22 50 4f 53 54 22 2c 20 68 61 6e 64 6c 65 72 29 0a 0a 20 20 20 20 20 20 20 20 23 20 72 st("POST",.handler)..........#.r
739a0 65 71 75 69 72 65 64 20 62 79 20 48 54 54 50 2f 31 2e 31 0a 20 20 20 20 20 20 20 20 68 2e 70 75 equired.by.HTTP/1.1.........h.pu
739c0 74 68 65 61 64 65 72 28 22 48 6f 73 74 22 2c 20 5f 68 6f 73 74 29 0a 0a 20 20 20 20 20 20 20 20 theader("Host",._host)..........
739e0 23 20 72 65 71 75 69 72 65 64 20 62 79 20 58 4d 4c 2d 52 50 43 0a 20 20 20 20 20 20 20 20 68 2e #.required.by.XML-RPC.........h.
73a00 70 75 74 68 65 61 64 65 72 28 22 55 73 65 72 2d 41 67 65 6e 74 22 2c 20 73 65 6c 66 2e 75 73 65 putheader("User-Agent",.self.use
73a20 72 5f 61 67 65 6e 74 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 r_agent).........h.putheader("Co
73a40 6e 74 65 6e 74 2d 54 79 70 65 22 2c 20 22 74 65 78 74 2f 78 6d 6c 22 29 0a 20 20 20 20 20 20 20 ntent-Type",."text/xml")........
73a60 20 68 2e 70 75 74 68 65 61 64 65 72 28 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 22 2c 20 73 .h.putheader("Content-Length",.s
73a80 74 72 28 6c 65 6e 28 72 65 71 75 65 73 74 5f 62 6f 64 79 29 29 29 0a 0a 20 20 20 20 20 20 20 20 tr(len(request_body)))..........
73aa0 23 20 41 75 74 68 6f 72 69 73 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 #.Authorisation..........if.user
73ac0 5f 70 61 73 73 77 64 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 _passwd.is.not.None:............
73ae0 20 61 75 74 68 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 .auth.=.base64.encodestring(user
73b00 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 20 20 20 20 68 2e 70 _passwd).strip().............h.p
73b20 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 20 27 42 61 73 69 63 utheader('Authorization',.'Basic
73b40 20 25 73 27 20 25 20 61 75 74 68 29 0a 0a 20 20 20 20 20 20 20 20 68 2e 65 6e 64 68 65 61 64 65 .%s'.%.auth)..........h.endheade
73b60 72 73 28 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 71 75 65 73 74 5f 62 6f 64 79 3a 0a 20 rs()..........if.request_body:..
73b80 20 20 20 20 20 20 20 20 20 20 20 68 2e 73 65 6e 64 28 72 65 71 75 65 73 74 5f 62 6f 64 79 29 0a ...........h.send(request_body).
73ba0 0a 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 3d 20 68 2e 67 65 74 72 65 73 70 6f 6e 73 .........response.=.h.getrespons
73bc0 65 28 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 20 e()..........if.response.status.
73be0 21 3d 20 32 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 50 72 6f 74 6f 63 !=.200:.............raise.Protoc
73c00 6f 6c 45 72 72 6f 72 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 2b 20 olError(.................host.+.
73c20 68 61 6e 64 6c 65 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 handler,.................respons
73c40 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 0a 20 20 20 20 20 e.status,.response.reason,......
73c60 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 2e 67 65 74 68 65 61 64 65 72 73 28 29 ...........response.getheaders()
73c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 65 72 .............)..........self.ver
73ca0 62 6f 73 65 20 3d 20 76 65 72 62 6f 73 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 bose.=.verbose.........return.se
73cc0 6c 66 2e 70 61 72 73 65 5f 72 65 73 70 6f 6e 73 65 28 72 65 73 70 6f 6e 73 65 29 0a 94 7d 94 28 lf.parse_response(response)..}.(
73ce0 8c 16 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 1d ..SSL_Transport.__init__.j.%..K.
73d00 4b 23 87 94 8c 15 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 2e 72 65 71 75 65 73 74 94 6a 18 25 00 K#....SSL_Transport.request.j.%.
73d20 00 4b 25 4b 4e 87 94 8c 0d 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 94 6a 37 02 00 00 4b 18 4b 4e .K%KN....SSL_Transport.j7...K.KN
73d40 87 94 75 7d 94 28 8c 0d 53 53 4c 5f 54 72 61 6e 73 70 6f 72 74 94 6a 60 02 00 00 8c 15 53 53 4c ..u}.(..SSL_Transport.j`.....SSL
73d60 5f 54 72 61 6e 73 70 6f 72 74 2e 72 65 71 75 65 73 74 94 6a 60 02 00 00 75 8c 14 4d 32 43 72 79 _Transport.request.j`...u..M2Cry
73d80 70 74 6f 2e 6d 32 78 6d 6c 72 70 63 6c 69 62 94 74 94 8c 12 4d 32 43 72 79 70 74 6f 2e 74 68 72 pto.m2xmlrpclib.t...M2Crypto.thr
73da0 65 61 64 69 6e 67 94 28 58 bf 01 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 69 6d 70 eading.(X....from.__future__.imp
73dc0 6f 72 74 20 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 ort.absolute_import..""".M2Crypt
73de0 6f 20 74 68 72 65 61 64 69 6e 67 20 73 75 70 70 6f 72 74 2c 20 72 65 71 75 69 72 65 64 20 66 6f o.threading.support,.required.fo
73e00 72 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 0a 43 r.multithreaded.applications...C
73e20 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 6e 67 20 opyright.(c).1999-2003.Ng.Pheng.
73e40 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 22 0a 0a Siong..All.rights.reserved."""..
73e60 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 6d 70 6f 72 74 20 #.M2Crypto.from.M2Crypto.import.
73e80 6d 32 0a 0a 0a 64 65 66 20 69 6e 69 74 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 m2...def.init():.....#.type:.().
73ea0 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 22 22 22 0a 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 ->.None.....""".....Initialize.t
73ec0 68 72 65 61 64 69 6e 67 20 73 75 70 70 6f 72 74 2e 0a 20 20 20 20 22 22 22 0a 20 20 20 20 6d 32 hreading.support......""".....m2
73ee0 2e 74 68 72 65 61 64 69 6e 67 5f 69 6e 69 74 28 29 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 75 70 28 .threading_init()...def.cleanup(
73f00 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 20 20 22 22 ):.....#.type:.().->.None.....""
73f20 22 0a 20 20 20 20 45 6e 64 20 61 6e 64 20 63 6c 65 61 6e 75 70 20 74 68 72 65 61 64 69 6e 67 20 ".....End.and.cleanup.threading.
73f40 73 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 support......""".....m2.threadin
73f60 67 5f 63 6c 65 61 6e 75 70 28 29 0a 94 7d 94 28 8c 04 69 6e 69 74 94 6a 18 25 00 00 4b 0c 4b 11 g_cleanup()..}.(..init.j.%..K.K.
73f80 87 94 8c 07 63 6c 65 61 6e 75 70 94 6a 18 25 00 00 4b 14 4b 19 87 94 75 7d 94 28 8c 07 63 6c 65 ....cleanup.j.%..K.K...u}.(..cle
73fa0 61 6e 75 70 94 6a 60 02 00 00 8c 04 69 6e 69 74 94 6a 60 02 00 00 75 8c 12 4d 32 43 72 79 70 74 anup.j`.....init.j`...u..M2Crypt
73fc0 6f 2e 74 68 72 65 61 64 69 6e 67 94 74 94 8c 0d 4d 32 43 72 79 70 74 6f 2e 75 74 69 6c 94 28 58 o.threading.t...M2Crypto.util.(X
73fe0 dd 07 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 ....from.__future__.import.absol
74000 75 74 65 5f 69 6d 70 6f 72 74 0a 22 22 22 0a 20 20 20 20 4d 32 43 72 79 70 74 6f 20 75 74 69 6c ute_import.""".....M2Crypto.util
74020 69 74 79 20 72 6f 75 74 69 6e 65 73 2e 0a 0a 20 20 20 20 4e 4f 54 48 49 4e 47 20 49 4e 20 54 48 ity.routines.......NOTHING.IN.TH
74040 49 53 20 4d 4f 44 55 4c 45 20 49 53 20 47 55 41 52 41 4e 54 45 45 44 20 54 4f 20 42 45 20 53 54 IS.MODULE.IS.GUARANTEED.TO.BE.ST
74060 41 42 4c 45 2c 20 55 53 45 44 20 4f 4e 4c 59 20 46 4f 52 0a 20 20 20 20 49 4e 54 45 52 4e 41 4c ABLE,.USED.ONLY.FOR.....INTERNAL
74080 20 50 55 52 50 4f 53 45 53 20 4f 46 20 4d 32 43 52 59 50 54 4f 2e 0a 0a 20 20 20 20 43 6f 70 79 .PURPOSES.OF.M2CRYPTO.......Copy
740a0 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 6f right.(c).1999-2004.Ng.Pheng.Sio
740c0 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 20 20 20 20 50 6f ng..All.rights.reserved.......Po
740e0 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 70 rtions.created.by.Open.Source.Ap
74100 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 65 plications.Foundation.(OSAF).are
74120 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 41 46 2e 20 41 6c .....Copyright.(C).2004.OSAF..Al
74140 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 62 l.Rights.Reserved.."""..import.b
74160 69 6e 61 73 63 69 69 0a 69 6d 70 6f 72 74 20 6c 6f 67 67 69 6e 67 0a 69 6d 70 6f 72 74 20 73 79 inascii.import.logging.import.sy
74180 73 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 20 73 69 78 0a s..from.M2Crypto.import.m2,.six.
741a0 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 4f 70 74 69 6f 6e 61 6c from.typing.import.Any,.Optional
741c0 2c 20 54 65 78 74 49 4f 2c 20 54 75 70 6c 65 2c 20 55 6e 69 6f 6e 20 20 23 20 6e 6f 71 61 0a 23 ,.TextIO,.Tuple,.Union..#.noqa.#
741e0 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 79 74 68 6f 6e 2f 74 .see.https://github.com/python/t
74200 79 70 65 73 68 65 64 2f 69 73 73 75 65 73 2f 32 32 32 0a 41 64 64 72 54 79 70 65 20 3d 20 55 6e ypeshed/issues/222.AddrType.=.Un
74220 69 6f 6e 5b 54 75 70 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 ion[Tuple[str,.int],.str]..log.=
74240 20 6c 6f 67 67 69 6e 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 .logging.getLogger('util')...cla
74260 73 73 20 55 74 69 6c 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 ss.UtilError(Exception):.....pas
74280 73 0a 0a 0a 6d 32 2e 75 74 69 6c 5f 69 6e 69 74 28 55 74 69 6c 45 72 72 6f 72 29 0a 0a 0a 64 65 s...m2.util_init(UtilError)...de
742a0 66 20 70 6b 63 73 35 5f 70 61 64 28 64 61 74 61 2c 20 62 6c 6b 6c 65 6e 3d 38 29 3a 0a 20 20 20 f.pkcs5_pad(data,.blklen=8):....
742c0 20 23 20 74 79 70 65 3a 20 28 73 74 72 2c 20 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 70 .#.type:.(str,.int).->.str.....p
742e0 61 64 20 3d 20 28 38 20 2d 20 28 6c 65 6e 28 64 61 74 61 29 20 25 20 38 29 29 0a 20 20 20 20 72 ad.=.(8.-.(len(data).%.8)).....r
74300 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 0a 0a 64 65 eturn.data.+.chr(pad).*.pad...de
74320 66 20 70 6b 63 73 37 5f 70 61 64 28 64 61 74 61 2c 20 62 6c 6b 6c 65 6e 29 3a 0a 20 20 20 20 23 f.pkcs7_pad(data,.blklen):.....#
74340 20 74 79 70 65 3a 20 28 73 74 72 2c 20 69 6e 74 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 69 66 20 .type:.(str,.int).->.str.....if.
74360 62 6c 6b 6c 65 6e 20 3e 20 32 35 35 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 blklen.>.255:.........raise.Valu
74380 65 45 72 72 6f 72 28 27 69 6c 6c 65 67 61 6c 20 62 6c 6f 63 6b 20 73 69 7a 65 27 29 0a 20 20 20 eError('illegal.block.size')....
743a0 20 70 61 64 20 3d 20 28 62 6c 6b 6c 65 6e 20 2d 20 28 6c 65 6e 28 64 61 74 61 29 20 25 20 62 6c .pad.=.(blklen.-.(len(data).%.bl
743c0 6b 6c 65 6e 29 29 0a 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 20 2b 20 63 68 72 28 70 61 64 klen)).....return.data.+.chr(pad
743e0 29 20 2a 20 70 61 64 0a 0a 0a 64 65 66 20 62 69 6e 5f 74 6f 5f 68 65 78 28 62 29 3a 0a 20 20 20 ).*.pad...def.bin_to_hex(b):....
74400 20 23 20 74 79 70 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 .#.type:.(bytes).->.str.....retu
74420 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 62 32 61 5f rn.six.ensure_text(binascii.b2a_
74440 62 61 73 65 36 34 28 62 29 5b 3a 2d 31 5d 29 0a 0a 0a 64 65 66 20 6f 63 74 78 5f 74 6f 5f 6e 75 base64(b)[:-1])...def.octx_to_nu
74460 6d 28 78 29 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 69 6e 74 m(x):.....#.type:.(bytes).->.int
74480 0a 20 20 20 20 72 65 74 75 72 6e 20 69 6e 74 28 62 69 6e 61 73 63 69 69 2e 68 65 78 6c 69 66 79 .....return.int(binascii.hexlify
744a0 28 78 29 2c 20 31 36 29 0a 0a 0a 64 65 66 20 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b (x),.16)...def.genparam_callback
744c0 28 70 2c 20 6e 2c 20 6f 75 74 3d 73 79 73 2e 73 74 64 6f 75 74 29 3a 0a 20 20 20 20 23 20 74 79 (p,.n,.out=sys.stdout):.....#.ty
744e0 70 65 3a 20 28 69 6e 74 2c 20 41 6e 79 2c 20 54 65 78 74 49 4f 29 20 2d 3e 20 4e 6f 6e 65 0a 20 pe:.(int,.Any,.TextIO).->.None..
74500 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 20 ...ch.=.['.',.'+',.'*',.'\n']...
74520 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 68 ..out.write(ch[p]).....out.flush
74540 28 29 0a 0a 0a 64 65 66 20 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b ()...def.quiet_genparam_callback
74560 28 70 2c 20 6e 2c 20 6f 75 74 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 41 6e 79 2c 20 41 (p,.n,.out):.....#.type:.(Any,.A
74580 6e 79 2c 20 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 70 61 73 73 0a 0a 0a 64 65 66 20 ny,.Any).->.None.....pass...def.
745a0 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 28 76 2c 20 70 72 6f 6d 70 74 31 3d 27 passphrase_callback(v,.prompt1='
745c0 45 6e 74 65 72 20 70 61 73 73 70 68 72 61 73 65 3a 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 Enter.passphrase:',.............
745e0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 32 3d 27 56 65 72 69 66 79 20 70 61 73 73 ............prompt2='Verify.pass
74600 70 68 72 61 73 65 3a 27 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 62 6f 6f 6c 2c 20 73 74 phrase:'):.....#.type:.(bool,.st
74620 72 2c 20 73 74 72 29 20 2d 3e 20 4f 70 74 69 6f 6e 61 6c 5b 73 74 72 5d 0a 20 20 20 20 66 72 6f r,.str).->.Optional[str].....fro
74640 6d 20 67 65 74 70 61 73 73 20 69 6d 70 6f 72 74 20 67 65 74 70 61 73 73 0a 20 20 20 20 77 68 69 m.getpass.import.getpass.....whi
74660 6c 65 20 31 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 70 le.1:.........try:.............p
74680 31 20 3d 20 67 65 74 70 61 73 73 28 70 72 6f 6d 70 74 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 1.=.getpass(prompt1)............
746a0 20 69 66 20 76 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 32 20 3d 20 67 65 74 70 .if.v:.................p2.=.getp
746c0 61 73 73 28 70 72 6f 6d 70 74 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ass(prompt2).................if.
746e0 70 31 20 3d 3d 20 70 32 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 p1.==.p2:.....................br
74700 65 61 6b 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 eak.............else:...........
74720 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 62 6f ......break.........except.Keybo
74740 61 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 72 65 74 75 72 6e ardInterrupt:.............return
74760 20 4e 6f 6e 65 0a 20 20 20 20 72 65 74 75 72 6e 20 70 31 0a 0a 0a 64 65 66 20 6e 6f 5f 70 61 73 .None.....return.p1...def.no_pas
74780 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 28 2a 61 72 67 73 29 3a 0a 20 20 20 20 23 20 74 sphrase_callback(*args):.....#.t
747a0 79 70 65 3a 20 28 2a 41 6e 79 29 20 2d 3e 20 73 74 72 0a 20 20 20 20 72 65 74 75 72 6e 20 27 27 ype:.(*Any).->.str.....return.''
747c0 0a 94 7d 94 28 8c 09 55 74 69 6c 45 72 72 6f 72 94 6a 37 02 00 00 4b 1a 4b 1b 87 94 8c 09 70 6b ..}.(..UtilError.j7...K.K.....pk
747e0 63 73 35 5f 70 61 64 94 6a 18 25 00 00 4b 21 4b 24 87 94 8c 09 70 6b 63 73 37 5f 70 61 64 94 6a cs5_pad.j.%..K!K$....pkcs7_pad.j
74800 18 25 00 00 4b 27 4b 2c 87 94 8c 0a 62 69 6e 5f 74 6f 5f 68 65 78 94 6a 18 25 00 00 4b 2f 4b 31 .%..K'K,....bin_to_hex.j.%..K/K1
74820 87 94 8c 0b 6f 63 74 78 5f 74 6f 5f 6e 75 6d 94 6a 18 25 00 00 4b 34 4b 36 87 94 8c 11 67 65 6e ....octx_to_num.j.%..K4K6....gen
74840 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4b 39 4b 3d 87 94 8c 17 71 75 69 65 param_callback.j.%..K9K=....quie
74860 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4b 40 4b 42 87 94 8c t_genparam_callback.j.%..K@KB...
74880 13 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4b 45 4b 54 87 94 .passphrase_callback.j.%..KEKT..
748a0 8c 16 6e 6f 5f 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4b 57 ..no_passphrase_callback.j.%..KW
748c0 4b 59 87 94 75 7d 94 28 6a 58 18 00 00 6a 60 02 00 00 8c 0a 62 69 6e 5f 74 6f 5f 68 65 78 94 6a KY..u}.(jX...j`.....bin_to_hex.j
748e0 60 02 00 00 8c 11 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 62 61 63 6b 94 6a 60 02 00 00 8c 16 6e `.....genparam_callback.j`.....n
74900 6f 5f 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 61 63 6b 94 6a 60 02 00 00 8c 0b 6f 63 74 o_passphrase_callback.j`.....oct
74920 78 5f 74 6f 5f 6e 75 6d 94 6a 60 02 00 00 8c 13 70 61 73 73 70 68 72 61 73 65 5f 63 61 6c 6c 62 x_to_num.j`.....passphrase_callb
74940 61 63 6b 94 6a 60 02 00 00 8c 09 70 6b 63 73 35 5f 70 61 64 94 6a 60 02 00 00 8c 09 70 6b 63 73 ack.j`.....pkcs5_pad.j`.....pkcs
74960 37 5f 70 61 64 94 6a 60 02 00 00 8c 17 71 75 69 65 74 5f 67 65 6e 70 61 72 61 6d 5f 63 61 6c 6c 7_pad.j`.....quiet_genparam_call
74980 62 61 63 6b 94 6a 60 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 back.j`...u..M2Crypto.util.t...M
749a0 32 43 72 79 70 74 6f 2e 53 53 4c 94 28 58 27 05 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 2Crypto.SSL.(X'...from.__future_
749c0 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
749e0 72 79 70 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 rypto.SSL.services...Copyright.(
74a00 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 20 41 6c 6c c).1999-2004.Ng.Pheng.Siong..All
74a20 20 72 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 73 6f 63 .rights.reserved."""..import.soc
74a40 6b 65 74 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 ket,.os..#.M2Crypto.from.M2Crypt
74a60 6f 20 69 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 o.import._m2crypto.as.m2...class
74a80 20 53 53 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 .SSLError(Exception):.....pass..
74aa0 0a 63 6c 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 .class.SSLTimeoutError(SSLError,
74ac0 20 73 6f 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 .socket.timeout):.....pass..m2.s
74ae0 73 6c 5f 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 sl_init(SSLError,.SSLTimeoutErro
74b00 72 29 0a 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 r)..#.M2Crypto.SSL.from.M2Crypto
74b20 2e 53 53 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 .SSL.Cipher.import.Cipher,.Ciphe
74b40 72 5f 53 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 r_Stack.from.M2Crypto.SSL.Connec
74b60 74 69 6f 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 tion.import.Connection.from.M2Cr
74b80 79 70 74 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 ypto.SSL.Context.import.Context.
74ba0 66 72 6f 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 from.M2Crypto.SSL.SSLServer.impo
74bc0 72 74 20 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 rt.SSLServer,.ThreadingSSLServer
74be0 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 66 72 6f 6d 20 4d 32 .if.os.name.!=.'nt':.....from.M2
74c00 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 46 6f 72 6b Crypto.SSL.SSLServer.import.Fork
74c20 69 6e 67 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 ingSSLServer.from.M2Crypto.SSL.s
74c40 73 6c 5f 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 sl_dispatcher.import.ssl_dispatc
74c60 68 65 72 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 her.from.M2Crypto.SSL.timeout.im
74c80 70 6f 72 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 port.timeout,.struct_to_timeout,
74ca0 20 73 74 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 .struct_size..verify_none.=.m2.S
74cc0 53 4c 5f 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 SL_VERIFY_NONE..#.type:.int.veri
74ce0 66 79 5f 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 fy_peer.=.m2.SSL_VERIFY_PEER..#.
74d00 74 79 70 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 type:.int.verify_fail_if_no_peer
74d20 5f 63 65 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 _cert.=.m2.SSL_VERIFY_FAIL_IF_NO
74d40 5f 50 45 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 _PEER_CERT..#.type:.int.verify_c
74d60 6c 69 65 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 lient_once.=.m2.SSL_VERIFY_CLIEN
74d80 54 5f 4f 4e 43 45 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 76 65 72 69 66 79 5f 63 72 6c 5f 63 T_ONCE..#.type:.int.verify_crl_c
74da0 68 65 63 6b 5f 63 68 61 69 6e 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 43 52 4c 5f 43 48 45 43 4b heck_chain.=.m2.VERIFY_CRL_CHECK
74dc0 5f 43 48 41 49 4e 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 76 65 72 69 66 79 5f 63 72 6c 5f 63 68 _CHAIN.#.type:.int.verify_crl_ch
74de0 65 63 6b 5f 6c 65 61 66 20 3d 20 6d 32 2e 56 45 52 49 46 59 5f 43 52 4c 5f 43 48 45 43 4b 5f 4c eck_leaf.=.m2.VERIFY_CRL_CHECK_L
74e00 45 41 46 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 4f EAF.#.type:.int..SSL_SENT_SHUTDO
74e20 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 70 WN.=.m2.SSL_SENT_SHUTDOWN..#.typ
74e40 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 6d e:.int.SSL_RECEIVED_SHUTDOWN.=.m
74e60 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 3a 2.SSL_RECEIVED_SHUTDOWN..#.type:
74e80 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 20 .int..op_all.=.m2.SSL_OP_ALL..#.
74ea0 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 4f type:.int.op_no_sslv2.=.m2.SSL_O
74ec0 50 5f 4e 4f 5f 53 53 4c 76 32 20 20 23 20 74 79 70 65 3a 20 69 6e 74 0a 0a 94 7d 94 28 8c 08 53 P_NO_SSLv2..#.type:.int...}.(..S
74ee0 53 4c 45 72 72 6f 72 94 6a 37 02 00 00 4b 0d 4b 0e 87 94 8c 0f 53 53 4c 54 69 6d 65 6f 75 74 45 SLError.j7...K.K.....SSLTimeoutE
74f00 72 72 6f 72 94 6a 37 02 00 00 4b 11 4b 12 87 94 75 7d 94 28 6a 77 18 00 00 6a 5c 02 00 00 6a 7a rror.j7...K.K...u}.(jw...j\...jz
74f20 18 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
74f40 79 70 74 6f 2e 53 53 4c 2e 43 68 65 63 6b 65 72 94 28 58 1f 2b 00 00 22 22 22 0a 53 53 4c 20 70 ypto.SSL.Checker.(X.+..""".SSL.p
74f60 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
74f80 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.
74fa0 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..
74fc0 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.
74fe0 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
75000 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
75020 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
75040 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',.........
75060 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
75080 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
750a0 74 6f 20 69 6d 70 6f 72 74 20 58 35 30 39 2c 20 6d 32 2c 20 73 69 78 20 20 23 20 6e 6f 71 61 0a to.import.X509,.m2,.six..#.noqa.
750c0 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 4f 70 74 69 6f from.typing.import.AnyStr,.Optio
750e0 6e 61 6c 20 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 nal..#.noqa...class.SSLVerificat
75100 69 6f 6e 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 ionError(Exception):.....pass...
75120 63 6c 61 73 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 class.NoCertificate(SSLVerificat
75140 69 6f 6e 45 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 ionError):.....pass...class.Wron
75160 67 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 72 72 6f gCertificate(SSLVerificationErro
75180 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 48 6f 73 74 28 53 r):.....pass...class.WrongHost(S
751a0 53 4c 56 65 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 SLVerificationError):.....def.__
751c0 69 6e 69 74 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 init__(self,.expectedHost,.actua
751e0 6c 48 6f 73 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 lHost,.fieldName='commonName'):.
75200 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 74 72 2c 20 73 74 ........#.type:.(str,.AnyStr,.st
75220 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 20 54 r).->.None.........""".........T
75240 68 69 73 20 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 his.exception.will.be.raised.if.
75260 74 68 65 20 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 the.certificate.returned.by.the.
75280 20 20 20 20 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 ........peer.was.issued.for.a.di
752a0 66 66 65 72 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 fferent.host.than.we.tried.to.co
752c0 6e 6e 65 63 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 nnect.to..........This.could.be.
752e0 64 75 65 20 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 due.to.a.server.misconfiguration
75300 20 6f 72 20 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 .or.an.active.attack...........:
75320 70 61 72 61 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 param.expectedHost:.The.name.of.
75340 74 68 65 20 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 the.host.we.expected.to.find.in.
75360 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.............................
75380 20 63 65 72 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 .certificate..........:param.act
753a0 75 61 6c 48 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 ualHost:...The.name.of.the.host.
753c0 77 65 20 61 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 we.actually.found.in.the........
753e0 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 61 74 ......................certificat
75400 65 2e 0a 20 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 e..........:param.fieldName:....
75420 54 68 65 20 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 The.field.name.where.we.noticed.
75440 74 68 65 20 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 the.error..This.................
75460 20 20 20 20 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 .............should.be.either.'c
75480 6f 6d 6d 6f 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 ommonName'.or.'subjectAltName'..
754a0 20 20 20 20 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 ........""".........if.fieldName
754c0 20 6e 6f 74 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 .not.in.('commonName',.'subjectA
754e0 6c 74 4e 61 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 ltName'):.............raise.Valu
75500 65 45 72 72 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 eError(.................'Unknown
75520 20 66 69 65 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 .fieldName,.should.be.either.com
75540 6d 6f 6e 4e 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 monName.'.+.................'or.
75560 73 75 62 6a 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 subjectAltName')..........SSLVer
75580 69 66 69 63 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 ificationError.__init__(self)...
755a0 20 20 20 20 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 ......self.expectedHost.=.expect
755c0 65 64 48 6f 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 edHost.........self.actualHost.=
755e0 20 61 63 74 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 .actualHost.........self.fieldNa
75600 6d 65 20 3d 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 me.=.fieldName......def.__str__(
75620 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 74 72 self):.........#.type:.().->.str
75640 0a 20 20 20 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 .........s.=.'Peer.certificate.%
75660 73 20 64 6f 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 s.does.not.match.host,.expected.
75680 25 73 2c 20 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 %s,.got.%s'.\.............%.(sel
756a0 66 2e 66 69 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 f.fieldName,.self.expectedHost,.
756c0 73 65 6c 66 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 self.actualHost).........return.
756e0 73 69 78 2e 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 six.ensure_text(s)...class.Check
75700 65 72 28 6f 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 er(object):......numericIpMatch.
75720 3d 20 72 65 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 =.re.compile('^[0-9]+(\.[0-9]+)*
75740 24 27 29 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 $')......def.__init__(self,.host
75760 3d 4e 6f 6e 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 =None,.peerCertHash=None,.peerCe
75780 72 74 44 69 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 rtDigest='sha1'):.........#.type
757a0 3a 20 28 4f 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 :.(Optional[str],.Optional[bytes
757c0 5d 2c 20 73 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 ],.str).->.None.........self.hos
757e0 74 20 3d 20 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 t.=.host.........if.peerCertHash
75800 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 70 65 65 72 43 65 .is.not.None:.............peerCe
75820 72 74 48 61 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 rtHash.=.six.ensure_binary(peerC
75840 65 72 74 48 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 ertHash).........self.fingerprin
75860 74 20 3d 20 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 t.=.peerCertHash.........self.di
75880 67 65 73 74 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 gest.=.peerCertDigest..#.type:.s
758a0 74 72 0a 0a 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 tr......def.__call__(self,.peerC
758c0 65 72 74 2c 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 ert,.host=None):.........#.type:
758e0 20 28 58 35 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 .(X509.X509,.Optional[str]).->.b
75900 6f 6f 6c 0a 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 ool.........if.peerCert.is.None:
75920 0a 20 20 20 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 .............raise.NoCertificate
75940 28 27 70 65 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 ('peer.did.not.return.certificat
75960 65 27 29 0a 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 e')..........if.host.is.not.None
75980 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 68 6f 73 74 20 20 :.............self.host.=.host..
759a0 23 20 74 79 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 #.type:.str..........if.self.fin
759c0 67 65 72 70 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 gerprint:.............if.self.di
759e0 67 65 73 74 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 gest.not.in.('sha1',.'md5'):....
75a00 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 27 75 .............raise.ValueError('u
75a20 6e 73 75 70 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 nsupported.digest."%s"'.%.self.d
75a40 69 67 65 73 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 igest)..............if.self.dige
75a60 73 74 20 3d 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 st.==.'sha1':.................ex
75a80 70 65 63 74 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 pected_len.=.40.............elif
75aa0 20 73 65 6c 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 .self.digest.==.'md5':..........
75ac0 20 20 20 20 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 .......expected_len.=.32........
75ae0 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 72 61 69 73 65 .....else:.................raise
75b00 20 56 61 6c 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 .ValueError('Unexpected.digest.{
75b20 30 7d 27 2e 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 0}'.format(self.digest))........
75b40 20 20 20 20 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 ......if.len(self.fingerprint).!
75b60 3d 20 65 78 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 =.expected_len:.................
75b80 72 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 raise.WrongCertificate(.........
75ba0 20 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 ............('peer.certificate.f
75bc0 69 6e 67 65 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 ingerprint.length.does.not.match
75be0 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 66 69 6e 67 \n'.+......................'fing
75c00 65 72 70 72 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 erprint:.{0}\nexpected.=.{1}\n'.
75c20 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 62 73 65 72 76 65 64 +......................'observed
75c40 20 3d 20 7b 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 .=.{2}').format(self.fingerprint
75c60 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 20 20 ,...............................
75c80 20 20 20 20 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 ................expected_len,...
75ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
75cc0 20 20 20 20 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 ............len(self.fingerprint
75ce0 29 29 29 0a 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 )))..............expected_finger
75d00 70 72 69 6e 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 print.=.six.ensure_text(self.fin
75d20 67 65 72 70 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 gerprint).............observed_f
75d40 69 6e 67 65 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 ingerprint.=.peerCert.get_finger
75d60 70 72 69 6e 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 print(md=self.digest)...........
75d80 20 20 69 66 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 ..if.observed_fingerprint.!=.exp
75da0 65 63 74 65 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 ected_fingerprint:..............
75dc0 20 20 20 72 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 ...raise.WrongCertificate(......
75de0 20 20 20 20 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 ...............('peer.certificat
75e00 65 20 66 69 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 e.fingerprint.does.not.match\n'.
75e20 2b 0a 20 20 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 +......................'expected
75e40 20 3d 20 7b 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 .=.{0},\n'.+....................
75e60 20 20 27 6f 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 ..'observed.=.{1}').format(expec
75e80 74 65 64 5f 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 ted_fingerprint,................
75ea0 20 20 20 20 20 20 20 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 ...............................o
75ec0 62 73 65 72 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 bserved_fingerprint))..........i
75ee0 66 20 73 65 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 f.self.host:.............hostVal
75f00 69 64 61 74 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 idationPassed.=.False...........
75f20 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 6c 79 20 3d 20 46 ..self.useSubjectAltNameOnly.=.F
75f40 61 6c 73 65 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 alse..............#.subjectAltNa
75f60 6d 65 3d 44 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 me=DNS:somehost[,....]*.........
75f80 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 73 75 62 6a 65 63 74 ....try:.................subject
75fa0 41 6c 74 4e 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 AltName.=.peerCert.get_ext('subj
75fc0 65 63 74 41 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 ectAltName').get_value()........
75fe0 20 20 20 20 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 .........if.self._splitSubjectAl
76000 74 4e 61 6d 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 tName(self.host,.subjectAltName)
76020 3a 0a 20 20 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 :.....................hostValida
76040 74 69 6f 6e 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 tionPassed.=.True...............
76060 20 20 65 6c 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 ..elif.self.useSubjectAltNameOnl
76080 79 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 y:.....................raise.Wro
760a0 6e 67 48 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 ngHost(expectedHost=self.host,..
760c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
760e0 20 20 20 61 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 ...actualHost=subjectAltName,...
76100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76120 20 20 66 69 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 ..fieldName='subjectAltName')...
76140 20 20 20 20 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 ..........except.LookupError:...
76160 20 20 20 20 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 ..............pass..............
76180 23 20 63 6f 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 #.commonName=somehost[,....]*...
761a0 20 20 20 20 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 ..........if.not.hostValidationP
761c0 61 73 73 65 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 assed:.................hasCommon
761e0 4e 61 6d 65 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 Name.=.False.................com
76200 6d 6f 6e 4e 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 monNames.=.''.................fo
76220 72 20 65 6e 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 r.entry.in.peerCert.get_subject(
76240 29 2e 67 65 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 ).get_entries_by_nid(...........
76260 20 20 20 20 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 ..............m2.NID_commonName)
76280 3a 0a 20 20 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 :.....................hasCommonN
762a0 61 6d 65 20 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 ame.=.True.....................c
762c0 6f 6d 6d 6f 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 ommonName.=.entry.get_data().as_
762e0 74 65 78 74 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 text().....................if.no
76300 74 20 63 6f 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 t.commonNames:..................
76320 20 20 20 20 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 .......commonNames.=.commonName.
76340 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 20 20 20 20 20 20 ....................else:.......
76360 20 20 20 20 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 ..................commonNames.+=
76380 20 27 2c 27 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 .','.+.commonName...............
763a0 20 20 20 20 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 ......if.self._match(self.host,.
763c0 63 6f 6d 6d 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 commonName):....................
763e0 20 20 20 20 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 .....hostValidationPassed.=.True
76400 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 62 72 65 61 6b 0a 0a .........................break..
76420 20 20 20 20 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 ................if.not.hasCommon
76440 4e 61 6d 65 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 Name:.....................raise.
76460 57 72 6f 6e 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 WrongCertificate('no.commonName.
76480 69 6e 20 70 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 in.peer.certificate')...........
764a0 20 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 .......if.not.hostValidationPass
764c0 65 64 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 ed:.....................raise.Wr
764e0 6f 6e 67 48 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 ongHost(expectedHost=self.host,.
76500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76520 20 20 20 20 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 ....actualHost=commonNames,.....
76540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76560 66 69 65 6c 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 fieldName='commonName').........
76580 20 72 65 74 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 .return.True......def._splitSubj
765a0 65 63 74 41 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 ectAltName(self,.host,.subjectAl
765c0 74 4e 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 79 53 74 72 2c tName):.........#.type:.(AnyStr,
765e0 20 41 6e 79 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 .AnyStr).->.bool........."""....
76600 20 20 20 20 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 .....>>>.check.=.Checker()......
76620 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
76640 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',........
76660 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 53 3a 6d 79 2e .........subjectAltName='DNS:my.
76680 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 20 20 20 20 20 example.com').........True......
766a0 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
766c0 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',........
766e0 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 53 3a 2a 2e 65 .........subjectAltName='DNS:*.e
76700 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 20 20 20 20 20 20 xample.com').........True.......
76720 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 65 ..>>>.check._splitSubjectAltName
76740 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 20 (host='my.example.com',.........
76760 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 53 3a 6d 2a 2e 65 ........subjectAltName='DNS:m*.e
76780 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 20 20 20 20 20 20 xample.com').........True.......
767a0 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 65 ..>>>.check._splitSubjectAltName
767c0 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 20 (host='my.example.com',.........
767e0 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 53 3a 6d 2a 61 6d ........subjectAltName='DNS:m*am
76800 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 20 20 20 ple.com').........False.........
76820 3e 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 >>>.check.useSubjectAltNameOnly.
76840 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 5f ........True.........>>>.check._
76860 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 79 2e 65 78 61 splitSubjectAltName(host='my.exa
76880 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 73 75 62 6a 65 mple.com',.................subje
768a0 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 20 6f 74 68 65 ctAltName='DNS:m*ample.com,.othe
768c0 72 6e 61 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 rname:<unsupported>').........Fa
768e0 6c 73 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 lse.........>>>.check._splitSubj
76900 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 2e 63 6f 6d 27 ectAltName(host='my.example.com'
76920 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 74 4e 61 6d 65 ,.................subjectAltName
76940 3d 27 44 4e 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 ='DNS:m*ample.com,.DNS:my.exampl
76960 65 2e 6f 72 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 e.org').........False.........>>
76980 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
769a0 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',.............
769c0 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.
769e0 63 6f 6d 2c 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 com,.DNS:my.example.com').......
76a00 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 74 53 ..True.........>>>.check._splitS
76a20 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 2e 63 ubjectAltName(host='my.example.c
76a40 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 74 4e om',.................subjectAltN
76a60 61 6d 65 3d 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 ame='DNS:my.example.com,.DNS:my.
76a80 65 78 61 6d 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 example.org').........True......
76aa0 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 4e 61 6d 65 4f 6e ...>>>.check.useSubjectAltNameOn
76ac0 6c 79 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 ly.........True.........>>>.chec
76ae0 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 79 2e k._splitSubjectAltName(host='my.
76b00 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 73 75 example.com',.................su
76b20 62 6a 65 63 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 bjectAltName='').........False..
76b40 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 6c .......>>>.check._splitSubjectAl
76b60 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 20 tName(host='my.example.com',....
76b80 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 6f 74 68 .............subjectAltName='oth
76ba0 65 72 6e 61 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 ername:<unsupported>').........F
76bc0 61 6c 73 65 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 alse.........>>>.check.useSubjec
76be0 74 41 6c 74 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 tAltNameOnly.........False......
76c00 20 20 20 22 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 ...""".........self.useSubjectAl
76c20 74 4e 61 6d 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 tNameOnly.=.False.........for.ce
76c40 72 74 48 6f 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 rtHost.in.subjectAltName.split('
76c60 2c 27 29 3a 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 ,'):.............certHost.=.cert
76c80 48 6f 73 74 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 Host.lower().strip()............
76ca0 20 69 66 20 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 .if.certHost[:4].==.'dns:':.....
76cc0 20 20 20 20 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 ............self.useSubjectAltNa
76ce0 6d 65 4f 6e 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 meOnly.=.True.................if
76d00 20 73 65 6c 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 .self._match(host,.certHost[4:])
76d20 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 54 72 75 :.....................return.Tru
76d40 65 0a 20 20 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 e.............elif.certHost[:11]
76d60 20 3d 3d 20 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 .==.'ip.address:':..............
76d80 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 6c 79 20 3d 20 ...self.useSubjectAltNameOnly.=.
76da0 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 66 2e 5f 6d 61 True.................if.self._ma
76dc0 74 63 68 49 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 tchIPAddress(host,.certHost[11:]
76de0 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 20 54 72 ):.....................return.Tr
76e00 75 65 0a 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 20 64 65 66 ue.........return.False......def
76e20 20 5f 6d 61 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 ._match(self,.host,.certHost):..
76e40 20 20 20 20 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 .......#.type:.(str,.str).->.boo
76e60 6c 0a 20 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 l.........""".........>>>.check.
76e80 3d 20 43 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 =.Checker().........>>>.check._m
76ea0 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 65 72 74 atch(host='my.example.com',.cert
76ec0 48 6f 73 74 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 Host='my.example.com').........T
76ee0 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 68 6f 73 rue.........>>>.check._match(hos
76f00 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 27 2a 2e t='my.example.com',.certHost='*.
76f20 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 20 20 20 20 20 example.com').........True......
76f40 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 78 61 ...>>>.check._match(host='my.exa
76f60 6d 70 6c 65 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 mple.com',.certHost='m*.example.
76f80 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 3e 20 63 com').........True.........>>>.c
76fa0 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 2e 63 6f 6d heck._match(host='my.example.com
76fc0 27 2c 20 63 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 ',.certHost='m*.EXAMPLE.com')...
76fe0 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 6d 61 ......True.........>>>.check._ma
77000 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 65 72 74 48 tch(host='my.example.com',.certH
77020 6f 73 74 3d 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 ost='m*ample.com').........False
77040 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 74 3d 27 .........>>>.check._match(host='
77060 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 27 2a 2e 2a 2e 63 my.example.com',.certHost='*.*.c
77080 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 63 om').........False.........>>>.c
770a0 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 2c 20 63 65 72 74 heck._match(host='1.2.3.4',.cert
770c0 48 6f 73 74 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 Host='1.2.3.4').........True....
770e0 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 31 2e 32 2e .....>>>.check._match(host='1.2.
77100 33 2e 34 27 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 3.4',.certHost='*.2.3.4').......
77120 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 2e 5f 6d 61 74 63 68 ..False.........>>>.check._match
77140 28 68 6f 73 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 (host='1234',.certHost='1234')..
77160 20 20 20 20 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 .......True.........""".........
77180 23 20 58 58 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 #.XXX.See.RFC.2818.and.3280.for.
771a0 6d 61 74 63 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 matching.rules,.this.is.may.not.
771c0 20 20 20 20 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 ........#.XXX.yet.be.complete...
771e0 20 20 20 20 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 ........host.=.host.lower().....
77200 20 20 20 20 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 ....certHost.=.certHost.lower().
77220 0a 20 20 20 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 .........if.host.==.certHost:...
77240 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 20 20 20 20 69 ..........return.True..........i
77260 66 20 63 65 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 f.certHost.count('*').>.1:......
77280 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 68 69 73 2c 20 62 75 .......#.Not.sure.about.this,.bu
772a0 74 20 62 65 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 t.being.conservative............
772c0 20 72 65 74 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 .return.False..........if.self.n
772e0 75 6d 65 72 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 umericIpMatch.match(host).or.\..
77300 20 20 20 20 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 ...............self.numericIpMat
77320 63 68 2e 6d 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 ch.match(certHost.replace('*',.'
77340 27 29 29 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 69 66 20 2a ')):.............#.Not.sure.if.*
77360 20 61 6c 6c 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 .allowed.in.numeric.IP,.but.thin
77380 6b 20 6e 6f 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 k.not..............return.False.
773a0 0a 20 20 20 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 .........if.certHost.find('\\').
773c0 3e 20 2d 31 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 >.-1:.............#.Not.sure.abo
773e0 75 74 20 74 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 ut.this,.maybe.some.encoding.mig
77400 68 74 20 68 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 ht.have.these..............#.But
77420 20 62 65 69 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 .being.conservative.for.now,.bec
77440 61 75 73 65 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 ause.regex.below.relies.........
77460 20 20 20 20 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 ....#.on.this..............retur
77480 6e 20 46 61 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 n.False..........#.Massage.certH
774a0 6f 73 74 20 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 ost.so.that.it.can.be.used.in.re
774c0 67 65 78 0a 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 gex.........certHost.=.certHost.
774e0 72 65 70 6c 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 replace('.',.'\.').........certH
77500 6f 73 74 20 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 ost.=.certHost.replace('*',.'[^\
77520 2e 5d 2a 27 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 .]*').........if.re.compile('^%s
77540 24 27 20 25 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 $'.%.certHost).match(host):.....
77560 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 20 20 20 20 72 65 74 ........return.True..........ret
77580 75 72 6e 20 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 urn.False......def._matchIPAddre
775a0 73 73 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 20 ss(self,.host,.certHost):.......
775c0 20 20 23 20 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 ..#.type:.(AnyStr,.AnyStr).->.bo
775e0 6f 6c 0a 20 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 ol.........""".........>>>.check
77600 20 3d 20 43 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 .=.Checker().........>>>.check._
77620 6d 61 74 63 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 matchIPAddress(host='my.example.
77640 63 6f 6d 27 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 com',.................certHost='
77660 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 46 61 6c 73 65 0a 20 my.example.com').........False..
77680 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 65 73 73 .......>>>.check._matchIPAddress
776a0 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 32 2e 33 (host='1.2.3.4',.certHost='1.2.3
776c0 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 20 3e 3e 3e 20 63 68 .4').........True.........>>>.ch
776e0 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 31 2e 32 2e 33 2e eck._matchIPAddress(host='1.2.3.
77700 34 27 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 4',.certHost='*.2.3.4').........
77720 46 61 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 49 50 False.........>>>.check._matchIP
77740 41 64 64 72 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 Address(host='1.2.3.4',.certHost
77760 3d 27 31 2e 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 ='1.2.3.40').........False......
77780 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
777a0 74 3d 27 3a 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 t='::1',.certHost='::1')........
777c0 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 49 50 .True.........>>>.check._matchIP
777e0 41 64 64 72 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 Address(host='::1',.certHost='0:
77800 30 3a 30 3a 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 0:0:0:0:0:0:1').........True....
77820 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 65 73 73 28 68 .....>>>.check._matchIPAddress(h
77840 6f 73 74 3d 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 ost='::1',.certHost='::2')......
77860 20 20 20 46 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 ...False.........""".........try
77880 3a 0a 20 20 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 :.............canonical.=.socket
778a0 2e 67 65 74 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 .getaddrinfo(host,.0,.0,.socket.
778c0 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 20 20 20 SOCK_STREAM,.0,.................
778e0 20 20 20 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 65 ...........................socke
77900 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 20 20 20 20 20 63 65 t.AI_NUMERICHOST).............ce
77920 72 74 43 61 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 rtCanonical.=.socket.getaddrinfo
77940 28 63 65 72 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 (certHost,.0,.0,................
77960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
77980 73 6f 63 6b 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 socket.SOCK_STREAM,.0,..........
779a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
779c0 20 20 20 20 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 ......socket.AI_NUMERICHOST)....
779e0 20 20 20 20 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 .....except:.............return.
77a00 46 61 6c 73 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 False.........return.canonical.=
77a20 3d 20 63 65 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 =.certCanonical...if.__name__.==
77a40 20 27 5f 5f 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 .'__main__':.....import.doctest.
77a60 20 20 20 20 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 ....doctest.testmod()..}.(..SSLV
77a80 65 72 69 66 69 63 61 74 69 6f 6e 45 72 72 6f 72 94 6a 37 02 00 00 4b 14 4b 15 87 94 8c 0d 4e 6f erificationError.j7...K.K.....No
77aa0 43 65 72 74 69 66 69 63 61 74 65 94 6a 37 02 00 00 4b 18 4b 19 87 94 8c 10 57 72 6f 6e 67 43 65 Certificate.j7...K.K.....WrongCe
77ac0 72 74 69 66 69 63 61 74 65 94 6a 37 02 00 00 4b 1c 4b 1d 87 94 8c 12 57 72 6f 6e 67 48 6f 73 74 rtificate.j7...K.K.....WrongHost
77ae0 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 21 4b 37 87 94 8c 11 57 72 6f 6e 67 48 6f 73 74 .__init__.j.%..K!K7....WrongHost
77b00 2e 5f 5f 73 74 72 5f 5f 94 6a 18 25 00 00 4b 39 4b 3d 87 94 8c 09 57 72 6f 6e 67 48 6f 73 74 94 .__str__.j.%..K9K=....WrongHost.
77b20 6a 37 02 00 00 4b 20 4b 3d 87 94 8c 10 43 68 65 63 6b 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 j7...K.K=....Checker.__init__.j.
77b40 25 00 00 4b 44 4b 4a 87 94 8c 10 43 68 65 63 6b 65 72 2e 5f 5f 63 61 6c 6c 5f 5f 94 6a 18 25 00 %..KDKJ....Checker.__call__.j.%.
77b60 00 4b 4c 4b 98 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 .KLK.....Checker._splitSubjectAl
77b80 74 4e 61 6d 65 94 6a 18 25 00 00 4b 9a 4b ce 87 94 8c 0e 43 68 65 63 6b 65 72 2e 5f 6d 61 74 63 tName.j.%..K.K.....Checker._matc
77ba0 68 94 6a 18 25 00 00 4b d0 4d 05 01 87 94 8c 17 43 68 65 63 6b 65 72 2e 5f 6d 61 74 63 68 49 50 h.j.%..K.M......Checker._matchIP
77bc0 41 64 64 72 65 73 73 94 6a 18 25 00 00 4d 07 01 4d 23 01 87 94 8c 07 43 68 65 63 6b 65 72 94 6a Address.j.%..M..M#.....Checker.j
77be0 37 02 00 00 4b 40 4d 23 01 87 94 75 7d 94 28 8c 07 43 68 65 63 6b 65 72 94 6a 5c 02 00 00 6a 86 7...K@M#...u}.(..Checker.j\...j.
77c00 18 00 00 6a 5c 02 00 00 6a 89 18 00 00 6a 5c 02 00 00 6a 8c 18 00 00 6a 5c 02 00 00 6a 8f 18 00 ...j\...j....j\...j....j\...j...
77c20 00 6a 5c 02 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 .j\...u..M2Crypto.SSL.Checker.t.
77c40 8c 13 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 72 94 28 58 f9 05 00 00 22 22 22 53 ..M2Crypto.SSL.Cipher.(X...."""S
77c60 53 4c 20 43 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 SL.Ciphers..Copyright.(c).1999-2
77c80 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
77ca0 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 43 69 70 68 65 72 27 eserved."""..__all__.=.['Cipher'
77cc0 2c 20 27 43 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 ,.'Cipher_Stack']..from.M2Crypto
77ce0 20 69 6d 70 6f 72 74 20 6d 32 2c 20 73 69 78 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f .import.m2,.six.from.typing.impo
77d00 72 74 20 49 74 65 72 61 62 6c 65 20 20 23 20 6e 6f 71 61 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 rt.Iterable..#.noqa...class.Ciph
77d20 65 72 28 6f 62 6a 65 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 er(object):.....def.__init__(sel
77d40 66 2c 20 63 69 70 68 65 72 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 73 74 72 f,.cipher):.........#.type:.(str
77d60 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 65 72 20 3d 20 ).->.None.........self.cipher.=.
77d80 63 69 70 68 65 72 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 cipher......def.__len__(self):..
77da0 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........
77dc0 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 62 69 74 73 28 73 .return.m2.ssl_cipher_get_bits(s
77de0 65 6c 66 2e 63 69 70 68 65 72 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 72 65 70 72 5f 5f 28 73 65 elf.cipher)......def.__repr__(se
77e00 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..
77e20 20 20 20 20 20 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 .......return."%s-%s".%.(self.na
77e40 6d 65 28 29 2c 20 6c 65 6e 28 73 65 6c 66 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f me(),.len(self))......def.__str_
77e60 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 73 _(self):.........#.type:.().->.s
77e80 74 72 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 25 73 2d 25 73 22 20 25 20 28 73 65 6c tr.........return."%s-%s".%.(sel
77ea0 66 2e 6e 61 6d 65 28 29 2c 20 6c 65 6e 28 73 65 6c 66 29 29 0a 0a 20 20 20 20 64 65 66 20 76 65 f.name(),.len(self))......def.ve
77ec0 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 70 65 3a 20 28 29 20 rsion(self):.........#.type:.().
77ee0 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 63 69 70 ->.int.........return.m2.ssl_cip
77f00 68 65 72 5f 67 65 74 5f 76 65 72 73 69 6f 6e 28 73 65 6c 66 2e 63 69 70 68 65 72 29 0a 0a 20 20 her_get_version(self.cipher)....
77f20 20 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 ..def.name(self):.........#.type
77f40 3a 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 69 78 2e 65 :.().->.str.........return.six.e
77f60 6e 73 75 72 65 5f 74 65 78 74 28 6d 32 2e 73 73 6c 5f 63 69 70 68 65 72 5f 67 65 74 5f 6e 61 6d nsure_text(m2.ssl_cipher_get_nam
77f80 65 28 73 65 6c 66 2e 63 69 70 68 65 72 29 29 0a 0a 0a 63 6c 61 73 73 20 43 69 70 68 65 72 5f 53 e(self.cipher))...class.Cipher_S
77fa0 74 61 63 6b 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 tack(object):.....def.__init__(s
77fc0 65 6c 66 2c 20 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 62 79 elf,.stack):.........#.type:.(by
77fe0 74 65 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 tes).->.None........."""........
78000 20 3a 70 61 72 61 6d 20 73 74 61 63 6b 3a 20 62 69 6e 61 72 79 20 6f 66 20 74 68 65 20 43 2d 74 .:param.stack:.binary.of.the.C-t
78020 79 70 65 20 53 54 41 43 4b 5f 4f 46 28 53 53 4c 5f 43 49 50 48 45 52 29 0a 20 20 20 20 20 20 20 ype.STACK_OF(SSL_CIPHER)........
78040 20 22 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 61 63 6b 20 3d 20 73 74 61 63 6b 0a .""".........self.stack.=.stack.
78060 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):.........
78080 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 6e #.type:.().->.int.........return
780a0 20 6d 32 2e 73 6b 5f 73 73 6c 5f 63 69 70 68 65 72 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b .m2.sk_ssl_cipher_num(self.stack
780c0 29 0a 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 )......def.__getitem__(self,.idx
780e0 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 43 69 70 68 ):.........#.type:.(int).->.Ciph
78100 65 72 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 30 20 3c 3d 20 69 64 78 20 3c 20 6d 32 2e er.........if.not.0.<=.idx.<.m2.
78120 73 6b 5f 73 73 6c 5f 63 69 70 68 65 72 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 3a 0a 20 sk_ssl_cipher_num(self.stack):..
78140 20 20 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 28 27 69 6e 64 ...........raise.IndexError('ind
78160 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 27 29 0a 20 20 20 20 20 20 20 20 76 20 3d 20 6d 32 ex.out.of.range').........v.=.m2
78180 2e 73 6b 5f 73 73 6c 5f 63 69 70 68 65 72 5f 76 61 6c 75 65 28 73 65 6c 66 2e 73 74 61 63 6b 2c .sk_ssl_cipher_value(self.stack,
781a0 20 69 64 78 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 43 69 70 68 65 72 28 76 29 0a 0a .idx).........return.Cipher(v)..
781c0 20 20 20 20 64 65 66 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 ....def.__iter__(self):.........
781e0 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 49 74 65 72 61 62 6c 65 0a 20 20 20 20 20 20 20 20 66 #.type:.().->.Iterable.........f
78200 6f 72 20 69 20 69 6e 20 73 69 78 2e 6d 6f 76 65 73 2e 72 61 6e 67 65 28 6d 32 2e 73 6b 5f 73 73 or.i.in.six.moves.range(m2.sk_ss
78220 6c 5f 63 69 70 68 65 72 5f 6e 75 6d 28 73 65 6c 66 2e 73 74 61 63 6b 29 29 3a 0a 20 20 20 20 20 l_cipher_num(self.stack)):......
78240 20 20 20 20 20 20 20 79 69 65 6c 64 20 73 65 6c 66 5b 69 5d 0a 94 7d 94 28 8c 0f 43 69 70 68 65 .......yield.self[i]..}.(..Ciphe
78260 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 0c 4b 0e 87 94 8c 0e 43 69 70 68 65 72 2e 5f r.__init__.j.%..K.K.....Cipher._
78280 5f 6c 65 6e 5f 5f 94 6a 18 25 00 00 4b 10 4b 12 87 94 8c 0f 43 69 70 68 65 72 2e 5f 5f 72 65 70 _len__.j.%..K.K.....Cipher.__rep
782a0 72 5f 5f 94 6a 18 25 00 00 4b 14 4b 16 87 94 8c 0e 43 69 70 68 65 72 2e 5f 5f 73 74 72 5f 5f 94 r__.j.%..K.K.....Cipher.__str__.
782c0 6a 18 25 00 00 4b 18 4b 1a 87 94 8c 0e 43 69 70 68 65 72 2e 76 65 72 73 69 6f 6e 94 6a 18 25 00 j.%..K.K.....Cipher.version.j.%.
782e0 00 4b 1c 4b 1e 87 94 8c 0b 43 69 70 68 65 72 2e 6e 61 6d 65 94 6a 18 25 00 00 4b 20 4b 22 87 94 .K.K.....Cipher.name.j.%..K.K"..
78300 8c 06 43 69 70 68 65 72 94 6a 37 02 00 00 4b 0b 4b 22 87 94 8c 15 43 69 70 68 65 72 5f 53 74 61 ..Cipher.j7...K.K"....Cipher_Sta
78320 63 6b 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 26 4b 2b 87 94 8c 14 43 69 70 68 65 72 5f ck.__init__.j.%..K&K+....Cipher_
78340 53 74 61 63 6b 2e 5f 5f 6c 65 6e 5f 5f 94 6a 18 25 00 00 4b 2d 4b 2f 87 94 8c 18 43 69 70 68 65 Stack.__len__.j.%..K-K/....Ciphe
78360 72 5f 53 74 61 63 6b 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 94 6a 18 25 00 00 4b 31 4b 36 87 94 8c r_Stack.__getitem__.j.%..K1K6...
78380 15 43 69 70 68 65 72 5f 53 74 61 63 6b 2e 5f 5f 69 74 65 72 5f 5f 94 6a 18 25 00 00 4b 38 4b 3b .Cipher_Stack.__iter__.j.%..K8K;
783a0 87 94 8c 0c 43 69 70 68 65 72 5f 53 74 61 63 6b 94 6a 37 02 00 00 4b 25 4b 3b 87 94 75 7d 94 28 ....Cipher_Stack.j7...K%K;..u}.(
783c0 8c 06 43 69 70 68 65 72 94 6a 5c 02 00 00 8c 0b 43 69 70 68 65 72 2e 6e 61 6d 65 94 6a 5c 02 00 ..Cipher.j\.....Cipher.name.j\..
783e0 00 8c 0e 43 69 70 68 65 72 2e 76 65 72 73 69 6f 6e 94 6a 5c 02 00 00 8c 0c 43 69 70 68 65 72 5f ...Cipher.version.j\.....Cipher_
78400 53 74 61 63 6b 94 6a 5c 02 00 00 75 8c 13 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 69 70 68 65 Stack.j\...u..M2Crypto.SSL.Ciphe
78420 72 94 74 94 8c 17 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 6e 65 63 74 69 6f 6e 94 89 8c r.t...M2Crypto.SSL.Connection...
78440 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 94 28 58 92 42 00 00 66 72 6f 6d .M2Crypto.SSL.Context.(X.B..from
78460 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 70 6f .__future__.import.absolute_impo
78480 72 74 0a 0a 22 22 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 rt.."""SSL.Context..Copyright.(c
784a0 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 20 41 6c 6c 20 ).1999-2004.Ng.Pheng.Siong..All.
784c0 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 43 72 79 70 rights.reserved."""..from.M2Cryp
784e0 74 6f 20 69 6d 70 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 to.import.BIO,.Err,.RSA,.X509,.m
78500 32 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 2e 53 53 2,.util..#.noqa.from.M2Crypto.SS
78520 4c 20 69 6d 70 6f 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 L.import.cb..#.noqa.from.M2Crypt
78540 6f 2e 53 53 4c 2e 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 o.SSL.Session.import.Session..#.
78560 6e 6f 71 61 0a 66 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 noqa.from.weakref.import.WeakVal
78580 75 65 44 69 63 74 69 6f 6e 61 72 79 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 ueDictionary.from.typing.import.
785a0 41 6e 79 2c 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 2c Any,.AnyStr,.Callable,.Optional,
785c0 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 27 63 74 78 6d .Union..#.noqa..__all__.=.['ctxm
785e0 61 70 27 2c 20 27 43 6f 6e 74 65 78 74 27 2c 20 27 6d 61 70 27 5d 0a 0a 0a 63 6c 61 73 73 20 5f ap',.'Context',.'map']...class._
78600 63 74 78 6d 61 70 28 6f 62 6a 65 63 74 29 3a 0a 20 20 20 20 73 69 6e 67 6c 65 74 6f 6e 20 3d 20 ctxmap(object):.....singleton.=.
78620 4e 6f 6e 65 20 20 23 20 74 79 70 65 3a 20 4f 70 74 69 6f 6e 61 6c 5b 5f 63 74 78 6d 61 70 5d 0a None..#.type:.Optional[_ctxmap].
78640 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 20 20 20 .....def.__init__(self):........
78660 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 22 22 22 53 .#.type:.().->.None........."""S
78680 69 6d 70 6c 65 20 57 65 61 6b 52 65 66 66 65 64 20 6c 69 73 74 2e 0a 20 20 20 20 20 20 20 20 22 imple.WeakReffed.list.........."
786a0 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 74 78 6d 61 70 20 3d 20 57 65 61 6b 56 61 "".........self._ctxmap.=.WeakVa
786c0 6c 75 65 44 69 63 74 69 6f 6e 61 72 79 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 lueDictionary()......def.__getit
786e0 65 6d 5f 5f 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 em__(self,.key):.........#.type:
78700 20 28 69 6e 74 29 20 2d 3e 20 41 6e 79 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c .(int).->.Any.........return.sel
78720 66 2e 5f 63 74 78 6d 61 70 5b 6b 65 79 5d 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73 65 74 69 74 65 f._ctxmap[key]......def.__setite
78740 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 2c 20 76 61 6c 75 65 29 3a 0a 20 20 20 20 20 20 20 20 23 m__(self,.key,.value):.........#
78760 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 41 6e 79 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 .type:.(int,.Any).->.None.......
78780 20 20 73 65 6c 66 2e 5f 63 74 78 6d 61 70 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 0a 0a 20 20 20 ..self._ctxmap[key].=.value.....
787a0 20 64 65 66 20 5f 5f 64 65 6c 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 .def.__delitem__(self,.key):....
787c0 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 20 20 20 20 20 .....#.type:.(int).->.None......
787e0 20 20 20 64 65 6c 20 73 65 6c 66 2e 5f 63 74 78 6d 61 70 5b 6b 65 79 5d 0a 0a 0a 64 65 66 20 63 ...del.self._ctxmap[key]...def.c
78800 74 78 6d 61 70 28 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 5f 63 74 78 6d txmap():.....#.type:.().->._ctxm
78820 61 70 0a 20 20 20 20 69 66 20 5f 63 74 78 6d 61 70 2e 73 69 6e 67 6c 65 74 6f 6e 20 69 73 20 4e ap.....if._ctxmap.singleton.is.N
78840 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 5f 63 74 78 6d 61 70 2e 73 69 6e 67 6c 65 74 6f 6e 20 3d one:........._ctxmap.singleton.=
78860 20 5f 63 74 78 6d 61 70 28 29 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 63 74 78 6d 61 70 2e 73 69 ._ctxmap().....return._ctxmap.si
78880 6e 67 6c 65 74 6f 6e 0a 23 20 64 65 70 72 65 63 61 74 65 64 21 21 21 0a 6d 61 70 20 3d 20 63 74 ngleton.#.deprecated!!!.map.=.ct
788a0 78 6d 61 70 0a 0a 0a 63 6c 61 73 73 20 43 6f 6e 74 65 78 74 28 6f 62 6a 65 63 74 29 3a 0a 0a 20 xmap...class.Context(object):...
788c0 20 20 20 22 22 22 27 43 6f 6e 74 65 78 74 27 20 66 6f 72 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 ..."""'Context'.for.SSL.connecti
788e0 6f 6e 73 2e 22 22 22 0a 0a 20 20 20 20 6d 32 5f 73 73 6c 5f 63 74 78 5f 66 72 65 65 20 3d 20 6d ons."""......m2_ssl_ctx_free.=.m
78900 32 2e 73 73 6c 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 2.ssl_ctx_free......def.__init__
78920 28 73 65 6c 66 2c 20 70 72 6f 74 6f 63 6f 6c 3d 27 74 6c 73 27 2c 20 77 65 61 6b 5f 63 72 79 70 (self,.protocol='tls',.weak_cryp
78940 74 6f 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 74 5f 63 to=None,..................post_c
78960 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 23 onnection_check=None):.........#
78980 20 74 79 70 65 3a 20 28 73 74 72 2c 20 4f 70 74 69 6f 6e 61 6c 5b 69 6e 74 5d 2c 20 4f 70 74 69 .type:.(str,.Optional[int],.Opti
789a0 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 20 onal[Callable]).->.None.........
789c0 70 72 6f 74 6f 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 70 72 6f 74 6f 63 6f 6c 20 2b 20 27 proto.=.getattr(m2,.protocol.+.'
789e0 5f 6d 65 74 68 6f 64 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 74 6f _method',.None).........if.proto
78a00 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 66 61 75 6c 74 20 .is.None:.............#.default.
78a20 69 73 20 27 73 73 6c 76 32 33 27 20 66 6f 72 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f is.'sslv23'.for.older.versions.o
78a40 66 20 4f 70 65 6e 53 53 4c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 6f 74 6f 63 6f f.OpenSSL.............if.protoco
78a60 6c 20 3d 3d 20 27 74 6c 73 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 l.==.'tls':.................prot
78a80 6f 20 3d 20 67 65 74 61 74 74 72 28 6d 32 2c 20 27 73 73 6c 76 32 33 5f 6d 65 74 68 6f 64 27 29 o.=.getattr(m2,.'sslv23_method')
78aa0 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 20 .............else:..............
78ac0 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 6e 6f 20 73 75 63 68 20 70 72 6f ...raise.ValueError("no.such.pro
78ae0 74 6f 63 6f 6c 20 27 25 73 27 22 20 25 20 70 72 6f 74 6f 63 6f 6c 29 0a 20 20 20 20 20 20 20 20 tocol.'%s'".%.protocol).........
78b00 73 65 6c 66 2e 63 74 78 20 3d 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 6e 65 77 28 70 72 6f 74 6f 28 self.ctx.=.m2.ssl_ctx_new(proto(
78b20 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 )).........self.allow_unknown_ca
78b40 20 3d 20 30 20 20 23 20 74 79 70 65 3a 20 55 6e 69 6f 6e 5b 69 6e 74 2c 20 62 6f 6f 6c 5d 0a 20 .=.0..#.type:.Union[int,.bool]..
78b60 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 .......self.post_connection_chec
78b80 6b 20 3d 20 70 6f 73 74 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 63 68 65 63 6b 0a 20 20 20 20 20 20 k.=.post_connection_check.......
78ba0 20 20 63 74 78 6d 61 70 28 29 5b 69 6e 74 28 73 65 6c 66 2e 63 74 78 29 5d 20 3d 20 73 65 6c 66 ..ctxmap()[int(self.ctx)].=.self
78bc0 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 63 61 63 68 65 5f 73 69 .........m2.ssl_ctx_set_cache_si
78be0 7a 65 28 73 65 6c 66 2e 63 74 78 2c 20 31 32 38 29 0a 20 20 20 20 20 20 20 20 69 66 20 77 65 61 ze(self.ctx,.128).........if.wea
78c00 6b 5f 63 72 79 70 74 6f 20 69 73 20 4e 6f 6e 65 20 61 6e 64 20 70 72 6f 74 6f 63 6f 6c 20 69 6e k_crypto.is.None.and.protocol.in
78c20 20 28 27 73 73 6c 76 32 33 27 2c 20 27 74 6c 73 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .('sslv23',.'tls'):.............
78c40 73 65 6c 66 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 28 6d 32 2e 53 53 4c 5f 4f 50 5f 41 4c 4c 20 7c self.set_options(m2.SSL_OP_ALL.|
78c60 20 6d 32 2e 53 53 4c 5f 4f 50 5f 4e 4f 5f 53 53 4c 76 32 20 7c 0a 20 20 20 20 20 20 20 20 20 20 .m2.SSL_OP_NO_SSLv2.|...........
78c80 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 4f 50 5f 4e 4f 5f ...................m2.SSL_OP_NO_
78ca0 53 53 4c 76 33 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 SSLv3)......def.__del__(self):..
78cc0 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.......
78ce0 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 4e 6f 6e 65 29 3a ..if.getattr(self,.'ctx',.None):
78d00 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 63 74 78 5f 66 72 65 .............self.m2_ssl_ctx_fre
78d20 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 63 6c 6f 73 65 28 73 65 6c 66 29 e(self.ctx)......def.close(self)
78d40 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....
78d60 20 20 20 20 20 64 65 6c 20 63 74 78 6d 61 70 28 29 5b 69 6e 74 28 73 65 6c 66 2e 63 74 78 29 5d .....del.ctxmap()[int(self.ctx)]
78d80 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 28 73 65 6c 66 2c 20 63 65 72 74 66 69 ......def.load_cert(self,.certfi
78da0 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 20 20 20 20 20 le,.keyfile=None,...............
78dc0 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 6c ....callback=util.passphrase_cal
78de0 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 41 6e 79 53 74 72 2c lback):.........#.type:.(AnyStr,
78e00 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 .Optional[AnyStr],.Callable).->.
78e20 4e 6f 6e 65 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 None........."""Load.certificate
78e40 20 61 6e 64 20 70 72 69 76 61 74 65 20 6b 65 79 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 .and.private.key.into.the.contex
78e60 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 65 72 74 66 69 6c 65 3a 20 46 69 6c t...........:param.certfile:.Fil
78e80 65 20 74 68 61 74 20 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 e.that.contains.the.PEM-encoded.
78ea0 63 65 72 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 6b 65 79 66 certificate..........:param.keyf
78ec0 69 6c 65 3a 20 20 46 69 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 50 45 4d ile:..File.that.contains.the.PEM
78ee0 2d 65 6e 63 6f 64 65 64 20 70 72 69 76 61 74 65 20 6b 65 79 2e 0a 20 20 20 20 20 20 20 20 20 20 -encoded.private.key............
78f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 ...............Default.value.of.
78f20 4e 6f 6e 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 70 72 69 76 61 74 65 20 None.indicates.that.the.private.
78f40 6b 65 79 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 69 73 20 key..........................is.
78f60 74 6f 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 27 63 65 72 74 66 69 6c 65 27 2e 0a 20 20 20 20 20 to.be.found.in.'certfile'.......
78f80 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 65 20 6f 62 6a ...:param.callback:.Callable.obj
78fa0 65 63 74 20 74 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 ect.to.be.invoked.if.the.private
78fc0 20 6b 65 79 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 .key.is.........................
78fe0 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
79000 61 6c 6c 62 61 63 6b 20 70 72 6f 76 69 64 65 73 20 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 allback.provides.a..............
79020 20 20 20 20 20 20 20 20 20 20 20 20 73 69 6d 70 6c 65 20 74 65 72 6d 69 6e 61 6c 2d 73 74 79 6c ............simple.terminal-styl
79040 65 20 69 6e 70 75 74 20 66 6f 72 20 74 68 65 20 70 61 73 73 70 68 72 61 73 65 2e 0a 20 20 20 20 e.input.for.the.passphrase......
79060 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 73 73 70 ....""".........m2.ssl_ctx_passp
79080 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 62 61 63 hrase_callback(self.ctx,.callbac
790a0 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 74 28 73 k).........m2.ssl_ctx_use_cert(s
790c0 65 6c 66 2e 63 74 78 2c 20 63 65 72 74 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f elf.ctx,.certfile).........if.no
790e0 74 20 6b 65 79 66 69 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 66 69 6c 65 20 3d t.keyfile:.............keyfile.=
79100 20 63 65 72 74 66 69 6c 65 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 75 73 65 .certfile.........m2.ssl_ctx_use
79120 5f 70 72 69 76 6b 65 79 28 73 65 6c 66 2e 63 74 78 2c 20 6b 65 79 66 69 6c 65 29 0a 20 20 20 20 _privkey(self.ctx,.keyfile).....
79140 20 20 20 20 69 66 20 6e 6f 74 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 63 68 65 63 6b 5f 70 72 69 76 ....if.not.m2.ssl_ctx_check_priv
79160 6b 65 79 28 73 65 6c 66 2e 63 74 78 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 key(self.ctx):.............raise
79180 20 56 61 6c 75 65 45 72 72 6f 72 28 27 70 75 62 6c 69 63 2f 70 72 69 76 61 74 65 20 6b 65 79 20 .ValueError('public/private.key.
791a0 6d 69 73 6d 61 74 63 68 27 29 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 63 65 72 74 5f 63 68 mismatch')......def.load_cert_ch
791c0 61 69 6e 28 73 65 6c 66 2c 20 63 65 72 74 63 68 61 69 6e 66 69 6c 65 2c 20 6b 65 79 66 69 6c 65 ain(self,.certchainfile,.keyfile
791e0 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 20 20 20 20 20 63 =None,.........................c
79200 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
79220 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
79240 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 2c 20 43 61 6c 6c 61 62 6c 65 29 20 2d 3e 20 4e 6f 6e 65 0a onal[AnyStr],.Callable).->.None.
79260 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 63 68 61 69 ........"""Load.certificate.chai
79280 6e 20 61 6e 64 20 70 72 69 76 61 74 65 20 6b 65 79 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 n.and.private.key.into.the.conte
792a0 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 65 72 74 63 68 61 69 6e 66 69 6c xt...........:param.certchainfil
792c0 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 74 68 65 20 50 45 e:.File.object.containing.the.PE
792e0 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 20 20 20 20 M-encoded.......................
79300 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 63 61 74 65 20 63 68 61 69 6e 2e 0a 20 20 20 20 20 ........certificate.chain.......
79320 20 20 20 3a 70 61 72 61 6d 20 6b 65 79 66 69 6c 65 3a 20 20 20 20 20 20 20 46 69 6c 65 20 6f 62 ...:param.keyfile:.......File.ob
79340 6a 65 63 74 20 63 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 20 ject.containing.the.PEM-encoded.
79360 70 72 69 76 61 74 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 private.........................
79380 20 20 20 20 20 20 6b 65 79 2e 20 44 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 4e 6f 6e 65 ......key..Default.value.of.None
793a0 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 .indicates.that.the.............
793c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6b 65 79 20 69 73 ..................private.key.is
793e0 20 74 6f 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 27 63 65 72 74 63 68 61 69 6e 66 69 6c 65 27 2e .to.be.found.in.'certchainfile'.
79400 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 20 20 43 .........:param.callback:......C
79420 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 64 20 69 66 20 allable.object.to.be.invoked.if.
79440 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 20 20 20 20 the.private.key.................
79460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 70 61 73 73 70 68 72 61 73 65 2d 70 72 6f 74 ..............is.passphrase-prot
79480 65 63 74 65 64 2e 20 44 65 66 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 ected..Default.callback.........
794a0 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 76 69 64 65 73 20 61 ......................provides.a
794c0 20 73 69 6d 70 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 .simple.terminal-style.input.for
794e0 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 20 20 20 20 .the............................
79500 20 20 20 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 ...passphrase.........."""......
79520 20 20 20 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 ...m2.ssl_ctx_passphrase_callbac
79540 6b 28 73 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 k(self.ctx,.callback).........m2
79560 2e 73 73 6c 5f 63 74 78 5f 75 73 65 5f 63 65 72 74 5f 63 68 61 69 6e 28 73 65 6c 66 2e 63 74 78 .ssl_ctx_use_cert_chain(self.ctx
79580 2c 20 63 65 72 74 63 68 61 69 6e 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 ,.certchainfile).........if.not.
795a0 6b 65 79 66 69 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 66 69 6c 65 20 3d 20 63 keyfile:.............keyfile.=.c
795c0 65 72 74 63 68 61 69 6e 66 69 6c 65 0a 20 20 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f ertchainfile.........m2.ssl_ctx_
795e0 75 73 65 5f 70 72 69 76 6b 65 79 28 73 65 6c 66 2e 63 74 78 2c 20 6b 65 79 66 69 6c 65 29 0a 20 use_privkey(self.ctx,.keyfile)..
79600 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 63 68 65 63 6b 5f 70 .......if.not.m2.ssl_ctx_check_p
79620 72 69 76 6b 65 79 28 73 65 6c 66 2e 63 74 78 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 rivkey(self.ctx):.............ra
79640 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 70 75 62 6c 69 63 2f 70 72 69 76 61 74 65 20 6b ise.ValueError('public/private.k
79660 65 79 20 6d 69 73 6d 61 74 63 68 27 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 63 6c 69 65 6e ey.mismatch')......def.set_clien
79680 74 5f 43 41 5f 6c 69 73 74 5f 66 72 6f 6d 5f 66 69 6c 65 28 73 65 6c 66 2c 20 63 61 66 69 6c 65 t_CA_list_from_file(self,.cafile
796a0 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 4e ):.........#.type:.(AnyStr).->.N
796c0 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 43 41 20 63 65 72 74 73 20 69 6e 74 one........."""Load.CA.certs.int
796e0 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 20 54 68 65 73 65 20 43 41 20 63 65 72 74 73 20 61 72 o.the.context..These.CA.certs.ar
79700 65 20 73 65 6e 74 20 74 6f 20 74 68 65 0a 20 20 20 20 20 20 20 20 70 65 65 72 20 64 75 72 69 6e e.sent.to.the.........peer.durin
79720 67 20 2a 53 53 4c 76 33 20 63 65 72 74 69 66 69 63 61 74 65 20 72 65 71 75 65 73 74 2a 2e 0a 0a g.*SSLv3.certificate.request*...
79740 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 66 69 6c 65 3a 20 46 69 6c 65 20 6f 62 6a 65 ........:param.cafile:.File.obje
79760 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 50 45 4d 2d 65 6e ct.containing.one.or.more.PEM-en
79780 63 6f 64 65 64 20 43 41 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 coded.CA........................
797a0 63 65 72 74 69 66 69 63 61 74 65 73 20 63 6f 6e 63 61 74 65 6e 61 74 65 64 20 74 6f 67 65 74 68 certificates.concatenated.togeth
797c0 65 72 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 er..........""".........m2.ssl_c
797e0 74 78 5f 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 tx_set_client_CA_list_from_file(
79800 73 65 6c 66 2e 63 74 78 2c 20 63 61 66 69 6c 65 29 0a 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 self.ctx,.cafile)......#.Depreca
79820 74 65 64 2e 0a 20 20 20 20 6c 6f 61 64 5f 63 6c 69 65 6e 74 5f 43 41 20 3d 20 6c 6f 61 64 5f 63 ted......load_client_CA.=.load_c
79840 6c 69 65 6e 74 5f 63 61 20 3d 20 73 65 74 5f 63 6c 69 65 6e 74 5f 43 41 5f 6c 69 73 74 5f 66 72 lient_ca.=.set_client_CA_list_fr
79860 6f 6d 5f 66 69 6c 65 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 om_file......def.load_verify_loc
79880 61 74 69 6f 6e 73 28 73 65 6c 66 2c 20 63 61 66 69 6c 65 3d 4e 6f 6e 65 2c 20 63 61 70 61 74 68 ations(self,.cafile=None,.capath
798a0 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 6e 61 =None):.........#.type:.(Optiona
798c0 6c 5b 41 6e 79 53 74 72 5d 2c 20 4f 70 74 69 6f 6e 61 6c 5b 41 6e 79 53 74 72 5d 29 20 2d 3e 20 l[AnyStr],.Optional[AnyStr]).->.
798e0 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 4c 6f 61 64 20 43 41 20 63 65 72 74 73 20 69 6e 74 int........."""Load.CA.certs.int
79900 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 73 65 20 43 41 o.the.context...........These.CA
79920 20 63 65 72 74 73 20 61 72 65 20 75 73 65 64 20 64 75 72 69 6e 67 20 76 65 72 69 66 69 63 61 74 .certs.are.used.during.verificat
79940 69 6f 6e 20 6f 66 20 74 68 65 20 70 65 65 72 27 73 0a 20 20 20 20 20 20 20 20 63 65 72 74 69 66 ion.of.the.peer's.........certif
79960 69 63 61 74 65 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 66 69 6c 65 3a 20 46 icate...........:param.cafile:.F
79980 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 50 45 4d 2d 65 ile.containing.one.or.more.PEM-e
799a0 6e 63 6f 64 65 64 20 43 41 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ncoded.CA.......................
799c0 20 63 65 72 74 69 66 69 63 61 74 65 73 20 63 6f 6e 63 61 74 65 6e 61 74 65 64 20 74 6f 67 65 74 .certificates.concatenated.toget
799e0 68 65 72 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 61 70 61 74 68 3a 20 44 69 72 her...........:param.capath:.Dir
79a00 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 50 45 4d 2d 65 6e 63 6f 64 65 64 20 43 41 ectory.containing.PEM-encoded.CA
79a20 20 63 65 72 74 69 66 69 63 61 74 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .certificates...................
79a40 20 20 20 20 20 28 6f 6e 65 20 63 65 72 74 69 66 69 63 61 74 65 20 70 65 72 20 66 69 6c 65 29 2e .....(one.certificate.per.file).
79a60 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 20 69 66 20 74 68 65 20 6f 70 65 72 ..........:return:.0.if.the.oper
79a80 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 43 41 66 69 6c 65 20 61 6e 64 20 ation.failed.because.CAfile.and.
79aa0 43 41 70 61 74 68 20 61 72 65 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 CApath.are.NULL.................
79ac0 20 20 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 69 6e 67 20 61 74 20 6f 6e 65 20 6f 66 20 74 68 ..or.the.processing.at.one.of.th
79ae0 65 20 6c 6f 63 61 74 69 6f 6e 73 20 73 70 65 63 69 66 69 65 64 20 66 61 69 6c 65 64 2e 0a 20 20 e.locations.specified.failed....
79b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 20 74 68 65 20 65 72 72 6f 72 20 ................Check.the.error.
79b20 73 74 61 63 6b 20 74 6f 20 66 69 6e 64 20 6f 75 74 20 74 68 65 20 72 65 61 73 6f 6e 2e 0a 0a 20 stack.to.find.out.the.reason....
79b40 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
79b60 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 69 66 ucceeded..........""".........if
79b80 20 63 61 66 69 6c 65 20 69 73 20 4e 6f 6e 65 20 61 6e 64 20 63 61 70 61 74 68 20 69 73 20 4e 6f .cafile.is.None.and.capath.is.No
79ba0 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 72 72 6f 72 ne:.............raise.ValueError
79bc0 28 22 63 61 66 69 6c 65 20 61 6e 64 20 63 61 70 61 74 68 20 63 61 6e 20 6e 6f 74 20 62 6f 74 68 ("cafile.and.capath.can.not.both
79be0 20 62 65 20 4e 6f 6e 65 2e 22 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 .be.None.").........return.m2.ss
79c00 6c 5f 63 74 78 5f 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 l_ctx_load_verify_locations(self
79c20 2e 63 74 78 2c 20 63 61 66 69 6c 65 2c 20 63 61 70 61 74 68 29 0a 0a 20 20 20 20 23 20 44 65 70 .ctx,.cafile,.capath)......#.Dep
79c40 72 65 63 61 74 65 64 2e 0a 20 20 20 20 6c 6f 61 64 5f 76 65 72 69 66 79 5f 69 6e 66 6f 20 3d 20 recated......load_verify_info.=.
79c60 6c 6f 61 64 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 0a 0a 20 20 20 20 64 65 66 20 73 load_verify_locations......def.s
79c80 65 74 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 28 73 65 6c 66 2c 20 69 64 29 3a 0a 20 20 20 et_session_id_ctx(self,.id):....
79ca0 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 20 20 .....#.type:.(bytes).->.None....
79cc0 20 20 20 20 20 22 22 22 53 65 74 73 20 74 68 65 20 73 65 73 73 69 6f 6e 20 69 64 20 66 6f 72 20 ....."""Sets.the.session.id.for.
79ce0 74 68 65 20 53 53 4c 2e 43 6f 6e 74 65 78 74 20 77 2f 69 6e 20 61 20 73 65 73 73 69 6f 6e 20 63 the.SSL.Context.w/in.a.session.c
79d00 61 6e 20 62 65 20 72 65 75 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 69 64 an.be.reused...........:param.id
79d20 3a 20 53 65 73 73 69 6f 6e 73 20 61 72 65 20 67 65 6e 65 72 61 74 65 64 20 77 69 74 68 69 6e 20 :.Sessions.are.generated.within.
79d40 61 20 63 65 72 74 61 69 6e 20 63 6f 6e 74 65 78 74 2e 20 57 68 65 6e 0a 20 20 20 20 20 20 20 20 a.certain.context..When.........
79d60 20 20 20 20 20 20 20 20 20 20 20 65 78 70 6f 72 74 69 6e 67 2f 69 6d 70 6f 72 74 69 6e 67 20 73 ...........exporting/importing.s
79d80 65 73 73 69 6f 6e 73 20 77 69 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 essions.with....................
79da0 69 32 64 5f 53 53 4c 5f 53 45 53 53 49 4f 4e 2f 64 32 69 5f 53 53 4c 5f 53 45 53 53 49 4f 4e 20 i2d_SSL_SESSION/d2i_SSL_SESSION.
79dc0 69 74 20 77 6f 75 6c 64 20 62 65 20 70 6f 73 73 69 62 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 it.would.be.possible,...........
79de0 20 20 20 20 20 20 20 20 20 74 6f 20 72 65 2d 69 6d 70 6f 72 74 20 61 20 73 65 73 73 69 6f 6e 20 .........to.re-import.a.session.
79e00 67 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 61 6e 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 0a 20 generated.from.another.context..
79e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 2e 67 2e 20 61 6e 6f 74 68 65 72 20 ..................(e.g..another.
79e40 61 70 70 6c 69 63 61 74 69 6f 6e 29 2c 20 77 68 69 63 68 20 6d 69 67 68 74 20 6c 65 61 64 20 74 application),.which.might.lead.t
79e60 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 6c 66 75 6e 63 74 69 6f 6e o....................malfunction
79e80 73 2e 20 54 68 65 72 65 66 6f 72 65 20 65 61 63 68 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 s..Therefore.each.application.mu
79ea0 73 74 20 73 65 74 20 69 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 77 st.set.its....................ow
79ec0 6e 20 73 65 73 73 69 6f 6e 20 69 64 20 63 6f 6e 74 65 78 74 20 73 69 64 5f 63 74 78 20 77 68 69 n.session.id.context.sid_ctx.whi
79ee0 63 68 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch.is.used.to...................
79f00 20 64 69 73 74 69 6e 67 75 69 73 68 20 74 68 65 20 63 6f 6e 74 65 78 74 73 20 61 6e 64 20 69 73 .distinguish.the.contexts.and.is
79f20 20 73 74 6f 72 65 64 20 69 6e 20 65 78 70 6f 72 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 .stored.in.exported.............
79f40 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e 73 2e 20 54 68 65 20 73 69 64 5f 63 74 78 20 63 61 6e .......sessions..The.sid_ctx.can
79f60 20 62 65 20 61 6e 79 20 6b 69 6e 64 20 6f 66 20 62 69 6e 61 72 79 20 64 61 74 61 0a 20 20 20 20 .be.any.kind.of.binary.data.....
79f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 61 20 67 69 76 65 6e 20 6c 65 6e 67 ...............with.a.given.leng
79fa0 74 68 2c 20 69 74 20 69 73 20 74 68 65 72 65 66 6f 72 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 th,.it.is.therefore.possible.to.
79fc0 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 2e 67 2e 20 74 68 65 20 use....................e.g..the.
79fe0 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 61 6e 64 2f 6f 72 20 74 name.of.the.application.and/or.t
7a000 68 65 20 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 20 20 20 61 he.hostname....................a
7a020 6e 64 2f 6f 72 20 73 65 72 76 69 63 65 20 6e 61 6d 65 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a nd/or.service.name..........""".
7a040 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 73 65 73 ........ret.=.m2.ssl_ctx_set_ses
7a060 73 69 6f 6e 5f 69 64 5f 63 6f 6e 74 65 78 74 28 73 65 6c 66 2e 63 74 78 2c 20 69 64 29 0a 20 20 sion_id_context(self.ctx,.id)...
7a080 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 ......if.not.ret:.............ra
7a0a0 69 73 65 20 45 72 72 2e 53 53 4c 45 72 72 6f 72 28 45 72 72 2e 67 65 74 5f 65 72 72 6f 72 5f 63 ise.Err.SSLError(Err.get_error_c
7a0c0 6f 64 65 28 29 2c 20 27 27 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 64 65 66 61 75 6c 74 5f ode(),.'')......def.set_default_
7a0e0 76 65 72 69 66 79 5f 70 61 74 68 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 verify_paths(self):.........#.ty
7a100 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 20 20 20 20 pe:.().->.int.........""".......
7a120 20 20 53 70 65 63 69 66 69 65 73 20 74 68 61 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 ..Specifies.that.the.default.loc
7a140 61 74 69 6f 6e 73 20 66 72 6f 6d 20 77 68 69 63 68 20 43 41 20 63 65 72 74 73 20 61 72 65 0a 20 ations.from.which.CA.certs.are..
7a160 20 20 20 20 20 20 20 6c 6f 61 64 65 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0a 0a 20 .......loaded.should.be.used....
7a180 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20 6f 6e 65 20 64 65 66 61 75 6c 74 20 64 69 72 65 .......There.is.one.default.dire
7a1a0 63 74 6f 72 79 20 61 6e 64 20 6f 6e 65 20 64 65 66 61 75 6c 74 20 66 69 6c 65 2e 20 54 68 65 20 ctory.and.one.default.file..The.
7a1c0 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.
7a1e0 64 69 72 65 63 74 6f 72 79 20 69 73 20 63 61 6c 6c 65 64 20 22 63 65 72 74 73 22 20 69 6e 20 74 directory.is.called."certs".in.t
7a200 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4f 70 65 6e 53 53 4c 20 64 69 72 65 63 he.default.........OpenSSL.direc
7a220 74 6f 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 tory..Alternatively.the.SSL_CERT
7a240 5f 44 49 52 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 76 61 72 69 61 62 6c _DIR.environment.........variabl
7a260 65 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 e.can.be.defined.to.override.thi
7a280 73 20 6c 6f 63 61 74 69 6f 6e 2e 20 54 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 s.location..The.default.........
7a2a0 43 41 20 63 65 72 74 69 66 69 63 61 74 65 73 20 66 69 6c 65 20 69 73 20 63 61 6c 6c 65 64 20 22 CA.certificates.file.is.called."
7a2c0 63 65 72 74 2e 70 65 6d 22 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 4f 70 65 6e 53 53 4c cert.pem".in.the.default.OpenSSL
7a2e0 0a 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e 20 41 6c 74 65 72 6e 61 74 69 76 65 6c .........directory..Alternativel
7a300 79 20 74 68 65 20 53 53 4c 5f 43 45 52 54 5f 46 49 4c 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 y.the.SSL_CERT_FILE.environment.
7a320 76 61 72 69 61 62 6c 65 0a 20 20 20 20 20 20 20 20 63 61 6e 20 62 65 20 64 65 66 69 6e 65 64 20 variable.........can.be.defined.
7a340 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 0a 0a 20 20 20 20 to.override.this.location.......
7a360 20 20 20 20 40 72 65 74 75 72 6e 20 30 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 ....@return.0.if.the.operation.f
7a380 61 69 6c 65 64 2e 20 41 20 6d 69 73 73 69 6e 67 20 64 65 66 61 75 6c 74 20 6c 6f 63 61 74 69 6f ailed..A.missing.default.locatio
7a3a0 6e 20 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 69 6c 6c 20 74 72 65 n.is...................still.tre
7a3c0 61 74 65 64 20 61 73 20 61 20 73 75 63 63 65 73 73 2e 20 4e 6f 20 65 72 72 6f 72 20 63 6f 64 65 ated.as.a.success..No.error.code
7a3e0 20 69 73 20 73 65 74 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 20 54 68 65 20 .is.set...................1.The.
7a400 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 20 20 22 22 22 operation.succeeded.........."""
7a420 0a 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 64 65 .........ret.=.m2.ssl_ctx_set_de
7a440 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 28 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 fault_verify_paths(self.ctx)....
7a460 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 .....if.not.ret:.............rai
7a480 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 43 61 6e 6e 6f 74 20 75 73 65 20 64 65 66 61 75 6c se.ValueError('Cannot.use.defaul
7a4a0 74 20 53 53 4c 20 63 65 72 74 69 66 69 63 61 74 65 20 73 74 6f 72 65 21 27 29 0a 0a 20 20 20 20 t.SSL.certificate.store!')......
7a4c0 64 65 66 20 73 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 73 65 6c 66 2c 20 6f def.set_allow_unknown_ca(self,.o
7a4e0 6b 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 69 6e 74 2c 20 k):.........#.type:.(Union[int,.
7a500 62 6f 6f 6c 5d 29 20 2d 3e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 74 68 bool]).->.None........."""Set.th
7a520 65 20 63 6f 6e 74 65 78 74 20 74 6f 20 61 63 63 65 70 74 2f 72 65 6a 65 63 74 20 61 20 70 65 65 e.context.to.accept/reject.a.pee
7a540 72 20 63 65 72 74 69 66 69 63 61 74 65 20 69 66 20 74 68 65 0a 20 20 20 20 20 20 20 20 63 65 72 r.certificate.if.the.........cer
7a560 74 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 tificate's.CA.is.unknown........
7a580 20 20 20 3a 70 61 72 61 6d 20 6f 6b 3a 20 20 20 20 20 20 20 54 72 75 65 20 74 6f 20 61 63 63 65 ...:param.ok:.......True.to.acce
7a5a0 70 74 2c 20 46 61 6c 73 65 20 74 6f 20 72 65 6a 65 63 74 2e 0a 20 20 20 20 20 20 20 20 22 22 22 pt,.False.to.reject.........."""
7a5c0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 20 3d .........self.allow_unknown_ca.=
7a5e0 20 6f 6b 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 .ok......def.get_allow_unknown_c
7a600 61 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 55 a(self):.........#.type:.().->.U
7a620 6e 69 6f 6e 5b 69 6e 74 2c 20 62 6f 6f 6c 5d 0a 20 20 20 20 20 20 20 20 22 22 22 47 65 74 20 74 nion[int,.bool]........."""Get.t
7a640 68 65 20 63 6f 6e 74 65 78 74 27 73 20 73 65 74 74 69 6e 67 20 74 68 61 74 20 61 63 63 65 70 74 he.context's.setting.that.accept
7a660 73 2f 72 65 6a 65 63 74 73 20 61 20 70 65 65 72 0a 20 20 20 20 20 20 20 20 63 65 72 74 69 66 69 s/rejects.a.peer.........certifi
7a680 63 61 74 65 20 69 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 27 73 20 43 41 20 69 73 20 cate.if.the.certificate's.CA.is.
7a6a0 75 6e 6b 6e 6f 77 6e 2e 0a 0a 20 20 20 20 20 20 20 20 46 49 58 4d 45 20 32 42 63 6f 6e 76 65 72 unknown...........FIXME.2Bconver
7a6c0 74 65 64 20 74 6f 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 20 ted.to.bool.........""".........
7a6e0 72 65 74 75 72 6e 20 73 65 6c 66 2e 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 0a 0a 20 20 return.self.allow_unknown_ca....
7a700 20 20 64 65 66 20 73 65 74 5f 76 65 72 69 66 79 28 73 65 6c 66 2c 20 6d 6f 64 65 2c 20 64 65 70 ..def.set_verify(self,.mode,.dep
7a720 74 68 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 20 74 79 th,.callback=None):.........#.ty
7a740 70 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 4f 70 74 69 6f 6e 61 6c 5b 43 61 6c 6c 61 62 6c 65 pe:.(int,.int,.Optional[Callable
7a760 5d 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 ]).->.None.........""".........S
7a780 65 74 20 76 65 72 69 66 79 20 6f 70 74 69 6f 6e 73 2e 20 4d 6f 73 74 20 61 70 70 6c 69 63 61 74 et.verify.options..Most.applicat
7a7a0 69 6f 6e 73 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 0a 20 20 20 20 ions.will.need.to.call.this.....
7a7c0 20 20 20 20 6d 65 74 68 6f 64 20 77 69 74 68 20 74 68 65 20 72 69 67 68 74 20 6f 70 74 69 6f 6e ....method.with.the.right.option
7a7e0 73 20 74 6f 20 6d 61 6b 65 20 61 20 73 65 63 75 72 65 20 53 53 4c 20 63 6f 6e 6e 65 63 74 69 6f s.to.make.a.secure.SSL.connectio
7a800 6e 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 6f 64 65 3a 20 20 20 20 20 54 68 65 n...........:param.mode:.....The
7a820 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6d 6f 64 65 20 74 6f 20 75 73 65 2e 20 54 79 70 69 63 .verification.mode.to.use..Typic
7a840 61 6c 6c 79 20 61 74 20 6c 65 61 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ally.at.least...................
7a860 20 20 20 20 20 20 20 53 53 4c 2e 76 65 72 69 66 79 5f 70 65 65 72 20 69 73 20 75 73 65 64 2e 20 .......SSL.verify_peer.is.used..
7a880 43 6c 69 65 6e 74 73 20 77 6f 75 6c 64 20 61 6c 73 6f 20 74 79 70 69 63 61 6c 6c 79 0a 20 20 20 Clients.would.also.typically....
7a8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 20 53 53 4c 2e 76 65 ......................add.SSL.ve
7a8c0 72 69 66 79 5f 66 61 69 6c 5f 69 66 5f 6e 6f 5f 70 65 65 72 5f 63 65 72 74 2e 0a 20 20 20 20 20 rify_fail_if_no_peer_cert.......
7a8e0 20 20 20 3a 70 61 72 61 6d 20 64 65 70 74 68 3a 20 20 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 ...:param.depth:....The.maximum.
7a900 61 6c 6c 6f 77 65 64 20 64 65 70 74 68 20 6f 66 20 74 68 65 20 63 65 72 74 69 66 69 63 61 74 65 allowed.depth.of.the.certificate
7a920 20 63 68 61 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 .chain..........................
7a940 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 70 65 65 72 2e 0a 20 20 20 20 20 20 20 20 3a 70 returned.by.the.peer..........:p
7a960 61 72 61 6d 20 63 61 6c 6c 62 61 63 6b 3a 20 43 61 6c 6c 61 62 6c 65 20 74 68 61 74 20 63 61 6e aram.callback:.Callable.that.can
7a980 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 .be.used.to.specify.custom......
7a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 65 72 69 66 69 63 61 74 69 6f 6e ....................verification
7a9c0 20 63 68 65 63 6b 73 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 .checks..........""".........if.
7a9e0 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 32 callback.is.None:.............m2
7aa00 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 76 65 72 69 66 79 5f 64 65 66 61 75 6c 74 28 73 65 6c 66 .ssl_ctx_set_verify_default(self
7aa20 2e 63 74 78 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 .ctx,.mode).........else:.......
7aa40 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 76 65 72 69 66 79 28 73 65 6c 66 ......m2.ssl_ctx_set_verify(self
7aa60 2e 63 74 78 2c 20 6d 6f 64 65 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 6d 32 .ctx,.mode,.callback).........m2
7aa80 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 73 65 6c 66 2e 63 .ssl_ctx_set_verify_depth(self.c
7aaa0 74 78 2c 20 64 65 70 74 68 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 76 65 72 69 66 79 5f 6d tx,.depth)......def.get_verify_m
7aac0 6f 64 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 ode(self):.........#.type:.().->
7aae0 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 63 74 78 5f 67 .int.........return.m2.ssl_ctx_g
7ab00 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 et_verify_mode(self.ctx)......de
7ab20 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 20 20 20 f.get_verify_depth(self):.......
7ab40 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 52 ..#.type:.().->.int........."""R
7ab60 65 74 75 72 6e 73 20 74 68 65 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 6d 6f 64 65 20 63 75 72 eturns.the.verification.mode.cur
7ab80 72 65 6e 74 6c 79 20 73 65 74 20 69 6e 20 74 68 65 20 53 53 4c 20 43 6f 6e 74 65 78 74 2e 22 22 rently.set.in.the.SSL.Context.""
7aba0 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 74 78 5f 67 65 74 5f ".........return.m2.ssl_ctx_get_
7abc0 76 65 72 69 66 79 5f 64 65 70 74 68 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 verify_depth(self.ctx)......def.
7abe0 73 65 74 5f 74 6d 70 5f 64 68 28 73 65 6c 66 2c 20 64 68 70 66 69 6c 65 29 3a 0a 20 20 20 20 20 set_tmp_dh(self,.dhpfile):......
7ac00 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 20 20 20 20 ...#.type:.(AnyStr).->.int......
7ac20 20 20 20 22 22 22 4c 6f 61 64 20 65 70 68 65 6d 65 72 61 6c 20 44 48 20 70 61 72 61 6d 65 74 65 ..."""Load.ephemeral.DH.paramete
7ac40 72 73 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 rs.into.the.context...........:p
7ac60 61 72 61 6d 20 64 68 70 66 69 6c 65 3a 20 46 69 6c 65 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 aram.dhpfile:.Filename.of.the.fi
7ac80 6c 65 20 63 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 le.containing.the.PEM-encoded...
7aca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 48 20 70 61 72 61 6d 65 74 ......................DH.paramet
7acc0 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 66 20 3d 20 42 49 4f ers..........""".........f.=.BIO
7ace0 2e 6f 70 65 6e 66 69 6c 65 28 64 68 70 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 64 68 70 20 3d .openfile(dhpfile).........dhp.=
7ad00 20 6d 32 2e 64 68 5f 72 65 61 64 5f 70 61 72 61 6d 65 74 65 72 73 28 66 2e 62 69 6f 5f 70 74 72 .m2.dh_read_parameters(f.bio_ptr
7ad20 28 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 ()).........return.m2.ssl_ctx_se
7ad40 74 5f 74 6d 70 5f 64 68 28 73 65 6c 66 2e 63 74 78 2c 20 64 68 70 29 0a 0a 20 20 20 20 64 65 66 t_tmp_dh(self.ctx,.dhp)......def
7ad60 20 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2c 20 63 61 6c 6c 62 .set_tmp_dh_callback(self,.callb
7ad80 61 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 ack=None):.........#.type:.(Opti
7ada0 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 20 onal[Callable]).->.None.........
7adc0 22 22 22 53 65 74 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 66 6f """Sets.the.callback.function.fo
7ade0 72 20 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 r.SSL.Context...........:param.c
7ae00 61 6c 6c 62 61 63 6b 3a 20 43 61 6c 6c 61 62 6c 65 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 allback:.Callable.to.be.used.whe
7ae20 6e 20 61 20 44 48 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 72 65 71 75 69 72 65 64 2e 0a n.a.DH.parameters.are.required..
7ae40 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 6c 6c 62 61 63 6b 20 ........""".........if.callback.
7ae60 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 6d 32 2e 73 73 6c 5f is.not.None:.............m2.ssl_
7ae80 63 74 78 5f 73 65 74 5f 74 6d 70 5f 64 68 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2e 63 74 78 ctx_set_tmp_dh_callback(self.ctx
7aea0 2c 20 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 74 6d 70 5f 72 73 61 ,.callback)......def.set_tmp_rsa
7aec0 28 73 65 6c 66 2c 20 72 73 61 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 52 53 (self,.rsa):.........#.type:.(RS
7aee0 41 2e 52 53 41 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 A.RSA).->.int........."""Load.ep
7af00 68 65 6d 65 72 61 6c 20 52 53 41 20 6b 65 79 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 hemeral.RSA.key.into.the.context
7af20 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 72 73 61 3a 20 52 53 41 2e 52 53 41 20 69 ...........:param.rsa:.RSA.RSA.i
7af40 6e 73 74 61 6e 63 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 20 nstance..........""".........if.
7af60 69 73 69 6e 73 74 61 6e 63 65 28 72 73 61 2c 20 52 53 41 2e 52 53 41 29 3a 0a 20 20 20 20 20 20 isinstance(rsa,.RSA.RSA):.......
7af80 20 20 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 74 6d 70 5f ......return.m2.ssl_ctx_set_tmp_
7afa0 72 73 61 28 73 65 6c 66 2e 63 74 78 2c 20 72 73 61 2e 72 73 61 29 0a 20 20 20 20 20 20 20 20 65 rsa(self.ctx,.rsa.rsa).........e
7afc0 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 lse:.............raise.TypeError
7afe0 28 22 45 78 70 65 63 74 65 64 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 52 53 41 2e 52 53 ("Expected.an.instance.of.RSA.RS
7b000 41 2c 20 67 6f 74 20 25 73 2e 22 20 25 20 72 73 61 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f A,.got.%s.".%.rsa)......def.set_
7b020 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2c 20 63 61 6c 6c 62 61 63 6b 3d tmp_rsa_callback(self,.callback=
7b040 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 6e 61 6c None):.........#.type:.(Optional
7b060 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 20 22 22 22 53 [Callable]).->.None........."""S
7b080 65 74 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 ets.the.callback.function.to.be.
7b0a0 75 73 65 64 20 77 68 65 6e 0a 20 20 20 20 20 20 20 20 61 20 74 65 6d 70 6f 72 61 72 79 2f 65 70 used.when.........a.temporary/ep
7b0c0 68 65 6d 65 72 61 6c 20 52 53 41 20 6b 65 79 20 69 73 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 hemeral.RSA.key.is.required.....
7b0e0 20 20 20 20 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 .....""".........if.callback.is.
7b100 6e 6f 74 20 4e 6f 6e 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 not.None:.............m2.ssl_ctx
7b120 5f 73 65 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 28 73 65 6c 66 2e 63 74 78 2c 20 _set_tmp_rsa_callback(self.ctx,.
7b140 63 61 6c 6c 62 61 63 6b 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c callback)......def.set_info_call
7b160 62 61 63 6b 28 73 65 6c 66 2c 20 63 61 6c 6c 62 61 63 6b 3d 63 62 2e 73 73 6c 5f 69 6e 66 6f 5f back(self,.callback=cb.ssl_info_
7b180 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 43 61 6c 6c callback):.........#.type:.(Call
7b1a0 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 53 65 74 20 61 20 63 able).->.None........."""Set.a.c
7b1c0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 67 65 74 20 73 74 61 74 65 20 69 6e allback.function.to.get.state.in
7b1e0 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 49 74 20 63 61 6e 20 62 65 20 75 73 formation...........It.can.be.us
7b200 65 64 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 20 61 62 6f 75 ed.to.get.state.information.abou
7b220 74 20 74 68 65 20 53 53 4c 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 74 68 t.the.SSL.........connections.th
7b240 61 74 20 61 72 65 20 63 72 65 61 74 65 64 20 66 72 6f 6d 20 74 68 69 73 20 63 6f 6e 74 65 78 74 at.are.created.from.this.context
7b260 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 43 61 6c 6c ...........:param.callback:.Call
7b280 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 70 72 69 6e 74 back.function..The.default.print
7b2a0 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 69 6e 66 6f 72 s..........................infor
7b2c0 6d 61 74 69 6f 6e 20 74 6f 20 73 74 64 65 72 72 2e 0a 20 20 20 20 20 20 20 20 22 22 22 0a 20 20 mation.to.stderr.........."""...
7b2e0 20 20 20 20 20 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 73 65 74 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 ......m2.ssl_ctx_set_info_callba
7b300 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 65 66 20 ck(self.ctx,.callback)......def.
7b320 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 73 65 6c 66 2c 20 63 69 70 68 65 72 5f 6c 69 73 set_cipher_list(self,.cipher_lis
7b340 74 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 69 6e 74 t):.........#.type:.(str).->.int
7b360 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 73 20 74 68 65 20 6c 69 73 74 20 6f 66 20 61 76 61 ........."""Sets.the.list.of.ava
7b380 69 6c 61 62 6c 65 20 63 69 70 68 65 72 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 ilable.ciphers...........:param.
7b3a0 63 69 70 68 65 72 5f 6c 69 73 74 3a 20 54 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 20 73 cipher_list:.The.format.of.the.s
7b3c0 74 72 69 6e 67 20 69 73 20 64 65 73 63 72 69 62 65 64 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 tring.is.described.in...........
7b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 69 70 68 65 72 73 28 31 29 2e 0a 20 20 ..................ciphers(1)....
7b400 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 31 20 69 66 20 61 6e 79 20 63 69 70 68 65 72 20 63 ......:return:.1.if.any.cipher.c
7b420 6f 75 6c 64 20 62 65 20 73 65 6c 65 63 74 65 64 20 61 6e 64 20 30 20 6f 6e 20 63 6f 6d 70 6c 65 ould.be.selected.and.0.on.comple
7b440 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 te..................failure.....
7b460 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
7b480 74 78 5f 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 28 73 65 6c 66 2e 63 74 78 2c 20 63 69 70 tx_set_cipher_list(self.ctx,.cip
7b4a0 68 65 72 5f 6c 69 73 74 29 0a 0a 20 20 20 20 64 65 66 20 61 64 64 5f 73 65 73 73 69 6f 6e 28 73 her_list)......def.add_session(s
7b4c0 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 65 3a 20 28 elf,.session):.........#.type:.(
7b4e0 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 41 64 64 20 74 Session).->.int........."""Add.t
7b500 68 65 20 73 65 73 73 69 6f 6e 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 he.session.to.the.context.......
7b520 20 20 20 20 3a 70 61 72 61 6d 20 73 65 73 73 69 6f 6e 3a 20 74 68 65 20 73 65 73 73 69 6f 6e 20 ....:param.session:.the.session.
7b540 74 6f 20 62 65 20 61 64 64 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 30 to.be.added...........:return:.0
7b560 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 66 61 69 6c 65 64 2e 20 49 74 20 77 61 73 20 74 72 .The.operation.failed..It.was.tr
7b580 69 65 64 20 74 6f 20 61 64 64 20 74 68 65 20 73 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 ied.to.add.the.same.............
7b5a0 20 20 20 20 20 20 20 28 69 64 65 6e 74 69 63 61 6c 29 20 73 65 73 73 69 6f 6e 20 74 77 69 63 65 .......(identical).session.twice
7b5c0 2e 0a 0a 20 20 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 ....................1.The.operat
7b5e0 69 6f 6e 20 73 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 ion.succeeded.........."""......
7b600 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 61 64 64 5f 73 65 73 73 69 6f 6e ...return.m2.ssl_ctx_add_session
7b620 28 73 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 (self.ctx,.session._ptr())......
7b640 64 65 66 20 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2c 20 73 65 73 73 69 6f 6e def.remove_session(self,.session
7b660 29 3a 0a 20 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 ):.........#.type:.(Session).->.
7b680 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 6d 6f 76 65 20 74 68 65 20 73 65 73 73 69 6f int........."""Remove.the.sessio
7b6a0 6e 20 66 72 6f 6d 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 n.from.the.context...........:pa
7b6c0 72 61 6d 20 73 65 73 73 69 6f 6e 3a 20 74 68 65 20 73 65 73 73 69 6f 6e 20 74 6f 20 62 65 20 72 ram.session:.the.session.to.be.r
7b6e0 65 6d 6f 76 65 64 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 emoved...........:return:.0.The.
7b700 6f 70 65 72 61 74 69 6f 6e 20 66 61 69 6c 65 64 2e 20 54 68 65 20 73 65 73 73 69 6f 6e 20 77 61 operation.failed..The.session.wa
7b720 73 20 6e 6f 74 20 66 6f 75 6e 64 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.not.found.in..................
7b740 20 20 74 68 65 20 63 61 63 68 65 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 ..the.cache....................1
7b760 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........
7b780 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 74 78 5f ..""".........return.m2.ssl_ctx_
7b7a0 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 28 73 65 6c 66 2e 63 74 78 2c 20 73 65 73 73 69 6f 6e remove_session(self.ctx,.session
7b7c0 2e 5f 70 74 72 28 29 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 ._ptr())......def.get_session_ti
7b7e0 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 3a 20 28 29 20 meout(self):.........#.type:.().
7b800 2d 3e 20 69 6e 74 0a 20 20 20 20 20 20 20 20 22 22 22 47 65 74 20 63 75 72 72 65 6e 74 20 73 65 ->.int........."""Get.current.se
7b820 73 73 69 6f 6e 20 74 69 6d 65 6f 75 74 2e 0a 0a 20 20 20 20 20 20 20 20 57 68 65 6e 65 76 65 72 ssion.timeout...........Whenever
7b840 20 61 20 6e 65 77 20 73 65 73 73 69 6f 6e 20 69 73 20 63 72 65 61 74 65 64 2c 20 69 74 20 69 73 .a.new.session.is.created,.it.is
7b860 20 61 73 73 69 67 6e 65 64 20 61 20 6d 61 78 69 6d 75 6d 0a 20 20 20 20 20 20 20 20 6c 69 66 65 .assigned.a.maximum.........life
7b880 74 69 6d 65 2e 20 20 54 68 69 73 20 6c 69 66 65 74 69 6d 65 20 69 73 20 73 70 65 63 69 66 69 65 time...This.lifetime.is.specifie
7b8a0 64 20 62 79 20 73 74 6f 72 69 6e 67 20 74 68 65 20 63 72 65 61 74 69 6f 6e 0a 20 20 20 20 20 20 d.by.storing.the.creation.......
7b8c0 20 20 74 69 6d 65 20 6f 66 20 74 68 65 20 73 65 73 73 69 6f 6e 20 61 6e 64 20 74 68 65 20 74 69 ..time.of.the.session.and.the.ti
7b8e0 6d 65 6f 75 74 20 76 61 6c 75 65 20 76 61 6c 69 64 20 61 74 20 74 68 69 73 20 74 69 6d 65 2e 20 meout.value.valid.at.this.time..
7b900 49 66 0a 20 20 20 20 20 20 20 20 74 68 65 20 61 63 74 75 61 6c 20 74 69 6d 65 20 69 73 20 6c 61 If.........the.actual.time.is.la
7b920 74 65 72 20 74 68 61 6e 20 63 72 65 61 74 69 6f 6e 20 74 69 6d 65 20 70 6c 75 73 20 74 69 6d 65 ter.than.creation.time.plus.time
7b940 6f 75 74 2c 20 74 68 65 0a 20 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e 20 69 73 20 6e 6f 74 20 out,.the.........session.is.not.
7b960 72 65 75 73 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 44 75 65 20 74 6f 20 74 68 69 73 20 72 65 61 reused...........Due.to.this.rea
7b980 6c 69 7a 61 74 69 6f 6e 2c 20 61 6c 6c 20 73 65 73 73 69 6f 6e 73 20 62 65 68 61 76 65 20 61 63 lization,.all.sessions.behave.ac
7b9a0 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 0a 20 20 20 20 20 20 20 20 74 69 6d 65 6f 75 74 20 76 cording.to.the.........timeout.v
7b9c0 61 6c 75 65 20 76 61 6c 69 64 20 61 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 73 65 alue.valid.at.the.time.of.the.se
7b9e0 73 73 69 6f 6e 20 6e 65 67 6f 74 69 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 43 68 61 6e 67 ssion.negotiation..........Chang
7ba00 65 73 20 6f 66 20 74 68 65 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 20 64 6f 20 6e 6f 74 20 61 es.of.the.timeout.value.do.not.a
7ba20 66 66 65 63 74 20 61 6c 72 65 61 64 79 20 65 73 74 61 62 6c 69 73 68 65 64 0a 20 20 20 20 20 20 ffect.already.established.......
7ba40 20 20 73 65 73 73 69 6f 6e 73 2e 0a 0a 20 20 20 20 20 20 20 20 45 78 70 69 72 65 64 20 73 65 73 ..sessions...........Expired.ses
7ba60 73 69 6f 6e 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 69 6e 74 65 72 sions.are.removed.from.the.inter
7ba80 6e 61 6c 20 73 65 73 73 69 6f 6e 20 63 61 63 68 65 2c 0a 20 20 20 20 20 20 20 20 77 68 65 6e 65 nal.session.cache,.........whene
7baa0 76 65 72 20 53 53 4c 5f 43 54 58 5f 66 6c 75 73 68 5f 73 65 73 73 69 6f 6e 73 28 33 29 20 69 73 ver.SSL_CTX_flush_sessions(3).is
7bac0 20 63 61 6c 6c 65 64 2c 20 65 69 74 68 65 72 20 64 69 72 65 63 74 6c 79 20 62 79 0a 20 20 20 20 .called,.either.directly.by.....
7bae0 20 20 20 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 72 20 61 75 74 6f 6d 61 74 69 63 ....the.application.or.automatic
7bb00 61 6c 6c 79 20 28 73 65 65 0a 20 20 20 20 20 20 20 20 53 53 4c 5f 43 54 58 5f 73 65 74 5f 73 65 ally.(see.........SSL_CTX_set_se
7bb20 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 33 29 29 0a 0a 20 20 20 20 20 20 20 20 54 68 ssion_cache_mode(3))..........Th
7bb40 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 73 65 73 73 69 6f 6e 20 74 69 6d 65 e.default.value.for.session.time
7bb60 6f 75 74 20 69 73 20 64 65 63 69 64 65 64 20 6f 6e 20 61 20 70 65 72 0a 20 20 20 20 20 20 20 20 out.is.decided.on.a.per.........
7bb80 70 72 6f 74 6f 63 6f 6c 20 62 61 73 69 73 2c 20 73 65 65 20 53 53 4c 5f 67 65 74 5f 64 65 66 61 protocol.basis,.see.SSL_get_defa
7bba0 75 6c 74 5f 74 69 6d 65 6f 75 74 28 33 29 2e 20 20 41 6c 6c 20 63 75 72 72 65 6e 74 6c 79 0a 20 ult_timeout(3)...All.currently..
7bbc0 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 74 6f 63 6f 6c 73 20 68 61 76 65 20 .......supported.protocols.have.
7bbe0 74 68 65 20 73 61 6d 65 20 64 65 66 61 75 6c 74 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 20 6f the.same.default.timeout.value.o
7bc00 66 20 33 30 30 0a 20 20 20 20 20 20 20 20 73 65 63 6f 6e 64 73 2e 0a 0a 20 20 20 20 20 20 20 20 f.300.........seconds...........
7bc20 53 53 4c 5f 43 54 58 5f 73 65 74 5f 74 69 6d 65 6f 75 74 28 29 20 72 65 74 75 72 6e 73 20 74 68 SSL_CTX_set_timeout().returns.th
7bc40 65 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 2e 0a e.previously.set.timeout.value..
7bc60 0a 20 20 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 .........:return:.the.currently.
7bc80 73 65 74 20 74 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 set.timeout.value.........."""..
7bca0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 67 65 74 5f 73 65 73 .......return.m2.ssl_ctx_get_ses
7bcc0 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 sion_timeout(self.ctx)......def.
7bce0 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 2c 20 74 69 6d 65 6f 75 set_session_timeout(self,.timeou
7bd00 74 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 t):.........#.type:.(int).->.int
7bd20 0a 20 20 20 20 20 20 20 20 22 22 22 53 65 74 20 6e 65 77 20 73 65 73 73 69 6f 6e 20 74 69 6d 65 ........."""Set.new.session.time
7bd40 6f 75 74 2e 0a 0a 20 20 20 20 20 20 20 20 53 65 65 20 73 65 6c 66 2e 67 65 74 5f 73 65 73 73 69 out...........See.self.get_sessi
7bd60 6f 6e 5f 74 69 6d 65 6f 75 74 28 29 20 66 6f 72 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 6f 66 20 on_timeout().for.explanation.of.
7bd80 74 68 65 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 74 69 6d 65 6f 75 74 73 2e 0a 0a 20 the.session.........timeouts....
7bda0 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 74 69 6d 65 6f 75 74 3a 20 6e 65 77 20 74 69 6d 65 6f .......:param.timeout:.new.timeo
7bdc0 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 3a 20 74 68 65 20 ut.value...........:return:.the.
7bde0 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 74 69 6d 65 6f 75 74 20 76 61 6c 75 65 2e 0a 20 20 previously.set.timeout.value....
7be00 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 5f ......""".........return.m2.ssl_
7be20 63 74 78 5f 73 65 74 5f 73 65 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 28 73 65 6c 66 2e 63 74 78 ctx_set_session_timeout(self.ctx
7be40 2c 20 74 69 6d 65 6f 75 74 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 5f 73 65 73 73 69 6f 6e 5f ,.timeout)......def.set_session_
7be60 63 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c 66 2c 20 6d 6f 64 65 29 3a 0a 20 20 20 20 20 20 20 20 cache_mode(self,.mode):.........
7be80 23 20 74 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 #.type:.(int).->.int........."""
7bea0 45 6e 61 62 6c 65 73 2f 64 69 73 61 62 6c 65 73 20 73 65 73 73 69 6f 6e 20 63 61 63 68 69 6e 67 Enables/disables.session.caching
7bec0 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 6d 6f 64 65 20 69 73 20 73 65 74 20 62 79 20 75 73 ...........The.mode.is.set.by.us
7bee0 69 6e 67 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 61 6e 74 ing.m2.SSL_SESS_CACHE_*.constant
7bf00 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6d 6f 64 65 3a 20 6e 65 77 20 6d 6f 64 s...........:param.mode:.new.mod
7bf20 65 20 76 61 6c 75 65 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 e.value...........:return:.the.p
7bf40 72 65 76 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 reviously.set.cache.mode.value..
7bf60 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 73 73 ........""".........return.m2.ss
7bf80 6c 5f 63 74 78 5f 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 l_ctx_set_session_cache_mode(sel
7bfa0 66 2e 63 74 78 2c 20 6d 6f 64 65 29 0a 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f f.ctx,.mode)......def.get_sessio
7bfc0 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 n_cache_mode(self):.........#.ty
7bfe0 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 47 65 74 73 20 74 68 pe:.().->.int........."""Gets.th
7c000 65 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e 20 63 61 63 68 69 6e 67 2e 0a 0a 20 20 20 20 e.current.session.caching.......
7c020 20 20 20 20 54 68 65 20 6d 6f 64 65 20 69 73 20 73 65 74 20 74 6f 20 6d 32 2e 53 53 4c 5f 53 45 ....The.mode.is.set.to.m2.SSL_SE
7c040 53 53 5f 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 SS_CACHE_*.constants...........:
7c060 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 63 68 65 return:.the.previously.set.cache
7c080 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 20 20 20 .mode.value.........."""........
7c0a0 20 72 65 74 75 72 6e 20 6d 32 2e 73 73 6c 5f 63 74 78 5f 67 65 74 5f 73 65 73 73 69 6f 6e 5f 63 .return.m2.ssl_ctx_get_session_c
7c0c0 61 63 68 65 5f 6d 6f 64 65 28 73 65 6c 66 2e 63 74 78 29 0a 0a 20 20 20 20 64 65 66 20 73 65 74 ache_mode(self.ctx)......def.set
7c0e0 5f 6f 70 74 69 6f 6e 73 28 73 65 6c 66 2c 20 6f 70 29 3a 0a 20 20 20 20 20 20 20 20 23 20 74 79 _options(self,.op):.........#.ty
7c100 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 41 64 64 73 pe:.(int).->.int........."""Adds
7c120 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 73 65 74 20 76 69 61 20 62 69 74 6d 61 73 6b 20 69 6e 20 .the.options.set.via.bitmask.in.
7c140 6f 70 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 43 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 options.to.the.Context..........
7c160 20 21 21 21 20 4f 70 74 69 6f 6e 73 20 61 6c 72 65 61 64 79 20 73 65 74 20 62 65 66 6f 72 65 20 .!!!.Options.already.set.before.
7c180 61 72 65 20 6e 6f 74 20 63 6c 65 61 72 65 64 21 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 62 65 are.not.cleared!..........The.be
7c1a0 68 61 76 69 6f 75 72 20 6f 66 20 74 68 65 20 53 53 4c 20 6c 69 62 72 61 72 79 20 63 61 6e 20 62 haviour.of.the.SSL.library.can.b
7c1c0 65 20 63 68 61 6e 67 65 64 20 62 79 20 73 65 74 74 69 6e 67 0a 20 20 20 20 20 20 20 20 73 65 76 e.changed.by.setting.........sev
7c1e0 65 72 61 6c 20 6f 70 74 69 6f 6e 73 2e 20 20 54 68 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 63 eral.options...The.options.are.c
7c200 6f 64 65 64 20 61 73 20 62 69 74 6d 61 73 6b 73 20 61 6e 64 20 63 61 6e 20 62 65 0a 20 20 20 20 oded.as.bitmasks.and.can.be.....
7c220 20 20 20 20 63 6f 6d 62 69 6e 65 64 20 62 79 20 61 20 6c 6f 67 69 63 61 6c 20 6f 72 20 6f 70 65 ....combined.by.a.logical.or.ope
7c240 72 61 74 69 6f 6e 20 28 7c 29 2e 0a 0a 20 20 20 20 20 20 20 20 53 53 4c 2e 43 6f 6e 74 65 78 74 ration.(|)...........SSL.Context
7c260 2e 73 65 74 5f 6f 70 74 69 6f 6e 73 28 29 20 61 6e 64 20 53 53 4c 2e 73 65 74 5f 6f 70 74 69 6f .set_options().and.SSL.set_optio
7c280 6e 73 28 29 20 61 66 66 65 63 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 28 65 78 74 65 72 6e 61 ns().affect.the.........(externa
7c2a0 6c 29 20 70 72 6f 74 6f 63 6f 6c 20 62 65 68 61 76 69 6f 75 72 20 6f 66 20 74 68 65 20 53 53 4c l).protocol.behaviour.of.the.SSL
7c2c0 20 6c 69 62 72 61 72 79 2e 20 54 68 65 20 28 69 6e 74 65 72 6e 61 6c 29 0a 20 20 20 20 20 20 20 .library..The.(internal)........
7c2e0 20 62 65 68 61 76 69 6f 75 72 20 6f 66 20 74 68 65 20 41 50 49 20 63 61 6e 20 62 65 20 63 68 61 .behaviour.of.the.API.can.be.cha
7c300 6e 67 65 64 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 73 69 6d 69 6c 61 72 0a 20 20 20 20 20 20 nged.by.using.the.similar.......
7c320 20 20 53 53 4c 2e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 6d 6f 64 65 28 29 20 61 6e 64 20 53 53 4c ..SSL.Context.set_mode().and.SSL
7c340 2e 73 65 74 5f 6d 6f 64 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 20 20 20 20 .set_mode().functions...........
7c360 44 75 72 69 6e 67 20 61 20 68 61 6e 64 73 68 61 6b 65 2c 20 74 68 65 20 6f 70 74 69 6f 6e 20 73 During.a.handshake,.the.option.s
7c380 65 74 74 69 6e 67 73 20 6f 66 20 74 68 65 20 53 53 4c 20 6f 62 6a 65 63 74 20 61 72 65 0a 20 20 ettings.of.the.SSL.object.are...
7c3a0 20 20 20 20 20 20 75 73 65 64 2e 20 57 68 65 6e 20 61 20 6e 65 77 20 53 53 4c 20 6f 62 6a 65 63 ......used..When.a.new.SSL.objec
7c3c0 74 20 69 73 20 63 72 65 61 74 65 64 20 66 72 6f 6d 20 61 20 63 6f 6e 74 65 78 74 20 75 73 69 6e t.is.created.from.a.context.usin
7c3e0 67 0a 20 20 20 20 20 20 20 20 53 53 4c 28 29 2c 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 74 g.........SSL(),.the.current.opt
7c400 69 6f 6e 20 73 65 74 74 69 6e 67 20 69 73 20 63 6f 70 69 65 64 2e 20 43 68 61 6e 67 65 73 20 74 ion.setting.is.copied..Changes.t
7c420 6f 20 63 74 78 0a 20 20 20 20 20 20 20 20 64 6f 20 6e 6f 74 20 61 66 66 65 63 74 20 61 6c 72 65 o.ctx.........do.not.affect.alre
7c440 61 64 79 20 63 72 65 61 74 65 64 20 53 53 4c 20 6f 62 6a 65 63 74 73 2e 20 53 53 4c 2e 63 6c 65 ady.created.SSL.objects..SSL.cle
7c460 61 72 28 29 20 64 6f 65 73 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 61 66 66 65 63 74 20 74 68 65 ar().does.not.........affect.the
7c480 20 73 65 74 74 69 6e 67 73 2e 0a 0a 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d 20 6f 70 3a 20 62 .settings...........:param.op:.b
7c4a0 69 74 6d 61 73 6b 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 70 74 69 6f 6e 73 20 73 70 65 itmask.of.additional.options.spe
7c4c0 63 69 66 69 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 53 53 4c cified.in....................SSL
7c4e0 5f 43 54 58 5f 73 65 74 5f 6f 70 74 69 6f 6e 73 28 33 29 20 6d 61 6e 70 61 67 65 2e 0a 0a 20 20 _CTX_set_options(3).manpage.....
7c500 20 20 20 20 20 20 3a 72 65 74 75 72 6e 3a 20 74 68 65 20 6e 65 77 20 6f 70 74 69 6f 6e 73 20 62 ......:return:.the.new.options.b
7c520 69 74 6d 61 73 6b 20 61 66 74 65 72 20 61 64 64 69 6e 67 20 6f 70 74 69 6f 6e 73 2e 0a 20 20 20 itmask.after.adding.options.....
7c540 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
7c560 74 78 5f 73 65 74 5f 6f 70 74 69 6f 6e 73 28 73 65 6c 66 2e 63 74 78 2c 20 6f 70 29 0a 0a 20 20 tx_set_options(self.ctx,.op)....
7c580 20 20 64 65 66 20 67 65 74 5f 63 65 72 74 5f 73 74 6f 72 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 ..def.get_cert_store(self):.....
7c5a0 20 20 20 20 23 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 58 35 30 39 2e 58 35 30 39 0a 20 20 20 20 ....#.type:.().->.X509.X509.....
7c5c0 20 20 20 20 22 22 22 0a 20 20 20 20 20 20 20 20 47 65 74 20 74 68 65 20 63 65 72 74 69 66 69 63 ....""".........Get.the.certific
7c5e0 61 74 65 20 73 74 6f 72 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 63 ate.store.associated.with.this.c
7c600 6f 6e 74 65 78 74 2e 0a 0a 20 20 20 20 20 20 20 20 3a 77 61 72 6e 69 6e 67 3a 20 54 68 65 20 73 ontext...........:warning:.The.s
7c620 74 6f 72 65 20 69 73 20 4e 4f 54 20 72 65 66 63 6f 75 6e 74 65 64 2c 20 61 6e 64 20 61 73 20 73 tore.is.NOT.refcounted,.and.as.s
7c640 75 63 68 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 65 6c 69 65 64 0a 20 20 20 20 20 20 20 20 20 20 uch.can.not.be.relied...........
7c660 20 20 20 20 20 20 20 20 74 6f 20 62 65 20 76 61 6c 69 64 20 6f 6e 63 65 20 74 68 65 20 63 6f 6e ........to.be.valid.once.the.con
7c680 74 65 78 74 20 67 6f 65 73 20 61 77 61 79 20 6f 72 20 69 73 20 63 68 61 6e 67 65 64 2e 0a 20 20 text.goes.away.or.is.changed....
7c6a0 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 2e 58 35 ......""".........return.X509.X5
7c6c0 30 39 5f 53 74 6f 72 65 28 6d 32 2e 73 73 6c 5f 63 74 78 5f 67 65 74 5f 63 65 72 74 5f 73 74 6f 09_Store(m2.ssl_ctx_get_cert_sto
7c6e0 72 65 28 73 65 6c 66 2e 63 74 78 29 29 0a 94 7d 94 28 8c 10 5f 63 74 78 6d 61 70 2e 5f 5f 69 6e re(self.ctx))..}.(.._ctxmap.__in
7c700 69 74 5f 5f 94 6a 18 25 00 00 4b 13 4b 17 87 94 8c 13 5f 63 74 78 6d 61 70 2e 5f 5f 67 65 74 69 it__.j.%..K.K....._ctxmap.__geti
7c720 74 65 6d 5f 5f 94 6a 18 25 00 00 4b 19 4b 1b 87 94 8c 13 5f 63 74 78 6d 61 70 2e 5f 5f 73 65 74 tem__.j.%..K.K....._ctxmap.__set
7c740 69 74 65 6d 5f 5f 94 6a 18 25 00 00 4b 1d 4b 1f 87 94 8c 13 5f 63 74 78 6d 61 70 2e 5f 5f 64 65 item__.j.%..K.K....._ctxmap.__de
7c760 6c 69 74 65 6d 5f 5f 94 6a 18 25 00 00 4b 21 4b 23 87 94 8c 07 5f 63 74 78 6d 61 70 94 6a 37 02 litem__.j.%..K!K#...._ctxmap.j7.
7c780 00 00 4b 10 4b 23 87 94 8c 06 63 74 78 6d 61 70 94 6a 18 25 00 00 4b 26 4b 2a 87 94 8c 10 43 6f ..K.K#....ctxmap.j.%..K&K*....Co
7c7a0 6e 74 65 78 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 35 4b 46 87 94 8c 0f 43 6f 6e 74 ntext.__init__.j.%..K5KF....Cont
7c7c0 65 78 74 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 48 4b 4b 87 94 8c 0d 43 6f 6e 74 65 78 74 ext.__del__.j.%..KHKK....Context
7c7e0 2e 63 6c 6f 73 65 94 6a 18 25 00 00 4b 4d 4b 4f 87 94 8c 11 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 .close.j.%..KMKO....Context.load
7c800 5f 63 65 72 74 94 6a 18 25 00 00 4b 51 4b 64 87 94 8c 17 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 5f _cert.j.%..KQKd....Context.load_
7c820 63 65 72 74 5f 63 68 61 69 6e 94 6a 18 25 00 00 4b 66 4b 7b 87 94 8c 24 43 6f 6e 74 65 78 74 2e cert_chain.j.%..KfK{...$Context.
7c840 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 94 6a 18 25 set_client_CA_list_from_file.j.%
7c860 00 00 4b 7d 4b 85 87 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 ..K}K.....Context.load_verify_lo
7c880 63 61 74 69 6f 6e 73 94 6a 18 25 00 00 4b 8a 4b 9f 87 94 8c 1a 43 6f 6e 74 65 78 74 2e 73 65 74 cations.j.%..K.K.....Context.set
7c8a0 5f 73 65 73 73 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 18 25 00 00 4b a4 4b b7 87 94 8c 20 43 6f 6e _session_id_ctx.j.%..K.K.....Con
7c8c0 74 65 78 74 2e 73 65 74 5f 64 65 66 61 75 6c 74 5f 76 65 72 69 66 79 5f 70 61 74 68 73 94 6a 18 text.set_default_verify_paths.j.
7c8e0 25 00 00 4b b9 4b ce 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 %..K.K.....Context.set_allow_unk
7c900 6e 6f 77 6e 5f 63 61 94 6a 18 25 00 00 4b d0 4b d7 87 94 8c 1c 43 6f 6e 74 65 78 74 2e 67 65 74 nown_ca.j.%..K.K.....Context.get
7c920 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 18 25 00 00 4b d9 4b e0 87 94 8c 12 43 _allow_unknown_ca.j.%..K.K.....C
7c940 6f 6e 74 65 78 74 2e 73 65 74 5f 76 65 72 69 66 79 94 6a 18 25 00 00 4b e2 4b f4 87 94 8c 17 43 ontext.set_verify.j.%..K.K.....C
7c960 6f 6e 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 94 6a 18 25 00 00 4b f6 4b f8 ontext.get_verify_mode.j.%..K.K.
7c980 87 94 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 18 25 ....Context.get_verify_depth.j.%
7c9a0 00 00 4b fa 4b fd 87 94 8c 12 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 68 94 6a 18 25 ..K.K.....Context.set_tmp_dh.j.%
7c9c0 00 00 4b ff 4d 08 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 ..K.M......Context.set_tmp_dh_ca
7c9e0 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4d 0a 01 4d 11 01 87 94 8c 13 43 6f 6e 74 65 78 74 2e 73 65 llback.j.%..M..M......Context.se
7ca00 74 5f 74 6d 70 5f 72 73 61 94 6a 18 25 00 00 4d 13 01 4d 1c 01 87 94 8c 1c 43 6f 6e 74 65 78 74 t_tmp_rsa.j.%..M..M......Context
7ca20 2e 73 65 74 5f 74 6d 70 5f 72 73 61 5f 63 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4d 1e 01 4d 24 .set_tmp_rsa_callback.j.%..M..M$
7ca40 01 87 94 8c 19 43 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 .....Context.set_info_callback.j
7ca60 18 25 00 00 4d 26 01 4d 30 01 87 94 8c 17 43 6f 6e 74 65 78 74 2e 73 65 74 5f 63 69 70 68 65 72 .%..M&.M0.....Context.set_cipher
7ca80 5f 6c 69 73 74 94 6a 18 25 00 00 4d 32 01 4d 3b 01 87 94 8c 13 43 6f 6e 74 65 78 74 2e 61 64 64 _list.j.%..M2.M;.....Context.add
7caa0 5f 73 65 73 73 69 6f 6e 94 6a 18 25 00 00 4d 3d 01 4d 48 01 87 94 8c 16 43 6f 6e 74 65 78 74 2e _session.j.%..M=.MH.....Context.
7cac0 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 94 6a 18 25 00 00 4d 4a 01 4d 55 01 87 94 8c 1b 43 6f remove_session.j.%..MJ.MU.....Co
7cae0 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 18 25 00 00 4d ntext.get_session_timeout.j.%..M
7cb00 57 01 4d 74 01 87 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 W.Mt.....Context.set_session_tim
7cb20 65 6f 75 74 94 6a 18 25 00 00 4d 76 01 4d 81 01 87 94 8c 1e 43 6f 6e 74 65 78 74 2e 73 65 74 5f eout.j.%..Mv.M......Context.set_
7cb40 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 18 25 00 00 4d 83 01 4d 8d 01 87 94 session_cache_mode.j.%..M..M....
7cb60 8c 1e 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 ..Context.get_session_cache_mode
7cb80 94 6a 18 25 00 00 4d 8f 01 4d 97 01 87 94 8c 13 43 6f 6e 74 65 78 74 2e 73 65 74 5f 6f 70 74 69 .j.%..M..M......Context.set_opti
7cba0 6f 6e 73 94 6a 18 25 00 00 4d 99 01 4d b3 01 87 94 8c 16 43 6f 6e 74 65 78 74 2e 67 65 74 5f 63 ons.j.%..M..M......Context.get_c
7cbc0 65 72 74 5f 73 74 6f 72 65 94 6a 18 25 00 00 4d b5 01 4d bd 01 87 94 8c 07 43 6f 6e 74 65 78 74 ert_store.j.%..M..M......Context
7cbe0 94 6a 37 02 00 00 4b 2f 4d bd 01 87 94 75 7d 94 28 8c 07 43 6f 6e 74 65 78 74 94 6a 5c 02 00 00 .j7...K/M....u}.(..Context.j\...
7cc00 8c 13 43 6f 6e 74 65 78 74 2e 61 64 64 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 0d 43 6f 6e ..Context.add_session.j\.....Con
7cc20 74 65 78 74 2e 63 6c 6f 73 65 94 6a 5c 02 00 00 8c 1c 43 6f 6e 74 65 78 74 2e 67 65 74 5f 61 6c text.close.j\.....Context.get_al
7cc40 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 5c 02 00 00 8c 16 43 6f 6e 74 65 78 74 2e 67 65 low_unknown_ca.j\.....Context.ge
7cc60 74 5f 63 65 72 74 5f 73 74 6f 72 65 94 6a 5c 02 00 00 8c 1e 43 6f 6e 74 65 78 74 2e 67 65 74 5f t_cert_store.j\.....Context.get_
7cc80 73 65 73 73 69 6f 6e 5f 63 61 63 68 65 5f 6d 6f 64 65 94 6a 5c 02 00 00 8c 1b 43 6f 6e 74 65 78 session_cache_mode.j\.....Contex
7cca0 74 2e 67 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 18 43 6f 6e t.get_session_timeout.j\.....Con
7ccc0 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 94 6a 5c 02 00 00 8c 17 43 6f 6e text.get_verify_depth.j\.....Con
7cce0 74 65 78 74 2e 67 65 74 5f 76 65 72 69 66 79 5f 6d 6f 64 65 94 6a 5c 02 00 00 8c 11 43 6f 6e 74 text.get_verify_mode.j\.....Cont
7cd00 65 78 74 2e 6c 6f 61 64 5f 63 65 72 74 94 6a 5c 02 00 00 8c 17 43 6f 6e 74 65 78 74 2e 6c 6f 61 ext.load_cert.j\.....Context.loa
7cd20 64 5f 63 65 72 74 5f 63 68 61 69 6e 94 6a 5c 02 00 00 8c 1d 43 6f 6e 74 65 78 74 2e 6c 6f 61 64 d_cert_chain.j\.....Context.load
7cd40 5f 76 65 72 69 66 79 5f 6c 6f 63 61 74 69 6f 6e 73 94 6a 5c 02 00 00 8c 16 43 6f 6e 74 65 78 74 _verify_locations.j\.....Context
7cd60 2e 72 65 6d 6f 76 65 5f 73 65 73 73 69 6f 6e 94 6a 5c 02 00 00 8c 1c 43 6f 6e 74 65 78 74 2e 73 .remove_session.j\.....Context.s
7cd80 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 17 43 6f 6e 74 65 et_allow_unknown_ca.j\.....Conte
7cda0 78 74 2e 73 65 74 5f 63 69 70 68 65 72 5f 6c 69 73 74 94 6a 5c 02 00 00 8c 24 43 6f 6e 74 65 78 xt.set_cipher_list.j\....$Contex
7cdc0 74 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 66 69 6c 65 94 6a t.set_client_CA_list_from_file.j
7cde0 5c 02 00 00 8c 20 43 6f 6e 74 65 78 74 2e 73 65 74 5f 64 65 66 61 75 6c 74 5f 76 65 72 69 66 79 \.....Context.set_default_verify
7ce00 5f 70 61 74 68 73 94 6a 5c 02 00 00 8c 19 43 6f 6e 74 65 78 74 2e 73 65 74 5f 69 6e 66 6f 5f 63 _paths.j\.....Context.set_info_c
7ce20 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 13 43 6f 6e 74 65 78 74 2e 73 65 74 5f 6f 70 74 69 6f allback.j\.....Context.set_optio
7ce40 6e 73 94 6a 5c 02 00 00 8c 1e 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 69 6f 6e 5f 63 61 ns.j\.....Context.set_session_ca
7ce60 63 68 65 5f 6d 6f 64 65 94 6a 5c 02 00 00 8c 1a 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 73 73 che_mode.j\.....Context.set_sess
7ce80 69 6f 6e 5f 69 64 5f 63 74 78 94 6a 5c 02 00 00 8c 1b 43 6f 6e 74 65 78 74 2e 73 65 74 5f 73 65 ion_id_ctx.j\.....Context.set_se
7cea0 73 73 69 6f 6e 5f 74 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 12 43 6f 6e 74 65 78 74 2e 73 65 74 ssion_timeout.j\.....Context.set
7cec0 5f 74 6d 70 5f 64 68 94 6a 5c 02 00 00 8c 1b 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 64 _tmp_dh.j\.....Context.set_tmp_d
7cee0 68 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 65 74 5f 74 6d h_callback.j\.....Context.set_tm
7cf00 70 5f 72 73 61 94 6a 5c 02 00 00 8c 1c 43 6f 6e 74 65 78 74 2e 73 65 74 5f 74 6d 70 5f 72 73 61 p_rsa.j\.....Context.set_tmp_rsa
7cf20 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 12 43 6f 6e 74 65 78 74 2e 73 65 74 5f 76 65 72 _callback.j\.....Context.set_ver
7cf40 69 66 79 94 6a 5c 02 00 00 8c 06 63 74 78 6d 61 70 94 6a 5c 02 00 00 75 8c 14 4d 32 43 72 79 70 ify.j\.....ctxmap.j\...u..M2Cryp
7cf60 74 6f 2e 53 53 4c 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 to.SSL.Context.t...M2Crypto.SSL.
7cf80 53 53 4c 53 65 72 76 65 72 94 28 58 26 08 00 00 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20 SSLServer.(X&...from.__future__.
7cfa0 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 72 69 6e 74 5f 66 75 import.absolute_import,.print_fu
7cfc0 6e 63 74 69 6f 6e 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 nction.."""SSLServer..Copyright.
7cfe0 28 63 29 20 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 (c).1999-2002.Ng.Pheng.Siong..Al
7d000 6c 20 72 69 67 68 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 l.rights.reserved."""...#.M2Cryp
7d020 74 6f 0a 66 72 6f 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 to.from.M2Crypto.SSL.import.SSLE
7d040 72 72 6f 72 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 rror.from.M2Crypto.SSL.Connectio
7d060 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
7d080 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 20 20 23 20 o.SSL.Context.import.Context..#.
7d0a0 6e 6f 71 61 0a 23 20 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 73 69 78 20 noqa.#.from.M2Crypto.import.six.
7d0c0 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 75 74 69 .#.noqa.from.M2Crypto.import.uti
7d0e0 6c 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 73 69 78 2e 6d 6f 76 65 l..#.noqa.from.M2Crypto.six.move
7d100 73 2e 73 6f 63 6b 65 74 73 65 72 76 65 72 20 69 6d 70 6f 72 74 20 28 42 61 73 65 52 65 71 75 65 s.socketserver.import.(BaseReque
7d120 73 74 48 61 6e 64 6c 65 72 2c 20 42 61 73 65 53 65 72 76 65 72 2c 0a 20 20 20 20 20 20 20 20 20 stHandler,.BaseServer,..........
7d140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7d160 20 20 20 20 54 43 50 53 65 72 76 65 72 2c 20 54 68 72 65 61 64 69 6e 67 4d 69 78 49 6e 29 0a 69 ....TCPServer,.ThreadingMixIn).i
7d180 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 0a 20 20 20 mport.os.if.os.name.!=.'nt':....
7d1a0 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 65 74 73 .from.M2Crypto.six.moves.sockets
7d1c0 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 6d 20 73 erver.import.ForkingMixIn.from.s
7d1e0 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 66 72 6f 6d ocket.import.socket..#.noqa.from
7d200 20 74 79 70 69 6e 67 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 .typing.import.Union..#.noqa..__
7d220 61 6c 6c 5f 5f 20 3d 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 all__.=.['SSLServer',.'ForkingSS
7d240 4c 53 65 72 76 65 72 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 LServer',.'ThreadingSSLServer'].
7d260 0a 0a 63 6c 61 73 73 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 ..class.SSLServer(TCPServer):...
7d280 20 20 64 65 66 20 5f 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 ..def.__init__(self,.server_addr
7d2a0 65 73 73 2c 20 52 65 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 ess,.RequestHandlerClass,.ssl_co
7d2c0 6e 74 65 78 74 2c 20 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 ntext,..#.noqa..................
7d2e0 62 69 6e 64 5f 61 6e 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 bind_and_activate=True):........
7d300 20 23 20 74 79 70 65 3a 20 28 75 74 69 6c 2e 41 64 64 72 54 79 70 65 2c 20 42 61 73 65 52 65 71 .#.type:.(util.AddrType,.BaseReq
7d320 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 29 20 2d 3e 20 4e uestHandler,.Context,.bool).->.N
7d340 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 70 65 72 63 6c 61 one.........""".........Supercla
7d360 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 62 65 20 65 78 74 ss.says:.Constructor..May.be.ext
7d380 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 20 20 20 20 20 20 ended,.do.not.override..........
7d3a0 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 20 20 20 20 20 20 This.class.says:.Ho-hum.........
7d3c0 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 69 6e 69 74 5f 5f .""".........BaseServer.__init__
7d3e0 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 75 65 73 74 48 61 (self,.server_address,.RequestHa
7d400 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 73 6c 5f 63 74 78 ndlerClass).........self.ssl_ctx
7d420 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 66 2e 73 6f 63 6b .=.ssl_context.........self.sock
7d440 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 74 78 29 0a 20 20 et.=.Connection(self.ssl_ctx)...
7d460 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 3a 0a 20 20 20 20 ......if.bind_and_activate:.....
7d480 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 0a 20 20 20 20 20 ........self.server_bind()......
7d4a0 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 65 28 29 0a 0a 20 .......self.server_activate()...
7d4c0 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 29 3a 0a 20 20 20 ...def.handle_request(self):....
7d4e0 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.........
7d500 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 65 6e 74 5f 61 64 request.=.None.........client_ad
7d520 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 20 20 20 20 20 20 dress.=.None.........try:.......
7d540 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 65 73 73 20 3d 20 ......request,.client_address.=.
7d560 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 20 20 20 20 20 69 self.get_request().............i
7d580 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 65 73 74 2c 20 63 f.self.verify_request(request,.c
7d5a0 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 20 20 20 20 20 20 lient_address):.................
7d5c0 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 73 74 2c 20 63 6c self.process_request(request,.cl
7d5e0 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 70 74 20 53 53 4c ient_address).........except.SSL
7d600 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 6e 64 6c 65 5f 65 Error:.............self.handle_e
7d620 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 73 73 29 0a 0a 20 rror(request,.client_address)...
7d640 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 72 65 71 75 65 73 ...def.handle_error(self,.reques
7d660 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 23 20 74 79 t,.client_address):.........#.ty
7d680 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 69 6f 6e 5d 2c 20 pe:.(Union[socket,.Connection],.
7d6a0 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 20 20 20 20 20 70 util.AddrType).->.None.........p
7d6c0 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 6f 72 74 20 74 72 rint('-'.*.40).........import.tr
7d6e0 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 70 72 69 6e 74 5f aceback.........traceback.print_
7d700 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 34 30 29 0a 0a 0a exc().........print('-'.*.40)...
7d720 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 68 72 65 61 64 69 class.ThreadingSSLServer(Threadi
7d740 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 61 73 73 0a 0a 0a ngMixIn,.SSLServer):.....pass...
7d760 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 61 73 73 20 46 6f if.os.name.!=.'nt':.....class.Fo
7d780 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 6e 2c 20 53 53 4c rkingSSLServer(ForkingMixIn,.SSL
7d7a0 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 8c 12 53 53 4c 53 Server):.........pass..}.(..SSLS
7d7c0 65 72 76 65 72 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 1a 4b 26 87 94 8c 18 53 53 4c 53 erver.__init__.j.%..K.K&....SSLS
7d7e0 65 72 76 65 72 2e 68 61 6e 64 6c 65 5f 72 65 71 75 65 73 74 94 6a 18 25 00 00 4b 28 4b 31 87 94 erver.handle_request.j.%..K(K1..
7d800 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 18 25 00 00 4b 33 ..SSLServer.handle_error.j.%..K3
7d820 4b 38 87 94 8c 09 53 53 4c 53 65 72 76 65 72 94 6a 37 02 00 00 4b 19 4b 38 87 94 8c 12 54 68 72 K8....SSLServer.j7...K.K8....Thr
7d840 65 61 64 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a 37 02 00 00 4b 3b 4b 3c 87 94 8c 10 46 6f 72 eadingSSLServer.j7...K;K<....For
7d860 6b 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a 37 02 00 00 4b 40 4b 41 87 94 75 7d 94 28 8c 10 46 kingSSLServer.j7...K@KA..u}.(..F
7d880 6f 72 6b 69 6e 67 53 53 4c 53 65 72 76 65 72 94 6a 5c 02 00 00 8c 09 53 53 4c 53 65 72 76 65 72 orkingSSLServer.j\.....SSLServer
7d8a0 94 6a 5c 02 00 00 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 .j\.....SSLServer.handle_error.j
7d8c0 5c 02 00 00 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 \.....SSLServer.handle_request.j
7d8e0 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 5c 02 00 00 75 8c \.....ThreadingSSLServer.j\...u.
7d900 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 8c 14 4d 32 43 72 .M2Crypto.SSL.SSLServer.t...M2Cr
7d920 79 70 74 6f 2e 53 53 4c 2e 53 65 73 73 69 6f 6e 94 28 58 01 07 00 00 22 22 22 53 53 4c 20 53 65 ypto.SSL.Session.(X...."""SSL.Se
7d940 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 32 30 30 33 20 4e ssion..Copyright.(c).1999-2003.N
7d960 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
7d980 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 6e 27 2c 20 27 6c ed."""..__all__.=.['Session',.'l
7d9a0 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 74 6f 20 69 6d 70 oad_session']..from.M2Crypto.imp
7d9c0 6f 72 74 20 42 49 4f 2c 20 45 72 72 2c 20 6d 32 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 2e 53 ort.BIO,.Err,.m2.from.M2Crypto.S
7d9e0 53 4c 20 69 6d 70 6f 72 74 20 53 53 4c 45 72 72 6f 72 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 SL.import.SSLError.from.typing.i
7da00 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 65 73 mport.AnyStr..#.noqa...class.Ses
7da20 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 69 6f sion(object):......m2_ssl_sessio
7da40 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 20 20 n_free.=.m2.ssl_session_free....
7da60 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 5f 70 ..def.__init__(self,.session,._p
7da80 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 73 yfree=0):.........#.type:.(bytes
7daa0 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 73 65 ,.int).->.None.........assert.se
7dac0 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 2e 73 ssion.is.not.None.........self.s
7dae0 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 5f 70 ession.=.session.........self._p
7db00 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 5f 5f yfree.=._pyfree......def.__del__
7db20 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
7db40 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 70 79 ne.........if.getattr(self,.'_py
7db60 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 5f 73 free',.0):.............self.m2_s
7db80 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 0a 20 sl_session_free(self.session)...
7dba0 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 79 70 ...def._ptr(self):.........#.typ
7dbc0 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 73 65 e:.().->.bytes.........return.se
7dbe0 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 6c 66 lf.session......def.as_text(self
7dc00 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..
7dc20 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 0a .......buf.=.BIO.MemoryBuffer().
7dc40 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 75 66 ........m2.ssl_session_print(buf
7dc60 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 20 20 .bio_ptr(),.self.session).......
7dc80 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 65 66 ..return.buf.read_all()......def
7dca0 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:.(
7dcc0 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 65 6d ).->.bytes.........buf.=.BIO.Mem
7dce0 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 5f 73 oryBuffer().........m2.i2d_ssl_s
7dd00 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 73 69 ession(buf.bio_ptr(),.self.sessi
7dd20 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 6c 28 on).........return.buf.read_all(
7dd40 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 29 3a )......def.write_bio(self,.bio):
7dd60 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 6e .........#.type:.(BIO.BIO).->.in
7dd80 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 6e 5f t.........return.m2.ssl_session_
7dda0 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 73 65 write_bio(bio.bio_ptr(),.self.se
7ddc0 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 3a 0a ssion)......def.get_time(self):.
7dde0 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.......
7de00 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 6d 65 ..return.m2.ssl_session_get_time
7de20 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 65 (self.session)......def.set_time
7de40 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 74 29 (self,.t):.........#.type:.(int)
7de60 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 73 65 .->.int.........return.m2.ssl_se
7de80 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 29 0a ssion_set_time(self.session,.t).
7dea0 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 20 20 .....def.get_timeout(self):.....
7dec0 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 72 65 ....#.type:.().->.int.........re
7dee0 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 74 28 turn.m2.ssl_session_get_timeout(
7df00 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 65 6f self.session)......def.set_timeo
7df20 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 69 6e ut(self,.t):.........#.type:.(in
7df40 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_
7df60 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 6f 6e session_set_timeout(self.session
7df80 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 65 29 ,.t)...def.load_session(pemfile)
7dfa0 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 69 6f :.....#.type:.(AnyStr).->.Sessio
7dfc0 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 65 29 n.....with.BIO.openfile(pemfile)
7dfe0 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 65 73 .as.f:.........cptr.=.m2.ssl_ses
7e000 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 20 20 sion_read_pem(f.bio_ptr())......
7e020 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 53 65 return.Session(cptr,.1)..}.(..Se
7e040 73 73 69 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 10 4b 14 87 94 8c 0f 53 65 73 73 ssion.__init__.j.%..K.K.....Sess
7e060 69 6f 6e 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 16 4b 19 87 94 8c 0c 53 65 73 73 69 6f 6e ion.__del__.j.%..K.K.....Session
7e080 2e 5f 70 74 72 94 6a 18 25 00 00 4b 1b 4b 1d 87 94 8c 0f 53 65 73 73 69 6f 6e 2e 61 73 5f 74 65 ._ptr.j.%..K.K.....Session.as_te
7e0a0 78 74 94 6a 18 25 00 00 4b 1f 4b 23 87 94 8c 0e 53 65 73 73 69 6f 6e 2e 61 73 5f 64 65 72 94 6a xt.j.%..K.K#....Session.as_der.j
7e0c0 18 25 00 00 4b 25 4b 29 87 94 8c 11 53 65 73 73 69 6f 6e 2e 77 72 69 74 65 5f 62 69 6f 94 6a 18 .%..K%K)....Session.write_bio.j.
7e0e0 25 00 00 4b 2b 4b 2d 87 94 8c 10 53 65 73 73 69 6f 6e 2e 67 65 74 5f 74 69 6d 65 94 6a 18 25 00 %..K+K-....Session.get_time.j.%.
7e100 00 4b 2f 4b 31 87 94 8c 10 53 65 73 73 69 6f 6e 2e 73 65 74 5f 74 69 6d 65 94 6a 18 25 00 00 4b .K/K1....Session.set_time.j.%..K
7e120 33 4b 35 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 18 25 00 00 3K5....Session.get_timeout.j.%..
7e140 4b 37 4b 39 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 18 25 00 K7K9....Session.set_timeout.j.%.
7e160 00 4b 3b 4b 3d 87 94 8c 07 53 65 73 73 69 6f 6e 94 6a 37 02 00 00 4b 0c 4b 3d 87 94 8c 0c 6c 6f .K;K=....Session.j7...K.K=....lo
7e180 61 64 5f 73 65 73 73 69 6f 6e 94 6a 18 25 00 00 4b 40 4b 45 87 94 75 7d 94 28 8c 07 53 65 73 73 ad_session.j.%..K@KE..u}.(..Sess
7e1a0 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 00 8c ion.j\.....Session.as_der.j\....
7e1c0 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 6e 2e .Session.as_text.j\.....Session.
7e1e0 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 6d 65 get_time.j\.....Session.get_time
7e200 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 02 00 out.j\.....Session.set_time.j\..
7e220 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 53 65 ...Session.set_timeout.j\.....Se
7e240 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 73 73 ssion.write_bio.j\.....load_sess
7e260 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 6f 6e ion.j\...u..M2Crypto.SSL.Session
7e280 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 63 6f .t..#M2Crypto.SSL.TwistedProtoco
7e2a0 6c 57 72 61 70 70 65 72 94 28 58 38 46 00 00 22 22 22 0a 4d 61 6b 65 20 54 77 69 73 74 65 64 20 lWrapper.(X8F..""".Make.Twisted.
7e2c0 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 74 20 use.M2Crypto.for.SSL..Copyright.
7e2e0 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 69 63 (c).2004-2007.Open.Source.Applic
7e300 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 72 65 ations.Foundation..All.rights.re
7e320 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 45 4e served...FIXME.THIS.HAS.NOT.BEEN
7e340 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 50 4f .FINISHED..NEITHER.PEP484.NOR.PO
7e360 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 54 48 RT.PYTHON3.HAS.BEEN.FINISHED..TH
7e380 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 45 4e E.FURTHER.WORK.WILL.BE.DONE.WHEN
7e3a0 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 50 59 .THE.STATUS.OF.TWISTED.IN.THE.PY
7e3c0 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 4c 20 THON.3.(AND.ASYNCIO).WORLD.WILL.
7e3e0 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 6e 65 BE.CLEAR.."""..__all__.=.['conne
7e400 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 53 4c ctSSL',.'connectTCP',.'listenSSL
7e420 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 53 50 ',.'listenTCP',............'TLSP
7e440 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 6e 67 rotocolWrapper']..import.logging
7e460 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 6c 0a ..from.functools.import.partial.
7e480 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 6f 72 .import.twisted.internet.reactor
7e4a0 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 63 69 .import.twisted.protocols.polici
7e4c0 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 69 6d es.as.policies..from.M2Crypto.im
7e4e0 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 4d 32 port.BIO,.X509,.m2,.util.from.M2
7e500 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 6b 65 Crypto.SSL.Checker.import.Checke
7e520 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 74 77 r,.SSLVerificationError..from.tw
7e540 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 72 74 isted.internet.interfaces.import
7e560 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 6f 74 .ITLSTransport.from.twisted.prot
7e580 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 57 72 ocols.policies.import.ProtocolWr
7e5a0 61 70 70 65 72 0a 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 apper.from.typing.import.AnyStr,
7e5c0 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 6e 61 6c 20 20 23 .Callable,.Iterable,.Optional..#
7e5e0 20 6e 6f 71 61 0a 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 .noqa.from.zope.interface.import
7e600 20 69 6d 70 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 .implementer..log.=.logging.getL
7e620 6f 67 67 65 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 ogger(__name__)...def._alwaysSuc
7e640 63 65 65 64 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 ceedsPostConnectionCheck(peerX50
7e660 39 2c 20 65 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 9,.expectedHost):.....return.1..
7e680 0a 64 65 66 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 .def.connectSSL(host,.port,.fact
7e6a0 6f 72 79 2c 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 ory,.contextFactory,.timeout=30,
7e6c0 0a 20 20 20 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 ................bindAddress=None
7e6e0 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 69 73 74 65 64 ,................reactor=twisted
7e700 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 20 .internet.reactor,..............
7e720 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 65 72 28 29 29 ..postConnectionCheck=Checker())
7e740 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 6a 65 63 74 2c :.....#.type:.(str,.int,.object,
7e760 20 6f 62 6a 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 .object,.int,.Optional[str],.twi
7e780 73 74 65 64 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 sted.internet.reactor,.Checker).
7e7a0 2d 3e 20 72 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 ->.reactor.connectTCP....."""...
7e7c0 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 74 6f 20 73 74 61 72 ..A.convenience.function.to.star
7e7e0 74 20 61 6e 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 t.an.SSL/TLS.connection.using.Tw
7e800 69 73 74 65 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 isted.......See.IReactorSSL.inte
7e820 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 20 20 20 77 72 rface.in.Twisted......""".....wr
7e840 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 61 70 70 69 6e appingFactory.=.policies.Wrappin
7e860 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 69 6e 67 46 61 gFactory(factory).....wrappingFa
7e880 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 74 6f 72 79 2c ctory.protocol.=.lambda.factory,
7e8a0 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 20 54 4c 53 50 .wrappedProtocol:.\.........TLSP
7e8c0 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 20 20 20 20 20 rotocolWrapper(factory,.........
7e8e0 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 72 6f 74 6f 63 ...................wrappedProtoc
7e900 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 20 20 20 20 73 ol,............................s
7e920 74 61 72 74 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 tartPassThrough=0,..............
7e940 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 20 20 20 20 20 ..............client=1,.........
7e960 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 61 63 74 6f 72 ...................contextFactor
7e980 79 3d 63 6f 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 y=contextFactory,...............
7e9a0 20 20 20 20 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 .............postConnectionCheck
7e9c0 3d 70 6f 73 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 =postConnectionCheck).....return
7e9e0 20 72 65 61 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 .reactor.connectTCP(host,.port,.
7ea00 77 72 61 70 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 wrappingFactory,.timeout,.bindAd
7ea20 64 72 65 73 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 dress)...def.connectTCP(host,.po
7ea40 72 74 2c 20 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 rt,.factory,.timeout=30,.bindAdd
7ea60 72 65 73 73 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 ress=None,................reacto
7ea80 72 3d 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 r=twisted.internet.reactor,.....
7eaa0 20 20 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 43 ...........postConnectionCheck=C
7eac0 68 65 63 6b 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 hecker()):.....#.type:.(str,.int
7eae0 2c 20 6f 62 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 ,.object,.int,.Optional[util.Add
7eb00 72 54 79 70 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 rType],.object,.Callable).->.obj
7eb20 65 63 74 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 ect.....""".....A.convenience.fu
7eb40 6e 63 74 69 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 nction.to.start.a.TCP.connection
7eb60 20 75 73 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 .using.Twisted.......NOTE:.You.m
7eb80 75 73 74 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 ust.call.startTLS(ctx).to.go.int
7eba0 6f 20 53 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 o.SSL/TLS.mode.......See.IReacto
7ebc0 72 54 43 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 rTCP.interface.in.Twisted......"
7ebe0 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 6c 69 63 69 65 "".....wrappingFactory.=.policie
7ec00 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 20 20 20 20 77 s.WrappingFactory(factory).....w
7ec20 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 61 6d 62 64 61 rappingFactory.protocol.=.lambda
7ec40 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 5c 0a 20 20 20 .factory,.wrappedProtocol:.\....
7ec60 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 74 6f 72 79 2c .....TLSProtocolWrapper(factory,
7ec80 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 77 72 61 70 ............................wrap
7eca0 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 20 20 20 20 20 pedProtocol,....................
7ecc0 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 31 2c 0a 20 20 20 20 ........startPassThrough=1,.....
7ece0 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 6e 74 3d 31 2c .......................client=1,
7ed00 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 6f 6e 74 ............................cont
7ed20 65 78 74 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 extFactory=None,................
7ed40 20 20 20 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 ............postConnectionCheck=
7ed60 70 6f 73 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 postConnectionCheck).....return.
7ed80 72 65 61 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 reactor.connectTCP(host,.port,.w
7eda0 72 61 70 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 rappingFactory,.timeout,.bindAdd
7edc0 72 65 73 73 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 ress)...def.listenSSL(port,.fact
7ede0 6f 72 79 2c 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 ory,.contextFactory,.backlog=5,.
7ee00 69 6e 74 65 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 interface='',...............reac
7ee20 74 6f 72 3d 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 tor=twisted.internet.reactor,...
7ee40 20 20 20 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 ............postConnectionCheck=
7ee60 5f 61 6c 77 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 _alwaysSucceedsPostConnectionChe
7ee80 63 6b 29 3a 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 ck):.....""".....A.convenience.f
7eea0 75 6e 63 74 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 unction.to.listen.for.SSL/TLS.co
7eec0 6e 6e 65 63 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 nnections.using.Twisted.......Se
7eee0 65 20 49 52 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 e.IReactorSSL.interface.in.Twist
7ef00 65 64 2e 0a 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 ed......""".....wrappingFactory.
7ef20 3d 20 70 6f 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 =.policies.WrappingFactory(facto
7ef40 72 79 29 0a 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 ry).....wrappingFactory.protocol
7ef60 20 3d 20 6c 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 .=.lambda.factory,.wrappedProtoc
7ef80 6f 6c 3a 20 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 ol:.\.........TLSProtocolWrapper
7efa0 28 66 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 20 20 20 20 (factory,.......................
7efc0 20 20 20 20 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 .....wrappedProtocol,...........
7efe0 20 20 20 20 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 .................startPassThroug
7f000 68 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 20 h=0,............................
7f020 63 6c 69 65 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 client=0,.......................
7f040 20 20 20 20 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 .....contextFactory=contextFacto
7f060 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 20 70 ry,............................p
7f080 6f 73 74 43 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 ostConnectionCheck=postConnectio
7f0a0 6e 43 68 65 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 nCheck).....return.reactor.liste
7f0c0 6e 54 43 50 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 nTCP(port,.wrappingFactory,.back
7f0e0 6c 6f 67 2c 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 log,.interface)...def.listenTCP(
7f100 70 6f 72 74 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 port,.factory,.backlog=5,.interf
7f120 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 74 77 ace='',...............reactor=tw
7f140 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,.........
7f160 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 4e 6f 6e 65 29 3a ......postConnectionCheck=None):
7f180 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
7f1a0 69 6f 6e 20 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 ion.to.listen.for.TCP.connection
7f1c0 73 20 75 73 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 s.using.Twisted.......NOTE:.You.
7f1e0 6d 75 73 74 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 must.call.startTLS(ctx).to.go.in
7f200 74 6f 20 53 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 to.SSL/TLS.mode.......See.IReact
7f220 6f 72 54 43 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 orTCP.interface.in.Twisted......
7f240 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 6c 69 63 69 """.....wrappingFactory.=.polici
7f260 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 20 20 20 20 es.WrappingFactory(factory).....
7f280 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 61 6d 62 64 wrappingFactory.protocol.=.lambd
7f2a0 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 5c 0a 20 20 a.factory,.wrappedProtocol:.\...
7f2c0 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 74 6f 72 79 ......TLSProtocolWrapper(factory
7f2e0 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 77 72 61 ,............................wra
7f300 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 20 20 20 20 ppedProtocol,...................
7f320 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 31 2c 0a 20 20 20 .........startPassThrough=1,....
7f340 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 6e 74 3d 30 ........................client=0
7f360 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 63 6f 6e ,............................con
7f380 74 65 78 74 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 textFactory=None,...............
7f3a0 20 20 20 20 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 .............postConnectionCheck
7f3c0 3d 70 6f 73 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 =postConnectionCheck).....return
7f3e0 20 72 65 61 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 .reactor.listenTCP(port,.wrappin
7f400 67 46 61 63 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 gFactory,.backlog,.interface)...
7f420 63 6c 61 73 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 class._BioProxy(object):....."""
7f440 0a 20 20 20 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 .....The.purpose.of.this.class.i
7f460 73 20 74 6f 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 s.to.eliminate.the.__del__.metho
7f480 64 20 66 72 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 d.from.....TLSProtocolWrapper,.a
7f4a0 6e 64 20 74 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 nd.thus.letting.it.be.garbage.co
7f4c0 6c 6c 65 63 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 llected......"""......m2_bio_fre
7f4e0 65 5f 61 6c 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 e_all.=.m2.bio_free_all......def
7f500 20 5f 5f 69 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 .__init__(self,.bio):.........se
7f520 6c 66 2e 62 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 lf.bio.=.bio......def._ptr(self)
7f540 3a 0a 20 20 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 :.........return.self.bio......d
7f560 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 69 66 20 73 65 6c ef.__del__(self):.........if.sel
7f580 66 2e 62 69 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 f.bio.is.not.None:.............s
7f5a0 65 6c 66 2e 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 elf.m2_bio_free_all(self.bio)...
7f5c0 63 6c 61 73 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 class._SSLProxy(object):....."""
7f5e0 0a 20 20 20 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 .....The.purpose.of.this.class.i
7f600 73 20 74 6f 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 s.to.eliminate.the.__del__.metho
7f620 64 20 66 72 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 d.from.....TLSProtocolWrapper,.a
7f640 6e 64 20 74 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 nd.thus.letting.it.be.garbage.co
7f660 6c 6c 65 63 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 llected......"""......m2_ssl_fre
7f680 65 20 3d 20 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 e.=.m2.ssl_free......def.__init_
7f6a0 5f 28 73 65 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 _(self,.ssl):.........self.ssl.=
7f6c0 20 73 73 6c 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 .ssl......def._ptr(self):.......
7f6e0 20 20 72 65 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 ..return.self.ssl......def.__del
7f700 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 73 73 6c 20 69 73 __(self):.........if.self.ssl.is
7f720 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 6d 32 5f 73 .not.None:.............self.m2_s
7f740 73 6c 5f 66 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 sl_free(self.ssl)...@implementer
7f760 28 49 54 4c 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 (ITLSTransport).class.TLSProtoco
7f780 6c 57 72 61 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 lWrapper(ProtocolWrapper):....."
7f7a0 22 22 0a 20 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 "".....A.SSL/TLS.protocol.wrappe
7f7c0 72 20 74 6f 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 r.to.be.used.with.Twisted..Typic
7f7e0 61 6c 6c 79 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 ally.....you.would.not.use.this.
7f800 63 6c 61 73 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 class.directly..Use.connectTCP,.
7f820 20 20 20 20 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 ....connectSSL,.listenTCP,.liste
7f840 6e 53 53 4c 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 nSSL.functions.defined.above,...
7f860 20 20 77 68 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 ..which.will.hook.in.this.class.
7f880 0a 20 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 ....."""......def.__init__(self,
7f8a0 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 2c 20 73 74 61 72 74 .factory,.wrappedProtocol,.start
7f8c0 50 61 73 73 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 PassThrough,.client,............
7f8e0 20 20 20 20 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 ......contextFactory,.postConnec
7f900 74 69 6f 6e 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 tionCheck):.........#.type:.(pol
7f920 69 63 69 65 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 icies.WrappingFactory,.object,.i
7f940 6e 74 2c 20 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 nt,.int,.object,.Checker).->.Non
7f960 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 66 61 63 e.........""".........:param.fac
7f980 74 6f 72 79 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 tory:.........:param.wrappedProt
7f9a0 6f 63 6f 6c 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 ocol:.........:param.startPassTh
7f9c0 72 6f 75 67 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 rough:....If.true.we.won't.encry
7f9e0 70 74 20 61 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 pt.at.all..Need.to..............
7fa00 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 6c 6c 20 73 74 61 72 .......................call.star
7fa20 74 54 4c 53 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 tTLS().later.to.switch.to.SSL/TL
7fa40 53 2e 0a 20 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 S..........:param.client:.......
7fa60 20 20 20 20 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 .......True.if.this.should.be.a.
7fa80 63 6c 69 65 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 client.protocol..........:param.
7faa0 63 6f 6e 74 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 contextFactory:......Factory.tha
7fac0 74 20 63 72 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 t.creates.SSL.Context.objects...
7fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7fb00 20 20 20 54 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 ...The.called.function.is.getCon
7fb20 74 65 78 74 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 text()..........:param.postConne
7fb40 63 74 69 6f 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 ctionCheck:.The.post.connection.
7fb60 63 68 65 63 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 check.callback.that.............
7fb80 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 69 6c 6c 20 62 65 20 ........................will.be.
7fba0 63 61 6c 6c 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 called.just.after.connection.has
7fbc0 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 ................................
7fbe0 20 20 20 20 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 .....been.established.but.before
7fc00 20 61 6e 79 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 .any.real.data..................
7fc20 20 20 20 20 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 ...................has.been.exch
7fc40 61 6e 67 65 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 anged..The.first.argument.to....
7fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7fc80 20 74 68 69 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 .this.function.is.an.X509.object
7fca0 2c 20 74 68 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 ,.the.second....................
7fcc0 20 20 20 20 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 .................is.the.expected
7fce0 20 68 6f 73 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 .host.name.string.........."""..
7fd00 20 20 20 20 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 .......#.ProtocolWrapper.__init_
7fd20 5f 28 73 65 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 _(self,.factory,.wrappedProtocol
7fd40 29 0a 20 20 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 ).........#.XXX:.Twisted.2.0.has
7fd60 20 61 20 6e 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 .a.new.addition.where.the.wrappi
7fd80 6e 67 46 61 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 ngFactory.is.........#......set.
7fda0 61 73 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 72 6f as.the.factory.of.the.wrappedPro
7fdc0 74 6f 63 6f 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 tocol..This.is.an.issue.........
7fde0 23 20 20 20 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 #......as.the.wrap.should.be.tra
7fe00 6e 73 70 61 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 nsparent..What.we.want.is.......
7fe20 20 20 23 20 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 ..#......the.factory.of.the.wrap
7fe40 70 65 64 50 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 pedProtocol.to.be.the.wrappedFac
7fe60 74 6f 72 79 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 tory.and.........#......not.the.
7fe80 6f 75 74 65 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 outer.wrappingFactory..This.is.h
7fea0 6f 77 20 69 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 ow.it.was.implemented.in........
7fec0 20 23 20 20 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 .#......Twisted.1.3.........self
7fee0 2e 66 61 63 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 .factory.=.factory.........self.
7ff00 77 72 61 70 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 wrappedProtocol.=.wrappedProtoco
7ff20 6c 0a 0a 20 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 l..........#.wrappedProtocol.==.
7ff40 63 6c 69 65 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 client/server.instance.........#
7ff60 20 66 61 63 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 .factory.wrappedFactory.==.clien
7ff80 74 2f 73 65 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 t/server.factory..........self.d
7ffa0 61 74 61 20 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 ata.=.b''..#.Clear.text.to.encry
7ffc0 70 74 20 61 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 pt.and.send.........self.encrypt
7ffe0 65 64 20 3d 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 ed.=.b''..#.Encrypted.data.we.ne
80000 65 64 20 74 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 ed.to.decrypt.and.pass.on.......
80020 20 20 73 65 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 ..self.tlsStarted.=.0..#.SSL/TLS
80040 20 6d 6f 64 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 .mode.or.pass.through.........se
80060 6c 66 2e 63 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 lf.checked.=.0..#.Post.connectio
80080 6e 20 63 68 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 n.check.done.or.not.........self
800a0 2e 69 73 43 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 .isClient.=.client.........self.
800c0 68 65 6c 6c 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 helloDone.=.0..#.True.when.hello
800e0 20 68 61 73 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 .has.been.sent.........if.postCo
80100 6e 6e 65 63 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 nnectionCheck.is.None:..........
80120 20 20 20 73 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 ...self.postConnectionCheck.=._a
80140 6c 77 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 lwaysSucceedsPostConnectionCheck
80160 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.
80180 70 6f 73 74 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 postConnectionCheck.=.postConnec
801a0 74 69 6f 6e 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 tionCheck..........if.not.startP
801c0 61 73 73 54 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 assThrough:.............self.sta
801e0 72 74 54 4c 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 rtTLS(contextFactory.getContext(
80200 29 29 0a 0a 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 ))......def.clear(self):........
80220 20 22 22 22 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 .""".........Clear.this.instance
80240 2c 20 61 66 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 ,.after.which.it.is.ready.for.re
80260 75 73 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 20 67 65 74 61 use..........""".........if.geta
80280 74 74 72 28 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 ttr(self,.'tlsStarted',.0):.....
802a0 20 20 20 20 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 ........self.sslBio.=.None......
802c0 20 20 20 20 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 .......self.ssl.=.None..........
802e0 20 20 20 73 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 ...self.internalBio.=.None......
80300 20 20 20 20 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 .......self.networkBio.=.None...
80320 20 20 20 20 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 ......self.data.=.b''.........se
80340 6c 66 2e 65 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 lf.encrypted.=.b''.........self.
80360 74 6c 73 53 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 tlsStarted.=.0.........self.chec
80380 6b 65 64 20 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 ked.=.0.........self.isClient.=.
803a0 31 0a 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 30 0a 20 20 20 1.........self.helloDone.=.0....
803c0 20 20 20 20 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 .....#.We.can.reuse.self.ctx.and
803e0 20 69 74 20 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 .it.will.be.deleted.automaticall
80400 79 0a 20 20 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 y.........#.when.this.instance.d
80420 69 65 73 0a 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 ies......def.startTLS(self,.ctx)
80440 3a 0a 20 20 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 :.........""".........Start.SSL/
80460 54 4c 53 2e 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 TLS..If.this.is.not.called,.this
80480 20 69 6e 73 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 .instance.just.passes.data......
804a0 20 20 20 74 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 ...through.untouched..........""
804c0 22 0a 20 20 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 ".........#.NOTE:.This.method.si
804e0 67 6e 61 74 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 gnature.must.match.the.startTLS(
80500 29 20 6d 65 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 ).method.Twisted.........#......
80520 20 65 78 70 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 .expects.transports.to.have..Thi
80540 73 20 77 69 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 s.will.be.called.automatically..
80560 20 20 20 20 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 .......#.......by.Twisted.in.STA
80580 52 54 54 4c 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 RTTLS.situations,.for.example.wi
805a0 74 68 20 53 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 th.SMTP..........if.self.tlsStar
805c0 74 65 64 3a 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 ted:.............raise.Exception
805e0 28 27 54 4c 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 ('TLS.already.started').........
80600 20 73 65 6c 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 .self.ctx.=.ctx..........self.in
80620 74 65 72 6e 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 ternalBio.=.m2.bio_new(m2.bio_s_
80640 62 69 6f 28 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 bio()).........m2.bio_set_write_
80660 62 75 66 5f 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 buf_size(self.internalBio,.0)...
80680 20 20 20 20 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 ......self.networkBio.=._BioProx
806a0 79 28 6d 32 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 y(m2.bio_new(m2.bio_s_bio()))...
806c0 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 73 69 7a 65 28 ......m2.bio_set_write_buf_size(
806e0 73 65 6c 66 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 self.networkBio._ptr(),.0)......
80700 20 20 20 6d 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 ...m2.bio_make_bio_pair(self.int
80720 65 72 6e 61 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 ernalBio,.self.networkBio._ptr()
80740 29 0a 0a 20 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 )..........self.sslBio.=._BioPro
80760 78 79 28 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 29 0a 0a xy(m2.bio_new(m2.bio_f_ssl()))..
80780 20 20 20 20 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 ........self.ssl.=._SSLProxy(m2.
807a0 73 73 6c 5f 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 ssl_new(self.ctx.ctx))..........
807c0 69 66 20 73 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 if.self.isClient:.............m2
807e0 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 2e .ssl_set_connect_state(self.ssl.
80800 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 20 20 _ptr()).........else:...........
80820 20 20 6d 32 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 ..m2.ssl_set_accept_state(self.s
80840 73 6c 2e 5f 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 sl._ptr())..........m2.ssl_set_b
80860 69 6f 28 73 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 io(self.ssl._ptr(),.self.interna
80880 6c 42 69 6f 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 lBio,.self.internalBio).........
808a0 6d 32 2e 62 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 m2.bio_set_ssl(self.sslBio._ptr(
808c0 29 2c 20 73 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 ),.self.ssl._ptr(),.m2.bio_noclo
808e0 73 65 29 0a 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 se)..........#.Need.this.for.wri
80900 74 65 73 20 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 tes.that.are.larger.than.BIO.pai
80920 72 20 62 75 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 r.buffers.........mode.=.m2.ssl_
80940 67 65 74 5f 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 get_mode(self.ssl._ptr()).......
80960 20 20 6d 32 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 ..m2.ssl_set_mode(self.ssl._ptr(
80980 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 6d 6f 64 65 20 ),.........................mode.
809a0 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 6d 32 2e 53 53 4c |.........................m2.SSL
809c0 5f 4d 4f 44 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 _MODE_ENABLE_PARTIAL_WRITE.|....
809e0 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 45 .....................m2.SSL_MODE
80a00 5f 41 43 43 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 _ACCEPT_MOVING_WRITE_BUFFER)....
80a20 20 20 20 20 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 ......self.tlsStarted.=.1......d
80a40 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 20 20 20 23 20 ef.write(self,.data):.........#.
80a60 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 69 66 type:.(bytes).->.None.........if
80a80 20 6e 6f 74 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 .not.self.tlsStarted:...........
80aa0 20 20 50 72 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 ..ProtocolWrapper.write(self,.da
80ac0 74 61 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 20 20 20 ta).............return..........
80ae0 74 72 79 3a 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 try:.............encryptedData.=
80b00 20 73 65 6c 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 .self._encrypt(data)............
80b20 20 50 72 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 65 6e 63 .ProtocolWrapper.write(self,.enc
80b40 72 79 70 74 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 ryptedData).............self.hel
80b60 6c 6f 44 6f 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 loDone.=.1.........except.BIO.BI
80b80 4f 45 72 72 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 OError.as.e:.............#.See.h
80ba0 74 74 70 3a 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 ttp://www.openssl.org/docs/apps/
80bc0 76 65 72 69 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 verify.html#DIAGNOSTICS.........
80be0 20 20 20 20 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 ....#.for.the.error.codes.return
80c00 65 64 20 62 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 ed.by.SSL_get_verify_result.....
80c20 20 20 20 20 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 .........e.args.=.(m2.ssl_get_ve
80c40 72 69 66 79 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 rify_result(self.ssl._ptr()),.e.
80c60 61 72 67 73 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 args[0]).............raise.e....
80c80 20 20 64 65 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 ..def.writeSequence(self,.data):
80ca0 0a 20 20 20 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 .........#.type:.(Iterable[bytes
80cc0 5d 29 20 2d 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 ]).->.None.........if.not.self.t
80ce0 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 6f 74 6f 63 6f 6c 57 lsStarted:.............ProtocolW
80d00 72 61 70 70 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 rapper.writeSequence(self,.b''.j
80d20 6f 69 6e 28 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 oin(data)).............return...
80d40 20 20 20 20 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 .......self.write(b''.join(data)
80d60 29 0a 0a 20 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 )......def.loseConnection(self):
80d80 0a 20 20 20 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 .........#.XXX.Do.we.need.to.do.
80da0 6d 32 2e 73 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 m2.ssl_shutdown(self.ssl._ptr())
80dc0 3f 0a 20 20 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 ?.........ProtocolWrapper.loseCo
80de0 6e 6e 65 63 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 nnection(self)......def.connecti
80e00 6f 6e 4d 61 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 onMade(self):.........ProtocolWr
80e20 61 70 70 65 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 apper.connectionMade(self)......
80e40 20 20 20 69 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 ...if.self.tlsStarted.and.self.i
80e60 73 43 6c 69 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 sClient.and.not.self.helloDone:.
80e80 20 20 20 20 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 ............self._clientHello().
80ea0 0a 20 20 20 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 .....def.dataReceived(self,.data
80ec0 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 6f ):.........#.type:.(bytes).->.No
80ee0 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 61 72 74 65 ne.........if.not.self.tlsStarte
80f00 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 65 72 2e 64 d:.............ProtocolWrapper.d
80f20 61 74 61 52 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 ataReceived(self,.data).........
80f40 20 20 20 20 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 ....return..........self.encrypt
80f60 65 64 20 2b 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 ed.+=.data..........try:........
80f80 20 20 20 20 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 .....while.1:.................de
80fa0 63 72 79 70 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 cryptedData.=.self._decrypt()...
80fc0 20 20 20 20 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 ...............self._check()....
80fe0 20 20 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 ..............encryptedData.=.se
81000 6c 66 2e 5f 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 lf._encrypt().................Pr
81020 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 65 6e 63 72 79 70 otocolWrapper.write(self,.encryp
81040 74 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 50 72 6f 74 6f 63 tedData)..................Protoc
81060 6f 6c 57 72 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 olWrapper.dataReceived(self,.dec
81080 72 79 70 74 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 ryptedData)..................if.
810a0 64 65 63 72 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 decryptedData.==.b''.and.encrypt
810c0 65 64 44 61 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 edData.==.b'':..................
810e0 20 20 20 62 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 ...break.........except.BIO.BIOE
81100 72 72 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 rror.as.e:.............#.See.htt
81120 70 3a 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 p://www.openssl.org/docs/apps/ve
81140 72 69 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 rify.html#DIAGNOSTICS...........
81160 20 20 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 ..#.for.the.error.codes.returned
81180 20 62 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 .by.SSL_get_verify_result.......
811a0 20 20 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 .......e.args.=.(m2.ssl_get_veri
811c0 66 79 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 fy_result(self.ssl._ptr()),.e.ar
811e0 67 73 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 gs[0]).............raise.e......
81200 64 65 66 20 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 def.connectionLost(self,.reason)
81220 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 4e 6f :.........#.type:.(AnyStr).->.No
81240 6e 65 0a 20 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 ne.........self.clear().........
81260 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 28 73 ProtocolWrapper.connectionLost(s
81280 65 6c 66 2c 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 elf,.reason)......def._check(sel
812a0 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 68 65 63 6b 65 64 20 f):.........if.not.self.checked.
812c0 61 6e 64 20 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 and.m2.ssl_is_init_finished(self
812e0 2e 73 73 6c 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 .ssl._ptr()):.............x509.=
81300 20 6d 32 2e 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 .m2.ssl_get_peer_cert(self.ssl._
81320 70 74 72 28 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 ptr()).............if.x509.is.no
81340 74 20 4e 6f 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 t.None:.................x509.=.X
81360 35 30 39 2e 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 509.X509(x509,.1).............if
81380 20 73 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 20 20 20 20 .self.isClient:.................
813a0 68 6f 73 74 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 host.=.self.transport.addr[0]...
813c0 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:.................
813e0 68 6f 73 74 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 host.=.self.transport.getPeer().
81400 68 6f 73 74 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 host.............if.not.self.pos
81420 74 43 6f 6e 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 tConnectionCheck(x509,.host):...
81440 20 20 20 20 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 ..............raise.SSLVerificat
81460 69 6f 6e 45 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 ionError('post.connection.check'
81480 29 0a 20 20 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 ).............self.checked.=.1..
814a0 20 20 20 20 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 ....def._clientHello(self):.....
814c0 20 20 20 20 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 ....try:.............#.We.rely.o
814e0 6e 20 4f 70 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 n.OpenSSL.implicitly.starting.wi
81500 74 68 20 63 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 th.client.hello.............#.wh
81520 65 6e 20 77 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 en.we.haven't.yet.established.an
81540 20 53 53 4c 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 .SSL.connection.............encr
81560 79 70 74 65 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 yptedData.=.self._encrypt(client
81580 48 65 6c 6c 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 Hello=1).............ProtocolWra
815a0 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 61 74 61 29 0a pper.write(self,.encryptedData).
815c0 20 20 20 20 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 ............self.helloDone.=.1..
815e0 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 20 61 73 20 65 3a .......except.BIO.BIOError.as.e:
81600 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 77 77 77 2e 6f 70 .............#.See.http://www.op
81620 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 2e 68 74 6d 6c 23 enssl.org/docs/apps/verify.html#
81640 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 66 6f 72 20 74 68 DIAGNOSTICS.............#.for.th
81660 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 53 53 4c 5f 67 65 e.error.codes.returned.by.SSL_ge
81680 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 20 20 20 65 2e 61 t_verify_result..............e.a
816a0 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 65 73 75 6c 74 28 rgs.=.(m2.ssl_get_verify_result(
816c0 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 5d 29 0a 20 20 20 self.ssl._ptr()),.e.args[0])....
816e0 20 20 20 20 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 .........raise.e......#.Optimiza
81700 74 69 6f 6e 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 tions.to.reduce.attribute.access
81720 65 73 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 67 65 74 5f 77 es......@property.....def._get_w
81740 72 5f 67 75 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 r_guar_ssl(self):.........#.type
81760 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 20 20 20 20 20 20 :.().->.Callable[[],.int].......
81780 20 20 22 22 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 .."""Return.max..length.of.data.
817a0 63 61 6e 20 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 can.be.written.to.the.BIO.......
817c0 20 20 20 20 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 ....Writes.larger.than.this.valu
817e0 65 20 77 69 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 e.will.return.a.value.from......
81800 20 20 20 42 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 ...BIO_write().less.than.the.amo
81820 75 6e 74 20 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 unt.requested.or.if.the.buffer.i
81840 73 0a 20 20 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 s.........full.request.a.retry..
81860 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 70 61 72 74 69 ........""".........return.parti
81880 61 6c 28 6d 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 al(m2.bio_ctrl_get_write_guarant
818a0 65 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 20 73 65 6c 66 2e ee,........................self.
818c0 73 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 sslBio._ptr())......@property...
818e0 20 20 64 65 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 ..def._get_wr_guar_net(self):...
81900 20 20 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 5d 2c ......#.type:.().->.Callable[[],
81920 20 69 6e 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 .int].........return.partial(m2.
81940 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 20 20 bio_ctrl_get_write_guarantee,...
81960 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 6e 65 74 77 6f 72 .....................self.networ
81980 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 74 79 0a 20 20 20 20 kBio._ptr())......@property.....
819a0 64 65 66 20 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 def._shoud_retry_ssl(self):.....
819c0 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 5d 2c 20 69 ....#.type:.().->.Callable[[],.i
819e0 6e 74 5d 0a 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 nt].........#.BIO_should_retry()
81a00 20 69 73 20 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 .is.true.if.the.call.that.produc
81a20 65 64 20 74 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 ed.this.........#.condition.shou
81a40 6c 64 20 74 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 ld.then.be.retried.at.a.later.ti
81a60 6d 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 32 2e 62 69 me..........return.partial(m2.bi
81a80 6f 5f 73 68 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 o_should_retry,.self.sslBio._ptr
81aa0 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 73 68 6f 75 ())......@property.....def._shou
81ac0 64 5f 72 65 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 d_retry_net(self):.........#.typ
81ae0 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 20 20 20 20 20 e:.().->.Callable[[],.int]......
81b00 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 6f 75 6c 64 5f ...return.partial(m2.bio_should_
81b20 72 65 74 72 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 retry,.self.networkBio._ptr())..
81b40 20 20 20 20 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 ....@property.....def._ctrl_pend
81b60 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 20 2d _ssl(self):.........#.type:.().-
81b80 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 23 20 73 69 >.Callable[[],.int].........#.si
81ba0 7a 65 5f 74 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 ze_t.BIO_ctrl_pending(BIO.*b);..
81bc0 20 20 20 20 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 .......#.BIO_ctrl_pending().retu
81be0 72 6e 20 74 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 rn.the.number.of.pending.charact
81c00 65 72 73 20 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 ers.in.........#.the.BIOs.read.a
81c20 6e 64 20 77 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 nd.write.buffers..........return
81c40 20 70 61 72 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 .partial(m2.bio_ctrl_pending,.se
81c60 6c 66 2e 73 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 lf.sslBio._ptr())......@property
81c80 0a 20 20 20 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 .....def._ctrl_pend_net(self):..
81ca0 20 20 20 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 5d .......#.type:.().->.Callable[[]
81cc0 2c 20 69 6e 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 ,.int].........return.partial(m2
81ce0 2e 62 69 6f 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 .bio_ctrl_pending,.self.networkB
81d00 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
81d20 66 20 5f 77 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 f._write_ssl(self):.........#.ty
81d40 70 65 3a 20 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 pe:.().->.Callable[[bytes],.int]
81d60 0a 20 20 20 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 .........#.All.these.functions.r
81d80 65 74 75 72 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 eturn.either.the.amount.of.data.
81da0 20 20 20 20 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 ........#.successfully.read.or.w
81dc0 72 69 74 74 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 ritten.(if.the.return.value.is..
81de0 20 20 20 20 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 .......#.positive).or.that.no.da
81e00 74 61 20 77 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 ta.was.successfully.read.or.writ
81e20 74 65 6e 0a 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 ten.........#.if.the.result.is.0
81e40 20 6f 72 20 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 .or.-1..If.the.return.value.is.-
81e60 32 20 74 68 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 2.then.........#.the.operation.i
81e80 73 20 6e 6f 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 s.not.implemented.in.the.specifi
81ea0 63 20 42 49 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 c.BIO.type..........return.parti
81ec0 61 6c 28 6d 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 al(m2.bio_write,.self.sslBio._pt
81ee0 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 72 69 r())......@property.....def._wri
81f00 74 65 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 29 te_net(self):.........#.type:.()
81f20 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 20 20 .->.Callable[[bytes],.int]......
81f40 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 77 72 69 74 65 2c 20 ...return.partial(m2.bio_write,.
81f60 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 40 70 72 self.networkBio._ptr())......@pr
81f80 6f 70 65 72 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 operty.....def._read_ssl(self):.
81fa0 20 20 20 20 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 ........#.type:.().->.Callable[[
81fc0 69 6e 74 5d 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 int],.Optional[bytes]].........r
81fe0 65 74 75 72 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 eturn.partial(m2.bio_read,.self.
82000 73 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 sslBio._ptr())......@property...
82020 20 20 64 65 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 ..def._read_net(self):.........#
82040 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 2c 20 4f 70 74 .type:.().->.Callable[[int],.Opt
82060 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 6e 20 70 61 72 ional[bytes]].........return.par
82080 74 69 61 6c 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 tial(m2.bio_read,.self.networkBi
820a0 6f 2e 5f 70 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 o._ptr())......def._encrypt(self
820c0 2c 20 64 61 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 ,.data=b'',.clientHello=0):.....
820e0 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 74 65 ....#.type:.(bytes,.int).->.byte
82100 73 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 64 61 74 s.........""".........:param.dat
82120 61 3a 0a 20 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 a:.........:param.clientHello:..
82140 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 20 .......:return:.........""".....
82160 20 20 20 20 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 ....encryptedData.=.b''.........
82180 73 65 6c 66 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 self.data.+=.data..........while
821a0 20 31 3a 0a 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 .1:.............if.(self._get_wr
821c0 5f 67 75 61 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 _guar_ssl().>.0.and.self.data.!=
821e0 20 62 27 27 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 .b'').or.clientHello:...........
82200 20 20 20 20 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 ......r.=.self._write_ssl(self.d
82220 61 74 61 29 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 ata).................if.r.<=.0:.
82240 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 73 65 6c 66 2e ....................if.not.self.
82260 5f 73 68 6f 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 _shoud_retry_ssl():.............
82280 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 0a 20 20 20 20 20 ............raise.IOError(......
822a0 20 20 20 20 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 .......................('Data.le
822c0 66 74 20 74 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 ft.to.be.written.to.{},.'.+.....
822e0 20 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 62 75 74 20 63 61 .........................'but.ca
82300 6e 6e 6f 74 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 nnot.retry.SSL.connection!').for
82320 6d 61 74 28 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 mat(self.sslBio))...............
82340 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 65 ..else:.....................asse
82360 72 74 20 73 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 rt.self.checked.................
82380 20 20 20 20 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 ....self.data.=.self.data[r:]...
823a0 20 20 20 20 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 ...........pending.=.self._ctrl_
823c0 70 65 6e 64 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 pend_net().............if.pendin
823e0 67 3a 0a 20 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 g:.................d.=.self._rea
82400 64 5f 6e 65 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 d_net(pending).................i
82420 66 20 64 20 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 f.d.is.not.None:..#.This.is.stra
82440 6e 67 65 2c 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 nge,.but.d.can.be.None..........
82460 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 2b 3d 20 64 0a 20 20 ...........encryptedData.+=.d...
82480 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 20 20 ..............else:.............
824a0 20 20 20 20 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 ........assert(self._shoud_retry
824c0 5f 6e 65 74 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 _net()).............else:.......
824e0 20 20 20 20 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 ..........break.........return.e
82500 6e 63 72 79 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 ncryptedData......def._decrypt(s
82520 65 6c 66 2c 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 elf,.data=b''):.........#.type:.
82540 28 62 79 74 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 (bytes).->.bytes.........self.en
82560 63 72 79 70 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 crypted.+=.data.........decrypte
82580 64 44 61 74 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 dData.=.b''..........while.1:...
825a0 20 20 20 20 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 ..........if.self._get_wr_guar_s
825c0 73 6c 28 29 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 sl().>.0.and.self.encrypted.!=.b
825e0 27 27 3a 0a 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 '':.................r.=.self._wr
82600 69 74 65 5f 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 ite_net(self.encrypted).........
82620 20 20 20 20 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 ........if.r.<=.0:..............
82640 20 20 20 20 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 .......if.not.self._shoud_retry_
82660 6e 65 74 28 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 net():.........................r
82680 61 69 73 65 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 aise.IOError(...................
826a0 20 20 20 20 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 ..........('Data.left.to.be.writ
826c0 74 65 6e 20 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 ten.to.{},.'.+..................
826e0 20 20 20 20 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 ............'but.cannot.retry.SS
82700 4c 20 63 6f 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 L.connection!').format(self.netw
82720 6f 72 6b 42 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 orkBio)).................else:..
82740 20 20 20 20 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 ...................self.encrypte
82760 64 20 3d 20 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 d.=.self.encrypted[r:]..........
82780 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 5f 73 73 ....pending.=.self._ctrl_pend_ss
827a0 6c 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 20 20 20 l().............if.pending:.....
827c0 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 73 73 6c 28 70 ............d.=.self._read_ssl(p
827e0 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 69 73 20 ending).................if.d.is.
82800 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 20 62 75 not.None:..#.This.is.strange,.bu
82820 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 20 20 20 t.d.can.be.None.................
82840 20 20 20 20 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 ....decryptedData.+=.d..........
82860 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 20 20 20 .......else:....................
82880 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 73 73 6c 28 29 29 .assert(self._shoud_retry_ssl())
828a0 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 20 .............else:..............
828c0 20 20 20 62 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 ...break..........return.decrypt
828e0 65 64 44 61 74 61 0a 94 95 ad 1f 00 00 00 00 00 00 7d 94 28 8c 22 5f 61 6c 77 61 79 73 53 75 63 edData...........}.(."_alwaysSuc
82900 63 65 65 64 73 50 6f 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 43 68 65 63 6b 94 6a 18 25 00 00 4b 21 ceedsPostConnectionCheck.j.%..K!
82920 4b 22 87 94 8c 0a 63 6f 6e 6e 65 63 74 53 53 4c 94 6a 18 25 00 00 4b 25 4b 37 87 94 8c 0a 63 6f K"....connectSSL.j.%..K%K7....co
82940 6e 6e 65 63 74 54 43 50 94 6a 18 25 00 00 4b 3a 4b 4d 87 94 8c 09 6c 69 73 74 65 6e 53 53 4c 94 nnectTCP.j.%..K:KM....listenSSL.
82960 6a 18 25 00 00 4b 50 4b 60 87 94 8c 09 6c 69 73 74 65 6e 54 43 50 94 6a 18 25 00 00 4b 63 4b 75 j.%..KPK`....listenTCP.j.%..KcKu
82980 87 94 8c 12 5f 42 69 6f 50 72 6f 78 79 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 80 4b 81 ...._BioProxy.__init__.j.%..K.K.
829a0 87 94 8c 0e 5f 42 69 6f 50 72 6f 78 79 2e 5f 70 74 72 94 6a 18 25 00 00 4b 83 4b 84 87 94 8c 11 ...._BioProxy._ptr.j.%..K.K.....
829c0 5f 42 69 6f 50 72 6f 78 79 2e 5f 5f 64 65 6c 5f 5f 94 6a 18 25 00 00 4b 86 4b 88 87 94 8c 09 5f _BioProxy.__del__.j.%..K.K....._
829e0 42 69 6f 50 72 6f 78 79 94 6a 37 02 00 00 4b 78 4b 88 87 94 8c 12 5f 53 53 4c 50 72 6f 78 79 2e BioProxy.j7...KxK....._SSLProxy.
82a00 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 4b 93 4b 94 87 94 8c 0e 5f 53 53 4c 50 72 6f 78 79 2e __init__.j.%..K.K....._SSLProxy.
82a20 5f 70 74 72 94 6a 18 25 00 00 4b 96 4b 97 87 94 8c 11 5f 53 53 4c 50 72 6f 78 79 2e 5f 5f 64 65 _ptr.j.%..K.K....._SSLProxy.__de
82a40 6c 5f 5f 94 6a 18 25 00 00 4b 99 4b 9b 87 94 8c 09 5f 53 53 4c 50 72 6f 78 79 94 6a 37 02 00 00 l__.j.%..K.K....._SSLProxy.j7...
82a60 4b 8b 4b 9b 87 94 8c 1b 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 5f 69 6e 69 K.K.....TLSProtocolWrapper.__ini
82a80 74 5f 5f 94 6a 18 25 00 00 4b a7 4b d2 87 94 8c 18 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 t__.j.%..K.K.....TLSProtocolWrap
82aa0 70 65 72 2e 63 6c 65 61 72 94 6a 18 25 00 00 4b d4 4b e2 87 94 8c 1b 54 4c 53 50 72 6f 74 6f 63 per.clear.j.%..K.K.....TLSProtoc
82ac0 6f 6c 57 72 61 70 70 65 72 2e 73 74 61 72 74 54 4c 53 94 6a 18 25 00 00 4b e6 4d 0c 01 87 94 8c olWrapper.startTLS.j.%..K.M.....
82ae0 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 18 25 00 00 4d .TLSProtocolWrapper.write.j.%..M
82b00 0e 01 4d 1c 01 87 94 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 ..M......TLSProtocolWrapper.writ
82b20 65 53 65 71 75 65 6e 63 65 94 6a 18 25 00 00 4d 1e 01 4d 24 01 87 94 8c 21 54 4c 53 50 72 6f 74 eSequence.j.%..M..M$....!TLSProt
82b40 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 18 25 00 00 ocolWrapper.loseConnection.j.%..
82b60 4d 26 01 4d 28 01 87 94 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e M&.M(....!TLSProtocolWrapper.con
82b80 6e 65 63 74 69 6f 6e 4d 61 64 65 94 6a 18 25 00 00 4d 2a 01 4d 2d 01 87 94 8c 1f 54 4c 53 50 72 nectionMade.j.%..M*.M-.....TLSPr
82ba0 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 64 61 74 61 52 65 63 65 69 76 65 64 94 6a 18 25 00 00 otocolWrapper.dataReceived.j.%..
82bc0 4d 2f 01 4d 48 01 87 94 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 63 6f 6e M/.MH....!TLSProtocolWrapper.con
82be0 6e 65 63 74 69 6f 6e 4c 6f 73 74 94 6a 18 25 00 00 4d 4a 01 4d 4d 01 87 94 8c 19 54 4c 53 50 72 nectionLost.j.%..MJ.MM.....TLSPr
82c00 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 63 68 65 63 6b 94 6a 18 25 00 00 4d 4f 01 4d 5a 01 otocolWrapper._check.j.%..MO.MZ.
82c20 87 94 8c 1f 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 63 6c 69 65 6e 74 48 65 ....TLSProtocolWrapper._clientHe
82c40 6c 6c 6f 94 6a 18 25 00 00 4d 5c 01 4d 67 01 87 94 8c 23 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 llo.j.%..M\.Mg....#TLSProtocolWr
82c60 61 70 70 65 72 2e 5f 67 65 74 5f 77 72 5f 67 75 61 72 5f 73 73 6c 94 6a 18 25 00 00 4d 6b 01 4d apper._get_wr_guar_ssl.j.%..Mk.M
82c80 75 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 u....#TLSProtocolWrapper._get_wr
82ca0 5f 67 75 61 72 5f 6e 65 74 94 6a 18 25 00 00 4d 77 01 4d 7b 01 87 94 8c 23 54 4c 53 50 72 6f 74 _guar_net.j.%..Mw.M{....#TLSProt
82cc0 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 73 73 6c 94 6a 18 25 ocolWrapper._shoud_retry_ssl.j.%
82ce0 00 00 4d 7d 01 4d 82 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 ..M}.M.....#TLSProtocolWrapper._
82d00 73 68 6f 75 64 5f 72 65 74 72 79 5f 6e 65 74 94 6a 18 25 00 00 4d 84 01 4d 87 01 87 94 8c 21 54 shoud_retry_net.j.%..M..M.....!T
82d20 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 5f 73 73 6c LSProtocolWrapper._ctrl_pend_ssl
82d40 94 6a 18 25 00 00 4d 89 01 4d 8f 01 87 94 8c 21 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 .j.%..M..M.....!TLSProtocolWrapp
82d60 65 72 2e 5f 63 74 72 6c 5f 70 65 6e 64 5f 6e 65 74 94 6a 18 25 00 00 4d 91 01 4d 94 01 87 94 8c er._ctrl_pend_net.j.%..M..M.....
82d80 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 73 73 6c 94 6a .TLSProtocolWrapper._write_ssl.j
82da0 18 25 00 00 4d 96 01 4d 9e 01 87 94 8c 1d 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 .%..M..M......TLSProtocolWrapper
82dc0 2e 5f 77 72 69 74 65 5f 6e 65 74 94 6a 18 25 00 00 4d a0 01 4d a3 01 87 94 8c 1c 54 4c 53 50 72 ._write_net.j.%..M..M......TLSPr
82de0 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 72 65 61 64 5f 73 73 6c 94 6a 18 25 00 00 4d a5 01 otocolWrapper._read_ssl.j.%..M..
82e00 4d a8 01 87 94 8c 1c 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 72 65 61 64 5f M......TLSProtocolWrapper._read_
82e20 6e 65 74 94 6a 18 25 00 00 4d aa 01 4d ad 01 87 94 8c 1b 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 net.j.%..M..M......TLSProtocolWr
82e40 61 70 70 65 72 2e 5f 65 6e 63 72 79 70 74 94 6a 18 25 00 00 4d af 01 4d ce 01 87 94 8c 1b 54 4c apper._encrypt.j.%..M..M......TL
82e60 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 2e 5f 64 65 63 72 79 70 74 94 6a 18 25 00 00 4d SProtocolWrapper._decrypt.j.%..M
82e80 d0 01 4d ea 01 87 94 8c 12 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 94 6a 37 02 00 ..M......TLSProtocolWrapper.j7..
82ea0 00 4b 9e 4d ea 01 87 94 75 7d 94 28 8c 12 54 4c 53 50 72 6f 74 6f 63 6f 6c 57 72 61 70 70 65 72 .K.M....u}.(..TLSProtocolWrapper
82ec0 94 6a 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 63 6c 65 61 72 .j\.....TLSProtocolWrapper.clear
82ee0 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 6e 65 .j\....!TLSProtocolWrapper.conne
82f00 63 74 69 6f 6e 4c 6f 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 ctionLost.j\....!TLSProtocolWrap
82f20 70 65 72 2e 63 6f 6e 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 per.connectionMade.j\.....TLSPro
82f40 74 6f 63 6f 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 tocolWrapper.dataReceived.j\....
82f60 21 54 4c 53 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 74 69 !TLSProtocolWrapper.loseConnecti
82f80 6f 6e 94 6a 5c 02 00 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 on.j\.....TLSProtocolWrapper.sta
82fa0 72 74 54 4c 53 94 6a 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 rtTLS.j\.....TLSProtocolWrapper.
82fc0 77 72 69 74 65 94 6a 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 write.j\.....TLSProtocolWrapper.
82fe0 77 72 69 74 65 53 65 71 75 65 6e 63 65 94 6a 5c 02 00 00 8c 0a 63 6f 6e 6e 65 63 74 53 53 4c 94 writeSequence.j\.....connectSSL.
83000 6a 5c 02 00 00 8c 0a 63 6f 6e 6e 65 63 74 54 43 50 94 6a 5c 02 00 00 8c 09 6c 69 73 74 65 6e 53 j\.....connectTCP.j\.....listenS
83020 53 4c 94 6a 5c 02 00 00 8c 09 6c 69 73 74 65 6e 54 43 50 94 6a 5c 02 00 00 75 8c 23 4d 32 43 72 SL.j\.....listenTCP.j\...u.#M2Cr
83040 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 70 65 72 94 ypto.SSL.TwistedProtocolWrapper.
83060 74 94 8c 0f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 28 58 86 0a 00 00 66 72 6f 6d 20 5f t...M2Crypto.SSL.cb.(X....from._
83080 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
830a0 0a 0a 22 22 22 53 53 4c 20 63 61 6c 6c 62 61 63 6b 73 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 .."""SSL.callbacks..Copyright.(c
830c0 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 20 ).1999-2003.Ng.Pheng.Siong..All.
830e0 72 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 73 79 73 0a rights.reserved."""..import.sys.
83100 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 66 72 6f 6d 20 74 79 .from.M2Crypto.import.m2.from.ty
83120 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 20 20 23 20 6e 6f 71 61 0a 0a 5f 5f 61 6c 6c 5f 5f ping.import.Any..#.noqa..__all__
83140 20 3d 20 5b 27 75 6e 6b 6e 6f 77 6e 5f 69 73 73 75 65 72 27 2c 20 27 73 73 6c 5f 76 65 72 69 66 .=.['unknown_issuer',.'ssl_verif
83160 79 5f 63 61 6c 6c 62 61 63 6b 5f 73 74 75 62 27 2c 20 27 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 y_callback_stub',.'ssl_verify_ca
83180 6c 6c 62 61 63 6b 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 27 73 73 6c 5f 76 65 72 69 66 79 5f llback',............'ssl_verify_
831a0 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 27 2c 20 27 73 73 6c callback_allow_unknown_ca',.'ssl
831c0 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 27 5d 0a 0a 0a 64 65 66 20 73 73 6c 5f 76 65 72 69 66 _info_callback']...def.ssl_verif
831e0 79 5f 63 61 6c 6c 62 61 63 6b 5f 73 74 75 62 28 73 73 6c 5f 63 74 78 5f 70 74 72 2c 20 78 35 30 y_callback_stub(ssl_ctx_ptr,.x50
83200 39 5f 70 74 72 2c 20 65 72 72 6e 75 6d 2c 20 65 72 72 64 65 70 74 68 2c 20 6f 6b 29 3a 0a 20 20 9_ptr,.errnum,.errdepth,.ok):...
83220 20 20 23 20 44 65 70 72 65 63 61 74 65 64 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 6b 0a 0a 0a 75 ..#.Deprecated.....return.ok...u
83240 6e 6b 6e 6f 77 6e 5f 69 73 73 75 65 72 20 3d 20 5b 0a 20 20 20 20 6d 32 2e 58 35 30 39 5f 56 5f nknown_issuer.=.[.....m2.X509_V_
83260 45 52 52 5f 44 45 50 54 48 5f 5a 45 52 4f 5f 53 45 4c 46 5f 53 49 47 4e 45 44 5f 43 45 52 54 2c ERR_DEPTH_ZERO_SELF_SIGNED_CERT,
83280 0a 20 20 20 20 6d 32 2e 58 35 30 39 5f 56 5f 45 52 52 5f 55 4e 41 42 4c 45 5f 54 4f 5f 47 45 54 .....m2.X509_V_ERR_UNABLE_TO_GET
832a0 5f 49 53 53 55 45 52 5f 43 45 52 54 5f 4c 4f 43 41 4c 4c 59 2c 0a 20 20 20 20 6d 32 2e 58 35 30 _ISSUER_CERT_LOCALLY,.....m2.X50
832c0 39 5f 56 5f 45 52 52 5f 55 4e 41 42 4c 45 5f 54 4f 5f 56 45 52 49 46 59 5f 4c 45 41 46 5f 53 49 9_V_ERR_UNABLE_TO_VERIFY_LEAF_SI
832e0 47 4e 41 54 55 52 45 2c 0a 20 20 20 20 6d 32 2e 58 35 30 39 5f 56 5f 45 52 52 5f 43 45 52 54 5f GNATURE,.....m2.X509_V_ERR_CERT_
83300 55 4e 54 52 55 53 54 45 44 2c 0a 5d 0a 0a 0a 64 65 66 20 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 UNTRUSTED,.]...def.ssl_verify_ca
83320 6c 6c 62 61 63 6b 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 llback(ssl_ctx_ptr,.x509_ptr,.er
83340 72 6e 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 74 79 70 65 3a rnum,.errdepth,.ok):.....#.type:
83360 20 28 62 79 74 65 73 2c 20 62 79 74 65 73 2c 20 69 6e 74 2c 20 69 6e 74 2c 20 69 6e 74 29 20 2d .(bytes,.bytes,.int,.int,.int).-
83380 3e 20 69 6e 74 0a 20 20 20 20 23 20 44 65 70 72 65 63 61 74 65 64 0a 0a 20 20 20 20 66 72 6f 6d >.int.....#.Deprecated......from
833a0 20 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 43 6f 6e 74 65 78 74 20 69 6d 70 6f 72 74 20 43 6f 6e .M2Crypto.SSL.Context.import.Con
833c0 74 65 78 74 0a 20 20 20 20 73 73 6c 5f 63 74 78 20 3d 20 43 6f 6e 74 65 78 74 2e 63 74 78 6d 61 text.....ssl_ctx.=.Context.ctxma
833e0 70 28 29 5b 69 6e 74 28 73 73 6c 5f 63 74 78 5f 70 74 72 29 5d 0a 20 20 20 20 69 66 20 65 72 72 p()[int(ssl_ctx_ptr)].....if.err
83400 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 20 20 69 num.in.unknown_issuer:.........i
83420 66 20 73 73 6c 5f 63 74 78 2e 67 65 74 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 28 29 f.ssl_ctx.get_allow_unknown_ca()
83440 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 22 :.............sys.stderr.write("
83460 70 6f 6c 69 63 79 3a 20 25 73 3a 20 70 65 72 6d 69 74 74 65 64 2e 2e 2e 5c 6e 22 20 25 0a 20 20 policy:.%s:.permitted...\n".%...
83480 20 20 20 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 6d 32 2e 78 ...........................(m2.x
834a0 35 30 39 5f 67 65 74 5f 76 65 72 69 66 79 5f 65 72 72 6f 72 28 65 72 72 6e 75 6d 29 29 29 0a 20 509_get_verify_error(errnum)))..
834c0 20 20 20 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()...
834e0 20 20 20 20 20 20 20 20 20 20 6f 6b 20 3d 20 31 0a 20 20 20 20 23 20 43 52 4c 20 63 68 65 63 6b ..........ok.=.1.....#.CRL.check
83500 69 6e 67 20 67 6f 65 73 20 68 65 72 65 2e 2e 2e 0a 20 20 20 20 69 66 20 6f 6b 3a 0a 20 20 20 20 ing.goes.here........if.ok:.....
83520 20 20 20 20 69 66 20 73 73 6c 5f 63 74 78 2e 67 65 74 5f 76 65 72 69 66 79 5f 64 65 70 74 68 28 ....if.ssl_ctx.get_verify_depth(
83540 29 20 3e 3d 20 65 72 72 64 65 70 74 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6b 20 3d 20 ).>=.errdepth:.............ok.=.
83560 31 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 6f 6b 20 3d 1.........else:.............ok.=
83580 20 30 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 6b 0a 0a 0a 64 65 66 20 73 73 6c 5f 76 65 72 69 66 .0.....return.ok...def.ssl_verif
835a0 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 28 6f 6b 2c 20 y_callback_allow_unknown_ca(ok,.
835c0 73 74 6f 72 65 29 3a 0a 20 20 20 20 23 20 74 79 70 65 3a 20 28 69 6e 74 2c 20 41 6e 79 29 20 2d store):.....#.type:.(int,.Any).-
835e0 3e 20 69 6e 74 0a 20 20 20 20 65 72 72 6e 75 6d 20 3d 20 73 74 6f 72 65 2e 67 65 74 5f 65 72 72 >.int.....errnum.=.store.get_err
83600 6f 72 28 29 0a 20 20 20 20 69 66 20 65 72 72 6e 75 6d 20 69 6e 20 75 6e 6b 6e 6f 77 6e 5f 69 73 or().....if.errnum.in.unknown_is
83620 73 75 65 72 3a 0a 20 20 20 20 20 20 20 20 6f 6b 20 3d 20 31 0a 20 20 20 20 72 65 74 75 72 6e 20 suer:.........ok.=.1.....return.
83640 6f 6b 0a 0a 0a 23 20 43 72 69 62 62 65 64 20 66 72 6f 6d 20 4f 70 65 6e 53 53 4c 27 73 20 61 70 ok...#.Cribbed.from.OpenSSL's.ap
83660 70 73 2f 73 5f 63 62 2e 63 2e 0a 64 65 66 20 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b ps/s_cb.c..def.ssl_info_callback
83680 28 77 68 65 72 65 2c 20 72 65 74 2c 20 73 73 6c 5f 70 74 72 29 3a 0a 20 20 20 20 23 20 74 79 70 (where,.ret,.ssl_ptr):.....#.typ
836a0 65 3a 20 28 69 6e 74 2c 20 69 6e 74 2c 20 62 79 74 65 73 29 20 2d 3e 20 4e 6f 6e 65 0a 0a 20 20 e:.(int,.int,.bytes).->.None....
836c0 20 20 77 20 3d 20 77 68 65 72 65 20 26 20 7e 6d 32 2e 53 53 4c 5f 53 54 5f 4d 41 53 4b 0a 20 20 ..w.=.where.&.~m2.SSL_ST_MASK...
836e0 20 20 69 66 20 77 20 26 20 6d 32 2e 53 53 4c 5f 53 54 5f 43 4f 4e 4e 45 43 54 3a 0a 20 20 20 20 ..if.w.&.m2.SSL_ST_CONNECT:.....
83700 20 20 20 20 73 74 61 74 65 20 3d 20 22 53 53 4c 20 63 6f 6e 6e 65 63 74 22 0a 20 20 20 20 65 6c ....state.=."SSL.connect".....el
83720 69 66 20 77 20 26 20 6d 32 2e 53 53 4c 5f 53 54 5f 41 43 43 45 50 54 3a 0a 20 20 20 20 20 20 20 if.w.&.m2.SSL_ST_ACCEPT:........
83740 20 73 74 61 74 65 20 3d 20 22 53 53 4c 20 61 63 63 65 70 74 22 0a 20 20 20 20 65 6c 73 65 3a 0a .state.=."SSL.accept".....else:.
83760 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 22 53 53 4c 20 73 74 61 74 65 20 75 6e 6b 6e 6f ........state.=."SSL.state.unkno
83780 77 6e 22 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 4c 4f wn"......if.where.&.m2.SSL_CB_LO
837a0 4f 50 3a 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 4c 4f OP:.........sys.stderr.write("LO
837c0 4f 50 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 20 20 20 OP:.%s:.%s\n".%.................
837e0 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 65 74 5f 73 74 61 74 .........(state,.m2.ssl_get_stat
83800 65 5f 76 28 73 73 6c 5f 70 74 72 29 29 29 0a 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 65 72 e_v(ssl_ptr))).........sys.stder
83820 72 2e 66 6c 75 73 68 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 69 66 r.flush().........return......if
83840 20 77 68 65 72 65 20 26 20 6d 32 2e 53 53 4c 5f 43 42 5f 45 58 49 54 3a 0a 20 20 20 20 20 20 20 .where.&.m2.SSL_CB_EXIT:........
83860 20 69 66 20 6e 6f 74 20 72 65 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 .if.not.ret:.............sys.std
83880 65 72 72 2e 77 72 69 74 65 28 22 46 41 49 4c 45 44 3a 20 25 73 3a 20 25 73 5c 6e 22 20 25 0a 20 err.write("FAILED:.%s:.%s\n".%..
838a0 20 20 20 20 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 61 ............................(sta
838c0 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 29 te,.m2.ssl_get_state_v(ssl_ptr))
838e0 29 0a 20 20 20 20 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 ).............sys.stderr.flush()
83900 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 79 73 2e 73 .........else:.............sys.s
83920 74 64 65 72 72 2e 77 72 69 74 65 28 22 49 4e 46 4f 3a 20 25 73 3a 20 25 73 5c 6e 22 20 25 0a 20 tderr.write("INFO:.%s:.%s\n".%..
83940 20 20 20 20 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 61 ............................(sta
83960 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 29 te,.m2.ssl_get_state_v(ssl_ptr))
83980 29 0a 20 20 20 20 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 ).............sys.stderr.flush()
839a0 0a 20 20 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 .........return......if.where.&.
839c0 6d 32 2e 53 53 4c 5f 43 42 5f 41 4c 45 52 54 3a 0a 20 20 20 20 20 20 20 20 69 66 20 77 68 65 72 m2.SSL_CB_ALERT:.........if.wher
839e0 65 20 26 20 6d 32 2e 53 53 4c 5f 43 42 5f 52 45 41 44 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.&.m2.SSL_CB_READ:.............
83a00 77 20 3d 20 27 72 65 61 64 27 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 w.=.'read'.........else:........
83a20 20 20 20 20 20 77 20 3d 20 27 77 72 69 74 65 27 0a 20 20 20 20 20 20 20 20 73 79 73 2e 73 74 64 .....w.=.'write'.........sys.std
83a40 65 72 72 2e 77 72 69 74 65 28 22 41 4c 45 52 54 3a 20 25 73 3a 20 25 73 3a 20 25 73 5c 6e 22 20 err.write("ALERT:.%s:.%s:.%s\n".
83a60 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 77 2c 20 6d %..........................(w,.m
83a80 32 2e 73 73 6c 5f 67 65 74 5f 61 6c 65 72 74 5f 74 79 70 65 5f 76 28 72 65 74 29 2c 0a 20 20 20 2.ssl_get_alert_type_v(ret),....
83aa0 20 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 73 73 6c 5f 67 65 .......................m2.ssl_ge
83ac0 74 5f 61 6c 65 72 74 5f 64 65 73 63 5f 76 28 72 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 73 79 t_alert_desc_v(ret))).........sy
83ae0 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 75 72 6e 0a s.stderr.flush().........return.
83b00 94 7d 94 28 8c 18 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 .}.(..ssl_verify_callback_stub.j
83b20 18 25 00 00 4b 10 4b 12 87 94 8c 13 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b 94 .%..K.K.....ssl_verify_callback.
83b40 6a 18 25 00 00 4b 1d 4b 2f 87 94 8c 24 73 73 6c 5f 76 65 72 69 66 79 5f 63 61 6c 6c 62 61 63 6b j.%..K.K/...$ssl_verify_callback
83b60 5f 61 6c 6c 6f 77 5f 75 6e 6b 6e 6f 77 6e 5f 63 61 94 6a 18 25 00 00 4b 32 4b 37 87 94 8c 11 73 _allow_unknown_ca.j.%..K2K7....s
83b80 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 18 25 00 00 4b 3b 4b 60 87 94 75 7d 94 28 sl_info_callback.j.%..K;K`..u}.(
83ba0 8c 11 73 73 6c 5f 69 6e 66 6f 5f 63 61 6c 6c 62 61 63 6b 94 6a 5c 02 00 00 8c 13 73 73 6c 5f 76 ..ssl_info_callback.j\.....ssl_v
83bc0 65 72 69 66 79 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 erify_callback.j\....$ssl_verify
83be0 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 6a 5c 02 00 00 _callback_allow_unknown_ca.j\...
83c00 8c 18 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 5c 02 00 00 ..ssl_verify_callback_stub.j\...
83c20 75 8c 0f 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 63 62 94 74 94 8c 1b 4d 32 43 72 79 70 74 6f 2e u..M2Crypto.SSL.cb.t...M2Crypto.
83c40 53 53 4c 2e 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 94 28 58 69 04 00 00 66 72 6f 6d 20 5f 5f SSL.ssl_dispatcher.(Xi...from.__
83c60 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.
83c80 0a 22 22 22 53 53 4c 20 64 69 73 70 61 74 63 68 65 72 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 63 ."""SSL.dispatcher..Copyright.(c
83ca0 29 20 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 ).1999-2002.Ng.Pheng.Siong..All.
83cc0 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 22 22 22 0a 0a 23 20 50 79 74 68 6f 6e 0a 69 6d rights.reserved."""..#.Python.im
83ce0 70 6f 72 74 20 61 73 79 6e 63 6f 72 65 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 0a 23 20 4d port.asyncore.import.socket..#.M
83d00 32 43 72 79 70 74 6f 0a 66 72 6f 6d 20 4d 32 43 72 79 70 74 6f 20 69 6d 70 6f 72 74 20 75 74 69 2Crypto.from.M2Crypto.import.uti
83d20 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 2e 43 6f 6e 6e l..#.noqa.from.M2Crypto.SSL.Conn
83d40 65 63 74 69 6f 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 ection.import.Connection.from.M2
83d60 43 72 79 70 74 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 Crypto.SSL.Context.import.Contex
83d80 74 20 20 23 20 6e 6f 71 61 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 73 73 6c 5f 64 69 73 70 61 t..#.noqa..__all__.=.['ssl_dispa
83da0 74 63 68 65 72 27 5d 0a 0a 0a 63 6c 61 73 73 20 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 28 61 tcher']...class.ssl_dispatcher(a
83dc0 73 79 6e 63 6f 72 65 2e 64 69 73 70 61 74 63 68 65 72 29 3a 0a 0a 20 20 20 20 64 65 66 20 63 72 syncore.dispatcher):......def.cr
83de0 65 61 74 65 5f 73 6f 63 6b 65 74 28 73 65 6c 66 2c 20 73 73 6c 5f 63 6f 6e 74 65 78 74 29 3a 0a eate_socket(self,.ssl_context):.
83e00 20 20 20 20 20 20 20 20 23 20 74 79 70 65 3a 20 28 43 6f 6e 74 65 78 74 29 20 2d 3e 20 4e 6f 6e ........#.type:.(Context).->.Non
83e20 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 61 6d 69 6c 79 5f 61 6e 64 5f 74 79 70 65 20 3d e.........self.family_and_type.=
83e40 20 73 6f 63 6b 65 74 2e 41 46 5f 49 4e 45 54 2c 20 73 6f 63 6b 65 74 2e 53 4f 43 4b 5f 53 54 52 .socket.AF_INET,.socket.SOCK_STR
83e60 45 41 4d 0a 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 EAM.........self.ssl_ctx.=.ssl_c
83e80 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 20 3d 20 43 6f 6e ontext.........self.socket.=.Con
83ea0 6e 65 63 74 69 6f 6e 28 73 65 6c 66 2e 73 73 6c 5f 63 74 78 29 0a 20 20 20 20 20 20 20 20 23 20 nection(self.ssl_ctx).........#.
83ec0 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 28 30 29 0a 20 20 20 20 20 self.socket.setblocking(0)......
83ee0 20 20 20 73 65 6c 66 2e 61 64 64 5f 63 68 61 6e 6e 65 6c 28 29 0a 0a 20 20 20 20 64 65 66 20 63 ...self.add_channel()......def.c
83f00 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 20 74 79 onnect(self,.addr):.........#.ty
83f20 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 20 20 20 20 pe:.(util.AddrType).->.None.....
83f40 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 28 31 29 0a 20 ....self.socket.setblocking(1)..
83f60 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 29 .......self.socket.connect(addr)
83f80 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 74 62 6c 6f 63 6b 69 6e 67 .........self.socket.setblocking
83fa0 28 30 29 0a 0a 20 20 20 20 64 65 66 20 72 65 63 76 28 73 65 6c 66 2c 20 62 75 66 66 65 72 5f 73 (0)......def.recv(self,.buffer_s
83fc0 69 7a 65 3d 34 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 ize=4096):.........#.type:.(int)
83fe0 20 2d 3e 20 62 79 74 65 73 0a 20 20 20 20 20 20 20 20 22 22 22 52 65 63 65 69 76 65 20 64 61 74 .->.bytes........."""Receive.dat
84000 61 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 a.over.SSL.""".........return.se
84020 6c 66 2e 73 6f 63 6b 65 74 2e 72 65 63 76 28 62 75 66 66 65 72 5f 73 69 7a 65 29 0a 0a 20 20 20 lf.socket.recv(buffer_size).....
84040 20 64 65 66 20 73 65 6e 64 28 73 65 6c 66 2c 20 62 75 66 66 65 72 29 3a 0a 20 20 20 20 20 20 20 .def.send(self,.buffer):........
84060 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 20 20 .#.type:.(bytes).->.int.........
84080 22 22 22 53 65 6e 64 20 64 61 74 61 20 6f 76 65 72 20 53 53 4c 2e 22 22 22 0a 20 20 20 20 20 20 """Send.data.over.SSL.""".......
840a0 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 73 6f 63 6b 65 74 2e 73 65 6e 64 28 62 75 66 66 65 72 ..return.self.socket.send(buffer
840c0 29 0a 94 7d 94 28 8c 1c 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 72 65 61 74 65 5f 73 6f )..}.(..ssl_dispatcher.create_so
840e0 63 6b 65 74 94 6a 18 25 00 00 4b 15 4b 1b 87 94 8c 16 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 cket.j.%..K.K.....ssl_dispatcher
84100 2e 63 6f 6e 6e 65 63 74 94 6a 18 25 00 00 4b 1d 4b 21 87 94 8c 13 73 73 6c 5f 64 69 73 70 61 74 .connect.j.%..K.K!....ssl_dispat
84120 63 68 65 72 2e 72 65 63 76 94 6a 18 25 00 00 4b 23 4b 26 87 94 8c 13 73 73 6c 5f 64 69 73 70 61 cher.recv.j.%..K#K&....ssl_dispa
84140 74 63 68 65 72 2e 73 65 6e 64 94 6a 18 25 00 00 4b 28 4b 2b 87 94 8c 0e 73 73 6c 5f 64 69 73 70 tcher.send.j.%..K(K+....ssl_disp
84160 61 74 63 68 65 72 94 6a 37 02 00 00 4b 13 4b 2b 87 94 75 7d 94 28 8c 0e 73 73 6c 5f 64 69 73 70 atcher.j7...K.K+..u}.(..ssl_disp
84180 61 74 63 68 65 72 94 6a 5c 02 00 00 8c 16 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 6f 6e atcher.j\.....ssl_dispatcher.con
841a0 6e 65 63 74 94 6a 5c 02 00 00 8c 1c 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 63 72 65 61 74 nect.j\.....ssl_dispatcher.creat
841c0 65 5f 73 6f 63 6b 65 74 94 6a 5c 02 00 00 8c 13 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 72 e_socket.j\.....ssl_dispatcher.r
841e0 65 63 76 94 6a 5c 02 00 00 8c 13 73 73 6c 5f 64 69 73 70 61 74 63 68 65 72 2e 73 65 6e 64 94 6a ecv.j\.....ssl_dispatcher.send.j
84200 5c 02 00 00 75 8c 1b 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 \...u..M2Crypto.SSL.ssl_dispatch
84220 65 72 94 74 94 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 28 58 62 05 er.t...M2Crypto.SSL.timeout.(Xb.
84240 00 00 22 22 22 53 75 70 70 6f 72 74 20 66 6f 72 20 53 53 4c 20 73 6f 63 6b 65 74 20 74 69 6d 65 .."""Support.for.SSL.socket.time
84260 6f 75 74 73 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 outs...Copyright.(c).1999-2003.N
84280 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
842a0 65 64 2e 0a 0a 43 6f 70 79 72 69 67 68 74 20 32 30 30 38 20 48 65 69 6b 6b 69 20 54 6f 69 76 6f ed...Copyright.2008.Heikki.Toivo
842c0 6e 65 6e 2e 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 22 22 22 0a 0a 5f nen..All.rights.reserved..""".._
842e0 5f 61 6c 6c 5f 5f 20 3d 20 5b 27 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 27 2c 20 27 74 69 _all__.=.['DEFAULT_TIMEOUT',.'ti
84300 6d 65 6f 75 74 27 2c 20 27 73 74 72 75 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 27 2c 20 27 73 74 meout',.'struct_to_timeout',.'st
84320 72 75 63 74 5f 73 69 7a 65 27 5d 0a 0a 69 6d 70 6f 72 74 20 73 79 73 0a 69 6d 70 6f 72 74 20 73 ruct_size']..import.sys.import.s
84340 74 72 75 63 74 0a 0a 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 20 3d 20 36 30 30 20 20 23 20 truct..DEFAULT_TIMEOUT.=.600..#.
84360 74 79 70 65 3a 20 69 6e 74 0a 0a 0a 63 6c 61 73 73 20 74 69 6d 65 6f 75 74 28 6f 62 6a 65 63 74 type:.int...class.timeout(object
84380 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 2c 20 73 65 63 3d 44 ):......def.__init__(self,.sec=D
843a0 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 2c 20 6d 69 63 72 6f 73 65 63 3d 30 29 3a 0a 20 20 20 EFAULT_TIMEOUT,.microsec=0):....
843c0 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 4e 6f 6e 65 0a .....#.type:.(int,.int).->.None.
843e0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 63 20 3d 20 73 65 63 0a 20 20 20 20 20 20 20 20 73 ........self.sec.=.sec.........s
84400 65 6c 66 2e 6d 69 63 72 6f 73 65 63 20 3d 20 6d 69 63 72 6f 73 65 63 0a 0a 20 20 20 20 64 65 66 elf.microsec.=.microsec......def
84420 20 70 61 63 6b 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 79 73 2e 70 6c 61 74 .pack(self):.........if.sys.plat
84440 66 6f 72 6d 20 3d 3d 20 27 77 69 6e 33 32 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6c form.==.'win32':.............mil
84460 6c 69 73 65 63 20 3d 20 69 6e 74 28 73 65 6c 66 2e 73 65 63 20 2a 20 31 30 30 30 20 2b 20 72 6f lisec.=.int(self.sec.*.1000.+.ro
84480 75 6e 64 28 66 6c 6f 61 74 28 73 65 6c 66 2e 6d 69 63 72 6f 73 65 63 29 20 2f 20 31 30 30 30 29 und(float(self.microsec)./.1000)
844a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6e 73 74 72 20 3d 20 73 74 72 75 63 74 2e 70 61 ).............binstr.=.struct.pa
844c0 63 6b 28 27 6c 27 2c 20 6d 69 6c 6c 69 73 65 63 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a ck('l',.millisec).........else:.
844e0 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6e 73 74 72 20 3d 20 73 74 72 75 63 74 2e 70 61 63 6b ............binstr.=.struct.pack
84500 28 27 6c 6c 27 2c 20 73 65 6c 66 2e 73 65 63 2c 20 73 65 6c 66 2e 6d 69 63 72 6f 73 65 63 29 0a ('ll',.self.sec,.self.microsec).
84520 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 69 6e 73 74 72 0a 0a 0a 64 65 66 20 73 74 72 75 ........return.binstr...def.stru
84540 63 74 5f 74 6f 5f 74 69 6d 65 6f 75 74 28 62 69 6e 73 74 72 29 3a 0a 20 20 20 20 23 20 74 79 70 ct_to_timeout(binstr):.....#.typ
84560 65 3a 20 28 62 79 74 65 73 29 20 2d 3e 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 69 66 20 73 79 73 e:.(bytes).->.timeout.....if.sys
84580 2e 70 6c 61 74 66 6f 72 6d 20 3d 3d 20 27 77 69 6e 33 32 27 3a 0a 20 20 20 20 20 20 20 20 6d 69 .platform.==.'win32':.........mi
845a0 6c 6c 69 73 65 63 20 3d 20 73 74 72 75 63 74 2e 75 6e 70 61 63 6b 28 27 6c 27 2c 20 62 69 6e 73 llisec.=.struct.unpack('l',.bins
845c0 74 72 29 5b 30 5d 0a 20 20 20 20 20 20 20 20 23 20 4f 6e 20 70 79 33 2c 20 69 6e 74 2f 69 6e 74 tr)[0].........#.On.py3,.int/int
845e0 20 70 65 72 66 6f 72 6d 73 20 65 78 61 63 74 20 64 69 76 69 73 69 6f 6e 20 61 6e 64 20 72 65 74 .performs.exact.division.and.ret
84600 75 72 6e 73 20 66 6c 6f 61 74 2e 20 57 65 20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 23 20 74 68 urns.float..We.want.........#.th
84620 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 78 e.whole.number.portion.of.the.ex
84640 61 63 74 20 64 69 76 69 73 69 6f 6e 20 72 65 73 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 73 65 63 act.division.result:.........sec
84660 20 3d 20 69 6e 74 28 6d 69 6c 6c 69 73 65 63 20 2f 20 31 30 30 30 29 0a 20 20 20 20 20 20 20 20 .=.int(millisec./.1000).........
84680 6d 69 63 72 6f 73 65 63 20 3d 20 28 6d 69 6c 6c 69 73 65 63 20 25 20 31 30 30 30 29 20 2a 20 31 microsec.=.(millisec.%.1000).*.1
846a0 30 30 30 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 28 73 65 63 2c 20 6d 69 63 72 000.....else:.........(sec,.micr
846c0 6f 73 65 63 29 20 3d 20 73 74 72 75 63 74 2e 75 6e 70 61 63 6b 28 27 6c 6c 27 2c 20 62 69 6e 73 osec).=.struct.unpack('ll',.bins
846e0 74 72 29 0a 20 20 20 20 72 65 74 75 72 6e 20 74 69 6d 65 6f 75 74 28 73 65 63 2c 20 6d 69 63 72 tr).....return.timeout(sec,.micr
84700 6f 73 65 63 29 0a 0a 0a 64 65 66 20 73 74 72 75 63 74 5f 73 69 7a 65 28 29 3a 0a 20 20 20 20 23 osec)...def.struct_size():.....#
84720 20 74 79 70 65 3a 20 28 29 20 2d 3e 20 69 6e 74 0a 20 20 20 20 69 66 20 73 79 73 2e 70 6c 61 74 .type:.().->.int.....if.sys.plat
84740 66 6f 72 6d 20 3d 3d 20 27 77 69 6e 33 32 27 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 form.==.'win32':.........return.
84760 73 74 72 75 63 74 2e 63 61 6c 63 73 69 7a 65 28 27 6c 27 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 struct.calcsize('l').....else:..
84780 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 69 7a 65 28 27 6c .......return.struct.calcsize('l
847a0 6c 27 29 0a 94 7d 94 28 8c 10 74 69 6d 65 6f 75 74 2e 5f 5f 69 6e 69 74 5f 5f 94 6a 18 25 00 00 l')..}.(..timeout.__init__.j.%..
847c0 4b 12 4b 15 87 94 8c 0c 74 69 6d 65 6f 75 74 2e 70 61 63 6b 94 6a 18 25 00 00 4b 17 4b 1d 87 94 K.K.....timeout.pack.j.%..K.K...
847e0 8c 07 74 69 6d 65 6f 75 74 94 6a 37 02 00 00 4b 10 4b 1d 87 94 8c 11 73 74 72 75 63 74 5f 74 6f ..timeout.j7...K.K.....struct_to
84800 5f 74 69 6d 65 6f 75 74 94 6a 18 25 00 00 4b 20 4b 2a 87 94 8c 0b 73 74 72 75 63 74 5f 73 69 7a _timeout.j.%..K.K*....struct_siz
84820 65 94 6a 18 25 00 00 4b 2d 4b 32 87 94 75 7d 94 28 8c 0b 73 74 72 75 63 74 5f 73 69 7a 65 94 6a e.j.%..K-K2..u}.(..struct_size.j
84840 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 00 8c 07 74 \.....struct_to_timeout.j\.....t
84860 69 6d 65 6f 75 74 94 6a 5c 02 00 00 8c 0c 74 69 6d 65 6f 75 74 2e 70 61 63 6b 94 6a 5c 02 00 00 imeout.j\.....timeout.pack.j\...
84880 75 8c 14 4d 32 43 72 79 70 74 6f 2e 53 53 4c 2e 74 69 6d 65 6f 75 74 94 74 94 75 75 62 2e u..M2Crypto.SSL.timeout.t.uub.