Legal note for using the STTA source (PERL CGI source)
+
+
+This program is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Please note that STTA is among or embed with other technologies that use
+their own license, check and read terms and conditions en each case.
+Webmin, Tarantella, your LDAP Software choice, Perl, etc. have their
+own trademark and distributed and use license.
+ Contact the authors or owners for details.
Legal note for using the STTA source (PERL CGI source)
+
+
+This program is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Please note that STTA is among or embed with other technologies that use
+their own license, check and read terms and conditions en each case.
+Webmin, Tarantella, your LDAP Software choice, Perl, etc. have their
+own trademark and distributed and use license.
+ Contact the authors or owners for details.
+
+
diff --git a/~downloads/files/.info b/~downloads/files/.info
new file mode 100644
index 0000000..0b21fdf
--- /dev/null
+++ b/~downloads/files/.info
@@ -0,0 +1,8 @@
+Each STTA pack has his own stamp directory ej: DIR: 2003_6_02_132702.
+STTA package in Webmin format is available in each stamp directory.
+DIR: last_deploy_vers contains las deployment version.
+DIR: last_develop_vers contains las development version.
+DIR: tools has some software required to install STTA.
+DIR: solaris has Solaris software packages for STTA installation.
+DIR: old has old STTA patches and packages (mostly obsolete).
+
diff --git a/~downloads/files/.info.es b/~downloads/files/.info.es
new file mode 100644
index 0000000..2ba2333
--- /dev/null
+++ b/~downloads/files/.info.es
@@ -0,0 +1,9 @@
+Cada empaquetado de STTA tiene su propio directorio 'stamp' ej: DIR: 2003_6_02_132702.
+El paquete de STTA en formato Webmin está disponible en cada directorio 'stamp'.
+DIR: last_deploy_vers contiene la última versión para explotación.
+DIR: last_develop_vers contiene la última versión en desarrollo.
+DIR: tools tiene algún software necesario para instalar STTA.
+DIR: solaris tiene empaquetados de software para Solaris necesarios para instalar STTA.
+DIR: old contiene parches y empaquetados de STTA anteriores (la mayoría obsoletos).
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/head b/~downloads/files/2003_6_02_132702/.eng/head
new file mode 100644
index 0000000..0eeb75d
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/head
@@ -0,0 +1,4 @@
+
+ 2003_6_02_132702
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/howtopatch b/~downloads/files/2003_6_02_132702/.eng/howtopatch
new file mode 100644
index 0000000..1733c15
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/howtopatch
@@ -0,0 +1,6 @@
+
+
+ To pach do: cd webmin-install-dir ; cat patch_file | gunzip | tar xvf -
+ To ajdust brand on files and sync scripts the following should be executed:
+ cd webmin-install-dir/stta ; ./mktools.sh es webmin-etc-dir
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130604-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130604-01
new file mode 100644
index 0000000..e71a1b6
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130604-01
@@ -0,0 +1,10 @@
+
+
+
+
+patch_130604-01.tar.gz should be installed on STTA (strongly recommended).
+
+
%W% To fix grp-hosts-modify and description in move objects.
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130609-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130609-01
new file mode 100644
index 0000000..a51604f
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130609-01
@@ -0,0 +1,10 @@
+
+
+
+patch_130609-01.tar.gz should be installed on STTA (strongly recommended).
+
To fix feedback so ziptools now works, to remore comment dir before run.
+
To fix feedback so "packcmd" can have i$HOSTTIME to be replace by "hostname-datetime".
+
To fix globals-lib so "date-time-filenames" will have month format as day (ex: "05" for May).
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130612-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130612-01
new file mode 100644
index 0000000..d18166d
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130612-01
@@ -0,0 +1,18 @@
+
+
+
+
+patch_130612-01.tar.gz should be installed on STTA (recommended).
+
+
To fix moving objects including something among parenthesis in name string.
+
%W% This cause multiple effects as:
+
- broken links in STTA objects tables
+
- STTA can not manage and find object entries in TTA and LDAPs
+
- LDPA-Cache credentials are not moved from the origin to the target object.
+
- LDAP-Cache empty structures are not deleted if all appliation or server credentials are moved.
+
+
To fix copy task between objects avoiding loosing original entry and doing all steps fine.
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130613-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130613-01
new file mode 100644
index 0000000..eca1dd7
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130613-01
@@ -0,0 +1,12 @@
+
+
+
+
+patch_130613-01.tar.gz should be installed on STTA (recommended).
+
+
%W% To fix modify or moving character application objects
+
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130620-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130620-01
new file mode 100644
index 0000000..c6b2cec
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130620-01
@@ -0,0 +1,42 @@
+
+
+
+
+patch_130604-01.tar.gz should be installed on STTA (recommended) ( 8 cgis 4 libs)
+
+
%W% Fix Organizations Browser use in users management
+
%W% Fix grooups records show in Browser
+
%OK% Change objects name color and underline attributes in Browser
+
%OK% Show selection criteria when selecting users
+
%OK% Several changes to manage help "text strings".
+
%OK% Help windows management are associtated to cgis (better help context sensibility)
+
%OK% Include "interface" configuration parameters for help windows size
+
%OK% New "brandmgr.pl" tool to get brandinfo from command line (generates html and debug)
+
%OK% "stta_brandmgr.cgi" is not accesible from STTA menu for support reasons
+
%OK% New "stta_brandlst.cgi" from STTA menu show brand-info list
+
%OK% Brand info data, plus brandmgr.pl output are included in STTA feedbacks
+
%OK% Update several Spanish help documents
+
%W% Directory stta/help should be removed before patch
+ To pach do: cd webmin-install-dir ; rm -r stta/help
+
+patch_030705-01.tar.gz should be installed on STTA (recommended) ( 5 cgis 2 biblo 1 shell)
+
%W% Fix "ensload" (shell has errors)
+
%I% Partial ENS dumps are allowed by selection from interface (no changes in ensdump script)
+
%I% LDAPs (ldifs) dumps can show file name output
+
%I% System calls are changed in "TTA Backup" and "STTA feedback"
+
%OK% tta_status fixed to show process list
+
%OK% Use of a small html css style to easy manage and read hyperlinks in pages
+ ( two classes in parallel to table header and body colors - all front-end adjusted )
+
%OK% Several changes to manage help and forms "text strings".
+
%OK% Update several Spanish help documents
+
%W% Directory stta/help should be removed before patch
+ To pach do: cd webmin-install-dir ; rm -r stta/help ;
+
+
+
%OK% Fija feedback (comentarios) parámetro zipool, borra el contenido del directorio si existe.
+
%OK% Fija feedback (comentarios) la orden de empaquetado puede incluir $HOSTTIME a sustituir por "nombre-host-día-hora".
+
%OK% Fija globals-lib los "nombresfichero-día-hora" tendrán el mes como el formato del día (ej: "05" para Mayo).
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130705-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130705-01
new file mode 100644
index 0000000..0f4d554
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130705-01
@@ -0,0 +1,21 @@
+
+
+
+
+patch_130705-01.tar.gz should be installed on STTA (recommended) ( 25 cgis 8 libs 1 shell)
+
+
%W% Fix "ensload" (shell has errors)
+
%I% Partial ENS dumps are allowed by selection from interface (no changes in ensdump script)
+
%I% LDAPs (ldifs) dumps can show file name output
+
%I% System calls are changed in "TTA Backup" and "STTA feedback"
+
%OK% tta_status fixed to show process list
+
%OK% Use of a small html css style to easy manage and read hyperlinks in pages
+ ( two classes in parallel to table header and body colors - all front-end adjusted )
+
%OK% Several changes to manage help and forms "text strings".
+
%OK% Update several Spanish help documents
+
%W% Directory stta/help should be removed before patch
+ To pach do: cd webmin-install-dir ; rm -r stta/help ;
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130731-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130731-01
new file mode 100644
index 0000000..5055e63
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130731-01
@@ -0,0 +1,20 @@
+
+
+
+
+patch_130731-01.tar.gz should be installed on STTA (recommended) ( 3 cgis 3 libs 1 shell)
+
+
%I% Fix "synclist" and others minor adjustments
+
%I% "ttacache-lib" has a string text change
+
%N% Change of "system message box" (STTA environment message style)
+ to use box or marquee a new parameter is available in "interface": motd_style
+
%I% Copies Directory is managed by using a new parameter in "stta": stta_savedir
+
%W% "mkhelplang.sh" is fixed to work scanning STTA_TOOLS directory.
+
%OK% Several changes to manage help and forms "text strings" (web-lib.pl), etc.
+
%OK% Update several Spanish help documents
+
%W% Directory stta/help should be removed before patch
+ To pach do: cd webmin-install-dir ; rm -r stta/help ;
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130731-02 b/~downloads/files/2003_6_02_132702/.eng/patch_130731-02
new file mode 100644
index 0000000..68689c4
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130731-02
@@ -0,0 +1,13 @@
+
+
+
+
+patch_130731-02.tar.gz should be installed on STTA (recommended) ( 0 cgis 1 libs 0 shell)
+
+
%OK% Fix STTA architecture spanish page.
+
%OK% Fix Make Web Help for STTA configuration items
+ To pach do: cd webmin-install-dir
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130812-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130812-01
new file mode 100644
index 0000000..a630fbc
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130812-01
@@ -0,0 +1,21 @@
+
+
+
+
+patch_130812-01.tar.gz should be installed on STTA (recommended) ( 3 cgis 4 libs 1 shell)
+
+
%OK% CSS fix for menu2 class according to interface colors.
+
%I% Help configuration management is changed
+
%I% New functions to manage help configuration items (index, links, etc).
+
%N% Parameters are shown in order and with links to help in configuration interface
+ Valid parameters and their order are stablish in webmin-dir/stta/dataconf/base
+
%W% "mkhelplang.sh" is fixed to work with current help directory structure.
+
%OK% Several changes to manage help and forms "text strings" (web-lib.pl), etc.
+
%OK% Update several Spanish help documents
+
%W% Directory stta/help should be removed before patch
+ Do: cd webmin-install-dir ; rm -r stta/help ;
+
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130826-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130826-01
new file mode 100644
index 0000000..4d2dd8a
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130826-01
@@ -0,0 +1,10 @@
+
+
+
+
+patch_130826-01.tar.gz should be installed on STTA (strongly recommended).
+
+
%W% To fix STTA help pages under Perl 5.8.0.
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130902-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130902-01
new file mode 100644
index 0000000..6bf4b20
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130902-01
@@ -0,0 +1,10 @@
+
+
+
+
+patch_130902-01.tar.gz should be installed on STTA (strongly recommended).
+
+
%W% To fix applications copies due to TTA attributes differences between command interface and dump info.
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130905-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130905-01
new file mode 100644
index 0000000..aa7cd63
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130905-01
@@ -0,0 +1,11 @@
+
+
+
+
+patch_130905-01.tar.gz should be installed on STTA (strongly recommended).
+
+
%W% To fix applications copies whit multiples hosts.
+
%I% Use an icon for URLS (favicon).
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_130915-01 b/~downloads/files/2003_6_02_132702/.eng/patch_130915-01
new file mode 100644
index 0000000..d64590d
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_130915-01
@@ -0,0 +1,20 @@
+
+
+
+
+patch_130915-01.tar.gz should be installed on STTA (recommended) ( 2 cgis 2 libs )
+
+
%OK% CSS fix for main status windows.
+
%I% New functions to manage help configuration items (index, links, etc).
+
%OK% Fix config directory help in making web help.
+
%I% Help version (now 3.0) and generated page datetime are added to page head and foot.
+
%N% Parameters order changed
+
%OK% Several changes to manage help and help configuration parameters.
+
%OK% Update several Spanish help documents
+
%W% Directory stta/help should be removed before patch
+ Do: cd webmin-install-dir ; rm -r stta/help ;
+
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_131107-01 b/~downloads/files/2003_6_02_132702/.eng/patch_131107-01
new file mode 100644
index 0000000..d5fbe98
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_131107-01
@@ -0,0 +1,24 @@
+
+
+
+
+patch_131107-01.tar.gz should be installed on STTA (recommended) ( 10 cgis 9 libs )
+
+
%N% "STTA book" in pdf format, access, publish web and local download.
+
%I% Changes in help manager in intall/update wizard
+
%OK% Fix web help maker with relative paths.
+
%OK% Fix Tarantella configuration load and port checking for version 3.4
+
%I% File branding is close, in each request is checked and stop if code changes are found.
+
%I% Branding code managers regist changes nad bytes differences.
+
%I% Help General item from forms are removed.
+
%I% Help items are completed and several new are included (spanish).
+
%I% Info pages for install/update wizard are common to geneal help and are completed for Spanish.
+
%OK% Several changes to mange help "string text", objects and links.
+
%OK% Help Version is now 3.1
+
%I% Tarantella Applications attributes are included to use them under 3.4 (english)
+
%W% stta/help should be fully removed before to apply patch
+ To pach do: cd webmin-install-dir ; rm -r stta/help
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_131201-01 b/~downloads/files/2003_6_02_132702/.eng/patch_131201-01
new file mode 100644
index 0000000..33dbbaf
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_131201-01
@@ -0,0 +1,14 @@
+
+
+
+
+patch_131201-01.tar.gz should be installed on STTA (recommended) ( 2 cgis 2 libs )
+
+
%OK% Fix default init values in STTA installation procedure.
+
%OK% Fix objects copies without default LDAP-CACHE credential associated.
+
%I% Allow access to default values for TTA application types (see help on new application)
+>
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.eng/patch_131230-01 b/~downloads/files/2003_6_02_132702/.eng/patch_131230-01
new file mode 100644
index 0000000..13e6b68
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.eng/patch_131230-01
@@ -0,0 +1,13 @@
+
+
+
+
+patch_131230-01.tar.gz should be installed on STTA (recommended) ( 1 cgis 1 libs )
+
+
%OK% Fix multiple passwords changes.
+
%OK% Fix spanish help files.
+>
+
+
+
+
diff --git a/~downloads/files/2003_6_02_132702/.info b/~downloads/files/2003_6_02_132702/.info
new file mode 100644
index 0000000..e2f30c3
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.info
@@ -0,0 +1,20 @@
+module.info.txt has the current STTA Webmin module info.
+brandinfofile has the current branding for STTA files.
+stta-1.3.wbm.gz is the STTA package in Webmin format.
+
+%W% patch_130604-01.tar.gz should be installed on STTA (strongly recommended).
+%W% patch_130609-01.tar.gz should be installed on STTA (strongly recommended).
+%I% patch_130612-01.tar.gz should be installed on STTA (recommended).
+%I% patch_130613-01.tar.gz should be installed on STTA ( recommended).
+%W% patch_130620-01.tar.gz should be installed on STTA (strongly recommended)
+%I% patch_130705-01.tar.gz should be installed on STTA ( recommended).
+%I% patch_130731-01.tar.gz should be installed on STTA ( recommended).
+%I% patch_130731-02.tar.gz should be installed on STTA ( recommended).
+%I% patch_130812-01.tar.gz should be installed on STTA ( recommended).
+%W% patch_130826-01.tar.gz should be installed on STTA (strongly recommended).
+%W% patch_130902-01.tar.gz should be installed on STTA (strongly recommended).
+%W% patch_130905-01.tar.gz should be installed on STTA (strongly recommended).
+%I% patch_130915-01.tar.gz should be installed on STTA ( recommended).
+%I% patch_131107-01.tar.gz should be installed on STTA ( recommended).
+%I% patch_1311201-01.tar.gz should be installed on STTA ( recommended).
+%I% patch_1311230-01.tar.gz should be installed on STTA ( recommended).
diff --git a/~downloads/files/2003_6_02_132702/.info.es b/~downloads/files/2003_6_02_132702/.info.es
new file mode 100644
index 0000000..33c2bb2
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/.info.es
@@ -0,0 +1,20 @@
+module.info.txt contiene la información correpondiente del módulo STTA en formato Webmin
+brandinfofile tiene la marca o 'brand' correspondiente de los ficheros de STTA.
+stta-1.3.wbm.gz es el paquete de STTA en formato Webmin.
+
+%W% patch_130604-01.tar.gz debe ser instalado sobre STTA (se recomienda encarecidamente)
+%W% patch_130609-01.tar.gz debe ser instalado sobre STTA (se recomienda encarecidamente)
+%I% patch_130612-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_130613-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%W% patch_130620-01.tar.gz debe ser instalado sobre STTA (se recomienda encarecidamente)
+%I% patch_130705-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_130731-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_130731-02.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_130812-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%W% patch_130826-01.tar.gz debe ser instalado sobre STTA (se recomienda encarecidamente)
+%W% patch_130902-01.tar.gz debe ser instalado sobre STTA (se recomienda encarecidamente)
+%W% patch_130905-01.tar.gz debe ser instalado sobre STTA (se recomienda encarecidamente)
+%I% patch_130915-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_131107-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_131201-01.tar.gz debe ser instalado sobre STTA (se recomienda)
+%I% patch_131230-01.tar.gz debe ser instalado sobre STTA (se recomienda)
diff --git a/~downloads/files/2003_6_02_132702/brandinfofile b/~downloads/files/2003_6_02_132702/brandinfofile
new file mode 100755
index 0000000..1d434f1
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/brandinfofile
@@ -0,0 +1,254 @@
+stta/acl_security.pl::1.31051043346-::9400::[2003_6_02_132702]::
+stta/addact.cgi::1.31051043346-::4577::[2003_6_02_132702]::
+stta/addapps.cgi::1.31051043346-::4553::[2003_6_02_132702]::
+stta/adddomains.cgi::1.31051043346-::3542::[2003_6_02_132702]::
+stta/addfile.cgi::1.31051043346-::3066::[2003_6_02_132702]::
+stta/addgrpapps.cgi::1.31051043346-::4300::[2003_6_02_132702]::
+stta/addgrphosts.cgi::1.31051043346-::4823::[2003_6_02_132702]::
+stta/addhosts.cgi::1.31051043346-::5410::[2003_6_02_132702]::
+stta/addhostsuser.cgi::1.31051043346-::1511::[2003_6_02_132702]::
+stta/addlinks.cgi::1.31051043346-::3360::[2003_6_02_132702]::
+stta/addobj.cgi::1.31051043346-::4769::[2003_6_02_132702]::
+stta/addou.cgi::1.31051043346-::4994::[2003_6_02_132702]::
+stta/addprofcache.cgi::1.31051043346-::1819::[2003_6_02_132702]::
+stta/addusr.cgi::1.31051043346-::9220::[2003_6_02_132702]::
+stta/app-lib.pl::1.31051043346-::4827::[2003_6_02_132702]::
+stta/base-lib.pl::1.31051043346-::9950::[2003_6_02_132702]::
+stta/brandmgr.pl::1.31068182932-::6047::[2003_11_07_062851]::
+stta/cache_addapps.cgi::1.31051043346-::7831::[2003_6_02_132702]::
+stta/cache_adddomains.cgi::1.31051043346-::6204::[2003_6_02_132702]::
+stta/cache_addgrpapps.cgi::1.31051043346-::6226::[2003_6_02_132702]::
+stta/cache_addobj.cgi::1.31051043346-::13331::[2003_6_02_132702]::
+stta/cache_delapps.cgi::1.31051043346-::2923::[2003_6_02_132702]::
+stta/cache_deldomains.cgi::1.31051043346-::3017::[2003_6_02_132702]::
+stta/cache_delgrpapps.cgi::1.31051043346-::3035::[2003_6_02_132702]::
+stta/cache_delobj.cgi::1.31056101209-::6467::[2003_06_20_112649]::
+stta/cache_filter.cgi::1.31051043346-::15361::[2003_6_02_132702]::
+stta/cache_modapps.cgi::1.31055491066-::6980::[2003_06_13_095746]::
+stta/cache_moddomains.cgi::1.31051043346-::5213::[2003_6_02_132702]::
+stta/cache_modgrpapps.cgi::1.31051043346-::8129::[2003_6_02_132702]::
+stta/cache_modobj.cgi::1.31051043346-::6343::[2003_6_02_132702]::
+stta/cache_mvapps.cgi::1.31051043346-::301::[2003_6_02_132702]::
+stta/cache_mvdomains.cgi::1.31051043346-::307::[2003_6_02_132702]::
+stta/cache_mvgrpapps.cgi::1.31051043346-::307::[2003_6_02_132702]::
+stta/cache_selapps.cgi::1.31051043346-::4471::[2003_6_02_132702]::
+stta/cache_seldomains.cgi::1.31051043346-::4573::[2003_6_02_132702]::
+stta/cache_selgrpapps.cgi::1.31051043346-::4809::[2003_6_02_132702]::
+stta/cache_selobj.cgi::1.31057471415-::15169::[2003_07_06_080334]::
+stta/cleanfile.cgi::1.31051043346-::2728::[2003_6_02_132702]::
+stta/config.cgi::1.31060696031-::1872::[2003_08_12_154710]::
+stta/config_info.pl::1.31060696031-::19816::[2003_08_12_154710]::
+stta/delact.cgi::1.31051043346-::1749::[2003_6_02_132702]::
+stta/delapps.cgi::1.31051043346-::2288::[2003_6_02_132702]::
+stta/deldomains.cgi::1.31051043346-::2425::[2003_6_02_132702]::
+stta/delfile.cgi::1.31051043346-::2584::[2003_6_02_132702]::
+stta/delgrpapps.cgi::1.31051043346-::2428::[2003_6_02_132702]::
+stta/delgrphosts.cgi::1.31051043346-::2217::[2003_6_02_132702]::
+stta/delhosts.cgi::1.31051043346-::2171::[2003_6_02_132702]::
+stta/delhostsuser.cgi::1.31051043346-::1213::[2003_6_02_132702]::
+stta/dellinks.cgi::1.31051043346-::2383::[2003_6_02_132702]::
+stta/delobj.cgi::1.31051043346-::2503::[2003_6_02_132702]::
+stta/delou.cgi::1.31051043346-::2553::[2003_6_02_132702]::
+stta/delprofcache.cgi::1.31051043346-::1288::[2003_6_02_132702]::
+stta/delusr.cgi::1.31051043346-::4462::[2003_6_02_132702]::
+stta/dir_save.cgi::1.31059653812-::404::[2003_07_31_141652]::
+stta/dirdef_stta.cgi::1.31051043346-::409::[2003_6_02_132702]::
+stta/dirlogs_cache.cgi::1.31051043346-::425::[2003_6_02_132702]::
+stta/dirlogs_tta.cgi::1.31051043346-::408::[2003_6_02_132702]::
+stta/feedback.cgi::1.31057471415-::17508::[2003_07_06_080334]::
+stta/feedback_form.cgi::1.31051043346-::5078::[2003_6_02_132702]::
+stta/file_clean.cgi::1.31051043346-::4529::[2003_6_02_132702]::
+stta/file_deflists.cgi::1.31051043346-::3116::[2003_6_02_132702]::
+stta/file_del.cgi::1.31051043346-::4389::[2003_6_02_132702]::
+stta/file_manager.cgi::1.31057471414-::10495::[2003_07_06_080334]::
+stta/file_mod.cgi::1.31059653812-::9797::[2003_07_31_141652]::
+stta/file_showlist.cgi::1.31051043346-::7260::[2003_6_02_132702]::
+stta/fixhosts.cgi::1.31051043346-::2122::[2003_6_02_132702]::
+stta/fixobjs.cgi::1.31051043346-::5181::[2003_6_02_132702]::
+stta/footer.pl::1.31068182931-::1339::[2003_11_07_062851]::
+stta/global-lib.pl::1.31068182932-::55908::[2003_11_07_062851]::
+stta/global.js::1.31051043346-::5882::[2003_6_02_132702]::
+stta/help-lib.pl::1.31068466344-::27062::[2003_11_10_131224]::
+stta/help.cgi::1.31068182932-::4085::[2003_11_07_062851]::
+stta/host_chooser.cgi::1.31057471415-::8241::[2003_07_06_080334]::
+stta/html-lib.pl::1.31068182932-::62506::[2003_11_07_062851]::
+stta/index.cgi::1.31051043346-::1259::[2003_6_02_132702]::
+stta/index/admin.pl::1.31056101209-::4105::[2003_06_20_112649]::
+stta/index/apps.pl::1.31051043346-::1008::[2003_6_02_132702]::
+stta/index/browsers.pl::1.31051043346-::929::[2003_6_02_132702]::
+stta/index/domains.pl::1.31051043346-::1065::[2003_6_02_132702]::
+stta/index/grpapps.pl::1.31051043346-::1012::[2003_6_02_132702]::
+stta/index/grphosts.pl::1.31051043346-::1078::[2003_6_02_132702]::
+stta/index/hosts.pl::1.31051043346-::1076::[2003_6_02_132702]::
+stta/index/hostsuser.pl::1.31051043346-::997::[2003_6_02_132702]::
+stta/index/index_table.pl::1.31051043346-::1742::[2003_6_02_132702]::
+stta/index/index_tabs.pl::1.31057471415-::4704::[2003_07_06_080334]::
+stta/index/insupd.pl::1.31068182932-::1003::[2003_11_07_062851]::
+stta/index/ldap.pl::1.31051043346-::5905::[2003_6_02_132702]::
+stta/index/ldapcache.pl::1.31051043346-::847::[2003_6_02_132702]::
+stta/index/ldapprofile.pl::1.31051043346-::843::[2003_6_02_132702]::
+stta/index/links.pl::1.31051043346-::959::[2003_6_02_132702]::
+stta/index/master.pl::1.31051043346-::862::[2003_6_02_132702]::
+stta/index/monitor.pl::1.31051043346-::830::[2003_6_02_132702]::
+stta/index/objects.pl::1.31051043346-::2053::[2003_6_02_132702]::
+stta/index/ou.pl::1.31051043346-::1176::[2003_6_02_132702]::
+stta/index/password.pl::1.31051043346-::841::[2003_6_02_132702]::
+stta/index/servers.pl::1.31051043346-::2695::[2003_6_02_132702]::
+stta/index/supervision.pl::1.31051043346-::5170::[2003_6_02_132702]::
+stta/index/tta.pl::1.31051043346-::4660::[2003_6_02_132702]::
+stta/index/users.pl::1.31051043346-::1229::[2003_6_02_132702]::
+stta/installupd-lib.pl::1.31068182932-::25629::[2003_11_07_062851]::
+stta/inststta-lib.pl::1.31051043346-::30745::[2003_6_02_132702]::
+stta/ldap-lib.pl::1.31055419200-::39074::[2003_06_12_140000]::
+stta/ldap_backup.cgi::1.31051043346-::1405::[2003_6_02_132702]::
+stta/ldap_ldif.cgi::1.31057471414-::1430::[2003_07_06_080334]::
+stta/ldap_load.cgi::1.31051043346-::2772::[2003_6_02_132702]::
+stta/ldap_loglist.cgi::1.31051043346-::6162::[2003_6_02_132702]::
+stta/ldap_replica.cgi::1.31051043346-::1311::[2003_6_02_132702]::
+stta/ldap_restart.cgi::1.31051043346-::2783::[2003_6_02_132702]::
+stta/ldap_schema.cgi::1.31051043346-::1404::[2003_6_02_132702]::
+stta/ldapbase-lib.pl::1.31051043346-::8151::[2003_6_02_132702]::
+stta/ldapcache_backup.cgi::1.31051043346-::1500::[2003_6_02_132702]::
+stta/ldapcache_ldif.cgi::1.31057471414-::1546::[2003_07_06_080334]::
+stta/ldapcache_load.cgi::1.31051043346-::2861::[2003_6_02_132702]::
+stta/ldapcache_restart.cgi::1.31051043346-::2933::[2003_6_02_132702]::
+stta/ldapcache_schema.cgi::1.31051043346-::1481::[2003_6_02_132702]::
+stta/license.cgi::1.31057471415-::1303::[2003_07_06_080334]::
+stta/lists-lib.pl::1.31055415586-::35022::[2003_06_12_125945]::
+stta/localenv_vars.sh::1.31051043346-::431::[2003_6_02_132702]::
+stta/log_http.cgi::1.31051043346-::361::[2003_6_02_132702]::
+stta/log_httpacc.cgi::1.31051043346-::369::[2003_6_02_132702]::
+stta/log_https.cgi::1.31051043346-::364::[2003_6_02_132702]::
+stta/log_httpsacc.cgi::1.31051043346-::373::[2003_6_02_132702]::
+stta/log_ldap.cgi::1.31051043346-::376::[2003_6_02_132702]::
+stta/log_parser.pl::1.31051043346-::1104::[2003_6_02_132702]::
+stta/log_stta.cgi::1.31051043346-::403::[2003_6_02_132702]::
+stta/log_system.cgi::1.31051043346-::412::[2003_6_02_132702]::
+stta/logldap_acc.cgi::1.31051043346-::376::[2003_6_02_132702]::
+stta/logldap_cache.cgi::1.31051043346-::391::[2003_6_02_132702]::
+stta/logldapcache_acc.cgi::1.31051043346-::391::[2003_6_02_132702]::
+stta/logs_list.cgi::1.31051043346-::364::[2003_6_02_132702]::
+stta/logusers_ldap.cgi::1.31051043346-::358::[2003_6_02_132702]::
+stta/mkhelplang.sh::1.31060696031-::1435::[2003_08_12_154710]::
+stta/mktools.sh::1.31051043346-::6015::[2003_6_02_132702]::
+stta/modact.cgi::1.31051043346-::3649::[2003_6_02_132702]::
+stta/modapps.cgi::1.31051043346-::4335::[2003_6_02_132702]::
+stta/moddomains.cgi::1.31051043346-::2872::[2003_6_02_132702]::
+stta/modfile.cgi::1.31051043346-::2680::[2003_6_02_132702]::
+stta/modgrpapps.cgi::1.31051043346-::3891::[2003_6_02_132702]::
+stta/modgrphosts.cgi::1.31054739308-::3168::[2003_6_04_170828]::
+stta/modhosts.cgi::1.31051043346-::4952::[2003_6_02_132702]::
+stta/modlinks.cgi::1.31051043346-::2919::[2003_6_02_132702]::
+stta/modobj.cgi::1.31051043346-::2462::[2003_6_02_132702]::
+stta/modou.cgi::1.31051043346-::4036::[2003_6_02_132702]::
+stta/modusr.cgi::1.31051043346-::6354::[2003_6_02_132702]::
+stta/mon_actarget.cgi::1.31051043346-::16760::[2003_6_02_132702]::
+stta/mon_actdef.cgi::1.31051043346-::9003::[2003_6_02_132702]::
+stta/mon_delact.cgi::1.31051043346-::6091::[2003_6_02_132702]::
+stta/mon_runact.cgi::1.31051043346-::2005::[2003_6_02_132702]::
+stta/mon_script.cgi::1.31051043346-::466::[2003_6_02_132702]::
+stta/mon_selact.cgi::1.31057471415-::10627::[2003_07_06_080334]::
+stta/monitor-lib.pl::1.31057471415-::10150::[2003_07_06_080334]::
+stta/monitor.cgi::1.31051043346-::7011::[2003_6_02_132702]::
+stta/monitor.pl::1.31051043346-::5156::[2003_6_02_132702]::
+stta/mvobjs.cgi::1.31062763032-::11030::[2003_09_05_135712]::
+stta/obj_chooser.cgi::1.31057471415-::6258::[2003_07_06_080334]::
+stta/passwd.cgi::1.31051043346-::2454::[2003_6_02_132702]::
+stta/postinstall.pl::1.31051043346-::1306::[2003_6_02_132702]::
+stta/print-lib.pl::1.31051043346-::4003::[2003_6_02_132702]::
+stta/runfile.cgi::1.31051043346-::2875::[2003_6_02_132702]::
+stta/search.cgi::1.31057471415-::4642::[2003_07_06_080334]::
+stta/sess_filter.cgi::1.31068182932-::3890::[2003_11_07_062851]::
+stta/sess_mgmt.cgi::1.31057471415-::2244::[2003_07_06_080334]::
+stta/setup_config.pl::1.31051043346-::5037::[2003_6_02_132702]::
+stta/shells/ensdump.sh::1.31051043346-::506::[2003_6_02_132702]::
+stta/shells/ensload.sh::1.31057471955-::1063::[2003_07_06_081235]::
+stta/shells/ensrecreate.sh::1.31051043346-::1216::[2003_6_02_132702]::
+stta/shells/ensrestore.sh::1.31051043346-::828::[2003_6_02_132702]::
+stta/shells/getOSdata.sh::1.31051043346-::354::[2003_6_02_132702]::
+stta/shells/ldapreplicate.sh::1.31051043346-::6370::[2003_6_02_132702]::
+stta/shells/monitor.sh::1.31051043346-::532::[2003_6_02_132702]::
+stta/shells/oldapadm.sh::1.31051043346-::4545::[2003_6_02_132702]::
+stta/shells/openldap.sh::1.31051043346-::3194::[2003_6_02_132702]::
+stta/shells/scanttacache.sh::1.31051043346-::5657::[2003_6_02_132702]::
+stta/shells/setenv_vars.sh::1.31051043346-::2024::[2003_6_02_132702]::
+stta/shells/stta.sh::1.31051043346-::793::[2003_6_02_132702]::
+stta/shells/tta.sh::1.31051043346-::252::[2003_6_02_132702]::
+stta/shells/ttabackup.sh::1.31051043346-::1247::[2003_6_02_132702]::
+stta/shells/ttasess.sh::1.31051043346-::387::[2003_6_02_132702]::
+stta/shells/ttatcl.sh::1.31051043346-::324::[2003_6_02_132702]::
+stta/stta-lib.pl::1.31051043346-::21501::[2003_6_02_132702]::
+stta/stta_brandmgr.cgi::1.31068182932-::8233::[2003_11_07_062851]::
+stta/stta_brandlst.cgi::1.31068182932-::5043::[2003_11_07_062851]::
+stta/stta_checksync.cgi::1.31051043346-::10488::[2003_6_02_132702]::
+stta/stta_installupd.cgi::1.31068182932-::6821::[2003_11_07_062851]::
+stta/stta_mvobjs.cgi::1.31051043346-::8442::[2003_6_02_132702]::
+stta/stta_proc.cgi::1.31051043346-::1184::[2003_6_02_132702]::
+stta/stta_report.cgi::1.31068182932-::6065::[2003_11_07_062851]::
+stta/stta_synclist.cgi::1.31063615106-::1288::[2003_09_15_103826]::
+stta/stta_view.cgi::1.31051043346-::958::[2003_6_02_132702]::
+stta/stta_warn.cgi::1.31051043346-::1537::[2003_6_02_132702]::
+stta/stta_webhelp.cgi::1.31068182931-::15609::[2003_11_07_062851]::
+stta/sttaconfig.cgi::1.31051043346-::286::[2003_6_02_132702]::
+stta/sttaremote-lib.pl::1.31051043346-::731::[2003_6_02_132702]::
+stta/ttaDumpDs.tcl::1.31051043346-::4071::[2003_6_02_132702]::
+stta/ttaRestoreDs.tcl::1.31051043346-::4374::[2003_6_02_132702]::
+stta/tta_addgrphosts.cgi::1.31051043346-::6236::[2003_6_02_132702]::
+stta/tta_addhosts.cgi::1.31051043346-::8728::[2003_6_02_132702]::
+stta/tta_addhostsuser.cgi::1.31051043346-::4788::[2003_6_02_132702]::
+stta/tta_addlinks.cgi::1.31051043346-::6069::[2003_6_02_132702]::
+stta/tta_addou.cgi::1.31051043346-::5679::[2003_6_02_132702]::
+stta/tta_addprofcache.cgi::1.31051043346-::6886::[2003_6_02_132702]::
+stta/tta_addusr.cgi::1.31057471415-::8697::[2003_07_06_080334]::
+stta/tta_alivehosts.cgi::1.31051043346-::1763::[2003_6_02_132702]::
+stta/tta_archive.cgi::1.31051043346-::1169::[2003_6_02_132702]::
+stta/tta_backup.cgi::1.31057471415-::1189::[2003_07_06_080334]::
+stta/tta_delgrphosts.cgi::1.31051043346-::3041::[2003_6_02_132702]::
+stta/tta_delhosts.cgi::1.31051043346-::2951::[2003_6_02_132702]::
+stta/tta_delhostsuser.cgi::1.31051043346-::3066::[2003_6_02_132702]::
+stta/tta_dellinks.cgi::1.31051043346-::2957::[2003_6_02_132702]::
+stta/tta_delou.cgi::1.31051043346-::2892::[2003_6_02_132702]::
+stta/tta_delprofcache.cgi::1.31051043346-::3160::[2003_6_02_132702]::
+stta/tta_delusr.cgi::1.31051043346-::4890::[2003_6_02_132702]::
+stta/tta_ensbk.cgi::1.31051043346-::1173::[2003_6_02_132702]::
+stta/tta_ensdump.cgi::1.31057471415-::2156::[2003_07_06_080334]::
+stta/tta_ensload.cgi::1.31051043346-::2189::[2003_6_02_132702]::
+stta/tta_ensrecreate.cgi::1.31051043346-::2761::[2003_6_02_132702]::
+stta/tta_ensrestore.cgi::1.31051043346-::2283::[2003_6_02_132702]::
+stta/tta_filter.cgi::1.31056101209-::6546::[2003_06_20_112649]::
+stta/tta_loadous.cgi::1.31051043346-::7520::[2003_6_02_132702]::
+stta/tta_loadusrs.cgi::1.31051043346-::8227::[2003_6_02_132702]::
+stta/tta_modgrphosts.cgi::1.31051043346-::5226::[2003_6_02_132702]::
+stta/tta_modhosts.cgi::1.31051043346-::9577::[2003_6_02_132702]::
+stta/tta_modlinks.cgi::1.31051043346-::4783::[2003_6_02_132702]::
+stta/tta_modou.cgi::1.31051043346-::8721::[2003_6_02_132702]::
+stta/tta_modusr.cgi::1.31051043346-::17849::[2003_6_02_132702]::
+stta/tta_mvgrphosts.cgi::1.31051043346-::307::[2003_6_02_132702]::
+stta/tta_mvhosts.cgi::1.31051043346-::301::[2003_6_02_132702]::
+stta/tta_mvlinks.cgi::1.31051043346-::303::[2003_6_02_132702]::
+stta/tta_mvou.cgi::1.31051043346-::295::[2003_6_02_132702]::
+stta/tta_mvusr.cgi::1.31051043346-::299::[2003_6_02_132702]::
+stta/tta_passwd.cgi::1.31051043346-::7931::[2003_6_02_132702]::
+stta/tta_passwdcache.cgi::1.31051043346-::6185::[2003_6_02_132702]::
+stta/tta_restart.cgi::1.31051043346-::1194::[2003_6_02_132702]::
+stta/tta_selgrphosts.cgi::1.31051043346-::4593::[2003_6_02_132702]::
+stta/tta_selhosts.cgi::1.31051043346-::5874::[2003_6_02_132702]::
+stta/tta_selhostsuser.cgi::1.31051043346-::3395::[2003_6_02_132702]::
+stta/tta_sellinks.cgi::1.31051043346-::4492::[2003_6_02_132702]::
+stta/tta_selou.cgi::1.31051043346-::4438::[2003_6_02_132702]::
+stta/tta_selprofcache.cgi::1.31051043346-::3499::[2003_6_02_132702]::
+stta/tta_selusr.cgi::1.31057471415-::15511::[2003_07_06_080334]::
+stta/tta_sess.cgi::1.31057471415-::17095::[2003_07_06_080334]::
+stta/tta_sessbilling.cgi::1.31057471414-::23837::[2003_07_06_080334]::
+stta/tta_sesscount.cgi::1.31057471415-::4621::[2003_07_06_080334]::
+stta/tta_sesstotal.cgi::1.31057471414-::3990::[2003_07_06_080334]::
+stta/tta_status.cgi::1.31057471415-::1619::[2003_07_06_080334]::
+stta/tta_updatecache.cgi::1.31051043346-::3034::[2003_6_02_132702]::
+stta/tta_works.cgi::1.31051043346-::899::[2003_6_02_132702]::
+stta/ttacache-lib.pl::1.31059653812-::20534::[2003_07_31_141652]::
+stta/ttasess-lib.pl::1.31051043346-::25749::[2003_6_02_132702]::
+stta/ttasess.pl::1.31051043346-::3190::[2003_6_02_132702]::
+stta/updateALLcache.cgi::1.31051043346-::6905::[2003_6_02_132702]::
+stta/updatecache.cgi::1.31051043346-::6701::[2003_6_02_132702]::
+stta/view.cgi::1.31057471415-::3639::[2003_07_06_080334]::
+stta/web-lib.pl::1.31068190601-::6065::[2003_11_07_083641]::
diff --git a/~downloads/files/2003_6_02_132702/index.html b/~downloads/files/2003_6_02_132702/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/~downloads/files/2003_6_02_132702/module.info.txt b/~downloads/files/2003_6_02_132702/module.info.txt
new file mode 100755
index 0000000..1839fe6
--- /dev/null
+++ b/~downloads/files/2003_6_02_132702/module.info.txt
@@ -0,0 +1,7 @@
+name=stta
+desc_en=Services with Tarantella
+desc_es=Servicios con Tarantella
+depends=1.0
+version=1.3
+stamp=2003_6_02_132702
+brand=1.31051043346-
diff --git a/~downloads/files/2003_6_02_132702/patch_130604-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130604-01.tar.gz
new file mode 100644
index 0000000..f3c3f54
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130604-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130609-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130609-01.tar.gz
new file mode 100644
index 0000000..e1fe398
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130609-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130612-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130612-01.tar.gz
new file mode 100644
index 0000000..e26a1ac
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130612-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130613-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130613-01.tar.gz
new file mode 100644
index 0000000..93decd4
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130613-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130620-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130620-01.tar.gz
new file mode 100644
index 0000000..02ac7a8
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130620-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130705-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130705-01.tar.gz
new file mode 100644
index 0000000..ebbc822
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130705-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130731-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130731-01.tar.gz
new file mode 100644
index 0000000..d9f7f6d
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130731-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130731-02.tar.gz b/~downloads/files/2003_6_02_132702/patch_130731-02.tar.gz
new file mode 100644
index 0000000..82f762b
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130731-02.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130812-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130812-01.tar.gz
new file mode 100644
index 0000000..614574d
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130812-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130826-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130826-01.tar.gz
new file mode 100644
index 0000000..1a30527
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130826-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130902-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130902-01.tar.gz
new file mode 100644
index 0000000..e5ec0fc
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130902-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130905-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130905-01.tar.gz
new file mode 100644
index 0000000..9397079
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130905-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_130915-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_130915-01.tar.gz
new file mode 100644
index 0000000..b97c5d4
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_130915-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_131107-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_131107-01.tar.gz
new file mode 100644
index 0000000..b7fc545
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_131107-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_131201-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_131201-01.tar.gz
new file mode 100644
index 0000000..a128fb6
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_131201-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/patch_131230-01.tar.gz b/~downloads/files/2003_6_02_132702/patch_131230-01.tar.gz
new file mode 100644
index 0000000..f6a8c5c
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/patch_131230-01.tar.gz differ
diff --git a/~downloads/files/2003_6_02_132702/stta-1.3.wbm.gz b/~downloads/files/2003_6_02_132702/stta-1.3.wbm.gz
new file mode 100644
index 0000000..23c9c96
Binary files /dev/null and b/~downloads/files/2003_6_02_132702/stta-1.3.wbm.gz differ
diff --git a/~downloads/files/brandinfo.txt b/~downloads/files/brandinfo.txt
new file mode 100755
index 0000000..943b5dd
--- /dev/null
+++ b/~downloads/files/brandinfo.txt
@@ -0,0 +1,254 @@
+stta/acl_security.pl::1.31051043346-::9401::[2004_01_29_102036]::
+stta/addact.cgi::1.31051043346-::4578::[2004_01_29_102036]::
+stta/addapps.cgi::1.31051043346-::4554::[2004_01_29_102036]::
+stta/adddomains.cgi::1.31051043346-::3543::[2004_01_29_102036]::
+stta/addfile.cgi::1.31051043346-::3067::[2004_01_29_102036]::
+stta/addgrpapps.cgi::1.31051043346-::4301::[2004_01_29_102036]::
+stta/addgrphosts.cgi::1.31051043346-::4824::[2004_01_29_102036]::
+stta/addhosts.cgi::1.31051043346-::5411::[2004_01_29_102036]::
+stta/addhostsuser.cgi::1.31051043346-::1512::[2004_01_29_102036]::
+stta/addlinks.cgi::1.31051043346-::3361::[2004_01_29_102036]::
+stta/addobj.cgi::1.31051043346-::4770::[2004_01_29_102036]::
+stta/addou.cgi::1.31051043346-::4995::[2004_01_29_102036]::
+stta/addprofcache.cgi::1.31051043346-::1820::[2004_01_29_102036]::
+stta/addusr.cgi::1.31051043346-::9221::[2004_01_29_102036]::
+stta/app-lib.pl::1.31051043346-::4915::[2004_01_29_102036]::
+stta/base-lib.pl::1.31051043346-::9951::[2004_01_29_102036]::
+stta/brandmgr.pl::1.31051043346-::6047::[2004_01_29_102036]::
+stta/cache_addapps.cgi::1.31051043346-::8940::[2004_01_29_102036]::
+stta/cache_adddomains.cgi::1.31051043346-::6205::[2004_01_29_102036]::
+stta/cache_addgrpapps.cgi::1.31051043346-::6227::[2004_01_29_102036]::
+stta/cache_addobj.cgi::1.31051043346-::13332::[2004_01_29_102036]::
+stta/cache_delapps.cgi::1.31051043346-::2924::[2004_01_29_102036]::
+stta/cache_deldomains.cgi::1.31051043346-::3018::[2004_01_29_102036]::
+stta/cache_delgrpapps.cgi::1.31051043346-::3036::[2004_01_29_102036]::
+stta/cache_delobj.cgi::1.31051043346-::6467::[2004_01_29_102036]::
+stta/cache_filter.cgi::1.31051043346-::15362::[2004_01_29_102036]::
+stta/cache_modapps.cgi::1.31051043346-::7247::[2004_01_29_102036]::
+stta/cache_moddomains.cgi::1.31051043346-::5214::[2004_01_29_102036]::
+stta/cache_modgrpapps.cgi::1.31051043346-::8130::[2004_01_29_102036]::
+stta/cache_modobj.cgi::1.31051043346-::6344::[2004_01_29_102036]::
+stta/cache_mvapps.cgi::1.31051043346-::302::[2004_01_29_102036]::
+stta/cache_mvdomains.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/cache_mvgrpapps.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/cache_selapps.cgi::1.31051043346-::4472::[2004_01_29_102036]::
+stta/cache_seldomains.cgi::1.31051043346-::4574::[2004_01_29_102036]::
+stta/cache_selgrpapps.cgi::1.31051043346-::4810::[2004_01_29_102036]::
+stta/cache_selobj.cgi::1.31051043346-::15169::[2004_01_29_102036]::
+stta/cleanfile.cgi::1.31051043346-::2729::[2004_01_29_102036]::
+stta/config.cgi::1.31051043346-::1872::[2004_01_29_102036]::
+stta/config_info.pl::1.31051043346-::19802::[2004_01_29_102036]::
+stta/delact.cgi::1.31051043346-::1750::[2004_01_29_102036]::
+stta/delapps.cgi::1.31051043346-::2289::[2004_01_29_102036]::
+stta/deldomains.cgi::1.31051043346-::2426::[2004_01_29_102036]::
+stta/delfile.cgi::1.31051043346-::2585::[2004_01_29_102036]::
+stta/delgrpapps.cgi::1.31051043346-::2429::[2004_01_29_102036]::
+stta/delgrphosts.cgi::1.31051043346-::2218::[2004_01_29_102036]::
+stta/delhosts.cgi::1.31051043346-::2172::[2004_01_29_102036]::
+stta/delhostsuser.cgi::1.31051043346-::1214::[2004_01_29_102036]::
+stta/dellinks.cgi::1.31051043346-::2384::[2004_01_29_102036]::
+stta/delobj.cgi::1.31051043346-::2504::[2004_01_29_102036]::
+stta/delou.cgi::1.31051043346-::2554::[2004_01_29_102036]::
+stta/delprofcache.cgi::1.31051043346-::1289::[2004_01_29_102036]::
+stta/delusr.cgi::1.31051043346-::4463::[2004_01_29_102036]::
+stta/dir_save.cgi::1.31051043346-::404::[2004_01_29_102036]::
+stta/dirdef_stta.cgi::1.31051043346-::410::[2004_01_29_102036]::
+stta/dirlogs_cache.cgi::1.31051043346-::426::[2004_01_29_102036]::
+stta/dirlogs_tta.cgi::1.31051043346-::409::[2004_01_29_102036]::
+stta/feedback.cgi::1.31051043346-::17508::[2004_01_29_102036]::
+stta/feedback_form.cgi::1.31051043346-::5079::[2004_01_29_102036]::
+stta/file_clean.cgi::1.31051043346-::4530::[2004_01_29_102036]::
+stta/file_deflists.cgi::1.31051043346-::3117::[2004_01_29_102036]::
+stta/file_del.cgi::1.31051043346-::4390::[2004_01_29_102036]::
+stta/file_manager.cgi::1.31051043346-::10495::[2004_01_29_102036]::
+stta/file_mod.cgi::1.31051043346-::9797::[2004_01_29_102036]::
+stta/file_showlist.cgi::1.31051043346-::7261::[2004_01_29_102036]::
+stta/fixhosts.cgi::1.31051043346-::2123::[2004_01_29_102036]::
+stta/fixobjs.cgi::1.31051043346-::5182::[2004_01_29_102036]::
+stta/footer.pl::1.31051043346-::1339::[2004_01_29_102036]::
+stta/global-lib.pl::1.31051043346-::55908::[2004_01_29_102036]::
+stta/global.js::1.31051043346-::5883::[2004_01_29_102036]::
+stta/help-lib.pl::1.31051043346-::27064::[2004_01_29_102036]::
+stta/help.cgi::1.31051043346-::4085::[2004_01_29_102036]::
+stta/host_chooser.cgi::1.31051043346-::8259::[2004_01_29_102036]::
+stta/html-lib.pl::1.31051043346-::62506::[2004_01_29_102036]::
+stta/index.cgi::1.31051043346-::1260::[2004_01_29_102036]::
+stta/index/admin.pl::1.31051043346-::4105::[2004_01_29_102036]::
+stta/index/apps.pl::1.31051043346-::1009::[2004_01_29_102036]::
+stta/index/browsers.pl::1.31051043346-::930::[2004_01_29_102036]::
+stta/index/domains.pl::1.31051043346-::1066::[2004_01_29_102036]::
+stta/index/grpapps.pl::1.31051043346-::1013::[2004_01_29_102036]::
+stta/index/grphosts.pl::1.31051043346-::1079::[2004_01_29_102036]::
+stta/index/hosts.pl::1.31051043346-::1077::[2004_01_29_102036]::
+stta/index/hostsuser.pl::1.31051043346-::998::[2004_01_29_102036]::
+stta/index/index_table.pl::1.31051043346-::1743::[2004_01_29_102036]::
+stta/index/index_tabs.pl::1.31051043346-::4704::[2004_01_29_102036]::
+stta/index/insupd.pl::1.31051043346-::1003::[2004_01_29_102036]::
+stta/index/ldap.pl::1.31051043346-::5906::[2004_01_29_102036]::
+stta/index/ldapcache.pl::1.31051043346-::848::[2004_01_29_102036]::
+stta/index/ldapprofile.pl::1.31051043346-::844::[2004_01_29_102036]::
+stta/index/links.pl::1.31051043346-::960::[2004_01_29_102036]::
+stta/index/master.pl::1.31051043346-::863::[2004_01_29_102036]::
+stta/index/monitor.pl::1.31051043346-::831::[2004_01_29_102036]::
+stta/index/objects.pl::1.31051043346-::2054::[2004_01_29_102036]::
+stta/index/ou.pl::1.31051043346-::1177::[2004_01_29_102036]::
+stta/index/password.pl::1.31051043346-::842::[2004_01_29_102036]::
+stta/index/servers.pl::1.31051043346-::2696::[2004_01_29_102036]::
+stta/index/supervision.pl::1.31051043346-::5171::[2004_01_29_102036]::
+stta/index/tta.pl::1.31051043346-::4661::[2004_01_29_102036]::
+stta/index/users.pl::1.31051043346-::1230::[2004_01_29_102036]::
+stta/installupd-lib.pl::1.31051043346-::25629::[2004_01_29_102036]::
+stta/inststta-lib.pl::1.31051043346-::30746::[2004_01_29_102036]::
+stta/ldap-lib.pl::1.31051043346-::39084::[2004_01_29_102036]::
+stta/ldap_backup.cgi::1.31051043346-::1406::[2004_01_29_102036]::
+stta/ldap_ldif.cgi::1.31051043346-::1430::[2004_01_29_102036]::
+stta/ldap_load.cgi::1.31051043346-::2773::[2004_01_29_102036]::
+stta/ldap_loglist.cgi::1.31051043346-::6163::[2004_01_29_102036]::
+stta/ldap_replica.cgi::1.31051043346-::1312::[2004_01_29_102036]::
+stta/ldap_restart.cgi::1.31051043346-::2784::[2004_01_29_102036]::
+stta/ldap_schema.cgi::1.31051043346-::1405::[2004_01_29_102036]::
+stta/ldapbase-lib.pl::1.31051043346-::8152::[2004_01_29_102036]::
+stta/ldapcache_backup.cgi::1.31051043346-::1501::[2004_01_29_102036]::
+stta/ldapcache_ldif.cgi::1.31051043346-::1546::[2004_01_29_102036]::
+stta/ldapcache_load.cgi::1.31051043346-::2862::[2004_01_29_102036]::
+stta/ldapcache_restart.cgi::1.31051043346-::2934::[2004_01_29_102036]::
+stta/ldapcache_schema.cgi::1.31051043346-::1482::[2004_01_29_102036]::
+stta/license.cgi::1.31051043346-::1303::[2004_01_29_102036]::
+stta/lists-lib.pl::1.31051043346-::35022::[2004_01_29_102036]::
+stta/localenv_vars.sh::1.31051043346-::432::[2004_01_29_102036]::
+stta/log_http.cgi::1.31051043346-::362::[2004_01_29_102036]::
+stta/log_httpacc.cgi::1.31051043346-::370::[2004_01_29_102036]::
+stta/log_https.cgi::1.31051043346-::365::[2004_01_29_102036]::
+stta/log_httpsacc.cgi::1.31051043346-::374::[2004_01_29_102036]::
+stta/log_ldap.cgi::1.31051043346-::377::[2004_01_29_102036]::
+stta/log_parser.pl::1.31051043346-::1105::[2004_01_29_102036]::
+stta/log_stta.cgi::1.31051043346-::404::[2004_01_29_102036]::
+stta/log_system.cgi::1.31051043346-::413::[2004_01_29_102036]::
+stta/logldap_acc.cgi::1.31051043346-::377::[2004_01_29_102036]::
+stta/logldap_cache.cgi::1.31051043346-::392::[2004_01_29_102036]::
+stta/logldapcache_acc.cgi::1.31051043346-::392::[2004_01_29_102036]::
+stta/logs_list.cgi::1.31051043346-::365::[2004_01_29_102036]::
+stta/logusers_ldap.cgi::1.31051043346-::359::[2004_01_29_102036]::
+stta/mkhelplang.sh::1.31051043346-::1435::[2004_01_29_102036]::
+stta/mktools.sh::1.31051043346-::6016::[2004_01_29_102036]::
+stta/modact.cgi::1.31051043346-::3650::[2004_01_29_102036]::
+stta/modapps.cgi::1.31051043346-::4336::[2004_01_29_102036]::
+stta/moddomains.cgi::1.31051043346-::2873::[2004_01_29_102036]::
+stta/modfile.cgi::1.31051043346-::2681::[2004_01_29_102036]::
+stta/modgrpapps.cgi::1.31051043346-::3892::[2004_01_29_102036]::
+stta/modgrphosts.cgi::1.31051043346-::3169::[2004_01_29_102036]::
+stta/modhosts.cgi::1.31051043346-::4953::[2004_01_29_102036]::
+stta/modlinks.cgi::1.31051043346-::2920::[2004_01_29_102036]::
+stta/modobj.cgi::1.31051043346-::2463::[2004_01_29_102036]::
+stta/modou.cgi::1.31051043346-::4037::[2004_01_29_102036]::
+stta/modusr.cgi::1.31051043346-::6355::[2004_01_29_102036]::
+stta/mon_actarget.cgi::1.31051043346-::16761::[2004_01_29_102036]::
+stta/mon_actdef.cgi::1.31051043346-::9004::[2004_01_29_102036]::
+stta/mon_delact.cgi::1.31051043346-::6092::[2004_01_29_102036]::
+stta/mon_runact.cgi::1.31051043346-::2006::[2004_01_29_102036]::
+stta/mon_script.cgi::1.31051043346-::467::[2004_01_29_102036]::
+stta/mon_selact.cgi::1.31051043346-::10627::[2004_01_29_102036]::
+stta/monitor-lib.pl::1.31051043346-::10150::[2004_01_29_102036]::
+stta/monitor.cgi::1.31051043346-::7012::[2004_01_29_102036]::
+stta/monitor.pl::1.31051043346-::5157::[2004_01_29_102036]::
+stta/mvobjs.cgi::1.31051043346-::11085::[2004_01_29_102036]::
+stta/obj_chooser.cgi::1.31051043346-::6258::[2004_01_29_102036]::
+stta/passwd.cgi::1.31051043346-::5567::[2004_01_29_102036]::
+stta/postinstall.pl::1.31051043346-::1307::[2004_01_29_102036]::
+stta/print-lib.pl::1.31051043346-::4004::[2004_01_29_102036]::
+stta/runfile.cgi::1.31051043346-::2876::[2004_01_29_102036]::
+stta/search.cgi::1.31051043346-::4642::[2004_01_29_102036]::
+stta/sess_filter.cgi::1.31051043346-::3890::[2004_01_29_102036]::
+stta/sess_mgmt.cgi::1.31051043346-::2244::[2004_01_29_102036]::
+stta/setup_config.pl::1.31051043346-::5038::[2004_01_29_102036]::
+stta/shells/ensdump.sh::1.31051043346-::507::[2004_01_29_102036]::
+stta/shells/ensload.sh::1.31051043346-::1063::[2004_01_29_102036]::
+stta/shells/ensrecreate.sh::1.31051043346-::1217::[2004_01_29_102036]::
+stta/shells/ensrestore.sh::1.31051043346-::829::[2004_01_29_102036]::
+stta/shells/getOSdata.sh::1.31051043346-::355::[2004_01_29_102036]::
+stta/shells/ldapreplicate.sh::1.31051043346-::6371::[2004_01_29_102036]::
+stta/shells/monitor.sh::1.31051043346-::533::[2004_01_29_102036]::
+stta/shells/oldapadm.sh::1.31051043346-::4546::[2004_01_29_102036]::
+stta/shells/openldap.sh::1.31051043346-::3195::[2004_01_29_102036]::
+stta/shells/scanttacache.sh::1.31051043346-::5658::[2004_01_29_102036]::
+stta/shells/setenv_vars.sh::1.31051043346-::2025::[2004_01_29_102036]::
+stta/shells/stta.sh::1.31051043346-::794::[2004_01_29_102036]::
+stta/shells/tta.sh::1.31051043346-::253::[2004_01_29_102036]::
+stta/shells/ttabackup.sh::1.31051043346-::1248::[2004_01_29_102036]::
+stta/shells/ttasess.sh::1.31051043346-::388::[2004_01_29_102036]::
+stta/shells/ttatcl.sh::1.31051043346-::325::[2004_01_29_102036]::
+stta/stta-lib.pl::1.31051043346-::21502::[2004_01_29_102036]::
+stta/stta_brandlst.cgi::1.31051043346-::5043::[2004_01_29_102036]::
+stta/stta_brandmgr.cgi::1.31051043346-::8233::[2004_01_29_102036]::
+stta/stta_checksync.cgi::1.31051043346-::10489::[2004_01_29_102036]::
+stta/stta_installupd.cgi::1.31051043346-::6821::[2004_01_29_102036]::
+stta/stta_mvobjs.cgi::1.31051043346-::8443::[2004_01_29_102036]::
+stta/stta_proc.cgi::1.31051043346-::1185::[2004_01_29_102036]::
+stta/stta_report.cgi::1.31051043346-::6065::[2004_01_29_102036]::
+stta/stta_synclist.cgi::1.31051043346-::1288::[2004_01_29_102036]::
+stta/stta_view.cgi::1.31051043346-::959::[2004_01_29_102036]::
+stta/stta_warn.cgi::1.31051043346-::1538::[2004_01_29_102036]::
+stta/stta_webhelp.cgi::1.31051043346-::15609::[2004_01_29_102036]::
+stta/sttaconfig.cgi::1.31051043346-::287::[2004_01_29_102036]::
+stta/sttaremote-lib.pl::1.31051043346-::732::[2004_01_29_102036]::
+stta/ttaDumpDs.tcl::1.31051043346-::4072::[2004_01_29_102036]::
+stta/ttaRestoreDs.tcl::1.31051043346-::4738::[2004_01_29_102036]::
+stta/tta_addgrphosts.cgi::1.31051043346-::6237::[2004_01_29_102036]::
+stta/tta_addhosts.cgi::1.31051043346-::8729::[2004_01_29_102036]::
+stta/tta_addhostsuser.cgi::1.31051043346-::4789::[2004_01_29_102036]::
+stta/tta_addlinks.cgi::1.31051043346-::6070::[2004_01_29_102036]::
+stta/tta_addou.cgi::1.31051043346-::5680::[2004_01_29_102036]::
+stta/tta_addprofcache.cgi::1.31051043346-::6887::[2004_01_29_102036]::
+stta/tta_addusr.cgi::1.31051043346-::8697::[2004_01_29_102036]::
+stta/tta_alivehosts.cgi::1.31051043346-::1764::[2004_01_29_102036]::
+stta/tta_archive.cgi::1.31051043346-::1170::[2004_01_29_102036]::
+stta/tta_backup.cgi::1.31051043346-::1189::[2004_01_29_102036]::
+stta/tta_delgrphosts.cgi::1.31051043346-::3042::[2004_01_29_102036]::
+stta/tta_delhosts.cgi::1.31051043346-::2952::[2004_01_29_102036]::
+stta/tta_delhostsuser.cgi::1.31051043346-::3067::[2004_01_29_102036]::
+stta/tta_dellinks.cgi::1.31051043346-::2958::[2004_01_29_102036]::
+stta/tta_delou.cgi::1.31051043346-::2893::[2004_01_29_102036]::
+stta/tta_delprofcache.cgi::1.31051043346-::3161::[2004_01_29_102036]::
+stta/tta_delusr.cgi::1.31051043346-::4930::[2004_01_29_102036]::
+stta/tta_ensbk.cgi::1.31051043346-::1174::[2004_01_29_102036]::
+stta/tta_ensdump.cgi::1.31051043346-::2156::[2004_01_29_102036]::
+stta/tta_ensload.cgi::1.31051043346-::2190::[2004_01_29_102036]::
+stta/tta_ensrecreate.cgi::1.31051043346-::2762::[2004_01_29_102036]::
+stta/tta_ensrestore.cgi::1.31051043346-::2284::[2004_01_29_102036]::
+stta/tta_filter.cgi::1.31051043346-::6546::[2004_01_29_102036]::
+stta/tta_loadous.cgi::1.31051043346-::7521::[2004_01_29_102036]::
+stta/tta_loadusrs.cgi::1.31051043346-::8228::[2004_01_29_102036]::
+stta/tta_modgrphosts.cgi::1.31051043346-::5227::[2004_01_29_102036]::
+stta/tta_modhosts.cgi::1.31051043346-::9578::[2004_01_29_102036]::
+stta/tta_modlinks.cgi::1.31051043346-::4784::[2004_01_29_102036]::
+stta/tta_modou.cgi::1.31051043346-::8722::[2004_01_29_102036]::
+stta/tta_modusr.cgi::1.31051043346-::17850::[2004_01_29_102036]::
+stta/tta_mvgrphosts.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/tta_mvhosts.cgi::1.31051043346-::302::[2004_01_29_102036]::
+stta/tta_mvlinks.cgi::1.31051043346-::304::[2004_01_29_102036]::
+stta/tta_mvou.cgi::1.31051043346-::296::[2004_01_29_102036]::
+stta/tta_mvusr.cgi::1.31051043346-::300::[2004_01_29_102036]::
+stta/tta_passwd.cgi::1.31051043346-::8343::[2004_01_29_102036]::
+stta/tta_passwdcache.cgi::1.31051043346-::6186::[2004_01_29_102036]::
+stta/tta_restart.cgi::1.31051043346-::1195::[2004_01_29_102036]::
+stta/tta_selgrphosts.cgi::1.31051043346-::4594::[2004_01_29_102036]::
+stta/tta_selhosts.cgi::1.31051043346-::5875::[2004_01_29_102036]::
+stta/tta_selhostsuser.cgi::1.31051043346-::3396::[2004_01_29_102036]::
+stta/tta_sellinks.cgi::1.31051043346-::4493::[2004_01_29_102036]::
+stta/tta_selou.cgi::1.31051043346-::4439::[2004_01_29_102036]::
+stta/tta_selprofcache.cgi::1.31051043346-::3500::[2004_01_29_102036]::
+stta/tta_selusr.cgi::1.31051043346-::15679::[2004_01_29_102036]::
+stta/tta_sess.cgi::1.31051043346-::17095::[2004_01_29_102036]::
+stta/tta_sessbilling.cgi::1.31051043346-::23837::[2004_01_29_102036]::
+stta/tta_sesscount.cgi::1.31051043346-::4621::[2004_01_29_102036]::
+stta/tta_sesstotal.cgi::1.31051043346-::3990::[2004_01_29_102036]::
+stta/tta_status.cgi::1.31051043346-::1619::[2004_01_29_102036]::
+stta/tta_updatecache.cgi::1.31051043346-::3035::[2004_01_29_102036]::
+stta/tta_works.cgi::1.31051043346-::900::[2004_01_29_102036]::
+stta/ttacache-lib.pl::1.31051043346-::20534::[2004_01_29_102036]::
+stta/ttasess-lib.pl::1.31051043346-::25750::[2004_01_29_102036]::
+stta/ttasess.pl::1.31051043346-::3191::[2004_01_29_102036]::
+stta/updateALLcache.cgi::1.31051043346-::6906::[2004_01_29_102036]::
+stta/updatecache.cgi::1.31051043346-::6702::[2004_01_29_102036]::
+stta/view.cgi::1.31051043346-::3639::[2004_01_29_102036]::
+stta/web-lib.pl::1.31051043346-::6065::[2004_01_29_102036]::
diff --git a/~downloads/files/index.html b/~downloads/files/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/~downloads/files/last_deploy_vers/.eng/head b/~downloads/files/last_deploy_vers/.eng/head
new file mode 100644
index 0000000..de7118b
--- /dev/null
+++ b/~downloads/files/last_deploy_vers/.eng/head
@@ -0,0 +1,4 @@
+
+ last_deploy_vers
+
+
diff --git a/~downloads/files/last_deploy_vers/.eng/howtopatch b/~downloads/files/last_deploy_vers/.eng/howtopatch
new file mode 100644
index 0000000..1733c15
--- /dev/null
+++ b/~downloads/files/last_deploy_vers/.eng/howtopatch
@@ -0,0 +1,6 @@
+
+
+ To pach do: cd webmin-install-dir ; cat patch_file | gunzip | tar xvf -
+ To ajdust brand on files and sync scripts the following should be executed:
+ cd webmin-install-dir/stta ; ./mktools.sh es webmin-etc-dir
+
diff --git a/~downloads/files/last_deploy_vers/.info b/~downloads/files/last_deploy_vers/.info
new file mode 100644
index 0000000..5e2f1d6
--- /dev/null
+++ b/~downloads/files/last_deploy_vers/.info
@@ -0,0 +1,3 @@
+module.info.txt has the current STTA Webmin module info.
+brandinfofile has the current branding for STTA files.
+stta-1.3.wbm.gz is the STTA package in Webmin format.
diff --git a/~downloads/files/last_deploy_vers/.info.es b/~downloads/files/last_deploy_vers/.info.es
new file mode 100644
index 0000000..979a522
--- /dev/null
+++ b/~downloads/files/last_deploy_vers/.info.es
@@ -0,0 +1,4 @@
+module.info.txt contiene la información correpondiente del módulo STTA en formato Webmin
+brandinfofile tiene la marca o 'brand' correspondiente de los ficheros de STTA.
+stta-1.3.wbm.gz es el paquete de STTA en formato Webmin.
+
diff --git a/~downloads/files/last_deploy_vers/brandinfofile b/~downloads/files/last_deploy_vers/brandinfofile
new file mode 100755
index 0000000..943b5dd
--- /dev/null
+++ b/~downloads/files/last_deploy_vers/brandinfofile
@@ -0,0 +1,254 @@
+stta/acl_security.pl::1.31051043346-::9401::[2004_01_29_102036]::
+stta/addact.cgi::1.31051043346-::4578::[2004_01_29_102036]::
+stta/addapps.cgi::1.31051043346-::4554::[2004_01_29_102036]::
+stta/adddomains.cgi::1.31051043346-::3543::[2004_01_29_102036]::
+stta/addfile.cgi::1.31051043346-::3067::[2004_01_29_102036]::
+stta/addgrpapps.cgi::1.31051043346-::4301::[2004_01_29_102036]::
+stta/addgrphosts.cgi::1.31051043346-::4824::[2004_01_29_102036]::
+stta/addhosts.cgi::1.31051043346-::5411::[2004_01_29_102036]::
+stta/addhostsuser.cgi::1.31051043346-::1512::[2004_01_29_102036]::
+stta/addlinks.cgi::1.31051043346-::3361::[2004_01_29_102036]::
+stta/addobj.cgi::1.31051043346-::4770::[2004_01_29_102036]::
+stta/addou.cgi::1.31051043346-::4995::[2004_01_29_102036]::
+stta/addprofcache.cgi::1.31051043346-::1820::[2004_01_29_102036]::
+stta/addusr.cgi::1.31051043346-::9221::[2004_01_29_102036]::
+stta/app-lib.pl::1.31051043346-::4915::[2004_01_29_102036]::
+stta/base-lib.pl::1.31051043346-::9951::[2004_01_29_102036]::
+stta/brandmgr.pl::1.31051043346-::6047::[2004_01_29_102036]::
+stta/cache_addapps.cgi::1.31051043346-::8940::[2004_01_29_102036]::
+stta/cache_adddomains.cgi::1.31051043346-::6205::[2004_01_29_102036]::
+stta/cache_addgrpapps.cgi::1.31051043346-::6227::[2004_01_29_102036]::
+stta/cache_addobj.cgi::1.31051043346-::13332::[2004_01_29_102036]::
+stta/cache_delapps.cgi::1.31051043346-::2924::[2004_01_29_102036]::
+stta/cache_deldomains.cgi::1.31051043346-::3018::[2004_01_29_102036]::
+stta/cache_delgrpapps.cgi::1.31051043346-::3036::[2004_01_29_102036]::
+stta/cache_delobj.cgi::1.31051043346-::6467::[2004_01_29_102036]::
+stta/cache_filter.cgi::1.31051043346-::15362::[2004_01_29_102036]::
+stta/cache_modapps.cgi::1.31051043346-::7247::[2004_01_29_102036]::
+stta/cache_moddomains.cgi::1.31051043346-::5214::[2004_01_29_102036]::
+stta/cache_modgrpapps.cgi::1.31051043346-::8130::[2004_01_29_102036]::
+stta/cache_modobj.cgi::1.31051043346-::6344::[2004_01_29_102036]::
+stta/cache_mvapps.cgi::1.31051043346-::302::[2004_01_29_102036]::
+stta/cache_mvdomains.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/cache_mvgrpapps.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/cache_selapps.cgi::1.31051043346-::4472::[2004_01_29_102036]::
+stta/cache_seldomains.cgi::1.31051043346-::4574::[2004_01_29_102036]::
+stta/cache_selgrpapps.cgi::1.31051043346-::4810::[2004_01_29_102036]::
+stta/cache_selobj.cgi::1.31051043346-::15169::[2004_01_29_102036]::
+stta/cleanfile.cgi::1.31051043346-::2729::[2004_01_29_102036]::
+stta/config.cgi::1.31051043346-::1872::[2004_01_29_102036]::
+stta/config_info.pl::1.31051043346-::19802::[2004_01_29_102036]::
+stta/delact.cgi::1.31051043346-::1750::[2004_01_29_102036]::
+stta/delapps.cgi::1.31051043346-::2289::[2004_01_29_102036]::
+stta/deldomains.cgi::1.31051043346-::2426::[2004_01_29_102036]::
+stta/delfile.cgi::1.31051043346-::2585::[2004_01_29_102036]::
+stta/delgrpapps.cgi::1.31051043346-::2429::[2004_01_29_102036]::
+stta/delgrphosts.cgi::1.31051043346-::2218::[2004_01_29_102036]::
+stta/delhosts.cgi::1.31051043346-::2172::[2004_01_29_102036]::
+stta/delhostsuser.cgi::1.31051043346-::1214::[2004_01_29_102036]::
+stta/dellinks.cgi::1.31051043346-::2384::[2004_01_29_102036]::
+stta/delobj.cgi::1.31051043346-::2504::[2004_01_29_102036]::
+stta/delou.cgi::1.31051043346-::2554::[2004_01_29_102036]::
+stta/delprofcache.cgi::1.31051043346-::1289::[2004_01_29_102036]::
+stta/delusr.cgi::1.31051043346-::4463::[2004_01_29_102036]::
+stta/dir_save.cgi::1.31051043346-::404::[2004_01_29_102036]::
+stta/dirdef_stta.cgi::1.31051043346-::410::[2004_01_29_102036]::
+stta/dirlogs_cache.cgi::1.31051043346-::426::[2004_01_29_102036]::
+stta/dirlogs_tta.cgi::1.31051043346-::409::[2004_01_29_102036]::
+stta/feedback.cgi::1.31051043346-::17508::[2004_01_29_102036]::
+stta/feedback_form.cgi::1.31051043346-::5079::[2004_01_29_102036]::
+stta/file_clean.cgi::1.31051043346-::4530::[2004_01_29_102036]::
+stta/file_deflists.cgi::1.31051043346-::3117::[2004_01_29_102036]::
+stta/file_del.cgi::1.31051043346-::4390::[2004_01_29_102036]::
+stta/file_manager.cgi::1.31051043346-::10495::[2004_01_29_102036]::
+stta/file_mod.cgi::1.31051043346-::9797::[2004_01_29_102036]::
+stta/file_showlist.cgi::1.31051043346-::7261::[2004_01_29_102036]::
+stta/fixhosts.cgi::1.31051043346-::2123::[2004_01_29_102036]::
+stta/fixobjs.cgi::1.31051043346-::5182::[2004_01_29_102036]::
+stta/footer.pl::1.31051043346-::1339::[2004_01_29_102036]::
+stta/global-lib.pl::1.31051043346-::55908::[2004_01_29_102036]::
+stta/global.js::1.31051043346-::5883::[2004_01_29_102036]::
+stta/help-lib.pl::1.31051043346-::27064::[2004_01_29_102036]::
+stta/help.cgi::1.31051043346-::4085::[2004_01_29_102036]::
+stta/host_chooser.cgi::1.31051043346-::8259::[2004_01_29_102036]::
+stta/html-lib.pl::1.31051043346-::62506::[2004_01_29_102036]::
+stta/index.cgi::1.31051043346-::1260::[2004_01_29_102036]::
+stta/index/admin.pl::1.31051043346-::4105::[2004_01_29_102036]::
+stta/index/apps.pl::1.31051043346-::1009::[2004_01_29_102036]::
+stta/index/browsers.pl::1.31051043346-::930::[2004_01_29_102036]::
+stta/index/domains.pl::1.31051043346-::1066::[2004_01_29_102036]::
+stta/index/grpapps.pl::1.31051043346-::1013::[2004_01_29_102036]::
+stta/index/grphosts.pl::1.31051043346-::1079::[2004_01_29_102036]::
+stta/index/hosts.pl::1.31051043346-::1077::[2004_01_29_102036]::
+stta/index/hostsuser.pl::1.31051043346-::998::[2004_01_29_102036]::
+stta/index/index_table.pl::1.31051043346-::1743::[2004_01_29_102036]::
+stta/index/index_tabs.pl::1.31051043346-::4704::[2004_01_29_102036]::
+stta/index/insupd.pl::1.31051043346-::1003::[2004_01_29_102036]::
+stta/index/ldap.pl::1.31051043346-::5906::[2004_01_29_102036]::
+stta/index/ldapcache.pl::1.31051043346-::848::[2004_01_29_102036]::
+stta/index/ldapprofile.pl::1.31051043346-::844::[2004_01_29_102036]::
+stta/index/links.pl::1.31051043346-::960::[2004_01_29_102036]::
+stta/index/master.pl::1.31051043346-::863::[2004_01_29_102036]::
+stta/index/monitor.pl::1.31051043346-::831::[2004_01_29_102036]::
+stta/index/objects.pl::1.31051043346-::2054::[2004_01_29_102036]::
+stta/index/ou.pl::1.31051043346-::1177::[2004_01_29_102036]::
+stta/index/password.pl::1.31051043346-::842::[2004_01_29_102036]::
+stta/index/servers.pl::1.31051043346-::2696::[2004_01_29_102036]::
+stta/index/supervision.pl::1.31051043346-::5171::[2004_01_29_102036]::
+stta/index/tta.pl::1.31051043346-::4661::[2004_01_29_102036]::
+stta/index/users.pl::1.31051043346-::1230::[2004_01_29_102036]::
+stta/installupd-lib.pl::1.31051043346-::25629::[2004_01_29_102036]::
+stta/inststta-lib.pl::1.31051043346-::30746::[2004_01_29_102036]::
+stta/ldap-lib.pl::1.31051043346-::39084::[2004_01_29_102036]::
+stta/ldap_backup.cgi::1.31051043346-::1406::[2004_01_29_102036]::
+stta/ldap_ldif.cgi::1.31051043346-::1430::[2004_01_29_102036]::
+stta/ldap_load.cgi::1.31051043346-::2773::[2004_01_29_102036]::
+stta/ldap_loglist.cgi::1.31051043346-::6163::[2004_01_29_102036]::
+stta/ldap_replica.cgi::1.31051043346-::1312::[2004_01_29_102036]::
+stta/ldap_restart.cgi::1.31051043346-::2784::[2004_01_29_102036]::
+stta/ldap_schema.cgi::1.31051043346-::1405::[2004_01_29_102036]::
+stta/ldapbase-lib.pl::1.31051043346-::8152::[2004_01_29_102036]::
+stta/ldapcache_backup.cgi::1.31051043346-::1501::[2004_01_29_102036]::
+stta/ldapcache_ldif.cgi::1.31051043346-::1546::[2004_01_29_102036]::
+stta/ldapcache_load.cgi::1.31051043346-::2862::[2004_01_29_102036]::
+stta/ldapcache_restart.cgi::1.31051043346-::2934::[2004_01_29_102036]::
+stta/ldapcache_schema.cgi::1.31051043346-::1482::[2004_01_29_102036]::
+stta/license.cgi::1.31051043346-::1303::[2004_01_29_102036]::
+stta/lists-lib.pl::1.31051043346-::35022::[2004_01_29_102036]::
+stta/localenv_vars.sh::1.31051043346-::432::[2004_01_29_102036]::
+stta/log_http.cgi::1.31051043346-::362::[2004_01_29_102036]::
+stta/log_httpacc.cgi::1.31051043346-::370::[2004_01_29_102036]::
+stta/log_https.cgi::1.31051043346-::365::[2004_01_29_102036]::
+stta/log_httpsacc.cgi::1.31051043346-::374::[2004_01_29_102036]::
+stta/log_ldap.cgi::1.31051043346-::377::[2004_01_29_102036]::
+stta/log_parser.pl::1.31051043346-::1105::[2004_01_29_102036]::
+stta/log_stta.cgi::1.31051043346-::404::[2004_01_29_102036]::
+stta/log_system.cgi::1.31051043346-::413::[2004_01_29_102036]::
+stta/logldap_acc.cgi::1.31051043346-::377::[2004_01_29_102036]::
+stta/logldap_cache.cgi::1.31051043346-::392::[2004_01_29_102036]::
+stta/logldapcache_acc.cgi::1.31051043346-::392::[2004_01_29_102036]::
+stta/logs_list.cgi::1.31051043346-::365::[2004_01_29_102036]::
+stta/logusers_ldap.cgi::1.31051043346-::359::[2004_01_29_102036]::
+stta/mkhelplang.sh::1.31051043346-::1435::[2004_01_29_102036]::
+stta/mktools.sh::1.31051043346-::6016::[2004_01_29_102036]::
+stta/modact.cgi::1.31051043346-::3650::[2004_01_29_102036]::
+stta/modapps.cgi::1.31051043346-::4336::[2004_01_29_102036]::
+stta/moddomains.cgi::1.31051043346-::2873::[2004_01_29_102036]::
+stta/modfile.cgi::1.31051043346-::2681::[2004_01_29_102036]::
+stta/modgrpapps.cgi::1.31051043346-::3892::[2004_01_29_102036]::
+stta/modgrphosts.cgi::1.31051043346-::3169::[2004_01_29_102036]::
+stta/modhosts.cgi::1.31051043346-::4953::[2004_01_29_102036]::
+stta/modlinks.cgi::1.31051043346-::2920::[2004_01_29_102036]::
+stta/modobj.cgi::1.31051043346-::2463::[2004_01_29_102036]::
+stta/modou.cgi::1.31051043346-::4037::[2004_01_29_102036]::
+stta/modusr.cgi::1.31051043346-::6355::[2004_01_29_102036]::
+stta/mon_actarget.cgi::1.31051043346-::16761::[2004_01_29_102036]::
+stta/mon_actdef.cgi::1.31051043346-::9004::[2004_01_29_102036]::
+stta/mon_delact.cgi::1.31051043346-::6092::[2004_01_29_102036]::
+stta/mon_runact.cgi::1.31051043346-::2006::[2004_01_29_102036]::
+stta/mon_script.cgi::1.31051043346-::467::[2004_01_29_102036]::
+stta/mon_selact.cgi::1.31051043346-::10627::[2004_01_29_102036]::
+stta/monitor-lib.pl::1.31051043346-::10150::[2004_01_29_102036]::
+stta/monitor.cgi::1.31051043346-::7012::[2004_01_29_102036]::
+stta/monitor.pl::1.31051043346-::5157::[2004_01_29_102036]::
+stta/mvobjs.cgi::1.31051043346-::11085::[2004_01_29_102036]::
+stta/obj_chooser.cgi::1.31051043346-::6258::[2004_01_29_102036]::
+stta/passwd.cgi::1.31051043346-::5567::[2004_01_29_102036]::
+stta/postinstall.pl::1.31051043346-::1307::[2004_01_29_102036]::
+stta/print-lib.pl::1.31051043346-::4004::[2004_01_29_102036]::
+stta/runfile.cgi::1.31051043346-::2876::[2004_01_29_102036]::
+stta/search.cgi::1.31051043346-::4642::[2004_01_29_102036]::
+stta/sess_filter.cgi::1.31051043346-::3890::[2004_01_29_102036]::
+stta/sess_mgmt.cgi::1.31051043346-::2244::[2004_01_29_102036]::
+stta/setup_config.pl::1.31051043346-::5038::[2004_01_29_102036]::
+stta/shells/ensdump.sh::1.31051043346-::507::[2004_01_29_102036]::
+stta/shells/ensload.sh::1.31051043346-::1063::[2004_01_29_102036]::
+stta/shells/ensrecreate.sh::1.31051043346-::1217::[2004_01_29_102036]::
+stta/shells/ensrestore.sh::1.31051043346-::829::[2004_01_29_102036]::
+stta/shells/getOSdata.sh::1.31051043346-::355::[2004_01_29_102036]::
+stta/shells/ldapreplicate.sh::1.31051043346-::6371::[2004_01_29_102036]::
+stta/shells/monitor.sh::1.31051043346-::533::[2004_01_29_102036]::
+stta/shells/oldapadm.sh::1.31051043346-::4546::[2004_01_29_102036]::
+stta/shells/openldap.sh::1.31051043346-::3195::[2004_01_29_102036]::
+stta/shells/scanttacache.sh::1.31051043346-::5658::[2004_01_29_102036]::
+stta/shells/setenv_vars.sh::1.31051043346-::2025::[2004_01_29_102036]::
+stta/shells/stta.sh::1.31051043346-::794::[2004_01_29_102036]::
+stta/shells/tta.sh::1.31051043346-::253::[2004_01_29_102036]::
+stta/shells/ttabackup.sh::1.31051043346-::1248::[2004_01_29_102036]::
+stta/shells/ttasess.sh::1.31051043346-::388::[2004_01_29_102036]::
+stta/shells/ttatcl.sh::1.31051043346-::325::[2004_01_29_102036]::
+stta/stta-lib.pl::1.31051043346-::21502::[2004_01_29_102036]::
+stta/stta_brandlst.cgi::1.31051043346-::5043::[2004_01_29_102036]::
+stta/stta_brandmgr.cgi::1.31051043346-::8233::[2004_01_29_102036]::
+stta/stta_checksync.cgi::1.31051043346-::10489::[2004_01_29_102036]::
+stta/stta_installupd.cgi::1.31051043346-::6821::[2004_01_29_102036]::
+stta/stta_mvobjs.cgi::1.31051043346-::8443::[2004_01_29_102036]::
+stta/stta_proc.cgi::1.31051043346-::1185::[2004_01_29_102036]::
+stta/stta_report.cgi::1.31051043346-::6065::[2004_01_29_102036]::
+stta/stta_synclist.cgi::1.31051043346-::1288::[2004_01_29_102036]::
+stta/stta_view.cgi::1.31051043346-::959::[2004_01_29_102036]::
+stta/stta_warn.cgi::1.31051043346-::1538::[2004_01_29_102036]::
+stta/stta_webhelp.cgi::1.31051043346-::15609::[2004_01_29_102036]::
+stta/sttaconfig.cgi::1.31051043346-::287::[2004_01_29_102036]::
+stta/sttaremote-lib.pl::1.31051043346-::732::[2004_01_29_102036]::
+stta/ttaDumpDs.tcl::1.31051043346-::4072::[2004_01_29_102036]::
+stta/ttaRestoreDs.tcl::1.31051043346-::4738::[2004_01_29_102036]::
+stta/tta_addgrphosts.cgi::1.31051043346-::6237::[2004_01_29_102036]::
+stta/tta_addhosts.cgi::1.31051043346-::8729::[2004_01_29_102036]::
+stta/tta_addhostsuser.cgi::1.31051043346-::4789::[2004_01_29_102036]::
+stta/tta_addlinks.cgi::1.31051043346-::6070::[2004_01_29_102036]::
+stta/tta_addou.cgi::1.31051043346-::5680::[2004_01_29_102036]::
+stta/tta_addprofcache.cgi::1.31051043346-::6887::[2004_01_29_102036]::
+stta/tta_addusr.cgi::1.31051043346-::8697::[2004_01_29_102036]::
+stta/tta_alivehosts.cgi::1.31051043346-::1764::[2004_01_29_102036]::
+stta/tta_archive.cgi::1.31051043346-::1170::[2004_01_29_102036]::
+stta/tta_backup.cgi::1.31051043346-::1189::[2004_01_29_102036]::
+stta/tta_delgrphosts.cgi::1.31051043346-::3042::[2004_01_29_102036]::
+stta/tta_delhosts.cgi::1.31051043346-::2952::[2004_01_29_102036]::
+stta/tta_delhostsuser.cgi::1.31051043346-::3067::[2004_01_29_102036]::
+stta/tta_dellinks.cgi::1.31051043346-::2958::[2004_01_29_102036]::
+stta/tta_delou.cgi::1.31051043346-::2893::[2004_01_29_102036]::
+stta/tta_delprofcache.cgi::1.31051043346-::3161::[2004_01_29_102036]::
+stta/tta_delusr.cgi::1.31051043346-::4930::[2004_01_29_102036]::
+stta/tta_ensbk.cgi::1.31051043346-::1174::[2004_01_29_102036]::
+stta/tta_ensdump.cgi::1.31051043346-::2156::[2004_01_29_102036]::
+stta/tta_ensload.cgi::1.31051043346-::2190::[2004_01_29_102036]::
+stta/tta_ensrecreate.cgi::1.31051043346-::2762::[2004_01_29_102036]::
+stta/tta_ensrestore.cgi::1.31051043346-::2284::[2004_01_29_102036]::
+stta/tta_filter.cgi::1.31051043346-::6546::[2004_01_29_102036]::
+stta/tta_loadous.cgi::1.31051043346-::7521::[2004_01_29_102036]::
+stta/tta_loadusrs.cgi::1.31051043346-::8228::[2004_01_29_102036]::
+stta/tta_modgrphosts.cgi::1.31051043346-::5227::[2004_01_29_102036]::
+stta/tta_modhosts.cgi::1.31051043346-::9578::[2004_01_29_102036]::
+stta/tta_modlinks.cgi::1.31051043346-::4784::[2004_01_29_102036]::
+stta/tta_modou.cgi::1.31051043346-::8722::[2004_01_29_102036]::
+stta/tta_modusr.cgi::1.31051043346-::17850::[2004_01_29_102036]::
+stta/tta_mvgrphosts.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/tta_mvhosts.cgi::1.31051043346-::302::[2004_01_29_102036]::
+stta/tta_mvlinks.cgi::1.31051043346-::304::[2004_01_29_102036]::
+stta/tta_mvou.cgi::1.31051043346-::296::[2004_01_29_102036]::
+stta/tta_mvusr.cgi::1.31051043346-::300::[2004_01_29_102036]::
+stta/tta_passwd.cgi::1.31051043346-::8343::[2004_01_29_102036]::
+stta/tta_passwdcache.cgi::1.31051043346-::6186::[2004_01_29_102036]::
+stta/tta_restart.cgi::1.31051043346-::1195::[2004_01_29_102036]::
+stta/tta_selgrphosts.cgi::1.31051043346-::4594::[2004_01_29_102036]::
+stta/tta_selhosts.cgi::1.31051043346-::5875::[2004_01_29_102036]::
+stta/tta_selhostsuser.cgi::1.31051043346-::3396::[2004_01_29_102036]::
+stta/tta_sellinks.cgi::1.31051043346-::4493::[2004_01_29_102036]::
+stta/tta_selou.cgi::1.31051043346-::4439::[2004_01_29_102036]::
+stta/tta_selprofcache.cgi::1.31051043346-::3500::[2004_01_29_102036]::
+stta/tta_selusr.cgi::1.31051043346-::15679::[2004_01_29_102036]::
+stta/tta_sess.cgi::1.31051043346-::17095::[2004_01_29_102036]::
+stta/tta_sessbilling.cgi::1.31051043346-::23837::[2004_01_29_102036]::
+stta/tta_sesscount.cgi::1.31051043346-::4621::[2004_01_29_102036]::
+stta/tta_sesstotal.cgi::1.31051043346-::3990::[2004_01_29_102036]::
+stta/tta_status.cgi::1.31051043346-::1619::[2004_01_29_102036]::
+stta/tta_updatecache.cgi::1.31051043346-::3035::[2004_01_29_102036]::
+stta/tta_works.cgi::1.31051043346-::900::[2004_01_29_102036]::
+stta/ttacache-lib.pl::1.31051043346-::20534::[2004_01_29_102036]::
+stta/ttasess-lib.pl::1.31051043346-::25750::[2004_01_29_102036]::
+stta/ttasess.pl::1.31051043346-::3191::[2004_01_29_102036]::
+stta/updateALLcache.cgi::1.31051043346-::6906::[2004_01_29_102036]::
+stta/updatecache.cgi::1.31051043346-::6702::[2004_01_29_102036]::
+stta/view.cgi::1.31051043346-::3639::[2004_01_29_102036]::
+stta/web-lib.pl::1.31051043346-::6065::[2004_01_29_102036]::
diff --git a/~downloads/files/last_deploy_vers/index.html b/~downloads/files/last_deploy_vers/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/~downloads/files/last_deploy_vers/module.info.txt b/~downloads/files/last_deploy_vers/module.info.txt
new file mode 100755
index 0000000..c530147
--- /dev/null
+++ b/~downloads/files/last_deploy_vers/module.info.txt
@@ -0,0 +1,7 @@
+name=stta
+desc_en=Services with Tarantella
+desc_es=Servicios con Tarantella
+depends=1.0
+version=1.3
+stamp=2004_01_29_102036
+brand=1.31051043346-
diff --git a/~downloads/files/last_develop_vers/.info b/~downloads/files/last_develop_vers/.info
new file mode 100644
index 0000000..1178aad
--- /dev/null
+++ b/~downloads/files/last_develop_vers/.info
@@ -0,0 +1,6 @@
+ These materials are in development process so there is not full deployment security Used them carefully
+Now most development efforts are dedicate to build STTA help
+module.info.txt has the current STTA Webmin module info.
+brandinfofile has the current branding for STTA files.
+stta-1.3.wbm.gz is the STTA package in Webmin format the very latest !!!!.
+
diff --git a/~downloads/files/last_develop_vers/.info.es b/~downloads/files/last_develop_vers/.info.es
new file mode 100644
index 0000000..eecfefe
--- /dev/null
+++ b/~downloads/files/last_develop_vers/.info.es
@@ -0,0 +1,6 @@
+ Estos materiales estén en proceso de desarrollo por lo que no ofrecen seguridad completa en entornos de explotación Deben usarse con cuidado
+La mayor parte del esfuerzo de desarrollo esta centrado ahora en la elaboración de la ayuda de STTA
+module.info.txt contiene la información correpondiente del módulo STTA en formato Webmin
+brandinfofile tiene la marca o 'brand' correspondiente de los ficheros de STTA.
+stta-1.3.wbm.gz es el paquete de STTA en formato Webmin, loúltimo de lo último !!!.
+
diff --git a/~downloads/files/last_develop_vers/brandinfofile b/~downloads/files/last_develop_vers/brandinfofile
new file mode 100755
index 0000000..943b5dd
--- /dev/null
+++ b/~downloads/files/last_develop_vers/brandinfofile
@@ -0,0 +1,254 @@
+stta/acl_security.pl::1.31051043346-::9401::[2004_01_29_102036]::
+stta/addact.cgi::1.31051043346-::4578::[2004_01_29_102036]::
+stta/addapps.cgi::1.31051043346-::4554::[2004_01_29_102036]::
+stta/adddomains.cgi::1.31051043346-::3543::[2004_01_29_102036]::
+stta/addfile.cgi::1.31051043346-::3067::[2004_01_29_102036]::
+stta/addgrpapps.cgi::1.31051043346-::4301::[2004_01_29_102036]::
+stta/addgrphosts.cgi::1.31051043346-::4824::[2004_01_29_102036]::
+stta/addhosts.cgi::1.31051043346-::5411::[2004_01_29_102036]::
+stta/addhostsuser.cgi::1.31051043346-::1512::[2004_01_29_102036]::
+stta/addlinks.cgi::1.31051043346-::3361::[2004_01_29_102036]::
+stta/addobj.cgi::1.31051043346-::4770::[2004_01_29_102036]::
+stta/addou.cgi::1.31051043346-::4995::[2004_01_29_102036]::
+stta/addprofcache.cgi::1.31051043346-::1820::[2004_01_29_102036]::
+stta/addusr.cgi::1.31051043346-::9221::[2004_01_29_102036]::
+stta/app-lib.pl::1.31051043346-::4915::[2004_01_29_102036]::
+stta/base-lib.pl::1.31051043346-::9951::[2004_01_29_102036]::
+stta/brandmgr.pl::1.31051043346-::6047::[2004_01_29_102036]::
+stta/cache_addapps.cgi::1.31051043346-::8940::[2004_01_29_102036]::
+stta/cache_adddomains.cgi::1.31051043346-::6205::[2004_01_29_102036]::
+stta/cache_addgrpapps.cgi::1.31051043346-::6227::[2004_01_29_102036]::
+stta/cache_addobj.cgi::1.31051043346-::13332::[2004_01_29_102036]::
+stta/cache_delapps.cgi::1.31051043346-::2924::[2004_01_29_102036]::
+stta/cache_deldomains.cgi::1.31051043346-::3018::[2004_01_29_102036]::
+stta/cache_delgrpapps.cgi::1.31051043346-::3036::[2004_01_29_102036]::
+stta/cache_delobj.cgi::1.31051043346-::6467::[2004_01_29_102036]::
+stta/cache_filter.cgi::1.31051043346-::15362::[2004_01_29_102036]::
+stta/cache_modapps.cgi::1.31051043346-::7247::[2004_01_29_102036]::
+stta/cache_moddomains.cgi::1.31051043346-::5214::[2004_01_29_102036]::
+stta/cache_modgrpapps.cgi::1.31051043346-::8130::[2004_01_29_102036]::
+stta/cache_modobj.cgi::1.31051043346-::6344::[2004_01_29_102036]::
+stta/cache_mvapps.cgi::1.31051043346-::302::[2004_01_29_102036]::
+stta/cache_mvdomains.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/cache_mvgrpapps.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/cache_selapps.cgi::1.31051043346-::4472::[2004_01_29_102036]::
+stta/cache_seldomains.cgi::1.31051043346-::4574::[2004_01_29_102036]::
+stta/cache_selgrpapps.cgi::1.31051043346-::4810::[2004_01_29_102036]::
+stta/cache_selobj.cgi::1.31051043346-::15169::[2004_01_29_102036]::
+stta/cleanfile.cgi::1.31051043346-::2729::[2004_01_29_102036]::
+stta/config.cgi::1.31051043346-::1872::[2004_01_29_102036]::
+stta/config_info.pl::1.31051043346-::19802::[2004_01_29_102036]::
+stta/delact.cgi::1.31051043346-::1750::[2004_01_29_102036]::
+stta/delapps.cgi::1.31051043346-::2289::[2004_01_29_102036]::
+stta/deldomains.cgi::1.31051043346-::2426::[2004_01_29_102036]::
+stta/delfile.cgi::1.31051043346-::2585::[2004_01_29_102036]::
+stta/delgrpapps.cgi::1.31051043346-::2429::[2004_01_29_102036]::
+stta/delgrphosts.cgi::1.31051043346-::2218::[2004_01_29_102036]::
+stta/delhosts.cgi::1.31051043346-::2172::[2004_01_29_102036]::
+stta/delhostsuser.cgi::1.31051043346-::1214::[2004_01_29_102036]::
+stta/dellinks.cgi::1.31051043346-::2384::[2004_01_29_102036]::
+stta/delobj.cgi::1.31051043346-::2504::[2004_01_29_102036]::
+stta/delou.cgi::1.31051043346-::2554::[2004_01_29_102036]::
+stta/delprofcache.cgi::1.31051043346-::1289::[2004_01_29_102036]::
+stta/delusr.cgi::1.31051043346-::4463::[2004_01_29_102036]::
+stta/dir_save.cgi::1.31051043346-::404::[2004_01_29_102036]::
+stta/dirdef_stta.cgi::1.31051043346-::410::[2004_01_29_102036]::
+stta/dirlogs_cache.cgi::1.31051043346-::426::[2004_01_29_102036]::
+stta/dirlogs_tta.cgi::1.31051043346-::409::[2004_01_29_102036]::
+stta/feedback.cgi::1.31051043346-::17508::[2004_01_29_102036]::
+stta/feedback_form.cgi::1.31051043346-::5079::[2004_01_29_102036]::
+stta/file_clean.cgi::1.31051043346-::4530::[2004_01_29_102036]::
+stta/file_deflists.cgi::1.31051043346-::3117::[2004_01_29_102036]::
+stta/file_del.cgi::1.31051043346-::4390::[2004_01_29_102036]::
+stta/file_manager.cgi::1.31051043346-::10495::[2004_01_29_102036]::
+stta/file_mod.cgi::1.31051043346-::9797::[2004_01_29_102036]::
+stta/file_showlist.cgi::1.31051043346-::7261::[2004_01_29_102036]::
+stta/fixhosts.cgi::1.31051043346-::2123::[2004_01_29_102036]::
+stta/fixobjs.cgi::1.31051043346-::5182::[2004_01_29_102036]::
+stta/footer.pl::1.31051043346-::1339::[2004_01_29_102036]::
+stta/global-lib.pl::1.31051043346-::55908::[2004_01_29_102036]::
+stta/global.js::1.31051043346-::5883::[2004_01_29_102036]::
+stta/help-lib.pl::1.31051043346-::27064::[2004_01_29_102036]::
+stta/help.cgi::1.31051043346-::4085::[2004_01_29_102036]::
+stta/host_chooser.cgi::1.31051043346-::8259::[2004_01_29_102036]::
+stta/html-lib.pl::1.31051043346-::62506::[2004_01_29_102036]::
+stta/index.cgi::1.31051043346-::1260::[2004_01_29_102036]::
+stta/index/admin.pl::1.31051043346-::4105::[2004_01_29_102036]::
+stta/index/apps.pl::1.31051043346-::1009::[2004_01_29_102036]::
+stta/index/browsers.pl::1.31051043346-::930::[2004_01_29_102036]::
+stta/index/domains.pl::1.31051043346-::1066::[2004_01_29_102036]::
+stta/index/grpapps.pl::1.31051043346-::1013::[2004_01_29_102036]::
+stta/index/grphosts.pl::1.31051043346-::1079::[2004_01_29_102036]::
+stta/index/hosts.pl::1.31051043346-::1077::[2004_01_29_102036]::
+stta/index/hostsuser.pl::1.31051043346-::998::[2004_01_29_102036]::
+stta/index/index_table.pl::1.31051043346-::1743::[2004_01_29_102036]::
+stta/index/index_tabs.pl::1.31051043346-::4704::[2004_01_29_102036]::
+stta/index/insupd.pl::1.31051043346-::1003::[2004_01_29_102036]::
+stta/index/ldap.pl::1.31051043346-::5906::[2004_01_29_102036]::
+stta/index/ldapcache.pl::1.31051043346-::848::[2004_01_29_102036]::
+stta/index/ldapprofile.pl::1.31051043346-::844::[2004_01_29_102036]::
+stta/index/links.pl::1.31051043346-::960::[2004_01_29_102036]::
+stta/index/master.pl::1.31051043346-::863::[2004_01_29_102036]::
+stta/index/monitor.pl::1.31051043346-::831::[2004_01_29_102036]::
+stta/index/objects.pl::1.31051043346-::2054::[2004_01_29_102036]::
+stta/index/ou.pl::1.31051043346-::1177::[2004_01_29_102036]::
+stta/index/password.pl::1.31051043346-::842::[2004_01_29_102036]::
+stta/index/servers.pl::1.31051043346-::2696::[2004_01_29_102036]::
+stta/index/supervision.pl::1.31051043346-::5171::[2004_01_29_102036]::
+stta/index/tta.pl::1.31051043346-::4661::[2004_01_29_102036]::
+stta/index/users.pl::1.31051043346-::1230::[2004_01_29_102036]::
+stta/installupd-lib.pl::1.31051043346-::25629::[2004_01_29_102036]::
+stta/inststta-lib.pl::1.31051043346-::30746::[2004_01_29_102036]::
+stta/ldap-lib.pl::1.31051043346-::39084::[2004_01_29_102036]::
+stta/ldap_backup.cgi::1.31051043346-::1406::[2004_01_29_102036]::
+stta/ldap_ldif.cgi::1.31051043346-::1430::[2004_01_29_102036]::
+stta/ldap_load.cgi::1.31051043346-::2773::[2004_01_29_102036]::
+stta/ldap_loglist.cgi::1.31051043346-::6163::[2004_01_29_102036]::
+stta/ldap_replica.cgi::1.31051043346-::1312::[2004_01_29_102036]::
+stta/ldap_restart.cgi::1.31051043346-::2784::[2004_01_29_102036]::
+stta/ldap_schema.cgi::1.31051043346-::1405::[2004_01_29_102036]::
+stta/ldapbase-lib.pl::1.31051043346-::8152::[2004_01_29_102036]::
+stta/ldapcache_backup.cgi::1.31051043346-::1501::[2004_01_29_102036]::
+stta/ldapcache_ldif.cgi::1.31051043346-::1546::[2004_01_29_102036]::
+stta/ldapcache_load.cgi::1.31051043346-::2862::[2004_01_29_102036]::
+stta/ldapcache_restart.cgi::1.31051043346-::2934::[2004_01_29_102036]::
+stta/ldapcache_schema.cgi::1.31051043346-::1482::[2004_01_29_102036]::
+stta/license.cgi::1.31051043346-::1303::[2004_01_29_102036]::
+stta/lists-lib.pl::1.31051043346-::35022::[2004_01_29_102036]::
+stta/localenv_vars.sh::1.31051043346-::432::[2004_01_29_102036]::
+stta/log_http.cgi::1.31051043346-::362::[2004_01_29_102036]::
+stta/log_httpacc.cgi::1.31051043346-::370::[2004_01_29_102036]::
+stta/log_https.cgi::1.31051043346-::365::[2004_01_29_102036]::
+stta/log_httpsacc.cgi::1.31051043346-::374::[2004_01_29_102036]::
+stta/log_ldap.cgi::1.31051043346-::377::[2004_01_29_102036]::
+stta/log_parser.pl::1.31051043346-::1105::[2004_01_29_102036]::
+stta/log_stta.cgi::1.31051043346-::404::[2004_01_29_102036]::
+stta/log_system.cgi::1.31051043346-::413::[2004_01_29_102036]::
+stta/logldap_acc.cgi::1.31051043346-::377::[2004_01_29_102036]::
+stta/logldap_cache.cgi::1.31051043346-::392::[2004_01_29_102036]::
+stta/logldapcache_acc.cgi::1.31051043346-::392::[2004_01_29_102036]::
+stta/logs_list.cgi::1.31051043346-::365::[2004_01_29_102036]::
+stta/logusers_ldap.cgi::1.31051043346-::359::[2004_01_29_102036]::
+stta/mkhelplang.sh::1.31051043346-::1435::[2004_01_29_102036]::
+stta/mktools.sh::1.31051043346-::6016::[2004_01_29_102036]::
+stta/modact.cgi::1.31051043346-::3650::[2004_01_29_102036]::
+stta/modapps.cgi::1.31051043346-::4336::[2004_01_29_102036]::
+stta/moddomains.cgi::1.31051043346-::2873::[2004_01_29_102036]::
+stta/modfile.cgi::1.31051043346-::2681::[2004_01_29_102036]::
+stta/modgrpapps.cgi::1.31051043346-::3892::[2004_01_29_102036]::
+stta/modgrphosts.cgi::1.31051043346-::3169::[2004_01_29_102036]::
+stta/modhosts.cgi::1.31051043346-::4953::[2004_01_29_102036]::
+stta/modlinks.cgi::1.31051043346-::2920::[2004_01_29_102036]::
+stta/modobj.cgi::1.31051043346-::2463::[2004_01_29_102036]::
+stta/modou.cgi::1.31051043346-::4037::[2004_01_29_102036]::
+stta/modusr.cgi::1.31051043346-::6355::[2004_01_29_102036]::
+stta/mon_actarget.cgi::1.31051043346-::16761::[2004_01_29_102036]::
+stta/mon_actdef.cgi::1.31051043346-::9004::[2004_01_29_102036]::
+stta/mon_delact.cgi::1.31051043346-::6092::[2004_01_29_102036]::
+stta/mon_runact.cgi::1.31051043346-::2006::[2004_01_29_102036]::
+stta/mon_script.cgi::1.31051043346-::467::[2004_01_29_102036]::
+stta/mon_selact.cgi::1.31051043346-::10627::[2004_01_29_102036]::
+stta/monitor-lib.pl::1.31051043346-::10150::[2004_01_29_102036]::
+stta/monitor.cgi::1.31051043346-::7012::[2004_01_29_102036]::
+stta/monitor.pl::1.31051043346-::5157::[2004_01_29_102036]::
+stta/mvobjs.cgi::1.31051043346-::11085::[2004_01_29_102036]::
+stta/obj_chooser.cgi::1.31051043346-::6258::[2004_01_29_102036]::
+stta/passwd.cgi::1.31051043346-::5567::[2004_01_29_102036]::
+stta/postinstall.pl::1.31051043346-::1307::[2004_01_29_102036]::
+stta/print-lib.pl::1.31051043346-::4004::[2004_01_29_102036]::
+stta/runfile.cgi::1.31051043346-::2876::[2004_01_29_102036]::
+stta/search.cgi::1.31051043346-::4642::[2004_01_29_102036]::
+stta/sess_filter.cgi::1.31051043346-::3890::[2004_01_29_102036]::
+stta/sess_mgmt.cgi::1.31051043346-::2244::[2004_01_29_102036]::
+stta/setup_config.pl::1.31051043346-::5038::[2004_01_29_102036]::
+stta/shells/ensdump.sh::1.31051043346-::507::[2004_01_29_102036]::
+stta/shells/ensload.sh::1.31051043346-::1063::[2004_01_29_102036]::
+stta/shells/ensrecreate.sh::1.31051043346-::1217::[2004_01_29_102036]::
+stta/shells/ensrestore.sh::1.31051043346-::829::[2004_01_29_102036]::
+stta/shells/getOSdata.sh::1.31051043346-::355::[2004_01_29_102036]::
+stta/shells/ldapreplicate.sh::1.31051043346-::6371::[2004_01_29_102036]::
+stta/shells/monitor.sh::1.31051043346-::533::[2004_01_29_102036]::
+stta/shells/oldapadm.sh::1.31051043346-::4546::[2004_01_29_102036]::
+stta/shells/openldap.sh::1.31051043346-::3195::[2004_01_29_102036]::
+stta/shells/scanttacache.sh::1.31051043346-::5658::[2004_01_29_102036]::
+stta/shells/setenv_vars.sh::1.31051043346-::2025::[2004_01_29_102036]::
+stta/shells/stta.sh::1.31051043346-::794::[2004_01_29_102036]::
+stta/shells/tta.sh::1.31051043346-::253::[2004_01_29_102036]::
+stta/shells/ttabackup.sh::1.31051043346-::1248::[2004_01_29_102036]::
+stta/shells/ttasess.sh::1.31051043346-::388::[2004_01_29_102036]::
+stta/shells/ttatcl.sh::1.31051043346-::325::[2004_01_29_102036]::
+stta/stta-lib.pl::1.31051043346-::21502::[2004_01_29_102036]::
+stta/stta_brandlst.cgi::1.31051043346-::5043::[2004_01_29_102036]::
+stta/stta_brandmgr.cgi::1.31051043346-::8233::[2004_01_29_102036]::
+stta/stta_checksync.cgi::1.31051043346-::10489::[2004_01_29_102036]::
+stta/stta_installupd.cgi::1.31051043346-::6821::[2004_01_29_102036]::
+stta/stta_mvobjs.cgi::1.31051043346-::8443::[2004_01_29_102036]::
+stta/stta_proc.cgi::1.31051043346-::1185::[2004_01_29_102036]::
+stta/stta_report.cgi::1.31051043346-::6065::[2004_01_29_102036]::
+stta/stta_synclist.cgi::1.31051043346-::1288::[2004_01_29_102036]::
+stta/stta_view.cgi::1.31051043346-::959::[2004_01_29_102036]::
+stta/stta_warn.cgi::1.31051043346-::1538::[2004_01_29_102036]::
+stta/stta_webhelp.cgi::1.31051043346-::15609::[2004_01_29_102036]::
+stta/sttaconfig.cgi::1.31051043346-::287::[2004_01_29_102036]::
+stta/sttaremote-lib.pl::1.31051043346-::732::[2004_01_29_102036]::
+stta/ttaDumpDs.tcl::1.31051043346-::4072::[2004_01_29_102036]::
+stta/ttaRestoreDs.tcl::1.31051043346-::4738::[2004_01_29_102036]::
+stta/tta_addgrphosts.cgi::1.31051043346-::6237::[2004_01_29_102036]::
+stta/tta_addhosts.cgi::1.31051043346-::8729::[2004_01_29_102036]::
+stta/tta_addhostsuser.cgi::1.31051043346-::4789::[2004_01_29_102036]::
+stta/tta_addlinks.cgi::1.31051043346-::6070::[2004_01_29_102036]::
+stta/tta_addou.cgi::1.31051043346-::5680::[2004_01_29_102036]::
+stta/tta_addprofcache.cgi::1.31051043346-::6887::[2004_01_29_102036]::
+stta/tta_addusr.cgi::1.31051043346-::8697::[2004_01_29_102036]::
+stta/tta_alivehosts.cgi::1.31051043346-::1764::[2004_01_29_102036]::
+stta/tta_archive.cgi::1.31051043346-::1170::[2004_01_29_102036]::
+stta/tta_backup.cgi::1.31051043346-::1189::[2004_01_29_102036]::
+stta/tta_delgrphosts.cgi::1.31051043346-::3042::[2004_01_29_102036]::
+stta/tta_delhosts.cgi::1.31051043346-::2952::[2004_01_29_102036]::
+stta/tta_delhostsuser.cgi::1.31051043346-::3067::[2004_01_29_102036]::
+stta/tta_dellinks.cgi::1.31051043346-::2958::[2004_01_29_102036]::
+stta/tta_delou.cgi::1.31051043346-::2893::[2004_01_29_102036]::
+stta/tta_delprofcache.cgi::1.31051043346-::3161::[2004_01_29_102036]::
+stta/tta_delusr.cgi::1.31051043346-::4930::[2004_01_29_102036]::
+stta/tta_ensbk.cgi::1.31051043346-::1174::[2004_01_29_102036]::
+stta/tta_ensdump.cgi::1.31051043346-::2156::[2004_01_29_102036]::
+stta/tta_ensload.cgi::1.31051043346-::2190::[2004_01_29_102036]::
+stta/tta_ensrecreate.cgi::1.31051043346-::2762::[2004_01_29_102036]::
+stta/tta_ensrestore.cgi::1.31051043346-::2284::[2004_01_29_102036]::
+stta/tta_filter.cgi::1.31051043346-::6546::[2004_01_29_102036]::
+stta/tta_loadous.cgi::1.31051043346-::7521::[2004_01_29_102036]::
+stta/tta_loadusrs.cgi::1.31051043346-::8228::[2004_01_29_102036]::
+stta/tta_modgrphosts.cgi::1.31051043346-::5227::[2004_01_29_102036]::
+stta/tta_modhosts.cgi::1.31051043346-::9578::[2004_01_29_102036]::
+stta/tta_modlinks.cgi::1.31051043346-::4784::[2004_01_29_102036]::
+stta/tta_modou.cgi::1.31051043346-::8722::[2004_01_29_102036]::
+stta/tta_modusr.cgi::1.31051043346-::17850::[2004_01_29_102036]::
+stta/tta_mvgrphosts.cgi::1.31051043346-::308::[2004_01_29_102036]::
+stta/tta_mvhosts.cgi::1.31051043346-::302::[2004_01_29_102036]::
+stta/tta_mvlinks.cgi::1.31051043346-::304::[2004_01_29_102036]::
+stta/tta_mvou.cgi::1.31051043346-::296::[2004_01_29_102036]::
+stta/tta_mvusr.cgi::1.31051043346-::300::[2004_01_29_102036]::
+stta/tta_passwd.cgi::1.31051043346-::8343::[2004_01_29_102036]::
+stta/tta_passwdcache.cgi::1.31051043346-::6186::[2004_01_29_102036]::
+stta/tta_restart.cgi::1.31051043346-::1195::[2004_01_29_102036]::
+stta/tta_selgrphosts.cgi::1.31051043346-::4594::[2004_01_29_102036]::
+stta/tta_selhosts.cgi::1.31051043346-::5875::[2004_01_29_102036]::
+stta/tta_selhostsuser.cgi::1.31051043346-::3396::[2004_01_29_102036]::
+stta/tta_sellinks.cgi::1.31051043346-::4493::[2004_01_29_102036]::
+stta/tta_selou.cgi::1.31051043346-::4439::[2004_01_29_102036]::
+stta/tta_selprofcache.cgi::1.31051043346-::3500::[2004_01_29_102036]::
+stta/tta_selusr.cgi::1.31051043346-::15679::[2004_01_29_102036]::
+stta/tta_sess.cgi::1.31051043346-::17095::[2004_01_29_102036]::
+stta/tta_sessbilling.cgi::1.31051043346-::23837::[2004_01_29_102036]::
+stta/tta_sesscount.cgi::1.31051043346-::4621::[2004_01_29_102036]::
+stta/tta_sesstotal.cgi::1.31051043346-::3990::[2004_01_29_102036]::
+stta/tta_status.cgi::1.31051043346-::1619::[2004_01_29_102036]::
+stta/tta_updatecache.cgi::1.31051043346-::3035::[2004_01_29_102036]::
+stta/tta_works.cgi::1.31051043346-::900::[2004_01_29_102036]::
+stta/ttacache-lib.pl::1.31051043346-::20534::[2004_01_29_102036]::
+stta/ttasess-lib.pl::1.31051043346-::25750::[2004_01_29_102036]::
+stta/ttasess.pl::1.31051043346-::3191::[2004_01_29_102036]::
+stta/updateALLcache.cgi::1.31051043346-::6906::[2004_01_29_102036]::
+stta/updatecache.cgi::1.31051043346-::6702::[2004_01_29_102036]::
+stta/view.cgi::1.31051043346-::3639::[2004_01_29_102036]::
+stta/web-lib.pl::1.31051043346-::6065::[2004_01_29_102036]::
diff --git a/~downloads/files/last_develop_vers/index.html b/~downloads/files/last_develop_vers/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/~downloads/files/last_develop_vers/module.info.txt b/~downloads/files/last_develop_vers/module.info.txt
new file mode 100755
index 0000000..c530147
--- /dev/null
+++ b/~downloads/files/last_develop_vers/module.info.txt
@@ -0,0 +1,7 @@
+name=stta
+desc_en=Services with Tarantella
+desc_es=Servicios con Tarantella
+depends=1.0
+version=1.3
+stamp=2004_01_29_102036
+brand=1.31051043346-
diff --git a/~downloads/files/old/.info b/~downloads/files/old/.info
new file mode 100644
index 0000000..586e9fe
--- /dev/null
+++ b/~downloads/files/old/.info
@@ -0,0 +1,2 @@
+Old STTA patches and packages (mostly obsolete).
+
diff --git a/~downloads/files/old/.info.es b/~downloads/files/old/.info.es
new file mode 100644
index 0000000..5480ac7
--- /dev/null
+++ b/~downloads/files/old/.info.es
@@ -0,0 +1 @@
+Parches y empaquetados de STTA anteriores (la mayoría obsoletos).
diff --git a/~downloads/files/old/index.html b/~downloads/files/old/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/~downloads/files/old/patch_1042620827-.stta.tar.gz b/~downloads/files/old/patch_1042620827-.stta.tar.gz
new file mode 100644
index 0000000..5342fd5
Binary files /dev/null and b/~downloads/files/old/patch_1042620827-.stta.tar.gz differ
diff --git a/~downloads/files/old/patch_132222-01.tar.gz b/~downloads/files/old/patch_132222-01.tar.gz
new file mode 100644
index 0000000..6d2f460
Binary files /dev/null and b/~downloads/files/old/patch_132222-01.tar.gz differ
diff --git a/~downloads/files/old/stta-PRE-1.3.wbm.gz b/~downloads/files/old/stta-PRE-1.3.wbm.gz
new file mode 100644
index 0000000..7b76318
Binary files /dev/null and b/~downloads/files/old/stta-PRE-1.3.wbm.gz differ
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22.tar.gz b/~downloads/files/tmp/Net_SSLeay.pm-1.22.tar.gz
new file mode 100644
index 0000000..236f867
Binary files /dev/null and b/~downloads/files/tmp/Net_SSLeay.pm-1.22.tar.gz differ
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/.rnd b/~downloads/files/tmp/Net_SSLeay.pm-1.22/.rnd
new file mode 100644
index 0000000..2599bd5
Binary files /dev/null and b/~downloads/files/tmp/Net_SSLeay.pm-1.22/.rnd differ
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Changes b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Changes
new file mode 100644
index 0000000..2d49dcb
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Changes
@@ -0,0 +1,167 @@
+Revision history for Perl extension Net::SSLeay.
+
+0.01 Thu Jun 27 03:56:00 1996
+ - original version; created by h2xs 1.16
+0.02 Trial with SSL.pm name
+0.03 Renamed everything Net::SSLeay
+0.04 19.7.1996 Fixed some 0.6.1 incompatibilities, namely removed
+ #include , fixed typo in SSL_get_cerificate, fixed
+ the return type of the same. --Sampo
+1.00 19.6.1998, Sampo Kellomaki
+ - overhauled to SSLeay-0.9.0
+ - renamed cat to sslcat
+ - added lots of convenience functions, like get_https
+ - added couple of X509 routines
+ - improved tests and documentation
+ - fixed callbacks (but found that old callbacks dont work)
+1.01 23.6.1998, Sampo Kellomaki
+ - made Makefile.PL check SSLeay version and to be more CPAN kosher
+ - changed build instructions to build outside perl source tree
+ - added random number initialization using /dev/urandom (if available)
+ - made ssl_write_all accept references, this is more memory efficient
+1.02 8.7.1998, Sampo Kellomaki
+ - Added SSL_(CTX)?_set_options and associated constants
+ - Slight clean-ups
+1.03 4.1.1999, Sampo Kellomaki
+ - Merged URI encoding patch to make_form
+ from Joe Rhett
+ - changed sslcat, ssl_read_all, ssl_write_all to return error messages
+ as second member of list. Functions continue to behave the old way
+ if scalar return value is used (they check this with wantarray).
+ Change was suggested by Joe Rhett.
+ - changed $trace levels so that 0 does not produce any output
+ - changed get_https and put_https to fake error 900 in $response
+ return field
+ - changed print_errs and some other internals to return textual
+ errors instead of error count
+ - changed SSLeay.xs comments from #if 0 to #define REM. This will
+ hopefully make it easier to compile with some vendor compilers
+ - Added version detection code for OpenSSL-0.9.1c and checked
+ build
+1.04 31.1.1999, Sampo Kellomaki
+ - Backward incompatible changes in OpenSSL API mean that 1.04 will
+ drop support for SSLeay and all OpenSSL versions prior
+ to 0.9.2b release. Thanks guys!
+ - Detected errors in OpenSSL-0.9.2b/ssl/ssl.h - see patch in README
+ - Reordered arguments of several functions to track OpenSSL-0.9.2b
+ changes. This also changes the order of args in corresponding
+ perl functions. You have been warned!
+ - SSL_use_certificate_ASN1(s,d,len) // swapped d and len
+ - WARNING: Possibly fatal verify_callback parameter list issue
+ is still standing
+ - cleaned up many macros that used to access ctx->session directly,
+ OpenSSL-0.9.2b defines thes macros properly so I use them now.
+ - Added SSL_ctrl() and SSL_CTX_ctrl()
+ - Added SSL_get_options(), SSL_CTX_get_options(),
+ SSL_CTX_set_cipher_list()
+ - Removed SSL_add_session(), SSL_remove_session(),
+ and SSL_flush_sessions() per #if 0 in ssl.h, line 667
+ - Updated paths in various utility programs
+ - Upgraded version number detection logic in Makefile.PL
+ - Added -rsaref flag to Makefile.PL. This allows linking against rsaref
+ 30.7.1999, final squeeze to get this out --Sampo
+ - upgrade to OpenSSL-0.9.3a
+ - upper case all header names so keys of the hash returned
+ from get_https are predictible
+ - fixed get_https and post_https so they don't do shutdown
+ anymore. This used to cause headaches when connection
+ renegotiation happened.
+ - applied ssl_read_CRLF patch by Clinton Wong
+ - ActivePerl diffs from anton@@_genua.de applied,
+ but not tested.
+1.05 31.1.1999, --Sampo
+ - fixed test cert creation (lack of symlinks, reported
+ by schinder@@_pobox.com)
+ - callbacks fixed and tested to work
+ - added Authentication examples
+ - added couple more X509_STORE_CTX family functions
+1.06 7.4.2001, --Sampo
+ - fixed ssl_read_all bug where `0' input was mistaken for EOF.
+ - openssl-0.9.6a fixes (e.g. random number generator init)
+ - various minor fixes subnitted by fellow netters (sorry, I lost track
+ of your names so I do not name the contributors here)
+1.07 18.4.2001,
+ - TLSv1 support by Stephen C. Koehler
+1.08 25.4.2001,
+ - applied 64 bit fixes by Marko Asplund
+ 17.7.2001,
+ - applied error codes and SSL_*_method patch by Noel Burton-Krahn
+ via aspa
+ - warning cleanups by Jared Allison
+ - do last loop fixes from Jim Bowlin
+ - Fixed extra-newline-if-header-already-contained-newline problem
+ reported by Sean McMurray (first reported by
+ Yuao TANIGAWA but not fixed by me back
+ then for some reason, my bad)
+ - Added ability to set client certificate for https_cat and sslcat
+ as suggested by Avi Ben-Harush
+ - created do_https2 with more rational calling sequence
+ 18.7.2001,
+ - numerous windows oriented fixes from Eric A Selber
+
+ - bumped OpenSSL version requirement to 0.9.6b and tested
+ - merged in Net::SSLeay::Handle by Jim Bowlin
+1.09 20.8.2001,
+ - fixed Makefile.PL (computation of bin_path) and test.pl ($perl
+ use before defined) per Gordon Lack
+ 11.9.2001,
+ - Patch by Jeremy Mates to make Handle.pm
+ more acceptable for older perls
+ 25.9.2001,
+ - systematically implemented many of the newer functions of
+ openssl API (per popular request and for completeness)
+1.10 7.12.2001,
+ - Added proxy support by Bruno De Wolf
+1.11 14.12.2001,
+ - Added proxy support to Net::SSLeay::Handle, too
+1.12 6.1.2002
+ - cosmetic fix to socket options from
+ Kwindla Hultman Kramer
+1.13 13.2.2002
+ - eliminated initializing random numbers using /etc/passwd per
+ comments by Matt Messier
+ - tested against openssl-0.9.6c
+1.14 25.3.2002
+ - added code to Makefile.PL to verify that the same C compiler
+ is used for both perl and openssl
+ - added code to Makefile.PL to support aCC on HPUX. Detective
+ work contributed by Marko Asplund.
+ - added peer certificate support to hilevel API, inspired
+ by mock@@_obscurity.org
+1.15 3.4.2002
+ - added `use bytes' from Marcus Taylor
+ This avoids unicode/utf8 (as may appear in some XML docs)
+ from fooling the length comuptations.
+ - Dropped support for perl5.005_03 because I do not have opportunity
+ to test it. --Sampo
+1.16 17.4.2002-22.5.2002
+ - applied patch to fix CTX_set_default_passwd_cb() contributed
+ by Timo Kujala , --Sampo
+ - similar patch by Chris Ridd
+ - applied patch to add various API functions by mikem@open.com_.au
+ - 5.005_03 compat fix for Handle.pm from Jim Mintha
+1.17 8.6.2002
+ - further fixes for Net::SSLeay::Handle from jbowlin@@_linklint.org
+ - improved README.Win32 and added RECIPE.Win32 from
+ Hermann Kelley
+1.18 15.6.2002
+ - applied minor patch by Mark Veltzer to Makefile.PL
+1.19 10.8.2002-16.8.2002
+ - Added SSL_peek patch to ssl_read_until from
+ Peter Behroozi --Sampo
+ - Improved Windows instructions per Marcel Bucher
+1.20 16.8.2002
+ - Additional patch by Peter Behroozi --Sampo
+ - Patch by Mike McCauley mikem@open.com_.au
+1.21 6.9.2002
+ - Patch by Mike McCauley mikem@open.com_.au
+ 19.9.2002
+ - applied patch from Tim Engler
+ 30.10.2002,
+ - perl-5.8/gcc-3.2 patch on Makefile.PL from
+ Joern_Hoos@@notes.uni-paderborn._de, lucho@@galix._com,
+ bellis@@saberlogic._com, and simonclewer@@superquote._com
+1.22 8.1.2003
+ - proxy auth fix from Bill.Muller@@ubsw_..com
+ 18.2.2003
+ - RAND patch from Toni Andjelkovic
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Credits b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Credits
new file mode 100644
index 0000000..012c80e
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Credits
@@ -0,0 +1,7 @@
+anton@genua.de Win32
+Clinton Wong
+Jim Bowlin for contributing Net::SSLeay::Handle
+Eric A Selber for Windows fixes and testing
+Marko Asplund for many suggestions and fixes
+
+See Changes file for other contributions.
\ No newline at end of file
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/MANIFEST b/~downloads/files/tmp/Net_SSLeay.pm-1.22/MANIFEST
new file mode 100644
index 0000000..793f950
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/MANIFEST
@@ -0,0 +1,40 @@
+Changes
+Credits
+README
+README.Win32
+QuickRef
+MANIFEST
+Makefile.PL
+SSLeay.pm
+SSLeay.xs
+typemap
+test.pl
+ptrcasttst.c
+ptrtstrun.pl
+.rnd
+RECIPE.Win32
+examples/minicli.pl
+examples/sslecho.pl
+examples/sslcat.pl
+examples/ssl-inetd-serv.pl
+examples/callback.pl
+examples/bulk.pl
+examples/stdio_bulk.pl
+examples/https-proxy-snif.pl
+examples/get_page.pl
+examples/get_page_cert.pl
+examples/get_authenticated_page.pl
+examples/req.conf
+examples/makecert.pl
+examples/ssl_diff.pl
+examples/cli-cert.pl
+examples/server_key.pem
+examples/cb-testi.pl
+examples/bio.pl
+examples/ephemeral.pl
+examples/passwd-cb.pl
+Net-SSLeay-Handle-0.50/Changes
+Net-SSLeay-Handle-0.50/Handle.pm
+Net-SSLeay-Handle-0.50/MANIFEST
+Net-SSLeay-Handle-0.50/Makefile.PL
+Net-SSLeay-Handle-0.50/test.pl
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Makefile.PL b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Makefile.PL
new file mode 100755
index 0000000..2643c3d
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Makefile.PL
@@ -0,0 +1,196 @@
+#!/usr/bin/perl
+# 23.6.1998, Sampo Kellomaki
+# 30.7.1999, upgraded for OpenSSL-0.9.3a --Sampo
+# 7.4.2001, upgraded to OpenSSL-0.9.6a --Sampo
+# 15.4.2001, fixed little bug in ssl directory detection --Sampo
+# 18.7.2001, fixed numerous issues reported by Eric A Selber
+# that made Windows builds painful --Sampo
+# 20.8.2001, tweaked path editing, thanks to Gordon Lack
+# --Sampo
+# $Id: Makefile.PL,v 1.11 2002/10/31 07:03:28 sampo Exp $
+#
+# Configuration script for Net::SSLeay.pm
+
+$usage = <;
+ chomp $openssl_path;
+}
+
+$vers = `$exe_path version`
+ or die "Couldn't run `$exe_path' ($?)\n";
+
+unless (($lib_name, $maj, $min, $letter) = $vers =~
+ /^(OpenSSL)\s+(\d+\.\d+)\.(\d+)([a-z]*)/) {
+ die "Openssl version test failed (`$vers' was returned, but\n"
+ . "couldn't be parsed). Either you have bogus OpenSSL or a new version\n"
+ . "has changed the version number format.\n";
+}
+
+print "You have $lib_name-$maj.$min$letter installed in $openssl_path\n";
+
+die "That's too old. Please upgrade to OpenSSL-$openssl_vers\n"
+ . "before trying to install this module. If you can't upgrade,\n"
+ . "see README for other options.\n"
+ if $maj eq '0.9' && $min < 3;
+
+warn "That's is newer than what this module was tested with ($openssl_vers). You should\n"
+ . "consider checking if there is a newer release of this module\n"
+ . "available. Everything will probably work OK, though.\n"
+ if $maj > 0.9 || $min > 6;
+
+warn "openssl-0.9.6d and earlier versions have security flaws, see advisory at www.openssl.org, upgrading to openssl-$openssl_vers is recommended.\n"
+ if $maj eq '0.9' && $min == 6 && $letter lt 'e';
+
+open F, ">openssl_path" or die "Can't write ./openssl_path: $!";
+print F $exe_path; # used by test.pl and examples/makecert.pl
+close F;
+
+### The windows option tweaking details supplied by
+### Eric A Selber . This is
+### still experimental until I get success reports.
+
+if ($windows) {
+ warn "RSAREF build on Windows not supported out of box" if $rsaref;
+ $libs = "-llibeay32 -lssleay32";
+
+ warn "Be sure to use the same compiler and options to compile your OpenSSL, perl, and Net::SSLeay. Mixing and matching compilers is not supported. (Currently I do not have a way to check this on Windows platform.)\n";
+} else {
+ ### There is some confusion over the correct ordering
+ ### of these libraries. Tarang Kumar Patel
+ ### reports this order to work on Solaris 7 and openssl-0.9.6b
+ $libs = $rsaref ? "-lssl -lcrypto -lRSAglue -lrsaref" : "-lssl -lcrypto";
+
+ ### old order which might work on some platforms
+ #$libs = $rsaref ? "-lssl -lRSAglue -lcrypto -lrsaref" : "-lssl -lcrypto";
+
+ ### Check that perl and openssl were compiled using the same compiler
+ ### and options.
+
+ ($cc_et_alia) = grep /cc\s+-/i, `strings $exe_path`;
+ if ($cc_et_alia) {
+ ($cc, %flags) = split /\s+/, $cc_et_alia;
+ if ($cc eq $Config{cc}) {
+ warn "Good. Both OpenSSL and perl seem to have been compiled with the same compiler.\n";
+ } else {
+ warn "*** $exe_path appears to be compiled with $cc ($cc_et_alia) while perl is compiled with $Config{cc}. Both must be compiled with the same compiler and flags. Mixing and matching compilers is not supported.";
+ }
+ } else {
+ warn "*** Could not figure out which C compiler was used to compile $exe_path. It is essentiall that OpenSSL, perl, and Net::SSLeay are compiled with the same compiler and flags. Mixing and matching compilers is not supported.";
+ }
+
+ ### When using aCC under HP-UX additional `+e' flag must be passed.
+ ### As the CCFLAGS is almost correct I abuse the OPTIMIZE to pass
+ ### this additional flag. Thanks to Marko Asplund (aspa@@kronodoc._fi)
+ ### for doing this bit of detective work.
+
+ if (($cc =~ /aCC/i) && ($cc_et_alia =~ /hpux/i)) {
+ warn "Enabling HPUX aCC options (+e)\n";
+ $optimize = '+e ' . $optimize;
+ }
+
+ ### An unknown contributor (sorry about loosing your name) hinted
+ ### that under gcc -fPIC will run faster than -fpic and still
+ ### be binary compatible.
+
+ if( ($Config{cc} eq 'gcc') && ($Config{'cccdlflags'} =~ /-fpic/) ) {
+ warn "Enabling gcc -fPIC optimization\n";
+ ($more_params{'CCCDLFLAGS'} = $Config{'cccdlflags'}) =~ s/-fpic/-fPIC/;
+ }
+}
+
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+my %configParams = (
+ NAME => 'Net::SSLeay',
+ VERSION_FROM => 'SSLeay.pm', # finds $VERSION
+ DIR => [ 'Net-SSLeay-Handle-0.50' ],
+ DEFINE => '-DPERL5', # perl-5.8/gcc-3.2 needs this
+ DISTNAME => 'Net_SSLeay.pm',
+ dist => { COMPRESS => 'gzip', SUFFIX => 'gz', },
+ LIBS => ["-L$openssl_path -L$openssl_path/lib -L$openssl_path/out32dll $libs"],
+ INC => "-I$openssl_path/include -I$openssl_path/inc32",
+ OPTIMIZE => $optimize,
+# Uncomment (and edit) following for debugging with gdb
+# LIBS => ['-L/usr/src/openssl-0.9.3a -lssl -lcrypto'],
+# INC => '-I/usr/src/openssl-0.9.3a/include',
+# OPTIMIZE => '-g',
+ %more_params,
+);
+
+use Config;
+if( ($Config{'cc'} eq 'gcc') && ($Config{'cccdlflags'} =~ /-fpic/) ) {
+ warn "Compiler is gcc and -fpic supplied. Tweaking it to -fPIC";
+ my $cccdlflags = $Config{'cccdlflags'};
+ $cccdlflags =~ s/-fpic/-fPIC/;
+ $configParams{'CCCDLFLAGS'} = $cccdlflags;
+};
+
+WriteMakefile(%configParams);
+
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+#WriteMakefile(
+# 'NAME' => 'Net::SSLeay::Handle',
+# 'VERSION_FROM' => 'Handle.pm', # finds $VERSION
+#);
+
+$ENV{TEST_TRACE} = 2 if $debug;
+exec "make" if $make_it;
+exec "make test" if $test_it;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Changes b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Changes
new file mode 100644
index 0000000..81ddaeb
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Changes
@@ -0,0 +1,32 @@
+Revision history for Perl extension Net::SSLeay::Handle.
+$Id: Changes,v 1.2 2002/06/07 12:10:42 sampo Exp $
+
+0.62 June 5, 2002
+
+ - Fixed? \*S problems for earlier Perls.
+ - Cleaned up proxy code.
+ Made _glob_ref() method to create unique names. Has a slight
+ memory leak. Could fix it but I think we have gone far enough
+ already.
+
+0.60 February 25, 2002
+
+ - Added READ() and WRITE() routines
+ Thanks to Rocco Caputo and Christopher Brannon
+
+0.52
+
+ - Sampo fixed some bugs (removed "our", etc)
+ - And improved make_socket so that it is aware
+ of $Net::SSLeay::proxyhost
+
+0.50 Sat Jun 23 13:46 2001
+ - Ported my old code into h2xs format
+ - Wrote POD documentation
+ - wrote test.pl
+ - comment code
+
+0.10 Sat Jun 23 11:14:12 2001
+ - original version; created by h2xs 1.20 with options
+ -XA -n Net::SSLeay::Handle
+
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Handle.pm b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Handle.pm
new file mode 100644
index 0000000..d00f261
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Handle.pm
@@ -0,0 +1,374 @@
+# $Id: Handle.pm,v 1.8 2002/06/07 12:32:26 sampo Exp $
+
+package Net::SSLeay::Handle;
+
+require 5.005_03;
+use strict;
+
+use Socket;
+use Net::SSLeay;
+
+require Exporter;
+
+use vars qw(@ISA @EXPORT_OK $VERSION);
+@ISA = qw(Exporter);
+@EXPORT_OK = qw(shutdown);
+$VERSION = '0.61';
+
+#=== Class Variables ==========================================================
+#
+# %Filenum_Object holds the attributes (see bottom of TIEHANDLE) of tied
+# handles keyed by fileno. This was the only way I could figure out how
+# to "attach" attributes to a returned glob reference.
+#
+#==============================================================================
+
+my $Initialized; #-- only _initialize() once
+my %Filenum_Object; #-- hash of hashes, keyed by fileno()
+my $Debug = 0; #-- pretty hokey
+my %Glob_Ref; #-- used to make unique \*S names for versions < 5.6
+
+#== Tie Handle Methods ========================================================
+#
+# see perldoc perltie for details.
+#
+#==============================================================================
+
+sub TIEHANDLE {
+ my ($class, $socket, $port) = @_;
+ $Debug > 10 and print "TIEHANDLE(@{[join ', ', @_]})\n";
+
+ ref $socket eq "GLOB" or $socket = $class->make_socket($socket, $port);
+
+ $class->_initialize();
+
+ my $ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+ my $ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+
+ my $fileno = fileno($socket);
+
+ Net::SSLeay::set_fd($ssl, $fileno); # Must use fileno
+
+ my $resp = Net::SSLeay::connect($ssl);
+
+ $Debug and print "Cipher '" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+ $Filenum_Object{$fileno} = {
+ ssl => $ssl,
+ ctx => $ctx,
+ socket => $socket,
+ fileno => $fileno,
+ };
+
+ return bless $socket, $class;
+}
+
+sub PRINT {
+ my $socket = shift;
+
+ my $ssl = _get_ssl($socket);
+ my $resp = 0;
+ for my $msg (@_) {
+ defined $msg or last;
+ $resp = Net::SSLeay::write($ssl, $msg) or last;
+ }
+ return $resp;
+}
+
+sub READLINE {
+ my $socket = shift;
+ my $ssl = _get_ssl($socket);
+ my $line = Net::SSLeay::ssl_read_until($ssl);
+ return $line ? $line : undef;
+}
+
+sub READ {
+ my ($socket, $buf, $len, $offset) = \ (@_);
+ my $ssl = _get_ssl($$socket);
+ defined($$offset) or
+ return length($$buf = Net::SSLeay::ssl_read_all($ssl, $$len));
+
+ defined(my $read = Net::SSLeay::ssl_read_all($ssl, $$len))
+ or return undef;
+
+ my $buf_len = length($$buf);
+ $$offset > $buf_len and $$buf .= chr(0) x ($$offset - $buf_len);
+ substr($$buf, $$offset) = $read;
+ return length($read);
+}
+
+sub WRITE {
+ my $socket = shift;
+ my ($buf, $len, $offset) = @_;
+ $offset = 0 unless defined $offset;
+
+ # Return number of characters written.
+ my $ssl = $socket->_get_ssl();
+ return $len if Net::SSLeay::write($ssl, substr($buf, $offset, $len));
+ return undef;
+}
+
+sub CLOSE {
+ my $socket = shift;
+ my $fileno = fileno($socket);
+ $Debug > 10 and print "close($fileno)\n";
+ my $self = $socket->_get_self();
+ delete $Filenum_Object{$fileno};
+ Net::SSLeay::free ($self->{ssl});
+ Net::SSLeay::CTX_free ($self->{ctx});
+ close $socket;
+}
+
+sub FILENO { fileno($_[0]) }
+
+
+#== Exportable Functions =====================================================
+
+# TIEHANDLE, PRINT, READLINE, CLOSE FILENO, READ, WRITE
+
+#--- shutdown(\*SOCKET, $mode) ------------------------------------------------
+# Calls to the main shutdown() don't work with tied sockets created with this
+# module. This shutdown should be able to distinquish between tied and untied
+# sockets and do the right thing.
+#------------------------------------------------------------------------------
+
+sub shutdown {
+ my ($socket, @params) = @_;
+
+ my $obj = _get_self($socket);
+ $obj and $socket = $obj->{socket};
+ return shutdown($socket, @params);
+}
+
+#==============================================================================
+
+sub debug {
+ my ($class, $debug) = @_;
+ my $old_debug = $Debug;
+ @_ >1 and $Debug = $debug || 0;
+ return $old_debug;
+}
+
+#=== Internal Methods =========================================================
+
+sub make_socket {
+ my ($class, $host, $port) = @_;
+ $Debug > 10 and print "_make_socket(@{[join ', ', @_]})\n";
+ $host ||= 'localhost';
+ $port ||= 443;
+
+ my $phost = $Net::SSLeay::proxyhost;
+ my $pport = $Net::SSLeay::proxyhost ? $Net::SSLeay::proxyport : $port;
+
+ my $dest_ip = gethostbyname( $phost || $host);
+ my $host_params = sockaddr_in($pport, $dest_ip);
+ my $socket = $^V lt 'v5.6.0' ? $class->_glob_ref("$host:$port") : undef;
+
+ socket($socket, &PF_INET(), &SOCK_STREAM(), 0) or die "socket: $!";
+ connect($socket, $host_params) or die "connect: $!";
+
+ my $old_select = select($socket); $| = 1; select($old_select);
+ $phost and do {
+ my $auth = $Net::SSLeay::proxyauth;
+ my $CRLF = $Net::SSLeay::CRLF;
+ print $socket "CONNECT $host:$port HTTP/1.0$auth$CRLF$CRLF";
+ my $line = <$socket>;
+ };
+ return $socket;
+}
+
+#--- _glob_ref($strings) ------------------------------------------------------
+#
+# Create a unique namespace name and return a glob ref to it. Would be great
+# to use the fileno but need this before we get back the fileno.
+# NEED TO LOCK THIS ROUTINE IF USING THREADS. (but it is only used for
+# versions < 5.6 :)
+#------------------------------------------------------------------------------
+
+sub _glob_ref {
+ my $class = shift;
+ my $preamb = join("", @_) || "_glob_ref";
+ my $num = ++$Glob_Ref{$preamb};
+ my $name = "$preamb:$num";
+ no strict 'refs';
+ my $glob_ref = \*$name;
+ use strict 'refs';
+
+ $Debug and do {
+ print "GLOB_REF $preamb\n";
+ while (my ($k, $v) = each %Glob_Ref) {print "$k = $v\n"}
+ print "\n";
+ };
+
+ return $glob_ref;
+}
+
+sub _initialize {
+ $Initialized++ and return;
+ Net::SSLeay::load_error_strings();
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Net::SSLeay::randomize();
+}
+
+sub __dummy {
+ my $host = $Net::SSLeay::proxyhost;
+ my $port = $Net::SSLeay::proxyport;
+ my $auth = $Net::SSLeay::proxyauth;
+}
+
+#--- _get_self($socket) -------------------------------------------------------
+# Returns a hash containing attributes for $socket (= \*SOMETHING) based
+# on fileno($socket). Will return undef if $socket was not created here.
+#------------------------------------------------------------------------------
+
+sub _get_self {
+ return $Filenum_Object{fileno(shift)};
+}
+
+#--- _get_ssl($socket) --------------------------------------------------------
+# Returns a the "ssl" attribute for $socket (= \*SOMETHING) based
+# on fileno($socket). Will cause a warning and return undef if $socket was not
+# created here.
+#------------------------------------------------------------------------------
+
+sub _get_ssl {
+ my $socket = shift;
+ return $Filenum_Object{fileno($socket)}->{ssl};
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Net::SSLeay::Handle - Perl module that lets SSL (HTTPS) sockets be
+handled as standard file handles.
+
+=head1 SYNOPSIS
+
+ use Net::SSLeay::Handle qw/shutdown/;
+ my ($host, $port) = ("localhost", 443);
+
+ tie(*SSL, "Net::SSLeay::Handle", $host, $port);
+
+ print SSL "GET / HTTP/1.0\r\n";
+ shutdown(\*SSL, 1);
+ print while ();
+ close SSL;
+
+
+=head1 DESCRIPTION
+
+Net::SSLeay::Handle allows you to request and receive HTTPS web pages
+using "old-fashion" file handles as in:
+
+ print SSL "GET / HTTP/1.0\r\n";
+
+and
+
+ print while ();
+
+If you export the shutdown routine, then the only extra code that
+you need to add to your program is the tie function as in:
+
+ my $socket;
+ if ($scheme eq "https") {
+ tie(*S2, "Net::SSLeay::Handle", host, $port);
+ $socket = \*S2;
+ else {
+ $socket = Net::SSLeay::Handle->make_socket(host, $port);
+ }
+ print $socket $request_headers;
+ ...
+
+=head2 USING EXISTING SOCKETS
+
+One of the motivations for writing this module was to avoid
+duplicating socket creation code (which is mostly error handling).
+The calls to tie() above where it is passed a $host and $port is
+provided for convenience testing. If you already have a socket
+connected to the right host and port, S1, then you can do something
+like:
+
+ my $socket \*S1;
+ if ($scheme eq "https") {
+ tie(*S2, "Net::SSLeay::Handle", $socket);
+ $socket = \*S2;
+ }
+ my $last_sel = select($socket); $| = 1; select($last_sel);
+ print $socket $request_headers;
+ ...
+
+Note: As far as I know you must be careful with the globs in the tie()
+function. The first parameter must be a glob (*SOMETHING) and the
+last parameter must be a reference to a glob (\*SOMETHING_ELSE) or a
+scaler that was assigned to a reference to a glob (as in the example
+above)
+
+Also, the two globs must be different. When I tried to use the same
+glob, I got a core dump.
+
+=head2 EXPORT
+
+None by default.
+
+You can export the shutdown() function.
+
+It is suggested that you do export shutdown() or use the fully
+qualified Net::SSLeay::Handle::shutdown() function to shutdown SSL
+sockets. It should be smart enough to distinguish between SSL and
+non-SSL sockets and do the right thing.
+
+=head1 EXAMPLES
+
+ use Net::SSLeay::Handle qw/shutdown/;
+ my ($host, $port) = ("localhost", 443);
+
+ tie(*SSL, "Net::SSLeay::Handle", $host, $port);
+
+ print SSL "GET / HTTP/1.0\r\n";
+ shutdown(\*SSL, 1);
+ print while ();
+ close SSL;
+
+=head1 TODO
+
+Better error handling. Callback routine?
+
+=head1 CAVEATS
+
+Tying to a file handle is a little tricky (for me at least).
+
+The first parameter to tie() must be a glob (*SOMETHING) and the last
+parameter must be a reference to a glob (\*SOMETHING_ELSE) or a scaler
+that was assigned to a reference to a glob ($s = \*SOMETHING_ELSE).
+Also, the two globs must be different. When I tried to use the same
+glob, I got a core dump.
+
+I was able to associate attributes to globs created by this module
+(like *SSL above) by making a hash of hashes keyed by the file head1.
+
+Support for old perls may not be 100%. If in trouble try 5.6.0 or
+newer.
+
+=head1 CHANGES
+
+Please see Net-SSLeay-Handle-0.50/Changes file.
+
+=head1 KNOWN BUGS
+
+If you let this module construct sockets for you with Perl versions
+below v.5.6 then there is a slight memory leak. Other upgrade your
+Perl, or create the sockets yourself. The leak was created to let
+these older versions of Perl access more than one Handle at a time.
+
+=head1 AUTHOR
+
+Jim Bowlin jbowlin@linklint.org
+
+=head1 SEE ALSO
+
+Net::SSLeay, perl(1), http://openssl.org/
+
+=cut
+
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/MANIFEST b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/MANIFEST
new file mode 100644
index 0000000..95c4a52
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/MANIFEST
@@ -0,0 +1,5 @@
+Changes
+Handle.pm
+Makefile.PL
+MANIFEST
+test.pl
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile.PL b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile.PL
new file mode 100644
index 0000000..adc2315
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile.PL
@@ -0,0 +1,8 @@
+# $Id: Makefile.PL,v 1.2 2002/06/07 12:43:42 sampo Exp $
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'Net::SSLeay::Handle',
+ 'VERSION_FROM' => 'Handle.pm', # finds $VERSION
+);
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/test.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/test.pl
new file mode 100644
index 0000000..4e7ca12
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/test.pl
@@ -0,0 +1,140 @@
+# Original by Jim Bowlin
+# Maintenance fixes by Sampo Kellomaki
+# $Id: test.pl,v 1.5 2002/06/05 18:25:46 sampo Exp $
+#
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+BEGIN { $| = 1; print "1..3\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use Net::SSLeay::Handle qw/shutdown/;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+# app.iplanet.com
+my @sites = qw {
+ www.cdw.com
+ banking.wellsfargo.com
+ secure.worldgaming.net
+ www.ubs.com
+};
+# www.openssl.org
+# www.engelschall.com
+
+test_2();
+test_3();
+
+#== Test 2 ====================================================================
+#
+# Read home pages from @sites (taken from Net::SSLeay)
+#
+
+sub test_2 {
+ print " About to test the following external sites:\n\n";
+ print map(" $_\n", @sites), "\n";
+ print " You have 5 seconds of time to hit Ctrl-C if you do not like this.\n";
+ print " So far there were no errors in tests.\n" unless $errors;
+ print "*** $errors tests failed already.\n" if $errors;
+ print " Following tests _will_ fail if you do not have network\n"
+ . " connectivity (or if the servers are down or have changed).\n\n";
+ sleep 5;
+
+ my ($total, $success, $failure);
+ for my $site (@sites) {
+ $total++;
+ $success += test_site_2($site);
+ }
+
+ $failed = $total - $success;
+ unless ($failed) {
+ print " All sites were successful!\n";
+ }
+ else {
+ print " $failed out of $total sites failed.\n";
+ }
+ $success and print "ok 2\n";
+}
+
+sub test_site_2 {
+ my ($host, $port) = @_;
+ print " testing https://$host/ ...\n";
+ $port ||= 443;
+
+ tie(*SSL, "Net::SSLeay::Handle", $host, $port);
+ return read_home_page(\*SSL, "close");
+}
+
+sub read_home_page {
+ my ($socket, $close) = @_;
+ print $socket "GET / HTTP/1.0\r\n\r\n";
+ #shutdown($socket, 1);
+ my $head_cnt = 0;
+ my $resp = <$socket>;
+ #print $resp;
+ while (<$socket>) {
+ /\S/ or last;
+ $head_cnt++;
+ }
+ printf " %d header and ", $head_cnt;
+ my $doc_cnt = 0;
+ $doc_cnt++ while (<$socket>);
+ printf "%d document lines\n", $doc_cnt;
+ $close and close $socket;
+ return ($resp =~ m|^HTTP/1|) ? 1 : 0;
+}
+
+#== Test 3 ====================================================================
+#
+# Open 3 sockets, read from each, then close all 3.
+#
+
+sub test_3 {
+ $port = 443;
+ print "creating 3 SSL sockets ...\n";
+ tie(*SSL0, "Net::SSLeay::Handle", $sites[0], $port);
+ tie(*SSL1, "Net::SSLeay::Handle", $sites[1], $port);
+ tie(*SSL2, "Net::SSLeay::Handle", $sites[2], $port);
+
+ $sock[0] = \*SSL0;
+ $sock[1] = \*SSL1;
+ $sock[2] = \*SSL2;
+
+ my @range = (0..2);
+ my ($total, $success, $failure);
+
+ for my $i (@range) {
+ my $sock = $sock[$i];
+ $total++;
+ print " reading from $sites[$i] with socket @{[fileno($sock)]}\n";
+ $success += read_home_page($sock);
+ }
+
+ for my $i (@range) {
+ my $sock = $sock[$i];
+ print " closing socket @{[fileno($sock)]}\n";
+ close($sock);
+ }
+
+ $failed = $total - $success;
+ unless ($failed) {
+ print " All sites were successful!\n";
+ }
+ else {
+ print " $failed out of $total sites failed.\n";
+ }
+ $success and print "ok 3\n";
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/QuickRef b/~downloads/files/tmp/Net_SSLeay.pm-1.22/QuickRef
new file mode 100644
index 0000000..7e7f00b
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/QuickRef
@@ -0,0 +1,268 @@
+(This quick reference list was contributed by anton@genua.de. Thanks, --Sampo)
+
+Net::SSLeay - useful function prototypes
+
+
+#----------------------------------
+# Import frequently used functions
+#----------------------------------
+
+use Net::SSLeay qw(die_now die_if_ssl_error);
+
+$errs = die_if_ssl_error($msg);
+ Program dies with $msg if print_errs() was able to find and print
+ some errors.
+ $errs is 0 if no error occurred.
+
+die_now($msg);
+ Program dies unconditionally! print_errs($msg) is used to print out
+ errors before dying.
+
+
+#--------------------------
+# Unsorted prototypes
+#--------------------------
+
+$count = Net::SSLeay::print_errs($msg);
+ Prints SSLeay-error stack with included $msg via 'warn'. Number of
+ printed errors is returned (->$count).
+
+void Net::SSLeay::randomize($seed_file,$seed_string);
+void Net::SSLeay::randomize();
+ Load random bytes from $seed_file and from string $seed_string.
+ Also uses $Net::SSLeay::random_device and $Net::SSLeay::how_random
+ (Bits!) if used without parameters.
+
+void Net::SSLeay::RAND_seed($seed_string);
+ Seeds randomgenerator with $seed_string.
+
+$bytes_read = Net::SSLeay::RAND_load_file($file_name, $how_much);
+ Loads $how_much bytes randomness from file $file_name.
+
+$bytes_written = Net::SSLeay::RAND_write_file($file_name);
+ Writes randomness to $file_name.
+
+void Net::SSLeay::load_error_strings();
+ Load SSL error messages to make error output more informative.
+
+void Net::SSLeay::ERR_load_crypto_strings();
+ Load crypto-API related error messages.
+
+void Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Add support for supported ciphers.
+
+$ctx = Net::SSLeay::CTX_new();
+ Creates SSL-context.
+
+int Net::SSLeay::CTX_set_default_verify_paths($ctx);
+ Load default location where to find certificates to verify
+ remote certificates. This value is precompiled in SSLeay-Toolkit.
+
+int Net::SSLeay::CTX_load_verify_locations($ctx, $cert_file, $cert_dir);
+ Set verify location. File with certificates or hashed directory.
+
+void Net::SSLeay::CTX_set_verify($ctx, $mode , \&verify_cb);
+ Set mode and callback what to do with remote certificates.
+ $mode:
+ &Net::SSLeay::VERIFY_NONE
+ &Net::SSLeay::VERIFY_PEER
+ &Net::SSLeay::VERIFY_FAIL_IF_NO_PEER_CERT
+ &Net::SSLeay::VERIFY_CLIENT_ONCE
+ \&verify_cb:
+ $ok = verify_cb($ok,$x509_store_ctx);
+ Callback gets info if SSL-toolkit verified certificate ($ok)
+ and certificate store location.
+
+void Net::SSLeay::CTX_set_default_passwd_cb($ctx,\&passwd_cb);
+ If our RSA private key is passphrase protected and this callback is
+ defined, then do not ask on the terminal but call the function.
+ \&passwd_cb:
+ $passwd = verify_cb($verify);
+ If $verify is true, then the callback is supposed to make sure
+ the returned password has been verified.
+
+$bool = Net::SSLeay::CTX_use_certificate_file($ctx,$cert,$type);
+$bool = Net::SSLeay::CTX_use_PrivateKey_file($ctx,$key,$type);
+ Functions to load cert/key from filename ($cert/$key) with filetype
+ $type into SSL-context.
+ Filetypes are:
+ &Net::SSLeay::FILETYPE_PEM
+
+$ssl = Net::SSLeay::new($ctx)
+ Creates a SSL-session in context $ctx. Returns 0 on failure.
+
+$bool = Net::SSLeay::use_certificate_file($ssl,$cert,$type);
+$bool = Net::SSLeay::use_RSAPrivateKey_file($ssl,$key,$type);
+ Functions to load cert/key from filename ($cert/$key) with filetype
+ $type into SSL-session.
+ Filetypes are:
+ &Net::SSLeay::FILETYPE_PEM
+
+$bool = Net::SSLeay::set_fd($ssl, fileno(S));
+ Connect SSL-Toolkit with TCP-connection.
+ $ssl SSL-Session
+ S open socket
+ $bool 0-failure 1-success
+
+$bool = Net::SSLeay::accept($ssl);
+ Make SSL-handshake on hot connection. I am server!
+ $ssl SSL-session
+ $bool 0-failure 1-success
+
+$bool = Net::SSLeay::connect($ssl);
+ Make SSL-handshake on hot connection. I am client!
+ $ssl SSL-session
+ $bool 0-failure 1-success
+
+$x509 = Net::SSLeay::get_peer_certificate($ssl);
+ Get X509 certificate from SSL_session.
+
+$x509 = Net::SSLeay::X509_STORE_CTX_get_current_cert($x509_store_ctx)
+ Extract current certificate from cert-store. Cert-store is
+ used in callbacks!
+
+$asn1_utctime = Net::SSLeay::X509_get_notBefore($x509);
+$asn1_utctime = Net::SSLeay::X509_get_notAfter($x509);
+$x509_name = Net::SSLeay::X509_get_subject_name($x509);
+$x509_name = Net::SSLeay::X509_get_issuer_name($x509);
+ Return information from a certificate.
+
+$string = Net::SSLeay::P_ASN1_UTCTIME_put2string($asn1_utctime);
+ Convert a asn1_utctime structure to a printable string.
+
+$string = Net::SSLeay::X509_NAME_oneline($x509_name);
+ Convert a x509_name structure to a printable string.
+
+$string = Net::SSLeay::get_cipher($ssl)
+ Return the active cipher from SSL-session $ssl.
+
+$string = Net::SSLeay::dump_peer_certificate($ssl)
+ Return Subject/Issuer from peer-certificate in printable string.
+
+$string = Net::SSLeay::PEM_get_string_X509($x509);
+ Returns a printable string containing the X509 certificate PEM encoded
+ from $x509.
+
+$mode = Net::SSLeay::CTX_get_verify_mode($ctx)
+ Return verify-mode previously set with CTX_set_verify in SSL-context.
+
+$mode = Net::SSLeay::get_verify_mode($ssl)
+ Return verify-mode in SSL-session.
+
+$written_bytes = Net::SSLeay::ssl_write_all($ssl,$string);
+ Write $string to SSL-session. This call returns undef if write failed.
+ The whole string gets written!
+
+$written_bytes = $Net::SSLeay::write($ssl,$string);
+ Write $string to SSL-session. This call returns immediately. SSL maybe
+ wrote the string not completely - check yourself or use ssl_write_all!
+
+$string = Net::SSLeay::ssl_read_all($ssl,$how_much);
+ Read everything available from the SSL-session and return it. Read a
+ maximum of $how_much Bytes (default: 2000000000).
+
+$string = Net::SSLeay::read($ssl);
+ Read one bunch of data from the SSL-session and return.
+
+void Net::SSLeay::free ($ssl);
+ Free ressources from the SSL-session.
+
+void Net::SSLeay::CTX_free ($ctx);
+ Free ressources from the SSL-context.
+
+
+#----------------------
+# MD5 - hashfunction
+#----------------------
+
+$hash = Net::SSLeay:MD5($data);
+ Computes md5 hash over $data. $hash is a binary string! Convert it to
+ a printable with $string = unpack("H32",Net::SSLeay::MD5($data));
+
+
+#----------------------
+# TCP-Connection hints
+#----------------------
+
+# Make socket unbuffered after connect succeeded.
+#
+select(S); $| = 1; select(STDOUT);
+
+# Close connection by half... from client to server. This signals EOF to
+# server. (Clear some buffers, too...??)
+# Use this if finished with sending data to remote side.
+shutdown S, 1;
+
+# Finally close connection. Do this after reading everything availlable!
+#
+close S;
+
+
+#------------------
+# TCP Client
+#------------------
+
+# #!/usr/bin/perl -w
+use strict;
+use Socket;
+my ($remote,$port, $iaddr, $paddr, $proto, $line);
+
+$remote = shift || 'localhost';
+$port = shift || 3000; # random port
+if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
+die "No port" unless $port;
+$iaddr = inet_aton($remote) || die "no host: $remote";
+$paddr = sockaddr_in($port, $iaddr);
+
+$proto = getprotobyname('tcp');
+socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
+connect(SOCK, $paddr) || die "connect: $!";
+while (defined($line = )) {
+ print $line;
+}
+
+close (SOCK) || die "close: $!";
+exit;
+
+
+#--------------------
+# TCP Server
+#--------------------
+
+# #!/usr/bin/perl -Tw
+use strict;
+BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }
+use Socket;
+use Carp;
+
+sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
+
+my $EOL = "\015\012";
+
+my $port = shift || 3000;
+my $proto = getprotobyname('tcp');
+$port = $1 if $port =~ /(\d+)/; # untaint port number
+
+socket(Server, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
+setsockopt(Server, SOL_SOCKET, SO_REUSEADDR,
+ pack("l", 1)) || die "setsockopt: $!";
+
+bind(Server, sockaddr_in($port, INADDR_ANY)) || die "bind: $!";
+listen(Server,SOMAXCONN) || die "listen: $!";
+
+logmsg "server started on port $port";
+
+my $paddr;
+
+for ( ; $paddr = accept(Client,Server); close Client) {
+ my($port,$iaddr) = sockaddr_in($paddr);
+ my $name = gethostbyaddr($iaddr,AF_INET);
+
+ logmsg "connection from $name [",
+ inet_ntoa($iaddr), "]
+ at port $port";
+
+ print Client "Hello there, $name, it's now ",
+ scalar localtime, $EOL;
+}
+
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/README b/~downloads/files/tmp/Net_SSLeay.pm-1.22/README
new file mode 100644
index 0000000..1b5f107
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/README
@@ -0,0 +1,377 @@
+README - Net::SSLeay Perl module for using OpenSSL
+
+5.6.2002, Sampo Kellomaki
+Version: 1.16
+$Id: README,v 1.6 2002/06/05 18:25:45 sampo Exp $
+
+1.16: tested against openssl-0.9.6d, added more callback stuff
+1.14: added perr certificate return, HPUX aCC flags fix
+1.09: added many utlility functions of OpenSSL API, better old perl support
+1.08: 64 bit fixes, windows fixes, fixed extra newline with auth bug
+1.07: added rudimentary TLSv1 support by Stephen C. Koehler
+1.06: fixed ssl_read_all() bug where input '0' would cause loop to exit
+1.05: fixed certificate gen at make test
+1.04: overhaul for OpenSSL-0.9.3b (try http://www.openssl.org/)
+
+By popular demand...
+--------------------
+
+ perl -MNet::SSLeay -e '($p)=Net::SSLeay::get_https("www.openssl.org", 443, "/"); print $p'
+
+Prerequisites
+-------------
+
+perl-5.6.1
+ though anything starting from perl5.002 probably works.
+OpenSSL-0.9.6d
+ (try http://www.openssl.org/) -
+ This release has been tested with 0.9.6d and
+ in historical light it seems likely that future versions
+ will work as well (if major version number changes all bets
+ are off, though)
+
+Note: SSLeay is no longer supported. If you want to use Net::SSLeay with
+ SSLeay or early versions of OpenSSL, use version 1.03. The support
+ for SSLeay was dropped due to nobody maintaining it (all active
+ work goes on with OpenSSL) and due to incompatible API changes
+ in OpenSSL-0.9.2b. OpenSSL-0.9.1c support has also been dropped,
+ version 1.03 was the last one to support that.
+
+You should use the same C compiler and options to compile OpenSSL,
+perl, and Net::SSLeay. This is the only supported configuration.
+If you insist on using different compilers (perhaps because you
+obtained either OpenSSL or perl as binaries from a vendor and they
+used a compiler that you do not have) then all requests for support
+will be ignored. If the only way for you to use the same compiler
+for all three components is to recompile your openssl or perl, then
+that is exactly what I expect you to do before asking for support.
+
+Installing
+----------
+
+Unix:
+ # build OpenSSL as per instructions in that package
+
+ gunzip
+
+You should also be able to use CPAN.pm to install this module if you like.
+
+Linking with RSAref is no longer supported (the patent issue is moot
+doe to patent expiring). If you want to try it, you are on your own,
+but here's how it used to work...
+
+ For linking against RSAref add -rsaref flag like this:
+
+ ./Makefile.PL -rsaref -t # builds and tests it, link against RSAref
+
+ You must previously have built OpenSSL with RSAref support (which
+ implies first building rsaref itself), I use the RSAglue method. File
+ librsaref.a must be found in one of the locations searched by linker
+ (-L switches). Usually this means that you have to rename rsaref.a to
+ librsaref.a and copy it to suitable directory, e.g. /usr/local/ssl/lib.
+
+ N.B. AFAIK the patent that made using RSAref necessary has expired, so
+ this should be nonissue by now.
+
+Commercial Support
+------------------
+
+Commercial support for this module can be obtained from
+
+ Symlabs (netssleay@symlabs.com)
+ Tel: +351-214.222.630
+ Fax: +351-214.222.637
+
+Noncommercial support can be obtained via email from the author, but
+you are expected to do your home work well. Mails that do not full
+fill the criteria below may be silently ignored.
+
+Problems (read this before sending mail)
+----------------------------------------
+
+Please, do not send bug report before you have
+
+ - compiled your OpenSSL yourself - don't copy binaries, please
+ - compiled your perl yourself and with substantially same CFLAGS
+ and same C compiler (say `which cc' or `which gcc') as your OpenSSL.
+ This is especially applicable to link errors and shared
+ library loading problems. Please do not even dream of
+ copying a perl binary or installing perl binary from a package.
+ Perl's idea of calling conventions has to match OpenSSL's and
+ unfortunately both are quite advanced pieces of code
+ (guru duel: Larry Wall vs. Eric Young :-) with dynamic loading
+ and who knows what
+ - compiled my module from source against correct perl (say `which perl'
+ and check your path). Generally my module's build process will
+ discover correct compiler and flags from `perl -V'
+ - tried gcc, if your vendor cc fails
+
+If you send me a question or make a bug report, please remeber to mention
+
+ - Your platform and OS version (i386 Linux, Sparc Solaris, etc) (uname -a)
+ - On Linux, please report glibc version as well (ls -l /lib/libc*)
+ - Net::SSLeay version (see tar ball)
+ - OpenSSL version (`/usr/local/ssl/bin/openssl version')
+ - ANSI C compiler brand and version (e.g. gcc -v)
+
+If build fails,
+ - three compiler warnings are known to be emitted (due to lack of const
+ in some places), one of them indicates a fatal bug in callback handling,
+ but as I have not yet sorted it out, you'll simply have to ignore it
+ - if you installed OpenSSL from some distribution, try getting a fresh
+ copy from www.openssl.org and recompiling and installing it yourself
+ - make sure you are not being confused by the fact that OpenSSL-0.9.3
+ changed the location of include files to /usr/local/ssl/include/openssl/*
+ Consider deleting all old bogus headers
+ - if using newer than supported OpenSSL, please downgrade to supported
+ version to see if it makes difference
+ - you must compile the module, perl, and openssl with the same C compiler
+ and the same options. Use perl -V to check what options were used and
+ recompile openssl and Net::SSLeay accordingly
+ - never report bugs related to binary installs. First compile _yourself_
+ perl, openssl and my module, always using the same compiler and
+ compiler flags. Many distros are known to "know better" and thus
+ cause problems for their users. I'm not very sympathetic to having
+ to answer end user questions thus created.
+ - send full output of `make clean; perl Makefile.PL -t'
+
+If make test fails, please
+ - one warning is known to be emitted between tests 4 and 5 (callback)
+ - edit test.pl and set $trace=2
+ - send full output of `make clean; perl Makefile.PL -t'
+ - send contents of sslecho.log
+
+If you have problems with a site, please
+ - what site, what server software (including version and platform)
+ - does it reproduce with s_client, try with something like
+
+ echo 'GET /' | /usr/local/ssl/bin/openssl s_client -connect www.bacus.pt:443
+
+ - does it reproduce with popular web browsers
+ - play with Net::SSLeay::ssl_version (see top of SSLeay.pm)
+ - does the site run exotic configuration, e.g. insisting on specific
+ protocol version, limiting available ciphers, using nonstandard
+ ciphers, weird authentication arrangements, etc.)
+ - contact the owner of the server to see what the problem looks like
+ in his end. He should be able to tell you the exact versions used
+ and the error messages he is seeing in his log
+ - if you ask me to check a site out, you are granting me permission
+ to access that site and will pay all legal expenses to defend me
+ in court as well as any remedies that may be granted to the site
+ in case the site decides to sue me. You warrant that you are
+ authorized to give me permission to access the site.
+ - if you ask me to check a site, please send me a working URL and
+ include any authentication credentials if needed. If your site
+ is so confidential that you can not give me an URL, then do
+ not ask me to debug your problems.
+
+HP-UX is known to give some problems, please mail me or the mailing
+list so we can get these problems straightened. Hint: it has to do
+with dynamic loading. One user reports that adding `-lgcc' to EXTRALIBS
+and LD_LOAD_LIBS in Makefile fixes the problem. I have not received any
+confirmation whether this fix really works, but its worth a try. Another
+bag of problems is people installing against binary distributed
+perl and compiling the package with different cc or different options.
+Genereally this will never work. Please compile _yourself_ your perl,
+openssl, and the module, always with the same compiler and compiler flags.
+
+I have a report (schinder@@pobox._com) of make test segfaulting on
+Linux-PPC. This still needs to be investigated. No recent information
+has been received.
+
+It seems perl5.004 (at least some versions) has bad xsub compiler which
+can make builds sometimes fail. Try upgrading to perl-5.6.1 first.
+
+"Random number generator not seeded!!!" This warning indicates that
+ randomize() was not able to read /dev/random or /dev/urandom, possibly
+ because your system does not have them or they are differently
+ named. You can still use SSL, but the encryption will not be as
+ strong.
+
+Did you read the POD documentation (if you don't know what that
+is, just say `perldoc Net::SSLeay' or `more SSLeay.pm')?
+
+Are you sure you didn't confuse `Net::SSLeay' with `SSLeay' that
+comes with OpenSSL?
+
+My development environments used to be
+
+ i686, Linux-2.4.3, gcc-2.92.2, glibc-2.2, perl-5.6.0, openssl-0.9.6a
+ i686, Linux-2.4.3, gcc-2.92.2, glibc-2.2, perl5.005_02, openssl-0.9.6a
+ i686, Linux-2.0.35, gcc-2.7.2.3, glibc-2.0.6, perl5.005_02, openssl-0.9.5a
+ i586, Linux-2.4.3, gcc-2.92.2.1, glibc-2.2.2, perl-5.6.0, openssl-0.9.6a
+ i586, Linux-2.4.3, gcc-2.92.2.1, glibc-2.2.2, perl5.005_03, openssl-0.9.6
+ i586, Linux-2.4.3, gcc-2.92.2.1, glibc-2.2.2, perl5.005_03, openssl-0.9.6a
+ Sun-U1, SunOS-5.6, gcc-2.92.2, libc2 perl-5.6.1, openssl-0.9.6c
+
+Unfortunately I do not have access to other systems so you are
+somewhat on your own. Everything compiles without a warning (except
+those mentioned above) on my systems.
+
+Check if there are any post release building hints in
+
+ http://www.symlabs.com/Net_SSLeay/index.html
+
+Check that perl is finding your OpenSSL.
+
+If `make test' bombs, add following line to the test script that fails:
+
+ $Net::SSLeay::trace = 2;
+
+and see what happens. You may also have to edit test.pl to make sure
+the debugging output gets printed.
+
+If `make test' prints lots of `connect: Connection refused...' errors,
+then sslecho.pl test server has died. It is supposed to be launched in
+the beginning of test.pl, but can fail if, e.g. port 1212 is taken or
+in TIMEWAIT state. Look also in ssleacho.log file for diagnostics.
+
+If you are really low on memory and the 1 MB tests fail, edit value of
+$mb variable in test.pl.
+
+If you get core dump, build your perl for debugging (add -g to
+ccflags, see INSTALL in perl distribution), build your SSLeay for
+debugging as well, add -g flag to Makefile.PL:
+
+ make clean
+ perl Makefile.PL -g
+ make static
+ make test_static
+ gdb perl core # post mortem
+ > bt # show stack trace
+ gdb perl # run live with debugging
+ # set break point in SSLeay.xs or in suspect function of OpenSSL
+ > br XS_Net__SSLeay_connect
+ > run yourscript.pl arg arg
+
+For gdb'ing make sure gdb finds all the relevant source code. This
+may mean that you must run perl and OpenSSL from the directories where
+the respective makefiles build them.
+
+You can also enable PR and PRN macros in SSLeay.xs and sprinkle
+even some more around the code to figure out what's happening.
+
+Some exotic configurations of perl may cause unstability: make sure
+OpenSSL uses the same malloc as perl. Recompile perl without
+threads. Try not using the PerlIO abstraction.
+
+If you need to tweak build for some platform, please let me know
+so I can fix it. Patches and gdb session dumps are also welcome.
+
+License and Copying
+-------------------
+
+Copyright (c) 1996-2002 Sampo Kellomaki
+All Rights Reserved.
+
+Distribution and use of this module is under the same terms as the
+OpenSSL package itself (i.e. free, but mandatory attribution; NO
+WARRANTY). Please consult LICENSE file in the root of the OpenSSL
+distribution.
+
+While the source distribution of this perl module does not contain
+Eric's or OpenSSL's code, if you use this module you will use OpenSSL
+library. Please give Eric and OpenSSL team credit (as required by
+their licenses).
+
+And remember, you, and nobody else but you, are responsible for
+auditing this module and OpenSSL library for security problems,
+backdoors, and general suitability for your application.
+
+Recommended reading
+-------------------
+
+===> HTTP protocol specification. It applies 100% to HTTPS too and doing
+password authentication is explained there. <===
+
+If you are newbie interested in grabbing web pages from https servers,
+please read HTTP documentation from http://www.w3c.org/ before asking trivial
+questions. That document also covers the basic-auth FAQ (URLs like
+http://user:pass@host). Do not ask questions about authentication before
+consulting the HTTP specification. HTTPS is just HTTP in SSL transport.
+
+If you are doing advanced stuff, and don't find documentation you need,
+please try to extrapolate from OpenSSL documentation (which unfortunately
+is quite sparse) and the source code.
+
+If you run into build problems, especially regarding shared libraries,
+check your perl documentation, especially the perlxtut(1) man page,
+which gives excellent tutorial of the build process of XSUBs.
+
+ perlxtut(1)
+ perlxs(1)
+ perlguts(1)
+ perlcall(1)
+
+Say `perldoc Net::SSLeay' _NOW_!
+
+To download OpenSSL, try URL http://www.openssl.org/
+
+Of related interest may be `http://www.symlabs.com/Net_SSLeay/smime.html'
+
+Newer versions of this module can be found from CPAN/authors/id/SAMPO/,
+the home page is http://www.symlabs.com/Net_SSLeay/index.html
+
+Please send bug reports to the above address. General questions should be
+sent either to me or to the mailing list (subscribe by sending mail
+to openssl-users-request@openssl.org or using web interface at
+http://www.openssl.org/support/).
+
+--Sampo
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/README.Win32 b/~downloads/files/tmp/Net_SSLeay.pm-1.22/README.Win32
new file mode 100644
index 0000000..c671f30
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/README.Win32
@@ -0,0 +1,237 @@
+Building on Win 32 platforms
+============================
+31.7.1999, Sampo Kellomaki
+7.6.2002, reviewed and added comments, --Sampo
+16.8.2002, added comments by Marcel Bucher --Sampo
+$Id: README.Win32,v 1.4 2002/08/16 20:57:05 sampo Exp $
+
+This file is heavily based on work by Anton Roeckseisen
+Later insight by Marcel Bucher
+
+WARNING: I do not develop on Windows so I am not in position to test
+any of this stuff. As such, the Windows build is not officially
+supported and if the shit hits the fan, I'll just bail
+out. Never-the-less as some kind people have sent me patches and helpful
+instructions, I offer compilation of them here as a service for the
+poor souls that live with the Vole.
+
+WARNING 2: These instructions recommend copying binaries. This is
+something I officially do not recommend (you should compile all of
+perl, OpenSSL, and Net::SSLeay from source using the same compiler
+and flags). That is the second reason why I officially do not support
+Windows, though if you follow the Cygwin path (see below) you would
+be able to satisfy my criteria for obtaining support.
+
+These instructions focus around native Windows environment. It should be
+noted that Cygwin environment, which is much more Unix like, has been
+used successfully to compile perl, OpenSSL, and Net::SSLeay. In that
+environment you just follow the Unix build instructions.
+
+Yet Another Windows Recipe by Marcel Bucher
+===============================================================
+
+Recipe for 1.19 (tested as of version 1.18)
+
+If you don't want to do an 'INSTALL' on OpenSSL, but leave it in the
+build directory on Windows, this is how you can get Net::SSLeay to
+work: ('install' of OpenSSL is rather kludgy on Windows...)
+
+My System:
+----------
+ - Win2k SP2 (should also work on NT et al)
+ - VC6 SP4
+ - ActiveState Perl 5.6.0 build 613
+ - OpenSSL 0.9.6g
+ - Net-SSLeay 1.19
+
+OpenSSL:
+--------
+
+- Build OpenSSL as described in the instructions. I did:
+ unpack OpenSSL to
+ cd
+ perl Configure VC-WIN32
+ ms\do_masm.bat (If you have an assembler, use do_ms.bat otherwise)
+ nmake -f ms\ntdll.mak (If you have an assembler,
+ use ms\ntNoAsmDll.mak otherwise)
+ cd out32dll (thats where the compiled files are)
+ ..\ms\test
+
+- Copy the two OpenSSL dll's from \Out32dll to
+ /system32
+
+The OpenSSL includes will be in \inc32.
+The OpenSSL libs and exe's will be in \out32dll
+
+Net::SSLeay:
+------------
+
+ perl Makefile.pl -windows
+ nmake
+ nmake test
+ nmake install
+
+Another recent recipe
+=====================
+
+For a recent (1.16) and thoroughly detailed success report,
+please see file
+
+ RECIPE.Win32
+
+by Hermann Kelley His report is in fact so good
+that you may consider using it as instructions. Thanks Hermann.
+
+------------- older stuff -----------
+
+Tested config:
+ - Net::SSLeay 1.02 w/Anton's patches
+ - SSLeay-0.9.0
+ - ActiveState perl from 23.12.1998
+ - VC++ 5.0
+
+Current release:
+ - Anton's patches merged in, but not tested
+ - SSLeay-0.9.0 no longer supported, use OpenSSL-0.9.3a
+
+The build procedure does not use any of the GUI stuff, instead it just
+uses the command line tools (such as nmake) that come with VC++. This
+approach is pretty much in line with OpenSSL and I believe it is in
+the long term only maintainable approach. Do not bother to send me
+project files for different "Visual" environments (but feel free to
+add all the files in a project and use for your own work if you think
+it makes your life easier).
+
+Please send any success reports, bug reports and comments to me.
+
+HOW TO DO IT (Sampo's speculation for recent versions (< 1.18))
+===============================================================
+
+1. Install VC++ 5.0 (or other ANSI C compiler?)
+
+2. Install ActivePerl from www.ActiveState.com (latest version)
+
+3. Install OpenSSL-0.9.6g on your system, take note of the path
+ where it was installed. Good place is \openssl on the drive
+ where you are building Net::SSLeay. Apparently INSTALL.W32 file
+ in the openssl distribution offers two ways to install.
+ Hermann Kelley reports that
+ you should use the option 2. He further points out that
+ there is an error where copy command reading
+
+ $ copy /b inc32\* c:\openssl\include\openssl
+
+ should read
+
+ >copy /b inc32\openssl\* c:\openssl\include\openssl
+
+ to account for the fact that the standard copy command does
+ not recursively copy subdirectories.
+
+ Net::SSLeay build expects following directory structure (assuming
+ the path you chose is \openssl)
+
+ \openssl\
+ \openssl\bin
+ \openssl\lib
+ \openssl\include
+ \openssl\include\openssl
+
+4. Run `perl Makefile.PL -windows your-openssl-path'. This should
+ cause the Makefile.PL to try to run openssl.exe to check that
+ you are OK. If it succeeds, chances of build working are good.
+ If not, you will need to debug things until it works.
+
+5. Do "nmake"
+ (If you get link-errors about missing PerlCRT.lib, you shold find
+ it in the Perl-Distribution and copy it to C++ lib-Directory)
+
+6. Add the directory where ssleay32.dll and libeay32.dll live to your
+ path (e.g. \openssl\lib). Alternatively, copy these libraries
+ to a directory already in your path.
+
+7. Do "nmake install"
+
+HOW TO DO IT (Anton I):
+=======================
+
+1. Install VC++ 5.0 (or other ANSI C compiler?)
+
+2. Install ActivePerl from www.ActiveState.com (latest version)
+
+3. Install OpenSSL-0.9.3a on your system
+
+4. Edit Makefile.PL to reflect the path to your VC++ library files (see
+ comment near the end of the file)
+
+5. Do a "perl Makefile.PL"
+
+6. Do "nmake"
+ (If you get link-errors about missing PerlCRT.lib, you shold find
+ it in the Perl-Distribution and copy it to C++ lib-Directory)
+
+7. Do "nmake install"
+
+Anton's comments follow...
+
+BIG THING:
+----------
+
+The main point in getting it to work was to tell SSLeay to use the
+socket opened via perl with SSL_set_fd. The socket number needs some
+conversion with _get_osfhandle(fd) (See also SSLeay.xs)
+
+The problem is I do not know how to reverse this behaviour... :-( so
+SSL_get_fd does not work!
+
+MINOR THINGS:
+-------------
+
+* I used some defines in compiling SSLeay 0.9.0b - so I provide my
+Makefile for tracking things down.... (SSLeay/ms/ntdll.mak) - probably
+you don't need this! (the defines appear not to be needed --Sampo)
+
+
+* To make the compiler (VC++ 5.0) work with it I had to change several
+function prototypes not fully defined in the SSLeay - Headerfiles. C++
+is much more complaining about C stuff as one might
+expect.... grrrrrr.... Maybe the SSL-guys get this right someday.
+
+* Added some more functions to get more info about certs an introduced a
+callback to set a passphrase via a perl-function
+
+* Added pointers to typemap - file
+
+HOW TO DO IT (Anton II):
+========================
+
+1. Install VC++ 5.0
+
+2. Install ActivePerl from ActiveState (I got a version from 23.12.1998 but
+ newer should work too! Binary distribution is ok!)
+
+3. Install SSLeay 0.9.0b on your system - maybe you need my Makefile....
+ I hope not!
+
+4. Use my headerfiles instead of the files provided by SSLeay-0.9.0b !
+
+5. Edit Makefile.pl to reflect the path to your VC++ library files!
+
+6. Do a "perl makefile.pl"
+
+7. Do "nmake"
+ (If you get link-errors about missing PerlCRT.lib please tell me! You
+ shold find it in the Perl-Distribution and copy it to C++ lib-Directory)
+
+8. Do "nmake install"
+
+9. Try to find out if things work ..... You might do this in the examples
+ directory:
+
+ (1) openssl.exe s_server -cert cert.pem -key key.pem -accept 3000 -www
+ (Password is "12345")
+ (2) perl callback.pl localhost 3000 \usr\local\ssl\certs cert.pem key.pem
+ (Password provided by callback!)
+
+ (3) look at callback.pl and smile..... (hope so :-))
+======
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/RECIPE.Win32 b/~downloads/files/tmp/Net_SSLeay.pm-1.22/RECIPE.Win32
new file mode 100644
index 0000000..5204e3a
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/RECIPE.Win32
@@ -0,0 +1,112 @@
+From: "Hermann Kelley"
+To: sampo@@symlabs._com
+Date: 08 Jun 2002, 10:58:00 PM
+Subject: RE: Build Net::SSLeay on Win32
+
+Alright then. I'm trying an install on a fresh machine.
+No openssl and no SSLeay installed so far.
+
+I believe there is a newer version of Activeperl. I am
+running:
+
+--------------------------------------------------------
+This is perl, v5.6.1 built for MSWin32-x86-multi-thread
+(with 1 registered patch, see perl -V for more detail)
+
+Copyright 1987-2001, Larry Wall
+
+Binary build 628 provided by ActiveState Tool Corp.
+Built 15:41:05 Jul 4 2001
+--------------------------------------------------------
+
+Also my version ov Visual-C++ is a few years old.
+
+
+Step 1: Compiling openssl-0.9.6b (May 10, from openssl.org)
+
+I'm compiling the C codes only. Haven't tried to compile
+the ASM code (This would result in a performance increase
+for certain encryption algorithms though).
+
+Essentially here are the 3 scripts that I'm running (following
+the instructions given in INSTALL.W32):
+
+- perl Configure VC-WIN32
+- ms\do_ms
+- nmake -f ms\ntdll.mak
+
+Everything compiled fine. Now I'm running the test programs:
+
+- cd out32dll
+- ..\ms\test
+
+Tests are running ok. Ready to install
+
+Step 2: Installing openssl
+
+To install in c:\openssl I modify take the block of commands
+from INSTALL.W32
+
+ (1) md c:\openssl
+ (2) md c:\openssl\bin
+ (3) md c:\openssl\lib
+ (4) md c:\openssl\include
+ (5) md c:\openssl\include\openssl
+!!!! (6) copy /b inc32\* c:\openssl\include\openssl
+ (7) copy /b out32dll\ssleay32.lib c:\openssl\lib
+ (8) copy /b out32dll\libeay32.lib c:\openssl\lib
+ (9) copy /b out32dll\ssleay32.dll c:\openssl\bin
+ (10) copy /b out32dll\libeay32.dll c:\openssl\bin
+ (11) copy /b out32dll\openssl.exe c:\openssl\bin
+
+and modify line 6!!!!
+
+In a normal Win32 shell the copy command will not recursively
+copy directories. Line 6 needs to be changed to
+
+(6) copy /b inc32\openssl c:\openssl\include\openssl
+
+3. Post installation
+
+Once successfully compiled the DLLs (ssleay32.dll and libeay32.dll)
+need to be copied to an executable path or the PATH variable has to
+be set respectively.
+
+In my case I'm simply copying them to \WINNT\SYSTEM32. Any location in
+the PATh statement will work.
+
+- copy c:\openssl\bin\ssleay32.dll c:\winnt\system32
+- copy c:\openssl\bin\libeay32.dll c:\winnt\system32
+
+
+Now to the installation of the Perl modules (using version 1.16,
+dated 5.6.2002) Net_SSLeay.pm-1.16.tar.gz
+
+Step 3:
+
+I did not have to make any modifications to Makefile.PL. If your
+environment variables are set correctly (LIB, INCLUDE) that's not
+necessary.
+
+perl Makefile.PL -windows c:\
+
+----
+Checking if your kit is complete...
+Looks good
+Checking if your kit is complete...
+Looks good
+Writing Makefile for Net::SSLeay::Handle
+Writing Makefile for Net::SSLeay
+----
+
+Step 4:
+
+nmake
+nmake install
+
+
+Everything up and running.
+
+Please let me know if you want me to test anything else.
+
+--hermann
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/SSLeay.pm b/~downloads/files/tmp/Net_SSLeay.pm-1.22/SSLeay.pm
new file mode 100644
index 0000000..9b6083a
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/SSLeay.pm
@@ -0,0 +1,2033 @@
+# Net::SSLeay.pm - Perl module for using Eric Young's implementation of SSL
+#
+# Copyright (c) 1996-2003 Sampo Kellomaki , All Rights Reserved.
+# $Id: SSLeay.pm,v 1.21 2003/02/14 03:11:07 sampo Exp $
+# Version 1.04, 31.3.1999
+# 30.7.1999, Tracking OpenSSL-0.9.3a changes, --Sampo
+# 31.7.1999, version 1.05 --Sampo
+# 7.4.2001, fixed input error upon 0, OpenSSL-0.9.6a, version 1.06 --Sampo
+# 18.4.2001, added TLSv1 support by Stephen C. Koehler
+# , version 1.07, --Sampo
+# 25.4.2001, 64 bit fixes by Marko Asplund --Sampo
+# 17.4.2001, more error codes from aspa --Sampo
+# 25.9.2001, added heaps and piles of newer OpenSSL auxiliary functions --Sampo
+# 6.11.2001, got rid of $p_errs madness --Sampo
+# 9.11.2001, added EGD (entropy gathering daemon) reference info --Sampo
+# 7.12.2001, Added proxy support by Bruno De Wolf
+# 6.1.2002, cosmetic fix to socket options from Kwindla Hultman Kramer
+# 25.3.2002, added post_https_cert and friends per patch from
+# mock@@obscurity.ogr, --Sampo
+# 3.4.2002, added `use bytes' from Marcus Taylor
+# This avoids unicode/utf8 (as may appear in some XML docs)
+# from fooling the length comuptations. Dropped support for
+# perl5.005_03 because I do not have opportunity to test it. --Sampo
+# 5.4.2002, improved Unicode gotcha eliminator to support old perls --Sampo
+# 8.4.2002, added a small line end fix from Petr Dousa (pdousa@@kerio_.com)
+# 17.5.2002, Added BIO_s_mem, BIO_new, BIO_free, BIO_write, BIO_read
+# BIO_eof, BIO_pending, BIO_wpending, RSA_generate_key, RSA_free
+# --mikem@open._com.au
+# 10.8.2002, Added SSL_peek patch to ssl_read_until from
+# Peter Behroozi --Sampo
+# 21.8.2002, Added SESSION_get_master_key, SSL_get_client_random, SSL_get_server_random
+# --mikem@open.com_.au
+# 2.9.2002, Added SSL_CTX_get_cert_store, X509_STORE_add_cert, X509_STORE_add_crl
+# X509_STORE_set_flags, X509_load_cert_file, X509_load_crl_file
+# X509_load_cert_crl_file, PEM_read_bio_X509_CRL,
+# constants for X509_V_FLAG_* in order to support certificate revocation lists.
+# --mikem@open.com_.au
+# 6.9.2002, fixed X509_STORE_set_flags to X509_STORE_CTX_set_flags, --Sampo
+# 19.9.2002, applied patch from Tim Engler
+# 18.2.2003, applied patch from Toni Andjelkovic
+#
+# The distribution and use of this module are subject to the conditions
+# listed in LICENSE file at the root of OpenSSL-0.9.6c
+# distribution (i.e. free, but mandatory attribution and NO WARRANTY).
+
+package Net::SSLeay;
+
+use strict;
+use Carp;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD $CRLF);
+use Socket;
+use Errno;
+
+require Exporter;
+require DynaLoader;
+use AutoLoader;
+
+# 0=no warns, 1=only errors, 2=ciphers, 3=progress, 4=dump data
+$Net::SSLeay::trace = 0; # Do not change here, use
+ # $Net::SSLeay::trace = [1-4] in caller
+
+# 2 = insist on v2 SSL protocol
+# 3 = insist on v3 SSL
+# 10 = insist on TLSv1
+# 0 or undef = guess (v23)
+#
+$Net::SSLeay::ssl_version = 0;
+
+#define to enable the "cat /proc/$$/stat" stuff
+$Net::SSLeay::linux_debug = 0;
+
+# Number of seconds to sleep after sending message and before half
+# closing connection. Useful with antiquated broken servers.
+$Net::SSLeay::slowly = 0; # don't change here, use
+ # Net::SSLeay::version=[2,3,0] in caller
+
+# RANDOM NUMBER INITIALIZATION
+#
+# Edit to your taste. Using /dev/random would be more secure, but may
+# block if randomness is not available, thus the default is
+# /dev/urandom. $how_random determines how many bits of randomness to take
+# from the device. You should take enough (read SSLeay/doc/rand), but
+# beware that randomness is limited resource so you should not waste
+# it either or you may end up with randomness depletion (situation where
+# /dev/random would block and /dev/urandom starts to return predictable
+# numbers).
+#
+# N.B. /dev/urandom does not exit on all systems, such as Solaris 2.6. In that
+# case you should get a third party package that emulates /dev/urandom
+# (e.g. via named pipe) or supply a random number file. Some such
+# packages are documented in Caveat section of the POD documentation.
+
+$Net::SSLeay::random_device = '/dev/urandom';
+$Net::SSLeay::how_random = 512;
+
+$VERSION = '1.22';
+@ISA = qw(Exporter DynaLoader);
+@EXPORT_OK = qw(
+ AT_MD5_WITH_RSA_ENCRYPTION
+ CB_ACCEPT_EXIT
+ CB_ACCEPT_LOOP
+ CB_CONNECT_EXIT
+ CB_CONNECT_LOOP
+ CK_DES_192_EDE3_CBC_WITH_MD5
+ CK_DES_192_EDE3_CBC_WITH_SHA
+ CK_DES_64_CBC_WITH_MD5
+ CK_DES_64_CBC_WITH_SHA
+ CK_DES_64_CFB64_WITH_MD5_1
+ CK_IDEA_128_CBC_WITH_MD5
+ CK_NULL
+ CK_NULL_WITH_MD5
+ CK_RC2_128_CBC_EXPORT40_WITH_MD5
+ CK_RC2_128_CBC_WITH_MD5
+ CK_RC4_128_EXPORT40_WITH_MD5
+ CK_RC4_128_WITH_MD5
+ CLIENT_VERSION
+ ERROR_NONE
+ ERROR_SSL
+ ERROR_SYSCALL
+ ERROR_WANT_CONNECT
+ ERROR_WANT_READ
+ ERROR_WANT_WRITE
+ ERROR_WANT_X509_LOOKUP
+ ERROR_ZERO_RETURN
+ CT_X509_CERTIFICATE
+ FILETYPE_ASN1
+ FILETYPE_PEM
+ F_CLIENT_CERTIFICATE
+ F_CLIENT_HELLO
+ F_CLIENT_MASTER_KEY
+ F_D2I_SSL_SESSION
+ F_GET_CLIENT_FINISHED
+ F_GET_CLIENT_HELLO
+ F_GET_CLIENT_MASTER_KEY
+ F_GET_SERVER_FINISHED
+ F_GET_SERVER_HELLO
+ F_GET_SERVER_VERIFY
+ F_I2D_SSL_SESSION
+ F_READ_N
+ F_REQUEST_CERTIFICATE
+ F_SERVER_HELLO
+ F_SSL_ACCEPT
+ F_SSL_CERT_NEW
+ F_SSL_CONNECT
+ F_SSL_ENC_DES_CBC_INIT
+ F_SSL_ENC_DES_CFB_INIT
+ F_SSL_ENC_DES_EDE3_CBC_INIT
+ F_SSL_ENC_IDEA_CBC_INIT
+ F_SSL_ENC_NULL_INIT
+ F_SSL_ENC_RC2_CBC_INIT
+ F_SSL_ENC_RC4_INIT
+ F_SSL_GET_NEW_SESSION
+ F_SSL_MAKE_CIPHER_LIST
+ F_SSL_NEW
+ F_SSL_READ
+ F_SSL_RSA_PRIVATE_DECRYPT
+ F_SSL_RSA_PUBLIC_ENCRYPT
+ F_SSL_SESSION_NEW
+ F_SSL_SESSION_PRINT_FP
+ F_SSL_SET_CERTIFICATE
+ F_SSL_SET_FD
+ F_SSL_SET_RFD
+ F_SSL_SET_WFD
+ F_SSL_STARTUP
+ F_SSL_USE_CERTIFICATE
+ F_SSL_USE_CERTIFICATE_ASN1
+ F_SSL_USE_CERTIFICATE_FILE
+ F_SSL_USE_PRIVATEKEY
+ F_SSL_USE_PRIVATEKEY_ASN1
+ F_SSL_USE_PRIVATEKEY_FILE
+ F_SSL_USE_RSAPRIVATEKEY
+ F_SSL_USE_RSAPRIVATEKEY_ASN1
+ F_SSL_USE_RSAPRIVATEKEY_FILE
+ F_WRITE_PENDING
+ MAX_MASTER_KEY_LENGTH_IN_BITS
+ MAX_RECORD_LENGTH_2_BYTE_HEADER
+ MAX_RECORD_LENGTH_3_BYTE_HEADER
+ MAX_SSL_SESSION_ID_LENGTH_IN_BYTES
+ MIN_RSA_MODULUS_LENGTH_IN_BYTES
+ MT_CLIENT_CERTIFICATE
+ MT_CLIENT_FINISHED
+ MT_CLIENT_HELLO
+ MT_CLIENT_MASTER_KEY
+ MT_ERROR
+ MT_REQUEST_CERTIFICATE
+ MT_SERVER_FINISHED
+ MT_SERVER_HELLO
+ MT_SERVER_VERIFY
+ NOTHING
+ OPENSSL_VERSION_NUMBER
+ PE_BAD_CERTIFICATE
+ PE_NO_CERTIFICATE
+ PE_NO_CIPHER
+ PE_UNSUPPORTED_CERTIFICATE_TYPE
+ READING
+ RWERR_BAD_MAC_DECODE
+ RWERR_BAD_WRITE_RETRY
+ RWERR_INTERNAL_ERROR
+ R_BAD_AUTHENTICATION_TYPE
+ R_BAD_CHECKSUM
+ R_BAD_MAC_DECODE
+ R_BAD_RESPONSE_ARGUMENT
+ R_BAD_SSL_FILETYPE
+ R_BAD_SSL_SESSION_ID_LENGTH
+ R_BAD_STATE
+ R_BAD_WRITE_RETRY
+ R_CHALLENGE_IS_DIFFERENT
+ R_CIPHER_CODE_TOO_LONG
+ R_CIPHER_TABLE_SRC_ERROR
+ R_CONECTION_ID_IS_DIFFERENT
+ R_INVALID_CHALLENGE_LENGTH
+ R_NO_CERTIFICATE_SET
+ R_NO_CERTIFICATE_SPECIFIED
+ R_NO_CIPHER_LIST
+ R_NO_CIPHER_MATCH
+ R_NO_CIPHER_WE_TRUST
+ R_NO_PRIVATEKEY
+ R_NO_PUBLICKEY
+ R_NO_READ_METHOD_SET
+ R_NO_WRITE_METHOD_SET
+ R_NULL_SSL_CTX
+ R_PEER_DID_NOT_RETURN_A_CERTIFICATE
+ R_PEER_ERROR
+ R_PEER_ERROR_CERTIFICATE
+ R_PEER_ERROR_NO_CIPHER
+ R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE
+ R_PERR_ERROR_NO_CERTIFICATE
+ R_PUBLIC_KEY_ENCRYPT_ERROR
+ R_PUBLIC_KEY_IS_NOT_RSA
+ R_PUBLIC_KEY_NO_RSA
+ R_READ_WRONG_PACKET_TYPE
+ R_REVERSE_KEY_ARG_LENGTH_IS_WRONG
+ R_REVERSE_MASTER_KEY_LENGTH_IS_WRONG
+ R_REVERSE_SSL_SESSION_ID_LENGTH_IS_WRONG
+ R_SHORT_READ
+ R_SSL_SESSION_ID_IS_DIFFERENT
+ R_UNABLE_TO_EXTRACT_PUBLIC_KEY
+ R_UNDEFINED_INIT_STATE
+ R_UNKNOWN_REMOTE_ERROR_TYPE
+ R_UNKNOWN_STATE
+ R_UNSUPORTED_CIPHER
+ R_WRONG_PUBLIC_KEY_TYPE
+ R_X509_LIB
+ SERVER_VERSION
+ SESSION
+ SESSION_ASN1_VERSION
+ ST_ACCEPT
+ ST_BEFORE
+ ST_CLIENT_START_ENCRYPTION
+ ST_CONNECT
+ ST_GET_CLIENT_FINISHED_A
+ ST_GET_CLIENT_FINISHED_B
+ ST_GET_CLIENT_HELLO_A
+ ST_GET_CLIENT_HELLO_B
+ ST_GET_CLIENT_MASTER_KEY_A
+ ST_GET_CLIENT_MASTER_KEY_B
+ ST_GET_SERVER_FINISHED_A
+ ST_GET_SERVER_FINISHED_B
+ ST_GET_SERVER_HELLO_A
+ ST_GET_SERVER_HELLO_B
+ ST_GET_SERVER_VERIFY_A
+ ST_GET_SERVER_VERIFY_B
+ ST_INIT
+ ST_OK
+ ST_READ_BODY
+ ST_READ_HEADER
+ ST_SEND_CLIENT_CERTIFICATE_A
+ ST_SEND_CLIENT_CERTIFICATE_B
+ ST_SEND_CLIENT_CERTIFICATE_C
+ ST_SEND_CLIENT_CERTIFICATE_D
+ ST_SEND_CLIENT_FINISHED_A
+ ST_SEND_CLIENT_FINISHED_B
+ ST_SEND_CLIENT_HELLO_A
+ ST_SEND_CLIENT_HELLO_B
+ ST_SEND_CLIENT_MASTER_KEY_A
+ ST_SEND_CLIENT_MASTER_KEY_B
+ ST_SEND_REQUEST_CERTIFICATE_A
+ ST_SEND_REQUEST_CERTIFICATE_B
+ ST_SEND_REQUEST_CERTIFICATE_C
+ ST_SEND_REQUEST_CERTIFICATE_D
+ ST_SEND_SERVER_FINISHED_A
+ ST_SEND_SERVER_FINISHED_B
+ ST_SEND_SERVER_HELLO_A
+ ST_SEND_SERVER_HELLO_B
+ ST_SEND_SERVER_VERIFY_A
+ ST_SEND_SERVER_VERIFY_B
+ ST_SERVER_START_ENCRYPTION
+ ST_X509_GET_CLIENT_CERTIFICATE
+ ST_X509_GET_SERVER_CERTIFICATE
+ TXT_DES_192_EDE3_CBC_WITH_MD5
+ TXT_DES_192_EDE3_CBC_WITH_SHA
+ TXT_DES_64_CBC_WITH_MD5
+ TXT_DES_64_CBC_WITH_SHA
+ TXT_DES_64_CFB64_WITH_MD5_1
+ TXT_IDEA_128_CBC_WITH_MD5
+ TXT_NULL
+ TXT_NULL_WITH_MD5
+ TXT_RC2_128_CBC_EXPORT40_WITH_MD5
+ TXT_RC2_128_CBC_WITH_MD5
+ TXT_RC4_128_EXPORT40_WITH_MD5
+ TXT_RC4_128_WITH_MD5
+ VERIFY_CLIENT_ONCE
+ VERIFY_FAIL_IF_NO_PEER_CERT
+ VERIFY_NONE
+ VERIFY_PEER
+ WRITING
+ X509_LOOKUP
+ X509_V_FLAG_CB_ISSUER_CHECK
+ X509_V_FLAG_USE_CHECK_TIME
+ X509_V_FLAG_CRL_CHECK
+ X509_V_FLAG_CRL_CHECK_ALL
+ X509_V_FLAG_IGNORE_CRITICAL
+ CTX_new
+ CTX_v2_new
+ CTX_v3_new
+ CTX_v23_new
+ CTX_free
+ new
+ free
+ accept
+ clear
+ connect
+ set_fd
+ set_rfd
+ set_wfd
+ get_fd
+ read
+ write
+ peek
+ use_RSAPrivateKey
+ use_RSAPrivateKey_ASN1
+ use_RSAPrivateKey_file
+ CTX_use_RSAPrivateKey_file
+ use_PrivateKey
+ use_PrivateKey_ASN1
+ use_PrivateKey_file
+ use_certificate
+ use_certificate_ASN1
+ use_certificate_file
+ CTX_use_certificate_file
+ load_error_strings
+ ERR_load_SSL_strings
+ ERR_load_RAND_strings
+ state_string
+ rstate_string
+ state_string_long
+ rstate_string_long
+ get_time
+ set_time
+ get_timeout
+ set_timeout
+ copy_session_id
+ set_read_ahead
+ get_read_ahead
+ pending
+ get_cipher_list
+ set_cipher_list
+ get_cipher
+ get_shared_ciphers
+ get_peer_certificate
+ set_verify
+ flush_sessions
+ set_bio
+ get_rbio
+ get_wbio
+ SESSION_new
+ SESSION_print
+ SESSION_free
+ i2d_SSL_SESSION
+ set_session
+ add_session
+ remove_session
+ d2i_SSL_SESSION
+ BIO_f_ssl
+ BIO_new
+ BIO_new_file
+ BIO_s_mem
+ BIO_free
+ BIO_read
+ BIO_write
+ BIO_eof
+ BIO_pending
+ BIO_wpending
+ ERR_get_error
+ ERR_error_string
+ err
+ clear_error
+ X509_get_issuer_name
+ X509_get_subject_name
+ X509_NAME_oneline
+ X509_NAME_get_text_by_NID
+ CTX_get_cert_store
+ X509_STORE_add_cert
+ X509_STORE_add_crl
+ X509_STORE_CTX_set_flags
+ X509_load_cert_file
+ X509_load_crl_file
+ X509_load_cert_crl_file
+ PEM_read_bio_X509_CRL
+ die_if_ssl_error
+ die_now
+ print_errs
+ set_cert_and_key
+ set_server_cert_and_key
+ make_form
+ make_headers
+ do_https
+ get_https
+ post_https
+ sslcat
+ ssl_read_CRLF
+ ssl_read_all
+ ssl_read_until
+ ssl_write_CRLF
+ ssl_write_all
+ dump_peer_certificate
+ RSA_generate_key
+ RSA_free
+ X509_free
+ SESSION_get_master_key
+ get_client_random
+ get_server_random
+);
+
+sub AUTOLOAD {
+ # This AUTOLOAD is used to 'autoload' constants from the constant()
+ # XS function. If a constant is not found then control is passed
+ # to the AUTOLOAD in AutoLoader.
+
+ my $constname;
+ ($constname = $AUTOLOAD) =~ s/.*:://;
+ my $val = constant($constname);
+ if ($! != 0) {
+ if ($! =~ /((Invalid)|(not valid))/i || $!{EINVAL}) {
+ $AutoLoader::AUTOLOAD = $AUTOLOAD;
+ goto &AutoLoader::AUTOLOAD;
+ }
+ else {
+ croak "Your vendor has not defined SSLeay macro $constname";
+ }
+ }
+ eval "sub $AUTOLOAD { $val }";
+ goto &$AUTOLOAD;
+}
+
+bootstrap Net::SSLeay $VERSION;
+
+# Preloaded methods go here.
+
+$CRLF = "\x0d\x0a"; # because \r\n is not fully portable
+
+### Print SSLeay error stack
+
+sub print_errs {
+ my ($msg) = @_;
+ my ($count, $err, $errs, $e) = (0,0,'');
+ while ($err = ERR_get_error()) {
+ $count ++;
+ $e = "$msg $$: $count - " . ERR_error_string($err) . "\n";
+ $errs .= $e;
+ warn $e if $Net::SSLeay::trace;
+ }
+ return $errs;
+}
+
+# Death is conditional to SSLeay errors existing, i.e. this function checks
+# for errors and only dies in affirmative.
+# usage: Net::SSLeay::write($ssl, "foo") or die_if_ssl_error("SSL write ($!)");
+
+sub die_if_ssl_error {
+ my ($msg) = @_;
+ die "$$: $msg\n" if print_errs($msg);
+}
+
+# Unconditional death. Used to print SSLeay errors before dying.
+# usage: Net::SSLeay:connect($ssl) or die_now("Failed SSL connect ($!)");
+
+sub die_now {
+ my ($msg) = @_;
+ print_errs($msg);
+ die "$$: $msg\n";
+}
+
+# Perl 5.6.* unicode support causes that length() no longer reliably
+# reflects the byte length of a string. This eval is to fix that.
+# Thanks to Sean Burke for the snippet.
+
+BEGIN{
+eval 'use bytes; sub blength ($) { length $_[0] }';
+$@ and eval ' sub blength ($) { length $_[0] }' ;
+}
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+# Documentation. Use `perl-root/pod/pod2html SSLeay.pm` to output html
+
+=head1 NAME
+
+Net::SSLeay - Perl extension for using OpenSSL or SSLeay
+
+=head1 SYNOPSIS
+
+ use Net::SSLeay, qw(get_https post_https sslcat make_headers make_form);
+
+ ($page) = get_https('www.bacus.pt', 443, '/'); # 1
+
+ ($page, $response, %reply_headers)
+ = get_https('www.bacus.pt', 443, '/', # 2
+ make_headers(User-Agent => 'Cryptozilla/5.0b1',
+ Referer => 'https://www.bacus.pt'
+ ));
+
+ ($page, $result, %headers) = # 2b
+ = get_https('www.bacus.pt', 443, '/protected.html',
+ make_headers(Authorization =>
+ 'Basic ' . MIME::Base64::encode("$user:$pass",''))
+ );
+
+ ($page, $response, %reply_headers)
+ = post_https('www.bacus.pt', 443, '/foo.cgi', '', # 3
+ make_form(OK => '1',
+ name => 'Sampo'
+ ));
+
+ $reply = sslcat($host, $port, $request); # 4
+
+ ($reply, $err, $server_cert) = sslcat($host, $port, $request); # 5
+
+ $Net::SSLeay::trace = 2; # 0=no debugging, 1=ciphers, 2=trace, 3=dump data
+
+=head1 DESCRIPTION
+
+There is a related module called Net::SSLeay::Handle included in this
+distribution that you might want to use instead. It has its own pod
+documentation.
+
+This module offers some high level convinience functions for accessing
+web pages on SSL servers, a sslcat() function for writing your own
+clients, and finally access to the SSL api of SSLeay/OpenSSL package so you
+can write servers or clients for more complicated applications.
+
+For high level functions it is most convinient to import them to your
+main namespace as indicated in the synopsis.
+
+Case 1 demonstrates typical invocation of get_https() to fetch an HTML
+page from secure server. The first argument provides host name or ip
+in dotted decimal notation of the remote server to contact. Second
+argument is the TCP port at the remote end (your own port is picked
+arbitrarily from high numbered ports as usual for TCP). The third
+argument is the URL of the page without the host name part. If in
+doubt consult HTTP specifications at
+
+Case 2 demonstrates full fledged use of get_https(). As can be seen,
+get_https() parses the response and response headers and returns them as
+a list, which can be captured in a hash for later reference. Also a
+fourth argument to get_https() is used to insert some additional headers
+in the request. make_headers() is a function that will convert a list or
+hash to such headers. By default get_https() supplies Host (make virtual
+hosting easy) and Accept (reportedly needed by IIS) headers.
+
+Case 2b demonstrates how to get password protected page. Refer to
+HTTP protocol specifications for further details (e.g. RFC2617).
+
+Case 3 invokes post_https() to submit a HTML/CGI form to secure
+server. First four arguments are equal to get_https() (note that empty
+string ('') is passed as header argument). The fifth argument is the
+contents of the form formatted according to CGI specification. In this
+case the helper function make_https() is used to do the formatting,
+but you could pass any string. The post_https() automatically adds
+Content-Type and Content-Length headers to the request.
+
+Case 4 shows the fundamental sslcat() function (inspired in spirit by
+netcat utility :-). Its your swiss army knife that allows you to
+easily contact servers, send some data, and then get the response. You
+are responsible for formatting the data and parsing the response -
+sslcat() is just a transport.
+
+Case 5 is a full invocation of sslcat() which allows return of errors
+as well as the server (peer) certificate.
+
+The $trace global variable can be used to control the verbosity of high
+level functions. Level 0 guarantees silence, level 1 (the default)
+only emits error messages.
+
+=head2 Alternate versions of the API
+
+The above mentioned functions actually return the response headers as
+a list, which only gets converted to hash upon assignment (this
+assignment looses information if the same header occurs twice, as may
+be the case with cookies). There are also other variants of the
+functions that return unprocessed headers and that return a reference
+to a hash.
+
+ ($page, $response, @headers) = get_https('www.bacus.pt', 443, '/');
+ for ($i = 0; $i < $#headers; $i+=2) {
+ print "$headers[$i] = " . $headers[$i+1] . "\n";
+ }
+
+ ($page, $response, $headers, $server_cert)
+ = get_https3('www.bacus.pt', 443, '/');
+ print "$headers\n";
+
+ ($page, $response, %headers_ref, $server_cert)
+ = get_https4('www.bacus.pt', 443, '/');
+ for $k (sort keys %{headers_ref}) {
+ for $v (@{$headers_ref{$k}}) {
+ print "$k = $v\n";
+ }
+ }
+
+All of the above code fragments accomplish the same thing: display all
+values of all headers. The API functions ending in "3" return the
+headers simply as a scalar string and it is up to the application to
+split them up. The functions ending in "4" return a reference to
+hash of arrays (see perlref and perllol manual pages if you are
+not familiar with complex perl data structures). To access single value
+of such header hash you would do something like
+
+ print $headers_ref{COOKIE}[0];
+
+The variants 3 and 4 also allow you to discover the server certificate
+in case you would like to store or display it, e.g.
+
+ ($p, $resp, $hdrs, $server_cert) = get_https3('www.bacus.pt', 443, '/');
+ if (!defined($server_cert) || ($server_cert == 0)) {
+ warn "Subject Name: undefined, Issuer Name: undefined";
+ } else {
+ warn 'Subject Name: '
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_subject_name($server_cert))
+ . 'Issuer Name: '
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_issuer_name($server_cert));
+ }
+
+Beware that this method only allows after the fact verification of
+the certificate: by the time get_https3() has returned the https
+request has already been sent to the server, whether you decide to
+tryst it or not. To do the verification correctly you must either
+employ the OpenSSL certificate verification framework or use
+the lower level API to first connect and verify the certificate
+and only then send the http data. See implementation of ds_https3()
+for guidance on how to do this.
+
+=head2 Using client certificates
+
+Secure web communications are encrypted using symmetric crypto keys
+exchanged using encryption based on the certificate of the
+server. Therefore in all SSL connections the server must have a
+certificate. This serves both to authenticate the server to the
+clients and to perform the key exchange.
+
+Sometimes it is necessary to authenticate the client as well. Two
+options are available: http basic authentication and client side
+certificate. The basic authentication over https is actually quite
+safe because https guarantees that the password will not travel in
+clear. Never-the-less, problems like easily guessable passwords
+remain. The client certificate method involves authentication of the
+client at SSL level using a certificate. For this to work, both the
+client and the server will have certificates (which typically are
+different) and private keys.
+
+The API functions outlined above accept additional arguments that
+allow one to supply the client side certificate and key files. The
+format of these files is the same as used for server certificates and
+the caveat about encrypting private key applies.
+
+ ($page, $result, %headers) = # 2c
+ = get_https('www.bacus.pt', 443, '/protected.html',
+ make_headers(Authorization =>
+ 'Basic ' . MIME::Base64::encode("$user:$pass",'')),
+ '', $mime_type6, $path_to_crt7, $path_to_key8);
+
+ ($page, $response, %reply_headers)
+ = post_https('www.bacus.pt', 443, '/foo.cgi', # 3b
+ make_headers('Authorization' =>
+ 'Basic ' . MIME::Base64::encode("$user:$pass",'')),
+ make_form(OK => '1', name => 'Sampo'),
+ $mime_type6, $path_to_crt7, $path_to_key8);
+
+Case 2c demonstrates getting password protected page that also requires
+client certificate, i.e. it is possible to use both authentication
+methods simultaneously.
+
+Case 3b is full blown post to secure server that requires both password
+authentication and client certificate, just like in case 2c.
+
+Note: Client will not send a certificate unless the server requests one.
+This is typically achieved by setting verify mode to VERIFY_PEER on the
+server:
+
+ Net::SSLeay::set_verify(ssl, Net::SSLeay::VERIFY_PEER, 0);
+
+See perldoc ~openssl/doc/ssl/SSL_CTX_set_verify.pod for full description.
+
+=head2 Working through Web proxy
+
+Net::SSLeay can use a web proxy to make its connections. You need to
+first set the proxy host and port using set_proxy() and then just
+use the normal API functions, e.g:
+
+ Net::SSLeay::set_proxy('gateway.myorg.com', 8080);
+ ($page) = get_https('www.bacus.pt', 443, '/');
+
+If your proxy requires authentication, you can supply username and
+password as well
+
+ Net::SSLeay::set_proxy('gateway.myorg.com', 8080, 'joe', 'salainen');
+ ($page, $result, %headers) =
+ = get_https('www.bacus.pt', 443, '/protected.html',
+ make_headers(Authorization =>
+ 'Basic ' . MIME::Base64::encode("susie:pass",''))
+ );
+
+This example demonstrates case where we authenticate to the proxy as
+"joe" and to the final web server as "susie". Proxy authentication
+requires MIME::Base64 module to work.
+
+=head2 Certificate verification and Certificate Revoocation Lists (CRLs)
+
+OpenSSL supports the ability to verify peer certificates. It can also
+optionally check the peer certificate against a Certificate Revocation
+List (CRL) from the certificates issuer. A CRL is a file, created by
+the certificate issuer that lists all the certificates that it
+previously signed, but which it now revokes. CRLs are in PEM format.
+
+You can enable Net::SSLeay CRL checking like this:
+
+ &Net::SSLeay::X509_STORE_CTX_set_flags
+ (&Net::SSLeay::CTX_get_cert_store($ssl),
+ &Net::SSLeay::X509_V_FLAG_CRL_CHECK);
+
+After setting this flag, if OpenSSL checks a peer's certificate, then
+it will attempt to find a CRL for the issuer. It does this by looking
+for a specially named file in the search directory specified by
+CTX_load_verify_locations. CRL files are named with the hash of the
+issuer's subject name, followed by .r0, .r1 etc. For example
+ab1331b2.r0, ab1331b2.r1. It will read all the .r files for the
+issuer, and then check for a revocation of the peer cerificate in all
+of them. (You can also force it to look in a specific named CRL
+file., see below). You can find out the hash of the issuer subject
+name in a CRL with
+
+ openssl crl -in crl.pem -hash -noout
+
+If the peer certificate does not pass the revocation list, or if no
+CRL is found, then the handshaking fails with an error.
+
+You can also force OpenSSL to look for CRLs in one or more arbitrarily
+named files.
+
+my $bio = &Net::SSLeay::BIO_new_file($crlfilename, 'r');
+my $crl = &Net::SSLeay::PEM_read_bio_X509_CRL($bio);
+if ($crl)
+{
+ &Net::SSLeay::X509_STORE_add_crl(&Net::SSLeay::CTX_get_cert_store($ssl, $crl);
+}
+else
+{
+ error reading CRL....
+}
+
+
+=head2 Convenience routines
+
+To be used with Low level API
+
+ Net::SSLeay::randomize($rn_seed_file,$additional_seed);
+ Net::SSLeay::set_cert_and_key($ctx, $cert_path, $key_path);
+ $cert = Net::SSLeay::dump_peer_certificate($ssl);
+ Net::SSLeay::ssl_write_all($ssl, $message) or die "ssl write failure";
+ $got = Net::SSLeay::ssl_read_all($ssl) or die "ssl read failure";
+
+ $got = Net::SSLeay::ssl_read_CRLF($ssl [, $max_length]);
+ $got = Net::SSLeay::ssl_read_until($ssl [, $delimit [, $max_length]]);
+ Net::SSLeay::ssl_write_CRLF($ssl, $message);
+
+randomize() seeds the eay PRNG with /dev/urandom (see top of SSLeay.pm
+for how to change or configure this) and optionally with user provided
+data. It is very important to properly seed your random numbers, so
+do not forget to call this. The high level API functions automatically
+call randomize() so it is not needed with them. See also caveats.
+
+set_cert_and_key() takes two file names as arguments and sets
+the certificate and private key to those. This can be used to
+set either cerver certificates or client certificates.
+
+dump_peer_certificate() allows you to get plaintext description of the
+certificate the peer (usually server) presented to us.
+
+ssl_read_all() and ssl_write_all() provide true blocking semantics for
+these operations (see limitation, below, for explanation). These are
+much preferred to the low level API equivalents (which implement BSD
+blocking semantics). The message argument to ssl_write_all() can be
+reference. This is helpful to avoid unnecessary copy when writing
+something big, e.g:
+
+ $data = 'A' x 1000000000;
+ Net::SSLeay::ssl_write_all($ssl, \$data) or die "ssl write failed";
+
+ssl_read_CRLF() uses ssl_read_all() to read in a line terminated with a
+carriage return followed by a linefeed (CRLF). The CRLF is included in
+the returned scalar.
+
+ssl_read_until() uses ssl_read_all() to read from the SSL input
+stream until it encounters a programmer specified delimiter.
+If the delimiter is undefined, $/ is used. If $/ is undefined,
+\n is used. One can optionally set a maximum length of bytes to read
+from the SSL input stream.
+
+ssl_write_CRLF() writes $message and appends CRLF to the SSL output stream.
+
+=head2 Low level API
+
+In addition to the high level functions outlined above, this module
+contains straight forward access to SSL part of OpenSSL C api. Only the SSL
+subpart of OpenSSL is implemented (if anyone wants to implement other
+parts, feel free to submit patches).
+
+See ssl.h header from OpenSSL C distribution for list of low lever
+SSLeay functions to call (to check if some function has been
+implemented see directly in SSLeay.xs). The module strips SSLeay names
+of the initial "SSL_", generally you should use Net::SSLeay:: in
+place. For example:
+
+In C:
+
+ #include
+
+ err = SSL_set_verify (ssl, SSL_VERIFY_CLIENT_ONCE,
+ &your_call_back_here);
+
+In perl:
+
+ use Net::SSLeay;
+
+ $err = Net::SSLeay::set_verify ($ssl,
+ &Net::SSLeay::VERIFY_CLIENT_ONCE,
+ \&your_call_back_here);
+
+If the function does not start by SSL_ you should use the full
+function name, e.g.:
+
+ $err = &Net::SSLeay::ERR_get_error;
+
+Following new functions behave in perlish way:
+
+ $got = Net::SSLeay::read($ssl);
+ # Performs SSL_read, but returns $got
+ # resized according to data received.
+ # Returns undef on failure.
+
+ Net::SSLeay::write($ssl, $foo) || die;
+ # Performs SSL_write, but automatically
+ # figures out the size of $foo
+
+In order to use the low level API you should start your programs with
+the following encantation:
+
+ use Net::SSLeay qw(die_now die_if_ssl_error);
+ Net::SSLeay::load_error_strings();
+ Net::SSLeay::SSLeay_add_ssl_algorithms(); # Important!
+ Net::SSLeay::randomize();
+
+die_now() and die_if_ssl_error() are used to conveniently print SSLeay error
+stack when something goes wrong, thusly:
+
+ Net::SSLeay:connect($ssl) or die_now("Failed SSL connect ($!)");
+ Net::SSLeay::write($ssl, "foo") or die_if_ssl_error("SSL write ($!)");
+
+You can also use Net::SSLeay::print_errs() to dump the error stack without
+exiting the program. As can be seen, your code becomes much more readable
+if you import the error reporting functions to your main name space.
+
+I can not emphasize enough the need to check error returns. Use these
+functions even in most simple programs, they will reduce debugging
+time greatly. Do not ask questions in mailing list without having
+first sprinkled these in your code.
+
+=head2 Sockets
+
+Perl uses file handles for all I/O. While SSLeay has quite flexible BIO
+mechanism and perl has evolved PerlIO mechanism, this module still
+sticks to using file descriptors. Thus to attach SSLeay to socket you
+should use fileno() to extract the underlying file descriptor:
+
+ Net::SSLeay::set_fd($ssl, fileno(S)); # Must use fileno
+
+You should also use "$|=1;" to eliminate STDIO buffering so you do not
+get confused if you use perl I/O functions to manipulate your socket
+handle.
+
+If you need to select(2) on the socket, go right ahead, but be warned
+that OpenSSL does some internal buffering so SSL_read does not always
+return data even if socket selected for reading (just keep on
+selecting and trying to read). Net::SSLeay.pm is no different from the
+C language OpenSSL in this respect.
+
+=head2 Callbacks
+
+WARNING: as of 1.04 the callbacks have changed and have not been tested.
+
+At this moment the implementation of verify_callback is crippeled in
+the sense that at any given time there can be only one call back which
+is shared by all SSL contexts, sessions and connections. This is
+due to having to keep the reference to the perl call back in a
+static variable so that the callback C glue can find it. To remove
+this restriction would require either a more complex data structure
+(like a hash?) in XSUB to map the call backs to their owners or,
+cleaner, adding a context pointer in the SSL structure. This context would
+then be passed to the C callback, which in our case would be the glue
+to look up the proper Perl function from the context and call it.
+
+---- inaccurate ----
+The verify call back looks like this in C:
+
+ int (*callback)(int ok,X509 *subj_cert,X509 *issuer_cert,
+ int depth,int errorcode,char *arg,STACK *cert_chain)
+
+The corresponding Perl function should be something like this:
+
+ sub verify {
+ my ($ok, $subj_cert, $issuer_cert, $depth, $errorcode,
+ $arg, $chain) = @_;
+ print "Verifying certificate...\n";
+ ...
+ return $ok;
+ }
+
+It is used like this:
+
+ Net::SSLeay::set_verify ($ssl, Net::SSLeay::VERIFY_PEER, \&verify);
+
+Callbacks for decrypting private keys are implemented, but have the
+same limitation as the verify_callback implementation (one password
+callback shared between all contexts.) You might use it something
+like this:
+
+ Net::SSLeay::CTX_set_default_passwd_cb($ctx, sub { "top-secret" });
+ Net::SSLeay::CTX_use_PrivateKey_file($ctx, "key.pem",
+ Net::SSLeay::FILETYPE_PEM)
+ or die "Error reading private key";
+
+No other callbacks are implemented. You do not need to use any
+callback for simple (i.e. normal) cases where the SSLeay built-in
+verify mechanism satisfies your needs.
+---- end inaccurate ----
+
+If you want to use callback stuff, see examples/callback.pl! Its the
+only one I am able to make work reliably.
+
+=head2 X509 and RAND stuff
+
+This module largely lacks interface to the X509 and RAND routines, but
+as I was lazy and needed them, the following kludges are implemented:
+
+ $x509_name = Net::SSLeay::X509_get_subject_name($x509_cert);
+ $x509_name = Net::SSLeay::X509_get_issuer_name($x509_cert);
+ print Net::SSLeay::X509_NAME_oneline($x509_name);
+ $text = Net::SSLeay::X509_NAME_get_text_by_NID($name, $nid);
+
+ Net::SSLeay::RAND_seed($buf); # Perlishly figures out buf size
+ Net::SSLeay::RAND_bytes($buf, $num);
+ Net::SSLeay::RAND_pseudo_bytes($buf, $num);
+ Net::SSLeay::RAND_add($buf, $num, $entropy);
+ Net::SSLeay::RAND_poll();
+ Net::SSLeay::RAND_status();
+ Net::SSLeay::RAND_cleanup();
+ Net::SSLeay::RAND_file_name($num);
+ Net::SSLeay::RAND_load_file($file_name, $how_many_bytes);
+ Net::SSLeay::RAND_write_file($file_name);
+ Net::SSLeay::RAND_egd($path);
+ Net::SSLeay::RAND_egd_bytes($path, $bytes);
+
+Actually you should consider using the following helper functions:
+
+ print Net::SSLeay::dump_peer_certificate($ssl);
+ Net::SSLeay::randomize();
+
+=head2 RSA interface
+
+Some RSA functions are available:
+
+$rsakey = Net::SSLeay::RSA_generate_key();
+Net::SSLeay::CTX_set_tmp_rsa($ctx, $rsakey);
+Net::SSLeay::RSA_free($rsakey);
+
+=head2 BIO interface
+
+Some BIO functions are available:
+
+ Net::SSLeay::BIO_s_mem();
+ $bio = Net::SSLeay::BIO_new(BIO_s_mem())
+ $bio = Net::SSLeay::BIO_new_file($filename, $mode);
+ Net::SSLeay::BIO_free($bio)
+ $count = Net::SSLeay::BIO_write($data);
+ $data = Net::SSLeay::BIO_read($bio);
+ $data = Net::SSLeay::BIO_read($bio, $maxbytes);
+ $is_eof = Net::SSLeay::BIO_eof($bio);
+ $count = Net::SSLeay::BIO_pending($bio);
+ $count = Net::SSLeay::BIO_wpending ($bio);
+
+=head2 Low level API
+Some very low level API functions are available:
+ $client_random = &Net::SSLeay::get_client_random($ssl);
+ $server_random = &Net::SSLeay::get_server_random($ssl);
+ $session = &Net::SSLeay::get_session($ssl);
+ $master_key = &Net::SSLeay::SESSION_get_master_key($session);
+
+=head1 EXAMPLES
+
+One very good example is to look at the implementation of sslcat() in the
+SSLeay.pm file.
+
+Following is a simple SSLeay client (with too little error checking :-(
+
+ #!/usr/local/bin/perl
+ use Socket;
+ use Net::SSLeay qw(die_now die_if_ssl_error) ;
+ Net::SSLeay::load_error_strings();
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Net::SSLeay::randomize();
+
+ ($dest_serv, $port, $msg) = @ARGV; # Read command line
+ $port = getservbyname ($port, 'tcp') unless $port =~ /^\d+$/;
+ $dest_ip = gethostbyname ($dest_serv);
+ $dest_serv_params = sockaddr_in($port, $dest_ip);
+
+ socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
+ connect (S, $dest_serv_params) or die "connect: $!";
+ select (S); $| = 1; select (STDOUT); # Eliminate STDIO buffering
+
+ # The network connection is now open, lets fire up SSL
+
+ $ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+ Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL)
+ and die_if_ssl_error("ssl ctx set options");
+ $ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+ Net::SSLeay::set_fd($ssl, fileno(S)); # Must use fileno
+ $res = Net::SSLeay::connect($ssl) and die_if_ssl_error("ssl connect");
+ print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+ # Exchange data
+
+ $res = Net::SSLeay::write($ssl, $msg); # Perl knows how long $msg is
+ die_if_ssl_error("ssl write");
+ CORE::shutdown S, 1; # Half close --> No more output, sends EOF to server
+ $got = Net::SSLeay::read($ssl); # Perl returns undef on failure
+ die_if_ssl_error("ssl read");
+ print $got;
+
+ Net::SSLeay::free ($ssl); # Tear down connection
+ Net::SSLeay::CTX_free ($ctx);
+ close S;
+
+Following is a simple SSLeay echo server (non forking):
+
+ #!/usr/local/bin/perl -w
+ use Socket;
+ use Net::SSLeay qw(die_now die_if_ssl_error);
+ Net::SSLeay::load_error_strings();
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Net::SSLeay::randomize();
+
+ $our_ip = "\0\0\0\0"; # Bind to all interfaces
+ $port = 1235;
+ $sockaddr_template = 'S n a4 x8';
+ $our_serv_params = pack ($sockaddr_template, &AF_INET, $port, $our_ip);
+
+ socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
+ bind (S, $our_serv_params) or die "bind: $!";
+ listen (S, 5) or die "listen: $!";
+ $ctx = Net::SSLeay::CTX_new () or die_now("CTX_new ($ctx): $!");
+ Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL)
+ and die_if_ssl_error("ssl ctx set options");
+
+ # Following will ask password unless private key is not encrypted
+ Net::SSLeay::CTX_use_RSAPrivateKey_file ($ctx, 'plain-rsa.pem',
+ &Net::SSLeay::FILETYPE_PEM);
+ die_if_ssl_error("private key");
+ Net::SSLeay::CTX_use_certificate_file ($ctx, 'plain-cert.pem',
+ &Net::SSLeay::FILETYPE_PEM);
+ die_if_ssl_error("certificate");
+
+ while (1) {
+ print "Accepting connections...\n";
+ ($addr = accept (NS, S)) or die "accept: $!";
+ select (NS); $| = 1; select (STDOUT); # Piping hot!
+
+ ($af,$client_port,$client_ip) = unpack($sockaddr_template,$addr);
+ @inetaddr = unpack('C4',$client_ip);
+ print "$af connection from " .
+ join ('.', @inetaddr) . ":$client_port\n";
+
+ # We now have a network connection, lets fire up SSLeay...
+
+ $ssl = Net::SSLeay::new($ctx) or die_now("SSL_new ($ssl): $!");
+ Net::SSLeay::set_fd($ssl, fileno(NS));
+
+ $err = Net::SSLeay::accept($ssl) and die_if_ssl_error('ssl accept');
+ print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+ # Connected. Exchange some data.
+
+ $got = Net::SSLeay::read($ssl); # Returns undef on fail
+ die_if_ssl_error("ssl read");
+ print "Got `$got' (" . length ($got) . " chars)\n";
+
+ Net::SSLeay::write ($ssl, uc ($got)) or die "write: $!";
+ die_if_ssl_error("ssl write");
+
+ Net::SSLeay::free ($ssl); # Tear down connection
+ close NS;
+ }
+
+Yet another echo server. This one runs from /etc/inetd.conf so it avoids
+all the socket code overhead. Only caveat is opening rsa key file -
+it had better be without any encryption or else it will not know where
+to ask for the password. Note how STDIN and STDOUT are wired to SSL.
+
+ #!/usr/local/bin/perl
+ # /etc/inetd.conf
+ # ssltst stream tcp nowait root /path/to/server.pl server.pl
+ # /etc/services
+ # ssltst 1234/tcp
+
+ use Net::SSLeay qw(die_now die_if_ssl_error);
+ Net::SSLeay::load_error_strings();
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Net::SSLeay::randomize();
+
+ chdir '/key/dir' or die "chdir: $!";
+ $| = 1; # Piping hot!
+ open LOG, ">>/dev/console" or die "Can't open log file $!";
+ select LOG; print "server.pl started\n";
+
+ $ctx = Net::SSLeay::CTX_new() or die_now "CTX_new ($ctx) ($!)";
+ $ssl = Net::SSLeay::new($ctx) or die_now "new ($ssl) ($!)";
+ Net::SSLeay::set_options($ssl, &Net::SSLeay::OP_ALL)
+ and die_if_ssl_error("ssl set options");
+
+ # We get already open network connection from inetd, now we just
+ # need to attach SSLeay to STDIN and STDOUT
+ Net::SSLeay::set_rfd($ssl, fileno(STDIN));
+ Net::SSLeay::set_wfd($ssl, fileno(STDOUT));
+
+ Net::SSLeay::use_RSAPrivateKey_file ($ssl, 'plain-rsa.pem',
+ &Net::SSLeay::FILETYPE_PEM);
+ die_if_ssl_error("private key");
+ Net::SSLeay::use_certificate_file ($ssl, 'plain-cert.pem',
+ &Net::SSLeay::FILETYPE_PEM);
+ die_if_ssl_error("certificate");
+
+ Net::SSLeay::accept($ssl) and die_if_ssl_err("ssl accept: $!");
+ print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+ $got = Net::SSLeay::read($ssl);
+ die_if_ssl_error("ssl read");
+ print "Got `$got' (" . length ($got) . " chars)\n";
+
+ Net::SSLeay::write ($ssl, uc($got)) or die "write: $!";
+ die_if_ssl_error("ssl write");
+
+ Net::SSLeay::free ($ssl); # Tear down the connection
+ Net::SSLeay::CTX_free ($ctx);
+ close LOG;
+
+There are also a number of example/test programs in the examples directory:
+
+ sslecho.pl - A simple server, not unlike the one above
+ minicli.pl - Implements a client using low level SSLeay routines
+ sslcat.pl - Demonstrates using high level sslcat utility function
+ get_page.pl - Is a utility for getting html pages from secure servers
+ callback.pl - Demonstrates certificate verification and callback usage
+ stdio_bulk.pl - Does SSL over Unix pipes
+ ssl-inetd-serv.pl - SSL server that can be invoked from inetd.conf
+ httpd-proxy-snif.pl - Utility that allows you to see how a browser
+ sends https request to given server and what reply
+ it gets back (very educative :-)
+ makecert.pl - Creates a self signed cert (does not use this module)
+
+=head1 LIMITATIONS
+
+Net::SSLeay::read uses internal buffer of 32KB, thus no single read
+will return more. In practice one read returns much less, usually
+as much as fits in one network packet. To work around this,
+you should use a loop like this:
+
+ $reply = '';
+ while ($got = Net::SSLeay::read($ssl)) {
+ last if print_errs('SSL_read');
+ $reply .= $got;
+ }
+
+Although there is no built-in limit in Net::SSLeay::write, the network
+packet size limitation applies here as well, thus use:
+
+ $written = 0;
+
+ while ($written < length($message)) {
+ $written += Net::SSLeay::write($ssl, substr($message, $written));
+ last if print_errs('SSL_write');
+ }
+
+Or alternatively you can just use the following convinence functions:
+
+ Net::SSLeay::ssl_write_all($ssl, $message) or die "ssl write failure";
+ $got = Net::SSLeay::ssl_read_all($ssl) or die "ssl read failure";
+
+=head1 KNOWN BUGS AND CAVEATS
+
+Autoloader emits
+
+ Argument "xxx" isn't numeric in entersub at blib/lib/Net/SSLeay.pm'
+
+warning if die_if_ssl_error is made autoloadable. If you figure out why,
+drop me a line.
+
+Callback set using SSL_set_verify() does not appear to work. This may
+well be eay problem (e.g. see ssl/ssl_lib.c line 1029). Try using
+SSL_CTX_set_verify() instead and do not be surprised if even this stops
+working in future versions.
+
+Callback and certificate verification stuff is generally too little tested.
+
+Random numbers are not initialized randomly enough, especially if you
+do not have /dev/random and/or /dev/urandom (such as in Solaris
+platforms - but I've been suggested that cryptorand daemon from SUNski
+package solves this). In this case you should investigate third party
+software that can emulate these devices, e.g. by way of a named pipe
+to some program.
+
+Another gotcha with random number initialization is randomness
+depletion. This phenomenon, which has been extensively discussed in
+OpenSSL, Apache-SSL, and Apache-mod_ssl forums, can cause your
+script to block if you use /dev/random or to operate insecurely
+if you use /dev/urandom. What happens is that when too much
+randomness is drawn from the operating system's randomness pool
+then randomness can temporarily be unavailable. /dev/random solves
+this problem by waiting until enough randomness can be gathered - and
+this can take a long time since blocking reduces activity in the
+machine and less activity provides less random events: a vicious circle.
+/dev/urandom solves this dilemma more pragmatically by simply returning
+predictable "random" numbers. Some /dev/urandom emulation software
+however actually seems to implement /dev/random semantics. Caveat emptor.
+
+I've been pointed to two such daemons by Mik Firestone
+who has used them on Solaris 8
+
+ 1. Entropy Gathering Daemon (EGD) at http://www.lothar.com/tech/crypto/
+ 2. Pseudo-random number generating daemon (PRNGD) at
+ http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html
+
+If you are using the low level API functions to communicate with other
+SSL implementations, you would do well to call
+
+ Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL)
+ and die_if_ssl_error("ssl ctx set options");
+
+to cope with some well know bugs in some other SSL
+implementations. The high level API functions always set all known
+compatibility options.
+
+Sometimes sslcat (and the high level https functions that build on it)
+is too fast in signaling the EOF to legacy https servers. This causes
+the server to return empty page. To work around this problem you can
+set global variable
+
+ $Net::SSLeay::slowly = 1; # Add sleep so broken servers can keep up
+
+http/1.1 is not supported. Specifically this module does not know to
+issue or serve multiple http requests per connection. This is a serious
+short coming, but using SSL session cache on your server helps to
+alleviate the CPU load somewhat.
+
+As of version 1.09 many newer OpenSSL auxiliary functions were
+added (from REM_AUTOMATICALLY_GENERATED_1_09 onwards in SSLeay.xs).
+Unfortunately I have not had any opportunity to test these. Some of
+them are trivial enough that I believe they "just work", but others
+have rather complex interfaces with function pointers and all. In these
+cases you should proceed wit great caution.
+
+This module defaults to using OpenSSL automatic protocol negotiation
+code for automatically detecting the version of the SSL protocol
+that the other end talks. With most web servers this works just
+fine, but once in a while I get complaints from people that the module
+does not work with some web servers. Usually this can be solved
+by explicitly setting the protocol version, e.g.
+
+ $Net::SSLeay::ssl_version = 2; # Insist on SSLv2
+ $Net::SSLeay::ssl_version = 3; # Insist on SSLv3
+ $Net::SSLeay::ssl_version = 10; # Insist on TLSv1
+
+Although the autonegotiation is nice to have, the SSL standards
+do not formally specify any such mechanism. Most of the world has
+accepted the SSLeay/OpenSSL way of doing it as the de facto standard. But
+for the few that think differently, you have to explicitly speak
+the correct version. This is not really a bug, but rather a deficiency
+in the standards. If a site refuses to respond or sends back some
+nonsensical error codes (at SSL handshake level), try this option
+before mailing me.
+
+The high level API returns the certificate of the peer, thus allowing
+one to check what certificate was supplied. However, you will only be
+able to check the certificate after the fact, i.e. you already sent
+your form data by the time you find out that you did not trust them,
+oops.
+
+So, while being able to know the certificate after the fact is surely
+useful, the security minded would still choose to do the connection
+and certificate verification first and only after that exchange data
+with the site. Currently none of the high level API functions do
+this, thus you would have to program it using the low level API. A
+good place to start is to see how Net::SSLeay::http_cat() function
+is implemented.
+
+=head1 DIAGNOSTICS
+
+"Random number generator not seeded!!!"
+ This warning indicates that randomize() was not able to read
+ /dev/random or /dev/urandom, possibly because your system does not
+ have them or they are differently named. You can still use SSL, but
+ the encryption will not be as strong.
+
+"open_tcp_connection: destination host not found:`server' (port 123) ($!)"
+ Name lookup for host named `server' failed.
+
+"open_tcp_connection: failed `server', 123 ($!)"
+ The name was resolved, but establising the TCP connection failed.
+
+"msg 123: 1 - error:140770F8:SSL routines:SSL23_GET_SERVER_HELLO:unknown proto"
+ SSLeay error string. First (123) number is PID, second number (1) indicates
+ the position of the error message in SSLeay error stack. You often see
+ a pile of these messages as errors cascade.
+
+"msg 123: 1 - error:02001002::lib(2) :func(1) :reason(2)"
+ The same as above, but you didn't call load_error_strings() so SSLeay
+ couldn't verbosely explain the error. You can still find out what it
+ means with this command:
+
+ /usr/local/ssl/bin/ssleay errstr 02001002
+
+Password is being asked for private key
+ This is normal behaviour if your private key is encrypted. Either
+ you have to supply the password or you have to use unencrypted
+ private key. Scan OpenSSL.org for the FAQ that explains how to
+ do this (or just study examples/makecert.pl which is used
+ during `make test' to do just that).
+
+=head1 REPORTING BUGS AND SUPPORT
+
+Please see README for full bug reporting instructions. In general I do
+not answer for free stupid questions or questions where you did not
+do your home work.
+
+Commercial support for Net::SSLeay may be obtained from
+
+ Symlabs (netssleay@symlabs.com)
+ Tel: +351-214.222.630
+ Fax: +351-214.222.637
+
+=head1 VERSION
+
+This man page documents version 1.14, released on 25.3.2002.
+
+There are currently two perl modules for using OpenSSL C
+library: Net::SSLeay (maintaned by me) and SSLeay (maintained by OpenSSL
+team). This module is the Net::SSLeay variant.
+
+At the time of making this release, Eric's module was still quite
+sketchy and could not be used for real work, thus I felt motivated to
+make this maintenance release. This module is not planned to evolve to
+contain any further functionality, i.e. I will concentrate on just
+making a simple SSL connection over TCP socket. Presumably Eric's own
+module will offer full SSLeay API one day.
+
+This module uses OpenSSL-0.9.6c. It does not work with any earlier
+version and there is no guarantee that it will work with later
+versions either, though as long as C API does not change, it
+should. This module requires perl5.005, or 5.6.0 (or better?) though I
+believe it would build with any perl5.002 or newer.
+
+=head1 AUTHOR
+
+Sampo Kellomäki
+
+Please send bug reports to the above address. General questions should be
+sent either to me or to the mailing list (subscribe by sending mail
+to openssl-users-request@openssl.org or using web interface at
+http://www.openssl.org/support/).
+
+=head1 COPYRIGHT
+
+Copyright (c) 1996-2002 Sampo Kellomäki
+All Rights Reserved.
+
+Distribution and use of this module is under the same terms as the
+OpenSSL package itself (i.e. free, but mandatory attribution; NO
+WARRANTY). Please consult LICENSE file in the root of the OpenSSL
+distribution.
+
+While the source distribution of this perl module does not contain
+Eric's or OpenSSL's code, if you use this module you will use OpenSSL
+library. Please give Eric and OpenSSL team credit (as required by
+their licenses).
+
+And remember, you, and nobody else but you, are responsible for
+auditing this module and OpenSSL library for security problems,
+backdoors, and general suitability for your application.
+
+=head1 SEE ALSO
+
+ Net::SSLeay::Handle - File handle interface
+ ./Net_SSLeay/examples - Example servers and a clients
+ - Net::SSLeay.pm home
+ - Another module using OpenSSL
+ - OpenSSL source, documentation, etc
+ openssl-users-request@openssl.org - General OpenSSL mailing list
+ - SSL Draft specification
+ - HTTP specifications
+ - How to send password
+ - Entropy Gathering Daemon (EGD)
+
+ - pseudo-random number generating daemon (PRNGD)
+ perl(1)
+ perlref(1)
+ perllol(1)
+ perldoc ~openssl/doc/ssl/SSL_CTX_set_verify.pod
+
+=cut
+
+# ';
+
+### Some methods that are macros in C
+
+sub want_nothing { want(shift) == 1 }
+sub want_read { want(shift) == 2 }
+sub want_write { want(shift) == 3 }
+sub want_X509_lookup { want(shift) == 4 }
+
+###
+### Open TCP stream to given host and port, looking up the details
+### from system databases or DNS.
+###
+
+sub open_tcp_connection {
+ my ($dest_serv, $port) = @_;
+ my ($errs);
+
+ $port = getservbyname($port, 'tcp') unless $port =~ /^\d+$/;
+ my $dest_serv_ip = gethostbyname($dest_serv);
+ unless (defined($dest_serv_ip)) {
+ $errs = "$0 $$: open_tcp_connection: destination host not found:"
+ . " `$dest_serv' (port $port) ($!)\n";
+ warn $errs if $trace;
+ return wantarray ? (0, $errs) : 0;
+ }
+ my $sin = sockaddr_in($port, $dest_serv_ip);
+
+ warn "Opening connection to $dest_serv:$port (" .
+ inet_ntoa($dest_serv_ip) . ")" if $trace>2;
+
+ my $proto = getprotobyname('tcp');
+ if (socket (SSLCAT_S, &PF_INET(), &SOCK_STREAM(), $proto)) {
+ warn "next connect" if $trace>3;
+ if (CORE::connect (SSLCAT_S, $sin)) {
+ my $old_out = select (SSLCAT_S); $| = 1; select ($old_out);
+ warn "connected to $dest_serv, $port" if $trace>3;
+ return wantarray ? (1, undef) : 1; # Success
+ }
+ }
+ $errs = "$0 $$: open_tcp_connection: failed `$dest_serv', $port ($!)\n";
+ warn $errs if $trace;
+ close SSLCAT_S;
+ return wantarray ? (0, $errs) : 0; # Fail
+}
+
+### Open connection via standard web proxy, if one was defined
+### using set_proxy().
+
+sub open_proxy_tcp_connection {
+ my ($dest_serv, $port) = @_;
+
+ return open_tcp_connection($dest_serv, $port) if !$proxyhost;
+
+ warn "Connect via proxy: $proxyhost:$proxyport" if $trace>2;
+ my @ret = open_tcp_connection($proxyhost, $proxyport);
+ return wantarray ? @ret : 0 if !$ret[0]; # Connection fail
+
+ warn "Asking proxy to connect to $dest_serv:$port" if $trace>2;
+ print SSLCAT_S "CONNECT $dest_serv:$port HTTP/1.0$proxyauth$CRLF$CRLF";
+ my $line = ;
+ warn "Proxy response: $line" if $trace>2;
+
+ return wantarray ? (1,undef) : 1; # Success
+}
+
+###
+### read and write helpers that block
+###
+
+sub debug_read {
+ my ($replyr, $gotr) = @_;
+ my $vm = $trace>2 && $linux_debug ?
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
+ warn " got " . blength($$gotr) . ':'
+ . blength($$replyr) . " bytes (VM=$vm).\n" if $trace == 3;
+ warn " got `$$gotr' (" . blength($$gotr) . ':'
+ . blength($$replyr) . " bytes, VM=$vm)\n" if $trace>3;
+}
+
+sub ssl_read_all {
+ my ($ssl,$how_much) = @_;
+ $how_much = 2000000000 unless $how_much;
+ my ($got, $errs);
+ my $reply = '';
+
+ while ($how_much > 0) {
+ $got = Net::SSLeay::read($ssl,$how_much);
+ last if $errs = print_errs('SSL_read');
+ $how_much -= blength($got);
+ debug_read(\$reply, \$got) if $trace>1;
+ last if $got eq ''; # EOF
+ $reply .= $got;
+ }
+ return wantarray ? ($reply, $errs) : $reply;
+}
+
+sub ssl_write_all {
+ my $ssl = $_[0];
+ my ($data_ref, $errs);
+ if (ref $_[1]) {
+ $data_ref = $_[1];
+ } else {
+ $data_ref = \$_[1];
+ }
+ my ($wrote, $written, $to_write) = (0,0, blength($$data_ref));
+ my $vm = $trace>2 && $linux_debug ?
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
+ warn " write_all VM at entry=$vm\n" if $trace>2;
+ while ($to_write) {
+ #sleep 1; # *** DEBUG
+ warn "partial `$$data_ref'\n" if $trace>3;
+ $wrote = write_partial($ssl, $written, $to_write, $$data_ref);
+ $written += $wrote if defined $wrote;
+ $to_write -= $wrote if defined $wrote;
+ $vm = $trace>2 && $linux_debug ?
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
+ warn " written so far $wrote:$written bytes (VM=$vm)\n" if $trace>2;
+
+ $errs .= print_errs('SSL_write');
+ return (wantarray ? (undef, $errs) : undef) if $errs;
+ }
+ return wantarray ? ($written, $errs) : $written;
+}
+
+### from patch by Clinton Wong
+
+# ssl_read_until($ssl [, $delimit [, $max_length]])
+# if $delimit missing, use $/ if it exists, otherwise use \n
+# read until delimiter reached, up to $max_length chars if defined
+
+sub ssl_read_until ($;$$) {
+ my ($ssl,$delim, $max_length) = @_;
+ local $[;
+
+ # guess the delim string if missing
+ if ( ! defined $delim ) {
+ if ( defined $/ && length $/ ) { $delim = $/ }
+ else { $delim = "\n" } # Note: \n,$/ value depends on the platform
+ }
+ my $len_delim = length $delim;
+
+ my ($got);
+ my $reply = '';
+
+ # If we have OpenSSL 0.9.6a or later, we can use SSL_peek to
+ # speed things up.
+ # N.B. 0.9.6a has security problems, so the support for
+ # anything earlier than 0.9.6e will be dropped soon.
+ if (&Net::SSLeay::OPENSSL_VERSION_NUMBER >= 0x0090601f) {
+ $max_length = 2000000000 unless (defined $max_length);
+ my ($pending, $peek_length, $found, $done);
+ while (blength($reply) < $max_length and !$done) {
+ #Block if necessary until we get some data
+ $got = Net::SSLeay::peek($ssl,1);
+ last if print_errs('SSL_peek');
+
+ $pending = Net::SSLeay::pending($ssl) + blength($reply);
+ $peek_length = ($pending > $max_length) ? $max_length : $pending;
+ $peek_length -= blength($reply);
+ $got = Net::SSLeay::peek($ssl, $peek_length);
+ last if print_errs('SSL_peek');
+ $peek_length = blength($got);
+
+ #$found = index($got, $delim); # Old and broken
+
+ # the delimiter may be split across two gets, so we prepend
+ # a little from the last get onto this one before we check
+ # for a match
+ my $match;
+ if(blength($reply) >= blength($delim) - 1) {
+ #if what we've read so far is greater or equal
+ #in length of what we need to prepatch
+ $match = substr $reply, blength($reply) - blength($delim) + 1;
+ } else {
+ $match = $reply;
+ }
+
+ $match .= $got;
+ $found = index($match, $delim);
+
+ if ($found > -1) {
+ #$got = Net::SSLeay::read($ssl, $found+$len_delim);
+ #read up to the end of the delimiter
+ $got = Net::SSLeay::read($ssl,
+ $found + $len_delim
+ - ((blength $match) - (blength $got)));
+ $done = 1;
+ } else {
+ $got = Net::SSLeay::read($ssl, $peek_length);
+ $done = 1 if ($peek_length == $max_length - blength($reply));
+ }
+
+ last if print_errs('SSL_read');
+ debug_read(\$reply, \$got) if $trace>1;
+ last if $got eq '';
+ $reply .= $got;
+ }
+ } else {
+ while (!defined $max_length || length $reply < $max_length) {
+ $got = Net::SSLeay::read($ssl,1); # one by one
+ last if print_errs('SSL_read');
+ debug_read(\$reply, \$got) if $trace>1;
+ last if $got eq '';
+ $reply .= $got;
+ last if $len_delim
+ && substr($reply, blength($reply)-$len_delim) eq $delim;
+ }
+ }
+ return $reply;
+}
+
+# ssl_read_CRLF($ssl [, $max_length])
+sub ssl_read_CRLF ($;$) { ssl_read_until($_[0], $CRLF, $_[1]) }
+
+# ssl_write_CRLF($ssl, $message) writes $message and appends CRLF
+sub ssl_write_CRLF ($$) {
+ # the next line uses less memory but might use more network packets
+ return ssl_write_all($_[0], $_[1]) + ssl_write_all($_[0], $CRLF);
+
+ # the next few lines do the same thing at the expense of memory, with
+ # the chance that it will use less packets, since CRLF is in the original
+ # message and won't be sent separately.
+
+ #my $data_ref;
+ #if (ref $_[1]) { $data_ref = $_[1] }
+ # else { $data_ref = \$_[1] }
+ #my $message = $$data_ref . $CRLF;
+ #return ssl_write_all($_[0], \$message);
+}
+
+### Quickly print out with whom we're talking
+
+sub dump_peer_certificate ($) {
+ my ($ssl) = @_;
+ my $cert = get_peer_certificate($ssl);
+ return if print_errs('get_peer_certificate');
+ print "no cert defined\n" if !defined($cert);
+ # Cipher=NONE with empty cert fix
+ if (!defined($cert) || ($cert == 0)) {
+ warn "cert = `$cert'\n" if $trace;
+ return "Subject Name: undefined\nIssuer Name: undefined\n";
+ } else {
+ my $x = 'Subject Name: '
+ . X509_NAME_oneline(X509_get_subject_name($cert)) . "\n"
+ . 'Issuer Name: '
+ . X509_NAME_oneline(X509_get_issuer_name($cert)) . "\n";
+ Net::SSLeay::X509_free($cert);
+ return $x;
+ }
+}
+
+### Arrange some randomness for eay PRNG
+
+sub randomize (;$$) {
+ my ($rn_seed_file, $seed, $egd_path) = @_;
+ my $rnsf = defined($rn_seed_file) && -r $rn_seed_file;
+
+ $egd_path = $ENV{'EGD_PATH'} if $ENV{'EGD_PATH'};
+ $egd_path = '/tmp/entropy' unless $egd_path;
+
+ RAND_seed(rand() + $$); # Stir it with time and pid
+
+ unless ($rnsf || -r $Net::SSLeay::random_device || $seed || -S $egd_path) {
+ warn "Random number generator not seeded!!!" if $trace;
+ }
+
+ RAND_load_file($rn_seed_file, -s _) if $rnsf;
+ RAND_seed($seed) if $seed;
+ RAND_egd($egd_path) if -S $egd_path;
+ RAND_load_file($Net::SSLeay::random_device, $Net::SSLeay::how_random/8)
+ if -r $Net::SSLeay::random_device;
+}
+
+sub new_x_ctx {
+ if ($ssl_version == 2) { $ctx = CTX_v2_new(); }
+ elsif ($ssl_version == 3) { $ctx = CTX_v3_new(); }
+ elsif ($ssl_version == 10) { $ctx = CTX_tlsv1_new(); }
+ else { $ctx = CTX_new(); }
+ return $ctx;
+}
+
+###
+### Basic request - response primitive (don't use for https)
+###
+
+sub sslcat { # address, port, message, $crt, $key --> reply / (reply,errs,cert)
+ my ($dest_serv, $port, $out_message, $crt_path, $key_path) = @_;
+ my ($ctx, $ssl, $got, $errs, $written);
+
+ ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
+ return (wantarray ? (undef, $errs) : undef) unless $got;
+
+ ### Do SSL negotiation stuff
+
+ warn "Creating SSL $ssl_version context...\n" if $trace>2;
+ load_error_strings(); # Some bloat, but I'm after ease of use
+ SSLeay_add_ssl_algorithms(); # and debuggability.
+ randomize();
+
+ $ctx = new_x_ctx();
+ goto cleanup2 if $errs = print_errs('CTX_new') or !$ctx;
+
+ CTX_set_options($ctx, &OP_ALL);
+ goto cleanup2 if $errs = print_errs('CTX_set_options');
+
+ warn "Cert `$crt_path' given without key" if $crt_path && !$key_path;
+ set_cert_and_key($ctx, $crt_path, $key_path) if $crt_path;
+
+ warn "Creating SSL connection (context was '$ctx')...\n" if $trace>2;
+ $ssl = new($ctx);
+ goto cleanup if $errs = print_errs('SSL_new') or !$ssl;
+
+ warn "Setting fd (ctx $ctx, con $ssl)...\n" if $trace>2;
+ set_fd($ssl, fileno(SSLCAT_S));
+ goto cleanup if $errs = print_errs('set_fd');
+
+ warn "Entering SSL negotiation phase...\n" if $trace>2;
+
+ if ($trace>2) {
+ my $i = 0;
+ my $p = '';
+ my $cipher_list = 'Cipher list: ';
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
+ $cipher_list .= $p if $p;
+ do {
+ $i++;
+ $cipher_list .= ', ' . $p if $p;
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
+ } while $p;
+ $cipher_list .= '\n';
+ warn $cipher_list;
+ }
+
+ $got = Net::SSLeay::connect($ssl);
+ warn "SSLeay connect returned $got\n" if $trace>2;
+ goto cleanup if $errs = print_errs('SSL_connect');
+
+ my $server_cert = get_peer_certificate($ssl);
+ print_errs('get_peer_certificate');
+ if ($trace>1) {
+ warn "Cipher `" . get_cipher($ssl) . "'\n";
+ print_errs('get_ciper');
+ warn dump_peer_certificate($ssl);
+ }
+
+ ### Connected. Exchange some data (doing repeated tries if necessary).
+
+ warn "sslcat $$: sending " . blength($out_message) . " bytes...\n"
+ if $trace==3;
+ warn "sslcat $$: sending `$out_message' (" . blength($out_message)
+ . " bytes)...\n" if $trace>3;
+ ($written, $errs) = ssl_write_all($ssl, $out_message);
+ goto cleanup unless $written;
+
+ sleep $slowly if $slowly; # Closing too soon can abort broken servers
+ CORE::shutdown SSLCAT_S, 1; # Half close --> No more output, send EOF to server
+
+ warn "waiting for reply...\n" if $trace>2;
+ ($got, $errs) = ssl_read_all($ssl);
+ warn "Got " . blength($got) . " bytes.\n" if $trace==3;
+ warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
+
+cleanup:
+ free ($ssl);
+ $errs .= print_errs('SSL_free');
+cleanup2:
+ CTX_free ($ctx);
+ $errs .= print_errs('CTX_free');
+ close SSLCAT_S;
+ return wantarray ? ($got, $errs, $server_cert) : $got;
+}
+
+###
+### Basic request - response primitive, this is different from sslcat
+### because this does not shutdown the connection.
+###
+
+sub https_cat { # address, port, message --> returns reply / (reply,errs,cert)
+ my ($dest_serv, $port, $out_message, $crt_path, $key_path) = @_;
+ my ($ctx, $ssl, $got, $errs, $written);
+
+ ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
+ return (wantarray ? (undef, $errs) : undef) unless $got;
+
+ ### Do SSL negotiation stuff
+
+ warn "Creating SSL $ssl_version context...\n" if $trace>2;
+ load_error_strings(); # Some bloat, but I'm after ease of use
+ SSLeay_add_ssl_algorithms(); # and debuggability.
+ randomize();
+
+ $ctx = new_x_ctx();
+ goto cleanup2 if $errs = print_errs('CTX_new') or !$ctx;
+
+ CTX_set_options($ctx, &OP_ALL);
+ goto cleanup2 if $errs = print_errs('CTX_set_options');
+
+ warn "Cert `$crt_path' given without key" if $crt_path && !$key_path;
+ set_cert_and_key($ctx, $crt_path, $key_path) if $crt_path;
+
+ warn "Creating SSL connection (context was '$ctx')...\n" if $trace>2;
+ $ssl = new($ctx);
+ goto cleanup if $errs = print_errs('SSL_new') or !$ssl;
+
+ warn "Setting fd (ctx $ctx, con $ssl)...\n" if $trace>2;
+ set_fd($ssl, fileno(SSLCAT_S));
+ goto cleanup if $errs = print_errs('set_fd');
+
+ warn "Entering SSL negotiation phase...\n" if $trace>2;
+
+ if ($trace>2) {
+ my $i = 0;
+ my $p = '';
+ my $cipher_list = 'Cipher list: ';
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
+ $cipher_list .= $p if $p;
+ do {
+ $i++;
+ $cipher_list .= ', ' . $p if $p;
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
+ } while $p;
+ $cipher_list .= '\n';
+ warn $cipher_list;
+ }
+
+ $got = Net::SSLeay::connect($ssl);
+ warn "SSLeay connect failed" if $trace>2 && $got==0;
+ goto cleanup if $errs = print_errs('SSL_connect');
+
+ my $server_cert = get_peer_certificate($ssl);
+ print_errs('get_peer_certificate');
+ if ($trace>1) {
+ warn "Cipher `" . get_cipher($ssl) . "'\n";
+ print_errs('get_ciper');
+ warn dump_peer_certificate($ssl);
+ }
+
+ ### Connected. Exchange some data (doing repeated tries if necessary).
+
+ warn "sslcat $$: sending " . blength($out_message) . " bytes...\n"
+ if $trace==3;
+ warn "sslcat $$: sending `$out_message' (" . blength($out_message)
+ . " bytes)...\n" if $trace>3;
+ ($written, $errs) = ssl_write_all($ssl, $out_message);
+ goto cleanup unless $written;
+
+ warn "waiting for reply...\n" if $trace>2;
+ ($got, $errs) = ssl_read_all($ssl);
+ warn "Got " . blength($got) . " bytes.\n" if $trace==3;
+ warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
+
+cleanup:
+ free ($ssl);
+ $errs .= print_errs('SSL_free');
+cleanup2:
+ CTX_free ($ctx);
+ $errs .= print_errs('CTX_free');
+ close SSLCAT_S;
+ return wantarray ? ($got, $errs, $server_cert) : $got;
+}
+
+###
+### Easy set up of private key and certificate
+###
+
+sub set_cert_and_key ($$$) {
+ my ($ctx, $cert_path, $key_path) = @_;
+ my $errs = '';
+ # Following will ask password unless private key is not encrypted
+ CTX_use_RSAPrivateKey_file ($ctx, $key_path, &FILETYPE_PEM);
+ $errs .= print_errs("private key `$key_path' ($!)");
+ CTX_use_certificate_file ($ctx, $cert_path, &FILETYPE_PEM);
+ $errs .= print_errs("certificate `$cert_path' ($!)");
+ return wantarray ? (undef, $errs) : ($errs eq '');
+}
+
+### Old deprecated API
+
+sub set_server_cert_and_key ($$$) { &set_cert_and_key }
+
+### Set up to use web proxy
+
+sub set_proxy ($$;**) {
+ ($proxyhost, $proxyport, $proxyuser, $proxypass) = @_;
+ require MIME::Base64 if $proxyuser;
+ $proxyauth = $CRLF . 'Proxy-authorization: Basic '
+ . MIME::Base64::encode("$proxyuser:$proxypass", '')
+ if $proxyuser;
+}
+
+###
+### Easy https manipulation routines
+###
+
+sub make_form {
+ my (@fields) = @_;
+ my $form;
+ while (@fields) {
+ my ($name, $data) = (shift(@fields), shift(@fields));
+ $data =~ s/([^\w\-.\@\$ ])/sprintf("%%%2.2x",ord($1))/gse;
+ $data =~ tr[ ][+];
+ $form .= "$name=$data&";
+ }
+ chop $form;
+ return $form;
+}
+
+sub make_headers {
+ my (@headers) = @_;
+ my $headers;
+ while (@headers) {
+ my $header = shift(@headers);
+ my $value = shift(@headers);
+ $header =~ s/:$//;
+ $value =~ s/\x0d?\x0a$//; # because we add it soon, see below
+ $headers .= "$header: $value$CRLF";
+ }
+ return $headers;
+}
+
+sub do_https3 {
+ my ($method, $site, $port, $path, $headers,
+ $content, $mime_type, $crt_path, $key_path) = @_;
+ my ($response, $page, $h,$v);
+
+ if ($content) {
+ $mime_type = "application/x-www-form-urlencoded" unless $mime_type;
+ my $len = blength($content);
+ $content = "Content-Type: $mime_type$CRLF"
+ . "Content-Length: $len$CRLF$CRLF$content";
+ } else {
+ $content = "$CRLF$CRLF";
+ }
+ my $req = "$method $path HTTP/1.0$CRLF"."Host: $site:$port$CRLF"
+ . (defined $headers ? $headers : '') . "Accept: */*$CRLF$content";
+
+ my ($http, $errs, $server_cert)
+ = https_cat($site, $port, $req, $crt_path, $key_path);
+ return (undef, "HTTP/1.0 900 NET OR SSL ERROR$CRLF$CRLF$errs") if $errs;
+
+ $http = '' if !defined $http;
+ ($headers, $page) = split /\s?\n\s?\n/, $http, 2;
+ ($response, $headers) = split /\s?\n/, $headers, 2;
+ return ($page, $response, $headers, $server_cert);
+}
+
+### do_https2() is a legacy version in the sense that it is unable
+### to return all instances of duplicate headers.
+
+sub do_https2 {
+ my ($page, $response, $headers) = &do_https3;
+ return ($page, $response,
+ map( { ($h,$v)=/^(\S+)\:\s*(.*)$/; (uc($h),$v); }
+ split(/\s?\n/, $headers)
+ )
+ );
+}
+
+### Returns headers as a hash where multiple instances of same header
+### are handled correctly.
+
+sub do_https4 {
+ my ($page, $response, $headers) = &do_https3;
+ my %hr = ();
+ for my $hh (split /\s?\n/, $headers) {
+ my ($h,$v)=/^(\S+)\:\s*(.*)$/;
+ push @{$hr{uc($h)}}, $v;
+ }
+ return ($page, $response, \%hr);
+}
+
+sub get_https ($$$;***) { do_https2(GET => @_) }
+sub post_https ($$$;***) { do_https2(POST => @_) }
+sub put_https ($$$;***) { do_https2(PUT => @_) }
+sub head_https ($$$;***) { do_https2(HEAD => @_) }
+
+sub get_https3 ($$$;***) { do_https3(GET => @_) }
+sub post_https3 ($$$;***) { do_https3(POST => @_) }
+sub put_https3 ($$$;***) { do_https3(PUT => @_) }
+sub head_https3 ($$$;***) { do_https3(HEAD => @_) }
+
+sub get_https4 ($$$;***) { do_https4(GET => @_) }
+sub post_https4 ($$$;***) { do_https4(POST => @_) }
+sub put_https4 ($$$;***) { do_https4(PUT => @_) }
+sub head_https4 ($$$;***) { do_https4(HEAD => @_) }
+
+### Legacy
+# ($page, $respone_or_err, %headers) = do_https(...);
+
+sub do_https {
+ my ($site, $port, $path, $method, $headers,
+ $content, $mime_type, $crt_path, $key_path) = @_;
+
+ do_https2($method, $site, $port, $path, $headers,
+ $content, $mime_type, $crt_path, $key_path);
+}
+
+1;
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/SSLeay.xs b/~downloads/files/tmp/Net_SSLeay.pm-1.22/SSLeay.xs
new file mode 100644
index 0000000..f58bf07
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/SSLeay.xs
@@ -0,0 +1,3421 @@
+/* SSLeay.xs - Perl module for using Eric Young's implementation of SSL
+ *
+ * Copyright (c) 1996-2002 Sampo Kellomaki
+ * All Rights Reserved.
+ *
+ * 19.6.1998, Maintenance release to sync with SSLeay-0.9.0, --Sampo
+ * 24.6.1998, added write_partial to support ssl_write_all in more
+ * memory efficient way. --Sampo
+ * 8.7.1998, Added SSL_(CTX)?_set_options and associated constants.
+ * 31.3.1999, Tracking OpenSSL-0.9.2b changes, dropping support for
+ * earlier versions
+ * 30.7.1999, Tracking OpenSSL-0.9.3a changes, --Sampo
+ * 7.4.2001, OpenSSL-0.9.6a update, --Sampo
+ * 18.4.2001, added TLSv1 support by Stephen C. Koehler
+ * , version 1.07, --Sampo
+ * 25.4.2001, applied 64 bit fixes by Marko Asplund --Sampo
+ * 16.7.2001, applied Win filehandle patch from aspa, added
+ * SSL_*_methods --Sampo
+ * 25.9.2001, added a big pile of methods by automatically grepping and diffing
+ * openssl headers and my module --Sampo
+ * 17.4.2002, applied patch to fix CTX_set_default_passwd_cb() contributed
+ * by Timo Kujala , --Sampo
+ * 17.5.2002, Added BIO_s_mem, BIO_new, BIO_free, BIO_write, BIO_read ,
+ * BIO_eof, BIO_pending, BIO_wpending, X509_NAME_get_text_by_NID,
+ * RSA_generate_key, BIO_new_file
+ * Fixed problem with return value from verify callback being
+ * ignored.
+ * Fixed a problem with CTX_set_tmp_rsa and CTX_set_tmp_dh
+ * args incorrect
+ * --mikem@open.com_.au
+ * 10.8.2002, Added SSL_peek patch to ssl_read_until from
+ * Peter Behroozi --Sampo
+ * 21.8.2002, Added SESSION_get_master_key, SSL_get_client_random, SSL_get_server_random
+ * --mikem@open.com_.au
+ * 2.9.2002, Added SSL_CTX_get_cert_store, X509_STORE_add_cert, X509_STORE_add_crl
+ * X509_STORE_set_flags, X509_load_cert_file, X509_load_crl_file
+ * X509_load_cert_crl_file, PEM_read_bio_X509_CRL
+ * constants for X509_V_FLAG_*
+ * --mikem@open.com_.au
+ * 6.9.2002, applied Mike's patch and fixed X509_STORE_* to X509_STORE_CTX_*
+ * --Sampo
+ *
+ * $Id: SSLeay.xs,v 1.12 2002/11/05 05:39:02 sampo Exp $
+ *
+ * The distribution and use of this module are subject to the conditions
+ * listed in LICENSE file at the root of OpenSSL-0.9.6b
+ * distribution (i.e. free, but mandatory attribution and NO WARRANTY).
+
+Removed, perhaps permanently?
+
+int
+SSL_add_session(ctx,ses)
+ SSL_CTX * ctx
+ SSL_SESSION * ses
+
+int
+SSL_remove_session(ctx,ses)
+ SSL_CTX * ctx
+ SSL_SESSION * ses
+
+void
+SSL_flush_sessions(ctx,tm)
+ SSL_CTX * ctx
+ long tm
+
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#ifdef __cplusplus
+}
+#endif
+
+/* OpenSSL-0.9.3a has some strange warning about this in
+ * openssl/des.h
+ */
+#undef _
+
+#include
+#include
+#include
+#include
+#include
+#include /* openssl-0.9.6a forgets to include this */
+#include /* openssl-SNAP-20020227 does not automatically include this */
+/* Debugging output */
+
+#if 0
+#define PR(s) printf(s);
+#define PRN(s,n) printf("'%s' (%d)\n",s,n);
+#define SEX_DEBUG 1
+#else
+#define PR(s)
+#define PRN(s,n)
+#undef SEX_DEBUG
+#endif
+
+static int
+not_here(s)
+char *s;
+{
+ croak("%s not implemented on this architecture", s);
+ return -1;
+}
+
+/* xsub automagically generated constant evaluator function */
+
+static double
+constant(char* name)
+{
+ errno = 0;
+ switch (*name) {
+ case 'A':
+ if (strEQ(name, "AT_MD5_WITH_RSA_ENCRYPTION"))
+#ifdef SSL_AT_MD5_WITH_RSA_ENCRYPTION
+ return SSL_AT_MD5_WITH_RSA_ENCRYPTION;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'B':
+ break;
+ case 'C':
+ if (strEQ(name, "CB_ACCEPT_EXIT"))
+#ifdef SSL_CB_ACCEPT_EXIT
+ return SSL_CB_ACCEPT_EXIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CB_ACCEPT_LOOP"))
+#ifdef SSL_CB_ACCEPT_LOOP
+ return SSL_CB_ACCEPT_LOOP;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CB_CONNECT_EXIT"))
+#ifdef SSL_CB_CONNECT_EXIT
+ return SSL_CB_CONNECT_EXIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CB_CONNECT_LOOP"))
+#ifdef SSL_CB_CONNECT_LOOP
+ return SSL_CB_CONNECT_LOOP;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_DES_192_EDE3_CBC_WITH_MD5"))
+#ifdef SSL_CK_DES_192_EDE3_CBC_WITH_MD5
+ return SSL_CK_DES_192_EDE3_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_DES_192_EDE3_CBC_WITH_SHA"))
+#ifdef SSL_CK_DES_192_EDE3_CBC_WITH_SHA
+ return SSL_CK_DES_192_EDE3_CBC_WITH_SHA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_DES_64_CBC_WITH_MD5"))
+#ifdef SSL_CK_DES_64_CBC_WITH_MD5
+ return SSL_CK_DES_64_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_DES_64_CBC_WITH_SHA"))
+#ifdef SSL_CK_DES_64_CBC_WITH_SHA
+ return SSL_CK_DES_64_CBC_WITH_SHA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_DES_64_CFB64_WITH_MD5_1"))
+#ifdef SSL_CK_DES_64_CFB64_WITH_MD5_1
+ return SSL_CK_DES_64_CFB64_WITH_MD5_1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_IDEA_128_CBC_WITH_MD5"))
+#ifdef SSL_CK_IDEA_128_CBC_WITH_MD5
+ return SSL_CK_IDEA_128_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_NULL"))
+#ifdef SSL_CK_NULL
+ return SSL_CK_NULL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_NULL_WITH_MD5"))
+#ifdef SSL_CK_NULL_WITH_MD5
+ return SSL_CK_NULL_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_RC2_128_CBC_EXPORT40_WITH_MD5"))
+#ifdef SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5
+ return SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_RC2_128_CBC_WITH_MD5"))
+#ifdef SSL_CK_RC2_128_CBC_WITH_MD5
+ return SSL_CK_RC2_128_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_RC4_128_EXPORT40_WITH_MD5"))
+#ifdef SSL_CK_RC4_128_EXPORT40_WITH_MD5
+ return SSL_CK_RC4_128_EXPORT40_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CK_RC4_128_WITH_MD5"))
+#ifdef SSL_CK_RC4_128_WITH_MD5
+ return SSL_CK_RC4_128_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CLIENT_VERSION"))
+#ifdef SSL_CLIENT_VERSION
+ return SSL_CLIENT_VERSION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "CT_X509_CERTIFICATE"))
+#ifdef SSL_CT_X509_CERTIFICATE
+ return SSL_CT_X509_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'D':
+ break;
+ case 'E':
+ if (strEQ(name, "ERROR_NONE"))
+#ifdef SSL_ERROR_NONE
+ return SSL_ERROR_NONE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_SSL"))
+#ifdef SSL_ERROR_SSL
+ return SSL_ERROR_SSL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_SYSCALL"))
+#ifdef SSL_ERROR_SYSCALL
+ return SSL_ERROR_SYSCALL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_WANT_CONNECT"))
+#ifdef SSL_ERROR_WANT_CONNECT
+ return SSL_ERROR_WANT_CONNECT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_WANT_READ"))
+#ifdef SSL_ERROR_WANT_READ
+ return SSL_ERROR_WANT_READ;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_WANT_WRITE"))
+#ifdef SSL_ERROR_WANT_WRITE
+ return SSL_ERROR_WANT_WRITE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_WANT_X509_LOOKUP"))
+#ifdef SSL_ERROR_WANT_X509_LOOKUP
+ return SSL_ERROR_WANT_X509_LOOKUP;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ERROR_ZERO_RETURN"))
+#ifdef SSL_ERROR_ZERO_RETURN
+ return SSL_ERROR_ZERO_RETURN;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'F':
+ if (strEQ(name, "FILETYPE_ASN1"))
+#ifdef SSL_FILETYPE_ASN1
+ return SSL_FILETYPE_ASN1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "FILETYPE_PEM"))
+#ifdef SSL_FILETYPE_PEM
+ return SSL_FILETYPE_PEM;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_CLIENT_CERTIFICATE"))
+#ifdef SSL_F_CLIENT_CERTIFICATE
+ return SSL_F_CLIENT_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_CLIENT_HELLO"))
+#ifdef SSL_F_CLIENT_HELLO
+ return SSL_F_CLIENT_HELLO;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_CLIENT_MASTER_KEY"))
+#ifdef SSL_F_CLIENT_MASTER_KEY
+ return SSL_F_CLIENT_MASTER_KEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_D2I_SSL_SESSION"))
+#ifdef SSL_F_D2I_SSL_SESSION
+ return SSL_F_D2I_SSL_SESSION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_GET_CLIENT_FINISHED"))
+#ifdef SSL_F_GET_CLIENT_FINISHED
+ return SSL_F_GET_CLIENT_FINISHED;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_GET_CLIENT_HELLO"))
+#ifdef SSL_F_GET_CLIENT_HELLO
+ return SSL_F_GET_CLIENT_HELLO;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_GET_CLIENT_MASTER_KEY"))
+#ifdef SSL_F_GET_CLIENT_MASTER_KEY
+ return SSL_F_GET_CLIENT_MASTER_KEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_GET_SERVER_FINISHED"))
+#ifdef SSL_F_GET_SERVER_FINISHED
+ return SSL_F_GET_SERVER_FINISHED;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_GET_SERVER_HELLO"))
+#ifdef SSL_F_GET_SERVER_HELLO
+ return SSL_F_GET_SERVER_HELLO;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_GET_SERVER_VERIFY"))
+#ifdef SSL_F_GET_SERVER_VERIFY
+ return SSL_F_GET_SERVER_VERIFY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_I2D_SSL_SESSION"))
+#ifdef SSL_F_I2D_SSL_SESSION
+ return SSL_F_I2D_SSL_SESSION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_READ_N"))
+#ifdef SSL_F_READ_N
+ return SSL_F_READ_N;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_REQUEST_CERTIFICATE"))
+#ifdef SSL_F_REQUEST_CERTIFICATE
+ return SSL_F_REQUEST_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SERVER_HELLO"))
+#ifdef SSL_F_SERVER_HELLO
+ return SSL_F_SERVER_HELLO;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ACCEPT"))
+#ifdef SSL_F_SSL_ACCEPT
+ return SSL_F_SSL_ACCEPT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_CERT_NEW"))
+#ifdef SSL_F_SSL_CERT_NEW
+ return SSL_F_SSL_CERT_NEW;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_CONNECT"))
+#ifdef SSL_F_SSL_CONNECT
+ return SSL_F_SSL_CONNECT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_DES_CBC_INIT"))
+#ifdef SSL_F_SSL_ENC_DES_CBC_INIT
+ return SSL_F_SSL_ENC_DES_CBC_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_DES_CFB_INIT"))
+#ifdef SSL_F_SSL_ENC_DES_CFB_INIT
+ return SSL_F_SSL_ENC_DES_CFB_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_DES_EDE3_CBC_INIT"))
+#ifdef SSL_F_SSL_ENC_DES_EDE3_CBC_INIT
+ return SSL_F_SSL_ENC_DES_EDE3_CBC_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_IDEA_CBC_INIT"))
+#ifdef SSL_F_SSL_ENC_IDEA_CBC_INIT
+ return SSL_F_SSL_ENC_IDEA_CBC_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_NULL_INIT"))
+#ifdef SSL_F_SSL_ENC_NULL_INIT
+ return SSL_F_SSL_ENC_NULL_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_RC2_CBC_INIT"))
+#ifdef SSL_F_SSL_ENC_RC2_CBC_INIT
+ return SSL_F_SSL_ENC_RC2_CBC_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_ENC_RC4_INIT"))
+#ifdef SSL_F_SSL_ENC_RC4_INIT
+ return SSL_F_SSL_ENC_RC4_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_GET_NEW_SESSION"))
+#ifdef SSL_F_SSL_GET_NEW_SESSION
+ return SSL_F_SSL_GET_NEW_SESSION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_MAKE_CIPHER_LIST"))
+#ifdef SSL_F_SSL_MAKE_CIPHER_LIST
+ return SSL_F_SSL_MAKE_CIPHER_LIST;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_NEW"))
+#ifdef SSL_F_SSL_NEW
+ return SSL_F_SSL_NEW;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_READ"))
+#ifdef SSL_F_SSL_READ
+ return SSL_F_SSL_READ;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_RSA_PRIVATE_DECRYPT"))
+#ifdef SSL_F_SSL_RSA_PRIVATE_DECRYPT
+ return SSL_F_SSL_RSA_PRIVATE_DECRYPT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_RSA_PUBLIC_ENCRYPT"))
+#ifdef SSL_F_SSL_RSA_PUBLIC_ENCRYPT
+ return SSL_F_SSL_RSA_PUBLIC_ENCRYPT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_SESSION_NEW"))
+#ifdef SSL_F_SSL_SESSION_NEW
+ return SSL_F_SSL_SESSION_NEW;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_SESSION_PRINT_FP"))
+#ifdef SSL_F_SSL_SESSION_PRINT_FP
+ return SSL_F_SSL_SESSION_PRINT_FP;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_SET_CERTIFICATE"))
+#ifdef SSL_F_SSL_SET_CERTIFICATE
+ return SSL_F_SSL_SET_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_SET_FD"))
+#ifdef SSL_F_SSL_SET_FD
+ return SSL_F_SSL_SET_FD;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_SET_RFD"))
+#ifdef SSL_F_SSL_SET_RFD
+ return SSL_F_SSL_SET_RFD;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_SET_WFD"))
+#ifdef SSL_F_SSL_SET_WFD
+ return SSL_F_SSL_SET_WFD;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_STARTUP"))
+#ifdef SSL_F_SSL_STARTUP
+ return SSL_F_SSL_STARTUP;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_CERTIFICATE"))
+#ifdef SSL_F_SSL_USE_CERTIFICATE
+ return SSL_F_SSL_USE_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_CERTIFICATE_ASN1"))
+#ifdef SSL_F_SSL_USE_CERTIFICATE_ASN1
+ return SSL_F_SSL_USE_CERTIFICATE_ASN1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_CERTIFICATE_FILE"))
+#ifdef SSL_F_SSL_USE_CERTIFICATE_FILE
+ return SSL_F_SSL_USE_CERTIFICATE_FILE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_PRIVATEKEY"))
+#ifdef SSL_F_SSL_USE_PRIVATEKEY
+ return SSL_F_SSL_USE_PRIVATEKEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_PRIVATEKEY_ASN1"))
+#ifdef SSL_F_SSL_USE_PRIVATEKEY_ASN1
+ return SSL_F_SSL_USE_PRIVATEKEY_ASN1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_PRIVATEKEY_FILE"))
+#ifdef SSL_F_SSL_USE_PRIVATEKEY_FILE
+ return SSL_F_SSL_USE_PRIVATEKEY_FILE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_RSAPRIVATEKEY"))
+#ifdef SSL_F_SSL_USE_RSAPRIVATEKEY
+ return SSL_F_SSL_USE_RSAPRIVATEKEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_RSAPRIVATEKEY_ASN1"))
+#ifdef SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1
+ return SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_SSL_USE_RSAPRIVATEKEY_FILE"))
+#ifdef SSL_F_SSL_USE_RSAPRIVATEKEY_FILE
+ return SSL_F_SSL_USE_RSAPRIVATEKEY_FILE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "F_WRITE_PENDING"))
+#ifdef SSL_F_WRITE_PENDING
+ return SSL_F_WRITE_PENDING;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'G':
+ break;
+ case 'H':
+ break;
+ case 'I':
+ break;
+ case 'J':
+ break;
+ case 'K':
+ break;
+ case 'L':
+ break;
+ case 'M':
+ if (strEQ(name, "MAX_MASTER_KEY_LENGTH_IN_BITS"))
+#ifdef SSL_MAX_MASTER_KEY_LENGTH_IN_BITS
+ return SSL_MAX_MASTER_KEY_LENGTH_IN_BITS;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MAX_RECORD_LENGTH_2_BYTE_HEADER"))
+#ifdef SSL_MAX_RECORD_LENGTH_2_BYTE_HEADER
+ return SSL_MAX_RECORD_LENGTH_2_BYTE_HEADER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MAX_RECORD_LENGTH_3_BYTE_HEADER"))
+#ifdef SSL_MAX_RECORD_LENGTH_3_BYTE_HEADER
+ return SSL_MAX_RECORD_LENGTH_3_BYTE_HEADER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MAX_SSL_SESSION_ID_LENGTH_IN_BYTES"))
+#ifdef SSL_MAX_SSL_SESSION_ID_LENGTH_IN_BYTES
+ return SSL_MAX_SSL_SESSION_ID_LENGTH_IN_BYTES;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MIN_RSA_MODULUS_LENGTH_IN_BYTES"))
+#ifdef SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES
+ return SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_CLIENT_CERTIFICATE"))
+#ifdef SSL_MT_CLIENT_CERTIFICATE
+ return SSL_MT_CLIENT_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_CLIENT_FINISHED"))
+#ifdef SSL_MT_CLIENT_FINISHED
+ return SSL_MT_CLIENT_FINISHED;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_CLIENT_HELLO"))
+#ifdef SSL_MT_CLIENT_HELLO
+ return SSL_MT_CLIENT_HELLO;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_CLIENT_MASTER_KEY"))
+#ifdef SSL_MT_CLIENT_MASTER_KEY
+ return SSL_MT_CLIENT_MASTER_KEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_ERROR"))
+#ifdef SSL_MT_ERROR
+ return SSL_MT_ERROR;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_REQUEST_CERTIFICATE"))
+#ifdef SSL_MT_REQUEST_CERTIFICATE
+ return SSL_MT_REQUEST_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_SERVER_FINISHED"))
+#ifdef SSL_MT_SERVER_FINISHED
+ return SSL_MT_SERVER_FINISHED;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_SERVER_HELLO"))
+#ifdef SSL_MT_SERVER_HELLO
+ return SSL_MT_SERVER_HELLO;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "MT_SERVER_VERIFY"))
+#ifdef SSL_MT_SERVER_VERIFY
+ return SSL_MT_SERVER_VERIFY;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'N':
+ if (strEQ(name, "NOTHING"))
+#ifdef SSL_NOTHING
+ return SSL_NOTHING;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'O':
+ if (strEQ(name, "OPENSSL_VERSION_NUMBER"))
+#ifdef OPENSSL_VERSION_NUMBER
+ return OPENSSL_VERSION_NUMBER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_MICROSOFT_SESS_ID_BUG"))
+#ifdef SSL_OP_MICROSOFT_SESS_ID_BUG
+ return SSL_OP_MICROSOFT_SESS_ID_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NETSCAPE_CHALLENGE_BUG"))
+#ifdef SSL_OP_NETSCAPE_CHALLENGE_BUG
+ return SSL_OP_NETSCAPE_CHALLENGE_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG"))
+#ifdef SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
+ return SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_SSLREF2_REUSE_CERT_TYPE_BUG"))
+#ifdef SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG
+ return SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_MICROSOFT_BIG_SSLV3_BUFFER"))
+#ifdef SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER
+ return SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_MSIE_SSLV2_RSA_PADDING"))
+#ifdef SSL_OP_MSIE_SSLV2_RSA_PADDING
+ return SSL_OP_MSIE_SSLV2_RSA_PADDING;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_SSLEAY_080_CLIENT_DH_BUG"))
+#ifdef SSL_OP_SSLEAY_080_CLIENT_DH_BUG
+ return SSL_OP_SSLEAY_080_CLIENT_DH_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_TLS_D5_BUG"))
+#ifdef SSL_OP_TLS_D5_BUG
+ return SSL_OP_TLS_D5_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_SINGLE_DH_USE"))
+#ifdef SSL_OP_SINGLE_DH_USE
+ return SSL_OP_SINGLE_DH_USE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_EPHEMERAL_RSA"))
+#ifdef SSL_OP_EPHEMERAL_RSA
+ return SSL_OP_EPHEMERAL_RSA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NETSCAPE_CA_DN_BUG"))
+#ifdef SSL_OP_NETSCAPE_CA_DN_BUG
+ return SSL_OP_NETSCAPE_CA_DN_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NON_EXPORT_FIRST"))
+#ifdef SSL_OP_NON_EXPORT_FIRST
+ return SSL_OP_NON_EXPORT_FIRST;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG"))
+#ifdef SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG
+ return SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NO_SSLv2"))
+#ifdef SSL_OP_NO_SSLv2
+ return SSL_OP_NO_SSLv2;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NO_SSLv3"))
+#ifdef SSL_OP_NO_SSLv3
+ return SSL_OP_NO_SSLv3;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_NO_TLSv1"))
+#ifdef SSL_OP_NO_TLSv1
+ return SSL_OP_NO_TLSv1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "OP_ALL"))
+#ifdef SSL_OP_ALL
+ return SSL_OP_ALL;
+#else
+ goto not_there;
+#endif
+
+ case 'P':
+ if (strEQ(name, "PE_BAD_CERTIFICATE"))
+#ifdef SSL_PE_BAD_CERTIFICATE
+ return SSL_PE_BAD_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "PE_NO_CERTIFICATE"))
+#ifdef SSL_PE_NO_CERTIFICATE
+ return SSL_PE_NO_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "PE_NO_CIPHER"))
+#ifdef SSL_PE_NO_CIPHER
+ return SSL_PE_NO_CIPHER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "PE_UNSUPPORTED_CERTIFICATE_TYPE"))
+#ifdef SSL_PE_UNSUPPORTED_CERTIFICATE_TYPE
+ return SSL_PE_UNSUPPORTED_CERTIFICATE_TYPE;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'Q':
+ break;
+ case 'R':
+ if (strEQ(name, "READING"))
+#ifdef SSL_READING
+ return SSL_READING;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "RWERR_BAD_MAC_DECODE"))
+#ifdef SSL_RWERR_BAD_MAC_DECODE
+ return SSL_RWERR_BAD_MAC_DECODE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "RWERR_BAD_WRITE_RETRY"))
+#ifdef SSL_RWERR_BAD_WRITE_RETRY
+ return SSL_RWERR_BAD_WRITE_RETRY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "RWERR_INTERNAL_ERROR"))
+#ifdef SSL_RWERR_INTERNAL_ERROR
+ return SSL_RWERR_INTERNAL_ERROR;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_AUTHENTICATION_TYPE"))
+#ifdef SSL_R_BAD_AUTHENTICATION_TYPE
+ return SSL_R_BAD_AUTHENTICATION_TYPE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_CHECKSUM"))
+#ifdef SSL_R_BAD_CHECKSUM
+ return SSL_R_BAD_CHECKSUM;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_MAC_DECODE"))
+#ifdef SSL_R_BAD_MAC_DECODE
+ return SSL_R_BAD_MAC_DECODE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_RESPONSE_ARGUMENT"))
+#ifdef SSL_R_BAD_RESPONSE_ARGUMENT
+ return SSL_R_BAD_RESPONSE_ARGUMENT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_SSL_FILETYPE"))
+#ifdef SSL_R_BAD_SSL_FILETYPE
+ return SSL_R_BAD_SSL_FILETYPE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_SSL_SESSION_ID_LENGTH"))
+#ifdef SSL_R_BAD_SSL_SESSION_ID_LENGTH
+ return SSL_R_BAD_SSL_SESSION_ID_LENGTH;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_STATE"))
+#ifdef SSL_R_BAD_STATE
+ return SSL_R_BAD_STATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_BAD_WRITE_RETRY"))
+#ifdef SSL_R_BAD_WRITE_RETRY
+ return SSL_R_BAD_WRITE_RETRY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_CHALLENGE_IS_DIFFERENT"))
+#ifdef SSL_R_CHALLENGE_IS_DIFFERENT
+ return SSL_R_CHALLENGE_IS_DIFFERENT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_CIPHER_CODE_TOO_LONG"))
+#ifdef SSL_R_CIPHER_CODE_TOO_LONG
+ return SSL_R_CIPHER_CODE_TOO_LONG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_CIPHER_TABLE_SRC_ERROR"))
+#ifdef SSL_R_CIPHER_TABLE_SRC_ERROR
+ return SSL_R_CIPHER_TABLE_SRC_ERROR;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_CONECTION_ID_IS_DIFFERENT"))
+#ifdef SSL_R_CONECTION_ID_IS_DIFFERENT
+ return SSL_R_CONECTION_ID_IS_DIFFERENT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_INVALID_CHALLENGE_LENGTH"))
+#ifdef SSL_R_INVALID_CHALLENGE_LENGTH
+ return SSL_R_INVALID_CHALLENGE_LENGTH;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_CERTIFICATE_SET"))
+#ifdef SSL_R_NO_CERTIFICATE_SET
+ return SSL_R_NO_CERTIFICATE_SET;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_CERTIFICATE_SPECIFIED"))
+#ifdef SSL_R_NO_CERTIFICATE_SPECIFIED
+ return SSL_R_NO_CERTIFICATE_SPECIFIED;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_CIPHER_LIST"))
+#ifdef SSL_R_NO_CIPHER_LIST
+ return SSL_R_NO_CIPHER_LIST;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_CIPHER_MATCH"))
+#ifdef SSL_R_NO_CIPHER_MATCH
+ return SSL_R_NO_CIPHER_MATCH;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_CIPHER_WE_TRUST"))
+#ifdef SSL_R_NO_CIPHER_WE_TRUST
+ return SSL_R_NO_CIPHER_WE_TRUST;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_PRIVATEKEY"))
+#ifdef SSL_R_NO_PRIVATEKEY
+ return SSL_R_NO_PRIVATEKEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_PUBLICKEY"))
+#ifdef SSL_R_NO_PUBLICKEY
+ return SSL_R_NO_PUBLICKEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_READ_METHOD_SET"))
+#ifdef SSL_R_NO_READ_METHOD_SET
+ return SSL_R_NO_READ_METHOD_SET;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NO_WRITE_METHOD_SET"))
+#ifdef SSL_R_NO_WRITE_METHOD_SET
+ return SSL_R_NO_WRITE_METHOD_SET;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_NULL_SSL_CTX"))
+#ifdef SSL_R_NULL_SSL_CTX
+ return SSL_R_NULL_SSL_CTX;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PEER_DID_NOT_RETURN_A_CERTIFICATE"))
+#ifdef SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE
+ return SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PEER_ERROR"))
+#ifdef SSL_R_PEER_ERROR
+ return SSL_R_PEER_ERROR;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PEER_ERROR_CERTIFICATE"))
+#ifdef SSL_R_PEER_ERROR_CERTIFICATE
+ return SSL_R_PEER_ERROR_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PEER_ERROR_NO_CIPHER"))
+#ifdef SSL_R_PEER_ERROR_NO_CIPHER
+ return SSL_R_PEER_ERROR_NO_CIPHER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE"))
+#ifdef SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE
+ return SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PERR_ERROR_NO_CERTIFICATE"))
+#ifdef SSL_R_PERR_ERROR_NO_CERTIFICATE
+ return SSL_R_PERR_ERROR_NO_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PUBLIC_KEY_ENCRYPT_ERROR"))
+#ifdef SSL_R_PUBLIC_KEY_ENCRYPT_ERROR
+ return SSL_R_PUBLIC_KEY_ENCRYPT_ERROR;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PUBLIC_KEY_IS_NOT_RSA"))
+#ifdef SSL_R_PUBLIC_KEY_IS_NOT_RSA
+ return SSL_R_PUBLIC_KEY_IS_NOT_RSA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_PUBLIC_KEY_NO_RSA"))
+#ifdef SSL_R_PUBLIC_KEY_NO_RSA
+ return SSL_R_PUBLIC_KEY_NO_RSA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_READ_WRONG_PACKET_TYPE"))
+#ifdef SSL_R_READ_WRONG_PACKET_TYPE
+ return SSL_R_READ_WRONG_PACKET_TYPE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_REVERSE_KEY_ARG_LENGTH_IS_WRONG"))
+#ifdef SSL_R_REVERSE_KEY_ARG_LENGTH_IS_WRONG
+ return SSL_R_REVERSE_KEY_ARG_LENGTH_IS_WRONG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_REVERSE_MASTER_KEY_LENGTH_IS_WRONG"))
+#ifdef SSL_R_REVERSE_MASTER_KEY_LENGTH_IS_WRONG
+ return SSL_R_REVERSE_MASTER_KEY_LENGTH_IS_WRONG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_REVERSE_SSL_SESSION_ID_LENGTH_IS_WRONG"))
+#ifdef SSL_R_REVERSE_SSL_SESSION_ID_LENGTH_IS_WRONG
+ return SSL_R_REVERSE_SSL_SESSION_ID_LENGTH_IS_WRONG;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_SHORT_READ"))
+#ifdef SSL_R_SHORT_READ
+ return SSL_R_SHORT_READ;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_SSL_SESSION_ID_IS_DIFFERENT"))
+#ifdef SSL_R_SSL_SESSION_ID_IS_DIFFERENT
+ return SSL_R_SSL_SESSION_ID_IS_DIFFERENT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_UNABLE_TO_EXTRACT_PUBLIC_KEY"))
+#ifdef SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY
+ return SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_UNDEFINED_INIT_STATE"))
+#ifdef SSL_R_UNDEFINED_INIT_STATE
+ return SSL_R_UNDEFINED_INIT_STATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_UNKNOWN_REMOTE_ERROR_TYPE"))
+#ifdef SSL_R_UNKNOWN_REMOTE_ERROR_TYPE
+ return SSL_R_UNKNOWN_REMOTE_ERROR_TYPE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_UNKNOWN_STATE"))
+#ifdef SSL_R_UNKNOWN_STATE
+ return SSL_R_UNKNOWN_STATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_UNSUPORTED_CIPHER"))
+#ifdef SSL_R_UNSUPORTED_CIPHER
+ return SSL_R_UNSUPORTED_CIPHER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_WRONG_PUBLIC_KEY_TYPE"))
+#ifdef SSL_R_WRONG_PUBLIC_KEY_TYPE
+ return SSL_R_WRONG_PUBLIC_KEY_TYPE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "R_X509_LIB"))
+#ifdef SSL_R_X509_LIB
+ return SSL_R_X509_LIB;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'S':
+ if (strEQ(name, "SERVER_VERSION"))
+#ifdef SSL_SERVER_VERSION
+ return SSL_SERVER_VERSION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "SESSION_ASN1_VERSION"))
+#ifdef SSL_SESSION_ASN1_VERSION
+ return SSL_SESSION_ASN1_VERSION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_ACCEPT"))
+#ifdef SSL_ST_ACCEPT
+ return SSL_ST_ACCEPT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_BEFORE"))
+#ifdef SSL_ST_BEFORE
+ return SSL_ST_BEFORE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_CLIENT_START_ENCRYPTION"))
+#ifdef SSL_ST_CLIENT_START_ENCRYPTION
+ return SSL_ST_CLIENT_START_ENCRYPTION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_CONNECT"))
+#ifdef SSL_ST_CONNECT
+ return SSL_ST_CONNECT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_CLIENT_FINISHED_A"))
+#ifdef SSL_ST_GET_CLIENT_FINISHED_A
+ return SSL_ST_GET_CLIENT_FINISHED_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_CLIENT_FINISHED_B"))
+#ifdef SSL_ST_GET_CLIENT_FINISHED_B
+ return SSL_ST_GET_CLIENT_FINISHED_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_CLIENT_HELLO_A"))
+#ifdef SSL_ST_GET_CLIENT_HELLO_A
+ return SSL_ST_GET_CLIENT_HELLO_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_CLIENT_HELLO_B"))
+#ifdef SSL_ST_GET_CLIENT_HELLO_B
+ return SSL_ST_GET_CLIENT_HELLO_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_CLIENT_MASTER_KEY_A"))
+#ifdef SSL_ST_GET_CLIENT_MASTER_KEY_A
+ return SSL_ST_GET_CLIENT_MASTER_KEY_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_CLIENT_MASTER_KEY_B"))
+#ifdef SSL_ST_GET_CLIENT_MASTER_KEY_B
+ return SSL_ST_GET_CLIENT_MASTER_KEY_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_SERVER_FINISHED_A"))
+#ifdef SSL_ST_GET_SERVER_FINISHED_A
+ return SSL_ST_GET_SERVER_FINISHED_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_SERVER_FINISHED_B"))
+#ifdef SSL_ST_GET_SERVER_FINISHED_B
+ return SSL_ST_GET_SERVER_FINISHED_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_SERVER_HELLO_A"))
+#ifdef SSL_ST_GET_SERVER_HELLO_A
+ return SSL_ST_GET_SERVER_HELLO_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_SERVER_HELLO_B"))
+#ifdef SSL_ST_GET_SERVER_HELLO_B
+ return SSL_ST_GET_SERVER_HELLO_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_SERVER_VERIFY_A"))
+#ifdef SSL_ST_GET_SERVER_VERIFY_A
+ return SSL_ST_GET_SERVER_VERIFY_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_GET_SERVER_VERIFY_B"))
+#ifdef SSL_ST_GET_SERVER_VERIFY_B
+ return SSL_ST_GET_SERVER_VERIFY_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_INIT"))
+#ifdef SSL_ST_INIT
+ return SSL_ST_INIT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_OK"))
+#ifdef SSL_ST_OK
+ return SSL_ST_OK;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_READ_BODY"))
+#ifdef SSL_ST_READ_BODY
+ return SSL_ST_READ_BODY;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_READ_HEADER"))
+#ifdef SSL_ST_READ_HEADER
+ return SSL_ST_READ_HEADER;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_CERTIFICATE_A"))
+#ifdef SSL_ST_SEND_CLIENT_CERTIFICATE_A
+ return SSL_ST_SEND_CLIENT_CERTIFICATE_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_CERTIFICATE_B"))
+#ifdef SSL_ST_SEND_CLIENT_CERTIFICATE_B
+ return SSL_ST_SEND_CLIENT_CERTIFICATE_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_CERTIFICATE_C"))
+#ifdef SSL_ST_SEND_CLIENT_CERTIFICATE_C
+ return SSL_ST_SEND_CLIENT_CERTIFICATE_C;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_CERTIFICATE_D"))
+#ifdef SSL_ST_SEND_CLIENT_CERTIFICATE_D
+ return SSL_ST_SEND_CLIENT_CERTIFICATE_D;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_FINISHED_A"))
+#ifdef SSL_ST_SEND_CLIENT_FINISHED_A
+ return SSL_ST_SEND_CLIENT_FINISHED_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_FINISHED_B"))
+#ifdef SSL_ST_SEND_CLIENT_FINISHED_B
+ return SSL_ST_SEND_CLIENT_FINISHED_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_HELLO_A"))
+#ifdef SSL_ST_SEND_CLIENT_HELLO_A
+ return SSL_ST_SEND_CLIENT_HELLO_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_HELLO_B"))
+#ifdef SSL_ST_SEND_CLIENT_HELLO_B
+ return SSL_ST_SEND_CLIENT_HELLO_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_MASTER_KEY_A"))
+#ifdef SSL_ST_SEND_CLIENT_MASTER_KEY_A
+ return SSL_ST_SEND_CLIENT_MASTER_KEY_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_CLIENT_MASTER_KEY_B"))
+#ifdef SSL_ST_SEND_CLIENT_MASTER_KEY_B
+ return SSL_ST_SEND_CLIENT_MASTER_KEY_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_REQUEST_CERTIFICATE_A"))
+#ifdef SSL_ST_SEND_REQUEST_CERTIFICATE_A
+ return SSL_ST_SEND_REQUEST_CERTIFICATE_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_REQUEST_CERTIFICATE_B"))
+#ifdef SSL_ST_SEND_REQUEST_CERTIFICATE_B
+ return SSL_ST_SEND_REQUEST_CERTIFICATE_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_REQUEST_CERTIFICATE_C"))
+#ifdef SSL_ST_SEND_REQUEST_CERTIFICATE_C
+ return SSL_ST_SEND_REQUEST_CERTIFICATE_C;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_REQUEST_CERTIFICATE_D"))
+#ifdef SSL_ST_SEND_REQUEST_CERTIFICATE_D
+ return SSL_ST_SEND_REQUEST_CERTIFICATE_D;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_SERVER_FINISHED_A"))
+#ifdef SSL_ST_SEND_SERVER_FINISHED_A
+ return SSL_ST_SEND_SERVER_FINISHED_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_SERVER_FINISHED_B"))
+#ifdef SSL_ST_SEND_SERVER_FINISHED_B
+ return SSL_ST_SEND_SERVER_FINISHED_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_SERVER_HELLO_A"))
+#ifdef SSL_ST_SEND_SERVER_HELLO_A
+ return SSL_ST_SEND_SERVER_HELLO_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_SERVER_HELLO_B"))
+#ifdef SSL_ST_SEND_SERVER_HELLO_B
+ return SSL_ST_SEND_SERVER_HELLO_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_SERVER_VERIFY_A"))
+#ifdef SSL_ST_SEND_SERVER_VERIFY_A
+ return SSL_ST_SEND_SERVER_VERIFY_A;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SEND_SERVER_VERIFY_B"))
+#ifdef SSL_ST_SEND_SERVER_VERIFY_B
+ return SSL_ST_SEND_SERVER_VERIFY_B;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_SERVER_START_ENCRYPTION"))
+#ifdef SSL_ST_SERVER_START_ENCRYPTION
+ return SSL_ST_SERVER_START_ENCRYPTION;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_X509_GET_CLIENT_CERTIFICATE"))
+#ifdef SSL_ST_X509_GET_CLIENT_CERTIFICATE
+ return SSL_ST_X509_GET_CLIENT_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "ST_X509_GET_SERVER_CERTIFICATE"))
+#ifdef SSL_ST_X509_GET_SERVER_CERTIFICATE
+ return SSL_ST_X509_GET_SERVER_CERTIFICATE;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'T':
+#if 0
+ if (strEQ(name, "TXT_DES_192_EDE3_CBC_WITH_MD5"))
+#ifdef SSL_TXT_DES_192_EDE3_CBC_WITH_MD5
+ return SSL_TXT_DES_192_EDE3_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_DES_192_EDE3_CBC_WITH_SHA"))
+#ifdef SSL_TXT_DES_192_EDE3_CBC_WITH_SHA
+ return SSL_TXT_DES_192_EDE3_CBC_WITH_SHA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_DES_64_CBC_WITH_MD5"))
+#ifdef SSL_TXT_DES_64_CBC_WITH_MD5
+ return SSL_TXT_DES_64_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_DES_64_CBC_WITH_SHA"))
+#ifdef SSL_TXT_DES_64_CBC_WITH_SHA
+ return SSL_TXT_DES_64_CBC_WITH_SHA;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_DES_64_CFB64_WITH_MD5_1"))
+#ifdef SSL_TXT_DES_64_CFB64_WITH_MD5_1
+ return SSL_TXT_DES_64_CFB64_WITH_MD5_1;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_IDEA_128_CBC_WITH_MD5"))
+#ifdef SSL_TXT_IDEA_128_CBC_WITH_MD5
+ return SSL_TXT_IDEA_128_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_NULL"))
+#ifdef SSL_TXT_NULL
+ return SSL_TXT_NULL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_NULL_WITH_MD5"))
+#ifdef SSL_TXT_NULL_WITH_MD5
+ return SSL_TXT_NULL_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_RC2_128_CBC_EXPORT40_WITH_MD5"))
+#ifdef SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5
+ return SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_RC2_128_CBC_WITH_MD5"))
+#ifdef SSL_TXT_RC2_128_CBC_WITH_MD5
+ return SSL_TXT_RC2_128_CBC_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_RC4_128_EXPORT40_WITH_MD5"))
+#ifdef SSL_TXT_RC4_128_EXPORT40_WITH_MD5
+ return SSL_TXT_RC4_128_EXPORT40_WITH_MD5;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "TXT_RC4_128_WITH_MD5"))
+#ifdef SSL_TXT_RC4_128_WITH_MD5
+ return SSL_TXT_RC4_128_WITH_MD5;
+#else
+ goto not_there;
+#endif
+#endif
+ break;
+ case 'U':
+ break;
+ case 'V':
+ if (strEQ(name, "VERIFY_CLIENT_ONCE"))
+#ifdef SSL_VERIFY_CLIENT_ONCE
+ return SSL_VERIFY_CLIENT_ONCE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "VERIFY_FAIL_IF_NO_PEER_CERT"))
+#ifdef SSL_VERIFY_FAIL_IF_NO_PEER_CERT
+ return SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "VERIFY_NONE"))
+#ifdef SSL_VERIFY_NONE
+ return SSL_VERIFY_NONE;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "VERIFY_PEER"))
+#ifdef SSL_VERIFY_PEER
+ return SSL_VERIFY_PEER;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'W':
+ if (strEQ(name, "WRITING"))
+#ifdef SSL_WRITING
+ return SSL_WRITING;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'X':
+ if (strEQ(name, "X509_LOOKUP"))
+#ifdef SSL_X509_LOOKUP
+ return SSL_X509_LOOKUP;
+#else
+ goto not_there;
+#endif
+
+ if (strEQ(name, "X509_V_FLAG_CB_ISSUER_CHECK"))
+#ifdef X509_V_FLAG_CB_ISSUER_CHECK
+ return X509_V_FLAG_CB_ISSUER_CHECK;
+#else
+ goto not_there;
+#endif
+
+ if (strEQ(name, "X509_V_FLAG_USE_CHECK_TIME"))
+#ifdef X509_V_FLAG_USE_CHECK_TIME
+ return X509_V_FLAG_USE_CHECK_TIME;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "X509_V_FLAG_CRL_CHECK"))
+#ifdef X509_V_FLAG_CRL_CHECK
+ return X509_V_FLAG_CRL_CHECK;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "X509_V_FLAG_CRL_CHECK_ALL"))
+#ifdef X509_V_FLAG_CRL_CHECK_ALL
+ return X509_V_FLAG_CRL_CHECK_ALL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, "X509_V_FLAG_IGNORE_CRITICAL"))
+#ifdef X509_V_FLAG_IGNORE_CRITICAL
+ return X509_V_FLAG_IGNORE_CRITICAL;
+#else
+ goto not_there;
+#endif
+ if (strEQ(name, ""))
+#ifdef SSL_X509_LOOKUP
+ return ;
+#else
+ goto not_there;
+#endif
+ break;
+ case 'Y':
+ break;
+ case 'Z':
+ break;
+ }
+ errno = EINVAL;
+ return 0;
+
+not_there:
+ errno = ENOENT;
+ return 0;
+}
+
+/* ============= typedefs to agument TYPEMAP ============== */
+
+typedef int callback_ret_int();
+typedef void callback_no_ret();
+typedef RSA * cb_ssl_int_int_ret_RSA(SSL * ssl,int is_export, int keylength);
+typedef DH * cb_ssl_int_int_ret_DH(SSL * ssl,int is_export, int keylength);
+
+typedef STACK_OF(X509_NAME) X509_NAME_STACK;
+
+/* ============= callback stuff ============== */
+
+static SV * ssleay_verify_callback = (SV*)NULL;
+
+static int
+ssleay_verify_callback_glue (int ok, X509_STORE_CTX* ctx)
+{
+ dSP ;
+ int count,res;
+
+ ENTER ;
+ SAVETMPS;
+
+ PRN("verify callback glue", ok);
+
+ PUSHMARK(sp);
+ XPUSHs(sv_2mortal(newSViv(ok)));
+ XPUSHs(sv_2mortal(newSViv((unsigned long int)ctx)));
+ PUTBACK ;
+
+ if (ssleay_verify_callback == NULL)
+ croak ("Net::SSLeay: verify_callback called, but not "
+ "set to point to any perl function.\n");
+
+ PR("About to call verify callback.\n");
+ count = perl_call_sv(ssleay_verify_callback, G_SCALAR);
+ PR("Returned from verify callback.\n");
+
+ SPAGAIN;
+
+ if (count != 1)
+ croak ( "Net::SSLeay: verify_callback "
+ "perl function did not return a scalar.\n");
+ res = POPi ;
+
+ PUTBACK ;
+ FREETMPS ;
+ LEAVE ;
+
+ return res;
+}
+
+static SV * ssleay_ctx_verify_callback = (SV*)NULL;
+
+static int
+ssleay_ctx_verify_callback_glue (int ok, X509_STORE_CTX* ctx)
+{
+ dSP ;
+ int count,res;
+
+ ENTER ;
+ SAVETMPS;
+
+ PRN("ctx verify callback glue", ok);
+
+ PUSHMARK(sp);
+ XPUSHs(sv_2mortal(newSViv(ok)));
+ XPUSHs(sv_2mortal(newSViv((unsigned long int)ctx)));
+ PUTBACK ;
+
+ if (ssleay_ctx_verify_callback == NULL)
+ croak ("Net::SSLeay: ctx_verify_callback called, but not "
+ "set to point to any perl function.\n");
+
+ PR("About to call ctx verify callback.\n");
+ count = perl_call_sv(ssleay_ctx_verify_callback, G_SCALAR);
+ PR("Returned from ctx verify callback.\n");
+
+ SPAGAIN;
+
+ if (count != 1)
+ croak ( "Net::SSLeay: ctx_verify_callback "
+ "perl function did not return a scalar.\n");
+ res = POPi ;
+
+ PUTBACK ;
+ FREETMPS ;
+ LEAVE ;
+
+ return res;
+}
+
+static SV * ssleay_ctx_set_default_passwd_cb_callback = (SV*)NULL;
+
+/* pem_password_cb function */
+
+static int
+ssleay_ctx_set_default_passwd_cb_callback_glue (char *buf, int size,
+ int rwflag, void *userdata)
+{
+ dSP;
+ int count;
+ char *res;
+
+ ENTER;
+ SAVETMPS;
+
+ PUSHMARK(sp);
+ XPUSHs(sv_2mortal(newSViv(rwflag)));
+ XPUSHs(sv_2mortal(newSViv((unsigned long)userdata)));
+ PUTBACK;
+
+ if (ssleay_ctx_set_default_passwd_cb_callback == NULL)
+ croak ("Net::SSLeay: ctx_passwd_callback called, but not "
+ "set to point to any perl function.\n");
+
+ PR("About to call passwd callback.\n");
+ count = perl_call_sv(ssleay_ctx_set_default_passwd_cb_callback, G_SCALAR);
+ PR("Returned from ctx passwd callback.\n");
+
+ SPAGAIN;
+
+ if (count != 1)
+ croak ("Net::SSLeay: ctx_passwd_callback "
+ "perl function did not return a scalar.\n");
+ res = POPp;
+
+ if (res == NULL) {
+ *buf = '\0';
+ } else {
+ strncpy(buf, res, size);
+ buf[size - 1] = '\0';
+ }
+
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+
+ return strlen(buf);
+}
+
+MODULE = Net::SSLeay PACKAGE = Net::SSLeay PREFIX = SSL_
+
+PROTOTYPES: ENABLE
+
+double
+constant(name)
+ char * name
+
+int
+hello()
+ CODE:
+ PR("\tSSLeay Hello World!\n");
+ RETVAL = 1;
+ OUTPUT:
+ RETVAL
+
+#define REM1 "============= SSL CONTEXT functions =============="
+
+SSL_CTX *
+SSL_CTX_new()
+ CODE:
+ RETVAL = SSL_CTX_new (SSLv23_method());
+ OUTPUT:
+ RETVAL
+
+SSL_CTX *
+SSL_CTX_v2_new()
+ CODE:
+ RETVAL = SSL_CTX_new (SSLv2_method());
+ OUTPUT:
+ RETVAL
+
+SSL_CTX *
+SSL_CTX_v3_new()
+ CODE:
+ RETVAL = SSL_CTX_new (SSLv3_method());
+ OUTPUT:
+ RETVAL
+
+SSL_CTX *
+SSL_CTX_v23_new()
+ CODE:
+ RETVAL = SSL_CTX_new (SSLv23_method());
+ OUTPUT:
+ RETVAL
+
+SSL_CTX *
+SSL_CTX_tlsv1_new()
+ CODE:
+ RETVAL = SSL_CTX_new (TLSv1_method());
+ OUTPUT:
+ RETVAL
+
+SSL_CTX *
+SSL_CTX_new_with_method(meth)
+ SSL_METHOD * meth
+ CODE:
+ RETVAL = SSL_CTX_new (SSLv23_method());
+ OUTPUT:
+ RETVAL
+
+void
+SSL_CTX_free(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_add_session(ctx,ses)
+ SSL_CTX * ctx
+ SSL_SESSION * ses
+
+int
+SSL_CTX_remove_session(ctx,ses)
+ SSL_CTX * ctx
+ SSL_SESSION * ses
+
+void
+SSL_CTX_flush_sessions(ctx,tm)
+ SSL_CTX * ctx
+ long tm
+
+int
+SSL_CTX_set_default_verify_paths(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_load_verify_locations(ctx,CAfile,CApath)
+ SSL_CTX * ctx
+ char * CAfile
+ char * CApath
+ CODE:
+ RETVAL = SSL_CTX_load_verify_locations (ctx,
+ CAfile?(*CAfile?CAfile:NULL):NULL,
+ CApath?(*CApath?CApath:NULL):NULL
+ );
+ OUTPUT:
+ RETVAL
+
+void
+SSL_CTX_set_verify(ctx,mode,callback)
+ SSL_CTX * ctx
+ int mode
+ SV * callback
+ CODE:
+ if (ssleay_ctx_verify_callback == (SV*)NULL) {
+ ssleay_ctx_verify_callback = newSVsv(callback);
+ } else {
+ SvSetSV (ssleay_ctx_verify_callback, callback);
+ }
+ if (SvTRUE(ssleay_ctx_verify_callback)) {
+ SSL_CTX_set_verify(ctx,mode,&ssleay_ctx_verify_callback_glue);
+ } else {
+ SSL_CTX_set_verify(ctx,mode,NULL);
+ }
+
+int
+SSL_get_error(s,ret)
+ SSL * s
+ int ret
+
+#define REM10 "============= SSL functions =============="
+
+SSL *
+SSL_new(ctx)
+ SSL_CTX * ctx
+
+void
+SSL_free(s)
+ SSL * s
+
+#if 0 /* this seems to be gone in 0.9.0 */
+void
+SSL_debug(file)
+ char * file
+
+#endif
+
+int
+SSL_accept(s)
+ SSL * s
+
+void
+SSL_clear(s)
+ SSL * s
+
+int
+SSL_connect(s)
+ SSL * s
+
+
+#if defined(WIN32)
+
+int
+SSL_set_fd(s,fd)
+ SSL * s
+ int fd
+ CODE:
+ RETVAL = SSL_set_fd(s,_get_osfhandle(fd));
+ OUTPUT:
+ RETVAL
+
+int
+SSL_set_rfd(s,fd)
+ SSL * s
+ int fd
+ CODE:
+ RETVAL = SSL_set_rfd(s,_get_osfhandle(fd));
+ OUTPUT:
+ RETVAL
+
+int
+SSL_set_wfd(s,fd)
+ SSL * s
+ int fd
+ CODE:
+ RETVAL = SSL_set_wfd(s,_get_osfhandle(fd));
+ OUTPUT:
+ RETVAL
+
+#else
+
+int
+SSL_set_fd(s,fd)
+ SSL * s
+ int fd
+
+int
+SSL_set_rfd(s,fd)
+ SSL * s
+ int fd
+
+int
+SSL_set_wfd(s,fd)
+ SSL * s
+ int fd
+
+#endif
+
+int
+SSL_get_fd(s)
+ SSL * s
+
+void
+SSL_read(s,max=sizeof(buf))
+ SSL * s
+ PREINIT:
+ char buf[32768];
+ INPUT:
+ int max
+ PREINIT:
+ int got;
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if ((got = SSL_read(s, buf, max)) >= 0)
+ sv_setpvn( ST(0), buf, got);
+
+void
+SSL_peek(s,max=sizeof(buf))
+ SSL * s
+ PREINIT:
+ char buf[32768];
+ INPUT:
+ int max
+ PREINIT:
+ int got;
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if ((got = SSL_peek(s, buf, max)) >= 0)
+ sv_setpvn( ST(0), buf, got);
+
+int
+SSL_write(s,buf)
+ SSL * s
+ PREINIT:
+ STRLEN len;
+ INPUT:
+ char * buf = SvPV( ST(1), len);
+ CODE:
+ RETVAL = SSL_write (s, buf, (int)len);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_write_partial(s,from,count,buf)
+ SSL * s
+ int from
+ int count
+ PREINIT:
+ STRLEN len;
+ INPUT:
+ char * buf = SvPV( ST(3), len);
+ CODE:
+ /*
+ if (SvROK( ST(3) )) {
+ SV* t = SvRV( ST(3) );
+ buf = SvPV( t, len);
+ } else
+ buf = SvPV( ST(3), len);
+ */
+ PRN("write_partial from",from);
+ PRN(&buf[from],len);
+ PRN("write_partial count",count);
+ len -= from;
+ if (len < 0) {
+ croak("from beyound end of buffer");
+ RETVAL = -1;
+ } else
+ RETVAL = SSL_write (s, &(buf[from]), (count<=len)?count:len);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_use_RSAPrivateKey(s,rsa)
+ SSL * s
+ RSA * rsa
+
+int
+SSL_use_RSAPrivateKey_ASN1(s,d,len)
+ SSL * s
+ unsigned char * d
+ long len
+
+int
+SSL_use_RSAPrivateKey_file(s,file,type)
+ SSL * s
+ char * file
+ int type
+
+int
+SSL_CTX_use_RSAPrivateKey_file(ctx,file,type)
+ SSL_CTX * ctx
+ char * file
+ int type
+
+int
+SSL_use_PrivateKey(s,pkey)
+ SSL * s
+ EVP_PKEY * pkey
+
+int
+SSL_use_PrivateKey_ASN1(pk,s,d,len)
+ int pk
+ SSL * s
+ unsigned char * d
+ long len
+
+int
+SSL_use_PrivateKey_file(s,file,type)
+ SSL * s
+ char * file
+ int type
+
+int
+SSL_CTX_use_PrivateKey_file(ctx,file,type)
+ SSL_CTX * ctx
+ char * file
+ int type
+
+int
+SSL_use_certificate(s,x)
+ SSL * s
+ X509 * x
+
+int
+SSL_use_certificate_ASN1(s,d,len)
+ SSL * s
+ unsigned char * d
+ long len
+
+int
+SSL_use_certificate_file(s,file,type)
+ SSL * s
+ char * file
+ int type
+
+int
+SSL_CTX_use_certificate_file(ctx,file,type)
+ SSL_CTX * ctx
+ char * file
+ int type
+
+char *
+SSL_state_string(s)
+ SSL * s
+
+char *
+SSL_rstate_string(s)
+ SSL * s
+
+char *
+SSL_state_string_long(s)
+ SSL * s
+
+char *
+SSL_rstate_string_long(s)
+ SSL * s
+
+
+long
+SSL_get_time(ses)
+ SSL_SESSION * ses
+
+long
+SSL_set_time(ses,t)
+ SSL_SESSION * ses
+ long t
+
+long
+SSL_get_timeout(ses)
+ SSL_SESSION * ses
+
+long
+SSL_set_timeout(ses,t)
+ SSL_SESSION * ses
+ long t
+
+void
+SSL_copy_session_id(to,from)
+ SSL * to
+ SSL * from
+
+void
+SSL_set_read_ahead(s,yes=1)
+ SSL * s
+ int yes
+
+int
+SSL_get_read_ahead(s)
+ SSL * s
+
+int
+SSL_pending(s)
+ SSL * s
+
+int
+SSL_CTX_set_cipher_list(s,str)
+ SSL_CTX * s
+ char * str
+
+const char *
+SSL_get_cipher_list(s,n)
+ SSL * s
+ int n
+
+int
+SSL_set_cipher_list(s,str)
+ SSL * s
+ char * str
+
+const char *
+SSL_get_cipher(s)
+ SSL * s
+
+char *
+SSL_get_shared_ciphers(s,buf,len)
+ SSL * s
+ char * buf
+ int len
+
+X509 *
+SSL_get_peer_certificate(s)
+ SSL * s
+
+void
+SSL_set_verify(s,mode,callback)
+ SSL * s
+ int mode
+ SV * callback
+ CODE:
+ if (ssleay_verify_callback == (SV*)NULL)
+ ssleay_verify_callback = newSVsv(callback);
+ else
+ SvSetSV (ssleay_verify_callback, callback);
+ if (SvTRUE(ssleay_verify_callback)) {
+ SSL_set_verify(s,mode,&ssleay_verify_callback_glue);
+ } else {
+ SSL_set_verify(s,mode,NULL);
+ }
+
+void
+SSL_set_bio(s,rbio,wbio)
+ SSL * s
+ BIO * rbio
+ BIO * wbio
+
+BIO *
+SSL_get_rbio(s)
+ SSL * s
+
+BIO *
+SSL_get_wbio(s)
+ SSL * s
+
+
+SSL_SESSION *
+SSL_SESSION_new()
+
+int
+SSL_SESSION_print(fp,ses)
+ BIO * fp
+ SSL_SESSION * ses
+
+void
+SSL_SESSION_free(ses)
+ SSL_SESSION * ses
+
+int
+i2d_SSL_SESSION(in,pp)
+ SSL_SESSION * in
+ unsigned char * &pp
+
+int
+SSL_set_session(to,ses)
+ SSL * to
+ SSL_SESSION * ses
+
+SSL_SESSION *
+d2i_SSL_SESSION(a,pp,length)
+ SSL_SESSION * &a
+ unsigned char * &pp
+ long length
+
+#define REM30 "SSLeay-0.9.0 defines these as macros. I expand them here for safety's sake"
+
+SSL_SESSION *
+SSL_get_session(s)
+ SSL * s
+
+X509 *
+SSL_get_certificate(s)
+ SSL * s
+
+SSL_CTX *
+SSL_get_SSL_CTX(s)
+ SSL * s
+
+long
+SSL_ctrl(ssl,cmd,larg,parg)
+ SSL * ssl
+ int cmd
+ long larg
+ char * parg
+
+long
+SSL_CTX_ctrl(ctx,cmd,larg,parg)
+ SSL_CTX * ctx
+ int cmd
+ long larg
+ char * parg
+
+long
+SSL_get_options(ssl)
+ SSL * ssl
+
+void
+SSL_set_options(ssl,op)
+ SSL * ssl
+ unsigned long op
+
+long
+SSL_CTX_get_options(ctx)
+ SSL_CTX * ctx
+
+void
+SSL_CTX_set_options(ctx,op)
+ SSL_CTX * ctx
+ unsigned long op
+
+LHASH *
+SSL_CTX_sessions(ctx)
+ SSL_CTX * ctx
+ CODE:
+ /* NOTE: This should be deprecated. Corresponding macro was removed from ssl.h as of 0.9.2 */
+ if (ctx == NULL) croak("NULL SSL context passed as argument.");
+ RETVAL = ctx -> sessions;
+ OUTPUT:
+ RETVAL
+
+unsigned long
+SSL_CTX_sess_number(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_connect(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_connect_good(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_connect_renegotiate(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_accept(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_accept_renegotiate(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_accept_good(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_hits(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_cb_hits(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_misses(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_timeouts(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_cache_full(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_sess_get_cache_size(ctx)
+ SSL_CTX * ctx
+
+void
+SSL_CTX_sess_set_cache_size(ctx,size)
+ SSL_CTX * ctx
+ int size
+
+int
+SSL_want(s)
+ SSL * s
+
+int
+SSL_state(s)
+ SSL * s
+
+BIO_METHOD *
+BIO_f_ssl()
+
+BIO_METHOD *
+BIO_s_mem()
+
+unsigned long
+ERR_get_error()
+
+unsigned long
+ERR_peek_error()
+
+void
+ERR_put_error(lib,func,reason,file,line)
+ int lib
+ int func
+ int reason
+ char * file
+ int line
+
+void
+ERR_clear_error()
+
+char *
+ERR_error_string(error,buf=NULL)
+ unsigned long error
+ char * buf
+ CODE:
+ RETVAL = ERR_error_string(error,buf);
+ OUTPUT:
+ RETVAL
+
+void
+SSL_load_error_strings()
+
+void
+ERR_load_crypto_strings()
+
+void
+SSLeay_add_ssl_algorithms()
+
+void
+ERR_load_SSL_strings()
+
+void
+ERR_load_RAND_strings()
+
+int
+RAND_bytes(buf, num)
+ SV *buf
+ int num
+ PREINIT:
+ int rc;
+ unsigned char *random;
+ CODE:
+ New(0, random, num, unsigned char);
+ rc = RAND_bytes(random, num);
+ sv_setpvn(buf, random, num);
+ Safefree(random);
+ RETVAL = rc;
+ OUTPUT:
+ RETVAL
+
+int
+RAND_pseudo_bytes(buf, num)
+ SV *buf
+ int num
+ PREINIT:
+ int rc;
+ unsigned char *random;
+ CODE:
+ New(0, random, num, unsigned char);
+ rc = RAND_pseudo_bytes(random, num);
+ sv_setpvn(buf, random, num);
+ Safefree(random);
+ RETVAL = rc;
+ OUTPUT:
+ RETVAL
+
+void
+RAND_add(buf, num, entropy)
+ SV *buf
+ int num
+ double entropy
+ PREINIT:
+ STRLEN len;
+ CODE:
+ RAND_add((const void *)SvPV(buf, len), num, entropy);
+
+int
+RAND_poll()
+
+int
+RAND_status()
+
+int
+RAND_egd_bytes(path, bytes)
+ const char *path
+ int bytes
+
+SV *
+RAND_file_name(num)
+ size_t num
+ PREINIT:
+ char *buf;
+ CODE:
+ New(0, buf, num, char);
+ if (!RAND_file_name(buf, num)) {
+ Safefree(buf);
+ XSRETURN_UNDEF;
+ }
+ RETVAL = newSVpv(buf, 0);
+ Safefree(buf);
+ OUTPUT:
+ RETVAL
+
+void
+RAND_seed(buf)
+ PREINIT:
+ STRLEN len;
+ INPUT:
+ char * buf = SvPV( ST(1), len);
+ CODE:
+ RAND_seed (buf, (int)len);
+
+void
+RAND_cleanup()
+
+int
+RAND_load_file(file_name, how_much)
+ char * file_name
+ int how_much
+
+int
+RAND_write_file(file_name)
+ char * file_name
+
+int
+RAND_egd(path)
+ char * path
+
+#define REM40 "Minimal X509 stuff..., this is a bit ugly and should be put in its own modules Net::SSLeay::X509.pm"
+
+X509_NAME*
+X509_get_issuer_name(cert)
+ X509 * cert
+
+X509_NAME*
+X509_get_subject_name(cert)
+ X509 * cert
+
+void
+X509_NAME_oneline(name)
+ X509_NAME * name
+ PREINIT:
+ char buf[32768];
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if (X509_NAME_oneline(name, buf, sizeof(buf)))
+ sv_setpvn( ST(0), buf, strlen(buf));
+
+void
+X509_NAME_get_text_by_NID(name,nid)
+ X509_NAME * name
+ int nid
+ PREINIT:
+ char buf[32768];
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if (X509_NAME_get_text_by_NID(name, nid, buf, sizeof(buf)))
+ sv_setpvn( ST(0), buf, strlen(buf));
+
+X509 *
+X509_STORE_CTX_get_current_cert(x509_store_ctx)
+ X509_STORE_CTX * x509_store_ctx
+
+void *
+X509_STORE_CTX_get_ex_data(x509_store_ctx,idx)
+ X509_STORE_CTX * x509_store_ctx
+ int idx
+
+int
+X509_STORE_CTX_get_error(x509_store_ctx)
+ X509_STORE_CTX * x509_store_ctx
+
+int
+X509_STORE_CTX_get_error_depth(x509_store_ctx)
+ X509_STORE_CTX * x509_store_ctx
+
+int
+X509_STORE_CTX_set_ex_data(x509_store_ctx,idx,data)
+ X509_STORE_CTX * x509_store_ctx
+ int idx
+ void * data
+
+void
+X509_STORE_CTX_set_error(x509_store_ctx,s)
+ X509_STORE_CTX * x509_store_ctx
+ int s
+
+void
+X509_STORE_CTX_set_cert(x509_store_ctx,x)
+ X509_STORE_CTX * x509_store_ctx
+ X509 * x
+
+int
+X509_STORE_add_cert(ctx, x)
+ X509_STORE *ctx
+ X509 *x
+
+int
+X509_STORE_add_crl(ctx, x)
+ X509_STORE *ctx
+ X509_CRL *x
+
+void
+X509_STORE_CTX_set_flags(ctx, flags)
+ X509_STORE_CTX *ctx
+ long flags
+
+int
+X509_load_cert_file(ctx, file, type)
+ X509_LOOKUP *ctx
+ char *file
+ int type
+
+int
+X509_load_crl_file(ctx, file, type)
+ X509_LOOKUP *ctx
+ char *file
+ int type
+
+int
+X509_load_cert_crl_file(ctx, file, type)
+ X509_LOOKUP *ctx
+ char *file
+ int type
+
+
+ASN1_UTCTIME *
+X509_get_notBefore(cert)
+ X509 * cert
+
+ASN1_UTCTIME *
+X509_get_notAfter(cert)
+ X509 * cert
+
+void
+P_ASN1_UTCTIME_put2string(tm)
+ ASN1_UTCTIME * tm
+ PREINIT:
+ BIO *bp;
+ int i;
+ char buffer[256];
+ CODE:
+ bp = BIO_new(BIO_s_mem());
+ ASN1_UTCTIME_print(bp,tm);
+ i = BIO_read(bp,buffer,255);
+ buffer[i] = '\0';
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if ( i > 0 )
+ sv_setpvn( ST(0), buffer, i );
+ BIO_free(bp);
+
+int
+EVP_PKEY_copy_parameters(to,from)
+ EVP_PKEY * to
+ EVP_PKEY * from
+
+void
+PEM_get_string_X509(x509)
+ X509 * x509
+ PREINIT:
+ BIO *bp;
+ int i;
+ char buffer[8196];
+ CODE:
+ bp = BIO_new(BIO_s_mem());
+ PEM_write_bio_X509(bp,x509);
+ i = BIO_read(bp,buffer,8195);
+ buffer[i] = '\0';
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if ( i > 0 )
+ sv_setpvn( ST(0), buffer, i );
+ BIO_free(bp);
+
+void
+MD5(data)
+ PREINIT:
+ STRLEN len;
+ unsigned char md[MD5_DIGEST_LENGTH];
+ unsigned char * ret;
+ INPUT:
+ unsigned char * data = (unsigned char *) SvPV( ST(0), len);
+ CODE:
+ ret = MD5(data,len,md);
+ if (ret!=NULL) {
+ XSRETURN_PV((char *) md);
+ } else {
+ XSRETURN_UNDEF;
+ }
+
+SSL_METHOD *
+SSLv2_method()
+
+SSL_METHOD *
+SSLv3_method()
+
+SSL_METHOD *
+TLSv1_method()
+
+int
+SSL_set_ssl_method(ssl, method)
+ SSL * ssl
+ SSL_METHOD * method
+
+SSL_METHOD *
+SSL_get_ssl_method(ssl)
+ SSL * ssl
+
+#define REM_AUTOMATICALLY_GENERATED_1_09
+
+BIO *
+BIO_new_buffer_ssl_connect(ctx)
+ SSL_CTX * ctx
+
+BIO *
+BIO_new_file(filename,mode)
+ char * filename
+ char * mode
+
+BIO *
+BIO_new_ssl(ctx,client)
+ SSL_CTX * ctx
+ int client
+
+BIO *
+BIO_new_ssl_connect(ctx)
+ SSL_CTX * ctx
+
+BIO *
+BIO_new(type)
+ BIO_METHOD * type;
+
+int
+BIO_free(bio)
+ BIO * bio;
+
+void
+BIO_read(s,max=sizeof(buf))
+ BIO * s
+ PREINIT:
+ char buf[32768];
+ INPUT:
+ int max
+ PREINIT:
+ int got;
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ if ((got = BIO_read(s, buf, max)) >= 0)
+ sv_setpvn( ST(0), buf, got);
+
+
+int
+BIO_write(s,buf)
+ BIO * s
+ PREINIT:
+ STRLEN len;
+ INPUT:
+ char * buf = SvPV( ST(1), len);
+ CODE:
+ RETVAL = BIO_write (s, buf, (int)len);
+ OUTPUT:
+ RETVAL
+
+int
+BIO_eof(s)
+ BIO * s
+
+int
+BIO_pending(s)
+ BIO * s
+
+int
+BIO_wpending(s)
+ BIO * s
+
+int
+BIO_ssl_copy_session_id(to,from)
+ BIO * to
+ BIO * from
+
+void
+BIO_ssl_shutdown(ssl_bio)
+ BIO * ssl_bio
+
+int
+SSL_add_client_CA(ssl,x)
+ SSL * ssl
+ X509 * x
+
+char *
+SSL_alert_desc_string(value)
+ int value
+
+char *
+SSL_alert_desc_string_long(value)
+ int value
+
+char *
+SSL_alert_type_string(value)
+ int value
+
+char *
+SSL_alert_type_string_long(value)
+ int value
+
+long
+SSL_callback_ctrl(ssl,i,fp)
+ SSL * ssl
+ int i
+ callback_no_ret * fp
+
+int
+SSL_check_private_key(ctx)
+ SSL * ctx
+
+char *
+SSL_CIPHER_description(cipher,buf,size)
+ SSL_CIPHER * cipher
+ char * buf
+ int size
+
+int
+SSL_CIPHER_get_bits(c,alg_bits)
+ SSL_CIPHER * c
+ int * alg_bits
+
+int
+SSL_COMP_add_compression_method(id,cm)
+ int id
+ COMP_METHOD * cm
+
+int
+SSL_CTX_add_client_CA(ctx,x)
+ SSL_CTX * ctx
+ X509 * x
+
+long
+SSL_CTX_callback_ctrl(ctx,i,fp)
+ SSL_CTX * ctx
+ int i
+ callback_no_ret * fp
+
+int
+SSL_CTX_check_private_key(ctx)
+ SSL_CTX * ctx
+
+void *
+SSL_CTX_get_ex_data(ssl,idx)
+ SSL_CTX * ssl
+ int idx
+
+int
+SSL_CTX_get_quiet_shutdown(ctx)
+ SSL_CTX * ctx
+
+long
+SSL_CTX_get_timeout(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_get_verify_depth(ctx)
+ SSL_CTX * ctx
+
+int
+SSL_CTX_get_verify_mode(ctx)
+ SSL_CTX * ctx
+
+void
+SSL_CTX_set_cert_store(ctx,store)
+ SSL_CTX * ctx
+ X509_STORE * store
+
+X509_STORE *
+SSL_CTX_get_cert_store(ctx)
+ SSL_CTX * ctx
+
+void
+SSL_CTX_set_cert_verify_callback(ctx,cb,arg)
+ SSL_CTX * ctx
+ callback_ret_int * cb
+ char * arg
+
+void
+SSL_CTX_set_client_CA_list(ctx,list)
+ SSL_CTX * ctx
+ X509_NAME_STACK * list
+
+void
+SSL_CTX_set_default_passwd_cb(ctx,cb)
+ SSL_CTX * ctx
+ SV * cb
+ CODE:
+ if (ssleay_ctx_set_default_passwd_cb_callback == (SV*)NULL) {
+ ssleay_ctx_set_default_passwd_cb_callback = newSVsv(cb);
+ } else {
+ SvSetSV (ssleay_ctx_set_default_passwd_cb_callback, cb);
+ }
+ if (SvTRUE(ssleay_ctx_set_default_passwd_cb_callback)) {
+ SSL_CTX_set_default_passwd_cb(ctx,&ssleay_ctx_set_default_passwd_cb_callback_glue);
+ } else {
+ SSL_CTX_set_default_passwd_cb(ctx,NULL);
+ }
+
+void
+SSL_CTX_set_default_passwd_cb_userdata(ctx,u)
+ SSL_CTX * ctx
+ void * u
+
+int
+SSL_CTX_set_ex_data(ssl,idx,data)
+ SSL_CTX * ssl
+ int idx
+ void * data
+
+int
+SSL_CTX_set_purpose(s,purpose)
+ SSL_CTX * s
+ int purpose
+
+void
+SSL_CTX_set_quiet_shutdown(ctx,mode)
+ SSL_CTX * ctx
+ int mode
+
+int
+SSL_CTX_set_ssl_version(ctx,meth)
+ SSL_CTX * ctx
+ SSL_METHOD * meth
+
+long
+SSL_CTX_set_timeout(ctx,t)
+ SSL_CTX * ctx
+ long t
+
+int
+SSL_CTX_set_trust(s,trust)
+ SSL_CTX * s
+ int trust
+
+void
+SSL_CTX_set_verify_depth(ctx,depth)
+ SSL_CTX * ctx
+ int depth
+
+int
+SSL_CTX_use_certificate(ctx,x)
+ SSL_CTX * ctx
+ X509 * x
+
+int
+SSL_CTX_use_certificate_chain_file(ctx,file)
+ SSL_CTX * ctx
+ const char * file
+
+int
+SSL_CTX_use_PrivateKey(ctx,pkey)
+ SSL_CTX * ctx
+ EVP_PKEY * pkey
+
+int
+SSL_CTX_use_RSAPrivateKey(ctx,rsa)
+ SSL_CTX * ctx
+ RSA * rsa
+
+int
+SSL_do_handshake(s)
+ SSL * s
+
+SSL *
+SSL_dup(ssl)
+ SSL * ssl
+
+SSL_CIPHER *
+SSL_get_current_cipher(s)
+ SSL * s
+
+long
+SSL_get_default_timeout(s)
+ SSL * s
+
+void *
+SSL_get_ex_data(ssl,idx)
+ SSL * ssl
+ int idx
+
+size_t
+SSL_get_finished(s,buf,count)
+ SSL * s
+ void * buf
+ size_t count
+
+size_t
+SSL_get_peer_finished(s,buf,count)
+ SSL * s
+ void * buf
+ size_t count
+
+int
+SSL_get_quiet_shutdown(ssl)
+ SSL * ssl
+
+int
+SSL_get_shutdown(ssl)
+ SSL * ssl
+
+int
+SSL_get_verify_depth(s)
+ SSL * s
+
+int
+SSL_get_verify_mode(s)
+ SSL * s
+
+long
+SSL_get_verify_result(ssl)
+ SSL * ssl
+
+int
+SSL_library_init()
+
+int
+SSL_renegotiate(s)
+ SSL * s
+
+int
+SSL_SESSION_cmp(a,b)
+ SSL_SESSION * a
+ SSL_SESSION * b
+
+void *
+SSL_SESSION_get_ex_data(ss,idx)
+ SSL_SESSION * ss
+ int idx
+
+long
+SSL_SESSION_get_time(s)
+ SSL_SESSION * s
+
+long
+SSL_SESSION_get_timeout(s)
+ SSL_SESSION * s
+
+int
+SSL_SESSION_print_fp(fp,ses)
+ FILE * fp
+ SSL_SESSION * ses
+
+int
+SSL_SESSION_set_ex_data(ss,idx,data)
+ SSL_SESSION * ss
+ int idx
+ void * data
+
+long
+SSL_SESSION_set_time(s,t)
+ SSL_SESSION * s
+ long t
+
+long
+SSL_SESSION_set_timeout(s,t)
+ SSL_SESSION * s
+ long t
+
+void
+SSL_set_accept_state(s)
+ SSL * s
+
+void
+SSL_set_client_CA_list(s,list)
+ SSL * s
+ X509_NAME_STACK * list
+
+void
+SSL_set_connect_state(s)
+ SSL * s
+
+int
+SSL_set_ex_data(ssl,idx,data)
+ SSL * ssl
+ int idx
+ void * data
+
+void
+SSL_set_info_callback(ssl,cb)
+ SSL * ssl
+ callback_no_ret * cb
+
+int
+SSL_set_purpose(s,purpose)
+ SSL * s
+ int purpose
+
+void
+SSL_set_quiet_shutdown(ssl,mode)
+ SSL * ssl
+ int mode
+
+void
+SSL_set_shutdown(ssl,mode)
+ SSL * ssl
+ int mode
+
+int
+SSL_set_trust(s,trust)
+ SSL * s
+ int trust
+
+void
+SSL_set_verify_depth(s,depth)
+ SSL * s
+ int depth
+
+void
+SSL_set_verify_result(ssl,v)
+ SSL * ssl
+ long v
+
+int
+SSL_shutdown(s)
+ SSL * s
+
+int
+SSL_version(ssl)
+ SSL * ssl
+
+#define REM_MANUALLY_ADDED_1_09
+
+X509_NAME_STACK *
+SSL_load_client_CA_file(file)
+ const char * file
+
+int
+SSL_add_file_cert_subjects_to_stack(stackCAs,file)
+ X509_NAME_STACK * stackCAs
+ const char * file
+
+#ifndef WIN32
+#ifndef VMS
+#ifndef MAC_OS_pre_X
+
+int
+SSL_add_dir_cert_subjects_to_stack(stackCAs,dir)
+ X509_NAME_STACK * stackCAs
+ const char * dir
+
+#endif
+#endif
+#endif
+
+int
+SSL_CTX_get_ex_new_index(argl,argp,new_func,dup_func,free_func)
+ long argl
+ void * argp
+ CRYPTO_EX_new * new_func
+ CRYPTO_EX_dup * dup_func
+ CRYPTO_EX_free * free_func
+
+int
+SSL_CTX_set_session_id_context(ctx,sid_ctx,sid_ctx_len)
+ SSL_CTX * ctx
+ const unsigned char * sid_ctx
+ unsigned int sid_ctx_len
+
+int
+SSL_set_session_id_context(ssl,sid_ctx,sid_ctx_len)
+ SSL * ssl
+ const unsigned char * sid_ctx
+ unsigned int sid_ctx_len
+
+void
+SSL_CTX_set_tmp_rsa_callback(ctx, cb)
+ SSL_CTX * ctx
+ cb_ssl_int_int_ret_RSA * cb
+
+void
+SSL_set_tmp_rsa_callback(ssl, cb)
+ SSL * ssl
+ cb_ssl_int_int_ret_RSA * cb
+
+void
+SSL_CTX_set_tmp_dh_callback(ctx, dh)
+ SSL_CTX * ctx
+ cb_ssl_int_int_ret_DH * dh
+
+void
+SSL_set_tmp_dh_callback(ssl,dh)
+ SSL * ssl
+ cb_ssl_int_int_ret_DH * dh
+
+int
+SSL_get_ex_new_index(argl, argp, new_func, dup_func, free_func)
+ long argl
+ void * argp
+ CRYPTO_EX_new * new_func
+ CRYPTO_EX_dup * dup_func
+ CRYPTO_EX_free * free_func
+
+int
+SSL_SESSION_get_ex_new_index(argl, argp, new_func, dup_func, free_func)
+ long argl
+ void * argp
+ CRYPTO_EX_new * new_func
+ CRYPTO_EX_dup * dup_func
+ CRYPTO_EX_free * free_func
+
+#define REM_SEMIAUTOMATIC_MACRO_GEN_1_09
+
+int
+OpenSSL_add_ssl_algorithms()
+ CODE:
+ RETVAL = SSL_library_init();
+ OUTPUT:
+ RETVAL
+
+long
+SSL_clear_num_renegotiations(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_add_extra_chain_cert(ctx,x509)
+ SSL_CTX * ctx
+ X509 * x509
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char*)x509);
+ OUTPUT:
+ RETVAL
+
+void *
+SSL_CTX_get_app_data(ctx)
+ SSL_CTX * ctx
+ CODE:
+ RETVAL = SSL_CTX_get_ex_data(ctx,0);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_get_mode(ctx)
+ SSL_CTX * ctx
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_MODE,0,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_get_read_ahead(ctx)
+ SSL_CTX * ctx
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_get_session_cache_mode(ctx)
+ SSL_CTX * ctx
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_need_tmp_RSA(ctx)
+ SSL_CTX * ctx
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_CTX_set_app_data(ctx,arg)
+ SSL_CTX * ctx
+ char * arg
+ CODE:
+ RETVAL = SSL_CTX_set_ex_data(ctx,0,arg);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_set_mode(ctx,op)
+ SSL_CTX * ctx
+ long op
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_MODE,op,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_set_read_ahead(ctx,m)
+ SSL_CTX * ctx
+ long m
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_set_session_cache_mode(ctx,m)
+ SSL_CTX * ctx
+ long m
+ CODE:
+ RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_CTX_set_tmp_dh(ctx,dh)
+ SSL_CTX * ctx
+ DH * dh
+
+long
+SSL_CTX_set_tmp_rsa(ctx,rsa)
+ SSL_CTX * ctx
+ RSA * rsa
+
+void *
+SSL_get_app_data(s)
+ SSL * s
+ CODE:
+ RETVAL = SSL_get_ex_data(s,0);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_get_cipher_bits(s,np)
+ SSL * s
+ int * np
+ CODE:
+ RETVAL = SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_get_mode(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_MODE,0,NULL);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_get_state(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_state(ssl);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_need_tmp_RSA(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_num_renegotiations(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL);
+ OUTPUT:
+ RETVAL
+
+void *
+SSL_SESSION_get_app_data(ses)
+ SSL_SESSION * ses
+ CODE:
+ RETVAL = SSL_SESSION_get_ex_data(ses,0);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_session_reused(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_GET_SESSION_REUSED,0,NULL);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_SESSION_set_app_data(s,a)
+ SSL_SESSION * s
+ void * a
+ CODE:
+ RETVAL = SSL_SESSION_set_ex_data(s,0,(char *)a);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_set_app_data(s,arg)
+ SSL * s
+ void * arg
+ CODE:
+ RETVAL = SSL_set_ex_data(s,0,(char *)arg);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_set_mode(ssl,op)
+ SSL * ssl
+ long op
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_MODE,op,NULL);
+ OUTPUT:
+ RETVAL
+
+int
+SSL_set_pref_cipher(s,n)
+ SSL * s
+ const char * n
+ CODE:
+ RETVAL = SSL_set_cipher_list(s,n);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_set_tmp_dh(ssl,dh)
+ SSL * ssl
+ char * dh
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh);
+ OUTPUT:
+ RETVAL
+
+long
+SSL_set_tmp_rsa(ssl,rsa)
+ SSL * ssl
+ char * rsa
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa);
+ OUTPUT:
+ RETVAL
+
+RSA *
+RSA_generate_key(bits,e,callback=NULL,cb_arg=NULL)
+ int bits
+ unsigned long e
+ void * callback
+ void * cb_arg
+
+void
+RSA_free(r)
+ RSA * r
+
+void
+X509_free(a)
+ X509 * a
+
+DH *
+PEM_read_bio_DHparams(bio,x=NULL,cb=NULL,u=NULL)
+ BIO * bio
+ void * x
+ void * cb
+ void * u
+
+X509_CRL *
+PEM_read_bio_X509_CRL(bio,x=NULL,cb=NULL,u=NULL)
+ BIO * bio
+ void * x
+ void * cb
+ void * u
+
+void
+DH_free(dh)
+ DH * dh
+
+long
+SSL_total_renegotiations(ssl)
+ SSL * ssl
+ CODE:
+ RETVAL = SSL_ctrl(ssl,SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL);
+ OUTPUT:
+ RETVAL
+
+void
+SSL_SESSION_get_master_key(s)
+ SSL_SESSION * s
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ sv_setpvn(ST(0), s->master_key, s->master_key_length);
+
+void
+SSL_get_client_random(s)
+ SSL * s
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ sv_setpvn(ST(0), s->s3->client_random, SSL3_RANDOM_SIZE);
+
+void
+SSL_get_server_random(s)
+ SSL * s
+ CODE:
+ ST(0) = sv_newmortal(); /* Undefined to start with */
+ sv_setpvn(ST(0), s->s3->server_random, SSL3_RANDOM_SIZE);
+
+
+#define REM_EOF "/* EOF - SSLeay.xs */"
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/bio.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/bio.pl
new file mode 100644
index 0000000..53f7278
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/bio.pl
@@ -0,0 +1,47 @@
+#!/usr/local/bin/perl -w
+# bio.pl mikem@open.com.au
+#
+# Test and demonstrate BIO interface
+
+use Net::SSLeay qw(die_now);
+
+$data = '0123456789' x 100;
+$len = length($data);
+
+$b = &Net::SSLeay::BIO_new(&Net::SSLeay::BIO_s_mem())
+ or die_now("Could not create memory BIO $!");
+
+&Net::SSLeay::BIO_write($b, $data)
+ or die_now("Could not write memory BIO $!");
+
+# Should now have 1000 bytes in BIO
+$pending = &Net::SSLeay::BIO_pending($b);
+die("Incorrect result from BIO_pending: $pending. Should be $len")
+ unless $pending == $len;
+
+# Partial read of 9 bytes
+$len = 9;
+$part = &Net::SSLeay::BIO_read($b, $len);
+$nlen = length($part);
+die("Incorrect result from BIO_read: $len. Should be 9")
+ unless $nlen == $len;
+
+die("Incorrect data from BIO_read: $len. Should be 012345678")
+ unless $part eq '012345678';
+
+# Should be 991 bytes left
+$len = 991;
+$pending = &Net::SSLeay::BIO_pending($b);
+die("Incorrect result from BIO_pending: $pending. Should be $len")
+ unless $pending == $len;
+
+# Read the rest
+$part = &Net::SSLeay::BIO_read($b);
+$nlen = length($part);
+die("Incorrect result from BIO_read: $len. Should be 9")
+ unless $len == $nlen;
+
+&Net::SSLeay::BIO_free($b);
+
+print "OK\n";
+exit;
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/bulk.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/bulk.pl
new file mode 100755
index 0000000..02582ea
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/bulk.pl
@@ -0,0 +1,54 @@
+#!/usr/local/bin/perl -w
+# bulk.pl - 8.6.1998, Sampo Kellomaki
+# Send tons of stuff over SSL (just for testing).
+# There's also an example about using the call back.
+
+use Socket;
+use Net::SSLeay qw(die_now die_if_ssl_error);
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::ERR_load_crypto_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+
+($dest_serv, $port, $how_much) = @ARGV; # Read command line
+$port = getservbyname ($port, 'tcp') unless $port =~ /^\d+$/;
+$dest_ip = gethostbyname ($dest_serv);
+
+$dest_serv_params = sockaddr_in($port, $dest_ip);
+socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
+connect (S, $dest_serv_params) or die "connect: $!";
+select (S); $| = 1; select (STDOUT);
+
+# The network connection is now open, lets fire up SSL
+
+$ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+$ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+Net::SSLeay::set_fd($ssl, fileno(S)); # Must use fileno
+Net::SSLeay::connect($ssl);
+die_if_ssl_error('bulk: ssl connect');
+print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+$cert = Net::SSLeay::get_peer_certificate($ssl);
+die_if_ssl_error('get_peer_certificate');
+print "Subject Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_subject_name($cert)) . "\n";
+print "Issuer Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_issuer_name($cert)) . "\n";
+
+# Exchange data
+
+$data = 'A' x $how_much;
+Net::SSLeay::ssl_write_all($ssl, \$data) or die "ssl write failed";
+shutdown S, 1; # Half close --> No more output, sends EOF to server
+$got = Net::SSLeay::ssl_read_all($ssl) or die "ssl read failed";
+
+Net::SSLeay::free ($ssl); # Tear down connection
+Net::SSLeay::CTX_free ($ctx);
+close S;
+
+print $data eq $got ? "OK\n" : "ERROR\n";
+exit;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/callback.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/callback.pl
new file mode 100755
index 0000000..b97e105
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/callback.pl
@@ -0,0 +1,100 @@
+#!/usr/local/bin/perl -w
+# callback.pl - 8.6.1998, Sampo Kellomaki
+# 31.7.1999, fixed callback args, --Sampo
+# 7.4.2001, adapted to 0.9.6a and numerous bug reports --Sampo
+#
+# Test and demonstrate verify call back
+#
+# WARNING! Although this code works, it is by no means stable. Expect
+# that this stuff may break with newer than 0.9.3a --Sampo
+
+use Socket;
+use Net::SSLeay qw(die_now die_if_ssl_error);
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::ERR_load_crypto_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+
+($dest_serv, $port, $cert_dir) = @ARGV; # Read command line
+
+my $callback_called = 0;
+
+$ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+#Net::SSLeay::CTX_set_default_verify_paths($ctx);
+Net::SSLeay::CTX_load_verify_locations($ctx, '', $cert_dir)
+ or die_now("CTX load verify loc=`$cert_dir' $!");
+Net::SSLeay::CTX_set_verify($ctx, &Net::SSLeay::VERIFY_PEER, \&verify2);
+die_if_ssl_error('callback: ctx set verify');
+
+$port = getservbyname ($port, 'tcp') unless $port =~ /^\d+$/;
+$dest_ip = gethostbyname ($dest_serv);
+
+$dest_serv_params = pack ('S n a4 x8', &AF_INET, $port, $dest_ip);
+socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
+connect (S, $dest_serv_params) or die "connect: $!";
+select (S); $| = 1; select (STDOUT);
+
+# The network connection is now open, lets fire up SSL
+
+$ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+#Net::SSLeay::set_verify ($ssl, &Net::SSLeay::VERIFY_PEER, \&verify);
+Net::SSLeay::set_fd($ssl, fileno(S));
+print "callback: starting ssl connect...\n";
+Net::SSLeay::connect($ssl);
+die_if_ssl_error('callback: ssl connect');
+
+print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+print Net::SSLeay::dump_peer_certificate($ssl);
+
+Net::SSLeay::ssl_write_all($ssl,"\tcallback ok\n");
+shutdown S, 1;
+my $ra;
+print defined($ra = Net::SSLeay::ssl_read_all($ssl)) ? $ra : '';
+
+Net::SSLeay::free ($ssl);
+Net::SSLeay::CTX_free ($ctx);
+close S;
+
+print $callback_called ? "OK\n" : "ERROR\n";
+exit;
+
+sub verify2 {
+ my ($ok, $x509_store_ctx) = @_;
+ print "**** Verify 2 called ($ok)\n";
+ my $x = Net::SSLeay::X509_STORE_CTX_get_current_cert($x509_store_ctx);
+ if ($x) {
+ print "Certificate:\n";
+ print " Subject Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_subject_name($x))
+ . "\n";
+ print " Issuer Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_issuer_name($x))
+ . "\n";
+ }
+ $callback_called++;
+ return 1;
+}
+
+sub verify {
+ my ($ok, $x509_store_ctx) = @_;
+
+ print "**** Verify called ($ok)\n";
+ my $x = Net::SSLeay::X509_STORE_CTX_get_current_cert($x509_store_ctx);
+ if ($x) {
+ print "Certificate:\n";
+ print " Subject Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_subject_name($x))
+ . "\n";
+ print " Issuer Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_issuer_name($x))
+ . "\n";
+ }
+ $callback_called++;
+ return 1; #$ok; # 1=accept cert, 0=reject
+}
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/cb-testi.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/cb-testi.pl
new file mode 100644
index 0000000..1e2f62f
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/cb-testi.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+require Net::SSLeay;
+
+sub provide_password {
+# ($buf,$siz,$rwflag,$pwd)=@_;
+ $_[0]="1234";
+ return 4;
+}
+
+Net::SSLeay::load_error_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+Net::SSLeay::randomize();
+
+$ctx=Net::SSLeay::CTX_new();
+Net::SSLeay::CTX_set_options($ctx,&Net::SSLeay::OP_ALL);
+
+Net::SSLeay::CTX_set_default_passwd_cb($ctx,\&provide_password);
+$r=Net::SSLeay::CTX_use_PrivateKey_file($ctx,"server_key.pem",&Net::SSLeay::FILETYPE_PEM());
+if($r==0) {
+ print "väärä avain\n";
+} else {
+ print "OK\n";
+}
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/cli-cert.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/cli-cert.pl
new file mode 100644
index 0000000..4d0ef0c
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/cli-cert.pl
@@ -0,0 +1,115 @@
+#!/usr/local/bin/perl
+# cli-cert.pl
+# 8.6.1998, originally written as stdio_bulk.pl Sampo Kellomaki
+# 8.12.2001, adapted to test client certificates
+#
+# Contact server using client side certificate. Demonstrates how to
+# set up the client and how to make the server request the certificate.
+# This also demonstrates how you can communicate via arbitrary stream, not
+# just a TCP one.
+# $Id: cli-cert.pl,v 1.1 2001/12/08 17:43:14 sampo Exp $
+
+use Socket;
+use Net::SSLeay qw(die_now die_if_ssl_error);
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+#$Net::SSLeay::trace = 2;
+
+($cert_pem, $key_pem, $cert_dir) = @ARGV; # Read command line
+$how_much = 10000;
+
+### Note: the following initialization is common for both client
+### and the server. In particular, it is important that VERIFY_PEER
+### is sent on the server as well, because otherwise the client
+### certificate will never be requested.
+
+$ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+Net::SSLeay::set_cert_and_key($ctx, $cert_pem, $key_pem) or die "key";
+Net::SSLeay::CTX_load_verify_locations($ctx, '', $cert_dir)
+ or die_now("CTX load verify loc=`$cert_dir' $!");
+Net::SSLeay::CTX_set_verify($ctx, &Net::SSLeay::VERIFY_PEER, \&verify);
+die_if_ssl_error('callback: ctx set verify');
+
+pipe RS, WC or die "pipe 1 ($!)";
+pipe RC, WS or die "pipe 2 ($!)";
+select WC; $| = 1;
+select WS; $| = 1;
+select STDOUT;
+$| = 1;
+
+if ($child_pid = fork) {
+ print "$$: I'm the server for child $child_pid\n";
+ $ssl = Net::SSLeay::new($ctx) or die_now "$$: new ($ssl) ($!)";
+
+ Net::SSLeay::set_rfd($ssl, fileno(RS));
+ Net::SSLeay::set_wfd($ssl, fileno(WS));
+
+ Net::SSLeay::accept($ssl) and die_if_ssl_error("$$: ssl accept: $!");
+ print "$$: Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+ print "$$: client cert: " . Net::SSLeay::dump_peer_certificate($ssl);
+
+ $got = Net::SSLeay::ssl_read_all($ssl,$how_much)
+ or die "$$: ssl read failed";
+ print "$$: got " . length($got) . " bytes\n";
+ Net::SSLeay::ssl_write_all($ssl, \$got) or die "$$: ssl write failed";
+ $got = '';
+
+ Net::SSLeay::free ($ssl); # Tear down connection
+ Net::SSLeay::CTX_free ($ctx);
+
+ wait; # wait for child to read the stuff
+
+ close WS;
+ close RS;
+ print "$$: server done ($?).\n"
+ . (($? >> 8) ? "ERROR\n" : "OK\n");
+ exit;
+}
+
+print "$$: I'm the child.\n";
+sleep 1; # Give server time to get its act together
+
+$ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+Net::SSLeay::set_rfd($ssl, fileno(RC));
+Net::SSLeay::set_wfd($ssl, fileno(WC));
+Net::SSLeay::connect($ssl);
+die_if_ssl_error("ssl connect");
+
+print "$$: Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+print "$$: server cert: " . Net::SSLeay::dump_peer_certificate($ssl);
+
+# Exchange data
+
+$data = 'B' x $how_much;
+Net::SSLeay::ssl_write_all($ssl, \$data) or die "$$: ssl write failed";
+$got = Net::SSLeay::ssl_read_all($ssl, $how_much)
+ or die "$$: ssl read failed";
+
+Net::SSLeay::free ($ssl); # Tear down connection
+Net::SSLeay::CTX_free ($ctx);
+close WC;
+close RC;
+exit ($data ne $got);
+
+sub verify {
+ return 1;
+ my ($ok, $x509_store_ctx) = @_;
+ print "$$: **** Verify 2 called ($ok)\n";
+ my $x = Net::SSLeay::X509_STORE_CTX_get_current_cert($x509_store_ctx);
+ if ($x) {
+ print "$$: Certificate:\n";
+ print " Subject Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_subject_name($x))
+ . "\n";
+ print " Issuer Name: "
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_issuer_name($x))
+ . "\n";
+ }
+ $callback_called++;
+ return 1;
+}
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ephemeral.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ephemeral.pl
new file mode 100644
index 0000000..7736c07
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ephemeral.pl
@@ -0,0 +1,22 @@
+#!/usr/local/bin/perl -w
+# ephemeral.pl mikem@open.com.au
+#
+# Test and demonstrate setting ephemeral RSA key
+
+use Net::SSLeay qw(die_now);
+
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::ERR_load_crypto_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+
+$ctx = Net::SSLeay::CTX_new()
+ or die_now("Failed to create SSL_CTX $!");
+
+$rsa = &Net::SSLeay::RSA_generate_key(512, 0x10001); # 0x10001 = RSA_F4
+
+die_now("Failed to set ephemeral RSA key $!")
+ if (&Net::SSLeay::CTX_set_tmp_rsa($ctx, $rsa) < 0);
+
+print "OK\n";
+exit;
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_authenticated_page.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_authenticated_page.pl
new file mode 100755
index 0000000..24aa024
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_authenticated_page.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+# 8.6.1998, Sampo Kellomaki
+# Get a page via HTTP and print some info about it.
+# Demonstrates how to generate password header
+
+use Net::SSLeay qw(get_https make_headers);
+use MIME::Base64;
+
+($user, $pass, $site, $port, $path) = @ARGV;
+die "Usage: ./get_authenticated_page.pl user pass www.bacus.com 443 /\n"
+ unless $path;
+
+($page, $result, %headers) =
+ get_https($site, $port, $path,
+ make_headers('Authorization' =>
+ 'Basic ' . MIME::Base64::encode("$user:$pass"))
+ );
+
+print "Result was `$result'\n";
+foreach $h (sort keys %headers) {
+ print "Header `$h'\tvalue `$headers{$h}'\n";
+}
+
+print "=================== Page follows =================\n";
+print $page;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_page.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_page.pl
new file mode 100755
index 0000000..6e36739
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_page.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+# 8.6.1998, Sampo Kellomaki
+# Get a page via HTTP and print some info about it.
+
+use Net::SSLeay;
+
+($site, $port, $path) = @ARGV;
+die "Usage: ./get_page.pl www.cryptsoft.com 443 /\n" unless $path;
+
+($page, $result, %headers) = &Net::SSLeay::get_https($site, $port, $path);
+
+print "Result was `$result'\n";
+foreach $h (sort keys %headers) {
+ print "Header `$h'\tvalue `$headers{$h}'\n";
+}
+
+print "=================== Page follows =================\n";
+print $page;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_page_cert.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_page_cert.pl
new file mode 100644
index 0000000..9b6aff2
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/get_page_cert.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+# 8.6.1998, Sampo Kellomaki
+# 25.3.2002, added certificate display --Sampo
+# $Id: get_page_cert.pl,v 1.1 2002/03/25 23:47:15 sampo Exp $
+# Get a page via HTTP and print some info about it.
+
+use Net::SSLeay;
+
+($site, $port, $path) = @ARGV;
+die "Usage: ./get_page.pl www.cryptsoft.com 443 /\n" unless $path;
+
+($page, $result, $headers, $server_cert)
+ = &Net::SSLeay::get_https3($site, $port, $path);
+
+if (!defined($server_cert) || ($server_cert == 0)) {
+ print "Subject Name: undefined, Issuer Name: undefined\n";
+} else {
+ print 'Subject Name: '
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_subject_name($server_cert))
+ . 'Issuer Name: '
+ . Net::SSLeay::X509_NAME_oneline(
+ Net::SSLeay::X509_get_issuer_name($server_cert))
+ . "\n";
+}
+
+print "Headers were `$headers'\n";
+print "Result was `$result'\n";
+
+print "=================== Page follows =================\n";
+print $page;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/https-proxy-snif.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/https-proxy-snif.pl
new file mode 100755
index 0000000..3b9927e
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/https-proxy-snif.pl
@@ -0,0 +1,135 @@
+#!/usr/bin/perl
+# 5.6.1998, Sampo Kellomaki
+
+$usage = <foo
+
Bar Cool
+HTTP
+ ;
+
+ &Net::SSLeay::free ($ssl); # Tear down connection
+ close NS;
+}
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/makecert.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/makecert.pl
new file mode 100755
index 0000000..ffcceee
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/makecert.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+# 19.6.1998, Sampo Kellomaki
+# 31.3.1999, Upgraded to OpenSSL-0.9.2b, --Sampo
+# 31.7.1999, Upgraded to OpenSSL-0.9.3a, fixed depending on symlinks
+# (thanks to schinder@@pobox_.com) --Sampo
+# 7.4.2001, Upgraded to OpenSSL-0.9.6a --Sampo
+# 9.11.2001, EGD patch from Mik Firestone --Sampo
+#
+# Make a self signed cert
+
+use File::Copy;
+
+$dir = shift;
+$exe_path = shift || '/usr/local/ssl/bin/openssl';
+
+$egd = defined( $ENV{EGD_POOL} ) ? "-rand $ENV{EGD_POOL}" : '';
+
+open (REQ, "|$exe_path req -config $dir/req.conf "
+ . "-x509 -days 3650 -new -keyout $dir/key.pem $egd >$dir/cert.pem")
+ or die "cant open req. check your path ($!)";
+print REQ <
+
+use Socket;
+use Net::SSLeay;
+Net::SSLeay::load_error_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+Net::SSLeay::randomize();
+
+($dest_serv, $port, $msg) = @ARGV; # Read command line
+$port = getservbyname ($port, 'tcp') unless $port =~ /^\d+$/;
+$dest_ip = gethostbyname ($dest_serv);
+$dest_serv_params = sockaddr_in($port, $dest_ip);
+
+socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
+connect (S, $dest_serv_params) or die "connect: $!";
+select (S); $| = 1; select (STDOUT);
+
+# The network connection is now open, lets fire up SSL
+
+$ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+$ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+Net::SSLeay::set_fd($ssl, fileno(S)); # Must use fileno
+$res = Net::SSLeay::connect($ssl);
+print "Cipher '" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+# Exchange data
+
+$res = Net::SSLeay::write($ssl, $msg); # Perl knows how long $msg is
+shutdown S, 1; # Half close --> No more output, sends EOF to server
+$got = Net::SSLeay::read($ssl); # Perl returns undef on failure
+print $got;
+
+Net::SSLeay::free ($ssl); # Tear down connection
+Net::SSLeay::CTX_free ($ctx);
+close S;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/passwd-cb.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/passwd-cb.pl
new file mode 100644
index 0000000..3156fe3
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/passwd-cb.pl
@@ -0,0 +1,34 @@
+#!/usr/local/bin/perl
+# passwd-cb.pl
+#
+# Check using password callbacks to decrypt private keys
+# $Id: passwd-cb.pl,v 1.2 2002/06/05 18:25:47 sampo Exp $
+
+use Socket;
+use Net::SSLeay qw(die_now die_if_ssl_error);
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+
+my ($key_pem, $password) = @ARGV;
+
+print "Keyfile: `$key_pem', pw: `$password'\n";
+$calls = 0;
+
+sub callback {
+ $calls++;
+ print "Callback `$password'\n";
+ return $password;
+}
+
+my $ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+if (1) {
+Net::SSLeay::CTX_set_default_passwd_cb($ctx, \&callback);
+}
+Net::SSLeay::CTX_use_PrivateKey_file($ctx, $key_pem,
+ &Net::SSLeay::FILETYPE_PEM())
+ or print "CTX_use_PrivateKey_file failed\n";
+
+print "calls=$calls\n";
+
+#EOF
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/req.conf b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/req.conf
new file mode 100644
index 0000000..0e102c1
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/req.conf
@@ -0,0 +1,42 @@
+# SSLeay config file for generating self signed certificate
+# for testing Net::SSLeay.pm (see `make test' alias test.pl)
+#
+# 8.6.1998, Sampo Kellomaki
+
+####################################################################
+[ req ]
+default_bits = 1024
+default_keyfile = privkey.pem
+distinguished_name = req_distinguished_name
+attributes = req_attr
+encrypt_rsa_key = no
+
+[ req_distinguished_name ]
+countryName = Country Name (2 letter code)
+countryName_min = 2
+countryName_max = 2
+countryName_default = PT
+
+stateOrProvinceName = State or Province Name (optional)
+
+localityName = Locality Name (eg, city)
+localityName_default = Lisboa
+
+organizationName = Organization Name (eg, company)
+
+organizationalUnitName = Organizational Unit Name (eg, section)
+
+commonName = Common Name (the name of your machine)
+commonName_max = 64
+
+emailAddress = Email Address
+emailAddress_max = 40
+
+# Challenge password is used for delievering the cert (or what)???
+
+[ req_attr ]
+challengePassword = A challenge password
+challengePassword_min = 0
+challengePassword_max = 80
+
+#EOF
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/server_key.pem b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/server_key.pem
new file mode 100644
index 0000000..07c79c8
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/server_key.pem
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,932256E9ACCDC996
+
+wav+t55gSrsCnvgeikRqcQKXuUeXEqEcL6zwNsTMIis6rpGuXkBYH5Ezntm6h/5h
+2vZDu2vTOeq7QbNmTbKWbU6Rw0e7hlnWcPFhg3ssLNrh0XW3ynZ56gLCj/TRHj9V
+4c7UnozeDTb+XYEAp+1Yj21Bpepectak6j4dZfhhJteEGWMDj9faNTbA08LX87Wn
+JiNhlhIWl7ncS/13riwLqsemHcTFlNCaoANaVCUKEGoIFZmz1OoYJvBWLj7HnxDU
++Z/lvf3o1glE1EP3XcCACGhapfZcALlYhz1qGTA6ProZ/sIJGLAYAi8uobJlA1E0
+SwGXNm4rtMocR7utO649/g92SFvGZmG715t2P8jBa4MqgV5H3oIIVJK1YiL6Zmk5
+jZMPmTDctXD61dLnTFXa+m0vLJMZAMD8UkhtbuCMYzTy0dIHBaxTYNxggSbfbbKJ
+6QijHZHn+iygyudCxYWXtZQ1uyBFzU4wpEGqugngf3T0W2TWpiM3PQjh+vymxKRZ
+UVY5LGejMuz3HpgFcJ+Hs6DCJYAECUWWjSPhTXvTifNIZq5XdaeCveyLkMnCHQ7y
+LW64XcZ9jWzI+FOqRmLMYcUoHh8eZyB6X6ITC3wy2g1ovc5KrD+OuC+HOyLvvb+8
+avnSoc1+maBC7su7htE/EPP6X/zvNzLM4Ky4JvmNtFR5+CzD7xnwoS3jY97u6gMz
+MHjb7t2pA7rFnVImwivvi/y3sEAL9P5N+mL+q82q9qsmcb58tlkAteUpcrOvlmRk
+3kzlM0tz9/Rm4bYttEDBt67Fg4/hZbZ+m+5BMzVWWdtZIdHUIGJjew==
+-----END RSA PRIVATE KEY-----
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ssl-inetd-serv.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ssl-inetd-serv.pl
new file mode 100755
index 0000000..7f2a183
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ssl-inetd-serv.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+# ssl-inetd-serv.pl - SSL echo server run from inetd
+#
+# Copyright (c) 1996,1998 Sampo Kellomaki . All Rights Reserved.
+# Date: 27.6.1996, 19.6.1998
+#
+# /etc/inetd.conf:
+# ssltst stream tcp nowait root /usr/sampo/ssl-inetd-serv.pl ssl-inetd
+#
+# /etc/services:
+# ssltst 1234/tcp
+#
+
+use Net::SSLeay qw(die_now die_if_ssl_error);
+Net::SSLeay::load_error_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+
+chdir '/usr/sampo' or die "chdir: $!";
+
+$| = 1; # STDOUT Piping hot!
+
+open LOG, ">>log" or die "Can't open log file $!";
+select LOG; $| = 1;
+print "ssl-inetd-serv.pl started\n";
+
+print "Creating SSL context...\n";
+$ctx = Net::SSLeay::CTX_new or die_now("CTX_new ($ctx) ($!)");
+print "Setting private key and certificate...\n";
+Net::SSLeay::set_server_cert_and_key($ctx, 'cert.pem', 'key.pem') or die "key";
+
+print "Creating SSL connection (context was '$ctx')...\n";
+$ssl = Net::SSLeay::new($ctx) or die_now("new ($ssl) ($!)");
+
+print "Setting fds (ctx $ctx, con $ssl)...\n";
+Net::SSLeay::set_rfd($ssl, fileno(STDIN));
+Net::SSLeay::set_wfd($ssl, fileno(STDOUT));
+
+print "Entering SSL negotiation phase...\n";
+
+Net::SSLeay::accept($ssl);
+die_if_ssl_error("accept: $!");
+
+print "Cipher '" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+#
+# Connected. Exchange some data.
+#
+
+$got = Net::SSLeay::ssl_read_all($ssl) or die "$$: ssl read failed";
+print "Got `$got' (" . length ($got) . " chars)\n";
+$got = uc $got;
+Net::SSLeay::ssl_write_all($ssl, $got) or die "$$: ssl write failed";
+
+print "Tearing down the connection.\n";
+
+Net::SSLeay::free ($ssl);
+Net::SSLeay::CTX_free ($ctx);
+
+close LOG;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ssl_diff.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ssl_diff.pl
new file mode 100755
index 0000000..e9fd1cf
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/ssl_diff.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+# 18.6.1998, Sampo Kellomaki
+# Tool used to sync SSLeay.xs with ssl.h. Prints what .h has that .xs doesn't.
+# Usage: examples/ssl_diff.pl *pat* SSLeay.xs /usr/local/ssl/include/ssl.h
+# E.g: examples/ssl_diff.pl SSL_CTX_ SSLeay.xs /usr/local/ssl/include/ssl.h
+
+($pat, $xs, $h) = @ARGV;
+
+open XS, $xs or die "Cant open .xs `$xs' ($!)\n";
+foreach $_ () {
+ next unless ($name) = /^($pat.*?)\(/o;
+ $xs{$name} = 1;
+}
+close XS;
+
+open H, $h or die "Cant open .h `$h' ($!)\n";
+foreach $_ () {
+ next unless ($name) = /($pat.*?)\(/o;
+ print "$name\n" unless $xs{$name};
+}
+close H;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/sslcat.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/sslcat.pl
new file mode 100755
index 0000000..505acec
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/sslcat.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/perl
+# sslcat.pl - Send a message and receive a reply from server.
+#
+# Copyright (c) 1996-2001 Sampo Kellomaki , All Rights Reserved.
+# Date: 7.6.1996
+
+$host = 'localhost' unless $host = shift;
+$port = 443 unless $port = shift;
+$msg = "get \n\r\n" unless $msg = shift;
+
+print "$host $port $msg\n";
+use Net::SSLeay qw(sslcat);
+print sslcat($host, $port, $msg);
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/sslecho.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/sslecho.pl
new file mode 100755
index 0000000..e4f1c0e
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/sslecho.pl
@@ -0,0 +1,100 @@
+#!/usr/bin/perl -w
+# sslecho.pl - Echo server using SSL
+#
+# Copyright (c) 1996,1998 Sampo Kellomaki , All Rights Reserved.
+# Date: 27.6.1996, 8.6.1998
+# 7.12.2001, added more support for client side certificate testing --Sampo
+# $Id: sslecho.pl,v 1.2 2001/12/08 17:43:14 sampo Exp $
+#
+# Usage: ./sslecho.pl *port* *cert.pem* *key.pem*
+#
+# This server always binds to localhost as this is all that is needed
+# for tests.
+
+die "Usage: ./sslecho.pl *port* *cert.pem* *key.pem*\n" unless $#ARGV == 2;
+($port, $cert_pem, $key_pem) = @ARGV;
+$our_ip = "\x7F\0\0\x01";
+
+$trace = 2;
+use Socket;
+use Net::SSLeay qw(sslcat die_now die_if_ssl_error);
+$Net::SSLeay::trace = 3; # Super verbose debugging
+
+#
+# Create the socket and open a connection
+#
+
+$our_serv_params = pack ('S n a4 x8', &AF_INET, $port, $our_ip);
+socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
+bind (S, $our_serv_params) or die "bind: $! (port=$port)";
+listen (S, 5) or die "listen: $!";
+
+#
+# Prepare SSLeay
+#
+
+Net::SSLeay::load_error_strings();
+Net::SSLeay::ERR_load_crypto_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+Net::SSLeay::randomize();
+
+print "sslecho: Creating SSL context...\n" if $trace>1;
+$ctx = Net::SSLeay::CTX_new () or die_now("CTX_new ($ctx): $!\n");
+print "sslecho: Setting cert and RSA key...\n" if $trace>1;
+Net::SSLeay::CTX_set_cipher_list($ctx,'ALL');
+Net::SSLeay::set_cert_and_key($ctx, $cert_pem, $key_pem) or die "key";
+
+while (1) {
+
+ print "sslecho $$: Accepting connections...\n" if $trace>1;
+ ($addr = accept (NS, S)) or die "accept: $!";
+ $old_out = select (NS); $| = 1; select ($old_out); # Piping hot!
+
+ if ($trace) {
+ ($af,$client_port,$client_ip) = unpack('S n a4 x8',$addr);
+ @inetaddr = unpack('C4',$client_ip);
+ print "$af connection from " . join ('.', @inetaddr)
+ . ":$client_port\n" if $trace;;
+ }
+
+ #
+ # Do SSL negotiation stuff
+ #
+
+ print "sslecho: Creating SSL session (cxt=`$ctx')...\n" if $trace>1;
+ $ssl = Net::SSLeay::new($ctx) or die_now("ssl new ($ssl): $!");
+
+ print "sslecho: Setting fd (ctx $ctx, con $ssl)...\n" if $trace>1;
+ Net::SSLeay::set_fd($ssl, fileno(NS));
+
+ print "sslecho: Entering SSL negotiation phase...\n" if $trace>1;
+
+ Net::SSLeay::accept($ssl);
+ die_if_ssl_error("ssl_echo: ssl accept: ($!)");
+
+ print "sslecho: Cipher `" . Net::SSLeay::get_cipher($ssl)
+ . "'\n" if $trace;
+
+ #
+ # Connected. Exchange some data.
+ #
+
+ $got = Net::SSLeay::ssl_read_all($ssl) or die "$$: ssl read failed";
+ print "sslecho $$: got " . length($got) . " bytes\n" if $trace==2;
+ print "sslecho: Got `$got' (" . length ($got) . " chars)\n" if $trace>2;
+ $got = uc $got;
+ if ($got eq 'CLIENT-CERT-TEST') {
+ $got .= Net::SSLeay::dump_peer_certificate($ssl) . "END CERT\n";
+ }
+ Net::SSLeay::ssl_write_all($ssl, $got) or die "$$: ssl write failed";
+ $got = ''; # in case it was huge
+
+ print "sslecho: Tearing down the connection.\n\n" if $trace>1;
+
+ Net::SSLeay::free ($ssl);
+ close NS;
+}
+Net::SSLeay::CTX_free ($ctx);
+close S;
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/stdio_bulk.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/stdio_bulk.pl
new file mode 100755
index 0000000..85fdada
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/examples/stdio_bulk.pl
@@ -0,0 +1,81 @@
+#!/usr/local/bin/perl
+# stdio_bulk.pl - 8.6.1998, Sampo Kellomaki
+# Send tons of stuff over SSL connected by STDIO pipe.
+# This also demonstrates how you can communicate via arbitrary stream, not
+# just a TCP one.
+# $Id: stdio_bulk.pl,v 1.2 2001/12/08 17:43:14 sampo Exp $
+
+use Socket;
+use Net::SSLeay qw(die_now die_if_ssl_error);
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::SSLeay_add_ssl_algorithms();
+#$Net::SSLeay::trace = 2;
+
+($cert_pem, $key_pem, $how_much) = @ARGV; # Read command line
+
+$ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+Net::SSLeay::set_server_cert_and_key($ctx, $cert_pem, $key_pem) or die "key";
+
+pipe RS, WC or die "pipe 1 ($!)";
+pipe RC, WS or die "pipe 2 ($!)";
+select WC; $| = 1;
+select WS; $| = 1;
+select STDOUT;
+$| = 1;
+
+if ($child_pid = fork) {
+ print "$$: I'm the server for child $child_pid\n";
+ $ssl = Net::SSLeay::new($ctx) or die_now "$$: new ($ssl) ($!)";
+
+ Net::SSLeay::set_rfd($ssl, fileno(RS));
+ Net::SSLeay::set_wfd($ssl, fileno(WS));
+
+ Net::SSLeay::accept($ssl) and die_if_ssl_error("$$: ssl accept: $!");
+ print "$$: Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+ #print "$$: " . Net::SSLeay::dump_peer_certificate($ssl);
+
+ $got = Net::SSLeay::ssl_read_all($ssl,$how_much)
+ or die "$$: ssl read failed";
+ print "$$: got " . length($got) . " bytes\n";
+ Net::SSLeay::ssl_write_all($ssl, \$got) or die "$$: ssl write failed";
+ $got = '';
+
+ Net::SSLeay::free ($ssl); # Tear down connection
+ Net::SSLeay::CTX_free ($ctx);
+
+ wait; # wait for child to read the stuff
+
+ close WS;
+ close RS;
+ print "$$: server done ($?).\n"
+ . (($? >> 8) ? "ERROR\n" : "OK\n");
+ exit;
+}
+
+print "$$: I'm the child.\n";
+sleep 1; # Give server time to get its act together
+
+$ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+Net::SSLeay::set_rfd($ssl, fileno(RC));
+Net::SSLeay::set_wfd($ssl, fileno(WC));
+Net::SSLeay::connect($ssl);
+die_if_ssl_error("ssl connect");
+
+print "$$: Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
+print "$$: " . Net::SSLeay::dump_peer_certificate($ssl);
+
+# Exchange data
+
+$data = 'B' x $how_much;
+Net::SSLeay::ssl_write_all($ssl, \$data) or die "$$: ssl write failed";
+$got = Net::SSLeay::ssl_read_all($ssl, $how_much)
+ or die "$$: ssl read failed";
+
+Net::SSLeay::free ($ssl); # Tear down connection
+Net::SSLeay::CTX_free ($ctx);
+close WC;
+close RC;
+exit ($data ne $got);
+
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/ptrcasttst.c b/~downloads/files/tmp/Net_SSLeay.pm-1.22/ptrcasttst.c
new file mode 100644
index 0000000..ccf76f5
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/ptrcasttst.c
@@ -0,0 +1,43 @@
+#include
+#include
+
+/* test if a pointer can be cast to an unsigned long int and back
+ (aspa@hip.fi)
+
+ tested on: HP-UX B.10.20, AIX 4.3, IRIX 5.3, OSF1 v4.0B and SunOS 5.6
+ with both gcc and native compilers, and linux/gcc (i686) +
+ linux/gcc (alpha).
+
+*/
+
+#define FROMTYPE void *
+#define FROMTYPESTR "void *"
+#define TOTYPE unsigned long int
+#define TOTYPESTR "unsigned long int"
+
+int main(argc, argv)
+ int argc; /* e.g. HP-UX cc doesn't support ISO C by default */
+ char *argv[];
+{
+ /* heap should be near the end of process's address space */
+ FROMTYPE bufptr = (FROMTYPE) malloc(500);
+ volatile TOTYPE i; /* prevent optimization */
+
+ printf("%s: '%s' len: %d, '%s' len: %d.\n", argv[0], FROMTYPESTR,
+ sizeof(TOTYPE), TOTYPESTR, sizeof(char *));
+
+ i = (TOTYPE)bufptr;
+ if( ((FROMTYPE)i) != bufptr ) {
+ printf("%s: failed: (%p != %p).\n", argv[0], (FROMTYPE)i, bufptr);
+ printf("ERROR: a '%s' can't be cast to a '%s' and back \n",
+ FROMTYPESTR, TOTYPESTR);
+ printf("ERROR: without loss of information on this architecture.\n");
+ exit(1);
+ } else {
+ printf("ptrcasttst: ok (%p == %p).\n", (FROMTYPE)i, bufptr);
+ exit(0);
+ }
+
+ exit(1);
+}
+
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/ptrtstrun.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/ptrtstrun.pl
new file mode 100644
index 0000000..7bbf41b
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/ptrtstrun.pl
@@ -0,0 +1,26 @@
+use Config;
+
+print "cc: " . $Config{'cc'} . "\n";
+
+if(runptrcasttst()) {
+ print "ok\n";
+} else {
+ print "not ok.\n";
+}
+
+sub runptrcasttst {
+ if( !($r = system "$Config{'cc'} -o ptrcasttst ptrcasttst.c") ) {
+ print "ok\n";
+ } else {
+ print "not ok\n";
+ return 0;
+ }
+ if( !($r = system "./ptrcasttst") ) {
+ print "ok\n";
+ return 1;
+ } else {
+ print "not ok\n";
+ return 0;
+ }
+ return 0;
+}
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/test.pl b/~downloads/files/tmp/Net_SSLeay.pm-1.22/test.pl
new file mode 100644
index 0000000..8f06bda
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/test.pl
@@ -0,0 +1,221 @@
+#!/usr/bin/perl
+# 24.6.1998, 8.7.1998, Sampo Kellomaki
+# 31.7.1999, added more tests --Sampo
+# 7.4.2001, upgraded to OpenSSL-0.9.6a --Sampo
+# 25.4.2001, added test for 64 bit pointer cast by aspa --Sampo
+# 20.8.2001, moved checking which perl to use higher up. Thanks
+# Gordon Lack --Sampo
+# 7.12.2001, added test cases for client certificates and proxy SSL --Sampo
+# 28.5.2002, added contributed test cases for callbacks --Sampo
+# $Id: test.pl,v 1.6 2002/08/16 20:58:41 sampo Exp $
+#
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+use Config;
+
+######################### We start with some black magic to print on failure.
+
+# Change 1..1 below to 1..last_test_to_print .
+# (It may become useful if the test is moved to ./t subdirectory.)
+
+BEGIN {print "1..20\n";}
+END {print "not ok 1\n" unless $::loaded;}
+select(STDOUT); $|=1;
+use Net::SSLeay qw(die_now die_if_ssl_error);
+$::loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+my $trace = $ENV{TEST_TRACE} || 1; # 0=silent, 1=verbose, 2=debugging
+#$Net::SSLeay::trace = 3;
+
+my $mb = 1; # size of the bulk tests
+my $errors = 0;
+my $silent = $trace>1 ? '' : '>makecert.out 2>makecert.err';
+my ($pid,$redir,$res,$bytes,$secs);
+
+sub test {
+ my ($num, $test) = @_;
+ $errors++ unless $test;
+ return $test ? "ok $num\n" : "*** not ok $num\n\n"
+}
+
+my $inc = join ' ', map("-I$_", @INC);
+#$perl = "perl $inc";
+my $perl = "$Config{perlpath} $inc";
+print "Using perl at `$perl'\n" if $trace>1;
+
+### Pointer casting test for 64 bit architectures
+
+print "Testing pointer to int casting...\n";
+system "$perl ptrtstrun.pl";
+
+&Net::SSLeay::load_error_strings();
+&Net::SSLeay::SSLeay_add_ssl_algorithms();
+print &test(2, &Net::SSLeay::hello == 1);
+
+my $cert_pem = "examples/cert.pem";
+my $key_pem = "examples/key.pem";
+
+unless (-r $cert_pem && -r $key_pem) {
+ print "### Making self signed certificate just for these tests...\n"
+ if $trace;
+
+ open F, "openssl_path" or die "Can't read `./openssl_path': $!\n";
+ $exe_path = ;
+ close F;
+ chomp $exe_path;
+
+ $ENV{RANDFILE} = '.rnd'; # not random, but good enough
+ system "$perl examples/makecert.pl examples $exe_path $silent";
+ print " certificate done.\n\n" if $trace;
+}
+
+# Test decrypting key here
+
+$res = `$perl examples/passwd-cb.pl $key_pem.e secret`;
+print ">>>$res<<<\n" if $trace>1;
+print &test(3, $res !~ /failed/ && $res =~ /calls=1/);
+
+$res = `$perl examples/passwd-cb.pl $key_pem.e incorrect`;
+print ">>>$res<<<\n" if $trace>1;
+print &test(4, $res =~ /failed/ && $res =~ /calls=1/);
+
+unless ($pid = fork) {
+ print "\tSpawning a test server on port 1212, pid=$$...\n" if $trace;
+ $redir = $trace<3 ? '>>sslecho.log 2>&1' : '';
+ exec("$perl examples/sslecho.pl 1212 $cert_pem $key_pem $redir");
+}
+sleep 1; # if server is slow
+
+$res = `$perl examples/sslcat.pl 127.0.0.1 1212 ssleay-test`;
+print $res if $trace>1;
+print &test(5, ($res =~ /SSLEAY-TEST/));
+
+$res = `$perl examples/minicli.pl 127.0.0.1 1212 another`;
+print $res if $trace>1;
+print &test(6, ($res =~ /ANOTHER/));
+
+$res = `$perl examples/callback.pl 127.0.0.1 1212 examples`;
+print $res if $trace>1;
+print &test(7, ($res =~ /OK\s*$/));
+
+$res = `$perl examples/bio.pl`;
+print $res if $trace>1;
+print &test(8, ($res =~ /OK\s*$/));
+
+$res = `$perl examples/ephemeral.pl`;
+print $res if $trace>1;
+print &test(9, ($res =~ /OK\s*$/));
+
+$bytes = $mb * 1024 * 1024;
+print "\tSending $mb MB over localhost, may take a while (and some VM)...\n"
+ if $trace;
+$secs = time;
+$res = `$perl examples/bulk.pl 127.0.0.1 1212 $bytes`;
+print $res if $trace>1;
+$secs = (time - $secs) || 1;
+print "\t\t...took $secs secs (" . int($mb*1024/$secs). " KB/s)\n" if $trace;
+print &test(10, ($res =~ /OK\s*$/));
+
+kill $pid; # We don't need that server any more
+
+if ($exe_path !~ /\.exe$/i) { # Not Windows where fork does not work
+ $res = `$perl examples/cli-cert.pl $cert_pem $key_pem examples`;
+ print $res if $trace>1;
+ print &test(11, ($res =~ /client cert: Subject Name: \/C=XX/));
+
+ print "\tSending $mb MB over pipes, may take a while (and some VM)...\n"
+ if $trace;
+ $secs = time;
+ $res = `$perl examples/stdio_bulk.pl $cert_pem $key_pem $bytes`;
+ print $res if $trace>1;
+ $secs = (time - $secs) || 1;
+ print "\t\t...took $secs secs (".int($mb*1024/$secs)." KB/s)\n" if $trace;
+ print &test(12, ($res =~ /OK\s*$/));
+} else {
+ print "skipped on Windows 11\n";
+ print "skipped on Windows 12\n";
+}
+
+sub provide_password {
+ return '1234';
+}
+
+### Check that the default password callback works
+
+$ctx=Net::SSLeay::CTX_new();
+Net::SSLeay::CTX_set_default_passwd_cb($ctx,\&provide_password);
+$r=Net::SSLeay::CTX_use_PrivateKey_file($ctx,"examples/server_key.pem",
+ &Net::SSLeay::FILETYPE_PEM());
+print &test(13, $r);
+
+#app.iplanet.com
+my @sites = qw(
+www.cdw.com
+banking.wellsfargo.com
+secure.worldgaming.net
+www.ubs.com
+ );
+#www.engelschall.com
+#www.openssl.org
+
+if ($trace) {
+print " Now about to contact external sites...\n\twww.bacus.pt\n";
+print map "\t$_\n", @sites;
+print " You have 5 seconds of time to hit Ctrl-C if you do not like this.\n";
+print " So far there were no errors in tests.\n" unless $errors;
+print "*** $errors tests failed already.\n" if $errors;
+print " Following tests _will_ fail if you do not have network\n"
+ . " connectivity (or if the servers are down or have changed).\n";
+sleep 5;
+}
+
+print &test('14 www.bacus.pt',
+ &Net::SSLeay::sslcat("www.bacus.pt", 443,
+ "get\n\r\n\r") =~ //);
+
+sub test_site ($$) {
+ my ($test_nro, $site) = @_;
+ my ($p, $r) = ('','');
+ my %h;
+ warn "Trying $site...\n";
+ $Net::SSLeay::trace=0;
+ $Net::SSLeay::version=0;
+
+ ($p, $r, %h) = Net::SSLeay::get_https($site, 443, '/');
+ if (!defined($h{SERVER})) {
+ print &test("$test_nro $site ($r)", scalar($r =~ /^HTTP\/1/s));
+ print "\t$site, initial attempt with auto negotiate failed\n";
+
+ $Net::SSLeay::trace=3;
+ $Net::SSLeay::version=2;
+ print "\tset version to 2\n";
+ ($p, $r, %h) = Net::SSLeay::get_https($site, 443, '/');
+
+ $Net::SSLeay::version=3;
+ print "\tset version to 3\n";
+ ($p, $r, %h) = Net::SSLeay::get_https($site, 443, '/');
+ $Net::SSLeay::trace=0;
+ }
+
+ print join '', map("\t$_=>$h{$_}\n", sort keys %h) if $trace>1;
+
+ if (defined($h{SERVER})) {
+ print &test("$test_nro $site ($h{SERVER})", scalar($r =~ /^HTTP\/1/s));
+ } else {
+ print &test("$test_nro $site ($r)", scalar($r =~ /^HTTP\/1/s));
+ }
+}
+
+my $i = 15;
+my $s;
+for $s (@sites) {
+ &test_site($i++, $s );
+}
+
+die "*** WARNING: There were $errors errors in the tests.\n" if $errors;
+print "All tests completed OK.\n" if $trace;
+__END__
diff --git a/~downloads/files/tmp/Net_SSLeay.pm-1.22/typemap b/~downloads/files/tmp/Net_SSLeay.pm-1.22/typemap
new file mode 100644
index 0000000..8d1d2a2
--- /dev/null
+++ b/~downloads/files/tmp/Net_SSLeay.pm-1.22/typemap
@@ -0,0 +1,35 @@
+TYPEMAP
+SSL_METHOD * T_IV
+SSL_CTX * T_IV
+SSL_SESSION * T_IV
+SSL * T_IV
+RSA * T_IV
+DH * T_IV
+X509 * T_IV
+X509_CRL * T_IV
+X509_LOOKUP * T_IV
+X509_NAME * T_IV
+BIO * T_IV
+BIO_METHOD * T_IV
+EVP_PKEY * T_IV
+CERT * T_IV
+LHASH * T_IV
+struct cert_st * T_IV
+X509_STORE_CTX * T_IV
+ASN1_UTCTIME * T_IV
+EVP_PKEY * T_IV
+const char * T_PV
+const unsigned char * T_PV
+CRYPTO_EX_new * T_IV
+CRYPTO_EX_dup * T_IV
+CRYPTO_EX_free * T_IV
+SSL_CIPHER * T_IV
+int * T_IV
+COMP_METHOD * T_IV
+X509_STORE * T_IV
+X509_NAME_STACK * T_IV
+pem_password_cb * T_IV
+callback_ret_int * T_IV
+callback_no_ret * T_IV
+cb_ssl_int_int_ret_RSA * T_IV
+cb_ssl_int_int_ret_DH * T_IV
diff --git a/~downloads/files/tools/.info b/~downloads/files/tools/.info
new file mode 100644
index 0000000..f456e5f
--- /dev/null
+++ b/~downloads/files/tools/.info
@@ -0,0 +1,2 @@
+Some software required to install STTA.
+
diff --git a/~downloads/files/tools/.info.es b/~downloads/files/tools/.info.es
new file mode 100644
index 0000000..8ce3e96
--- /dev/null
+++ b/~downloads/files/tools/.info.es
@@ -0,0 +1,2 @@
+Software necesario para instalar STTA.
+
diff --git a/~downloads/files/tools/Convert-ASN1-0.16.tar.gz b/~downloads/files/tools/Convert-ASN1-0.16.tar.gz
new file mode 100644
index 0000000..9be1d3d
Binary files /dev/null and b/~downloads/files/tools/Convert-ASN1-0.16.tar.gz differ
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22.tar.gz b/~downloads/files/tools/Net_SSLeay.pm-1.22.tar.gz
new file mode 100644
index 0000000..236f867
Binary files /dev/null and b/~downloads/files/tools/Net_SSLeay.pm-1.22.tar.gz differ
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/.rnd b/~downloads/files/tools/Net_SSLeay.pm-1.22/.rnd
new file mode 100644
index 0000000..2599bd5
Binary files /dev/null and b/~downloads/files/tools/Net_SSLeay.pm-1.22/.rnd differ
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Changes b/~downloads/files/tools/Net_SSLeay.pm-1.22/Changes
new file mode 100644
index 0000000..2d49dcb
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Changes
@@ -0,0 +1,167 @@
+Revision history for Perl extension Net::SSLeay.
+
+0.01 Thu Jun 27 03:56:00 1996
+ - original version; created by h2xs 1.16
+0.02 Trial with SSL.pm name
+0.03 Renamed everything Net::SSLeay
+0.04 19.7.1996 Fixed some 0.6.1 incompatibilities, namely removed
+ #include , fixed typo in SSL_get_cerificate, fixed
+ the return type of the same. --Sampo
+1.00 19.6.1998, Sampo Kellomaki
+ - overhauled to SSLeay-0.9.0
+ - renamed cat to sslcat
+ - added lots of convenience functions, like get_https
+ - added couple of X509 routines
+ - improved tests and documentation
+ - fixed callbacks (but found that old callbacks dont work)
+1.01 23.6.1998, Sampo Kellomaki
+ - made Makefile.PL check SSLeay version and to be more CPAN kosher
+ - changed build instructions to build outside perl source tree
+ - added random number initialization using /dev/urandom (if available)
+ - made ssl_write_all accept references, this is more memory efficient
+1.02 8.7.1998, Sampo Kellomaki
+ - Added SSL_(CTX)?_set_options and associated constants
+ - Slight clean-ups
+1.03 4.1.1999, Sampo Kellomaki
+ - Merged URI encoding patch to make_form
+ from Joe Rhett
+ - changed sslcat, ssl_read_all, ssl_write_all to return error messages
+ as second member of list. Functions continue to behave the old way
+ if scalar return value is used (they check this with wantarray).
+ Change was suggested by Joe Rhett.
+ - changed $trace levels so that 0 does not produce any output
+ - changed get_https and put_https to fake error 900 in $response
+ return field
+ - changed print_errs and some other internals to return textual
+ errors instead of error count
+ - changed SSLeay.xs comments from #if 0 to #define REM. This will
+ hopefully make it easier to compile with some vendor compilers
+ - Added version detection code for OpenSSL-0.9.1c and checked
+ build
+1.04 31.1.1999, Sampo Kellomaki
+ - Backward incompatible changes in OpenSSL API mean that 1.04 will
+ drop support for SSLeay and all OpenSSL versions prior
+ to 0.9.2b release. Thanks guys!
+ - Detected errors in OpenSSL-0.9.2b/ssl/ssl.h - see patch in README
+ - Reordered arguments of several functions to track OpenSSL-0.9.2b
+ changes. This also changes the order of args in corresponding
+ perl functions. You have been warned!
+ - SSL_use_certificate_ASN1(s,d,len) // swapped d and len
+ - WARNING: Possibly fatal verify_callback parameter list issue
+ is still standing
+ - cleaned up many macros that used to access ctx->session directly,
+ OpenSSL-0.9.2b defines thes macros properly so I use them now.
+ - Added SSL_ctrl() and SSL_CTX_ctrl()
+ - Added SSL_get_options(), SSL_CTX_get_options(),
+ SSL_CTX_set_cipher_list()
+ - Removed SSL_add_session(), SSL_remove_session(),
+ and SSL_flush_sessions() per #if 0 in ssl.h, line 667
+ - Updated paths in various utility programs
+ - Upgraded version number detection logic in Makefile.PL
+ - Added -rsaref flag to Makefile.PL. This allows linking against rsaref
+ 30.7.1999, final squeeze to get this out --Sampo
+ - upgrade to OpenSSL-0.9.3a
+ - upper case all header names so keys of the hash returned
+ from get_https are predictible
+ - fixed get_https and post_https so they don't do shutdown
+ anymore. This used to cause headaches when connection
+ renegotiation happened.
+ - applied ssl_read_CRLF patch by Clinton Wong
+ - ActivePerl diffs from anton@@_genua.de applied,
+ but not tested.
+1.05 31.1.1999, --Sampo
+ - fixed test cert creation (lack of symlinks, reported
+ by schinder@@_pobox.com)
+ - callbacks fixed and tested to work
+ - added Authentication examples
+ - added couple more X509_STORE_CTX family functions
+1.06 7.4.2001, --Sampo
+ - fixed ssl_read_all bug where `0' input was mistaken for EOF.
+ - openssl-0.9.6a fixes (e.g. random number generator init)
+ - various minor fixes subnitted by fellow netters (sorry, I lost track
+ of your names so I do not name the contributors here)
+1.07 18.4.2001,
+ - TLSv1 support by Stephen C. Koehler
+1.08 25.4.2001,
+ - applied 64 bit fixes by Marko Asplund
+ 17.7.2001,
+ - applied error codes and SSL_*_method patch by Noel Burton-Krahn
+ via aspa
+ - warning cleanups by Jared Allison
+ - do last loop fixes from Jim Bowlin
+ - Fixed extra-newline-if-header-already-contained-newline problem
+ reported by Sean McMurray (first reported by
+ Yuao TANIGAWA but not fixed by me back
+ then for some reason, my bad)
+ - Added ability to set client certificate for https_cat and sslcat
+ as suggested by Avi Ben-Harush
+ - created do_https2 with more rational calling sequence
+ 18.7.2001,
+ - numerous windows oriented fixes from Eric A Selber
+
+ - bumped OpenSSL version requirement to 0.9.6b and tested
+ - merged in Net::SSLeay::Handle by Jim Bowlin
+1.09 20.8.2001,
+ - fixed Makefile.PL (computation of bin_path) and test.pl ($perl
+ use before defined) per Gordon Lack
+ 11.9.2001,
+ - Patch by Jeremy Mates to make Handle.pm
+ more acceptable for older perls
+ 25.9.2001,
+ - systematically implemented many of the newer functions of
+ openssl API (per popular request and for completeness)
+1.10 7.12.2001,
+ - Added proxy support by Bruno De Wolf
+1.11 14.12.2001,
+ - Added proxy support to Net::SSLeay::Handle, too
+1.12 6.1.2002
+ - cosmetic fix to socket options from
+ Kwindla Hultman Kramer
+1.13 13.2.2002
+ - eliminated initializing random numbers using /etc/passwd per
+ comments by Matt Messier
+ - tested against openssl-0.9.6c
+1.14 25.3.2002
+ - added code to Makefile.PL to verify that the same C compiler
+ is used for both perl and openssl
+ - added code to Makefile.PL to support aCC on HPUX. Detective
+ work contributed by Marko Asplund.
+ - added peer certificate support to hilevel API, inspired
+ by mock@@_obscurity.org
+1.15 3.4.2002
+ - added `use bytes' from Marcus Taylor
+ This avoids unicode/utf8 (as may appear in some XML docs)
+ from fooling the length comuptations.
+ - Dropped support for perl5.005_03 because I do not have opportunity
+ to test it. --Sampo
+1.16 17.4.2002-22.5.2002
+ - applied patch to fix CTX_set_default_passwd_cb() contributed
+ by Timo Kujala , --Sampo
+ - similar patch by Chris Ridd
+ - applied patch to add various API functions by mikem@open.com_.au
+ - 5.005_03 compat fix for Handle.pm from Jim Mintha
+1.17 8.6.2002
+ - further fixes for Net::SSLeay::Handle from jbowlin@@_linklint.org
+ - improved README.Win32 and added RECIPE.Win32 from
+ Hermann Kelley
+1.18 15.6.2002
+ - applied minor patch by Mark Veltzer to Makefile.PL
+1.19 10.8.2002-16.8.2002
+ - Added SSL_peek patch to ssl_read_until from
+ Peter Behroozi --Sampo
+ - Improved Windows instructions per Marcel Bucher
+1.20 16.8.2002
+ - Additional patch by Peter Behroozi --Sampo
+ - Patch by Mike McCauley mikem@open.com_.au
+1.21 6.9.2002
+ - Patch by Mike McCauley mikem@open.com_.au
+ 19.9.2002
+ - applied patch from Tim Engler
+ 30.10.2002,
+ - perl-5.8/gcc-3.2 patch on Makefile.PL from
+ Joern_Hoos@@notes.uni-paderborn._de, lucho@@galix._com,
+ bellis@@saberlogic._com, and simonclewer@@superquote._com
+1.22 8.1.2003
+ - proxy auth fix from Bill.Muller@@ubsw_..com
+ 18.2.2003
+ - RAND patch from Toni Andjelkovic
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Credits b/~downloads/files/tools/Net_SSLeay.pm-1.22/Credits
new file mode 100644
index 0000000..012c80e
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Credits
@@ -0,0 +1,7 @@
+anton@genua.de Win32
+Clinton Wong
+Jim Bowlin for contributing Net::SSLeay::Handle
+Eric A Selber for Windows fixes and testing
+Marko Asplund for many suggestions and fixes
+
+See Changes file for other contributions.
\ No newline at end of file
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/MANIFEST b/~downloads/files/tools/Net_SSLeay.pm-1.22/MANIFEST
new file mode 100644
index 0000000..793f950
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/MANIFEST
@@ -0,0 +1,40 @@
+Changes
+Credits
+README
+README.Win32
+QuickRef
+MANIFEST
+Makefile.PL
+SSLeay.pm
+SSLeay.xs
+typemap
+test.pl
+ptrcasttst.c
+ptrtstrun.pl
+.rnd
+RECIPE.Win32
+examples/minicli.pl
+examples/sslecho.pl
+examples/sslcat.pl
+examples/ssl-inetd-serv.pl
+examples/callback.pl
+examples/bulk.pl
+examples/stdio_bulk.pl
+examples/https-proxy-snif.pl
+examples/get_page.pl
+examples/get_page_cert.pl
+examples/get_authenticated_page.pl
+examples/req.conf
+examples/makecert.pl
+examples/ssl_diff.pl
+examples/cli-cert.pl
+examples/server_key.pem
+examples/cb-testi.pl
+examples/bio.pl
+examples/ephemeral.pl
+examples/passwd-cb.pl
+Net-SSLeay-Handle-0.50/Changes
+Net-SSLeay-Handle-0.50/Handle.pm
+Net-SSLeay-Handle-0.50/MANIFEST
+Net-SSLeay-Handle-0.50/Makefile.PL
+Net-SSLeay-Handle-0.50/test.pl
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Makefile b/~downloads/files/tools/Net_SSLeay.pm-1.22/Makefile
new file mode 100644
index 0000000..52153ee
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Makefile
@@ -0,0 +1,847 @@
+# This Makefile is for the Net::SSLeay extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.03 (Revision: 1.63) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# DEFINE => q[-DPERL5]
+# DIR => [q[Net-SSLeay-Handle-0.50]]
+# DISTNAME => q[Net_SSLeay.pm]
+# INC => q[-I/usr/include -I/usr/inc32]
+# LIBS => [q[-L/usr -L/usr/lib -L/usr/out32dll -lssl -lcrypto]]
+# NAME => q[Net::SSLeay]
+# OPTIMIZE => q[-O]
+# VERSION_FROM => q[SSLeay.pm]
+# dist => { COMPRESS=>q[gzip], SUFFIX=>q[gz] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/local/lib/perl5/5.8.0/i686-linux/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fpic
+CCDLFLAGS = -rdynamic
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib
+LDFLAGS = -L/usr/local/lib
+LIBC =
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.4.18-4gb
+RANLIB = :
+SO = so
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+NAME = Net::SSLeay
+DISTNAME = Net_SSLeay.pm
+NAME_SYM = Net_SSLeay
+VERSION = 1.22
+VERSION_SYM = 1_22
+XS_VERSION = 1.22
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INSTALLDIRS = site
+PREFIX = /usr/local
+SITEPREFIX = /usr/local
+VENDORPREFIX =
+INSTALLPRIVLIB = /usr/local/lib/perl5/5.8.0
+INSTALLSITELIB = /usr/local/lib/perl5/site_perl/5.8.0
+INSTALLVENDORLIB =
+INSTALLARCHLIB = /usr/local/lib/perl5/5.8.0/i686-linux
+INSTALLSITEARCH = /usr/local/lib/perl5/site_perl/5.8.0/i686-linux
+INSTALLVENDORARCH =
+INSTALLBIN = /usr/local/bin
+INSTALLSITEBIN = /usr/local/bin
+INSTALLVENDORBIN =
+INSTALLSCRIPT = /usr/local/bin
+PERL_LIB = /usr/local/lib/perl5/5.8.0
+PERL_ARCHLIB = /usr/local/lib/perl5/5.8.0/i686-linux
+SITELIBEXP = /usr/local/lib/perl5/site_perl/5.8.0
+SITEARCHEXP = /usr/local/lib/perl5/site_perl/5.8.0/i686-linux
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/local/lib/perl5/5.8.0/i686-linux/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERL = $(PERL)
+ABSPERLRUN = $(ABSPERL)
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULL_AR = /usr/bin/ar
+PERL_CORE = 0
+NOOP = $(SHELL) -c true
+NOECHO = @
+
+VERSION_MACRO = VERSION
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+MAKEMAKER = /usr/local/lib/perl5/5.8.0/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.03
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = Net/SSLeay
+BASEEXT = SSLeay
+PARENT_NAME = Net
+DLBASE = $(BASEEXT)
+VERSION_FROM = SSLeay.pm
+INC = -I/usr/include -I/usr/inc32
+DEFINE = -DPERL5
+OBJECT = $(BASEEXT)$(OBJ_EXT)
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+
+# Handy lists of source code files:
+XS_FILES= SSLeay.xs
+C_FILES = SSLeay.c \
+ ptrcasttst.c
+O_FILES = SSLeay.o \
+ ptrcasttst.o
+H_FILES =
+MAN1PODS =
+MAN3PODS = SSLeay.pm
+INST_MAN1DIR = blib/man1
+MAN1EXT = 1
+INSTALLMAN1DIR = /usr/local/man/man1
+INSTALLSITEMAN1DIR = /usr/local/man/man$(MAN1EXT)
+INST_MAN3DIR = blib/man3
+MAN3EXT = 3
+INSTALLMAN3DIR = /usr/local/man/man3
+INSTALLSITEMAN3DIR = /usr/local/man/man$(MAN3EXT)
+PERM_RW = 644
+PERM_RWX = 755
+
+# work around a famous dec-osf make(1) feature(?):
+makemakerdflt: all
+
+.SUFFIXES: .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+# Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
+# some make implementations will delete the Makefile when we rebuild it. Because
+# we call false(1) when we rebuild it. So make(1) is not completely wrong when it
+# does so. Our milage may vary.
+# .PRECIOUS: Makefile # seems to be not necessary anymore
+
+.PHONY: all config static dynamic test linkext manifest
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)/Config.pm $(PERL_INC)/config.h
+
+# Where to put things:
+INST_LIBDIR = $(INST_LIB)/Net
+INST_ARCHLIBDIR = $(INST_ARCHLIB)/Net
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT)
+INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT)
+INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs
+
+EXPORT_LIST =
+
+PERL_ARCHIVE =
+
+PERL_ARCHIVE_AFTER =
+
+TO_INST_PM = SSLeay.pm \
+ ptrtstrun.pl
+
+PM_TO_BLIB = ptrtstrun.pl \
+ blib/lib/Net/ptrtstrun.pl \
+ SSLeay.pm \
+ blib/lib/Net/SSLeay.pm
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(PERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1) ;'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+XSUBPPDIR = /usr/local/lib/perl5/5.8.0/ExtUtils
+XSUBPP = $(XSUBPPDIR)/xsubpp
+XSPROTOARG =
+XSUBPPDEPS = $(XSUBPPDIR)/typemap typemap $(XSUBPP)
+XSUBPPARGS = -typemap $(XSUBPPDIR)/typemap -typemap typemap
+XSUBPP_EXTRA_ARGS =
+
+
+# --- MakeMaker tools_other section:
+
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+LD = cc
+MV = mv
+NOOP = $(SHELL) -c true
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+
+# The following is a portable way to say mkdir -p
+# To see which directories are created, change the if 0 to if 1
+MKPATH = $(PERLRUN) "-MExtUtils::Command" -e mkpath
+
+# This helps us to minimize the effect of the .exists files A yet
+# better solution would be to have a stable file in the perl
+# distribution with a timestamp of zero. But this solution doesn't
+# need any changes to the core distribution and works with older perls
+EQUALIZE_TIMESTAMP = $(PERLRUN) "-MExtUtils::Command" -e eqtime
+
+# Here we warn users that an old packlist file was found somewhere,
+# and that they should call some uninstall routine
+WARN_IF_OLD_PACKLIST = $(PERL) -we 'exit unless -f $$ARGV[0];' \
+-e 'print "WARNING: I have found an old package in\n";' \
+-e 'print "\t$$ARGV[0].\n";' \
+-e 'print "Please make sure the two installations are not conflicting\n";'
+
+UNINST=0
+VERBINST=0
+
+MOD_INSTALL = $(PERL) "-I$(INST_LIB)" "-I$(PERL_LIB)" "-MExtUtils::Install" \
+-e "install({@ARGV},'$(VERBINST)',0,'$(UNINST)');"
+
+DOC_INSTALL = $(PERL) -e '$$\="\n\n";' \
+-e 'print "=head2 ", scalar(localtime), ": C<", shift, ">", " L<", $$arg=shift, "|", $$arg, ">";' \
+-e 'print "=over 4";' \
+-e 'while (defined($$key = shift) and defined($$val = shift)){print "=item *";print "C<$$key: $$val>";}' \
+-e 'print "=back";'
+
+UNINSTALL = $(PERLRUN) "-MExtUtils::Install" \
+-e 'uninstall($$ARGV[0],1,1); print "\nUninstall is deprecated. Please check the";' \
+-e 'print " packlist above carefully.\n There may be errors. Remove the";' \
+-e 'print " appropriate files manually.\n Sorry for the inconveniences.\n"'
+
+
+# --- MakeMaker dist section:
+ZIPFLAGS = -r
+TO_UNIX = @$(NOOP)
+TAR = tar
+POSTOP = @$(NOOP)
+ZIP = zip
+DIST_DEFAULT = tardist
+CI = ci -u
+SHAR = shar
+COMPRESS = gzip
+DIST_CP = best
+PREOP = @$(NOOP)
+TARFLAGS = cvf
+DISTVNAME = $(DISTNAME)-$(VERSION)
+SUFFIX = gz
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+CCFLAGS = -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+OPTIMIZE = -O
+PERLTYPE =
+MPOLLUTE =
+
+
+# --- MakeMaker const_loadlibs section:
+
+# Net::SSLeay might depend on some other libraries:
+# See ExtUtils::Liblist for details
+#
+EXTRALIBS = -L/usr -L/usr/lib -lssl -lcrypto
+LDLOADLIBS = -L/usr -L/usr/lib -lssl -lcrypto
+BSLOADLIBS =
+LD_RUN_PATH = /usr/lib
+
+
+# --- MakeMaker const_cccmd section:
+CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \
+ $(CCFLAGS) $(OPTIMIZE) \
+ $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
+ $(XS_DEFINE_VERSION)
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIB="$(LIB)"\
+ LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"\
+ OPTIMIZE="$(OPTIMIZE)"\
+ PASTHRU_DEFINE="$(PASTHRU_DEFINE)"\
+ PASTHRU_INC="$(PASTHRU_INC)"
+
+
+# --- MakeMaker c_o section:
+
+.c.i:
+ cc -E -c $(PASTHRU_INC) $(INC) \
+ $(CCFLAGS) $(OPTIMIZE) \
+ $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
+ $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i
+
+.c.s:
+ $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+.c$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+.C$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C
+
+.cpp$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp
+
+.cxx$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx
+
+.cc$(OBJ_EXT):
+ $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc
+
+
+# --- MakeMaker xs_c section:
+
+.xs.c:
+ $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
+
+
+# --- MakeMaker xs_o section:
+
+.xs$(OBJ_EXT):
+ $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
+ $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+
+# --- MakeMaker top_targets section:
+
+all :: pure_all manifypods
+ @$(NOOP)
+
+pure_all :: config pm_to_blib subdirs linkext
+ @$(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ @$(NOOP)
+
+config :: Makefile $(INST_LIBDIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_ARCHAUTODIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_AUTODIR)/.exists
+ @$(NOOP)
+
+$(INST_AUTODIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_AUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_AUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_AUTODIR)
+
+$(INST_LIBDIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_LIBDIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_LIBDIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_LIBDIR)
+
+$(INST_ARCHAUTODIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_ARCHAUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_ARCHAUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)
+
+config :: $(INST_MAN3DIR)/.exists
+ @$(NOOP)
+
+
+$(INST_MAN3DIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_MAN3DIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_MAN3DIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_MAN3DIR)
+
+help:
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+ @$(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make dynamic"
+#dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT) $(INST_PM)
+dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT)
+ @$(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP = SSLeay.bs
+
+# As Mkbootstrap might not write a file (if none is required)
+# we use touch to prevent make continually trying to remake it.
+# The DynaLoader only reads a non-empty file.
+$(BOOTSTRAP): Makefile $(INST_ARCHAUTODIR)/.exists
+ @echo "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
+ @$(PERLRUN) \
+ "-MExtUtils::Mkbootstrap" \
+ -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
+ @$(TOUCH) $(BOOTSTRAP)
+ $(CHMOD) $(PERM_RW) $@
+
+$(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists
+ @rm -rf $(INST_BOOT)
+ -cp $(BOOTSTRAP) $(INST_BOOT)
+ $(CHMOD) $(PERM_RW) $@
+
+
+# --- MakeMaker dynamic_lib section:
+
+# This section creates the dynamically loadable $(INST_DYNAMIC)
+# from $(OBJECT) and possibly $(MYEXTLIB).
+ARMAYBE = :
+OTHERLDFLAGS =
+INST_DYNAMIC_DEP =
+
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
+ $(RM_F) $@
+ LD_RUN_PATH="$(LD_RUN_PATH)" $(LD) $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)
+ $(CHMOD) $(PERM_RWX) $@
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+#static :: Makefile $(INST_STATIC) $(INST_PM)
+static :: Makefile $(INST_STATIC)
+ @$(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)/.exists
+ $(RM_RF) $@
+ $(FULL_AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
+ $(CHMOD) $(PERM_RWX) $@
+ @echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
+
+
+
+# --- MakeMaker manifypods section:
+POD2MAN_EXE = /usr/local/bin/pod2man
+POD2MAN = $(PERL) -we '%m=@ARGV;for (keys %m){' \
+-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "Makefile";' \
+-e 'print "Manifying $$m{$$_}\n";' \
+-e 'system(q[$(PERLRUN) $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\047t install $$m{$$_}\n";' \
+-e 'chmod(oct($(PERM_RW)), $$m{$$_}) or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
+
+manifypods : pure_all SSLeay.pm
+ @$(POD2MAN) \
+ SSLeay.pm \
+ $(INST_MAN3DIR)/Net::SSLeay.$(MAN3EXT)
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# The default clean, realclean and test targets in this Makefile
+# have automatically been given entries for each subdir.
+
+
+subdirs ::
+ @cd Net-SSLeay-Handle-0.50 && $(MAKE) -f $(FIRST_MAKEFILE) all $(PASTHRU)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean ::
+ -cd Net-SSLeay-Handle-0.50 && $(TEST_F) Makefile && $(MAKE) clean
+ -rm -rf SSLeay.c ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all perlmain.c tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def lib$(BASEEXT).def $(BASEEXT).exp $(BASEEXT).x core core.*perl.*.? *perl.core
+ -mv Makefile Makefile.old $(DEV_NULL)
+
+
+# --- MakeMaker realclean section:
+
+# Delete temporary files (via clean) and also delete installed files
+realclean purge :: clean
+ -cd Net-SSLeay-Handle-0.50 && $(TEST_F) Makefile.old && $(MAKE) -f Makefile.old realclean
+ -cd Net-SSLeay-Handle-0.50 && $(TEST_F) Makefile && $(MAKE) realclean
+ rm -rf $(INST_AUTODIR) $(INST_ARCHAUTODIR)
+ rm -rf $(DISTVNAME)
+ rm -f $(INST_DYNAMIC) $(INST_BOOT)
+ rm -f $(INST_STATIC)
+ rm -f blib/lib/Net/ptrtstrun.pl blib/lib/Net/SSLeay.pm
+ rm -rf Makefile Makefile.old
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+ $(NOECHO) $(NOOP)
+
+distcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+ $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+ $(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT)
+ @$(PERL) -le 'print "Warning: Makefile possibly out of date with $$vf" if ' \
+ -e '-e ($$vf="$(VERSION_FROM)") and -M $$vf < -M "Makefile";'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+
+zipdist : $(DISTVNAME).zip
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) \
+ $(DISTVNAME).tar$(SUFFIX) > \
+ $(DISTVNAME).tar$(SUFFIX)_uu
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker dist_dir section:
+distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+
+
+# --- MakeMaker dist_test section:
+
+disttest : distdir
+ cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+ cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+ -e "@all = keys %{ maniread() };" \
+ -e 'print("Executing $(CI) @all\n"); system("$(CI) @all");' \
+ -e 'print("Executing $(RCS_LABEL) ...\n"); system("$(RCS_LABEL) @all");'
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+
+install_perl :: all pure_perl_install doc_perl_install
+
+install_site :: all pure_site_install doc_site_install
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+
+pure_install :: pure_$(INSTALLDIRS)_install
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ @echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
+
+pure__install : pure_site_install
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ @$(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(INSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(INSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(INSTALLARCHLIB) \
+ $(INST_BIN) $(INSTALLBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLMAN3DIR)
+ @$(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ @$(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(INSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(INSTALLSITELIB) \
+ $(INST_ARCHLIB) $(INSTALLSITEARCH) \
+ $(INST_BIN) $(INSTALLSITEBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLSITEMAN3DIR)
+ @$(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+ @$(MOD_INSTALL) \
+ $(INST_LIB) $(INSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(INSTALLVENDORARCH) \
+ $(INST_BIN) $(INSTALLVENDORBIN) \
+ $(INST_SCRIPT) $(INSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) \
+ $(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+ -@$(MKPATH) $(INSTALLARCHLIB)
+ -@$(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(INSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ -@$(MKPATH) $(INSTALLARCHLIB)
+ -@$(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(INSTALLSITEARCH)/perllocal.pod
+
+doc_vendor_install ::
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+
+uninstall_from_perldirs ::
+ @$(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ @$(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ @$(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+PERL_HDRS = \
+ $(PERL_INC)/EXTERN.h \
+ $(PERL_INC)/INTERN.h \
+ $(PERL_INC)/XSUB.h \
+ $(PERL_INC)/av.h \
+ $(PERL_INC)/cc_runtime.h \
+ $(PERL_INC)/config.h \
+ $(PERL_INC)/cop.h \
+ $(PERL_INC)/cv.h \
+ $(PERL_INC)/dosish.h \
+ $(PERL_INC)/embed.h \
+ $(PERL_INC)/embedvar.h \
+ $(PERL_INC)/fakethr.h \
+ $(PERL_INC)/form.h \
+ $(PERL_INC)/gv.h \
+ $(PERL_INC)/handy.h \
+ $(PERL_INC)/hv.h \
+ $(PERL_INC)/intrpvar.h \
+ $(PERL_INC)/iperlsys.h \
+ $(PERL_INC)/keywords.h \
+ $(PERL_INC)/mg.h \
+ $(PERL_INC)/nostdio.h \
+ $(PERL_INC)/op.h \
+ $(PERL_INC)/opcode.h \
+ $(PERL_INC)/opnames.h \
+ $(PERL_INC)/patchlevel.h \
+ $(PERL_INC)/perl.h \
+ $(PERL_INC)/perlapi.h \
+ $(PERL_INC)/perlio.h \
+ $(PERL_INC)/perlsdio.h \
+ $(PERL_INC)/perlsfio.h \
+ $(PERL_INC)/perlvars.h \
+ $(PERL_INC)/perly.h \
+ $(PERL_INC)/pp.h \
+ $(PERL_INC)/pp_proto.h \
+ $(PERL_INC)/proto.h \
+ $(PERL_INC)/regcomp.h \
+ $(PERL_INC)/regexp.h \
+ $(PERL_INC)/regnodes.h \
+ $(PERL_INC)/scope.h \
+ $(PERL_INC)/sv.h \
+ $(PERL_INC)/thrdvar.h \
+ $(PERL_INC)/thread.h \
+ $(PERL_INC)/unixish.h \
+ $(PERL_INC)/utf8.h \
+ $(PERL_INC)/util.h \
+ $(PERL_INC)/warnings.h
+
+$(OBJECT) : $(PERL_HDRS)
+
+SSLeay.c : $(XSUBPPDEPS)
+
+
+# --- MakeMaker makefile section:
+
+$(OBJECT) : $(FIRST_MAKEFILE)
+
+# We take a very conservative approach here, but it\'s worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+Makefile : Makefile.PL $(CONFIGDEP)
+ @echo "Makefile out-of-date with respect to $?"
+ @echo "Cleaning current config before rebuilding Makefile..."
+ -@$(RM_F) Makefile.old
+ -@$(MV) Makefile Makefile.old
+ -$(MAKE) -f Makefile.old clean $(DEV_NULL) || $(NOOP)
+ $(PERLRUN) Makefile.PL
+ @echo "==> Your Makefile has been rebuilt. <=="
+ @echo "==> Please rerun the make command. <=="
+ false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) -f $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
+ @echo Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ @$(PERLRUNINST) \
+ Makefile.PL DIR=Net-SSLeay-Handle-0.50 \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+ @cd Net-SSLeay-Handle-0.50 && $(TEST_F) Makefile && $(MAKE) test $(PASTHRU)
+
+test_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: pure_all $(MAP_TARGET)
+ PERL_DL_NONLAZY=1 ./$(MAP_TARGET) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+testdb_static :: pure_all $(MAP_TARGET)
+ PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ @$(PERL) -e "print qq{\n\t$(DISTNAME)\n\t\n\t\n}" > $(DISTNAME).ppd
+ @$(PERL) -e "print qq{\t\n}" >> $(DISTNAME).ppd
+ @$(PERL) -e "print qq{\t\t\n\t\t\n\t\t\n\t\n\n}" >> $(DISTNAME).ppd
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib: $(TO_INST_PM)
+ @$(PERLRUNINST) "-MExtUtils::Install" \
+ -e "pm_to_blib({qw{ptrtstrun.pl blib/lib/Net/ptrtstrun.pl SSLeay.pm blib/lib/Net/SSLeay.pm}},'$(INST_LIB)/auto','$(PM_FILTER)')"
+ @$(TOUCH) $@
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Makefile.PL b/~downloads/files/tools/Net_SSLeay.pm-1.22/Makefile.PL
new file mode 100755
index 0000000..2643c3d
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Makefile.PL
@@ -0,0 +1,196 @@
+#!/usr/bin/perl
+# 23.6.1998, Sampo Kellomaki
+# 30.7.1999, upgraded for OpenSSL-0.9.3a --Sampo
+# 7.4.2001, upgraded to OpenSSL-0.9.6a --Sampo
+# 15.4.2001, fixed little bug in ssl directory detection --Sampo
+# 18.7.2001, fixed numerous issues reported by Eric A Selber
+# that made Windows builds painful --Sampo
+# 20.8.2001, tweaked path editing, thanks to Gordon Lack
+# --Sampo
+# $Id: Makefile.PL,v 1.11 2002/10/31 07:03:28 sampo Exp $
+#
+# Configuration script for Net::SSLeay.pm
+
+$usage = <;
+ chomp $openssl_path;
+}
+
+$vers = `$exe_path version`
+ or die "Couldn't run `$exe_path' ($?)\n";
+
+unless (($lib_name, $maj, $min, $letter) = $vers =~
+ /^(OpenSSL)\s+(\d+\.\d+)\.(\d+)([a-z]*)/) {
+ die "Openssl version test failed (`$vers' was returned, but\n"
+ . "couldn't be parsed). Either you have bogus OpenSSL or a new version\n"
+ . "has changed the version number format.\n";
+}
+
+print "You have $lib_name-$maj.$min$letter installed in $openssl_path\n";
+
+die "That's too old. Please upgrade to OpenSSL-$openssl_vers\n"
+ . "before trying to install this module. If you can't upgrade,\n"
+ . "see README for other options.\n"
+ if $maj eq '0.9' && $min < 3;
+
+warn "That's is newer than what this module was tested with ($openssl_vers). You should\n"
+ . "consider checking if there is a newer release of this module\n"
+ . "available. Everything will probably work OK, though.\n"
+ if $maj > 0.9 || $min > 6;
+
+warn "openssl-0.9.6d and earlier versions have security flaws, see advisory at www.openssl.org, upgrading to openssl-$openssl_vers is recommended.\n"
+ if $maj eq '0.9' && $min == 6 && $letter lt 'e';
+
+open F, ">openssl_path" or die "Can't write ./openssl_path: $!";
+print F $exe_path; # used by test.pl and examples/makecert.pl
+close F;
+
+### The windows option tweaking details supplied by
+### Eric A Selber . This is
+### still experimental until I get success reports.
+
+if ($windows) {
+ warn "RSAREF build on Windows not supported out of box" if $rsaref;
+ $libs = "-llibeay32 -lssleay32";
+
+ warn "Be sure to use the same compiler and options to compile your OpenSSL, perl, and Net::SSLeay. Mixing and matching compilers is not supported. (Currently I do not have a way to check this on Windows platform.)\n";
+} else {
+ ### There is some confusion over the correct ordering
+ ### of these libraries. Tarang Kumar Patel
+ ### reports this order to work on Solaris 7 and openssl-0.9.6b
+ $libs = $rsaref ? "-lssl -lcrypto -lRSAglue -lrsaref" : "-lssl -lcrypto";
+
+ ### old order which might work on some platforms
+ #$libs = $rsaref ? "-lssl -lRSAglue -lcrypto -lrsaref" : "-lssl -lcrypto";
+
+ ### Check that perl and openssl were compiled using the same compiler
+ ### and options.
+
+ ($cc_et_alia) = grep /cc\s+-/i, `strings $exe_path`;
+ if ($cc_et_alia) {
+ ($cc, %flags) = split /\s+/, $cc_et_alia;
+ if ($cc eq $Config{cc}) {
+ warn "Good. Both OpenSSL and perl seem to have been compiled with the same compiler.\n";
+ } else {
+ warn "*** $exe_path appears to be compiled with $cc ($cc_et_alia) while perl is compiled with $Config{cc}. Both must be compiled with the same compiler and flags. Mixing and matching compilers is not supported.";
+ }
+ } else {
+ warn "*** Could not figure out which C compiler was used to compile $exe_path. It is essentiall that OpenSSL, perl, and Net::SSLeay are compiled with the same compiler and flags. Mixing and matching compilers is not supported.";
+ }
+
+ ### When using aCC under HP-UX additional `+e' flag must be passed.
+ ### As the CCFLAGS is almost correct I abuse the OPTIMIZE to pass
+ ### this additional flag. Thanks to Marko Asplund (aspa@@kronodoc._fi)
+ ### for doing this bit of detective work.
+
+ if (($cc =~ /aCC/i) && ($cc_et_alia =~ /hpux/i)) {
+ warn "Enabling HPUX aCC options (+e)\n";
+ $optimize = '+e ' . $optimize;
+ }
+
+ ### An unknown contributor (sorry about loosing your name) hinted
+ ### that under gcc -fPIC will run faster than -fpic and still
+ ### be binary compatible.
+
+ if( ($Config{cc} eq 'gcc') && ($Config{'cccdlflags'} =~ /-fpic/) ) {
+ warn "Enabling gcc -fPIC optimization\n";
+ ($more_params{'CCCDLFLAGS'} = $Config{'cccdlflags'}) =~ s/-fpic/-fPIC/;
+ }
+}
+
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+my %configParams = (
+ NAME => 'Net::SSLeay',
+ VERSION_FROM => 'SSLeay.pm', # finds $VERSION
+ DIR => [ 'Net-SSLeay-Handle-0.50' ],
+ DEFINE => '-DPERL5', # perl-5.8/gcc-3.2 needs this
+ DISTNAME => 'Net_SSLeay.pm',
+ dist => { COMPRESS => 'gzip', SUFFIX => 'gz', },
+ LIBS => ["-L$openssl_path -L$openssl_path/lib -L$openssl_path/out32dll $libs"],
+ INC => "-I$openssl_path/include -I$openssl_path/inc32",
+ OPTIMIZE => $optimize,
+# Uncomment (and edit) following for debugging with gdb
+# LIBS => ['-L/usr/src/openssl-0.9.3a -lssl -lcrypto'],
+# INC => '-I/usr/src/openssl-0.9.3a/include',
+# OPTIMIZE => '-g',
+ %more_params,
+);
+
+use Config;
+if( ($Config{'cc'} eq 'gcc') && ($Config{'cccdlflags'} =~ /-fpic/) ) {
+ warn "Compiler is gcc and -fpic supplied. Tweaking it to -fPIC";
+ my $cccdlflags = $Config{'cccdlflags'};
+ $cccdlflags =~ s/-fpic/-fPIC/;
+ $configParams{'CCCDLFLAGS'} = $cccdlflags;
+};
+
+WriteMakefile(%configParams);
+
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+#WriteMakefile(
+# 'NAME' => 'Net::SSLeay::Handle',
+# 'VERSION_FROM' => 'Handle.pm', # finds $VERSION
+#);
+
+$ENV{TEST_TRACE} = 2 if $debug;
+exec "make" if $make_it;
+exec "make test" if $test_it;
+
+__END__
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Changes b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Changes
new file mode 100644
index 0000000..81ddaeb
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Changes
@@ -0,0 +1,32 @@
+Revision history for Perl extension Net::SSLeay::Handle.
+$Id: Changes,v 1.2 2002/06/07 12:10:42 sampo Exp $
+
+0.62 June 5, 2002
+
+ - Fixed? \*S problems for earlier Perls.
+ - Cleaned up proxy code.
+ Made _glob_ref() method to create unique names. Has a slight
+ memory leak. Could fix it but I think we have gone far enough
+ already.
+
+0.60 February 25, 2002
+
+ - Added READ() and WRITE() routines
+ Thanks to Rocco Caputo and Christopher Brannon
+
+0.52
+
+ - Sampo fixed some bugs (removed "our", etc)
+ - And improved make_socket so that it is aware
+ of $Net::SSLeay::proxyhost
+
+0.50 Sat Jun 23 13:46 2001
+ - Ported my old code into h2xs format
+ - Wrote POD documentation
+ - wrote test.pl
+ - comment code
+
+0.10 Sat Jun 23 11:14:12 2001
+ - original version; created by h2xs 1.20 with options
+ -XA -n Net::SSLeay::Handle
+
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Handle.pm b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Handle.pm
new file mode 100644
index 0000000..d00f261
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Handle.pm
@@ -0,0 +1,374 @@
+# $Id: Handle.pm,v 1.8 2002/06/07 12:32:26 sampo Exp $
+
+package Net::SSLeay::Handle;
+
+require 5.005_03;
+use strict;
+
+use Socket;
+use Net::SSLeay;
+
+require Exporter;
+
+use vars qw(@ISA @EXPORT_OK $VERSION);
+@ISA = qw(Exporter);
+@EXPORT_OK = qw(shutdown);
+$VERSION = '0.61';
+
+#=== Class Variables ==========================================================
+#
+# %Filenum_Object holds the attributes (see bottom of TIEHANDLE) of tied
+# handles keyed by fileno. This was the only way I could figure out how
+# to "attach" attributes to a returned glob reference.
+#
+#==============================================================================
+
+my $Initialized; #-- only _initialize() once
+my %Filenum_Object; #-- hash of hashes, keyed by fileno()
+my $Debug = 0; #-- pretty hokey
+my %Glob_Ref; #-- used to make unique \*S names for versions < 5.6
+
+#== Tie Handle Methods ========================================================
+#
+# see perldoc perltie for details.
+#
+#==============================================================================
+
+sub TIEHANDLE {
+ my ($class, $socket, $port) = @_;
+ $Debug > 10 and print "TIEHANDLE(@{[join ', ', @_]})\n";
+
+ ref $socket eq "GLOB" or $socket = $class->make_socket($socket, $port);
+
+ $class->_initialize();
+
+ my $ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
+ my $ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
+
+ my $fileno = fileno($socket);
+
+ Net::SSLeay::set_fd($ssl, $fileno); # Must use fileno
+
+ my $resp = Net::SSLeay::connect($ssl);
+
+ $Debug and print "Cipher '" . Net::SSLeay::get_cipher($ssl) . "'\n";
+
+ $Filenum_Object{$fileno} = {
+ ssl => $ssl,
+ ctx => $ctx,
+ socket => $socket,
+ fileno => $fileno,
+ };
+
+ return bless $socket, $class;
+}
+
+sub PRINT {
+ my $socket = shift;
+
+ my $ssl = _get_ssl($socket);
+ my $resp = 0;
+ for my $msg (@_) {
+ defined $msg or last;
+ $resp = Net::SSLeay::write($ssl, $msg) or last;
+ }
+ return $resp;
+}
+
+sub READLINE {
+ my $socket = shift;
+ my $ssl = _get_ssl($socket);
+ my $line = Net::SSLeay::ssl_read_until($ssl);
+ return $line ? $line : undef;
+}
+
+sub READ {
+ my ($socket, $buf, $len, $offset) = \ (@_);
+ my $ssl = _get_ssl($$socket);
+ defined($$offset) or
+ return length($$buf = Net::SSLeay::ssl_read_all($ssl, $$len));
+
+ defined(my $read = Net::SSLeay::ssl_read_all($ssl, $$len))
+ or return undef;
+
+ my $buf_len = length($$buf);
+ $$offset > $buf_len and $$buf .= chr(0) x ($$offset - $buf_len);
+ substr($$buf, $$offset) = $read;
+ return length($read);
+}
+
+sub WRITE {
+ my $socket = shift;
+ my ($buf, $len, $offset) = @_;
+ $offset = 0 unless defined $offset;
+
+ # Return number of characters written.
+ my $ssl = $socket->_get_ssl();
+ return $len if Net::SSLeay::write($ssl, substr($buf, $offset, $len));
+ return undef;
+}
+
+sub CLOSE {
+ my $socket = shift;
+ my $fileno = fileno($socket);
+ $Debug > 10 and print "close($fileno)\n";
+ my $self = $socket->_get_self();
+ delete $Filenum_Object{$fileno};
+ Net::SSLeay::free ($self->{ssl});
+ Net::SSLeay::CTX_free ($self->{ctx});
+ close $socket;
+}
+
+sub FILENO { fileno($_[0]) }
+
+
+#== Exportable Functions =====================================================
+
+# TIEHANDLE, PRINT, READLINE, CLOSE FILENO, READ, WRITE
+
+#--- shutdown(\*SOCKET, $mode) ------------------------------------------------
+# Calls to the main shutdown() don't work with tied sockets created with this
+# module. This shutdown should be able to distinquish between tied and untied
+# sockets and do the right thing.
+#------------------------------------------------------------------------------
+
+sub shutdown {
+ my ($socket, @params) = @_;
+
+ my $obj = _get_self($socket);
+ $obj and $socket = $obj->{socket};
+ return shutdown($socket, @params);
+}
+
+#==============================================================================
+
+sub debug {
+ my ($class, $debug) = @_;
+ my $old_debug = $Debug;
+ @_ >1 and $Debug = $debug || 0;
+ return $old_debug;
+}
+
+#=== Internal Methods =========================================================
+
+sub make_socket {
+ my ($class, $host, $port) = @_;
+ $Debug > 10 and print "_make_socket(@{[join ', ', @_]})\n";
+ $host ||= 'localhost';
+ $port ||= 443;
+
+ my $phost = $Net::SSLeay::proxyhost;
+ my $pport = $Net::SSLeay::proxyhost ? $Net::SSLeay::proxyport : $port;
+
+ my $dest_ip = gethostbyname( $phost || $host);
+ my $host_params = sockaddr_in($pport, $dest_ip);
+ my $socket = $^V lt 'v5.6.0' ? $class->_glob_ref("$host:$port") : undef;
+
+ socket($socket, &PF_INET(), &SOCK_STREAM(), 0) or die "socket: $!";
+ connect($socket, $host_params) or die "connect: $!";
+
+ my $old_select = select($socket); $| = 1; select($old_select);
+ $phost and do {
+ my $auth = $Net::SSLeay::proxyauth;
+ my $CRLF = $Net::SSLeay::CRLF;
+ print $socket "CONNECT $host:$port HTTP/1.0$auth$CRLF$CRLF";
+ my $line = <$socket>;
+ };
+ return $socket;
+}
+
+#--- _glob_ref($strings) ------------------------------------------------------
+#
+# Create a unique namespace name and return a glob ref to it. Would be great
+# to use the fileno but need this before we get back the fileno.
+# NEED TO LOCK THIS ROUTINE IF USING THREADS. (but it is only used for
+# versions < 5.6 :)
+#------------------------------------------------------------------------------
+
+sub _glob_ref {
+ my $class = shift;
+ my $preamb = join("", @_) || "_glob_ref";
+ my $num = ++$Glob_Ref{$preamb};
+ my $name = "$preamb:$num";
+ no strict 'refs';
+ my $glob_ref = \*$name;
+ use strict 'refs';
+
+ $Debug and do {
+ print "GLOB_REF $preamb\n";
+ while (my ($k, $v) = each %Glob_Ref) {print "$k = $v\n"}
+ print "\n";
+ };
+
+ return $glob_ref;
+}
+
+sub _initialize {
+ $Initialized++ and return;
+ Net::SSLeay::load_error_strings();
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Net::SSLeay::randomize();
+}
+
+sub __dummy {
+ my $host = $Net::SSLeay::proxyhost;
+ my $port = $Net::SSLeay::proxyport;
+ my $auth = $Net::SSLeay::proxyauth;
+}
+
+#--- _get_self($socket) -------------------------------------------------------
+# Returns a hash containing attributes for $socket (= \*SOMETHING) based
+# on fileno($socket). Will return undef if $socket was not created here.
+#------------------------------------------------------------------------------
+
+sub _get_self {
+ return $Filenum_Object{fileno(shift)};
+}
+
+#--- _get_ssl($socket) --------------------------------------------------------
+# Returns a the "ssl" attribute for $socket (= \*SOMETHING) based
+# on fileno($socket). Will cause a warning and return undef if $socket was not
+# created here.
+#------------------------------------------------------------------------------
+
+sub _get_ssl {
+ my $socket = shift;
+ return $Filenum_Object{fileno($socket)}->{ssl};
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Net::SSLeay::Handle - Perl module that lets SSL (HTTPS) sockets be
+handled as standard file handles.
+
+=head1 SYNOPSIS
+
+ use Net::SSLeay::Handle qw/shutdown/;
+ my ($host, $port) = ("localhost", 443);
+
+ tie(*SSL, "Net::SSLeay::Handle", $host, $port);
+
+ print SSL "GET / HTTP/1.0\r\n";
+ shutdown(\*SSL, 1);
+ print while ();
+ close SSL;
+
+
+=head1 DESCRIPTION
+
+Net::SSLeay::Handle allows you to request and receive HTTPS web pages
+using "old-fashion" file handles as in:
+
+ print SSL "GET / HTTP/1.0\r\n";
+
+and
+
+ print while ();
+
+If you export the shutdown routine, then the only extra code that
+you need to add to your program is the tie function as in:
+
+ my $socket;
+ if ($scheme eq "https") {
+ tie(*S2, "Net::SSLeay::Handle", host, $port);
+ $socket = \*S2;
+ else {
+ $socket = Net::SSLeay::Handle->make_socket(host, $port);
+ }
+ print $socket $request_headers;
+ ...
+
+=head2 USING EXISTING SOCKETS
+
+One of the motivations for writing this module was to avoid
+duplicating socket creation code (which is mostly error handling).
+The calls to tie() above where it is passed a $host and $port is
+provided for convenience testing. If you already have a socket
+connected to the right host and port, S1, then you can do something
+like:
+
+ my $socket \*S1;
+ if ($scheme eq "https") {
+ tie(*S2, "Net::SSLeay::Handle", $socket);
+ $socket = \*S2;
+ }
+ my $last_sel = select($socket); $| = 1; select($last_sel);
+ print $socket $request_headers;
+ ...
+
+Note: As far as I know you must be careful with the globs in the tie()
+function. The first parameter must be a glob (*SOMETHING) and the
+last parameter must be a reference to a glob (\*SOMETHING_ELSE) or a
+scaler that was assigned to a reference to a glob (as in the example
+above)
+
+Also, the two globs must be different. When I tried to use the same
+glob, I got a core dump.
+
+=head2 EXPORT
+
+None by default.
+
+You can export the shutdown() function.
+
+It is suggested that you do export shutdown() or use the fully
+qualified Net::SSLeay::Handle::shutdown() function to shutdown SSL
+sockets. It should be smart enough to distinguish between SSL and
+non-SSL sockets and do the right thing.
+
+=head1 EXAMPLES
+
+ use Net::SSLeay::Handle qw/shutdown/;
+ my ($host, $port) = ("localhost", 443);
+
+ tie(*SSL, "Net::SSLeay::Handle", $host, $port);
+
+ print SSL "GET / HTTP/1.0\r\n";
+ shutdown(\*SSL, 1);
+ print while ();
+ close SSL;
+
+=head1 TODO
+
+Better error handling. Callback routine?
+
+=head1 CAVEATS
+
+Tying to a file handle is a little tricky (for me at least).
+
+The first parameter to tie() must be a glob (*SOMETHING) and the last
+parameter must be a reference to a glob (\*SOMETHING_ELSE) or a scaler
+that was assigned to a reference to a glob ($s = \*SOMETHING_ELSE).
+Also, the two globs must be different. When I tried to use the same
+glob, I got a core dump.
+
+I was able to associate attributes to globs created by this module
+(like *SSL above) by making a hash of hashes keyed by the file head1.
+
+Support for old perls may not be 100%. If in trouble try 5.6.0 or
+newer.
+
+=head1 CHANGES
+
+Please see Net-SSLeay-Handle-0.50/Changes file.
+
+=head1 KNOWN BUGS
+
+If you let this module construct sockets for you with Perl versions
+below v.5.6 then there is a slight memory leak. Other upgrade your
+Perl, or create the sockets yourself. The leak was created to let
+these older versions of Perl access more than one Handle at a time.
+
+=head1 AUTHOR
+
+Jim Bowlin jbowlin@linklint.org
+
+=head1 SEE ALSO
+
+Net::SSLeay, perl(1), http://openssl.org/
+
+=cut
+
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/MANIFEST b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/MANIFEST
new file mode 100644
index 0000000..95c4a52
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/MANIFEST
@@ -0,0 +1,5 @@
+Changes
+Handle.pm
+Makefile.PL
+MANIFEST
+test.pl
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile
new file mode 100644
index 0000000..863cca2
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile
@@ -0,0 +1,469 @@
+# This Makefile is for the Net::SSLeay::Handle extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.03 (Revision: 1.63) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# NAME => q[Net::SSLeay::Handle]
+# VERSION_FROM => q[Handle.pm]
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/local/lib/perl5/5.8.0/i686-linux/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fpic
+CCDLFLAGS = -rdynamic
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib
+LDFLAGS = -L/usr/local/lib
+LIBC =
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.4.18-4gb
+RANLIB = :
+SO = so
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+NAME = Net::SSLeay::Handle
+DISTNAME = Net-SSLeay-Handle
+NAME_SYM = Net_SSLeay_Handle
+VERSION = 0.61
+VERSION_SYM = 0_61
+XS_VERSION = 0.61
+INST_ARCHLIB = ../blib/arch
+INST_SCRIPT = ../blib/script
+INST_BIN = ../blib/bin
+INST_LIB = ../blib/lib
+INSTALLDIRS = site
+PREFIX = /usr/local
+SITEPREFIX = /usr/local
+VENDORPREFIX =
+INSTALLPRIVLIB = /usr/local/lib/perl5/5.8.0
+INSTALLSITELIB = /usr/local/lib/perl5/site_perl/5.8.0
+INSTALLVENDORLIB =
+INSTALLARCHLIB = /usr/local/lib/perl5/5.8.0/i686-linux
+INSTALLSITEARCH = /usr/local/lib/perl5/site_perl/5.8.0/i686-linux
+INSTALLVENDORARCH =
+INSTALLBIN = /usr/local/bin
+INSTALLSITEBIN = /usr/local/bin
+INSTALLVENDORBIN =
+INSTALLSCRIPT = /usr/local/bin
+PERL_LIB = /usr/local/lib/perl5/5.8.0
+PERL_ARCHLIB = /usr/local/lib/perl5/5.8.0/i686-linux
+SITELIBEXP = /usr/local/lib/perl5/site_perl/5.8.0
+SITEARCHEXP = /usr/local/lib/perl5/site_perl/5.8.0/i686-linux
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/local/lib/perl5/5.8.0/i686-linux/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERL = $(PERL)
+ABSPERLRUN = $(ABSPERL)
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULL_AR = /usr/bin/ar
+PERL_CORE = 0
+NOOP = $(SHELL) -c true
+NOECHO = @
+
+VERSION_MACRO = VERSION
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+MAKEMAKER = /usr/local/lib/perl5/5.8.0/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.03
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = Net/SSLeay/Handle
+BASEEXT = Handle
+PARENT_NAME = Net::SSLeay
+DLBASE = $(BASEEXT)
+VERSION_FROM = Handle.pm
+OBJECT =
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+
+# Handy lists of source code files:
+XS_FILES=
+C_FILES =
+O_FILES =
+H_FILES =
+MAN1PODS =
+MAN3PODS = Handle.pm
+INST_MAN1DIR = ../blib/man1
+MAN1EXT = 1
+INSTALLMAN1DIR = /usr/local/man/man1
+INSTALLSITEMAN1DIR = /usr/local/man/man$(MAN1EXT)
+INST_MAN3DIR = ../blib/man3
+MAN3EXT = 3
+INSTALLMAN3DIR = /usr/local/man/man3
+INSTALLSITEMAN3DIR = /usr/local/man/man$(MAN3EXT)
+PERM_RW = 644
+PERM_RWX = 755
+
+# work around a famous dec-osf make(1) feature(?):
+makemakerdflt: all
+
+.SUFFIXES: .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+# Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
+# some make implementations will delete the Makefile when we rebuild it. Because
+# we call false(1) when we rebuild it. So make(1) is not completely wrong when it
+# does so. Our milage may vary.
+# .PRECIOUS: Makefile # seems to be not necessary anymore
+
+.PHONY: all config static dynamic test linkext manifest
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)/Config.pm $(PERL_INC)/config.h
+
+# Where to put things:
+INST_LIBDIR = $(INST_LIB)/Net/SSLeay
+INST_ARCHLIBDIR = $(INST_ARCHLIB)/Net/SSLeay
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC =
+INST_DYNAMIC =
+INST_BOOT =
+
+EXPORT_LIST =
+
+PERL_ARCHIVE =
+
+PERL_ARCHIVE_AFTER =
+
+TO_INST_PM = Handle.pm
+
+PM_TO_BLIB = Handle.pm \
+ ../blib/lib/Net/SSLeay/Handle.pm
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(PERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1) ;'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+LD = cc
+MV = mv
+NOOP = $(SHELL) -c true
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+
+# The following is a portable way to say mkdir -p
+# To see which directories are created, change the if 0 to if 1
+MKPATH = $(PERLRUN) "-MExtUtils::Command" -e mkpath
+
+# This helps us to minimize the effect of the .exists files A yet
+# better solution would be to have a stable file in the perl
+# distribution with a timestamp of zero. But this solution doesn't
+# need any changes to the core distribution and works with older perls
+EQUALIZE_TIMESTAMP = $(PERLRUN) "-MExtUtils::Command" -e eqtime
+
+
+# --- MakeMaker dist section skipped.
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIB="$(LIB)"\
+ LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"\
+ OPTIMIZE="$(OPTIMIZE)"\
+ PASTHRU_DEFINE="$(PASTHRU_DEFINE)"\
+ PASTHRU_INC="$(PASTHRU_INC)"
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+
+all :: pure_all manifypods
+ @$(NOOP)
+
+pure_all :: config pm_to_blib subdirs linkext
+ @$(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ @$(NOOP)
+
+config :: Makefile $(INST_LIBDIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_ARCHAUTODIR)/.exists
+ @$(NOOP)
+
+config :: $(INST_AUTODIR)/.exists
+ @$(NOOP)
+
+$(INST_AUTODIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_AUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_AUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_AUTODIR)
+
+$(INST_LIBDIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_LIBDIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_LIBDIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_LIBDIR)
+
+$(INST_ARCHAUTODIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_ARCHAUTODIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_ARCHAUTODIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)
+
+config :: $(INST_MAN3DIR)/.exists
+ @$(NOOP)
+
+
+$(INST_MAN3DIR)/.exists :: /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h
+ @$(MKPATH) $(INST_MAN3DIR)
+ @$(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.0/i686-linux/CORE/perl.h $(INST_MAN3DIR)/.exists
+
+ -@$(CHMOD) $(PERM_RWX) $(INST_MAN3DIR)
+
+help:
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+ @$(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make dynamic"
+#dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT) $(INST_PM)
+dynamic :: Makefile $(INST_DYNAMIC) $(INST_BOOT)
+ @$(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+#static :: Makefile $(INST_STATIC) $(INST_PM)
+static :: Makefile $(INST_STATIC)
+ @$(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+POD2MAN_EXE = /usr/local/bin/pod2man
+POD2MAN = $(PERL) -we '%m=@ARGV;for (keys %m){' \
+-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "Makefile";' \
+-e 'print "Manifying $$m{$$_}\n";' \
+-e 'system(q[$(PERLRUN) $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\047t install $$m{$$_}\n";' \
+-e 'chmod(oct($(PERM_RW)), $$m{$$_}) or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
+
+manifypods : pure_all Handle.pm
+ @$(POD2MAN) \
+ Handle.pm \
+ $(INST_MAN3DIR)/Net::SSLeay::Handle.$(MAN3EXT)
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean ::
+ -rm -rf ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all perlmain.c tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def lib$(BASEEXT).def $(BASEEXT).exp $(BASEEXT).x core core.*perl.*.? *perl.core
+ -mv Makefile Makefile.old $(DEV_NULL)
+
+
+# --- MakeMaker realclean section:
+
+# Delete temporary files (via clean) and also delete installed files
+realclean purge :: clean
+ rm -rf $(INST_AUTODIR) $(INST_ARCHAUTODIR)
+ rm -rf $(DISTVNAME)
+ rm -f ../blib/lib/Net/SSLeay/Handle.pm
+ rm -rf Makefile Makefile.old
+
+
+# --- MakeMaker dist_basics section skipped.
+
+# --- MakeMaker dist_core section skipped.
+
+# --- MakeMaker dist_dir section skipped.
+
+# --- MakeMaker dist_test section skipped.
+
+# --- MakeMaker dist_ci section skipped.
+
+# --- MakeMaker install section skipped.
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ @$(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+
+# We take a very conservative approach here, but it\'s worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+Makefile : Makefile.PL $(CONFIGDEP)
+ @echo "Makefile out-of-date with respect to $?"
+ @echo "Cleaning current config before rebuilding Makefile..."
+ -@$(RM_F) Makefile.old
+ -@$(MV) Makefile Makefile.old
+ -$(MAKE) -f Makefile.old clean $(DEV_NULL) || $(NOOP)
+ $(PERLRUN) Makefile.PL
+ @echo "==> Your Makefile has been rebuilt. <=="
+ @echo "==> Please rerun the make command. <=="
+ false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = ../perl
+FULLPERL = /usr/bin/perl
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+
+test_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ @$(PERL) -e "print qq{\n\t$(DISTNAME)\n\t\n\t\n}" > $(DISTNAME).ppd
+ @$(PERL) -e "print qq{\t\n}" >> $(DISTNAME).ppd
+ @$(PERL) -e "print qq{\t\t\n\t\t\n\t\t\n\t\n\n}" >> $(DISTNAME).ppd
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib: $(TO_INST_PM)
+ @$(PERLRUNINST) "-MExtUtils::Install" \
+ -e "pm_to_blib({qw{Handle.pm ../blib/lib/Net/SSLeay/Handle.pm}},'$(INST_LIB)/auto','$(PM_FILTER)')"
+ @$(TOUCH) $@
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile.PL b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile.PL
new file mode 100644
index 0000000..adc2315
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/Makefile.PL
@@ -0,0 +1,8 @@
+# $Id: Makefile.PL,v 1.2 2002/06/07 12:43:42 sampo Exp $
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'Net::SSLeay::Handle',
+ 'VERSION_FROM' => 'Handle.pm', # finds $VERSION
+);
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/pm_to_blib b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/pm_to_blib
new file mode 100644
index 0000000..e69de29
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/test.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/test.pl
new file mode 100644
index 0000000..4e7ca12
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/Net-SSLeay-Handle-0.50/test.pl
@@ -0,0 +1,140 @@
+# Original by Jim Bowlin
+# Maintenance fixes by Sampo Kellomaki
+# $Id: test.pl,v 1.5 2002/06/05 18:25:46 sampo Exp $
+#
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+######################### We start with some black magic to print on failure.
+
+BEGIN { $| = 1; print "1..3\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use Net::SSLeay::Handle qw/shutdown/;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+# app.iplanet.com
+my @sites = qw {
+ www.cdw.com
+ banking.wellsfargo.com
+ secure.worldgaming.net
+ www.ubs.com
+};
+# www.openssl.org
+# www.engelschall.com
+
+test_2();
+test_3();
+
+#== Test 2 ====================================================================
+#
+# Read home pages from @sites (taken from Net::SSLeay)
+#
+
+sub test_2 {
+ print " About to test the following external sites:\n\n";
+ print map(" $_\n", @sites), "\n";
+ print " You have 5 seconds of time to hit Ctrl-C if you do not like this.\n";
+ print " So far there were no errors in tests.\n" unless $errors;
+ print "*** $errors tests failed already.\n" if $errors;
+ print " Following tests _will_ fail if you do not have network\n"
+ . " connectivity (or if the servers are down or have changed).\n\n";
+ sleep 5;
+
+ my ($total, $success, $failure);
+ for my $site (@sites) {
+ $total++;
+ $success += test_site_2($site);
+ }
+
+ $failed = $total - $success;
+ unless ($failed) {
+ print " All sites were successful!\n";
+ }
+ else {
+ print " $failed out of $total sites failed.\n";
+ }
+ $success and print "ok 2\n";
+}
+
+sub test_site_2 {
+ my ($host, $port) = @_;
+ print " testing https://$host/ ...\n";
+ $port ||= 443;
+
+ tie(*SSL, "Net::SSLeay::Handle", $host, $port);
+ return read_home_page(\*SSL, "close");
+}
+
+sub read_home_page {
+ my ($socket, $close) = @_;
+ print $socket "GET / HTTP/1.0\r\n\r\n";
+ #shutdown($socket, 1);
+ my $head_cnt = 0;
+ my $resp = <$socket>;
+ #print $resp;
+ while (<$socket>) {
+ /\S/ or last;
+ $head_cnt++;
+ }
+ printf " %d header and ", $head_cnt;
+ my $doc_cnt = 0;
+ $doc_cnt++ while (<$socket>);
+ printf "%d document lines\n", $doc_cnt;
+ $close and close $socket;
+ return ($resp =~ m|^HTTP/1|) ? 1 : 0;
+}
+
+#== Test 3 ====================================================================
+#
+# Open 3 sockets, read from each, then close all 3.
+#
+
+sub test_3 {
+ $port = 443;
+ print "creating 3 SSL sockets ...\n";
+ tie(*SSL0, "Net::SSLeay::Handle", $sites[0], $port);
+ tie(*SSL1, "Net::SSLeay::Handle", $sites[1], $port);
+ tie(*SSL2, "Net::SSLeay::Handle", $sites[2], $port);
+
+ $sock[0] = \*SSL0;
+ $sock[1] = \*SSL1;
+ $sock[2] = \*SSL2;
+
+ my @range = (0..2);
+ my ($total, $success, $failure);
+
+ for my $i (@range) {
+ my $sock = $sock[$i];
+ $total++;
+ print " reading from $sites[$i] with socket @{[fileno($sock)]}\n";
+ $success += read_home_page($sock);
+ }
+
+ for my $i (@range) {
+ my $sock = $sock[$i];
+ print " closing socket @{[fileno($sock)]}\n";
+ close($sock);
+ }
+
+ $failed = $total - $success;
+ unless ($failed) {
+ print " All sites were successful!\n";
+ }
+ else {
+ print " $failed out of $total sites failed.\n";
+ }
+ $success and print "ok 3\n";
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/QuickRef b/~downloads/files/tools/Net_SSLeay.pm-1.22/QuickRef
new file mode 100644
index 0000000..7e7f00b
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/QuickRef
@@ -0,0 +1,268 @@
+(This quick reference list was contributed by anton@genua.de. Thanks, --Sampo)
+
+Net::SSLeay - useful function prototypes
+
+
+#----------------------------------
+# Import frequently used functions
+#----------------------------------
+
+use Net::SSLeay qw(die_now die_if_ssl_error);
+
+$errs = die_if_ssl_error($msg);
+ Program dies with $msg if print_errs() was able to find and print
+ some errors.
+ $errs is 0 if no error occurred.
+
+die_now($msg);
+ Program dies unconditionally! print_errs($msg) is used to print out
+ errors before dying.
+
+
+#--------------------------
+# Unsorted prototypes
+#--------------------------
+
+$count = Net::SSLeay::print_errs($msg);
+ Prints SSLeay-error stack with included $msg via 'warn'. Number of
+ printed errors is returned (->$count).
+
+void Net::SSLeay::randomize($seed_file,$seed_string);
+void Net::SSLeay::randomize();
+ Load random bytes from $seed_file and from string $seed_string.
+ Also uses $Net::SSLeay::random_device and $Net::SSLeay::how_random
+ (Bits!) if used without parameters.
+
+void Net::SSLeay::RAND_seed($seed_string);
+ Seeds randomgenerator with $seed_string.
+
+$bytes_read = Net::SSLeay::RAND_load_file($file_name, $how_much);
+ Loads $how_much bytes randomness from file $file_name.
+
+$bytes_written = Net::SSLeay::RAND_write_file($file_name);
+ Writes randomness to $file_name.
+
+void Net::SSLeay::load_error_strings();
+ Load SSL error messages to make error output more informative.
+
+void Net::SSLeay::ERR_load_crypto_strings();
+ Load crypto-API related error messages.
+
+void Net::SSLeay::SSLeay_add_ssl_algorithms();
+ Add support for supported ciphers.
+
+$ctx = Net::SSLeay::CTX_new();
+ Creates SSL-context.
+
+int Net::SSLeay::CTX_set_default_verify_paths($ctx);
+ Load default location where to find certificates to verify
+ remote certificates. This value is precompiled in SSLeay-Toolkit.
+
+int Net::SSLeay::CTX_load_verify_locations($ctx, $cert_file, $cert_dir);
+ Set verify location. File with certificates or hashed directory.
+
+void Net::SSLeay::CTX_set_verify($ctx, $mode , \&verify_cb);
+ Set mode and callback what to do with remote certificates.
+ $mode:
+ &Net::SSLeay::VERIFY_NONE
+ &Net::SSLeay::VERIFY_PEER
+ &Net::SSLeay::VERIFY_FAIL_IF_NO_PEER_CERT
+ &Net::SSLeay::VERIFY_CLIENT_ONCE
+ \&verify_cb:
+ $ok = verify_cb($ok,$x509_store_ctx);
+ Callback gets info if SSL-toolkit verified certificate ($ok)
+ and certificate store location.
+
+void Net::SSLeay::CTX_set_default_passwd_cb($ctx,\&passwd_cb);
+ If our RSA private key is passphrase protected and this callback is
+ defined, then do not ask on the terminal but call the function.
+ \&passwd_cb:
+ $passwd = verify_cb($verify);
+ If $verify is true, then the callback is supposed to make sure
+ the returned password has been verified.
+
+$bool = Net::SSLeay::CTX_use_certificate_file($ctx,$cert,$type);
+$bool = Net::SSLeay::CTX_use_PrivateKey_file($ctx,$key,$type);
+ Functions to load cert/key from filename ($cert/$key) with filetype
+ $type into SSL-context.
+ Filetypes are:
+ &Net::SSLeay::FILETYPE_PEM
+
+$ssl = Net::SSLeay::new($ctx)
+ Creates a SSL-session in context $ctx. Returns 0 on failure.
+
+$bool = Net::SSLeay::use_certificate_file($ssl,$cert,$type);
+$bool = Net::SSLeay::use_RSAPrivateKey_file($ssl,$key,$type);
+ Functions to load cert/key from filename ($cert/$key) with filetype
+ $type into SSL-session.
+ Filetypes are:
+ &Net::SSLeay::FILETYPE_PEM
+
+$bool = Net::SSLeay::set_fd($ssl, fileno(S));
+ Connect SSL-Toolkit with TCP-connection.
+ $ssl SSL-Session
+ S open socket
+ $bool 0-failure 1-success
+
+$bool = Net::SSLeay::accept($ssl);
+ Make SSL-handshake on hot connection. I am server!
+ $ssl SSL-session
+ $bool 0-failure 1-success
+
+$bool = Net::SSLeay::connect($ssl);
+ Make SSL-handshake on hot connection. I am client!
+ $ssl SSL-session
+ $bool 0-failure 1-success
+
+$x509 = Net::SSLeay::get_peer_certificate($ssl);
+ Get X509 certificate from SSL_session.
+
+$x509 = Net::SSLeay::X509_STORE_CTX_get_current_cert($x509_store_ctx)
+ Extract current certificate from cert-store. Cert-store is
+ used in callbacks!
+
+$asn1_utctime = Net::SSLeay::X509_get_notBefore($x509);
+$asn1_utctime = Net::SSLeay::X509_get_notAfter($x509);
+$x509_name = Net::SSLeay::X509_get_subject_name($x509);
+$x509_name = Net::SSLeay::X509_get_issuer_name($x509);
+ Return information from a certificate.
+
+$string = Net::SSLeay::P_ASN1_UTCTIME_put2string($asn1_utctime);
+ Convert a asn1_utctime structure to a printable string.
+
+$string = Net::SSLeay::X509_NAME_oneline($x509_name);
+ Convert a x509_name structure to a printable string.
+
+$string = Net::SSLeay::get_cipher($ssl)
+ Return the active cipher from SSL-session $ssl.
+
+$string = Net::SSLeay::dump_peer_certificate($ssl)
+ Return Subject/Issuer from peer-certificate in printable string.
+
+$string = Net::SSLeay::PEM_get_string_X509($x509);
+ Returns a printable string containing the X509 certificate PEM encoded
+ from $x509.
+
+$mode = Net::SSLeay::CTX_get_verify_mode($ctx)
+ Return verify-mode previously set with CTX_set_verify in SSL-context.
+
+$mode = Net::SSLeay::get_verify_mode($ssl)
+ Return verify-mode in SSL-session.
+
+$written_bytes = Net::SSLeay::ssl_write_all($ssl,$string);
+ Write $string to SSL-session. This call returns undef if write failed.
+ The whole string gets written!
+
+$written_bytes = $Net::SSLeay::write($ssl,$string);
+ Write $string to SSL-session. This call returns immediately. SSL maybe
+ wrote the string not completely - check yourself or use ssl_write_all!
+
+$string = Net::SSLeay::ssl_read_all($ssl,$how_much);
+ Read everything available from the SSL-session and return it. Read a
+ maximum of $how_much Bytes (default: 2000000000).
+
+$string = Net::SSLeay::read($ssl);
+ Read one bunch of data from the SSL-session and return.
+
+void Net::SSLeay::free ($ssl);
+ Free ressources from the SSL-session.
+
+void Net::SSLeay::CTX_free ($ctx);
+ Free ressources from the SSL-context.
+
+
+#----------------------
+# MD5 - hashfunction
+#----------------------
+
+$hash = Net::SSLeay:MD5($data);
+ Computes md5 hash over $data. $hash is a binary string! Convert it to
+ a printable with $string = unpack("H32",Net::SSLeay::MD5($data));
+
+
+#----------------------
+# TCP-Connection hints
+#----------------------
+
+# Make socket unbuffered after connect succeeded.
+#
+select(S); $| = 1; select(STDOUT);
+
+# Close connection by half... from client to server. This signals EOF to
+# server. (Clear some buffers, too...??)
+# Use this if finished with sending data to remote side.
+shutdown S, 1;
+
+# Finally close connection. Do this after reading everything availlable!
+#
+close S;
+
+
+#------------------
+# TCP Client
+#------------------
+
+# #!/usr/bin/perl -w
+use strict;
+use Socket;
+my ($remote,$port, $iaddr, $paddr, $proto, $line);
+
+$remote = shift || 'localhost';
+$port = shift || 3000; # random port
+if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
+die "No port" unless $port;
+$iaddr = inet_aton($remote) || die "no host: $remote";
+$paddr = sockaddr_in($port, $iaddr);
+
+$proto = getprotobyname('tcp');
+socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
+connect(SOCK, $paddr) || die "connect: $!";
+while (defined($line = )) {
+ print $line;
+}
+
+close (SOCK) || die "close: $!";
+exit;
+
+
+#--------------------
+# TCP Server
+#--------------------
+
+# #!/usr/bin/perl -Tw
+use strict;
+BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }
+use Socket;
+use Carp;
+
+sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
+
+my $EOL = "\015\012";
+
+my $port = shift || 3000;
+my $proto = getprotobyname('tcp');
+$port = $1 if $port =~ /(\d+)/; # untaint port number
+
+socket(Server, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
+setsockopt(Server, SOL_SOCKET, SO_REUSEADDR,
+ pack("l", 1)) || die "setsockopt: $!";
+
+bind(Server, sockaddr_in($port, INADDR_ANY)) || die "bind: $!";
+listen(Server,SOMAXCONN) || die "listen: $!";
+
+logmsg "server started on port $port";
+
+my $paddr;
+
+for ( ; $paddr = accept(Client,Server); close Client) {
+ my($port,$iaddr) = sockaddr_in($paddr);
+ my $name = gethostbyaddr($iaddr,AF_INET);
+
+ logmsg "connection from $name [",
+ inet_ntoa($iaddr), "]
+ at port $port";
+
+ print Client "Hello there, $name, it's now ",
+ scalar localtime, $EOL;
+}
+
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/README b/~downloads/files/tools/Net_SSLeay.pm-1.22/README
new file mode 100644
index 0000000..1b5f107
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/README
@@ -0,0 +1,377 @@
+README - Net::SSLeay Perl module for using OpenSSL
+
+5.6.2002, Sampo Kellomaki
+Version: 1.16
+$Id: README,v 1.6 2002/06/05 18:25:45 sampo Exp $
+
+1.16: tested against openssl-0.9.6d, added more callback stuff
+1.14: added perr certificate return, HPUX aCC flags fix
+1.09: added many utlility functions of OpenSSL API, better old perl support
+1.08: 64 bit fixes, windows fixes, fixed extra newline with auth bug
+1.07: added rudimentary TLSv1 support by Stephen C. Koehler
+1.06: fixed ssl_read_all() bug where input '0' would cause loop to exit
+1.05: fixed certificate gen at make test
+1.04: overhaul for OpenSSL-0.9.3b (try http://www.openssl.org/)
+
+By popular demand...
+--------------------
+
+ perl -MNet::SSLeay -e '($p)=Net::SSLeay::get_https("www.openssl.org", 443, "/"); print $p'
+
+Prerequisites
+-------------
+
+perl-5.6.1
+ though anything starting from perl5.002 probably works.
+OpenSSL-0.9.6d
+ (try http://www.openssl.org/) -
+ This release has been tested with 0.9.6d and
+ in historical light it seems likely that future versions
+ will work as well (if major version number changes all bets
+ are off, though)
+
+Note: SSLeay is no longer supported. If you want to use Net::SSLeay with
+ SSLeay or early versions of OpenSSL, use version 1.03. The support
+ for SSLeay was dropped due to nobody maintaining it (all active
+ work goes on with OpenSSL) and due to incompatible API changes
+ in OpenSSL-0.9.2b. OpenSSL-0.9.1c support has also been dropped,
+ version 1.03 was the last one to support that.
+
+You should use the same C compiler and options to compile OpenSSL,
+perl, and Net::SSLeay. This is the only supported configuration.
+If you insist on using different compilers (perhaps because you
+obtained either OpenSSL or perl as binaries from a vendor and they
+used a compiler that you do not have) then all requests for support
+will be ignored. If the only way for you to use the same compiler
+for all three components is to recompile your openssl or perl, then
+that is exactly what I expect you to do before asking for support.
+
+Installing
+----------
+
+Unix:
+ # build OpenSSL as per instructions in that package
+
+ gunzip
+
+You should also be able to use CPAN.pm to install this module if you like.
+
+Linking with RSAref is no longer supported (the patent issue is moot
+doe to patent expiring). If you want to try it, you are on your own,
+but here's how it used to work...
+
+ For linking against RSAref add -rsaref flag like this:
+
+ ./Makefile.PL -rsaref -t # builds and tests it, link against RSAref
+
+ You must previously have built OpenSSL with RSAref support (which
+ implies first building rsaref itself), I use the RSAglue method. File
+ librsaref.a must be found in one of the locations searched by linker
+ (-L switches). Usually this means that you have to rename rsaref.a to
+ librsaref.a and copy it to suitable directory, e.g. /usr/local/ssl/lib.
+
+ N.B. AFAIK the patent that made using RSAref necessary has expired, so
+ this should be nonissue by now.
+
+Commercial Support
+------------------
+
+Commercial support for this module can be obtained from
+
+ Symlabs (netssleay@symlabs.com)
+ Tel: +351-214.222.630
+ Fax: +351-214.222.637
+
+Noncommercial support can be obtained via email from the author, but
+you are expected to do your home work well. Mails that do not full
+fill the criteria below may be silently ignored.
+
+Problems (read this before sending mail)
+----------------------------------------
+
+Please, do not send bug report before you have
+
+ - compiled your OpenSSL yourself - don't copy binaries, please
+ - compiled your perl yourself and with substantially same CFLAGS
+ and same C compiler (say `which cc' or `which gcc') as your OpenSSL.
+ This is especially applicable to link errors and shared
+ library loading problems. Please do not even dream of
+ copying a perl binary or installing perl binary from a package.
+ Perl's idea of calling conventions has to match OpenSSL's and
+ unfortunately both are quite advanced pieces of code
+ (guru duel: Larry Wall vs. Eric Young :-) with dynamic loading
+ and who knows what
+ - compiled my module from source against correct perl (say `which perl'
+ and check your path). Generally my module's build process will
+ discover correct compiler and flags from `perl -V'
+ - tried gcc, if your vendor cc fails
+
+If you send me a question or make a bug report, please remeber to mention
+
+ - Your platform and OS version (i386 Linux, Sparc Solaris, etc) (uname -a)
+ - On Linux, please report glibc version as well (ls -l /lib/libc*)
+ - Net::SSLeay version (see tar ball)
+ - OpenSSL version (`/usr/local/ssl/bin/openssl version')
+ - ANSI C compiler brand and version (e.g. gcc -v)
+
+If build fails,
+ - three compiler warnings are known to be emitted (due to lack of const
+ in some places), one of them indicates a fatal bug in callback handling,
+ but as I have not yet sorted it out, you'll simply have to ignore it
+ - if you installed OpenSSL from some distribution, try getting a fresh
+ copy from www.openssl.org and recompiling and installing it yourself
+ - make sure you are not being confused by the fact that OpenSSL-0.9.3
+ changed the location of include files to /usr/local/ssl/include/openssl/*
+ Consider deleting all old bogus headers
+ - if using newer than supported OpenSSL, please downgrade to supported
+ version to see if it makes difference
+ - you must compile the module, perl, and openssl with the same C compiler
+ and the same options. Use perl -V to check what options were used and
+ recompile openssl and Net::SSLeay accordingly
+ - never report bugs related to binary installs. First compile _yourself_
+ perl, openssl and my module, always using the same compiler and
+ compiler flags. Many distros are known to "know better" and thus
+ cause problems for their users. I'm not very sympathetic to having
+ to answer end user questions thus created.
+ - send full output of `make clean; perl Makefile.PL -t'
+
+If make test fails, please
+ - one warning is known to be emitted between tests 4 and 5 (callback)
+ - edit test.pl and set $trace=2
+ - send full output of `make clean; perl Makefile.PL -t'
+ - send contents of sslecho.log
+
+If you have problems with a site, please
+ - what site, what server software (including version and platform)
+ - does it reproduce with s_client, try with something like
+
+ echo 'GET /' | /usr/local/ssl/bin/openssl s_client -connect www.bacus.pt:443
+
+ - does it reproduce with popular web browsers
+ - play with Net::SSLeay::ssl_version (see top of SSLeay.pm)
+ - does the site run exotic configuration, e.g. insisting on specific
+ protocol version, limiting available ciphers, using nonstandard
+ ciphers, weird authentication arrangements, etc.)
+ - contact the owner of the server to see what the problem looks like
+ in his end. He should be able to tell you the exact versions used
+ and the error messages he is seeing in his log
+ - if you ask me to check a site out, you are granting me permission
+ to access that site and will pay all legal expenses to defend me
+ in court as well as any remedies that may be granted to the site
+ in case the site decides to sue me. You warrant that you are
+ authorized to give me permission to access the site.
+ - if you ask me to check a site, please send me a working URL and
+ include any authentication credentials if needed. If your site
+ is so confidential that you can not give me an URL, then do
+ not ask me to debug your problems.
+
+HP-UX is known to give some problems, please mail me or the mailing
+list so we can get these problems straightened. Hint: it has to do
+with dynamic loading. One user reports that adding `-lgcc' to EXTRALIBS
+and LD_LOAD_LIBS in Makefile fixes the problem. I have not received any
+confirmation whether this fix really works, but its worth a try. Another
+bag of problems is people installing against binary distributed
+perl and compiling the package with different cc or different options.
+Genereally this will never work. Please compile _yourself_ your perl,
+openssl, and the module, always with the same compiler and compiler flags.
+
+I have a report (schinder@@pobox._com) of make test segfaulting on
+Linux-PPC. This still needs to be investigated. No recent information
+has been received.
+
+It seems perl5.004 (at least some versions) has bad xsub compiler which
+can make builds sometimes fail. Try upgrading to perl-5.6.1 first.
+
+"Random number generator not seeded!!!" This warning indicates that
+ randomize() was not able to read /dev/random or /dev/urandom, possibly
+ because your system does not have them or they are differently
+ named. You can still use SSL, but the encryption will not be as
+ strong.
+
+Did you read the POD documentation (if you don't know what that
+is, just say `perldoc Net::SSLeay' or `more SSLeay.pm')?
+
+Are you sure you didn't confuse `Net::SSLeay' with `SSLeay' that
+comes with OpenSSL?
+
+My development environments used to be
+
+ i686, Linux-2.4.3, gcc-2.92.2, glibc-2.2, perl-5.6.0, openssl-0.9.6a
+ i686, Linux-2.4.3, gcc-2.92.2, glibc-2.2, perl5.005_02, openssl-0.9.6a
+ i686, Linux-2.0.35, gcc-2.7.2.3, glibc-2.0.6, perl5.005_02, openssl-0.9.5a
+ i586, Linux-2.4.3, gcc-2.92.2.1, glibc-2.2.2, perl-5.6.0, openssl-0.9.6a
+ i586, Linux-2.4.3, gcc-2.92.2.1, glibc-2.2.2, perl5.005_03, openssl-0.9.6
+ i586, Linux-2.4.3, gcc-2.92.2.1, glibc-2.2.2, perl5.005_03, openssl-0.9.6a
+ Sun-U1, SunOS-5.6, gcc-2.92.2, libc2 perl-5.6.1, openssl-0.9.6c
+
+Unfortunately I do not have access to other systems so you are
+somewhat on your own. Everything compiles without a warning (except
+those mentioned above) on my systems.
+
+Check if there are any post release building hints in
+
+ http://www.symlabs.com/Net_SSLeay/index.html
+
+Check that perl is finding your OpenSSL.
+
+If `make test' bombs, add following line to the test script that fails:
+
+ $Net::SSLeay::trace = 2;
+
+and see what happens. You may also have to edit test.pl to make sure
+the debugging output gets printed.
+
+If `make test' prints lots of `connect: Connection refused...' errors,
+then sslecho.pl test server has died. It is supposed to be launched in
+the beginning of test.pl, but can fail if, e.g. port 1212 is taken or
+in TIMEWAIT state. Look also in ssleacho.log file for diagnostics.
+
+If you are really low on memory and the 1 MB tests fail, edit value of
+$mb variable in test.pl.
+
+If you get core dump, build your perl for debugging (add -g to
+ccflags, see INSTALL in perl distribution), build your SSLeay for
+debugging as well, add -g flag to Makefile.PL:
+
+ make clean
+ perl Makefile.PL -g
+ make static
+ make test_static
+ gdb perl core # post mortem
+ > bt # show stack trace
+ gdb perl # run live with debugging
+ # set break point in SSLeay.xs or in suspect function of OpenSSL
+ > br XS_Net__SSLeay_connect
+ > run yourscript.pl arg arg
+
+For gdb'ing make sure gdb finds all the relevant source code. This
+may mean that you must run perl and OpenSSL from the directories where
+the respective makefiles build them.
+
+You can also enable PR and PRN macros in SSLeay.xs and sprinkle
+even some more around the code to figure out what's happening.
+
+Some exotic configurations of perl may cause unstability: make sure
+OpenSSL uses the same malloc as perl. Recompile perl without
+threads. Try not using the PerlIO abstraction.
+
+If you need to tweak build for some platform, please let me know
+so I can fix it. Patches and gdb session dumps are also welcome.
+
+License and Copying
+-------------------
+
+Copyright (c) 1996-2002 Sampo Kellomaki
+All Rights Reserved.
+
+Distribution and use of this module is under the same terms as the
+OpenSSL package itself (i.e. free, but mandatory attribution; NO
+WARRANTY). Please consult LICENSE file in the root of the OpenSSL
+distribution.
+
+While the source distribution of this perl module does not contain
+Eric's or OpenSSL's code, if you use this module you will use OpenSSL
+library. Please give Eric and OpenSSL team credit (as required by
+their licenses).
+
+And remember, you, and nobody else but you, are responsible for
+auditing this module and OpenSSL library for security problems,
+backdoors, and general suitability for your application.
+
+Recommended reading
+-------------------
+
+===> HTTP protocol specification. It applies 100% to HTTPS too and doing
+password authentication is explained there. <===
+
+If you are newbie interested in grabbing web pages from https servers,
+please read HTTP documentation from http://www.w3c.org/ before asking trivial
+questions. That document also covers the basic-auth FAQ (URLs like
+http://user:pass@host). Do not ask questions about authentication before
+consulting the HTTP specification. HTTPS is just HTTP in SSL transport.
+
+If you are doing advanced stuff, and don't find documentation you need,
+please try to extrapolate from OpenSSL documentation (which unfortunately
+is quite sparse) and the source code.
+
+If you run into build problems, especially regarding shared libraries,
+check your perl documentation, especially the perlxtut(1) man page,
+which gives excellent tutorial of the build process of XSUBs.
+
+ perlxtut(1)
+ perlxs(1)
+ perlguts(1)
+ perlcall(1)
+
+Say `perldoc Net::SSLeay' _NOW_!
+
+To download OpenSSL, try URL http://www.openssl.org/
+
+Of related interest may be `http://www.symlabs.com/Net_SSLeay/smime.html'
+
+Newer versions of this module can be found from CPAN/authors/id/SAMPO/,
+the home page is http://www.symlabs.com/Net_SSLeay/index.html
+
+Please send bug reports to the above address. General questions should be
+sent either to me or to the mailing list (subscribe by sending mail
+to openssl-users-request@openssl.org or using web interface at
+http://www.openssl.org/support/).
+
+--Sampo
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/README.Win32 b/~downloads/files/tools/Net_SSLeay.pm-1.22/README.Win32
new file mode 100644
index 0000000..c671f30
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/README.Win32
@@ -0,0 +1,237 @@
+Building on Win 32 platforms
+============================
+31.7.1999, Sampo Kellomaki
+7.6.2002, reviewed and added comments, --Sampo
+16.8.2002, added comments by Marcel Bucher --Sampo
+$Id: README.Win32,v 1.4 2002/08/16 20:57:05 sampo Exp $
+
+This file is heavily based on work by Anton Roeckseisen
+Later insight by Marcel Bucher
+
+WARNING: I do not develop on Windows so I am not in position to test
+any of this stuff. As such, the Windows build is not officially
+supported and if the shit hits the fan, I'll just bail
+out. Never-the-less as some kind people have sent me patches and helpful
+instructions, I offer compilation of them here as a service for the
+poor souls that live with the Vole.
+
+WARNING 2: These instructions recommend copying binaries. This is
+something I officially do not recommend (you should compile all of
+perl, OpenSSL, and Net::SSLeay from source using the same compiler
+and flags). That is the second reason why I officially do not support
+Windows, though if you follow the Cygwin path (see below) you would
+be able to satisfy my criteria for obtaining support.
+
+These instructions focus around native Windows environment. It should be
+noted that Cygwin environment, which is much more Unix like, has been
+used successfully to compile perl, OpenSSL, and Net::SSLeay. In that
+environment you just follow the Unix build instructions.
+
+Yet Another Windows Recipe by Marcel Bucher
+===============================================================
+
+Recipe for 1.19 (tested as of version 1.18)
+
+If you don't want to do an 'INSTALL' on OpenSSL, but leave it in the
+build directory on Windows, this is how you can get Net::SSLeay to
+work: ('install' of OpenSSL is rather kludgy on Windows...)
+
+My System:
+----------
+ - Win2k SP2 (should also work on NT et al)
+ - VC6 SP4
+ - ActiveState Perl 5.6.0 build 613
+ - OpenSSL 0.9.6g
+ - Net-SSLeay 1.19
+
+OpenSSL:
+--------
+
+- Build OpenSSL as described in the instructions. I did:
+ unpack OpenSSL to
+ cd
+ perl Configure VC-WIN32
+ ms\do_masm.bat (If you have an assembler, use do_ms.bat otherwise)
+ nmake -f ms\ntdll.mak (If you have an assembler,
+ use ms\ntNoAsmDll.mak otherwise)
+ cd out32dll (thats where the compiled files are)
+ ..\ms\test
+
+- Copy the two OpenSSL dll's from \Out32dll to
+ /system32
+
+The OpenSSL includes will be in \inc32.
+The OpenSSL libs and exe's will be in \out32dll
+
+Net::SSLeay:
+------------
+
+ perl Makefile.pl -windows
+ nmake
+ nmake test
+ nmake install
+
+Another recent recipe
+=====================
+
+For a recent (1.16) and thoroughly detailed success report,
+please see file
+
+ RECIPE.Win32
+
+by Hermann Kelley His report is in fact so good
+that you may consider using it as instructions. Thanks Hermann.
+
+------------- older stuff -----------
+
+Tested config:
+ - Net::SSLeay 1.02 w/Anton's patches
+ - SSLeay-0.9.0
+ - ActiveState perl from 23.12.1998
+ - VC++ 5.0
+
+Current release:
+ - Anton's patches merged in, but not tested
+ - SSLeay-0.9.0 no longer supported, use OpenSSL-0.9.3a
+
+The build procedure does not use any of the GUI stuff, instead it just
+uses the command line tools (such as nmake) that come with VC++. This
+approach is pretty much in line with OpenSSL and I believe it is in
+the long term only maintainable approach. Do not bother to send me
+project files for different "Visual" environments (but feel free to
+add all the files in a project and use for your own work if you think
+it makes your life easier).
+
+Please send any success reports, bug reports and comments to me.
+
+HOW TO DO IT (Sampo's speculation for recent versions (< 1.18))
+===============================================================
+
+1. Install VC++ 5.0 (or other ANSI C compiler?)
+
+2. Install ActivePerl from www.ActiveState.com (latest version)
+
+3. Install OpenSSL-0.9.6g on your system, take note of the path
+ where it was installed. Good place is \openssl on the drive
+ where you are building Net::SSLeay. Apparently INSTALL.W32 file
+ in the openssl distribution offers two ways to install.
+ Hermann Kelley reports that
+ you should use the option 2. He further points out that
+ there is an error where copy command reading
+
+ $ copy /b inc32\* c:\openssl\include\openssl
+
+ should read
+
+ >copy /b inc32\openssl\* c:\openssl\include\openssl
+
+ to account for the fact that the standard copy command does
+ not recursively copy subdirectories.
+
+ Net::SSLeay build expects following directory structure (assuming
+ the path you chose is \openssl)
+
+ \openssl\
+ \openssl\bin
+ \openssl\lib
+ \openssl\include
+ \openssl\include\openssl
+
+4. Run `perl Makefile.PL -windows your-openssl-path'. This should
+ cause the Makefile.PL to try to run openssl.exe to check that
+ you are OK. If it succeeds, chances of build working are good.
+ If not, you will need to debug things until it works.
+
+5. Do "nmake"
+ (If you get link-errors about missing PerlCRT.lib, you shold find
+ it in the Perl-Distribution and copy it to C++ lib-Directory)
+
+6. Add the directory where ssleay32.dll and libeay32.dll live to your
+ path (e.g. \openssl\lib). Alternatively, copy these libraries
+ to a directory already in your path.
+
+7. Do "nmake install"
+
+HOW TO DO IT (Anton I):
+=======================
+
+1. Install VC++ 5.0 (or other ANSI C compiler?)
+
+2. Install ActivePerl from www.ActiveState.com (latest version)
+
+3. Install OpenSSL-0.9.3a on your system
+
+4. Edit Makefile.PL to reflect the path to your VC++ library files (see
+ comment near the end of the file)
+
+5. Do a "perl Makefile.PL"
+
+6. Do "nmake"
+ (If you get link-errors about missing PerlCRT.lib, you shold find
+ it in the Perl-Distribution and copy it to C++ lib-Directory)
+
+7. Do "nmake install"
+
+Anton's comments follow...
+
+BIG THING:
+----------
+
+The main point in getting it to work was to tell SSLeay to use the
+socket opened via perl with SSL_set_fd. The socket number needs some
+conversion with _get_osfhandle(fd) (See also SSLeay.xs)
+
+The problem is I do not know how to reverse this behaviour... :-( so
+SSL_get_fd does not work!
+
+MINOR THINGS:
+-------------
+
+* I used some defines in compiling SSLeay 0.9.0b - so I provide my
+Makefile for tracking things down.... (SSLeay/ms/ntdll.mak) - probably
+you don't need this! (the defines appear not to be needed --Sampo)
+
+
+* To make the compiler (VC++ 5.0) work with it I had to change several
+function prototypes not fully defined in the SSLeay - Headerfiles. C++
+is much more complaining about C stuff as one might
+expect.... grrrrrr.... Maybe the SSL-guys get this right someday.
+
+* Added some more functions to get more info about certs an introduced a
+callback to set a passphrase via a perl-function
+
+* Added pointers to typemap - file
+
+HOW TO DO IT (Anton II):
+========================
+
+1. Install VC++ 5.0
+
+2. Install ActivePerl from ActiveState (I got a version from 23.12.1998 but
+ newer should work too! Binary distribution is ok!)
+
+3. Install SSLeay 0.9.0b on your system - maybe you need my Makefile....
+ I hope not!
+
+4. Use my headerfiles instead of the files provided by SSLeay-0.9.0b !
+
+5. Edit Makefile.pl to reflect the path to your VC++ library files!
+
+6. Do a "perl makefile.pl"
+
+7. Do "nmake"
+ (If you get link-errors about missing PerlCRT.lib please tell me! You
+ shold find it in the Perl-Distribution and copy it to C++ lib-Directory)
+
+8. Do "nmake install"
+
+9. Try to find out if things work ..... You might do this in the examples
+ directory:
+
+ (1) openssl.exe s_server -cert cert.pem -key key.pem -accept 3000 -www
+ (Password is "12345")
+ (2) perl callback.pl localhost 3000 \usr\local\ssl\certs cert.pem key.pem
+ (Password provided by callback!)
+
+ (3) look at callback.pl and smile..... (hope so :-))
+======
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/RECIPE.Win32 b/~downloads/files/tools/Net_SSLeay.pm-1.22/RECIPE.Win32
new file mode 100644
index 0000000..5204e3a
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/RECIPE.Win32
@@ -0,0 +1,112 @@
+From: "Hermann Kelley"
+To: sampo@@symlabs._com
+Date: 08 Jun 2002, 10:58:00 PM
+Subject: RE: Build Net::SSLeay on Win32
+
+Alright then. I'm trying an install on a fresh machine.
+No openssl and no SSLeay installed so far.
+
+I believe there is a newer version of Activeperl. I am
+running:
+
+--------------------------------------------------------
+This is perl, v5.6.1 built for MSWin32-x86-multi-thread
+(with 1 registered patch, see perl -V for more detail)
+
+Copyright 1987-2001, Larry Wall
+
+Binary build 628 provided by ActiveState Tool Corp.
+Built 15:41:05 Jul 4 2001
+--------------------------------------------------------
+
+Also my version ov Visual-C++ is a few years old.
+
+
+Step 1: Compiling openssl-0.9.6b (May 10, from openssl.org)
+
+I'm compiling the C codes only. Haven't tried to compile
+the ASM code (This would result in a performance increase
+for certain encryption algorithms though).
+
+Essentially here are the 3 scripts that I'm running (following
+the instructions given in INSTALL.W32):
+
+- perl Configure VC-WIN32
+- ms\do_ms
+- nmake -f ms\ntdll.mak
+
+Everything compiled fine. Now I'm running the test programs:
+
+- cd out32dll
+- ..\ms\test
+
+Tests are running ok. Ready to install
+
+Step 2: Installing openssl
+
+To install in c:\openssl I modify take the block of commands
+from INSTALL.W32
+
+ (1) md c:\openssl
+ (2) md c:\openssl\bin
+ (3) md c:\openssl\lib
+ (4) md c:\openssl\include
+ (5) md c:\openssl\include\openssl
+!!!! (6) copy /b inc32\* c:\openssl\include\openssl
+ (7) copy /b out32dll\ssleay32.lib c:\openssl\lib
+ (8) copy /b out32dll\libeay32.lib c:\openssl\lib
+ (9) copy /b out32dll\ssleay32.dll c:\openssl\bin
+ (10) copy /b out32dll\libeay32.dll c:\openssl\bin
+ (11) copy /b out32dll\openssl.exe c:\openssl\bin
+
+and modify line 6!!!!
+
+In a normal Win32 shell the copy command will not recursively
+copy directories. Line 6 needs to be changed to
+
+(6) copy /b inc32\openssl c:\openssl\include\openssl
+
+3. Post installation
+
+Once successfully compiled the DLLs (ssleay32.dll and libeay32.dll)
+need to be copied to an executable path or the PATH variable has to
+be set respectively.
+
+In my case I'm simply copying them to \WINNT\SYSTEM32. Any location in
+the PATh statement will work.
+
+- copy c:\openssl\bin\ssleay32.dll c:\winnt\system32
+- copy c:\openssl\bin\libeay32.dll c:\winnt\system32
+
+
+Now to the installation of the Perl modules (using version 1.16,
+dated 5.6.2002) Net_SSLeay.pm-1.16.tar.gz
+
+Step 3:
+
+I did not have to make any modifications to Makefile.PL. If your
+environment variables are set correctly (LIB, INCLUDE) that's not
+necessary.
+
+perl Makefile.PL -windows c:\
+
+----
+Checking if your kit is complete...
+Looks good
+Checking if your kit is complete...
+Looks good
+Writing Makefile for Net::SSLeay::Handle
+Writing Makefile for Net::SSLeay
+----
+
+Step 4:
+
+nmake
+nmake install
+
+
+Everything up and running.
+
+Please let me know if you want me to test anything else.
+
+--hermann
diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/SSLeay.c b/~downloads/files/tools/Net_SSLeay.pm-1.22/SSLeay.c
new file mode 100644
index 0000000..949a9b0
--- /dev/null
+++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/SSLeay.c
@@ -0,0 +1,7181 @@
+/*
+ * This file was generated automatically by xsubpp version 1.9508 from the
+ * contents of SSLeay.xs. Do not edit this file, edit SSLeay.xs instead.
+ *
+ * ANY CHANGES MADE HERE WILL BE LOST!
+ *
+ */
+
+#line 1 "SSLeay.xs"
+/* SSLeay.xs - Perl module for using Eric Young's implementation of SSL
+ *
+ * Copyright (c) 1996-2002 Sampo Kellomaki
+ * All Rights Reserved.
+ *
+ * 19.6.1998, Maintenance release to sync with SSLeay-0.9.0, --Sampo
+ * 24.6.1998, added write_partial to support ssl_write_all in more
+ * memory efficient way. --Sampo
+ * 8.7.1998, Added SSL_(CTX)?_set_options and associated constants.
+ * 31.3.1999, Tracking OpenSSL-0.9.2b changes, dropping support for
+ * earlier versions
+ * 30.7.1999, Tracking OpenSSL-0.9.3a changes, --Sampo
+ * 7.4.2001, OpenSSL-0.9.6a update, --Sampo
+ * 18.4.2001, added TLSv1 support by Stephen C. Koehler
+ * , version 1.07, --Sampo
+ * 25.4.2001, applied 64 bit fixes by Marko Asplund --Sampo
+ * 16.7.2001, applied Win filehandle patch from aspa, added
+ * SSL_*_methods --Sampo
+ * 25.9.2001, added a big pile of methods by automatically grepping and diffing
+ * openssl headers and my module --Sampo
+ * 17.4.2002, applied patch to fix CTX_set_default_passwd_cb() contributed
+ * by Timo Kujala , --Sampo
+ * 17.5.2002, Added BIO_s_mem, BIO_new, BIO_free, BIO_write, BIO_read ,
+ * BIO_eof, BIO_pending, BIO_wpending, X509_NAME_get_text_by_NID,
+ * RSA_generate_key, BIO_new_file
+ * Fixed problem with return value from verify callback being
+ * ignored.
+ * Fixed a problem with CTX_set_tmp_rsa and CTX_set_tmp_dh
+ * args incorrect
+ * --mikem@open.com_.au
+ * 10.8.2002, Added SSL_peek patch to ssl_read_until from
+ * Peter Behroozi --Sampo
+ * 21.8.2002, Added SESSION_get_master_key, SSL_get_client_random, SSL_get_server_random
+ * --mikem@open.com_.au
+ * 2.9.2002, Added SSL_CTX_get_cert_store, X509_STORE_add_cert, X509_STORE_add_crl
+ * X509_STORE_set_flags, X509_load_cert_file, X509_load_crl_file
+ * X509_load_cert_crl_file, PEM_read_bio_X509_CRL
+ * constants for X509_V_FLAG_*
+ * --mikem@open.com_.au
+ * 6.9.2002, applied Mike's patch and fixed X509_STORE_* to X509_STORE_CTX_*
+ * --Sampo
+ *
+ * $Id: SSLeay.xs,v 1.12 2002/11/05 05:39:02 sampo Exp $
+ *
+ * The distribution and use of this module are subject to the conditions
+ * listed in LICENSE file at the root of OpenSSL-0.9.6b
+ * distribution (i.e. free, but mandatory attribution and NO WARRANTY).
+
+Removed, perhaps permanently?
+
+int
+SSL_add_session(ctx,ses)
+ SSL_CTX * ctx
+ SSL_SESSION * ses
+
+int
+SSL_remove_session(ctx,ses)
+ SSL_CTX * ctx
+ SSL_SESSION * ses
+
+void
+SSL_flush_sessions(ctx,tm)
+ SSL_CTX * ctx
+ long tm
+
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#ifdef __cplusplus
+}
+#endif
+
+/* OpenSSL-0.9.3a has some strange warning about this in
+ * openssl/des.h
+ */
+#undef _
+
+#include
+#include
+#include
+#include
+#include
+#include /* openssl-0.9.6a forgets to include this */
+#include