Add {s,g}et_not{Before,After}
diff --git a/doc/pyOpenSSL.ps b/doc/pyOpenSSL.ps
index 2805cb4..7863870 100644
--- a/doc/pyOpenSSL.ps
+++ b/doc/pyOpenSSL.ps
@@ -1,8 +1,8 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software
%%Title: pyOpenSSL.dvi
-%%CreationDate: Thu Mar 6 21:51:40 2008
-%%Pages: 14
+%%CreationDate: Sun Mar 9 20:36:21 2008
+%%Pages: 15
%%PageOrder: Ascend
%%BoundingBox: 0 0 595 842
%%DocumentPaperSizes: a4
@@ -10,7 +10,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -N0 -o pyOpenSSL.ps pyOpenSSL
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2008.03.06:2151
+%DVIPSSource: TeX output 2008.03.09:2036
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -754,8 +754,8 @@
000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF800000007FFFFF0000
0000344F7DB33D>112 D E
%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg ecss1000 10 53
-/Fg 53 122 df<FFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFF
+%DVIPSBitmapFont: Fg ecss1000 10 54
+/Fg 54 122 df<FFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFF
FFFFFFC0FFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFC05205809853>22
D<0001F807F00007FE07F0000FFE07F0001FFE07F0003FFE07F0007F0E07F0007E0207F0
00FE00000000FC00000000FC00000001FC00000001FC00000001FC00000001FC00000001
@@ -1067,81 +1067,90 @@
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
-400FE0601FE0FC7FC0FFFFC0FFFF807FFF001FFE0003F800144A85B816>I<FEFEFEFEFE
+400FE0601FE0FC7FC0FFFFC0FFFF807FFF001FFE0003F800144A85B816>I<FE00000000
+FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
+0000FE0003FE00FE0007FC00FE000FF800FE001FF000FE003FE000FE007FC000FE00FF80
+00FE01FF0000FE03FE0000FE03FC0000FE07F80000FE0FF00000FE1FE00000FE3FC00000
+FE7F800000FEFFC00000FFFFE00000FFFFE00000FFFFF00000FFF7F80000FFE3F80000FF
+C1FC0000FF80FE0000FF00FF0000FE007F0000FE003F8000FE003FC000FE001FC000FE00
+0FE000FE000FF000FE0007F000FE0003F800FE0001FC00FE0001FE00FE0000FE00FE0000
+7F00FE00007F80213C7ABB29>I<FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
-FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE073C7ABB14>108
-D<0001FC0003F800FE0FFF801FFF00FE1FFFC03FFF80FE7FFFE0FFFFC0FEFFFFF1FFFFE0
-FFF81FFBF03FF0FFE007FBC00FF0FFC003FF8007F0FF8003FF0007F8FF8001FF0003F8FF
-0001FE0003F8FF0001FE0003F8FF0001FE0003F8FE0001FC0003F8FE0001FC0003F8FE00
+FEFE073C7ABB14>I<0001FC0003F800FE0FFF801FFF00FE1FFFC03FFF80FE7FFFE0FFFF
+C0FEFFFFF1FFFFE0FFF81FFBF03FF0FFE007FBC00FF0FFC003FF8007F0FF8003FF0007F8
+FF8001FF0003F8FF0001FE0003F8FF0001FE0003F8FF0001FE0003F8FE0001FC0003F8FE
+0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE00
01FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001
FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC
0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC00
-03F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003
-F8FE0001FC0003F8FE0001FC0003F835267AA542>I<0001FC00FE0FFF80FE1FFFC0FE7F
-FFE0FEFFFFF0FFF81FF8FFE007F8FFC003F8FF8003FCFF8001FCFF0001FCFF0001FCFF00
+03F8FE0001FC0003F8FE0001FC0003F8FE0001FC0003F835267AA542>I<0001FC00FE0F
+FF80FE1FFFC0FE7FFFE0FEFFFFF0FFF81FF8FFE007F8FFC003F8FF8003FCFF8001FCFF00
+01FCFF0001FCFF0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE00
01FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE00
01FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE00
-01FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FC1E267AA52B>
-I<0003FE0000000FFF8000003FFFE00000FFFFF80001FFFFFC0003FE03FE0007F800FF00
-0FF0007F800FE0003F801FC0001FC03F80000FE03F80000FE03F000007E07F000007F07F
-000007F07E000003F0FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE00
-0003F8FE000003F8FE000003F8FE000003F87F000007F07F000007F07F000007F03F8000
-0FE03F80000FE01FC0001FC01FE0003FC00FF0007F8007F800FF0003FE03FE0001FFFFFC
-0000FFFFF800007FFFF000001FFFC0000003FE000025287EA62A>I<0001FC0000FE0FFF
-0000FE3FFFC000FEFFFFE000FFFFFFF000FFF03FF800FFC00FF800FF8003FC00FF0003FC
-00FE0001FE00FE0000FE00FE0000FF00FE00007F00FE00007F00FE00007F80FE00003F80
-FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE
-00003F80FE00007F00FE00007F00FE00007F00FE0000FF00FE0000FE00FE0001FE00FF00
-03FC00FF8007FC00FFC00FF800FFF03FF000FFFFFFE000FEFFFFC000FE7FFF8000FE1FFE
-0000FE07F80000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000
-00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
-FE00000000FE0000000021367AA52B>I<0007F03F80003FFC3F8000FFFE3F8001FFFFBF
-8003FFFFFF8007FE07FF800FF801FF801FF000FF801FE000FF803FC0007F803F80007F80
-7F80003F807F00003F807F00003F807F00003F80FE00003F80FE00003F80FE00003F80FE
-00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FF00003F807F00
-003F807F00003F807F80003F803F80003F803FC0007F801FE0007F801FE000FF800FF801
-FF8007FE07FF8007FFFFFF8003FFFF3F8000FFFE3F80007FF83F80001FE03F800000003F
-800000003F800000003F800000003F800000003F800000003F800000003F800000003F80
-0000003F800000003F800000003F800000003F800000003F800000003F800000003F8021
-367DA52B>I<0000F0FC07F0FC0FF0FC3FF0FC7FF0FCFFF0FDFF00FDFC00FFF000FFE000
-FFC000FFC000FF8000FF0000FF0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000
-FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
-FE0000FE0000FE0000FE000014267AA51C>I<007FE00001FFFC0007FFFF800FFFFFC01F
-FFFFC03FC03FC03F0007803F0001807E0000007E0000007E0000007E0000007F0000007F
-0000003F8000003FF000003FFF80001FFFF0000FFFFC0007FFFE0003FFFF0000FFFF8000
-1FFF800000FFC000003FC000000FE000000FE0000007E0000007E0000007E0400007E060
-0007E078000FC0FE001FC0FFC07F80FFFFFF807FFFFF001FFFFE0003FFF800007FC0001B
-287EA620>I<01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC
-000001FC000001FC0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001FC000001FC
+01FC1E267AA52B>I<0003FE0000000FFF8000003FFFE00000FFFFF80001FFFFFC0003FE
+03FE0007F800FF000FF0007F800FE0003F801FC0001FC03F80000FE03F80000FE03F0000
+07E07F000007F07F000007F07E000003F0FE000003F8FE000003F8FE000003F8FE000003
+F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F87F000007F07F000007F0
+7F000007F03F80000FE03F80000FE01FC0001FC01FE0003FC00FF0007F8007F800FF0003
+FE03FE0001FFFFFC0000FFFFF800007FFFF000001FFFC0000003FE000025287EA62A>I<
+0001FC0000FE0FFF0000FE3FFFC000FEFFFFE000FFFFFFF000FFF03FF800FFC00FF800FF
+8003FC00FF0003FC00FE0001FE00FE0000FE00FE0000FF00FE00007F00FE00007F00FE00
+007F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE0000
+3F80FE00003F80FE00003F80FE00007F00FE00007F00FE00007F00FE0000FF00FE0000FE
+00FE0001FE00FF0003FC00FF8007FC00FFC00FF800FFF03FF000FFFFFFE000FEFFFFC000
+FE7FFF8000FE1FFE0000FE07F80000FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE0000000021367AA52B>I<0007F03F80003FFC3F8000
+FFFE3F8001FFFFBF8003FFFFFF8007FE07FF800FF801FF801FF000FF801FE000FF803FC0
+007F803F80007F807F80003F807F00003F807F00003F807F00003F80FE00003F80FE0000
+3F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE00003F
+80FF00003F807F00003F807F00003F807F80003F803F80003F803FC0007F801FE0007F80
+1FE000FF800FF801FF8007FE07FF8007FFFFFF8003FFFF3F8000FFFE3F80007FF83F8000
+1FE03F800000003F800000003F800000003F800000003F800000003F800000003F800000
+003F800000003F800000003F800000003F800000003F800000003F800000003F80000000
+3F800000003F8021367DA52B>I<0000F0FC07F0FC0FF0FC3FF0FC7FF0FCFFF0FDFF00FD
+FC00FFF000FFE000FFC000FFC000FF8000FF0000FF0000FF0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE000014267AA51C>I<007FE00001FFFC0007
+FFFF800FFFFFC01FFFFFC03FC03FC03F0007803F0001807E0000007E0000007E0000007E
+0000007F0000007F0000003F8000003FF000003FFF80001FFFF0000FFFFC0007FFFE0003
+FFFF0000FFFF80001FFF800000FFC000003FC000000FE000000FE0000007E0000007E000
+0007E0400007E0600007E078000FC0FE001FC0FFC07F80FFFFFF807FFFFF001FFFFE0003
+FFF800007FC0001B287EA620>I<01FC000001FC000001FC000001FC000001FC000001FC
+000001FC000001FC000001FC000001FC0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+FF0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC
000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC
-000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC
-000001FC000001FC000001FC000001FC000001FC000001FE008001FE018000FF07C000FF
-FFC000FFFFC0007FFF00003FFC00001FE0001A307FAE1E>I<FE0001FCFE0001FCFE0001
+000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FE008001FE
+018000FF07C000FFFFC000FFFFC0007FFF00003FFC00001FE0001A307FAE1E>I<FE0001
FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001
FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001
-FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0003FCFE0003
-FCFE0007FCFF001FFC7F807FFC7FFFFFFC3FFFF9FC3FFFF1FC0FFFC1FC03FC00001E267A
-A42B>I<FE0001FE0001FC7F0001FE0001F87F0003FE0003F87F0003FE0003F87F8003DF
-0003F83F8003DF0007F03F8007DF0007F03F80079F8007F01FC0079F8007E01FC00F9F80
-0FE01FC00F8F800FE00FE00F8FC00FC00FE00F0FC01FC00FE01F0FC01FC00FE01F07E01F
-C007F01F07E01F8007F01E07E03F8007F03E07E03F8003F03E03F03F0003F83E03F03F00
-03F83C03F07F0001F87C03F07E0001F87C01F87E0001FC7C01F87E0001FC7801F8FE0000
-FCF800F8FC0000FCF800F8FC0000FCF000FCFC00007CF000FCF800007CF0007DF800007E
-F0007DF800007EE0007DF800003EE0003DF000003FE0003FF000003FC0003FF000001FC0
-003FE000001FC0001FE00036257FA439>119 D<7F80000FE03F80001FC01FC0003FC01F
-E0007F800FF0007F0007F000FE0003F801FC0001FC03FC0001FE03F80000FF07F000007F
-0FE000003F9FC000001FDFC000000FFF8000000FFF00000007FE00000003FC00000001FC
-00000001FC00000003FE00000007FE0000000FFF0000000FDF8000001F9FC000003F0FE0
-00007F07F00000FE03F00000FC03F80001FC01FC0003F800FE0007F0007F000FF0007F00
-0FE0003F801FC0001FC03F80001FE07F80000FF0FF000007F8252580A426>I<FF00000F
-E07F00001FC07F00001FC03F80001FC03F80003F803FC0003F801FC0007F001FC0007F00
-0FE0007F000FE000FE000FF000FE0007F000FC0007F001FC0003F801FC0003F801F80003
-FC03F80001FC03F80001FC03F00000FE07F00000FE07E000007E07E000007E0FE000007F
-0FC000003F0FC000003F0FC000001F9F8000001F9F8000001F9F0000000F9F0000000F9F
-000000079E00000007DE00000007DE00000003FC00000003FC00000001F800000001F800
-000001F800000001F000000003F000000003E000000003E000000007E000000007C00000
-000FC00000000FC00000001F800000201F800000383F0000003FFE0000003FFE0000003F
-FC0000003FF80000000FE000000023367FA426>I E
+FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001FCFE0001
+FCFE0003FCFE0003FCFE0007FCFF001FFC7F807FFC7FFFFFFC3FFFF9FC3FFFF1FC0FFFC1
+FC03FC00001E267AA42B>I<FE0001FE0001FC7F0001FE0001F87F0003FE0003F87F0003
+FE0003F87F8003DF0003F83F8003DF0007F03F8007DF0007F03F80079F8007F01FC0079F
+8007E01FC00F9F800FE01FC00F8F800FE00FE00F8FC00FC00FE00F0FC01FC00FE01F0FC0
+1FC00FE01F07E01FC007F01F07E01F8007F01E07E03F8007F03E07E03F8003F03E03F03F
+0003F83E03F03F0003F83C03F07F0001F87C03F07E0001F87C01F87E0001FC7C01F87E00
+01FC7801F8FE0000FCF800F8FC0000FCF800F8FC0000FCF000FCFC00007CF000FCF80000
+7CF0007DF800007EF0007DF800007EE0007DF800003EE0003DF000003FE0003FF000003F
+C0003FF000001FC0003FE000001FC0001FE00036257FA439>119
+D<7F80000FE03F80001FC01FC0003FC01FE0007F800FF0007F0007F000FE0003F801FC00
+01FC03FC0001FE03F80000FF07F000007F0FE000003F9FC000001FDFC000000FFF800000
+0FFF00000007FE00000003FC00000001FC00000001FC00000003FE00000007FE0000000F
+FF0000000FDF8000001F9FC000003F0FE000007F07F00000FE03F00000FC03F80001FC01
+FC0003F800FE0007F0007F000FF0007F000FE0003F801FC0001FC03F80001FE07F80000F
+F0FF000007F8252580A426>I<FF00000FE07F00001FC07F00001FC03F80001FC03F8000
+3F803FC0003F801FC0007F001FC0007F000FE0007F000FE000FE000FF000FE0007F000FC
+0007F001FC0003F801FC0003F801F80003FC03F80001FC03F80001FC03F00000FE07F000
+00FE07E000007E07E000007E0FE000007F0FC000003F0FC000003F0FC000001F9F800000
+1F9F8000001F9F0000000F9F0000000F9F000000079E00000007DE00000007DE00000003
+FC00000003FC00000001F800000001F800000001F800000001F000000003F000000003E0
+00000003E000000007E000000007C00000000FC00000000FC00000001F800000201F8000
+00383F0000003FFE0000003FFE0000003FFC0000003FF80000000FE000000023367FA426
+>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh ecrm0800 8 29
/Fh 29 122 df<0000FF00000007FFE000001F80F000003E003800007C007C0000F800FC
@@ -1297,8 +1306,12 @@
007C78007CF8007CF8007CF80078F000F86000F07001E03801E01E078007FF0001F80016
227CA01E>I E
%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj ectt0900 9 26
-/Fj 26 122 df<7FFFFF80FFFFFFC0FFFFFFC0FFFFFFC07FFFFF801A057A9227>45
+%DVIPSBitmapFont: Fj ectt0900 9 32
+/Fj 32 122 df<0001C0000003E0000003E0000003E0000003E0000003E0000003E00000
+03E0000003E0000003E0000003E0000003E0000003E0000003E0003FFFFFFCFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF0003E0000003E0000003E0000003E0000003E0000003E00000
+03E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000001C00020
+227DA727>43 D<7FFFFF80FFFFFFC0FFFFFFC0FFFFFFC07FFFFF801A057A9227>45
D<1E007F807F80FFC0FFC0FFC0FFC07F807F801E000A0A728927>I<000000380000007C
0000007C000000FC000000F8000001F8000001F0000003F0000003E0000007E0000007C0
000007C000000FC000000F8000001F8000001F0000003F0000003E0000007E0000007C00
@@ -1317,31 +1330,56 @@
F000000FF000003FE0001FFFC0003FFF80003FFF80003FFFE0001FFFF000001FF8000003
FC000001FC000000FE0000007E0000007F0000003F0000003F3800003F7C00003FFE0000
3FFE00003FFE00007FFC00007EFE0000FE7F0001FC7F8003FC3FF01FF81FFFFFF00FFFFF
-E003FFFF8000FFFE00001FF80020307DAE27>I<7FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF0
-7FFFFFE0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F80007FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF07FFFFFE01C2E7BAD27>73
-D<7FFFC000007FFFE00000FFFFE000007FFFE000007FFFC0000003F000000003F0000000
+E003FFFF8000FFFE00001FF80020307DAE27>I<7FFFFC00007FFFFF0000FFFFFFC0007F
+FFFFE0007FFFFFF00007E00FF80007E007F80007E001FC0007E000FE0007E000FE0007E0
+007E0007E0007F0007E0003F0007E0003F8007E0001F8007E0001F8007E0001F8007E000
+1FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000F
+C007E0000FC007E0000FC007E0000FC007E0000FC007E0001F8007E0001F8007E0001F80
+07E0003F8007E0003F0007E0003F0007E0007F0007E000FE0007E000FE0007E001FC0007
+E003F80007E00FF8007FFFFFF0007FFFFFE000FFFFFFC0007FFFFF00007FFFFC0000222E
+7FAD27>68 D<7FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF07FFFFFE0001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFFFFF0FFFF
+FFF0FFFFFFF07FFFFFE01C2E7BAD27>73 D<7FFFC000007FFFE00000FFFFE000007FFFE0
+00007FFFC0000003F000000003F000000003F000000003F000000003F000000003F00000
+0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
-00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F000000003F000078003F0000FC003F0000F
-C003F0000FC003F0000FC003F0000FC003F0000FC003F0000FC07FFFFFFFC07FFFFFFFC0
-FFFFFFFFC07FFFFFFFC07FFFFFFF80222E7FAD27>76 D<70000000F8000000F8000000FC
-0000007C0000007E0000003E0000003F0000001F0000001F8000000F8000000F8000000F
-C0000007C0000007E0000003E0000003F0000001F0000001F8000000F8000000FC000000
-7C0000007E0000003E0000003F0000001F0000001F8000000F8000000F8000000FC00000
-07C0000007E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C0000
-007E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C0000007C000
-0007E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C0000007C00
-0000381E3A7CB327>92 D<7FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E
-067C7E27>95 D<01FFE0000007FFF800000FFFFE00001FFFFF80001FFFFFC0001FC07FC0
-001FC00FE0000F8007E000020007F000000003F000000003F0000007FFF000007FFFF000
-03FFFFF0000FFFFFF0001FFFFFF0003FFC03F0007FE003F0007F0003F000FE0003F000FC
-0003F000FC0003F000FC0003F000FC0003F000FE0007F0007F000FF0007FC07FF0003FFF
-FFFFC01FFFFFFFE00FFFFFFFE003FFF8FFE0007FC03FC023207D9F27>97
+00000003F000078003F0000FC003F0000FC003F0000FC003F0000FC003F0000FC003F000
+0FC003F0000FC07FFFFFFFC07FFFFFFFC0FFFFFFFFC07FFFFFFFC07FFFFFFF80222E7FAD
+27>76 D<7FE0007FE0FFF000FFF0FFF000FFF0FFF801FFF07FF801FFE00FF801FF000FB8
+01DF000FBC03DF000FBC03DF000FBC03DF000FBE07DF000F9E079F000F9E079F000F9E07
+9F000F9F0F9F000F9F0F9F000F8F0F1F000F8F0F1F000F8F9F1F000F8F9F1F000F879E1F
+000F879E1F000F879E1F000F879E1F000F839C1F000F83FC1F000F83FC1F000F83FC1F00
+0F81F81F000F81F81F000F80F01F000F80001F000F80001F000F80001F000F80001F000F
+80001F000F80001F000F80001F000F80001F000F80001F000F80001F007FF000FFE0FFF8
+01FFF0FFF801FFF0FFF801FFF07FF000FFE0242E7FAD27>I<7FFC03FFE07FFE07FFE0FF
+FE07FFF07FFE07FFE07FFC03FFE007F000FE0003F000FC0003F801FC0001F801F80001F8
+01F80001FC03F80000FC03F00000FE07F000007E07E000007E07E000003F0FC000003F0F
+C000001F9F8000001F9F8000001F9F8000000F9F0000000F9F00000007FE00000007FE00
+000003FC00000003FC00000001F800000001F800000001F800000001F800000001F80000
+0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000
+01F800000001F800000001F80000001FFF8000003FFFC000003FFFC000003FFFC000001F
+FF8000242E7FAD27>89 D<3FFFFFFE7FFFFFFF7FFFFFFF7FFFFFFF7FFFFFFF7E0000FE7E
+0001FC7E0001FC7E0003F87E0007F07E0007F03C000FE000001FC000001FC000003F8000
+007F0000007F000000FE000000FC000001FC000003F8000003F0000007F000000FE00000
+0FC000001FC000003F8000003F0000007F000000FE000000FE000001FC000003F8001E03
+F8003F07F0003F0FE0003F0FE0003F1FC0003F3F80003F3F80003F7F00003FFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF7FFFFFFE202E7DAD27>I<70000000F8000000F8000000FC00
+00007C0000007E0000003E0000003F0000001F0000001F8000000F8000000F8000000FC0
+000007C0000007E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C
+0000007E0000003E0000003F0000001F0000001F8000000F8000000F8000000FC0000007
+C0000007E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C000000
+7E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C0000007C00000
+07E0000003E0000003F0000001F0000001F8000000F8000000FC0000007C0000007C0000
+00381E3A7CB327>92 D<7FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E06
+7C7E27>95 D<01FFE0000007FFF800000FFFFE00001FFFFF80001FFFFFC0001FC07FC000
+1FC00FE0000F8007E000020007F000000003F000000003F0000007FFF000007FFFF00003
+FFFFF0000FFFFFF0001FFFFFF0003FFC03F0007FE003F0007F0003F000FE0003F000FC00
+03F000FC0003F000FC0003F000FC0003F000FE0007F0007F000FF0007FC07FF0003FFFFF
+FFC01FFFFFFFE00FFFFFFFE003FFF8FFE0007FC03FC023207D9F27>97
D<7FE0000000FFF0000000FFF0000000FFF00000007FF000000003F000000003F0000000
03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
F07F800003F1FFE00003F7FFF80003FFFFFC0003FFFFFE0003FFC0FF0003FF007F8003FC
@@ -1380,52 +1418,57 @@
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC0007FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E2E7CAD27
->108 D<7FE03FC000FFF1FFF000FFF7FFF800FFFFFFFC007FFFFFFE0003FFE0FE0003FF
-007F0003FE003F0003FC003F0003F8003F0003F8003F0003F0003F0003F0003F0003F000
+>108 D<7F07C01F0000FF9FF07FC000FFFFF9FFE000FFFFFFFFF0007FFFFFFFF0000FFC
+7FF1F8000FF03FC0F8000FE03F80F8000FC03F00F8000FC03F00F8000FC03F00F8000F80
+3E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F80
+3E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F803E00F8000F80
+3E00F8000F803E00F8000F803E00F8000F803E00F8007FF0FFC3FF00FFF8FFE3FF80FFF9
+FFE7FF80FFF8FFE3FF807FF0FFC3FF002920819F27>I<7FE03FC000FFF1FFF000FFF7FF
+F800FFFFFFFC007FFFFFFE0003FFE0FE0003FF007F0003FE003F0003FC003F0003F8003F
+0003F8003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F00
+03F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003
+F0003F0003F0003F0003F0003F007FFF83FFF8FFFFC7FFFCFFFFC7FFFCFFFFC7FFFC7FFF
+83FFF82620809F27>I<001FE000007FF80001FFFE0003FFFF0007FFFF800FF03FC01FC0
+0FE03F8007F03F0003F07F0003F87E0001F87E0001F8FC0000FCFC0000FCFC0000FCFC00
+00FCFC0000FCFC0000FCFC0000FCFE0001FC7E0001F87E0001F87F0003F83F8007F03F80
+07F01FE01FE00FF03FC007FFFF8003FFFF0001FFFE00007FF800001FE0001E207C9F27>
+I<7FE07F8000FFF1FFE000FFF7FFF800FFFFFFFC007FFFFFFE0003FFC0FF0003FF007F80
+03FC001FC003F8000FC003F8000FE003F00007E003F00007E003F00007F003F00003F003
+F00003F003F00003F003F00003F003F00003F003F00003F003F00007F003F80007E003F8
+0007E003F8000FE003FC001FC003FE003FC003FF007F8003FFC1FF0003FFFFFE0003FFFF
+FC0003F7FFF80003F3FFE00003F07F000003F000000003F000000003F000000003F00000
+0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
+03F00000007FFF800000FFFFC00000FFFFC00000FFFFC000007FFF8000002431809F27>
+I<7FFC03FC00FFFE0FFF00FFFE3FFF80FFFE7FFFC07FFEFFFFC0007FFE1FC0007FF81FC0
+007FF00F80007FE00200007FC00000007F800000007F800000007F000000007F00000000
+7E000000007E000000007E000000007E000000007E000000007E000000007E000000007E
+000000007E000000007E000000007E000000007E000000007E0000007FFFFF8000FFFFFF
+C000FFFFFFC000FFFFFFC0007FFFFF800022207E9F27>114 D<00FFF38007FFFFC01FFF
+FFC03FFFFFC07FFFFFC07F803FC0FC000FC0F8000FC0F8000FC0F8000780FC0000007F80
+00007FFC00003FFFF0001FFFFC0007FFFF0001FFFF80000FFFC000003FE0000007E07800
+03F0FC0001F0FC0001F0FE0001F0FE0003F0FF0007E0FFE01FE0FFFFFFC0FFFFFF80FFFF
+FF00FBFFFC00707FF0001C207B9F27>I<003C0000007E0000007E0000007E0000007E00
+00007E0000007E0000007E0000007E00007FFFFFF0FFFFFFF8FFFFFFF8FFFFFFF87FFFFF
+F0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00
+00007E0000007E0000007E0000007E0000007E0000007E0018007E007E007E007E007E00
+7E007E007E007E00FE003F00FC003F83FC003FFFF8001FFFF0000FFFE00003FFC00000FF
+001F297EA827>I<7FE007FE00FFF00FFF00FFF00FFF00FFF00FFF007FF007FF0003F000
3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F
-0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F007FFF83FFF8
-FFFFC7FFFCFFFFC7FFFCFFFFC7FFFC7FFF83FFF82620809F27>110
-D<001FE000007FF80001FFFE0003FFFF0007FFFF800FF03FC01FC00FE03F8007F03F0003
-F07F0003F87E0001F87E0001F8FC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000
-FCFC0000FCFE0001FC7E0001F87E0001F87F0003F83F8007F03F8007F01FE01FE00FF03F
-C007FFFF8003FFFF0001FFFE00007FF800001FE0001E207C9F27>I<7FE07F8000FFF1FF
-E000FFF7FFF800FFFFFFFC007FFFFFFE0003FFC0FF0003FF007F8003FC001FC003F8000F
-C003F8000FE003F00007E003F00007E003F00007F003F00003F003F00003F003F00003F0
-03F00003F003F00003F003F00003F003F00007F003F80007E003F80007E003F8000FE003
-FC001FC003FE003FC003FF007F8003FFC1FF0003FFFFFE0003FFFFFC0003F7FFF80003F3
-FFE00003F07F000003F000000003F000000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F000000003F000000003F00000007FFF8000
-00FFFFC00000FFFFC00000FFFFC000007FFF8000002431809F27>I<7FFC03FC00FFFE0F
-FF00FFFE3FFF80FFFE7FFFC07FFEFFFFC0007FFE1FC0007FF81FC0007FF00F80007FE002
-00007FC00000007F800000007F800000007F000000007F000000007E000000007E000000
-007E000000007E000000007E000000007E000000007E000000007E000000007E00000000
-7E000000007E000000007E000000007E0000007FFFFF8000FFFFFFC000FFFFFFC000FFFF
-FFC0007FFFFF800022207E9F27>114 D<00FFF38007FFFFC01FFFFFC03FFFFFC07FFFFF
-C07F803FC0FC000FC0F8000FC0F8000FC0F8000780FC0000007F8000007FFC00003FFFF0
-001FFFFC0007FFFF0001FFFF80000FFFC000003FE0000007E0780003F0FC0001F0FC0001
-F0FE0001F0FE0003F0FF0007E0FFE01FE0FFFFFFC0FFFFFF80FFFFFF00FBFFFC00707FF0
-001C207B9F27>I<003C0000007E0000007E0000007E0000007E0000007E0000007E0000
-007E0000007E00007FFFFFF0FFFFFFF8FFFFFFF8FFFFFFF87FFFFFF0007E0000007E0000
-007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000
-007E0000007E0000007E0000007E0018007E007E007E007E007E007E007E007E007E00FE
-003F00FC003F83FC003FFFF8001FFFF0000FFFE00003FFC00000FF001F297EA827>I<7F
-E007FE00FFF00FFF00FFF00FFF00FFF00FFF007FF007FF0003F0003F0003F0003F0003F0
-003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000
-3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F
-0003F0003F0003F0007F0003F0007F0003F001FF0003FC07FF0001FFFFFFF800FFFFFFFC
-00FFFFFFFC003FFFBFFC000FFC1FF82620809F27>I<3FFC1FFF007FFE3FFF007FFE3FFF
-807FFE3FFF003FFC1FFF0001F807E00000FC0FC00000FC1F8000007E1F0000003F3F0000
-001F7E0000001FFC0000000FF800000007F800000003F000000003E000000003F0000000
-07F80000000FF80000001FFC0000001F3E0000003E3F0000007E1F0000007C0F800000F8
-0FC00001F807E00003F003E0007FFE1FFF807FFE1FFF80FFFF3FFFC07FFE1FFF807FFE1F
-FF8022207E9F27>120 D<7FFC0FFF80FFFE1FFFC0FFFE1FFFC0FFFE1FFFC07FFC0FFF80
-07E000F80003E001F80003E001F00003F001F00001F003F00001F803E00000F803E00000
-F803E00000FC07C000007C07C000007C07C000007E0F8000003E0F8000003E0F8000001F
-0F0000001F1F0000001F1F0000000F1F0000000F9E0000000FBE00000007BE00000007FC
-00000003FC00000003FC00000003F800000001F800000001F800000001F000000001F000
-000003F000000003E000000003E000000007E000000007C000000807C000003E0FC00000
-7F0F8000007F1F8000007E7F0000007FFE0000003FFC0000003FF80000001FF000000007
-C000000022317E9F27>I E
+0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F00
+03F0003F0003F0003F0003F0003F0003F0007F0003F0007F0003F001FF0003FC07FF0001
+FFFFFFF800FFFFFFFC00FFFFFFFC003FFFBFFC000FFC1FF82620809F27>I<3FFC1FFF00
+7FFE3FFF007FFE3FFF807FFE3FFF003FFC1FFF0001F807E00000FC0FC00000FC1F800000
+7E1F0000003F3F0000001F7E0000001FFC0000000FF800000007F800000003F000000003
+E000000003F000000007F80000000FF80000001FFC0000001F3E0000003E3F0000007E1F
+0000007C0F800000F80FC00001F807E00003F003E0007FFE1FFF807FFE1FFF80FFFF3FFF
+C07FFE1FFF807FFE1FFF8022207E9F27>120 D<7FFC0FFF80FFFE1FFFC0FFFE1FFFC0FF
+FE1FFFC07FFC0FFF8007E000F80003E001F80003E001F00003F001F00001F003F00001F8
+03E00000F803E00000F803E00000FC07C000007C07C000007C07C000007E0F8000003E0F
+8000003E0F8000001F0F0000001F1F0000001F1F0000000F1F0000000F9E0000000FBE00
+000007BE00000007FC00000003FC00000003FC00000003F800000001F800000001F80000
+0001F000000001F000000003F000000003E000000003E000000007E000000007C0000008
+07C000003E0FC000007F0F8000007F1F8000007E7F0000007FFE0000003FFC0000003FF8
+0000001FF000000007C000000022317E9F27>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk ecss1200 12 41
/Fk 41 122 df<FFFFFFFFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFFFFFFFF80FFFFFF
@@ -2889,8 +2932,8 @@
00003FFC00003FF800003FF800003FF000000FC0000020317FA023>121
D E
%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr ecrm1000 10 83
-/Fr 83 184 df<01800060038000E0070001C00E0003801C0007001800060038000E0030
+%DVIPSBitmapFont: Fr ecrm1000 10 84
+/Fr 84 184 df<01800060038000E0070001C00E0003801C0007001800060038000E0030
000C0070001C006000180060001800E0003800C0003000C0003000C0003000C0003000CE
003380FF803FE0FFC03FF0FFC03FF0FFC03FF07FC01FF07FC01FF03F800FE00E0003801C
1981B91C>16 D<1C0007007F001FC0FF803FE0FF803FE0FFC03FF0FFC03FF0FFC03FF07F
@@ -3365,187 +3408,197 @@
C00000000000003FC00000000000003FC00000000000003FC00000000000003FC0000000
0000003FC00000000000003FC00000000000003FC00000000000003FC00000000000003F
C00000000000007FE000000000003FFFFFC0000000003FFFFFC0000000003FFFFFC00000
-3B397FB83E>I<7FFFFFFFFFFF80FFFFFFFFFFFFC0FFFFFFFFFFFFC07FFFFFFFFFFF8032
-04797041>95 D<0180038007000E001C00180038003000700060006000E000C000C000C0
-00C000CE00FF80FFC0FFC0FFC07FC07FC03F800E000A197AB917>I<001FE0000000FFFC
-000003E03F000007000F80000F8007E0001FC003F0001FE003F0001FE001F8001FE001F8
-001FE000FC000FC000FC00078000FC00000000FC00000000FC00000000FC00000000FC00
-00007FFC000007FFFC00003FE0FC0000FE00FC0003F800FC000FF000FC001FC000FC003F
-C000FC007F8000FC007F0000FC007F0000FC0CFE0000FC0CFE0000FC0CFE0000FC0CFE00
-01FC0CFE0001FC0CFF0003FC0C7F00077C0C7F80063E183FC01E3E180FE0781FF003FFF0
-0FE0007F8007C026277DA52A>I<03F0000000FFF0000000FFF0000000FFF00000000FF0
-00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
+3B397FB83E>I<3FFFFFFFFF003FFFFFFFFF003FFFFFFFFF003FFC0001FE003FC00003FE
+003F800007FC003E000007FC003C00000FF8003C00000FF0003800001FF0007800003FE0
+007000003FE0007000007FC0007000007F8000600000FF8000600001FF0000600001FF00
+00600003FE0000600003FC0000000007FC000000000FF8000000000FF8000000001FF000
+0000001FE0000000003FE0000000007FC0000000007FC000000000FF8000000000FF0000
+000001FF0000000003FE0000000003FE0000000007FC0000000007F8000000000FF80000
+00001FF0000180001FF0000180003FE0000180003FC0000180007FC000018000FF800001
+8000FF8000038001FF0000038001FE0000038003FE0000038007FC0000038007FC000007
+000FF8000007000FF000000F001FF000001F003FE000003F003FE000007F007FC00001FF
+007F80000FFF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0029397BB833>I<7FFFFFFF
+FFFF80FFFFFFFFFFFFC0FFFFFFFFFFFFC07FFFFFFFFFFF803204797041>95
+D<0180038007000E001C00180038003000700060006000E000C000C000C000C000CE00FF
+80FFC0FFC0FFC07FC07FC03F800E000A197AB917>I<001FE0000000FFFC000003E03F00
+0007000F80000F8007E0001FC003F0001FE003F0001FE001F8001FE001F8001FE000FC00
+0FC000FC00078000FC00000000FC00000000FC00000000FC00000000FC0000007FFC0000
+07FFFC00003FE0FC0000FE00FC0003F800FC000FF000FC001FC000FC003FC000FC007F80
+00FC007F0000FC007F0000FC0CFE0000FC0CFE0000FC0CFE0000FC0CFE0001FC0CFE0001
+FC0CFF0003FC0C7F00077C0C7F80063E183FC01E3E180FE0781FF003FFF00FE0007F8007
+C026277DA52A>I<03F0000000FFF0000000FFF0000000FFF00000000FF000000003F000
000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
-0003F000000003F000000003F01FE00003F07FF80003F1E03E0003F3801F8003F7000FC0
-03FE0007E003FC0003F003F80001F803F00001F803F00000FC03F00000FC03F00000FE03
-F00000FE03F000007E03F000007F03F000007F03F000007F03F000007F03F000007F03F0
-00007F03F000007F03F000007F03F000007F03F000007F03F000007E03F00000FE03F000
-00FE03F00000FC03F00001FC03F80001F803F80003F003FC0003F003EE0007E003C6000F
-C003C7801F000381E07E000300FFF80000001FC000283B7EB92E>I<0003FC00001FFF80
-007E03E001F8007003F000F807E001FC0FC003FC0FC003FC1F8003FC3F8003FC3F0001F8
-7F0000F07F0000007F0000007E000000FE000000FE000000FE000000FE000000FE000000
-FE000000FE000000FE000000FE000000FE0000007E0000007F0000007F0000003F000006
-3F8000061F80000E1FC0000C0FC0001C07E0003803F0007001F800E0007C07C0001FFF00
-0007F8001F277DA525>I<0000000FC0000003FFC0000003FFC0000003FFC00000003FC0
-0000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000
+0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
+03F000000003F01FE00003F07FF80003F1E03E0003F3801F8003F7000FC003FE0007E003
+FC0003F003F80001F803F00001F803F00000FC03F00000FC03F00000FE03F00000FE03F0
+00007E03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000
+007F03F000007F03F000007F03F000007F03F000007E03F00000FE03F00000FE03F00000
+FC03F00001FC03F80001F803F80003F003FC0003F003EE0007E003C6000FC003C7801F00
+0381E07E000300FFF80000001FC000283B7EB92E>I<0003FC00001FFF80007E03E001F8
+007003F000F807E001FC0FC003FC0FC003FC1F8003FC3F8003FC3F0001F87F0000F07F00
+00007F0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE0000007E0000007F0000007F0000003F0000063F8000061F80
+000E1FC0000C0FC0001C07E0003803F0007001F800E0007C07C0001FFF000007F8001F27
+7DA525>I<0000000FC0000003FFC0000003FFC0000003FFC00000003FC00000000FC000
00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000
-000FC00000000FC00003F80FC0001FFF0FC0007E078FC000F801EFC003F0007FC007E000
-3FC00FC0001FC00FC0001FC01F80000FC03F80000FC03F00000FC07F00000FC07F00000F
-C07E00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0
-FE00000FC0FE00000FC0FE00000FC0FE00000FC07E00000FC07F00000FC07F00000FC03F
-00000FC03F00000FC01F80001FC01F80001FC00FC0003FC007E0007FC003F000EFF001F8
-01CFFF007C078FFF001FFE0FFF0007F80FC0283B7DB92E>I<0007F800001FFF00007C0F
-C001F803E003F001F007E001F80FC000F81F80007C1F80007C3F00007E3F00003E7F0000
-3E7F00003F7E00003FFE00003FFE00003FFE00003FFFFFFFFFFFFFFFFFFE000000FE0000
-00FE000000FE000000FE0000007E0000007E0000007F0000007F0000003F0000033F8000
-031F8000070FC0000607C0000E07E0001C01F0003800F80070007E03E0001FFF800003FC
-0020277EA525>I<00007E000003FF80000FC1E0001F87E0003F0FF0007E0FF0007E0FF0
-00FC0FF000FC0FF001F803C001F8000001F8000001F8000001F8000001F8000001F80000
-01F8000001F8000001F8000001F8000001F8000001F8000001F80000FFFFFC00FFFFFC00
-FFFFFC0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
-01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
-01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
-01F8000001F8000001F8000003FC00007FFFF8007FFFF8007FFFF8001C3B7FBA19>I<00
-000003F0000FF00FF8003FFC3C3C00F81F707C01F00FE07C03E007C07C07C003E0100FC0
-03F0000FC003F0001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001
-F8001F8001F8001F8001F8000FC003F0000FC003F00007C003E00003E007C00003F00F80
-0003F81F0000073FFC0000060FF000000E000000000E000000000E000000000E00000000
-0F000000000F000000000FC000000007FFFFC00007FFFFF80003FFFFFE0001FFFFFF8003
-FFFFFFC00F80007FE01F00000FF03E000003F07C000001F07C000001F8F8000000F8F800
-0000F8F8000000F8F8000000F8F8000000F8FC000001F87C000001F03E000003E03F0000
-07E00F80000F8007E0003F0001FC01FC00007FFFF0000007FF000026387EA52A>I<03F0
-00000000FFF000000000FFF000000000FFF0000000000FF00000000003F00000000003F0
+000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000000
+0FC00003F80FC0001FFF0FC0007E078FC000F801EFC003F0007FC007E0003FC00FC0001F
+C00FC0001FC01F80000FC03F80000FC03F00000FC07F00000FC07F00000FC07E00000FC0
+FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE
+00000FC0FE00000FC0FE00000FC07E00000FC07F00000FC07F00000FC03F00000FC03F00
+000FC01F80001FC01F80001FC00FC0003FC007E0007FC003F000EFF001F801CFFF007C07
+8FFF001FFE0FFF0007F80FC0283B7DB92E>I<0007F800001FFF00007C0FC001F803E003
+F001F007E001F80FC000F81F80007C1F80007C3F00007E3F00003E7F00003E7F00003F7E
+00003FFE00003FFE00003FFE00003FFFFFFFFFFFFFFFFFFE000000FE000000FE000000FE
+000000FE0000007E0000007E0000007F0000007F0000003F0000033F8000031F8000070F
+C0000607C0000E07E0001C01F0003800F80070007E03E0001FFF800003FC0020277EA525
+>I<00007E000003FF80000FC1E0001F87E0003F0FF0007E0FF0007E0FF000FC0FF000FC
+0FF001F803C001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000001F8000001F8000001F8000001F80000FFFFFC00FFFFFC00FFFFFC0001F8
+000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000003FC00007FFFF8007FFFF8007FFFF8001C3B7FBA19>I<00000003F0000F
+F00FF8003FFC3C3C00F81F707C01F00FE07C03E007C07C07C003E0100FC003F0000FC003
+F0001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8
+001F8001F8000FC003F0000FC003F00007C003E00003E007C00003F00F800003F81F0000
+073FFC0000060FF000000E000000000E000000000E000000000E000000000F000000000F
+000000000FC000000007FFFFC00007FFFFF80003FFFFFE0001FFFFFF8003FFFFFFC00F80
+007FE01F00000FF03E000003F07C000001F07C000001F8F8000000F8F8000000F8F80000
+00F8F8000000F8F8000000F8FC000001F87C000001F03E000003E03F000007E00F80000F
+8007E0003F0001FC01FC00007FFFF0000007FF000026387EA52A>I<03F000000000FFF0
+00000000FFF000000000FFF0000000000FF00000000003F00000000003F00000000003F0
0000000003F00000000003F00000000003F00000000003F00000000003F00000000003F0
0000000003F00000000003F00000000003F00000000003F00000000003F00000000003F0
-0000000003F00000000003F00000000003F00FF0000003F03FFC000003F0F03F000003F1
-C01F800003F3800FC00003F7000FC00003FE000FC00003FC0007E00003FC0007E00003F8
-0007E00003F80007E00003F80007E00003F00007E00003F00007E00003F00007E00003F0
+0000000003F00000000003F00FF0000003F03FFC000003F0F03F000003F1C01F800003F3
+800FC00003F7000FC00003FE000FC00003FC0007E00003FC0007E00003F80007E00003F8
+0007E00003F80007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0
0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0
0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0
-0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00007F8
-000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF80293A7EB92E>I<0380000FE0001F
-F0001FF0001FF0001FF0001FF0000FE00003800000000000000000000000000000000000
-000000000000000000000000000003F000FFF000FFF000FFF00007F00003F00003F00003
+0007E00003F00007E00003F00007E00003F00007E00003F00007E00007F8000FF000FFFF
+C1FFFF80FFFFC1FFFF80FFFFC1FFFF80293A7EB92E>I<0380000FE0001FF0001FF0001F
+F0001FF0001FF0000FE00003800000000000000000000000000000000000000000000000
+000000000000000003F000FFF000FFF000FFF00007F00003F00003F00003F00003F00003
F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003
-F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003
-F00003F00007F800FFFFC0FFFFC0FFFFC012387EB717>I<0001C00007F0000FF8000FF8
-000FF8000FF8000FF80007F00001C0000000000000000000000000000000000000000000
-0000000000000000000001F800FFF800FFF800FFF80007F80001F80001F80001F80001F8
+F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007
+F800FFFFC0FFFFC0FFFFC012387EB717>I<0001C00007F0000FF8000FF8000FF8000FF8
+000FF80007F00001C0000000000000000000000000000000000000000000000000000000
+0000000001F800FFF800FFF800FFF80007F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
-0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F83C01F87E01F8
-FF01F0FF03F0FF03F0FF03E0FE07C07C07C03C0F000FFE0003F800154984B719>I<03F0
-000000FFF0000000FFF0000000FFF00000000FF000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
+0001F80001F80001F80001F80001F80001F80001F80001F83C01F87E01F8FF01F0FF03F0
+FF03F0FF03E0FE07C07C07C03C0F000FFE0003F800154984B719>I<03F0000000FFF000
+0000FFF0000000FFF00000000FF000000003F000000003F000000003F000000003F00000
0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F001FFFC03F001FFFC03F001FFFC03F0007FC003F0007F0003F0007C0003F000700003
-F000E00003F001C00003F003800003F007000003F01E000003F038000003F078000003F0
-FC000003F1FC000003F3FE000003F73F000003FE3F800003F81F800003F00FC00003F00F
-E00003F007E00003F003F00003F001F80003F001FC0003F000FC0003F0007E0003F0007F
-0003F0003F0003F0003F8003F0001FC007F8003FF0FFFFC0FFFFFFFFC0FFFFFFFFC0FFFF
-283A7EB92C>I<03F000FFF000FFF000FFF0000FF00003F00003F00003F00003F00003F0
+03F000000003F000000003F000000003F000000003F000000003F000000003F001FFFC03
+F001FFFC03F001FFFC03F0007FC003F0007F0003F0007C0003F000700003F000E00003F0
+01C00003F003800003F007000003F01E000003F038000003F078000003F0FC000003F1FC
+000003F3FE000003F73F000003FE3F800003F81F800003F00FC00003F00FE00003F007E0
+0003F003F00003F001F80003F001FC0003F000FC0003F0007E0003F0007F0003F0003F00
+03F0003F8003F0001FC007F8003FF0FFFFC0FFFFFFFFC0FFFFFFFFC0FFFF283A7EB92C>
+I<03F000FFF000FFF000FFF0000FF00003F00003F00003F00003F00003F00003F00003F0
0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00003F00003F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFF
-C0123A7EB917>I<03F00FF0001FE000FFF03FFC007FF800FFF0F03F01E07E00FFF1C01F
-83803F000FF3800FC7001F8003F7000FCE001F8003FE000FDC001F8003FC0007F8000FC0
-03FC0007F8000FC003F80007F0000FC003F80007F0000FC003F80007F0000FC003F00007
-E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC0
-03F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007
-E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC0
-03F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007
-E0000FC003F00007E0000FC003F00007E0000FC007F8000FF0001FE0FFFFC1FFFF83FFFF
-FFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40257EA445>I<03F00FF00000FFF03FFC0000FF
-F0F03F0000FFF1C01F80000FF3800FC00003F7000FC00003FE000FC00003FC0007E00003
-FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003F00007E00003
+0003F00003F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFFC0123A7EB917
+>I<03F00FF0001FE000FFF03FFC007FF800FFF0F03F01E07E00FFF1C01F83803F000FF3
+800FC7001F8003F7000FCE001F8003FE000FDC001F8003FC0007F8000FC003FC0007F800
+0FC003F80007F0000FC003F80007F0000FC003F80007F0000FC003F00007E0000FC003F0
+0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000
+0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0
+0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000
+0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0
+0007E0000FC003F00007E0000FC007F8000FF0001FE0FFFFC1FFFF83FFFFFFFFC1FFFF83
+FFFFFFFFC1FFFF83FFFF40257EA445>I<03F00FF00000FFF03FFC0000FFF0F03F0000FF
+F1C01F80000FF3800FC00003F7000FC00003FE000FC00003FC0007E00003FC0007E00003
+F80007E00003F80007E00003F80007E00003F00007E00003F00007E00003F00007E00003
F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
-F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
-F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029257EA42E>I<
-0003FE0000000FFF8000003E03E00000F800F80001F0007C0003E0003E0007C0001F000F
-80000F801F80000FC01F000007C03F000007E03F000007E07E000003F07E000003F07E00
-0003F07E000003F0FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE0000
-03F8FE000003F8FE000003F8FE000003F87E000003F07E000003F07F000007F03F000007
-E03F000007E01F80000FC00F80000F800FC0001F8007E0003F0003F0007E0000F800F800
-007E03F000001FFFC0000003FE000025277EA52A>I<03F01FE000FFF07FF800FFF1E07E
-00FFF3801F8007F7000FC003FE0007E003FC0003F003F80003F803F00001F803F00001FC
-03F00000FC03F00000FE03F00000FE03F00000FE03F000007F03F000007F03F000007F03
-F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F0
-0000FE03F00000FE03F00000FE03F00001FC03F00001FC03F80003F803F80003F003FC00
-07F003FE000FE003F6000FC003F7803F0003F1E07E0003F0FFF80003F01FC00003F00000
-0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0000028
-357EA42E>I<0003F800C0001FFE01C0007E0781C000FC01C3C003F000E3C007F00077C0
-0FE00037C00FC0003FC01FC0001FC03F80001FC03F80000FC07F00000FC07F00000FC07F
-00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00
-000FC0FE00000FC0FE00000FC0FE00000FC07F00000FC07F00000FC07F00000FC03F0000
-0FC03F80001FC01F80001FC01FC0003FC00FC0003FC007E0007FC003F000EFC001F801CF
-C0007E078FC0001FFE0FC00007F80FC00000000FC00000000FC00000000FC00000000FC0
-0000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000
-00001FE0000003FFFF000003FFFF000003FFFF28357DA42C>I<07E01F00FFE07FC0FFE1
-E3E0FFE387F00FE707F003E607F003EE07F003EC03E003FC008003F8000003F8000003F8
-000003F8000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0
-000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0
-000003F0000003F0000003F0000007F80000FFFFF000FFFFF000FFFFF0001C257EA421>
-I<00FF030003FFE7000F80FF001E003F003C001F0078000F0070000700F0000700F00007
-00F0000300F8000300F8000300FC000300FF0000007FE000007FFF00003FFFE0001FFFF8
-000FFFFC0003FFFE0000FFFF000007FF8000007F8000001F80C0000FC0C00007C0C00007
-C0E00003C0E00003C0E00003C0F00003C0F0000380F8000780FC000780FC000F00FF001E
-00F3C07C00E1FFF000C03F80001A277DA521>I<00180000001800000018000000180000
-0018000000380000003800000038000000780000007800000078000000F8000001F80000
-03F8000007F800001FFFFF00FFFFFF00FFFFFF0001F8000001F8000001F8000001F80000
-01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
-01F8000001F8000001F8000001F8000001F8000001F800C001F800C001F800C001F800C0
-01F800C001F800C001F800C001F800C001F800C000FC01C000FC0180007C0380007E0300
-003F0700000FFE000001F8001A347FB220>I<03F00007E000FFF001FFE000FFF001FFE0
-00FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F00007E00003F00007E0
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00007
+F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029257EA42E>I<0003FE000000
+0FFF8000003E03E00000F800F80001F0007C0003E0003E0007C0001F000F80000F801F80
+000FC01F000007C03F000007E03F000007E07E000003F07E000003F07E000003F07E0000
+03F0FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003
+F8FE000003F8FE000003F87E000003F07E000003F07F000007F03F000007E03F000007E0
+1F80000FC00F80000F800FC0001F8007E0003F0003F0007E0000F800F800007E03F00000
+1FFFC0000003FE000025277EA52A>I<03F01FE000FFF07FF800FFF1E07E00FFF3801F80
+07F7000FC003FE0007E003FC0003F003F80003F803F00001F803F00001FC03F00000FC03
+F00000FE03F00000FE03F00000FE03F000007F03F000007F03F000007F03F000007F03F0
+00007F03F000007F03F000007F03F000007F03F000007F03F000007F03F00000FE03F000
+00FE03F00000FE03F00001FC03F00001FC03F80003F803F80003F003FC0007F003FE000F
+E003F6000FC003F7803F0003F1E07E0003F0FFF80003F01FC00003F000000003F0000000
+03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
+F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0000028357EA42E>I<
+0003F800C0001FFE01C0007E0781C000FC01C3C003F000E3C007F00077C00FE00037C00F
+C0003FC01FC0001FC03F80001FC03F80000FC07F00000FC07F00000FC07F00000FC0FE00
+000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE0000
+0FC0FE00000FC0FE00000FC07F00000FC07F00000FC07F00000FC03F00000FC03F80001F
+C01F80001FC01FC0003FC00FC0003FC007E0007FC003F000EFC001F801CFC0007E078FC0
+001FFE0FC00007F80FC00000000FC00000000FC00000000FC00000000FC00000000FC000
+00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000001FE00000
+03FFFF000003FFFF000003FFFF28357DA42C>I<07E01F00FFE07FC0FFE1E3E0FFE387F0
+0FE707F003E607F003EE07F003EC03E003FC008003F8000003F8000003F8000003F80000
+03F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00000
+03F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00000
+03F0000003F0000007F80000FFFFF000FFFFF000FFFFF0001C257EA421>I<00FF030003
+FFE7000F80FF001E003F003C001F0078000F0070000700F0000700F0000700F0000300F8
+000300F8000300FC000300FF0000007FE000007FFF00003FFFE0001FFFF8000FFFFC0003
+FFFE0000FFFF000007FF8000007F8000001F80C0000FC0C00007C0C00007C0E00003C0E0
+0003C0E00003C0F00003C0F0000380F8000780FC000780FC000F00FF001E00F3C07C00E1
+FFF000C03F80001A277DA521>I<00180000001800000018000000180000001800000038
+0000003800000038000000780000007800000078000000F8000001F8000003F8000007F8
+00001FFFFF00FFFFFF00FFFFFF0001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000001F8000001F8000001F800C001F800C001F800C001F800C001F800C001F8
+00C001F800C001F800C001F800C000FC01C000FC0180007C0380007E0300003F0700000F
+FE000001F8001A347FB220>I<03F00007E000FFF001FFE000FFF001FFE000FFF001FFE0
+000FF0001FE00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
-0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
-0003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0001FE00001F8003FE0
-0000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003FC07E00029267EA42E
->I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007E003F00003C003F80003
-8001F800030001F800030000FC00060000FC00060000FE000E00007E000C00007E000C00
-003F001800003F001800003F803800001F803000001F803000000FC06000000FC0600000
-0FE060000007E0C0000007E0C0000003F180000003F180000003F180000001FB00000001
-FB00000001FF00000000FE00000000FE000000007C000000007C000000007C0000000038
-0000000038000027257EA32C>I<FFFF1FFFE03FFEFFFF1FFFE03FFEFFFF1FFFE03FFE0F
-F800FF000FF807F0007E0003E007F0007E0003C003F0003E00018003F0003E00018001F8
-003F00030001F8003F00030001F8003F00030000FC003F80060000FC006F80060000FC00
-6F800600007E00EFC00C00007E00C7C00C00007E00C7C01C00003F01C7E01800003F0183
-E01800003F8183F03800001F8383F03000001F8301F03000001FC301F87000000FC600F8
-6000000FC600F860000007E600FCC0000007EC007CC0000007EC007CC0000003FC007F80
-000003F8003F80000003F8003F80000001F8003F00000001F0001F00000001F0001F0000
-0000F0001E00000000E0000E0000000060000C000037257EA33C>I<FFFF807FFF00FFFF
-807FFF00FFFF807FFF0003FE003FF00001FE001F800000FE001F0000007E001C0000003F
-00180000001F80300000001FC0700000000FC0E000000007E0C000000007F18000000003
-FB8000000001FF0000000000FE0000000000FE00000000007F00000000003F0000000000
-7F80000000007FC000000000CFC000000001C7E00000000383F00000000703F800000006
-01F80000000C00FC0000001C007E00000038007F00000078003F000000F0001F800001F8
-001FC0000FF8003FF000FFFE00FFFF80FFFE00FFFF80FFFE00FFFF8029247FA32C>I<FF
-FF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007C003F000038001F800038001F8
-00030001FC00030000FC00060000FC000600007E000C00007E000C00007F000C00003F00
-1800003F001800001F803000001F803000001FC07000000FC06000000FC060000007E0C0
-000007E0C0000007F1C0000003F180000003F180000001FB00000001FB00000001FF0000
-0000FE00000000FE000000007C000000007C000000007C00000000380000000038000000
-0030000000003000000000700000000060000000006000000000C000000000C000007C01
-C00000FE01800000FE03800000FE03000000FE06000000FC0E000000701C000000383800
-00001FF00000000FC000000027357EA32C>I<3FFFFFFC3FFFFFFC3F8003FC3E0003F83C
-0007F038000FE030000FE070001FC070003F8060007F8060007F006000FE006001FC0060
-01FC000003F8000007F0000007F000000FE000001FC000003F8000003F8000007F000600
-FE000600FE000601FC000603F8000607F8000E07F0000E0FE0000C1FC0001C1FC0001C3F
-80003C7F00007CFF0003FCFFFFFFFCFFFFFFFC1F247EA325>I<00003E0000000000FF80
-0000000180C0000000030060000000060030000000060030000000060030000000060030
-0000000600300000000300600000000180C000000000FF80000000003E00000000000000
-000000000000000000000000000000000000000000000000000003F00007E000FFF001FF
-E000FFF001FFE000FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F00007
+0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0000FE0
+0003F0000FE00003F0000FE00003F0001FE00001F0001FE00001F8003FE00000F80077F8
+0000FC00E7FF80003F03C7FF80001FFF87FF800003FC07E00029267EA42E>I<FFFF803F
+FEFFFF803FFEFFFF803FFE0FF8000FF007F00007E003F00003C003F800038001F8000300
+01F800030000FC00060000FC00060000FE000E00007E000C00007E000C00003F00180000
+3F001800003F803800001F803000001F803000000FC06000000FC06000000FE060000007
+E0C0000007E0C0000003F180000003F180000003F180000001FB00000001FB00000001FF
+00000000FE00000000FE000000007C000000007C000000007C0000000038000000003800
+0027257EA32C>I<FFFF1FFFE03FFEFFFF1FFFE03FFEFFFF1FFFE03FFE0FF800FF000FF8
+07F0007E0003E007F0007E0003C003F0003E00018003F0003E00018001F8003F00030001
+F8003F00030001F8003F00030000FC003F80060000FC006F80060000FC006F800600007E
+00EFC00C00007E00C7C00C00007E00C7C01C00003F01C7E01800003F0183E01800003F81
+83F03800001F8383F03000001F8301F03000001FC301F87000000FC600F86000000FC600
+F860000007E600FCC0000007EC007CC0000007EC007CC0000003FC007F80000003F8003F
+80000003F8003F80000001F8003F00000001F0001F00000001F0001F00000000F0001E00
+000000E0000E0000000060000C000037257EA33C>I<FFFF807FFF00FFFF807FFF00FFFF
+807FFF0003FE003FF00001FE001F800000FE001F0000007E001C0000003F00180000001F
+80300000001FC0700000000FC0E000000007E0C000000007F18000000003FB8000000001
+FF0000000000FE0000000000FE00000000007F00000000003F00000000007F8000000000
+7FC000000000CFC000000001C7E00000000383F00000000703F80000000601F80000000C
+00FC0000001C007E00000038007F00000078003F000000F0001F800001F8001FC0000FF8
+003FF000FFFE00FFFF80FFFE00FFFF80FFFE00FFFF8029247FA32C>I<FFFF803FFEFFFF
+803FFEFFFF803FFE0FF8000FF007F00007C003F000038001F800038001F800030001FC00
+030000FC00060000FC000600007E000C00007E000C00007F000C00003F001800003F0018
+00001F803000001F803000001FC07000000FC06000000FC060000007E0C0000007E0C000
+0007F1C0000003F180000003F180000001FB00000001FB00000001FF00000000FE000000
+00FE000000007C000000007C000000007C00000000380000000038000000003000000000
+3000000000700000000060000000006000000000C000000000C000007C01C00000FE0180
+0000FE03800000FE03000000FE06000000FC0E000000701C00000038380000001FF00000
+000FC000000027357EA32C>I<3FFFFFFC3FFFFFFC3F8003FC3E0003F83C0007F038000F
+E030000FE070001FC070003F8060007F8060007F006000FE006001FC006001FC000003F8
+000007F0000007F000000FE000001FC000003F8000003F8000007F000600FE000600FE00
+0601FC000603F8000607F8000E07F0000E0FE0000C1FC0001C1FC0001C3F80003C7F0000
+7CFF0003FCFFFFFFFCFFFFFFFC1F247EA325>I<00003E0000000000FF800000000180C0
+000000030060000000060030000000060030000000060030000000060030000000060030
+0000000300600000000180C000000000FF80000000003E00000000000000000000000000
+000000000000000000000000000000000000000003F00007E000FFF001FFE000FFF001FF
+E000FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F00007E00003F00007
E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007
E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007
E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007
-E00003F00007E00003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0001F
-E00001F8003FE00000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003FC07
-E00029387EB62E>183 D E
+E00003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0001FE00001F8003F
+E00000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003FC07E00029387EB6
+2E>183 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fs ecss1440 14.4 32
/Fs 32 247 df<FFFFFFFFFFFFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFFFFFFFFFFFF
@@ -4507,7 +4560,7 @@
TeXDict begin 1 0 bop 0 83 3901 9 v 1890 451 a Fu(Python)64
b(Op)5 b(enSSL)64 b(Manual)3443 619 y Ft(Release)33 b(0.6)3189
974 y Fs(Ma)m(rtin)k(Sj\366gren)3383 1328 y Fr(Marc)n(h)27
-b(6,)g(2008)3301 1475 y Fq(ma)n(rtin@strakt.com)1781
+b(9,)g(2008)3301 1475 y Fq(ma)n(rtin@strakt.com)1781
1697 y Fp(Abstract)208 1841 y Fo(This)32 b(mo)r(dule)f(is)h(a)g(rather)
g(thin)f(wrapp)r(er)h(around)g(\(a)g(subset)f(of)6 b(\))32
b(the)g(Op)r(enSSL)e(library)-6 b(.)52 b(With)32 b(thin)f(wrapp)r(er)
@@ -4537,51 +4590,51 @@
b(ob)5 b(jects)60 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
-b(6)315 3543 y(X509Store)26 b(ob)5 b(jects)78 b(.)41
+b(7)315 3543 y(X509Store)26 b(ob)5 b(jects)78 b(.)41
b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)134 b(6)315 3643 y(PKey)28 b(ob)5
+f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315 3643 y(PKey)28 b(ob)5
b(jects)58 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
-b(6)315 3743 y(PK)n(CS7)27 b(ob)5 b(jects)59 b(.)41 b(.)h(.)f(.)h(.)g
+b(7)315 3743 y(PK)n(CS7)27 b(ob)5 b(jects)59 b(.)41 b(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)134 b(7)315 3842 y(PK)n(CS12)27 b(ob)5
b(jects)81 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315
+f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)315
3942 y(X509Extension)27 b(ob)5 b(jects)102 b(.)41 b(.)h(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
-b(7)315 4041 y(Netscap)r(eSPKI)28 b(ob)5 b(jects)58 b(.)42
+b(8)315 4041 y(Netscap)r(eSPKI)28 b(ob)5 b(jects)58 b(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)134 b(7)125 4141 y(3.2)83 b Fm(rand)26
+f(.)h(.)f(.)h(.)134 b(8)125 4141 y(3.2)83 b Fm(rand)26
b Fr(\026)i(An)g(in)n(terface)f(to)g(the)h(Op)r(enSSL)g(pseudo)f
(random)g(n)n(um)n(b)r(er)g(generator)50 b(.)41 b(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)134 b(8)125 4241 y(3.3)83 b Fm(SSL)27
b Fr(\026)g(An)i(in)n(terface)d(to)i(the)g(SSL-sp)r(eci\034c)f(parts)g
(of)h(Op)r(enSSL)64 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)315 4340 y(Con)n(text)28
+h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(9)315 4340 y(Con)n(text)28
b(ob)5 b(jects)98 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(10)315 4440 y(Connection)27 b(ob)5 b(jects)108 b(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)93 b(11)0 4623 y Fn(4)77 b(In)m(ternals)3310
-b(13)125 4722 y Fr(4.1)83 b(Exceptions)i(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g
+h(.)f(.)h(.)f(.)h(.)93 b(12)0 4623 y Fn(4)77 b(In)m(ternals)3310
+b(14)125 4722 y Fr(4.1)83 b(Exceptions)i(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)93 b(13)125 4822 y(4.2)83 b(Callbac)n(ks)68
+(.)h(.)f(.)h(.)93 b(14)125 4822 y(4.2)83 b(Callbac)n(ks)68
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
-b(13)125 4921 y(4.3)83 b(A)n(cessing)27 b(So)r(c)n(k)n(et)g(Metho)r(ds)
+b(14)125 4921 y(4.3)83 b(A)n(cessing)27 b(So)r(c)n(k)n(et)g(Metho)r(ds)
82 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)93 b(14)p 0 5068 V eop end
+f(.)h(.)f(.)h(.)93 b(15)p 0 5068 V eop end
%%Page: 2 2
TeXDict begin 2 1 bop 0 85 a Fs(1)114 b(Intro)s(duction)0
314 y Fr(The)41 b(reason)f(this)i(mo)r(dule)g(exists)f(at)g(all)g(is)g
@@ -4776,684 +4829,709 @@
208 2139 y Fr(Return)g(an)h(X509Name)e(ob)5 b(ject)27
b(represen)n(ting)f(the)i(sub)5 b(ject)28 b(of)f(the)h(certi\034cate.)0
2286 y Fm(get_version\(\))208 2386 y Fr(Return)f(the)h(certi\034cate)f
-(v)n(ersion.)0 2533 y Fm(gmtime_adj_notBe)o(fo)o(re\()o
-Fd(time)6 b Fm(\))208 2632 y Fr(A)n(djust)28 b(the)g(timestamp)g(\(in)g
-(GMT\))g(when)g(the)f(certi\034cate)g(starts)g(b)r(eing)h(v)-5
-b(alid.)0 2779 y Fm(gmtime_adj_notAf)o(te)o(r\()p Fd(t)o(ime)6
-b Fm(\))208 2879 y Fr(A)n(djust)28 b(the)g(timestamp)g(\(in)g(GMT\))g
-(when)g(the)f(certi\034cate)g(stops)g(b)r(eing)h(v)-5
-b(alid.)0 3026 y Fm(has_expired\(\))208 3125 y Fr(Chec)n(ks)32
-b(the)h(certi\034cate's)f(time)i(stamp)f(against)f(curren)n(t)g(time.)
-54 b(Returns)33 b(true)g(if)g(the)h(certi\034cate)e(has)h(expired)208
-3225 y(and)27 b(false)g(otherwise.)0 3372 y Fm(set_issuer\()p
-Fd(issuer)9 b Fm(\))208 3472 y Fr(Set)28 b(the)f(issuer)g(of)h(the)g
-(certi\034cate)f(to)g Fd(issuer)9 b Fr(.)0 3618 y Fm(set_pubkey\()p
-Fd(pkey)e Fm(\))208 3718 y Fr(Set)28 b(the)f(public)h(k)n(ey)f(of)h
-(the)g(certi\034cate)f(to)g Fd(pkey)7 b Fr(.)0 3865 y
-Fm(set_serial_numbe)o(r\()o Fd(serialno)e Fm(\))208 3965
+(v)n(ersion.)0 2533 y Fm(get_notBefore\(\))208 2632 y
+Fr(Return)f(a)h(string)f(giving)f(the)j(time)f(b)r(efore)f(whic)n(h)h
+(the)g(certi\034cate)f(is)g(not)h(v)-5 b(alid.)37 b(The)26
+b(string)g(is)h(formatted)f(as)g(an)208 2732 y(ASN1)h(GENERALIZEDTIME:)
+1110 2956 y Fj(YYYYMMDDhhmmssZ)1110 3048 y(YYYYMMDDhhmmss+hhmm)1110
+3139 y(YYYYMMDDhhmmss-hhmm)0 3343 y Fm(get_notAfter\(\))208
+3443 y Fr(Return)i(a)g(string)g(giving)g(the)g(time)h(after)f(whic)n(h)
+h(the)g(certi\034cate)e(is)i(not)f(v)-5 b(alid.)43 b(The)29
+b(string)g(is)g(formatted)h(as)e(an)208 3543 y(ASN1)f(GENERALIZEDTIME:)
+1110 3767 y Fj(YYYYMMDDhhmmssZ)1110 3858 y(YYYYMMDDhhmmss+hhmm)1110
+3949 y(YYYYMMDDhhmmss-hhmm)0 4154 y Fm(set_notBefore\()p
+Fd(when)6 b Fm(\))208 4254 y Fr(Change)35 b(the)i(time)f(b)r(efore)g
+(whic)n(h)g(the)h(certi\034cate)f(is)g(not)g(v)-5 b(alid.)63
+b Fd(when)43 b Fr(is)36 b(a)g(string)f(formatted)h(as)g(an)g(ASN1)208
+4353 y(GENERALIZEDTIME:)1110 4577 y Fj(YYYYMMDDhhmmssZ)1110
+4669 y(YYYYMMDDhhmmss+hhmm)1110 4760 y(YYYYMMDDhhmmss-hhmm)0
+4965 y Fm(set_notAfter\()p Fd(when)6 b Fm(\))208 5064
+y Fr(Change)38 b(the)h(time)h(after)e(whic)n(h)h(the)h(certi\034cate)e
+(is)h(not)g(v)-5 b(alid.)71 b Fd(when)46 b Fr(is)39 b(a)g(string)f
+(formatted)h(as)f(an)h(ASN1)208 5164 y(GENERALIZEDTIME:)p
+0 5549 3901 4 v 0 5649 a Fg(3.1)82 b Fm(crypto)25 b Fg(\026)j(Generic)g
+(cryptographic)e(mo)r(dule)2234 b(5)p eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 1110 174 a Fj(YYYYMMDDhhmmssZ)1110
+266 y(YYYYMMDDhhmmss+hhmm)1110 357 y(YYYYMMDDhhmmss-hhmm)0
+562 y Fm(gmtime_adj_notBe)o(fo)o(re\()o Fd(time)6 b Fm(\))208
+661 y Fr(A)n(djust)28 b(the)g(timestamp)g(\(in)g(GMT\))g(when)g(the)f
+(certi\034cate)g(starts)g(b)r(eing)h(v)-5 b(alid.)0 808
+y Fm(gmtime_adj_notAf)o(te)o(r\()p Fd(t)o(ime)6 b Fm(\))208
+908 y Fr(A)n(djust)28 b(the)g(timestamp)g(\(in)g(GMT\))g(when)g(the)f
+(certi\034cate)g(stops)g(b)r(eing)h(v)-5 b(alid.)0 1054
+y Fm(has_expired\(\))208 1154 y Fr(Chec)n(ks)32 b(the)h
+(certi\034cate's)f(time)i(stamp)f(against)f(curren)n(t)g(time.)54
+b(Returns)33 b(true)g(if)g(the)h(certi\034cate)e(has)h(expired)208
+1254 y(and)27 b(false)g(otherwise.)0 1401 y Fm(set_issuer\()p
+Fd(issuer)9 b Fm(\))208 1500 y Fr(Set)28 b(the)f(issuer)g(of)h(the)g
+(certi\034cate)f(to)g Fd(issuer)9 b Fr(.)0 1647 y Fm(set_pubkey\()p
+Fd(pkey)e Fm(\))208 1747 y Fr(Set)28 b(the)f(public)h(k)n(ey)f(of)h
+(the)g(certi\034cate)f(to)g Fd(pkey)7 b Fr(.)0 1894 y
+Fm(set_serial_numbe)o(r\()o Fd(serialno)e Fm(\))208 1993
y Fr(Set)28 b(the)f(serial)g(n)n(um)n(b)r(er)g(of)h(the)g
-(certi\034cate)f(to)g Fd(serialno)5 b Fr(.)0 4111 y Fm(set_subject\()p
-Fd(subje)l(ct)j Fm(\))208 4211 y Fr(Set)28 b(the)f(sub)5
+(certi\034cate)f(to)g Fd(serialno)5 b Fr(.)0 2140 y Fm(set_subject\()p
+Fd(subje)l(ct)j Fm(\))208 2240 y Fr(Set)28 b(the)f(sub)5
b(ject)28 b(of)g(the)g(certi\034cate)f(to)g Fd(subje)l(ct)8
-b Fr(.)0 4358 y Fm(set_version\()p Fd(version)e Fm(\))208
-4458 y Fr(Set)28 b(the)f(certi\034cate)g(v)n(ersion)f(to)i
-Fd(version)6 b Fr(.)0 4604 y Fm(sign\()p Fd(pkey,)29
-b(digest)8 b Fm(\))208 4704 y Fr(Sign)22 b(the)h(certi\034cate,)f
+b Fr(.)0 2387 y Fm(set_version\()p Fd(version)e Fm(\))208
+2486 y Fr(Set)28 b(the)f(certi\034cate)g(v)n(ersion)f(to)i
+Fd(version)6 b Fr(.)0 2633 y Fm(sign\()p Fd(pkey,)29
+b(digest)8 b Fm(\))208 2733 y Fr(Sign)22 b(the)h(certi\034cate,)f
(using)g(the)h(k)n(ey)g Fd(pkey)31 b Fr(and)22 b(the)h(message)e
(digest)h(algorithm)f(iden)n(ti\034ed)i(b)n(y)f(the)h(string)f
-Fd(digest)8 b Fr(.)0 4851 y Fm(subject_name_has)o(h\()o(\))208
-4951 y Fr(Return)27 b(the)h(hash)f(of)h(the)g(certi\034cate)f(sub)5
-b(ject.)0 5097 y Fm(digest\()p Fd(digest_name)h Fm(\))208
-5197 y Fr(Return)27 b(a)g(digest)h(of)f(the)h(certi\034cate,)f(using)g
-(the)h Fd(digest_name)35 b Fr(metho)r(d.)0 5344 y Fm(add_extensions\()p
-Fd(ex)o(tensions)7 b Fm(\))p 0 5549 3901 4 v 0 5649 a
-Fg(3.1)82 b Fm(crypto)25 b Fg(\026)j(Generic)g(cryptographic)e(mo)r
-(dule)2234 b(5)p eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop 208 83 a Fr(A)n(dd)27 b(the)h(extensions)f(in)h
-(the)g(sequence)f Fd(extensions)34 b Fr(to)27 b(the)h(certi\034cate.)0
-346 y Fg(X509Name)e(objects)0 547 y Fr(X509Name)g(ob)5
-b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(mem)n(b)r(ers:)0
-693 y Fm(countryName)208 793 y Fr(The)h(coun)n(try)g(of)g(the)h(en)n
-(tit)n(y)-7 b(.)37 b Fm(C)27 b Fr(ma)n(y)g(b)r(e)h(used)g(as)f(an)g
-(alias)f(for)h Fm(countryName)p Fr(.)0 940 y Fm(stateOrProvinceN)o(am)o
-(e)208 1040 y Fr(The)g(state)h(or)e(pro)n(vince)g(of)i(the)g(en)n(tit)n
-(y)-7 b(.)37 b Fm(ST)27 b Fr(ma)n(y)f(b)r(e)i(used)g(as)f(an)g(alias)g
-(for)g Fm(stateOrProvince)o(Na)o(me)p Fr(\267)0 1186
-y Fm(localityName)208 1286 y Fr(The)g(lo)r(calit)n(y)g(of)h(the)f(en)n
-(tit)n(y)-7 b(.)37 b Fm(L)28 b Fr(ma)n(y)e(b)r(e)i(used)g(as)f(an)g
-(alias)g(for)g Fm(localityName)p Fr(.)0 1433 y Fm(organizationName)208
-1532 y Fr(The)g(organization)e(name)j(of)f(the)h(en)n(tit)n(y)-7
+Fd(digest)8 b Fr(.)0 2880 y Fm(subject_name_has)o(h\()o(\))208
+2979 y Fr(Return)27 b(the)h(hash)f(of)h(the)g(certi\034cate)f(sub)5
+b(ject.)0 3126 y Fm(digest\()p Fd(digest_name)h Fm(\))208
+3226 y Fr(Return)27 b(a)g(digest)h(of)f(the)h(certi\034cate,)f(using)g
+(the)h Fd(digest_name)35 b Fr(metho)r(d.)0 3373 y Fm(add_extensions\()p
+Fd(ex)o(tensions)7 b Fm(\))208 3472 y Fr(A)n(dd)27 b(the)h(extensions)f
+(in)h(the)g(sequence)f Fd(extensions)34 b Fr(to)27 b(the)h
+(certi\034cate.)0 3735 y Fg(X509Name)e(objects)0 3936
+y Fr(X509Name)g(ob)5 b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e
+(mem)n(b)r(ers:)0 4083 y Fm(countryName)208 4182 y Fr(The)h(coun)n(try)
+g(of)g(the)h(en)n(tit)n(y)-7 b(.)37 b Fm(C)27 b Fr(ma)n(y)g(b)r(e)h
+(used)g(as)f(an)g(alias)f(for)h Fm(countryName)p Fr(.)0
+4329 y Fm(stateOrProvinceN)o(am)o(e)208 4429 y Fr(The)g(state)h(or)e
+(pro)n(vince)g(of)i(the)g(en)n(tit)n(y)-7 b(.)37 b Fm(ST)27
+b Fr(ma)n(y)f(b)r(e)i(used)g(as)f(an)g(alias)g(for)g
+Fm(stateOrProvince)o(Na)o(me)p Fr(\267)0 4576 y Fm(localityName)208
+4675 y Fr(The)g(lo)r(calit)n(y)g(of)h(the)f(en)n(tit)n(y)-7
+b(.)37 b Fm(L)28 b Fr(ma)n(y)e(b)r(e)i(used)g(as)f(an)g(alias)g(for)g
+Fm(localityName)p Fr(.)0 4822 y Fm(organizationName)208
+4922 y Fr(The)g(organization)e(name)j(of)f(the)h(en)n(tit)n(y)-7
b(.)37 b Fm(O)27 b Fr(ma)n(y)g(b)r(e)h(used)g(as)e(an)i(alias)e(for)h
-Fm(organizationName)p Fr(.)0 1679 y Fm(organizationalUn)o(it)o(Nam)o(e)
-208 1779 y Fr(The)g(organizational)e(unit)j(of)g(the)g(en)n(tit)n(y)-7
+Fm(organizationName)p Fr(.)0 5069 y Fm(organizationalUn)o(it)o(Nam)o(e)
+208 5168 y Fr(The)g(organizational)e(unit)j(of)g(the)g(en)n(tit)n(y)-7
b(.)36 b Fm(OU)27 b Fr(ma)n(y)g(b)r(e)h(used)g(as)f(an)g(alias)f(for)h
-Fm(organizationalUni)o(tN)o(am)o(e)p Fr(.)0 1926 y Fm(commonName)208
-2025 y Fr(The)g(common)g(name)h(of)f(the)h(en)n(tit)n(y)-7
-b(.)37 b Fm(CN)27 b Fr(ma)n(y)f(b)r(e)i(used)g(as)f(an)g(alias)g(for)g
-Fm(commonName)p Fr(.)0 2172 y Fm(emailAddress)208 2272
-y Fr(The)g(e-mail)g(address)f(of)i(the)g(en)n(tit)n(y)-7
-b(.)0 2535 y Fg(X509Req)26 b(objects)0 2735 y Fr(X509Req)g(ob)5
+Fm(organizationalUni)o(tN)o(am)o(e)p Fr(.)0 5315 y Fm(commonName)p
+0 5549 3901 4 v 0 5649 a Fg(6)2239 b(3)83 b Fm(OpenSSL)24
+b Fg(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop
+end
+%%Page: 7 7
+TeXDict begin 7 6 bop 208 83 a Fr(The)27 b(common)g(name)h(of)f(the)h
+(en)n(tit)n(y)-7 b(.)37 b Fm(CN)27 b Fr(ma)n(y)f(b)r(e)i(used)g(as)f
+(an)g(alias)g(for)g Fm(commonName)p Fr(.)0 230 y Fm(emailAddress)208
+330 y Fr(The)g(e-mail)g(address)f(of)i(the)g(en)n(tit)n(y)-7
+b(.)0 593 y Fg(X509Req)26 b(objects)0 793 y Fr(X509Req)g(ob)5
b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0
-2882 y Fm(get_pubkey\(\))208 2982 y Fr(Return)h(a)g(PKey)h(ob)5
+940 y Fm(get_pubkey\(\))208 1040 y Fr(Return)h(a)g(PKey)h(ob)5
b(ject)27 b(represen)n(ting)f(the)i(public)g(k)n(ey)f(of)g(the)h
-(certi\034cate)f(request.)0 3129 y Fm(get_subject\(\))208
-3228 y Fr(Return)g(an)h(X509Name)e(ob)5 b(ject)27 b(represen)n(ting)f
+(certi\034cate)f(request.)0 1186 y Fm(get_subject\(\))208
+1286 y Fr(Return)g(an)h(X509Name)e(ob)5 b(ject)27 b(represen)n(ting)f
(the)i(sub)5 b(ject)28 b(of)f(the)h(certi\034cate.)0
-3375 y Fm(set_pubkey\()p Fd(pkey)7 b Fm(\))208 3475 y
+1433 y Fm(set_pubkey\()p Fd(pkey)7 b Fm(\))208 1532 y
Fr(Set)28 b(the)f(public)h(k)n(ey)f(of)h(the)g(certi\034cate)f(request)
-g(to)g Fd(pkey)7 b Fr(.)0 3622 y Fm(sign\()p Fd(pkey,)29
-b(digest)8 b Fm(\))208 3721 y Fr(Sign)36 b(the)g(certi\034cate)g
+g(to)g Fd(pkey)7 b Fr(.)0 1679 y Fm(sign\()p Fd(pkey,)29
+b(digest)8 b Fm(\))208 1779 y Fr(Sign)36 b(the)g(certi\034cate)g
(request,)h(using)f(the)g(k)n(ey)h Fd(pkey)45 b Fr(and)36
b(the)g(message)f(digest)g(algorithm)g(iden)n(ti\034ed)i(b)n(y)f(the)
-208 3821 y(string)28 b Fd(digest)8 b Fr(.)0 3968 y Fm(verify\()p
-Fd(pkey)f Fm(\))208 4068 y Fr(V)-7 b(erify)27 b(a)g(certi\034cate)g
+208 1879 y(string)28 b Fd(digest)8 b Fr(.)0 2025 y Fm(verify\()p
+Fd(pkey)f Fm(\))208 2125 y Fr(V)-7 b(erify)27 b(a)g(certi\034cate)g
(request)g(using)g(the)h(public)g(k)n(ey)g Fd(pkey)7
-b Fr(.)0 4331 y Fg(X509Sto)n(re)26 b(objects)0 4531 y
+b Fr(.)0 2388 y Fg(X509Sto)n(re)26 b(objects)0 2589 y
Fr(The)i(X509Store)d(ob)5 b(ject)28 b(has)f(curren)n(tly)f(just)i(one)g
-(metho)r(d:)0 4678 y Fm(add_cert\()p Fd(c)l(ert)8 b Fm(\))208
-4778 y Fr(A)n(dd)27 b(the)h(certi\034cate)f Fd(c)l(ert)36
-b Fr(to)27 b(the)h(certi\034cate)f(store.)0 5041 y Fg(PKey)g(objects)0
-5241 y Fr(The)h(PKey)f(ob)5 b(ject)27 b(has)g(the)h(follo)n(wing)f
-(metho)r(ds:)p 0 5549 3901 4 v 0 5649 a Fg(6)2239 b(3)83
-b Fm(OpenSSL)24 b Fg(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p
-eop end
-%%Page: 7 7
-TeXDict begin 7 6 bop 0 83 a Fm(bits\(\))208 183 y Fr(Return)27
-b(the)h(n)n(um)n(b)r(er)f(of)h(bits)g(of)f(the)h(k)n(ey)-7
-b(.)0 330 y Fm(generate_key\()p Fd(typ)l(e,)25 b(bits)7
-b Fm(\))208 429 y Fr(Generate)22 b(a)h(public/priv)-5
-b(ate)23 b(k)n(ey)f(pair)h(of)g(the)h(t)n(yp)r(e)f Fd(typ)l(e)30
-b Fr(\(one)23 b(of)30 b Fm(TYPE_RSA)19 b Fr(and)24 b
-Fm(TYPE_DSA)p Fr(\))c(with)j(the)h(size)f Fd(bits)7 b
-Fr(.)0 576 y Fm(type\(\))208 676 y Fr(Return)27 b(the)h(t)n(yp)r(e)g
-(of)f(the)h(k)n(ey)-7 b(.)0 939 y Fg(PK)n(CS7)27 b(objects)0
-1139 y Fr(PK)n(CS7)g(ob)5 b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n(wing)
-f(metho)r(ds:)0 1286 y Fm(type_is_signed\(\))208 1386
-y Fr(FIXME)0 1532 y Fm(type_is_envelope)o(d\()o(\))208
-1632 y Fr(FIXME)0 1779 y Fm(type_is_signedAn)o(dE)o(nve)o(lo)o(pe)o
-(d\(\))208 1879 y Fr(FIXME)0 2025 y Fm(type_is_data\(\))208
-2125 y Fr(FIXME)0 2272 y Fm(get_type_name\(\))208 2372
-y Fr(Get)h(the)f(t)n(yp)r(e)h(name)g(of)f(the)h(PK)n(CS7.)0
-2635 y Fg(PK)n(CS12)e(objects)0 2835 y Fr(PK)n(CS12)g(ob)5
+(metho)r(d:)0 2735 y Fm(add_cert\()p Fd(c)l(ert)8 b Fm(\))208
+2835 y Fr(A)n(dd)27 b(the)h(certi\034cate)f Fd(c)l(ert)36
+b Fr(to)27 b(the)h(certi\034cate)f(store.)0 3098 y Fg(PKey)g(objects)0
+3299 y Fr(The)h(PKey)f(ob)5 b(ject)27 b(has)g(the)h(follo)n(wing)f
+(metho)r(ds:)0 3445 y Fm(bits\(\))208 3545 y Fr(Return)g(the)h(n)n(um)n
+(b)r(er)f(of)h(bits)g(of)f(the)h(k)n(ey)-7 b(.)0 3692
+y Fm(generate_key\()p Fd(typ)l(e,)25 b(bits)7 b Fm(\))208
+3792 y Fr(Generate)22 b(a)h(public/priv)-5 b(ate)23 b(k)n(ey)f(pair)h
+(of)g(the)h(t)n(yp)r(e)f Fd(typ)l(e)30 b Fr(\(one)23
+b(of)30 b Fm(TYPE_RSA)19 b Fr(and)24 b Fm(TYPE_DSA)p
+Fr(\))c(with)j(the)h(size)f Fd(bits)7 b Fr(.)0 3938 y
+Fm(type\(\))208 4038 y Fr(Return)27 b(the)h(t)n(yp)r(e)g(of)f(the)h(k)n
+(ey)-7 b(.)0 4301 y Fg(PK)n(CS7)27 b(objects)0 4502 y
+Fr(PK)n(CS7)g(ob)5 b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n(wing)f
+(metho)r(ds:)0 4648 y Fm(type_is_signed\(\))208 4748
+y Fr(FIXME)0 4895 y Fm(type_is_envelope)o(d\()o(\))208
+4995 y Fr(FIXME)0 5141 y Fm(type_is_signedAn)o(dE)o(nve)o(lo)o(pe)o
+(d\(\))208 5241 y Fr(FIXME)p 0 5549 3901 4 v 0 5649 a
+Fg(3.1)82 b Fm(crypto)25 b Fg(\026)j(Generic)g(cryptographic)e(mo)r
+(dule)2234 b(7)p eop end
+%%Page: 8 8
+TeXDict begin 8 7 bop 0 83 a Fm(type_is_data\(\))208
+183 y Fr(FIXME)0 330 y Fm(get_type_name\(\))208 429 y
+Fr(Get)28 b(the)f(t)n(yp)r(e)h(name)g(of)f(the)h(PK)n(CS7.)0
+692 y Fg(PK)n(CS12)e(objects)0 893 y Fr(PK)n(CS12)g(ob)5
b(jects)28 b(ha)n(v)n(e)e(the)i(follo)n(wing)e(metho)r(ds:)0
-2982 y Fm(get_certificate\()o(\))208 3082 y Fr(Return)h(certi\034cate)g
-(p)r(ortion)g(of)h(the)g(PK)n(CS12)e(structure.)0 3228
-y Fm(get_privatekey\(\))208 3328 y Fr(Return)h(priv)-5
+1040 y Fm(get_certificate\()o(\))208 1139 y Fr(Return)h(certi\034cate)g
+(p)r(ortion)g(of)h(the)g(PK)n(CS12)e(structure.)0 1286
+y Fm(get_privatekey\(\))208 1386 y Fr(Return)h(priv)-5
b(ate)27 b(k)n(ey)g(p)r(ortion)g(of)h(the)g(PK)n(CS12)e(structure)0
-3475 y Fm(get_ca_certifica)o(te)o(s\(\))208 3575 y Fr(Return)k(CA)g
+1532 y Fm(get_ca_certifica)o(te)o(s\(\))208 1632 y Fr(Return)k(CA)g
(certi\034cates)f(within)i(the)f(PK)n(CS12)f(ob)5 b(ject)30
b(as)f(a)g(tuple.)45 b(Returns)30 b(None)g(if)g(no)g(CA)g
-(certi\034cates)f(are)208 3674 y(presen)n(t.)0 3937 y
-Fg(X509Extension)c(objects)0 4138 y Fr(X509Extension)h(ob)5
+(certi\034cates)f(are)208 1732 y(presen)n(t.)0 1995 y
+Fg(X509Extension)c(objects)0 2195 y Fr(X509Extension)h(ob)5
b(jects)27 b(curren)n(tly)g(only)g(ha)n(v)n(e)f(one)i(metho)r(d:)0
-4285 y Fm(get_critical\(\))208 4384 y Fr(Return)f(the)h(critical)f
-(\034eld)h(of)f(the)h(extension)f(ob)5 b(ject.)0 4647
-y Fg(Netscap)r(eSPKI)27 b(objects)0 4848 y Fr(Netscap)r(eSPKI)h(ob)5
+2342 y Fm(get_critical\(\))208 2442 y Fr(Return)f(the)h(critical)f
+(\034eld)h(of)f(the)h(extension)f(ob)5 b(ject.)0 2705
+y Fg(Netscap)r(eSPKI)27 b(objects)0 2905 y Fr(Netscap)r(eSPKI)h(ob)5
b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n(wing)e(metho)r(ds:)0
-4995 y Fm(b64_encode\(\))208 5094 y Fr(Return)h(a)g(base64-enco)r(ded)f
+3052 y Fm(b64_encode\(\))208 3152 y Fr(Return)h(a)g(base64-enco)r(ded)f
(string)h(represen)n(tation)e(of)j(the)g(ob)5 b(ject.)0
-5241 y Fm(get_pubkey\(\))208 5341 y Fr(Return)27 b(the)h(public)g(k)n
-(ey)f(of)h(ob)5 b(ject.)p 0 5549 3901 4 v 0 5649 a Fg(3.1)82
-b Fm(crypto)25 b Fg(\026)j(Generic)g(cryptographic)e(mo)r(dule)2234
-b(7)p eop end
-%%Page: 8 8
-TeXDict begin 8 7 bop 0 83 a Fm(set_pubkey\()p Fd(key)7
-b Fm(\))208 183 y Fr(Set)28 b(the)f(public)h(k)n(ey)f(of)h(the)g(ob)5
-b(ject)27 b(to)h Fd(key)7 b Fr(.)0 330 y Fm(sign\()p
-Fd(key,)29 b(digest_name)6 b Fm(\))208 429 y Fr(Sign)27
+3299 y Fm(get_pubkey\(\))208 3398 y Fr(Return)27 b(the)h(public)g(k)n
+(ey)f(of)h(ob)5 b(ject.)0 3545 y Fm(set_pubkey\()p Fd(key)i
+Fm(\))208 3645 y Fr(Set)28 b(the)f(public)h(k)n(ey)f(of)h(the)g(ob)5
+b(ject)27 b(to)h Fd(key)7 b Fr(.)0 3792 y Fm(sign\()p
+Fd(key,)29 b(digest_name)6 b Fm(\))208 3891 y Fr(Sign)27
b(the)h(Netscap)r(eSPKI)g(ob)5 b(ject)27 b(using)g(the)h(giv)n(en)f
-Fd(key)35 b Fr(and)28 b Fd(digest_name)6 b Fr(.)0 576
-y Fm(verify\()p Fd(key)h Fm(\))208 676 y Fr(V)-7 b(erify)27
+Fd(key)35 b Fr(and)28 b Fd(digest_name)6 b Fr(.)0 4038
+y Fm(verify\()p Fd(key)h Fm(\))208 4138 y Fr(V)-7 b(erify)27
b(the)h(Netscap)r(eSPKI)g(ob)5 b(ject)27 b(using)g(the)h(giv)n(en)f
-Fd(key)7 b Fr(.)0 955 y Fk(3.2)97 b Fe(rand)34 b Fk(\026)e(An)h
+Fd(key)7 b Fr(.)0 4417 y Fk(3.2)97 b Fe(rand)34 b Fk(\026)e(An)h
(interface)g(to)g(the)g(Op)s(enSSL)f(pseudo)h(random)g(numb)s(er)g
-(generato)m(r)0 1156 y Fr(This)28 b(mo)r(dule)f(handles)h(the)f(Op)r
+(generato)m(r)0 4618 y Fr(This)28 b(mo)r(dule)f(handles)h(the)f(Op)r
(enSSL)h(pseudo)f(random)g(n)n(um)n(b)r(er)g(generator)f(\(PRNG\))j
-(and)e(declares)f(the)i(follo)n(wing:)0 1303 y Fm(add\()p
-Fd(string,)g(entr)l(opy)7 b Fm(\))208 1402 y Fr(Mix)22
+(and)e(declares)f(the)i(follo)n(wing:)0 4765 y Fm(add\()p
+Fd(string,)g(entr)l(opy)7 b Fm(\))208 4864 y Fr(Mix)22
b(b)n(ytes)g(from)g Fd(string)30 b Fr(in)n(to)22 b(the)h(PRNG)h(state.)
35 b(The)22 b Fd(entr)l(opy)30 b Fr(argumen)n(t)22 b(is)g(\(the)h(lo)n
(w)n(er)e(b)r(ound)i(of)6 b(\))23 b(an)f(estimate)208
-1502 y(of)f(ho)n(w)g(m)n(uc)n(h)h(randomness)e(is)h(con)n(tained)g(in)h
+4964 y(of)f(ho)n(w)g(m)n(uc)n(h)h(randomness)e(is)h(con)n(tained)g(in)h
Fd(string)7 b Fr(,)23 b(measured)e(in)h(b)n(ytes.)34
b(F)-7 b(or)21 b(more)g(information,)h(see)g(e.g.)34
-b(RF)n(C)208 1601 y(1750.)0 1748 y Fm(egd\()p Fd(p)l(ath)6
-b Fc([)p Fd(,)29 b(bytes)19 b Fc(])p Fm(\))208 1848 y
-Fr(Query)29 b(the)j(En)n(trop)n(y)e(Gathering)g(Daemon)1629
-1818 y Fl(3)1697 1848 y Fr(on)h(so)r(c)n(k)n(et)f Fd(p)l(ath)38
-b Fr(for)30 b Fd(bytes)38 b Fr(b)n(ytes)31 b(of)g(random)f(data)g(and)h
-(and)g(uses)208 1948 y Fm(add)26 b Fr(to)h(seed)h(the)g(PRNG.)g(The)g
-(default)g(v)-5 b(alue)27 b(of)34 b Fd(bytes)h Fr(is)27
-b(255.)0 2109 y Fm(load_file\()p Fd(p)l(ath)6 b Fc([)p
-Fd(,)26 b(bytes)19 b Fc(])p Fm(\))208 2208 y Fr(Read)29
-b Fd(bytes)38 b Fr(b)n(ytes)30 b(\(or)f(all)h(of)g(it,)i(if)37
-b Fd(bytes)g Fr(is)31 b(negativ)n(e\))e(of)h(data)g(from)g(the)g
-(\034le)h Fd(p)l(ath)37 b Fr(to)30 b(seed)g(the)h(PRNG.)g(The)208
-2308 y(default)d(v)-5 b(alue)27 b(of)34 b Fd(bytes)h
-Fr(is)27 b(-1.)0 2455 y Fm(screen\(\))208 2555 y Fr(A)n(dd)g(the)h
-(curren)n(t)f(con)n(ten)n(ts)g(of)g(the)h(screen)f(to)g(the)h(PRNG)h
-(state.)37 b(A)-9 b(v)k(ailabilit)n(y:)36 b(Windo)n(ws.)0
-2701 y Fm(seed\()p Fd(string)7 b Fm(\))208 2801 y Fr(This)27
+b(RF)n(C)208 5064 y(1750.)0 5210 y Fm(egd\()p Fd(p)l(ath)6
+b Fc([)p Fd(,)29 b(bytes)19 b Fc(])p Fm(\))p 0 5549 3901
+4 v 0 5649 a Fg(8)2239 b(3)83 b Fm(OpenSSL)24 b Fg(\026)k(Python)f
+(interface)h(to)f(Op)r(enSSL)p eop end
+%%Page: 9 9
+TeXDict begin 9 8 bop 208 83 a Fr(Query)29 b(the)j(En)n(trop)n(y)e
+(Gathering)g(Daemon)1629 53 y Fl(3)1697 83 y Fr(on)h(so)r(c)n(k)n(et)f
+Fd(p)l(ath)38 b Fr(for)30 b Fd(bytes)38 b Fr(b)n(ytes)31
+b(of)g(random)f(data)g(and)h(and)g(uses)208 183 y Fm(add)26
+b Fr(to)h(seed)h(the)g(PRNG.)g(The)g(default)g(v)-5 b(alue)27
+b(of)34 b Fd(bytes)h Fr(is)27 b(255.)0 344 y Fm(load_file\()p
+Fd(p)l(ath)6 b Fc([)p Fd(,)26 b(bytes)19 b Fc(])p Fm(\))208
+444 y Fr(Read)29 b Fd(bytes)38 b Fr(b)n(ytes)30 b(\(or)f(all)h(of)g
+(it,)i(if)37 b Fd(bytes)g Fr(is)31 b(negativ)n(e\))e(of)h(data)g(from)g
+(the)g(\034le)h Fd(p)l(ath)37 b Fr(to)30 b(seed)g(the)h(PRNG.)g(The)208
+543 y(default)d(v)-5 b(alue)27 b(of)34 b Fd(bytes)h Fr(is)27
+b(-1.)0 690 y Fm(screen\(\))208 790 y Fr(A)n(dd)g(the)h(curren)n(t)f
+(con)n(ten)n(ts)g(of)g(the)h(screen)f(to)g(the)h(PRNG)h(state.)37
+b(A)-9 b(v)k(ailabilit)n(y:)36 b(Windo)n(ws.)0 937 y
+Fm(seed\()p Fd(string)7 b Fm(\))208 1036 y Fr(This)27
b(is)h(equiv)-5 b(alen)n(t)27 b(to)g(calling)h Fm(add)f
Fr(with)h Fd(entr)l(opy)35 b Fr(as)27 b(the)h(length)f(of)h(the)g
-(string.)0 2948 y Fm(status\(\))208 3048 y Fr(Returns)f(true)g(if)i
+(string.)0 1183 y Fm(status\(\))208 1283 y Fr(Returns)f(true)g(if)i
(the)e(PRNG)i(has)e(b)r(een)h(seeded)f(with)h(enough)f(data,)g(and)h
-(false)f(otherwise.)0 3194 y Fm(write_file\()p Fd(p)l(ath)6
-b Fm(\))208 3294 y Fr(W)-7 b(rite)34 b(a)g(n)n(um)n(b)r(er)g(of)h
+(false)f(otherwise.)0 1430 y Fm(write_file\()p Fd(p)l(ath)6
+b Fm(\))208 1529 y Fr(W)-7 b(rite)34 b(a)g(n)n(um)n(b)r(er)g(of)h
(random)e(b)n(ytes)h(\(curren)n(tly)g(1024\))f(to)h(the)h(\034le)f
Fd(p)l(ath)6 b Fr(.)59 b(This)34 b(\034le)h(can)f(then)g(b)r(e)h(used)g
-(with)208 3394 y Fm(load_file)23 b Fr(to)28 b(seed)f(the)h(PRNG)h
-(again.)0 3673 y Fk(3.3)97 b Fe(SSL)33 b Fk(\026)f(An)h(interface)h(to)
+(with)208 1629 y Fm(load_file)23 b Fr(to)28 b(seed)f(the)h(PRNG)h
+(again.)0 1908 y Fk(3.3)97 b Fe(SSL)33 b Fk(\026)f(An)h(interface)h(to)
e(the)h(SSL-sp)s(eci\034c)h(pa)m(rts)f(of)f(Op)s(enSSL)0
-3874 y Fr(This)c(mo)r(dule)f(handles)h(things)f(sp)r(eci\034c)h(to)f
+2109 y Fr(This)c(mo)r(dule)f(handles)h(things)f(sp)r(eci\034c)h(to)f
(SSL.)h(There)f(are)f(t)n(w)n(o)h(ob)5 b(jects)27 b(de\034ned:)38
-b(Con)n(text,)27 b(Connection.)0 4021 y Fm(SSLv2_METHOD)0
-4120 y(SSLv3_METHOD)0 4220 y(SSLv23_METHOD)0 4320 y(TLSv1_METHOD)208
-4419 y Fr(These)g(constan)n(ts)f(represen)n(t)h(the)h(di\033eren)n(t)f
+b(Con)n(text,)27 b(Connection.)0 2256 y Fm(SSLv2_METHOD)0
+2355 y(SSLv3_METHOD)0 2455 y(SSLv23_METHOD)0 2555 y(TLSv1_METHOD)208
+2654 y Fr(These)g(constan)n(ts)f(represen)n(t)h(the)h(di\033eren)n(t)f
(SSL)h(metho)r(ds)g(to)f(use)h(when)f(creating)g(a)g(con)n(text)g(ob)5
-b(ject.)0 4566 y Fm(VERIFY_NONE)0 4666 y(VERIFY_PEER)0
-4765 y(VERIFY_FAIL_IF_N)o(O_)o(PEE)o(R_)o(CE)o(RT)208
-4865 y Fr(These)27 b(constan)n(ts)f(represen)n(t)h(the)h(v)n
+b(ject.)0 2801 y Fm(VERIFY_NONE)0 2901 y(VERIFY_PEER)0
+3000 y(VERIFY_FAIL_IF_N)o(O_)o(PEE)o(R_)o(CE)o(RT)208
+3100 y Fr(These)27 b(constan)n(ts)f(represen)n(t)h(the)h(v)n
(eri\034cation)e(mo)r(de)h(used)h(b)n(y)f(the)h(Con)n(text)f(ob)5
-b(ject's)27 b Fm(set_verify)d Fr(metho)r(d.)0 5012 y
-Fm(FILETYPE_PEM)0 5111 y(FILETYPE_ASN1)208 5211 y Fr(File)41
+b(ject's)27 b Fm(set_verify)d Fr(metho)r(d.)0 3247 y
+Fm(FILETYPE_PEM)0 3346 y(FILETYPE_ASN1)208 3446 y Fr(File)41
b(t)n(yp)r(e)g(constan)n(ts)f(used)h(with)g(the)h Fm(use_certificate)o
(_f)o(ile)34 b Fr(and)41 b Fm(use_privatekey_f)o(il)o(e)35
-b Fr(metho)r(ds)41 b(of)p 0 5283 1560 4 v 92 5337 a Fi(3)127
-5360 y Fh(See)24 b Fq(http://www.lotha)n(r.com/tech/crypto/)p
-0 5549 3901 4 v 0 5649 a Fg(8)2239 b(3)83 b Fm(OpenSSL)24
-b Fg(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop
-end
-%%Page: 9 9
-TeXDict begin 9 8 bop 208 83 a Fr(Con)n(text)27 b(ob)5
-b(jects.)0 230 y Fm(OP_SINGLE_DH_USE)0 330 y(OP_EPHEMERAL_RSA)0
-429 y(OP_NO_SSLv2)0 529 y(OP_NO_SSLv3)0 628 y(OP_NO_TLSv1)208
-728 y Fr(Constan)n(ts)30 b(used)i(with)g Fm(set_options)26
+b Fr(metho)r(ds)41 b(of)208 3546 y(Con)n(text)27 b(ob)5
+b(jects.)0 3693 y Fm(OP_SINGLE_DH_USE)0 3792 y(OP_EPHEMERAL_RSA)0
+3892 y(OP_NO_SSLv2)0 3991 y(OP_NO_SSLv3)0 4091 y(OP_NO_TLSv1)208
+4191 y Fr(Constan)n(ts)30 b(used)i(with)g Fm(set_options)26
b Fr(of)32 b(Con)n(text)f(ob)5 b(jects.)48 b Fm(OP_SINGLE_DH_USE)25
-b Fr(means)31 b(to)g(alw)n(a)n(ys)f(create)g(a)208 828
+b Fr(means)31 b(to)g(alw)n(a)n(ys)f(create)g(a)208 4290
y(new)19 b(k)n(ey)f(when)h(using)g(ephemeral)f(Di\036e-Hellman.)34
b Fm(OP_EPHEMERAL_RSA)13 b Fr(means)18 b(to)h(alw)n(a)n(ys)e(use)i
-(ephemeral)g(RSA)208 927 y(k)n(eys)f(when)h(doing)f(RSA)i(op)r
+(ephemeral)g(RSA)208 4390 y(k)n(eys)f(when)h(doing)f(RSA)i(op)r
(erations.)33 b Fm(OP_NO_SSLv2)p Fr(,)16 b Fm(OP_NO_SSLv3)f
Fr(and)k Fm(OP_NO_TLSv1)14 b Fr(means)19 b(to)g(disable)f(those)208
-1027 y(sp)r(eci\034c)29 b(proto)r(cols.)39 b(This)29
+4490 y(sp)r(eci\034c)29 b(proto)r(cols.)39 b(This)29
b(is)g(in)n(teresting)g(if)g(y)n(ou're)f(using)g(e.g.)41
b Fm(SSLv23_METHOD)24 b Fr(to)29 b(get)g(an)f(SSLv2-compatible)208
-1127 y(handshak)n(e,)e(but)i(don't)g(w)n(an)n(t)f(to)g(use)h(SSLv2.)0
-1273 y Fm(ContextType)208 1373 y Fr(A)f(Python)h(t)n(yp)r(e)g(ob)5
+4589 y(handshak)n(e,)e(but)i(don't)g(w)n(an)n(t)f(to)g(use)h(SSLv2.)0
+4736 y Fm(ContextType)208 4836 y Fr(A)f(Python)h(t)n(yp)r(e)g(ob)5
b(ject)28 b(represen)n(ting)d(the)j(Con)n(text)g(ob)5
-b(ject)27 b(t)n(yp)r(e.)0 1520 y Fm(Context\()p Fd(metho)l(d)9
-b Fm(\))208 1620 y Fr(F)-7 b(actory)34 b(function)i(that)g(creates)f(a)
+b(ject)27 b(t)n(yp)r(e.)0 4983 y Fm(Context\()p Fd(metho)l(d)9
+b Fm(\))208 5082 y Fr(F)-7 b(actory)34 b(function)i(that)g(creates)f(a)
g(new)h(Con)n(text)f(ob)5 b(ject)36 b(giv)n(en)e(an)i(SSL)g(metho)r(d.)
-61 b(The)36 b(metho)r(d)g(should)g(b)r(e)208 1719 y Fm(SSLv2_METHOD)p
+61 b(The)36 b(metho)r(d)g(should)g(b)r(e)208 5182 y Fm(SSLv2_METHOD)p
Fr(,)22 b Fm(SSLv3_METHOD)p Fr(,)h Fm(SSLv23_METHOD)f
-Fr(or)27 b Fm(TLSv1_METHOD)p Fr(.)0 1866 y Fm(ConnectionType)208
-1966 y Fr(A)g(Python)h(t)n(yp)r(e)g(ob)5 b(ject)28 b(represen)n(ting)d
-(the)j(Connection)f(ob)5 b(ject)28 b(t)n(yp)r(e.)0 2113
+Fr(or)27 b Fm(TLSv1_METHOD)p Fr(.)p 0 5251 1560 4 v 92
+5305 a Fi(3)127 5328 y Fh(See)d Fq(http://www.lotha)n
+(r.com/tech/crypto/)p 0 5549 3901 4 v 0 5649 a Fg(3.3)82
+b Fm(SSL)26 b Fg(\026)i(An)g(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h
+(pa)n(rts)f(of)h(Op)r(enSSL)1652 b(9)p eop end
+%%Page: 10 10
+TeXDict begin 10 9 bop 0 83 a Fm(ConnectionType)208 183
+y Fr(A)27 b(Python)h(t)n(yp)r(e)g(ob)5 b(ject)28 b(represen)n(ting)d
+(the)j(Connection)f(ob)5 b(ject)28 b(t)n(yp)r(e.)0 330
y Fm(Connection\()p Fd(c)l(ontext,)c(so)l(cket)8 b Fm(\))208
-2212 y Fr(F)-7 b(actory)26 b(fucnction)i(that)g(creates)e(a)h(new)h
+429 y Fr(F)-7 b(actory)26 b(fucnction)i(that)g(creates)e(a)h(new)h
(Connection)f(ob)5 b(ject)27 b(giv)n(en)g(an)g(SSL)h(con)n(text)f(and)h
-(a)f(so)r(c)n(k)n(et)3538 2182 y Fl(4)3603 2212 y Fr(ob)5
-b(ject.)0 2359 y Fn(exception)32 b Fm(Error)208 2459
-y Fr(This)i(exception)g(is)h(used)f(as)g(a)h(base)e(class)h(for)g(the)h
+(a)f(so)r(c)n(k)n(et)3538 399 y Fl(4)3603 429 y Fr(ob)5
+b(ject.)0 576 y Fn(exception)32 b Fm(Error)208 676 y
+Fr(This)i(exception)g(is)h(used)f(as)g(a)h(base)e(class)h(for)g(the)h
(other)f(SSL-related)g(exceptions,)i(but)f(ma)n(y)f(also)f(b)r(e)i
-(raised)208 2558 y(directly)-7 b(.)208 2691 y(Whenev)n(er)36
+(raised)208 775 y(directly)-7 b(.)208 908 y(Whenev)n(er)36
b(this)h(exception)g(is)g(raised)f(directly)-7 b(,)40
b(it)d(has)g(a)f(list)i(of)f(error)e(messages)g(from)i(the)h(Op)r
-(enSSL)f(error)208 2791 y(queue,)k(where)d(eac)n(h)f(item)i(is)g(a)f
+(enSSL)f(error)208 1008 y(queue,)k(where)d(eac)n(h)f(item)i(is)g(a)f
(tuple)h Fm(\()p Fd(lib)5 b Fm(,)44 b Fd(function)6 b
Fm(,)43 b Fd(r)l(e)l(ason)6 b Fm(\))p Fr(.)70 b(Here)38
b Fd(lib)5 b Fr(,)43 b Fd(function)h Fr(and)39 b Fd(r)l(e)l(ason)45
-b Fr(are)37 b(all)208 2890 y(strings,)26 b(describing)h(where)g(and)g
+b Fr(are)37 b(all)208 1107 y(strings,)26 b(describing)h(where)g(and)g
(what)h(the)g(problem)f(is.)36 b(See)28 b Fd(err)p Fr(\(3\))g(for)f
-(more)g(information.)0 3037 y Fn(exception)32 b Fm(ZeroReturnError)208
-3137 y Fr(This)g(exception)g(matc)n(hes)g(the)h(error)d(return)i(co)r
+(more)g(information.)0 1254 y Fn(exception)32 b Fm(ZeroReturnError)208
+1354 y Fr(This)g(exception)g(matc)n(hes)g(the)h(error)d(return)i(co)r
(de)h Fm(SSL_ERROR_ZERO_)o(RE)o(TUR)o(N)p Fr(,)26 b(and)33
-b(is)f(raised)f(when)i(the)g(SSL)208 3236 y(Connection)c(has)g(b)r(een)
+b(is)f(raised)f(when)i(the)g(SSL)208 1453 y(Connection)c(has)g(b)r(een)
h(closed.)43 b(In)29 b(SSL)h(3.0)f(and)h(TLS)g(1.0,)f(this)h(only)f(o)r
(ccurs)g(if)h(a)g(closure)e(alert)h(has)g(o)r(ccurred)208
-3336 y(in)g(the)g(proto)r(col,)f(i.e.)41 b(the)29 b(connection)f(has)g
+1553 y(in)g(the)g(proto)r(col,)f(i.e.)41 b(the)29 b(connection)f(has)g
(b)r(een)i(closed)e(cleanly)-7 b(.)40 b(Note)29 b(that)g(this)g(do)r
-(es)f(not)h(necessarily)e(mean)208 3436 y(that)g(the)h(transp)r(ort)f
+(es)f(not)h(necessarily)e(mean)208 1653 y(that)g(the)h(transp)r(ort)f
(la)n(y)n(er)f(\(e.g.)36 b(a)28 b(so)r(c)n(k)n(et\))e(has)h(b)r(een)h
-(closed.)208 3569 y(It)k(ma)n(y)f(seem)h(a)f(little)i(strange)e(that)h
+(closed.)208 1786 y(It)k(ma)n(y)f(seem)h(a)f(little)i(strange)e(that)h
(this)g(is)g(an)g(exception,)g(but)h(it)f(do)r(es)g(matc)n(h)g(an)f
-Fm(SSL_ERROR)e Fr(co)r(de,)j(and)g(is)208 3668 y(v)n(ery)26
-b(con)n(v)n(enien)n(t.)0 3815 y Fn(exception)32 b Fm(WantReadError)208
-3915 y Fr(The)i(op)r(eration)e(did)j(not)f(complete;)j(the)d(same)g
+Fm(SSL_ERROR)e Fr(co)r(de,)j(and)g(is)208 1885 y(v)n(ery)26
+b(con)n(v)n(enien)n(t.)0 2032 y Fn(exception)32 b Fm(WantReadError)208
+2132 y Fr(The)i(op)r(eration)e(did)j(not)f(complete;)j(the)d(same)g
(I/O)f(metho)r(d)h(should)g(b)r(e)g(called)g(again)f(later,)i(with)f
-(the)h(same)208 4014 y(argumen)n(ts.)g(An)n(y)28 b(I/O)e(metho)r(d)i
+(the)h(same)208 2231 y(argumen)n(ts.)g(An)n(y)28 b(I/O)e(metho)r(d)i
(can)f(lead)h(to)f(this)h(since)f(new)h(handshak)n(es)e(can)h(o)r(ccur)
-g(at)g(an)n(y)g(time.)0 4161 y Fn(exception)32 b Fm(WantWriteError)208
-4261 y Fr(See)27 b Fm(WantReadError)p Fr(.)0 4408 y Fn(exception)32
-b Fm(WantX509LookupE)o(rr)o(or)208 4507 y Fr(The)24 b(op)r(eration)g
+g(at)g(an)n(y)g(time.)0 2378 y Fn(exception)32 b Fm(WantWriteError)208
+2478 y Fr(See)27 b Fm(WantReadError)p Fr(.)0 2625 y Fn(exception)32
+b Fm(WantX509LookupE)o(rr)o(or)208 2724 y Fr(The)24 b(op)r(eration)g
(did)h(not)g(complete)f(b)r(ecause)g(an)h(application)f(callbac)n(k)f
(has)h(ask)n(ed)g(to)g(b)r(e)h(called)g(again.)34 b(The)25
-b(I/O)208 4607 y(metho)r(d)f(should)h(b)r(e)f(called)g(again)g(later,)g
+b(I/O)208 2824 y(metho)r(d)f(should)h(b)r(e)f(called)g(again)g(later,)g
(with)h(the)g(same)e(argumen)n(ts.)35 b(Note:)g(This)24
-b(w)n(on't)h(o)r(ccur)e(in)i(this)g(v)n(ersion,)208 4707
+b(w)n(on't)h(o)r(ccur)e(in)i(this)g(v)n(ersion,)208 2924
y(as)h(there)i(are)e(no)i(suc)n(h)f(callbac)n(ks)f(in)i(this)f(v)n
-(ersion.)0 4853 y Fn(exception)32 b Fm(SysCallError)208
-4953 y Fr(The)25 b Fm(SysCallError)20 b Fr(o)r(ccurs)k(when)i(there's)e
+(ersion.)0 3070 y Fn(exception)32 b Fm(SysCallError)208
+3170 y Fr(The)25 b Fm(SysCallError)20 b Fr(o)r(ccurs)k(when)i(there's)e
(an)h(I/O)g(error)e(and)i(Op)r(enSSL's)g(error)e(queue)i(do)r(es)g(not)
-g(con)n(tain)g(an)n(y)208 5053 y(information.)59 b(This)36
+g(con)n(tain)g(an)n(y)208 3270 y(information.)59 b(This)36
b(can)f(mean)g(t)n(w)n(o)g(things:)52 b(An)36 b(error)d(in)j(the)g
(transp)r(ort)e(proto)r(col,)i(or)f(an)g(end)h(of)f(\034le)h(that)208
-5152 y(violates)26 b(the)i(proto)r(col.)36 b(The)27 b(parameter)f(to)i
+3369 y(violates)26 b(the)i(proto)r(col.)36 b(The)27 b(parameter)f(to)i
(the)g(exception)f(is)g(alw)n(a)n(ys)f(a)h(pair)g Fm(\()p
-Fd(errnum)6 b Fm(,)42 b Fd(errstr)9 b Fm(\))p Fr(.)p
-0 5222 1560 4 v 92 5275 a Fi(4)127 5299 y Fh(A)n(ctually)-6
+Fd(errnum)6 b Fm(,)42 b Fd(errstr)9 b Fm(\))p Fr(.)0
+3632 y Fg(Context)27 b(objects)0 3833 y Fr(Con)n(text)g(ob)5
+b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0
+3980 y Fm(check_privatekey)o(\(\))208 4096 y Fr(Chec)n(k)k(if)i(the)g
+(priv)-5 b(ate)31 b(k)n(ey)f(\(loaded)h(with)h Fm(use_privatekey)p
+Fc([)p Fm(_)o(fi)o(le)11 b Fc(])p Fr(\))26 b(matc)n(hes)k(the)i
+(certi\034cate)f(\(loaded)g(with)208 4224 y Fm(use_certificate)o
+Fc([)p Fm(_)o(fil)o(e)11 b Fc(])p Fr(\).)31 b(Returns)d
+Fm(None)e Fr(if)i(they)f(matc)n(h,)h(raises)e Fm(Error)g
+Fr(otherwise.)0 4371 y Fm(get_app_data\(\))208 4470 y
+Fr(Retriev)n(e)g(application)h(data)g(as)g(set)h(b)n(y)g
+Fm(set_app_data)p Fr(.)0 4617 y Fm(get_cert_store\(\))208
+4717 y Fr(Retriev)n(e)34 b(the)i(certi\034cate)f(store)f(\(a)h
+(X509Store)f(ob)5 b(ject\))35 b(that)h(the)f(con)n(text)g(uses.)60
+b(This)35 b(can)g(b)r(e)h(used)f(to)g(add)208 4816 y("trusted")26
+b(certi\034cates)h(without)h(using)f(the.)37 b Fm(load_verify_loca)o
+(tio)o(ns)o(\(\))21 b Fr(metho)r(d.)0 4963 y Fm(get_timeout\(\))208
+5063 y Fr(Retriev)n(e)26 b(session)h(timeout,)h(as)f(set)g(b)n(y)i
+Fm(set_timeout)p Fr(.)j(The)c(default)g(is)f(300)f(seconds.)p
+0 5132 1560 4 v 92 5186 a Fi(4)127 5209 y Fh(A)n(ctually)-6
b(,)25 b(all)e(that)j(is)d(required)j(is)e(an)g(ob)t(ject)h(that)h
Fb(b)l(ehaves)e Fh(lik)n(e)g(a)h(so)r(c)n(k)n(et,)g(y)n(ou)g(could)g
(ev)n(en)g(use)f(\034les,)g(ev)n(en)i(though)f(it'd)f(b)r(e)h(tric)n
-(ky)g(to)0 5377 y(get)g(the)f(handshak)n(es)h(righ)n(t!)p
-0 5549 3901 4 v 0 5649 a Fg(3.3)82 b Fm(SSL)26 b Fg(\026)i(An)g
-(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f(of)h(Op)r(enSSL)
-1652 b(9)p eop end
-%%Page: 10 10
-TeXDict begin 10 9 bop 0 83 a Fg(Context)27 b(objects)0
-283 y Fr(Con)n(text)g(ob)5 b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n
-(wing)e(metho)r(ds:)0 430 y Fm(check_privatekey)o(\(\))208
-547 y Fr(Chec)n(k)k(if)i(the)g(priv)-5 b(ate)31 b(k)n(ey)f(\(loaded)h
-(with)h Fm(use_privatekey)p Fc([)p Fm(_)o(fi)o(le)11
-b Fc(])p Fr(\))26 b(matc)n(hes)k(the)i(certi\034cate)f(\(loaded)g(with)
-208 674 y Fm(use_certificate)o Fc([)p Fm(_)o(fil)o(e)11
-b Fc(])p Fr(\).)31 b(Returns)d Fm(None)e Fr(if)i(they)f(matc)n(h,)h
-(raises)e Fm(Error)g Fr(otherwise.)0 821 y Fm(get_app_data\(\))208
-921 y Fr(Retriev)n(e)g(application)h(data)g(as)g(set)h(b)n(y)g
-Fm(set_app_data)p Fr(.)0 1068 y Fm(get_cert_store\(\))208
-1167 y Fr(Retriev)n(e)34 b(the)i(certi\034cate)f(store)f(\(a)h
-(X509Store)f(ob)5 b(ject\))35 b(that)h(the)f(con)n(text)g(uses.)60
-b(This)35 b(can)g(b)r(e)h(used)f(to)g(add)208 1267 y("trusted")26
-b(certi\034cates)h(without)h(using)f(the.)37 b Fm(load_verify_loca)o
-(tio)o(ns)o(\(\))21 b Fr(metho)r(d.)0 1414 y Fm(get_timeout\(\))208
-1513 y Fr(Retriev)n(e)26 b(session)h(timeout,)h(as)f(set)g(b)n(y)i
-Fm(set_timeout)p Fr(.)j(The)c(default)g(is)f(300)f(seconds.)0
-1660 y Fm(get_verify_depth)o(\(\))208 1760 y Fr(Retriev)n(e)g(the)i
-(Con)n(text)f(ob)5 b(ject's)28 b(v)n(erify)e(depth,)j(as)d(set)i(b)n(y)
-g Fm(set_verify_depth)p Fr(.)0 1907 y Fm(get_verify_mode\()o(\))208
-2006 y Fr(Retriev)n(e)e(the)i(Con)n(text)f(ob)5 b(ject's)28
-b(v)n(erify)e(mo)r(de,)i(as)f(set)h(b)n(y)g Fm(set_verify_mode)p
-Fr(.)0 2153 y Fm(load_client_ca\()p Fd(p)l(em\034le)6
-b Fm(\))208 2253 y Fr(Read)33 b(a)g(\034le)h(with)g(PEM-formatted)g
-(certi\034cates)f(that)h(will)g(b)r(e)g(sen)n(t)f(to)h(the)g(clien)n(t)
-f(when)h(requesting)f(a)g(clien)n(t)208 2353 y(certi\034cate.)0
-2499 y Fm(load_verify_loca)o(ti)o(ons)o(\()p Fd(p)l(em\034le)6
-b Fm(\))208 2599 y Fr(Sp)r(ecify)24 b(where)f(CA)g(certi\034cates)g
-(for)g(v)n(eri\034cation)f(purp)r(oses)h(are)f(lo)r(cated.)35
-b(These)23 b(are)g(trusted)g(certi\034cates.)35 b(Note)208
-2699 y(that)27 b(the)h(certi\034cates)f(ha)n(v)n(e)f(to)i(b)r(e)g(in)g
-(PEM)g(format.)0 2846 y Fm(load_tmp_dh\()p Fd(dh\034le)6
-b Fm(\))208 2945 y Fr(Load)26 b(parameters)g(for)h(Ephemeral)g
-(Di\036e-Hellman)h(from)g Fd(dh\034le)6 b Fr(.)0 3092
-y Fm(set_app_data\()p Fd(data)g Fm(\))208 3192 y Fr(Asso)r(ciate)25
-b Fd(data)33 b Fr(with)27 b(this)f(Con)n(text)f(ob)5
-b(ject.)36 b Fd(data)e Fr(can)25 b(b)r(e)i(retriev)n(ed)d(later)i
-(using)f(the)i Fm(get_app_data)21 b Fr(metho)r(d.)0 3339
-y Fm(set_cipher_list\()o Fd(ciphers)7 b Fm(\))208 3438
-y Fr(Set)28 b(the)g(list)h(of)f(ciphers)f(to)h(b)r(e)g(used)g(in)g
-(this)h(con)n(text.)37 b(See)28 b(the)h(Op)r(enSSL)f(man)n(ual)f(for)h
-(more)f(information)g(\(e.g.)208 3538 y(ciphers\(1\)\))0
-3685 y Fm(set_info_callbac)o(k\()o Fd(c)l(al)t(lb)l(ack)9
-b Fm(\))208 3784 y Fr(Set)33 b(the)f(information)g(callbac)n(k)f(to)i
-Fd(c)l(al)t(lb)l(ack)9 b Fr(.)54 b(This)32 b(function)h(will)g(b)r(e)g
-(called)f(from)g(time)h(to)g(time)g(during)f(SSL)208
-3884 y(handshak)n(es.)49 b Fd(c)l(al)t(lb)l(ack)43 b
-Fr(should)32 b(tak)n(e)g(three)g(argumen)n(ts:)45 b(a)32
-b(Connection)g(ob)5 b(ject)32 b(and)g(t)n(w)n(o)g(in)n(tegers.)50
-b(The)32 b(\034rst)208 3984 y(in)n(teger)f(sp)r(eci\034es)g(where)h(in)
-g(the)g(SSL)g(handshak)n(e)f(the)h(function)h(w)n(as)e(called,)h(and)g
-(the)g(other)g(the)g(return)f(co)r(de)208 4083 y(from)c(a)g(\(p)r
-(ossibly)g(failed\))h(in)n(ternal)f(function)h(call.)0
-4230 y Fm(set_options\()p Fd(options)7 b Fm(\))208 4330
-y Fr(A)n(dd)28 b(SSL)h(options.)38 b(Options)28 b(y)n(ou)f(ha)n(v)n(e)g
-(set)i(b)r(efore)f(are)f(not)h(cleared!)38 b(This)28
-b(metho)r(d)h(should)f(b)r(e)h(used)f(with)h(the)208
-4429 y Fm(OP_*)d Fr(constan)n(ts.)0 4576 y Fm(set_passwd_cb\()p
-Fd(c)l(al)t(lb)l(ack)9 b Fc([)p Fd(,)25 b(user)l(data)19
-b Fc(])p Fm(\))208 4676 y Fr(Set)42 b(the)g(passphrase)f(callbac)n(k)f
-(to)i Fd(c)l(al)t(lb)l(ack)9 b Fr(.)82 b(This)42 b(function)h(will)f(b)
-r(e)g(called)g(when)g(a)g(priv)-5 b(ate)42 b(k)n(ey)f(with)h(a)208
-4775 y(passphrase)37 b(is)i(loaded.)70 b Fd(c)l(al)t(lb)l(ack)50
-b Fr(should)39 b(tak)n(e)f(a)g(b)r(o)r(olean)h(argumen)n(t)f
-Fd(r)l(ep)l(e)l(at)47 b Fr(and)39 b(an)f(arbitrary)f(argumen)n(t)208
-4875 y Fd(data)f Fr(and)28 b(return)g(the)h(passphrase)e(en)n(tered)h
-(b)n(y)g(the)h(user.)40 b(If)35 b Fd(r)l(ep)l(e)l(at)i
-Fr(is)28 b(true)h(then)g Fd(c)l(al)t(lb)l(ack)39 b Fr(should)29
-b(ask)f(for)g(the)208 4975 y(passphrase)j(t)n(wice)j(and)g(mak)n(e)f
-(sure)g(that)h(the)g(t)n(w)n(o)f(en)n(tries)g(are)g(equal.)55
-b(The)34 b Fd(data)41 b Fr(argumen)n(t)33 b(is)h(the)g
-Fd(user)l(data)208 5074 y Fr(v)-5 b(ariable)25 b(passed)h(to)h(the)g
-Fm(set_passwd_cb)22 b Fr(metho)r(d.)37 b(If)27 b(an)g(error)e(o)r
-(ccurs,)h Fd(c)l(al)t(lb)l(ack)37 b Fr(should)27 b(return)f(a)h(false)f
-(v)-5 b(alue)208 5174 y(\(e.g.)36 b(an)28 b(empt)n(y)f(string\).)0
-5321 y Fm(set_session_id\()p Fd(n)o(ame)6 b Fm(\))p 0
-5549 3901 4 v 0 5649 a Fg(10)2197 b(3)83 b Fm(OpenSSL)24
+(ky)g(to)0 5288 y(get)g(the)f(handshak)n(es)h(righ)n(t!)p
+0 5549 3901 4 v 0 5649 a Fg(10)2197 b(3)83 b Fm(OpenSSL)24
b Fg(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop
end
%%Page: 11 11
-TeXDict begin 11 10 bop 208 83 a Fr(Set)33 b(the)h(con)n(text)f
-Fd(name)39 b Fr(within)34 b(whic)n(h)f(a)g(session)f(can)h(b)r(e)h
-(reused)e(for)h(this)g(Con)n(text)g(ob)5 b(ject.)54 b(This)33
-b(is)g(needed)208 183 y(when)e(doing)g(session)g(resumption,)h(b)r
-(ecause)g(there)f(is)h(no)f(w)n(a)n(y)g(for)g(a)g(stored)g(session)f
-(to)i(kno)n(w)f(whic)n(h)g(Con)n(text)208 282 y(ob)5
-b(ject)27 b(it)h(is)f(asso)r(ciated)g(with.)37 b Fd(name)d
-Fr(ma)n(y)27 b(b)r(e)h(an)n(y)e(binary)h(data.)0 429
-y Fm(set_timeout\()p Fd(time)l(out)8 b Fm(\))208 529
-y Fr(Set)29 b(the)g(timeout)h(for)e(newly)h(created)f(sessions)g(for)h
-(this)g(Con)n(text)g(ob)5 b(ject)28 b(to)h Fd(time)l(out)8
+TeXDict begin 11 10 bop 0 83 a Fm(get_verify_depth)o(\(\))208
+183 y Fr(Retriev)n(e)26 b(the)i(Con)n(text)f(ob)5 b(ject's)28
+b(v)n(erify)e(depth,)j(as)d(set)i(b)n(y)g Fm(set_verify_depth)p
+Fr(.)0 330 y Fm(get_verify_mode\()o(\))208 429 y Fr(Retriev)n(e)e(the)i
+(Con)n(text)f(ob)5 b(ject's)28 b(v)n(erify)e(mo)r(de,)i(as)f(set)h(b)n
+(y)g Fm(set_verify_mode)p Fr(.)0 576 y Fm(load_client_ca\()p
+Fd(p)l(em\034le)6 b Fm(\))208 676 y Fr(Read)33 b(a)g(\034le)h(with)g
+(PEM-formatted)g(certi\034cates)f(that)h(will)g(b)r(e)g(sen)n(t)f(to)h
+(the)g(clien)n(t)f(when)h(requesting)f(a)g(clien)n(t)208
+775 y(certi\034cate.)0 922 y Fm(load_verify_loca)o(ti)o(ons)o(\()p
+Fd(p)l(em\034le)6 b Fm(\))208 1022 y Fr(Sp)r(ecify)24
+b(where)f(CA)g(certi\034cates)g(for)g(v)n(eri\034cation)f(purp)r(oses)h
+(are)f(lo)r(cated.)35 b(These)23 b(are)g(trusted)g(certi\034cates.)35
+b(Note)208 1121 y(that)27 b(the)h(certi\034cates)f(ha)n(v)n(e)f(to)i(b)
+r(e)g(in)g(PEM)g(format.)0 1268 y Fm(load_tmp_dh\()p
+Fd(dh\034le)6 b Fm(\))208 1368 y Fr(Load)26 b(parameters)g(for)h
+(Ephemeral)g(Di\036e-Hellman)h(from)g Fd(dh\034le)6 b
+Fr(.)0 1515 y Fm(set_app_data\()p Fd(data)g Fm(\))208
+1614 y Fr(Asso)r(ciate)25 b Fd(data)33 b Fr(with)27 b(this)f(Con)n
+(text)f(ob)5 b(ject.)36 b Fd(data)e Fr(can)25 b(b)r(e)i(retriev)n(ed)d
+(later)i(using)f(the)i Fm(get_app_data)21 b Fr(metho)r(d.)0
+1761 y Fm(set_cipher_list\()o Fd(ciphers)7 b Fm(\))208
+1861 y Fr(Set)28 b(the)g(list)h(of)f(ciphers)f(to)h(b)r(e)g(used)g(in)g
+(this)h(con)n(text.)37 b(See)28 b(the)h(Op)r(enSSL)f(man)n(ual)f(for)h
+(more)f(information)g(\(e.g.)208 1961 y(ciphers\(1\)\))0
+2107 y Fm(set_info_callbac)o(k\()o Fd(c)l(al)t(lb)l(ack)9
+b Fm(\))208 2207 y Fr(Set)33 b(the)f(information)g(callbac)n(k)f(to)i
+Fd(c)l(al)t(lb)l(ack)9 b Fr(.)54 b(This)32 b(function)h(will)g(b)r(e)g
+(called)f(from)g(time)h(to)g(time)g(during)f(SSL)208
+2307 y(handshak)n(es.)49 b Fd(c)l(al)t(lb)l(ack)43 b
+Fr(should)32 b(tak)n(e)g(three)g(argumen)n(ts:)45 b(a)32
+b(Connection)g(ob)5 b(ject)32 b(and)g(t)n(w)n(o)g(in)n(tegers.)50
+b(The)32 b(\034rst)208 2406 y(in)n(teger)f(sp)r(eci\034es)g(where)h(in)
+g(the)g(SSL)g(handshak)n(e)f(the)h(function)h(w)n(as)e(called,)h(and)g
+(the)g(other)g(the)g(return)f(co)r(de)208 2506 y(from)c(a)g(\(p)r
+(ossibly)g(failed\))h(in)n(ternal)f(function)h(call.)0
+2653 y Fm(set_options\()p Fd(options)7 b Fm(\))208 2752
+y Fr(A)n(dd)28 b(SSL)h(options.)38 b(Options)28 b(y)n(ou)f(ha)n(v)n(e)g
+(set)i(b)r(efore)f(are)f(not)h(cleared!)38 b(This)28
+b(metho)r(d)h(should)f(b)r(e)h(used)f(with)h(the)208
+2852 y Fm(OP_*)d Fr(constan)n(ts.)0 2999 y Fm(set_passwd_cb\()p
+Fd(c)l(al)t(lb)l(ack)9 b Fc([)p Fd(,)25 b(user)l(data)19
+b Fc(])p Fm(\))208 3099 y Fr(Set)42 b(the)g(passphrase)f(callbac)n(k)f
+(to)i Fd(c)l(al)t(lb)l(ack)9 b Fr(.)82 b(This)42 b(function)h(will)f(b)
+r(e)g(called)g(when)g(a)g(priv)-5 b(ate)42 b(k)n(ey)f(with)h(a)208
+3198 y(passphrase)37 b(is)i(loaded.)70 b Fd(c)l(al)t(lb)l(ack)50
+b Fr(should)39 b(tak)n(e)f(a)g(b)r(o)r(olean)h(argumen)n(t)f
+Fd(r)l(ep)l(e)l(at)47 b Fr(and)39 b(an)f(arbitrary)f(argumen)n(t)208
+3298 y Fd(data)f Fr(and)28 b(return)g(the)h(passphrase)e(en)n(tered)h
+(b)n(y)g(the)h(user.)40 b(If)35 b Fd(r)l(ep)l(e)l(at)i
+Fr(is)28 b(true)h(then)g Fd(c)l(al)t(lb)l(ack)39 b Fr(should)29
+b(ask)f(for)g(the)208 3397 y(passphrase)j(t)n(wice)j(and)g(mak)n(e)f
+(sure)g(that)h(the)g(t)n(w)n(o)f(en)n(tries)g(are)g(equal.)55
+b(The)34 b Fd(data)41 b Fr(argumen)n(t)33 b(is)h(the)g
+Fd(user)l(data)208 3497 y Fr(v)-5 b(ariable)25 b(passed)h(to)h(the)g
+Fm(set_passwd_cb)22 b Fr(metho)r(d.)37 b(If)27 b(an)g(error)e(o)r
+(ccurs,)h Fd(c)l(al)t(lb)l(ack)37 b Fr(should)27 b(return)f(a)h(false)f
+(v)-5 b(alue)208 3597 y(\(e.g.)36 b(an)28 b(empt)n(y)f(string\).)0
+3744 y Fm(set_session_id\()p Fd(n)o(ame)6 b Fm(\))208
+3843 y Fr(Set)33 b(the)h(con)n(text)f Fd(name)39 b Fr(within)34
+b(whic)n(h)f(a)g(session)f(can)h(b)r(e)h(reused)e(for)h(this)g(Con)n
+(text)g(ob)5 b(ject.)54 b(This)33 b(is)g(needed)208 3943
+y(when)e(doing)g(session)g(resumption,)h(b)r(ecause)g(there)f(is)h(no)f
+(w)n(a)n(y)g(for)g(a)g(stored)g(session)f(to)i(kno)n(w)f(whic)n(h)g
+(Con)n(text)208 4042 y(ob)5 b(ject)27 b(it)h(is)f(asso)r(ciated)g
+(with.)37 b Fd(name)d Fr(ma)n(y)27 b(b)r(e)h(an)n(y)e(binary)h(data.)0
+4189 y Fm(set_timeout\()p Fd(time)l(out)8 b Fm(\))208
+4289 y Fr(Set)29 b(the)g(timeout)h(for)e(newly)h(created)f(sessions)g
+(for)h(this)g(Con)n(text)g(ob)5 b(ject)28 b(to)h Fd(time)l(out)8
b Fr(.)41 b Fd(time)l(out)36 b Fr(m)n(ust)29 b(b)r(e)h(giv)n(en)208
-628 y(in)f(\(whole\))f(seconds.)40 b(The)29 b(default)g(v)-5
+4389 y(in)f(\(whole\))f(seconds.)40 b(The)29 b(default)g(v)-5
b(alue)28 b(is)h(300)e(seconds.)40 b(See)29 b(the)g(Op)r(enSSL)g(man)n
-(ual)f(for)g(more)g(information)208 728 y(\(e.g.)36 b
-(SSL_CTX_set_timeout\(3\)\).)0 875 y Fm(set_verify\()p
-Fd(mo)l(de,)26 b(c)l(al)t(lb)l(ack)9 b Fm(\))208 975
+(ual)f(for)g(more)g(information)208 4488 y(\(e.g.)36
+b(SSL_CTX_set_timeout\(3\)\).)0 4635 y Fm(set_verify\()p
+Fd(mo)l(de,)26 b(c)l(al)t(lb)l(ack)9 b Fm(\))208 4735
y Fr(Set)36 b(the)h(v)n(eri\034cation)e(\035ags)g(for)h(this)h(Con)n
(text)f(ob)5 b(ject)36 b(to)g Fd(mo)l(de)44 b Fr(and)36
b(sp)r(ecify)g(that)h Fd(c)l(al)t(lb)l(ack)47 b Fr(should)36
-b(b)r(e)h(used)208 1074 y(for)30 b(v)n(eri\034cation)g(callbac)n(ks.)45
+b(b)r(e)h(used)208 4834 y(for)30 b(v)n(eri\034cation)g(callbac)n(ks.)45
b Fd(mo)l(de)38 b Fr(should)31 b(b)r(e)h(one)e(of)38
b Fm(VERIFY_NONE)26 b Fr(and)31 b Fm(VERIFY_PEER)p Fr(.)c(If)38
-b Fm(VERIFY_PEER)26 b Fr(is)208 1174 y(used,)j Fd(mo)l(de)36
+b Fm(VERIFY_PEER)26 b Fr(is)208 4934 y(used,)j Fd(mo)l(de)36
b Fr(can)29 b(b)r(e)g(OR:ed)g(with)g Fm(VERIFY_FAIL_IF_NO)o(_P)o(EE)o
(R_C)o(ER)o(T)23 b Fr(and)29 b Fm(VERIFY_CLIENT_O)o(NCE)22
-b Fr(to)29 b(further)208 1273 y(con)n(trol)23 b(the)j(b)r(eha)n(viour.)
+b Fr(to)29 b(further)208 5034 y(con)n(trol)23 b(the)j(b)r(eha)n(viour.)
34 b Fd(c)l(al)t(lb)l(ack)i Fr(should)25 b(tak)n(e)f(\034v)n(e)h
(argumen)n(ts:)34 b(A)25 b(Connection)g(ob)5 b(ject,)25
-b(an)g(X509)f(ob)5 b(ject,)25 b(and)208 1373 y(three)e(in)n(teger)g(v)
+b(an)g(X509)f(ob)5 b(ject,)25 b(and)208 5133 y(three)e(in)n(teger)g(v)
-5 b(ariables,)23 b(whic)n(h)h(are)f(in)h(turn)g(p)r(oten)n(tial)g
(error)d(n)n(um)n(b)r(er,)k(error)c(depth)k(and)f(return)f(co)r(de.)35
-b Fd(c)l(al)t(lb)l(ack)208 1473 y Fr(should)27 b(return)g(true)g(if)h
+b Fd(c)l(al)t(lb)l(ack)208 5233 y Fr(should)27 b(return)g(true)g(if)h
(v)n(eri\034cation)f(passes)f(and)h(false)h(otherwise.)0
-1620 y Fm(set_verify_depth)o(\()p Fd(depth)6 b Fm(\))208
-1719 y Fr(Set)36 b(the)g(maxim)n(um)f(depth)h(for)g(the)g
-(certi\034cate)f(c)n(hain)g(v)n(eri\034cation)f(that)i(shall)f(b)r(e)h
-(allo)n(w)n(ed)e(for)i(this)f(Con)n(text)208 1819 y(ob)5
-b(ject.)0 1966 y Fm(use_certificate\()o Fd(c)l(ert)j
-Fm(\))208 2065 y Fr(Use)27 b(the)h(certi\034cate)f Fd(c)l(ert)35
+5380 y Fm(set_verify_depth)o(\()p Fd(depth)6 b Fm(\))p
+0 5549 3901 4 v 0 5649 a Fg(3.3)82 b Fm(SSL)26 b Fg(\026)i(An)g
+(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f(of)h(Op)r(enSSL)
+1611 b(11)p eop end
+%%Page: 12 12
+TeXDict begin 12 11 bop 208 83 a Fr(Set)36 b(the)g(maxim)n(um)f(depth)h
+(for)g(the)g(certi\034cate)f(c)n(hain)g(v)n(eri\034cation)f(that)i
+(shall)f(b)r(e)h(allo)n(w)n(ed)e(for)i(this)f(Con)n(text)208
+183 y(ob)5 b(ject.)0 330 y Fm(use_certificate\()o Fd(c)l(ert)j
+Fm(\))208 429 y Fr(Use)27 b(the)h(certi\034cate)f Fd(c)l(ert)35
b Fr(whic)n(h)28 b(has)f(to)g(b)r(e)h(a)f(X509)g(ob)5
-b(ject.)0 2212 y Fm(add_extra_chain_)o(ce)o(rt\()o Fd(c)l(ert)j
-Fm(\))208 2312 y Fr(A)n(dds)32 b(the)h(certi\034cate)f
+b(ject.)0 576 y Fm(add_extra_chain_)o(ce)o(rt\()o Fd(c)l(ert)j
+Fm(\))208 676 y Fr(A)n(dds)32 b(the)h(certi\034cate)f
Fd(c)l(ert)8 b Fr(,)34 b(whic)n(h)f(has)f(to)g(b)r(e)i(a)e(X509)f(ob)5
b(ject,)34 b(to)f(the)g(certi\034cate)f(c)n(hain)g(presen)n(ted)g
-(together)208 2411 y(with)c(the)g(certi\034cate.)0 2558
+(together)208 775 y(with)c(the)g(certi\034cate.)0 922
y Fm(use_certificate_)o(ch)o(ain)o(_f)o(il)o(e\()p Fd(\034)o(le)6
-b Fm(\))208 2658 y Fr(Load)26 b(a)h(certi\034cate)g(c)n(hain)g(from)h
+b Fm(\))208 1022 y Fr(Load)26 b(a)h(certi\034cate)g(c)n(hain)g(from)h
Fd(\034le)34 b Fr(whic)n(h)27 b(m)n(ust)h(b)r(e)g(PEM)g(enco)r(ded.)0
-2805 y Fm(use_privatekey\()p Fd(pkey)7 b Fm(\))208 2904
+1169 y Fm(use_privatekey\()p Fd(pkey)7 b Fm(\))208 1268
y Fr(Use)27 b(the)h(priv)-5 b(ate)27 b(k)n(ey)h Fd(pkey)36
b Fr(whic)n(h)28 b(has)f(to)g(b)r(e)h(a)f(PKey)h(ob)5
-b(ject.)0 3066 y Fm(use_certificate_)o(fi)o(le\()o Fd(\034le)h
-Fc([)p Fd(,)24 b(format)d Fc(])p Fm(\))208 3165 y Fr(Load)i(the)h
+b(ject.)0 1430 y Fm(use_certificate_)o(fi)o(le\()o Fd(\034le)h
+Fc([)p Fd(,)24 b(format)d Fc(])p Fm(\))208 1529 y Fr(Load)i(the)h
(\034rst)g(certi\034cate)f(found)h(in)h Fd(\034le)6 b
Fr(.)36 b(The)24 b(certi\034cate)f(m)n(ust)h(b)r(e)h(in)f(the)g(format)
g(sp)r(eci\034ed)g(b)n(y)h Fd(format)8 b Fr(,)25 b(whic)n(h)208
-3265 y(is)i(either)g Fm(FILETYPE_PEM)c Fr(or)k Fm(FILETYPE_ASN1)p
+1629 y(is)i(either)g Fm(FILETYPE_PEM)c Fr(or)k Fm(FILETYPE_ASN1)p
Fr(.)k(The)d(default)g(is)f Fm(FILETYPE_PEM)p Fr(.)0
-3412 y Fm(use_privatekey_f)o(il)o(e\()p Fd(\034)o(le)6
-b Fc([)p Fd(,)25 b(format)20 b Fc(])p Fm(\))208 3511
+1776 y Fm(use_privatekey_f)o(il)o(e\()p Fd(\034)o(le)6
+b Fc([)p Fd(,)25 b(format)20 b Fc(])p Fm(\))208 1875
y Fr(Load)31 b(the)h(\034rst)g(priv)-5 b(ate)31 b(k)n(ey)g(found)i(in)f
Fd(\034le)6 b Fr(.)50 b(The)32 b(priv)-5 b(ate)32 b(k)n(ey)f(m)n(ust)h
(b)r(e)g(in)h(the)f(format)f(sp)r(eci\034ed)i(b)n(y)f
-Fd(format)8 b Fr(,)208 3611 y(whic)n(h)27 b(is)g(either)h
+Fd(format)8 b Fr(,)208 1975 y(whic)n(h)27 b(is)g(either)h
Fm(FILETYPE_PEM)22 b Fr(or)27 b Fm(FILETYPE_ASN1)p Fr(.)32
-b(The)27 b(default)h(is)g Fm(FILETYPE_PEM)p Fr(.)0 3874
-y Fg(Connection)e(objects)0 4074 y Fr(Connection)h(ob)5
+b(The)27 b(default)h(is)g Fm(FILETYPE_PEM)p Fr(.)0 2238
+y Fg(Connection)e(objects)0 2438 y Fr(Connection)h(ob)5
b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n(wing)f(metho)r(ds:)0
-4221 y Fm(accept\(\))208 4321 y Fr(Call)33 b(the)g Fm(accept)e
+2585 y Fm(accept\(\))208 2685 y Fr(Call)33 b(the)g Fm(accept)e
Fr(metho)r(d)j(of)f(the)h(underlying)f(so)r(c)n(k)n(et)f(and)h(set)h
(up)g(SSL)f(on)g(the)h(returned)f(so)r(c)n(k)n(et,)h(using)f(the)208
-4421 y(Con)n(text)22 b(ob)5 b(ject)22 b(supplied)h(to)f(this)h
+2784 y(Con)n(text)22 b(ob)5 b(ject)22 b(supplied)h(to)f(this)h
(Connection)f(ob)5 b(ject)22 b(at)h(creation.)34 b(Returns)22
b(a)g(pair)g Fm(\()p Fd(c)l(onn)6 b Fm(,)43 b Fd(addr)l(ess)7
-b Fm(\))p Fr(.)36 b(where)208 4520 y Fd(c)l(onn)d Fr(is)28
+b Fm(\))p Fr(.)36 b(where)208 2884 y Fd(c)l(onn)d Fr(is)28
b(the)g(new)f(Connection)g(ob)5 b(ject)28 b(created,)e(and)i
Fd(addr)l(ess)35 b Fr(is)28 b(as)f(returned)g(b)n(y)g(the)h(so)r(c)n(k)
-n(et's)e Fm(accept)p Fr(.)0 4667 y Fm(bind\()p Fd(addr)l(ess)7
-b Fm(\))208 4767 y Fr(Call)27 b(the)h Fm(bind)e Fr(metho)r(d)i(of)f
-(the)h(underlying)f(so)r(c)n(k)n(et.)0 4914 y Fm(close\(\))208
-5013 y Fr(Call)i(the)h Fm(close)e Fr(metho)r(d)i(of)g(the)g(underlying)
+n(et's)e Fm(accept)p Fr(.)0 3031 y Fm(bind\()p Fd(addr)l(ess)7
+b Fm(\))208 3131 y Fr(Call)27 b(the)h Fm(bind)e Fr(metho)r(d)i(of)f
+(the)h(underlying)f(so)r(c)n(k)n(et.)0 3277 y Fm(close\(\))208
+3377 y Fr(Call)i(the)h Fm(close)e Fr(metho)r(d)i(of)g(the)g(underlying)
f(so)r(c)n(k)n(et.)43 b(Note:)e(If)31 b(y)n(ou)e(w)n(an)n(t)g(correct)f
-(SSL)i(closure,)f(y)n(ou)g(need)h(to)208 5113 y(call)d(the)h
-Fm(shutdown)c Fr(metho)r(d)k(\034rst.)0 5260 y Fm(connect\()p
-Fd(addr)l(ess)7 b Fm(\))208 5359 y Fr(Call)31 b(the)h
+(SSL)i(closure,)f(y)n(ou)g(need)h(to)208 3477 y(call)d(the)h
+Fm(shutdown)c Fr(metho)r(d)k(\034rst.)0 3624 y Fm(connect\()p
+Fd(addr)l(ess)7 b Fm(\))208 3723 y Fr(Call)31 b(the)h
Fm(connect)e Fr(metho)r(d)i(of)g(the)g(underlying)g(so)r(c)n(k)n(et)e
(and)i(set)g(up)g(SSL)h(on)e(the)i(so)r(c)n(k)n(et,)f(using)f(the)h
-(Con)n(text)p 0 5549 3901 4 v 0 5649 a Fg(3.3)82 b Fm(SSL)26
-b Fg(\026)i(An)g(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f
-(of)h(Op)r(enSSL)1611 b(11)p eop end
-%%Page: 12 12
-TeXDict begin 12 11 bop 208 83 a Fr(ob)5 b(ject)27 b(supplied)h(to)f
-(this)h(Connection)f(ob)5 b(ject)27 b(at)h(creation.)0
-230 y Fm(connect_ex\()p Fd(addr)l(ess)7 b Fm(\))208 330
+(Con)n(text)208 3823 y(ob)5 b(ject)27 b(supplied)h(to)f(this)h
+(Connection)f(ob)5 b(ject)27 b(at)h(creation.)0 3970
+y Fm(connect_ex\()p Fd(addr)l(ess)7 b Fm(\))208 4069
y Fr(Call)24 b(the)g Fm(connect_ex)c Fr(metho)r(d)25
b(of)f(the)h(underlying)f(so)r(c)n(k)n(et)f(and)h(set)g(up)h(SSL)f(on)g
(the)h(so)r(c)n(k)n(et,)f(using)g(the)g(Con)n(text)208
-429 y(ob)5 b(ject)35 b(supplied)g(to)h(this)f(Connection)g(ob)5
+4169 y(ob)5 b(ject)35 b(supplied)g(to)h(this)f(Connection)g(ob)5
b(ject)36 b(at)f(creation.)59 b(Note)36 b(that)f(if)h(the)g
-Fm(connect_ex)31 b Fr(metho)r(d)36 b(of)g(the)208 529
+Fm(connect_ex)31 b Fr(metho)r(d)36 b(of)g(the)208 4269
y(so)r(c)n(k)n(et)26 b(do)r(esn't)i(return)f(0,)g(SSL)h(w)n(on't)f(b)r
-(e)h(initialized.)0 676 y Fm(do_handshake\(\))208 775
+(e)h(initialized.)0 4415 y Fm(do_handshake\(\))208 4515
y Fr(P)n(erform)49 b(an)h(SSL)g(handshak)n(e)f(\(usually)h(called)g
(after)f Fm(renegotiate)d Fr(or)j(one)h(of)57 b Fm(set_accept_stat)o(e)
-44 b Fr(or)208 875 y Fm(set_accept_stat)o(e)p Fr(\).)31
+44 b Fr(or)208 4615 y Fm(set_accept_stat)o(e)p Fr(\).)31
b(This)d(can)f(raise)f(the)i(same)f(exceptions)g(as)g
-Fm(send)f Fr(and)h Fm(recv)p Fr(.)0 1022 y Fm(fileno\(\))208
-1121 y Fr(Retriev)n(e)f(the)i(\034le)g(descriptor)e(n)n(um)n(b)r(er)i
-(for)f(the)h(underlying)e(so)r(c)n(k)n(et.)0 1268 y Fm(listen\()p
-Fd(b)l(acklo)l(g)7 b Fm(\))208 1368 y Fr(Call)27 b(the)h
+Fm(send)f Fr(and)h Fm(recv)p Fr(.)0 4762 y Fm(fileno\(\))208
+4861 y Fr(Retriev)n(e)f(the)i(\034le)g(descriptor)e(n)n(um)n(b)r(er)i
+(for)f(the)h(underlying)e(so)r(c)n(k)n(et.)0 5008 y Fm(listen\()p
+Fd(b)l(acklo)l(g)7 b Fm(\))208 5108 y Fr(Call)27 b(the)h
Fm(listen)d Fr(metho)r(d)j(of)f(the)h(underlying)f(so)r(c)n(k)n(et.)0
-1515 y Fm(get_app_data\(\))208 1614 y Fr(Retriev)n(e)f(application)h
-(data)g(as)g(set)h(b)n(y)g Fm(set_app_data)p Fr(.)0 1761
-y Fm(get_cipher_list\()o(\))208 1861 y Fr(Retriev)n(e)23
-b(the)h(list)g(of)g(ciphers)g(used)g(b)n(y)f(the)i(Connection)e(ob)5
-b(ject.)36 b(W)-9 b(ARNING:)25 b(This)f(API)h(has)e(c)n(hanged.)35
-b(It)24 b(used)208 1961 y(to)j(tak)n(e)g(an)g(optional)g(parameter)f
-(and)h(just)h(return)g(a)f(string,)g(but)h(not)f(it)h(returns)f(the)h
-(en)n(tire)f(list)h(in)g(one)f(go.)0 2107 y Fm(get_context\(\))208
-2207 y Fr(Retriev)n(e)f(the)i(Con)n(text)f(ob)5 b(ject)28
-b(asso)r(ciated)e(with)i(this)g(Connection.)0 2354 y
-Fm(get_peer_certifi)o(ca)o(te\()o(\))208 2454 y Fr(Retriev)n(e)e(the)i
-(other)f(side's)g(certi\034cate)g(\(if)i(an)n(y\))0 2600
-y Fm(getpeername\(\))208 2700 y Fr(Call)e(the)h Fm(getpeername)23
-b Fr(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n(k)n(et.)0
-2847 y Fm(getsockname\(\))208 2946 y Fr(Call)g(the)h
+5255 y Fm(get_app_data\(\))208 5354 y Fr(Retriev)n(e)f(application)h
+(data)g(as)g(set)h(b)n(y)g Fm(set_app_data)p Fr(.)p 0
+5549 3901 4 v 0 5649 a Fg(12)2197 b(3)83 b Fm(OpenSSL)24
+b Fg(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop
+end
+%%Page: 13 13
+TeXDict begin 13 12 bop 0 83 a Fm(get_cipher_list\()o(\))208
+183 y Fr(Retriev)n(e)23 b(the)h(list)g(of)g(ciphers)g(used)g(b)n(y)f
+(the)i(Connection)e(ob)5 b(ject.)36 b(W)-9 b(ARNING:)25
+b(This)f(API)h(has)e(c)n(hanged.)35 b(It)24 b(used)208
+282 y(to)j(tak)n(e)g(an)g(optional)g(parameter)f(and)h(just)h(return)g
+(a)f(string,)g(but)h(not)f(it)h(returns)f(the)h(en)n(tire)f(list)h(in)g
+(one)f(go.)0 429 y Fm(get_context\(\))208 529 y Fr(Retriev)n(e)f(the)i
+(Con)n(text)f(ob)5 b(ject)28 b(asso)r(ciated)e(with)i(this)g
+(Connection.)0 676 y Fm(get_peer_certifi)o(ca)o(te\()o(\))208
+775 y Fr(Retriev)n(e)e(the)i(other)f(side's)g(certi\034cate)g(\(if)i
+(an)n(y\))0 922 y Fm(getpeername\(\))208 1022 y Fr(Call)e(the)h
+Fm(getpeername)23 b Fr(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n
+(k)n(et.)0 1169 y Fm(getsockname\(\))208 1268 y Fr(Call)g(the)h
Fm(getsockname)23 b Fr(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n
-(k)n(et.)0 3110 y Fm(getsockopt\()p Fd(level,)f(optname)6
-b Fc([)p Fd(,)31 b(bu\035en)18 b Fc(])p Fm(\))208 3210
+(k)n(et.)0 1432 y Fm(getsockopt\()p Fd(level,)f(optname)6
+b Fc([)p Fd(,)31 b(bu\035en)18 b Fc(])p Fm(\))208 1531
y Fr(Call)27 b(the)h Fm(getsockopt)23 b Fr(metho)r(d)28
-b(of)g(the)g(underlying)f(so)r(c)n(k)n(et.)0 3357 y Fm(pending\(\))208
-3456 y Fr(Retriev)n(e)22 b(the)h(n)n(um)n(b)r(er)g(of)g(b)n(ytes)g
+b(of)g(the)g(underlying)f(so)r(c)n(k)n(et.)0 1678 y Fm(pending\(\))208
+1778 y Fr(Retriev)n(e)22 b(the)h(n)n(um)n(b)r(er)g(of)g(b)n(ytes)g
(that)h(can)e(b)r(e)i(safely)f(read)f(from)h(the)g(SSL)h(bu\033er)f(\()
-p Fd(not)g Fr(the)h(underlying)e(transp)r(ort)208 3556
-y(bu\033er\).)0 3703 y Fm(recv\()p Fd(bufsize)6 b Fm(\))208
-3802 y Fr(Receiv)n(e)30 b(data)h(from)g(the)h(Connection.)47
+p Fd(not)g Fr(the)h(underlying)e(transp)r(ort)208 1878
+y(bu\033er\).)0 2024 y Fm(recv\()p Fd(bufsize)6 b Fm(\))208
+2124 y Fr(Receiv)n(e)30 b(data)h(from)g(the)h(Connection.)47
b(The)31 b(return)g(v)-5 b(alue)31 b(is)h(a)e(string)h(represen)n(ting)
-f(the)h(data)g(receiv)n(ed.)47 b(The)208 3902 y(maxim)n(um)27
+f(the)h(data)g(receiv)n(ed.)47 b(The)208 2224 y(maxim)n(um)27
b(amoun)n(t)g(of)g(data)h(to)f(b)r(e)h(receiv)n(ed)e(at)i(once,)f(is)g
-(sp)r(eci\034ed)h(b)n(y)h Fd(bufsize)6 b Fr(.)0 4049
-y Fm(renegotiate\(\))208 4148 y Fr(Renegotiate)26 b(the)i(SSL)g
+(sp)r(eci\034ed)h(b)n(y)h Fd(bufsize)6 b Fr(.)0 2371
+y Fm(renegotiate\(\))208 2470 y Fr(Renegotiate)26 b(the)i(SSL)g
(session.)36 b(Call)27 b(this)h(if)g(y)n(ou)f(wish)g(to)h(c)n(hange)e
(cipher)h(suites)h(or)e(an)n(ything)h(lik)n(e)g(that.)0
-4295 y Fm(send\()p Fd(string)7 b Fm(\))208 4395 y Fr(Send)27
+2617 y Fm(send\()p Fd(string)7 b Fm(\))208 2717 y Fr(Send)27
b(the)h Fd(string)35 b Fr(data)27 b(to)h(the)g(Connection.)0
-4542 y Fm(sendall\()p Fd(string)7 b Fm(\))208 4641 y
+2864 y Fm(sendall\()p Fd(string)7 b Fm(\))208 2963 y
Fr(Send)30 b(all)f(of)h(the)g Fd(string)37 b Fr(data)29
b(to)g(the)h(Connection.)43 b(This)30 b(calls)f Fm(send)f
Fr(rep)r(eatedly)h(un)n(til)h(all)f(data)h(is)f(sen)n(t.)43
-b(If)30 b(an)208 4741 y(error)25 b(o)r(ccurs,)i(it's)h(imp)r(ossible)f
+b(If)30 b(an)208 3063 y(error)25 b(o)r(ccurs,)i(it's)h(imp)r(ossible)f
(to)g(tell)h(ho)n(w)f(m)n(uc)n(h)h(data)f(has)g(b)r(een)h(sen)n(t.)0
-4888 y Fm(set_accept_state)o(\(\))208 4988 y Fr(Set)20
+3210 y Fm(set_accept_state)o(\(\))208 3309 y Fr(Set)20
b(the)g(connection)f(to)h(w)n(ork)e(in)i(serv)n(er)e(mo)r(de.)34
b(The)20 b(handshak)n(e)f(will)h(b)r(e)g(handled)g(automatically)e(b)n
-(y)i(read/write.)0 5134 y Fm(set_app_data\()p Fd(data)6
-b Fm(\))208 5234 y Fr(Asso)r(ciate)39 b Fd(data)47 b
+(y)i(read/write.)0 3456 y Fm(set_app_data\()p Fd(data)6
+b Fm(\))208 3556 y Fr(Asso)r(ciate)39 b Fd(data)47 b
Fr(with)40 b(this)g(Connection)g(ob)5 b(ject.)73 b Fd(data)47
b Fr(can)39 b(b)r(e)i(retriev)n(ed)d(later)h(using)h(the)g
-Fm(get_app_data)208 5334 y Fr(metho)r(d.)p 0 5549 3901
-4 v 0 5649 a Fg(12)2197 b(3)83 b Fm(OpenSSL)24 b Fg(\026)k(Python)f
-(interface)h(to)f(Op)r(enSSL)p eop end
-%%Page: 13 13
-TeXDict begin 13 12 bop 0 83 a Fm(set_connect_stat)o(e\()o(\))208
-183 y Fr(Set)21 b(the)g(connection)g(to)g(w)n(ork)e(in)i(clien)n(t)g
-(mo)r(de.)35 b(The)21 b(handshak)n(e)f(will)h(b)r(e)g(handled)g
-(automatically)f(b)n(y)h(read/write.)0 330 y Fm(setblocking\()p
-Fd(\035ag)7 b Fm(\))208 429 y Fr(Call)27 b(the)h Fm(setblocking)23
-b Fr(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n(k)n(et.)0
-576 y Fm(setsockopt\()p Fd(level,)f(optname,)31 b(value)6
-b Fm(\))208 676 y Fr(Call)27 b(the)h Fm(setsockopt)23
+Fm(get_app_data)208 3655 y Fr(metho)r(d.)0 3802 y Fm(set_connect_stat)o
+(e\()o(\))208 3902 y Fr(Set)21 b(the)g(connection)g(to)g(w)n(ork)e(in)i
+(clien)n(t)g(mo)r(de.)35 b(The)21 b(handshak)n(e)f(will)h(b)r(e)g
+(handled)g(automatically)f(b)n(y)h(read/write.)0 4049
+y Fm(setblocking\()p Fd(\035ag)7 b Fm(\))208 4148 y Fr(Call)27
+b(the)h Fm(setblocking)23 b Fr(metho)r(d)28 b(of)f(the)h(underlying)f
+(so)r(c)n(k)n(et.)0 4295 y Fm(setsockopt\()p Fd(level,)f(optname,)31
+b(value)6 b Fm(\))208 4395 y Fr(Call)27 b(the)h Fm(setsockopt)23
b Fr(metho)r(d)28 b(of)g(the)g(underlying)f(so)r(c)n(k)n(et.)0
-823 y Fm(shutdown\(\))208 922 y Fr(Send)35 b(the)h(sh)n(utdo)n(wn)f
+4542 y Fm(shutdown\(\))208 4641 y Fr(Send)35 b(the)h(sh)n(utdo)n(wn)f
(message)f(to)h(the)h(Connection.)60 b(Returns)35 b(true)g(if)h(the)g
-(sh)n(utdo)n(wn)e(message)g(exc)n(hange)g(is)208 1022
+(sh)n(utdo)n(wn)e(message)g(exc)n(hange)g(is)208 4741
y(completed)25 b(and)g(false)h(otherwise)e(\(in)i(whic)n(h)g(case)e(y)n
(ou)h(call)g Fm(recv\(\))e Fr(or)i Fm(send\(\))e Fr(when)j(the)g
-(connection)f(b)r(ecomes)208 1121 y(readable/writeable.)0
-1268 y Fm(get_shutdown\(\))208 1368 y Fr(Get)70 b(the)g(sh)n(utdo)n(wn)
+(connection)f(b)r(ecomes)208 4841 y(readable/writeable.)0
+4988 y Fm(get_shutdown\(\))208 5087 y Fr(Get)70 b(the)g(sh)n(utdo)n(wn)
f(state)g(of)h(the)g(Connection.)162 b(Returns)69 b(a)h(bitv)n(ector)e
-(of)i(either)f(or)g(b)r(oth)h(of)208 1468 y Fd(SENT_SHUTDO)n(WN)39
-b Fr(and)27 b Fd(RECEIVED_SHUTDO)n(WN)14 b Fr(.)0 1614
-y Fm(set_shutdown\()p Fd(state)6 b Fm(\))208 1714 y Fr(Set)21
-b(the)g(sh)n(utdo)n(wn)g(state)g(of)g(the)g(Connection.)34
-b Fd(state)27 b Fr(is)21 b(a)g(bitv)n(ector)f(of)h(either)g(or)f(b)r
-(oth)i(of)27 b Fd(SENT_SHUTDO)n(WN)208 1814 y Fr(and)g
-Fd(RECEIVED_SHUTDO)n(WN)14 b Fr(.)0 1961 y Fm(sock_shutdown\()p
-Fd(how)9 b Fm(\))208 2060 y Fr(Call)27 b(the)h Fm(shutdown)c
-Fr(metho)r(d)k(of)g(the)g(underlying)e(so)r(c)n(k)n(et.)0
-2207 y Fm(state_string\(\))208 2307 y Fr(Retriev)n(e)g(a)i(v)n(erb)r
-(ose)e(string)g(detailing)i(the)g(state)f(of)h(the)f(Connection.)0
-2454 y Fm(want_read\(\))208 2553 y Fr(Chec)n(ks)f(if)i(more)f(data)g
-(has)g(to)h(b)r(e)g(read)e(from)i(the)f(transp)r(ort)g(la)n(y)n(er)f
-(to)h(complete)h(an)f(op)r(eration.)0 2700 y Fm(want_write\(\))208
-2800 y Fr(Chec)n(ks)f(if)i(there)g(is)f(data)g(to)h(write)f(to)g(the)h
-(transp)r(ort)f(la)n(y)n(er)f(to)h(complete)h(an)f(op)r(eration.)0
-3121 y Fs(4)114 b(Internals)0 3350 y Fr(W)-7 b(e)25 b(ran)g(in)n(to)f
-(three)h(main)g(problems)f(dev)n(eloping)g(this:)36 b(Exceptions,)25
+(of)i(either)f(or)g(b)r(oth)h(of)208 5187 y Fd(SENT_SHUTDO)n(WN)39
+b Fr(and)27 b Fd(RECEIVED_SHUTDO)n(WN)14 b Fr(.)0 5334
+y Fm(set_shutdown\()p Fd(state)6 b Fm(\))p 0 5549 3901
+4 v 0 5649 a Fg(3.3)82 b Fm(SSL)26 b Fg(\026)i(An)g(interface)g(to)f
+(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f(of)h(Op)r(enSSL)1611
+b(13)p eop end
+%%Page: 14 14
+TeXDict begin 14 13 bop 208 83 a Fr(Set)21 b(the)g(sh)n(utdo)n(wn)g
+(state)g(of)g(the)g(Connection.)34 b Fd(state)27 b Fr(is)21
+b(a)g(bitv)n(ector)f(of)h(either)g(or)f(b)r(oth)i(of)27
+b Fd(SENT_SHUTDO)n(WN)208 183 y Fr(and)g Fd(RECEIVED_SHUTDO)n(WN)14
+b Fr(.)0 330 y Fm(sock_shutdown\()p Fd(how)9 b Fm(\))208
+429 y Fr(Call)27 b(the)h Fm(shutdown)c Fr(metho)r(d)k(of)g(the)g
+(underlying)e(so)r(c)n(k)n(et.)0 576 y Fm(state_string\(\))208
+676 y Fr(Retriev)n(e)g(a)i(v)n(erb)r(ose)e(string)g(detailing)i(the)g
+(state)f(of)h(the)f(Connection.)0 823 y Fm(want_read\(\))208
+922 y Fr(Chec)n(ks)f(if)i(more)f(data)g(has)g(to)h(b)r(e)g(read)e(from)
+i(the)f(transp)r(ort)g(la)n(y)n(er)f(to)h(complete)h(an)f(op)r
+(eration.)0 1069 y Fm(want_write\(\))208 1169 y Fr(Chec)n(ks)f(if)i
+(there)g(is)f(data)g(to)h(write)f(to)g(the)h(transp)r(ort)f(la)n(y)n
+(er)f(to)h(complete)h(an)f(op)r(eration.)0 1490 y Fs(4)114
+b(Internals)0 1719 y Fr(W)-7 b(e)25 b(ran)g(in)n(to)f(three)h(main)g
+(problems)f(dev)n(eloping)g(this:)36 b(Exceptions,)25
b(callbac)n(ks)f(and)h(accessing)e(so)r(c)n(k)n(et)h(metho)r(ds.)36
-b(This)0 3450 y(is)27 b(what)h(this)g(c)n(hapter)e(is)i(ab)r(out.)0
-3729 y Fk(4.1)97 b(Exceptions)0 3930 y Fr(W)-7 b(e)52
+b(This)0 1819 y(is)27 b(what)h(this)g(c)n(hapter)e(is)i(ab)r(out.)0
+2099 y Fk(4.1)97 b(Exceptions)0 2299 y Fr(W)-7 b(e)52
b(realized)f(early)g(that)h(most)g(of)g(the)g(exceptions)f(w)n(ould)h
(b)r(e)g(raised)f(b)n(y)h(the)g(I/O)f(functions)h(of)g(Op)r(enSSL,)0
-4030 y(so)d(it)i(felt)f(natural)f(to)h(mimic)g(Op)r(enSSL's)g(error)e
+2399 y(so)d(it)i(felt)f(natural)f(to)h(mimic)g(Op)r(enSSL's)g(error)e
(co)r(de)i(system,)55 b(translating)48 b(them)j(in)n(to)e(Python)i
-(exceptions.)0 4129 y(This)30 b(naturally)e(giv)n(es)h(us)h(the)g
+(exceptions.)0 2498 y(This)30 b(naturally)e(giv)n(es)h(us)h(the)g
(exceptions)f Fm(SSL.ZeroReturnEr)o(ro)o(r)p Fr(,)24
b Fm(SSL.WantReadError)o Fr(,)h Fm(SSL.WantWriteEr)o(ro)o(r)p
-Fr(,)0 4229 y Fm(SSL.WantX509Look)o(up)o(Err)o(or)c Fr(and)27
-b Fm(SSL.SysCallError)p Fr(.)0 4376 y(F)-7 b(or)27 b(more)g
+Fr(,)0 2598 y Fm(SSL.WantX509Look)o(up)o(Err)o(or)c Fr(and)27
+b Fm(SSL.SysCallError)p Fr(.)0 2745 y(F)-7 b(or)27 b(more)g
(information)g(ab)r(out)g(this,)h(see)f(section)g(3.3.)0
-4655 y Fk(4.2)97 b(Callbacks)0 4856 y Fr(There)34 b(are)f(a)h(n)n(um)n
+3025 y Fk(4.2)97 b(Callbacks)0 3225 y Fr(There)34 b(are)f(a)h(n)n(um)n
(b)r(er)g(of)h(problems)e(with)i(callbac)n(ks.)56 b(First)34
b(of)g(all,)i(Op)r(enSSL)f(is)f(written)h(as)e(a)h(C)h(library)-7
-b(,)34 b(it's)h(not)0 4955 y(mean)n(t)26 b(to)g(ha)n(v)n(e)e(Python)j
+b(,)34 b(it's)h(not)0 3325 y(mean)n(t)26 b(to)g(ha)n(v)n(e)e(Python)j
(callbac)n(ks,)d(so)i(a)f(w)n(a)n(y)g(around)g(that)h(is)g(needed.)36
b(Another)26 b(problem)f(is)h(thread)g(supp)r(ort.)36
-b(A)26 b(lot)0 5055 y(of)h(the)g(Op)r(enSSL)g(I/O)e(functions)i(can)g
+b(A)26 b(lot)0 3424 y(of)h(the)g(Op)r(enSSL)g(I/O)e(functions)i(can)g
(blo)r(c)n(k)f(if)h(the)g(so)r(c)n(k)n(et)f(is)g(in)h(blo)r(c)n(king)f
(mo)r(de,)h(and)g(then)g(y)n(ou)f(w)n(an)n(t)g(other)g(Python)0
-5154 y(threads)c(to)g(b)r(e)h(able)f(to)g(do)g(other)g(things.)35
+3524 y(threads)c(to)g(b)r(e)h(able)f(to)g(do)g(other)g(things.)35
b(The)22 b(real)g(trouble)g(is)g(if)h(y)n(ou'v)n(e)e(released)g(the)h
(thread)g(lo)r(c)n(k)g(to)g(do)g(a)g(p)r(oten)n(tially)0
-5254 y(blo)r(c)n(king)27 b(op)r(eration,)f(and)i(the)g(op)r(eration)e
+3624 y(blo)r(c)n(king)27 b(op)r(eration,)f(and)i(the)g(op)r(eration)e
(calls)h(a)g(callbac)n(k.)35 b(Then)28 b(w)n(e)f(m)n(ust)h(tak)n(e)f
-(the)h(thread)f(lo)r(c)n(k)g(bac)n(k)3475 5224 y Fl(5)3511
-5254 y Fr(.)p 0 5323 1560 4 v 92 5377 a Fi(5)127 5400
-y Fh(I'm)22 b(not)j(sure)f(wh)n(y)g(this)g(is)f(necessary)-6
-b(,)25 b(but)f(otherwise)h(I)f(get)h(a)e(segmen)n(tation)i(violation)f
-(on)g Fa(PyEval_CallObject)p 0 5549 3901 4 v 3817 5649
-a Fg(13)p eop end
-%%Page: 14 14
-TeXDict begin 14 13 bop 0 83 a Fr(There)24 b(are)f(t)n(w)n(o)g
-(solutions)h(to)g(the)h(\034rst)f(problem,)g(b)r(oth)h(of)f(whic)n(h)g
-(are)f(necessary)-7 b(.)34 b(The)25 b(\034rst)f(solution)f(to)h(use)h
-(is)f(if)g(the)h(C)0 183 y(callbac)n(k)i(allo)n(ws)f(\021userdata\021)
-33 b(to)28 b(b)r(e)h(passed)e(to)h(it)g(\(an)g(arbitrary)e(p)r(oin)n
-(ter)i(normally\).)37 b(This)28 b(is)g(great!)37 b(W)-7
-b(e)28 b(can)g(set)g(our)0 282 y(Python)i(function)g(ob)5
-b(ject)29 b(as)f(the)i(real)f(userdata)f(and)h(em)n(ulate)g(userdata)f
-(for)h(the)h(Python)f(function)h(in)g(another)e(w)n(a)n(y)-7
-b(.)0 382 y(The)24 b(other)g(solution)g(can)g(b)r(e)h(used)g(if)g(an)f
-(ob)5 b(ject)24 b(with)h(an)f(\021app_data\021)29 b(system)c(alw)n(a)n
-(ys)d(is)j(passed)e(to)h(the)h(callbac)n(k.)35 b(F)-7
-b(or)0 482 y(example,)26 b(the)h(SSL)f(ob)5 b(ject)26
-b(in)h(Op)r(enSSL)f(has)g(app_data)f(functions)i(and)f(in)h(e.g.)36
-b(the)26 b(v)n(eri\034cation)f(callbac)n(ks,)g(y)n(ou)g(can)0
-581 y(retriev)n(e)i(the)i(related)f(SSL)h(ob)5 b(ject.)39
+(the)h(thread)f(lo)r(c)n(k)g(bac)n(k)3475 3593 y Fl(5)3511
+3624 y Fr(.)0 3770 y(There)d(are)f(t)n(w)n(o)g(solutions)h(to)g(the)h
+(\034rst)f(problem,)g(b)r(oth)h(of)f(whic)n(h)g(are)f(necessary)-7
+b(.)34 b(The)25 b(\034rst)f(solution)f(to)h(use)h(is)f(if)g(the)h(C)0
+3870 y(callbac)n(k)i(allo)n(ws)f(\021userdata\021)33
+b(to)28 b(b)r(e)h(passed)e(to)h(it)g(\(an)g(arbitrary)e(p)r(oin)n(ter)i
+(normally\).)37 b(This)28 b(is)g(great!)37 b(W)-7 b(e)28
+b(can)g(set)g(our)0 3970 y(Python)i(function)g(ob)5 b(ject)29
+b(as)f(the)i(real)f(userdata)f(and)h(em)n(ulate)g(userdata)f(for)h(the)
+h(Python)f(function)h(in)g(another)e(w)n(a)n(y)-7 b(.)0
+4069 y(The)24 b(other)g(solution)g(can)g(b)r(e)h(used)g(if)g(an)f(ob)5
+b(ject)24 b(with)h(an)f(\021app_data\021)29 b(system)c(alw)n(a)n(ys)d
+(is)j(passed)e(to)h(the)h(callbac)n(k.)35 b(F)-7 b(or)0
+4169 y(example,)26 b(the)h(SSL)f(ob)5 b(ject)26 b(in)h(Op)r(enSSL)f
+(has)g(app_data)f(functions)i(and)f(in)h(e.g.)36 b(the)26
+b(v)n(eri\034cation)f(callbac)n(ks,)g(y)n(ou)g(can)0
+4269 y(retriev)n(e)i(the)i(related)f(SSL)h(ob)5 b(ject.)39
b(What)29 b(w)n(e)g(do)f(is)g(to)h(set)f(our)g(wrapp)r(er)g
Fm(Connection)c Fr(ob)5 b(ject)28 b(as)g(app_data)g(for)g(the)0
-681 y(SSL)g(ob)5 b(ject,)27 b(and)h(w)n(e)f(can)g(easily)g(\034nd)h
-(the)g(Python)g(callbac)n(k.)0 828 y(The)42 b(other)g(problem)g(is)g
+4368 y(SSL)g(ob)5 b(ject,)27 b(and)h(w)n(e)f(can)g(easily)g(\034nd)h
+(the)g(Python)g(callbac)n(k.)0 4515 y(The)42 b(other)g(problem)g(is)g
(also)f(partially)h(solv)n(ed)f(b)n(y)h(app_data.)80
b(Since)43 b(w)n(e're)e(asso)r(ciating)g(our)g(wrapp)r(er)h(ob)5
-b(jects)0 927 y(with)44 b(the)f(\021real\021)49 b(ob)5
+b(jects)0 4615 y(with)44 b(the)f(\021real\021)49 b(ob)5
b(jects,)46 b(w)n(e)d(can)g(easily)f(access)g(data)g(from)h(the)h
Fm(Connection)39 b Fr(ob)5 b(ject.)83 b(The)43 b(solution)g(then)g(is)0
-1027 y(to)35 b(simply)h(include)g(a)f Fm(PyThreadState)c
+4714 y(to)35 b(simply)h(include)g(a)f Fm(PyThreadState)c
Fr(v)-5 b(ariable)34 b(in)i(the)g Fm(Connection)31 b
Fr(declaration,)37 b(and)e(write)g(macros)f(similar)h(to)0
-1127 y Fm(Py_BEGIN_ALLOW_T)o(HR)o(EAD)o(S)26 b Fr(and)33
+4814 y Fm(Py_BEGIN_ALLOW_T)o(HR)o(EAD)o(S)26 b Fr(and)33
b Fm(Py_END_ALLOW_TH)o(REA)o(DS)26 b Fr(that)33 b(allo)n(ws)e(sp)r
(ecifying)h(of)h(the)g Fm(PyThreadState)27 b Fr(v)-5
-b(ari-)0 1226 y(able)23 b(to)g(use.)35 b(No)n(w)23 b(w)n(e)g(can)g
+b(ari-)0 4914 y(able)23 b(to)g(use.)35 b(No)n(w)23 b(w)n(e)g(can)g
(simply)g(\021b)r(egin)g(allo)n(w)f(threads\021)29 b(b)r(efore)23
b(a)g(p)r(oten)n(tially)g(blo)r(c)n(king)f(op)r(eration,)h(and)g
-(\021end)g(allo)n(w)0 1326 y(threads\021)33 b(b)r(efore)28
-b(calling)e(a)i(callbac)n(k.)0 1605 y Fk(4.3)97 b(A)m(cessing)35
-b(So)s(ck)m(et)e(Metho)s(ds)0 1806 y Fr(W)-7 b(e)27 b(quic)n(kly)e(sa)n
+(\021end)g(allo)n(w)0 5013 y(threads\021)33 b(b)r(efore)28
+b(calling)e(a)i(callbac)n(k.)p 0 5082 1560 4 v 92 5136
+a Fi(5)127 5159 y Fh(I'm)22 b(not)j(sure)f(wh)n(y)g(this)g(is)f
+(necessary)-6 b(,)25 b(but)f(otherwise)h(I)f(get)h(a)e(segmen)n(tation)
+i(violation)f(on)g Fa(PyEval_CallObject)p 0 5549 3901
+4 v 0 5649 a Fg(14)3368 b(4)83 b(Internals)p eop end
+%%Page: 15 15
+TeXDict begin 15 14 bop 0 83 a Fk(4.3)97 b(A)m(cessing)35
+b(So)s(ck)m(et)e(Metho)s(ds)0 283 y Fr(W)-7 b(e)27 b(quic)n(kly)e(sa)n
(w)h(the)g(b)r(ene\034t)h(of)g(wrapping)e(so)r(c)n(k)n(et)g(metho)r(ds)
h(in)h(the)g Fm(SSL.Connection)20 b Fr(class,)26 b(for)g(an)g(easy)f
-(transition)0 1906 y(in)n(to)e(using)f(SSL.)h(The)g(problem)f(here)h
-(is)f(that)h(the)h Fm(socket)c Fr(mo)r(dule)j(lac)n(ks)f(a)g(C)h(API,)h
-(and)e(all)h(the)g(metho)r(ds)g(are)f(declared)0 2005
+(transition)0 383 y(in)n(to)e(using)f(SSL.)h(The)g(problem)f(here)h(is)
+f(that)h(the)h Fm(socket)c Fr(mo)r(dule)j(lac)n(ks)f(a)g(C)h(API,)h
+(and)e(all)h(the)g(metho)r(ds)g(are)f(declared)0 483
y(static.)36 b(One)27 b(approac)n(h)d(w)n(ould)i(b)r(e)h(to)f(ha)n(v)n
(e)g Fm(OpenSSL)d Fr(as)j(a)g(submo)r(dule)h(to)f(the)h
Fm(socket)d Fr(mo)r(dule,)j(placing)f(all)g(the)h(co)r(de)0
-2105 y(in)j(`)p Fq(so)r(ck)n(etmo)r(dule.c)p Fr(',)h(but)f(this)g(is)g
+582 y(in)j(`)p Fq(so)r(ck)n(etmo)r(dule.c)p Fr(',)h(but)f(this)g(is)g
(ob)n(viously)e(not)i(a)f(go)r(o)r(d)g(solution,)h(since)g(y)n(ou)f
(migh)n(t)g(not)h(w)n(an)n(t)f(to)h(imp)r(ort)g(tonnes)f(of)0
-2204 y(extra)f(stu\033)h(y)n(ou're)e(not)i(going)e(to)i(use)f(when)h
+682 y(extra)f(stu\033)h(y)n(ou're)e(not)i(going)e(to)i(use)f(when)h
(imp)r(orting)f(the)i Fm(socket)c Fr(mo)r(dule.)40 b(The)29
-b(other)f(approac)n(h)e(is)j(to)f(someho)n(w)0 2304 y(get)33
+b(other)f(approac)n(h)e(is)j(to)f(someho)n(w)0 782 y(get)33
b(a)g(p)r(oin)n(ter)g(to)h(the)f(metho)r(d)h(to)g(b)r(e)f(called,)i
(either)e(the)h(C)g(function,)h(or)e(a)g(callable)f(Python)i(ob)5
-b(ject.)54 b(This)34 b(is)f(not)0 2404 y(really)26 b(a)i(go)r(o)r(d)f
+b(ject.)54 b(This)34 b(is)f(not)0 881 y(really)26 b(a)i(go)r(o)r(d)f
(solution)g(either,)g(since)g(there's)h(a)f(lot)g(of)h(lo)r(okups)f(in)
-n(v)n(olv)n(ed.)0 2551 y(The)h(w)n(a)n(y)f(it)h(w)n(orks)e(is)i(that)h
+n(v)n(olv)n(ed.)0 1028 y(The)h(w)n(a)n(y)f(it)h(w)n(orks)e(is)i(that)h
(y)n(ou)e(ha)n(v)n(e)g(to)g(supply)h(a)g(\020)7 b Fm(socket)p
Fr(-lik)n(e\021)31 b(transp)r(ort)c(ob)5 b(ject)28 b(to)f(the)i
-Fm(SSL.Connection)p Fr(.)j(The)0 2650 y(only)24 b(requiremen)n(t)f(of)i
+Fm(SSL.Connection)p Fr(.)j(The)0 1128 y(only)24 b(requiremen)n(t)f(of)i
(this)f(ob)5 b(ject)24 b(is)h(that)f(it)h(has)f(a)g Fm(fileno\(\))d
Fr(metho)r(d)k(that)f(returns)g(a)g(\034le)g(descriptor)f(that's)i(v)-5
-b(alid)24 b(at)0 2750 y(the)g(C)g(lev)n(el)f(\(i.e.)36
+b(alid)24 b(at)0 1227 y(the)g(C)g(lev)n(el)f(\(i.e.)36
b(y)n(ou)23 b(can)h(use)f(the)i(system)e(calls)g(read)g(and)h(write\).)
35 b(If)25 b(y)n(ou)e(w)n(an)n(t)g(to)h(use)f(the)h Fm(connect\(\))c
-Fr(or)j Fm(accept\(\))0 2849 y Fr(metho)r(ds)29 b(of)h(the)f
+Fr(or)j Fm(accept\(\))0 1327 y Fr(metho)r(ds)29 b(of)h(the)f
Fm(SSL.Connection)24 b Fr(ob)5 b(ject,)29 b(the)h(transp)r(ort)e(ob)5
b(ject)29 b(has)f(to)h(supply)h(suc)n(h)f(metho)r(ds)g(to)r(o.)41
-b(Apart)29 b(from)0 2949 y(them,)c(an)n(y)e(metho)r(d)h(lo)r(okups)f
+b(Apart)29 b(from)0 1427 y(them,)c(an)n(y)e(metho)r(d)h(lo)r(okups)f
(in)h(the)f Fm(SSL.Connection)18 b Fr(ob)5 b(ject)24
b(that)f(fail)h(are)f(passed)f(on)i(to)f(the)h(underlying)f(transp)r
-(ort)0 3049 y(ob)5 b(ject.)0 3196 y(F)-7 b(uture)25 b(c)n(hanges)f
+(ort)0 1526 y(ob)5 b(ject.)0 1673 y(F)-7 b(uture)25 b(c)n(hanges)f
(migh)n(t)h(b)r(e)g(to)g(allo)n(w)f(Python-lev)n(el)g(transp)r(ort)g
(ob)5 b(jects,)25 b(that)g(instead)g(of)g(ha)n(ving)g
-Fm(fileno\(\))d Fr(metho)r(ds,)0 3295 y(ha)n(v)n(e)h
+Fm(fileno\(\))d Fr(metho)r(ds,)0 1773 y(ha)n(v)n(e)h
Fm(read\(\))g Fr(and)h Fm(write\(\))e Fr(metho)r(ds,)k(so)e(more)f(adv)
-5 b(anced)24 b(features)h(of)f(Python)h(can)g(b)r(e)g(used.)35
-b(This)25 b(w)n(ould)f(probably)0 3395 y(en)n(tail)36
+b(This)25 b(w)n(ould)f(probably)0 1872 y(en)n(tail)36
b(some)g(sort)g(of)g(Op)r(enSSL)h(\020BIOs\021,)g(but)g(con)n(v)n
(erting)e(Python)i(strings)e(bac)n(k)h(and)g(forth)g(is)h(exp)r(ensiv)n
-(e,)h(so)e(this)0 3494 y(shouldn't)f(b)r(e)h(used)f(unless)g(necessary)
+(e,)h(so)e(this)0 1972 y(shouldn't)f(b)r(e)h(used)f(unless)g(necessary)
-7 b(.)57 b(Other)35 b(nice)g(things)g(w)n(ould)g(b)r(e)g(to)g(b)r(e)h
(able)e(to)h(pass)g(in)g(di\033eren)n(t)g(transp)r(ort)0
-3594 y(ob)5 b(jects)41 b(for)g(reading)f(and)h(writing,)j(but)e(then)g
+2072 y(ob)5 b(jects)41 b(for)g(reading)f(and)h(writing,)j(but)e(then)g
(the)g Fm(fileno\(\))c Fr(metho)r(d)k(of)47 b Fm(SSL.Connection)36
-b Fr(b)r(ecomes)41 b(virtually)0 3694 y(useless.)36 b(Also,)27
+b Fr(b)r(ecomes)41 b(virtually)0 2171 y(useless.)36 b(Also,)27
b(should)h(the)g(metho)r(d)g(resolution)e(b)r(e)i(used)g(on)f(the)h
(read-transp)r(ort)d(or)i(the)h(write-transp)r(ort?)p
-0 5549 3901 4 v 0 5649 a Fg(14)3368 b(4)83 b(Internals)p
-eop end
+0 5549 3901 4 v 0 5649 a Fg(4.3)82 b(A)n(cessing)26 b(So)r(ck)n(et)h
+(Metho)r(ds)2744 b(15)p eop end
%%Trailer
userdict /end-hook known{end-hook}if