diff --git a/~downloads/.htaccess b/~downloads/.htaccess new file mode 100644 index 0000000..c19bb7d --- /dev/null +++ b/~downloads/.htaccess @@ -0,0 +1,11 @@ +Redirect /home2/eagora/stta http://alhambra/stta + +AuthUserFile /home2/eagora/cgi-local/siteportals/stta/twiki/data/.htpasswd +AuthName ByPassword +AuthType Basic + +ErrorDocument 401 /cgi-local/siteportals/stta/twiki/oops/TWiki/SttaDownload?template=oopsnoauth + + + require valid-user + diff --git a/~downloads/eagor1/.htaccess b/~downloads/eagor1/.htaccess new file mode 100644 index 0000000..c26ac55 --- /dev/null +++ b/~downloads/eagor1/.htaccess @@ -0,0 +1,9 @@ +Redirect /u/web/eagor1/stta http://www.eagora.info/stta + +AuthUserFile /u/web/eagor1/cgi-local/siteportals/stta/twiki/data/.htpasswd +AuthName ByPassword +AuthType Basic + + + require valid-user + diff --git a/~downloads/eagor1/index.html b/~downloads/eagor1/index.html new file mode 100644 index 0000000..8fd9020 --- /dev/null +++ b/~downloads/eagor1/index.html @@ -0,0 +1,16 @@ + + + + STTA download index + + + + + + + + + + + diff --git a/~downloads/eagor1/open/.htaccess b/~downloads/eagor1/open/.htaccess new file mode 100644 index 0000000..8e4dad8 --- /dev/null +++ b/~downloads/eagor1/open/.htaccess @@ -0,0 +1,11 @@ +Redirect /u/web/eagor1/index.html http://www.eagora.info/ + +AuthUserFile /u/web/eagor1/private/.htpasswd +AuthName ByPassword +AuthType Basic + +ErrorDocument 401 /en/unknown.html + + + require valid-user + diff --git a/~downloads/eng/eagor1/index.html b/~downloads/eng/eagor1/index.html new file mode 100644 index 0000000..9e6bc89 --- /dev/null +++ b/~downloads/eng/eagor1/index.html @@ -0,0 +1,147 @@ + + + + STTA - Descargar Servicios con Tarantella + + + + + + + + + + + + + + + + + + + + + + + +
+
+ STTA +
+
+  STTATM - Download STTA + +   + +
+ STTA Download +
+
+ +  { Home + | Download Login + | e-agor@ + | %{$ENV{'REMOTE_USER'}}% + } + + +
  
+
+
%{$ENV{'REMOTE_USER'}}% -- Last access: %{$lastAccess}%
+
+

Legal note for using the STTA source (PERL CGI source)

+ + + + + + +
+  STTA: Files for download: %STRINGDIR% +

+ + + + + +
+ +
+ %syscmd{cat /u/web/eagor1%STRINGPATH%/.info %STRINGPATH%/.info}% +
+ + + %syscmd{ls /u/web/eagor1%STRINGPATH% %STRINGPATH%}% + +
        Name         Size         Last access time     
          
          
Use "Click" over file link to download or over DIR to view.

+ +
+ + + + + + + + + + + + + +
+
+ STTA +
+
      + +
+ STTA Download +
+
+ STTA - Download Services with Tarantella STTA + +
  
+
+
  
+
+ + + + + +
+ Revision 1.0 Nov 2002 + by Jesus Perez + + Copyright © 2002 by e-agor@ and + contributing authors.
+ Ideas, requests, problems regarding STTA? + Send feedback. +
+
+ + diff --git a/~downloads/eng/index.html b/~downloads/eng/index.html new file mode 100644 index 0000000..d9e86f6 --- /dev/null +++ b/~downloads/eng/index.html @@ -0,0 +1,147 @@ + + + + STTA - Descargar Servicios con Tarantella + + + + + + + + + + + + + + + + + + + + + + + +
+
+ STTA +
+
+  STTATM - Download STTA + +   + +
+ STTA Download +
+
+ +  { Home + | Download Login + | e-agor@ + | %{$ENV{'REMOTE_USER'}}% + } + + +
  
+
+
%{$ENV{'REMOTE_USER'}}% -- Last access: %{$lastAccess}%
+
+

Legal note for using the STTA source (PERL CGI source)

+ + + + + + +
+  STTA: Files for download: %STRINGDIR% +

+ + + + + +
+ +
+ %syscmd{cat /home2/eagora%STRINGPATH%/.info %STRINGPATH%/.info}% +
+ + + %syscmd{ls /home2/eagora%STRINGPATH% %STRINGPATH%}% + +
        Name         Size         Last access time     
          
          
Use "Click" over file link to download or over DIR to view.

+ +
+ + + + + + + + + + + + + +
+
+ STTA +
+
      + +
+ STTA Download +
+
+ STTA - Download Services with Tarantella STTA + +
  
+
+
  
+
+ + + + + +
+ Revision 1.0 Nov 2002 + by Jesus Perez + + Copyright © 2002 by e-agor@ and + contributing authors.
+ Ideas, requests, problems regarding STTA? + Send feedback. +
+
+ + 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 <ssl_locl.h>, fixed typo in SSL_get_cerificate, fixed + the return type of the same. --Sampo +1.00 19.6.1998, Sampo Kellomaki <sampo@@_iki.fi> + - 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 <sampo@@iki_.fi> + - 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 <sampo@@iki._fi> + - Added SSL_(CTX)?_set_options and associated constants + - Slight clean-ups +1.03 4.1.1999, Sampo Kellomaki <sampo@@iki._fi> + - Merged URI encoding patch to make_form + from Joe Rhett <jrhett@@navigist._com> + - 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 <sampo@@_iki._fi> + - 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 <clintdw@@netcom._com> + - 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 <koehler@@securecomputing_.com> +1.08 25.4.2001, + - applied 64 bit fixes by Marko Asplund <aspa@@kronodoc._fi> + 17.7.2001, + - applied error codes and SSL_*_method patch by Noel Burton-Krahn + <noel@burton-krahn.com> via aspa + - warning cleanups by Jared Allison <jallison@@UU_.NET> + - do last loop fixes from Jim Bowlin <bowlin@@_mindspring.com> + - Fixed extra-newline-if-header-already-contained-newline problem + reported by Sean McMurray <smcmurray@verio.net> (first reported by + Yuao TANIGAWA <yuao@@_www.infosite.ne.jp> 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 <avib@@_atomica.com> + - created do_https2 with more rational calling sequence + 18.7.2001, + - numerous windows oriented fixes from Eric A Selber + <eselber@@_briefcase.com> + - bumped OpenSSL version requirement to 0.9.6b and tested + - merged in Net::SSLeay::Handle by Jim Bowlin <jbowlin@@_linklint.org> +1.09 20.8.2001, + - fixed Makefile.PL (computation of bin_path) and test.pl ($perl + use before defined) per Gordon Lack <gml4410@@_ggr.co.uk> + 11.9.2001, + - Patch by Jeremy Mates <jmates@@_mbt.washington.edu> 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 <bruno.dewolf@@pandora._be> +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 <kwindla@@allafrica_.com> +1.13 13.2.2002 + - eliminated initializing random numbers using /etc/passwd per + comments by Matt Messier <matt@@securesw_.com> + - 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 <marcus@@semantico_.com> + 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 <timo.kujala@@intellitel_.com>, --Sampo + - similar patch by Chris Ridd <chris.ridd@messagingdirect.com> + - applied patch to add various API functions by mikem@open.com_.au + - 5.005_03 compat fix for Handle.pm from Jim Mintha <jim@@ic._uva.nl> +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 <hkelley@@secmon._com> +1.18 15.6.2002 + - applied minor patch by Mark Veltzer <mark@@veltzer._org> to Makefile.PL +1.19 10.8.2002-16.8.2002 + - Added SSL_peek patch to ssl_read_until from + Peter Behroozi <peter@@fhpwireless_.com> --Sampo + - Improved Windows instructions per Marcel Bucher <marcle@bucher._cc> +1.20 16.8.2002 + - Additional patch by Peter Behroozi <peter@@fhpwireless_.com> --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 <tim@burntcouch_.com> + 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 <toni@soth._at> 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 <clintdw@netcom.com> +Jim Bowlin <jbowlin@linklint.org> for contributing Net::SSLeay::Handle +Eric A Selber <eselber@briefcase.com> for Windows fixes and testing +Marko Asplund <aspa@kronodoc.fi> 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{<SOFTPKG NAME=\"$(DISTNAME)\" VERSION=\"1,22,0,0\">\n\t<TITLE>$(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 /* 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); +} + +#line 1718 "SSLeay.c" +XS(XS_Net__SSLeay_constant); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_constant) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::constant(name)"); + { + char * name = (char *)SvPV_nolen(ST(0)); + double RETVAL; + dXSTARG; + + RETVAL = constant(name); + XSprePUSH; PUSHn((double)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_hello); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_hello) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::hello()"); + { + int RETVAL; + dXSTARG; +#line 1719 "SSLeay.xs" + PR("\tSSLeay Hello World!\n"); + RETVAL = 1; +#line 1748 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM1 "============= SSL CONTEXT functions ==============" +XS(XS_Net__SSLeay_CTX_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_new) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_new()"); + { + SSL_CTX * RETVAL; + dXSTARG; +#line 1729 "SSLeay.xs" + RETVAL = SSL_CTX_new (SSLv23_method()); +#line 1766 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_v2_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_v2_new) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_v2_new()"); + { + SSL_CTX * RETVAL; + dXSTARG; +#line 1736 "SSLeay.xs" + RETVAL = SSL_CTX_new (SSLv2_method()); +#line 1783 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_v3_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_v3_new) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_v3_new()"); + { + SSL_CTX * RETVAL; + dXSTARG; +#line 1743 "SSLeay.xs" + RETVAL = SSL_CTX_new (SSLv3_method()); +#line 1800 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_v23_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_v23_new) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_v23_new()"); + { + SSL_CTX * RETVAL; + dXSTARG; +#line 1750 "SSLeay.xs" + RETVAL = SSL_CTX_new (SSLv23_method()); +#line 1817 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_tlsv1_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_tlsv1_new) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_tlsv1_new()"); + { + SSL_CTX * RETVAL; + dXSTARG; +#line 1757 "SSLeay.xs" + RETVAL = SSL_CTX_new (TLSv1_method()); +#line 1834 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_new_with_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_new_with_method) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_new_with_method(meth)"); + { + SSL_METHOD * meth = (SSL_METHOD *)SvIV(ST(0)); + SSL_CTX * RETVAL; + dXSTARG; +#line 1765 "SSLeay.xs" + RETVAL = SSL_CTX_new (SSLv23_method()); +#line 1852 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_free(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + + SSL_CTX_free(ctx); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_add_session); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_add_session) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_add_session(ctx, ses)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_add_session(ctx, ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_remove_session); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_remove_session) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_remove_session(ctx, ses)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_remove_session(ctx, ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_flush_sessions); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_flush_sessions) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_flush_sessions(ctx, tm)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long tm = (long)SvIV(ST(1)); + + SSL_CTX_flush_sessions(ctx, tm); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_default_verify_paths); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_default_verify_paths) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_default_verify_paths(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_default_verify_paths(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_load_verify_locations); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_load_verify_locations) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_load_verify_locations(ctx, CAfile, CApath)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + char * CAfile = (char *)SvPV_nolen(ST(1)); + char * CApath = (char *)SvPV_nolen(ST(2)); + int RETVAL; + dXSTARG; +#line 1798 "SSLeay.xs" + RETVAL = SSL_CTX_load_verify_locations (ctx, + CAfile?(*CAfile?CAfile:NULL):NULL, + CApath?(*CApath?CApath:NULL):NULL + ); +#line 1957 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_verify); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_verify) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_verify(ctx, mode, callback)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int mode = (int)SvIV(ST(1)); + SV * callback = ST(2); +#line 1811 "SSLeay.xs" + 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); + } +#line 1984 "SSLeay.c" + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_get_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_error) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_error(s, ret)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int ret = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_error(s, ret); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM10 "============= SSL functions ==============" +XS(XS_Net__SSLeay_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_new) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::new(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + SSL * RETVAL; + dXSTARG; + + RETVAL = SSL_new(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::free(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + + SSL_free(s); + } + XSRETURN_EMPTY; +} + +#if 0 /* this seems to be gone in 0.9.0 */ +#define XSubPPtmpAAAA 1 + +XS(XS_Net__SSLeay_debug); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_debug) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::debug(file)"); + { + char * file = (char *)SvPV_nolen(ST(0)); + + SSL_debug(file); + } + XSRETURN_EMPTY; +} + +#endif +XS(XS_Net__SSLeay_accept); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_accept) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::accept(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_accept(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_clear); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_clear) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::clear(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + + SSL_clear(s); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_connect); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_connect) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::connect(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_connect(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#if defined(WIN32) +#define XSubPPtmpAAAB 1 + +XS(XS_Net__SSLeay_set_fd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_fd) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_fd(s, fd)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int fd = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; +#line 1864 "SSLeay.xs" + RETVAL = SSL_set_fd(s,_get_osfhandle(fd)); +#line 2121 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_rfd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_rfd) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_rfd(s, fd)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int fd = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; +#line 1873 "SSLeay.xs" + RETVAL = SSL_set_rfd(s,_get_osfhandle(fd)); +#line 2140 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_wfd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_wfd) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_wfd(s, fd)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int fd = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; +#line 1882 "SSLeay.xs" + RETVAL = SSL_set_wfd(s,_get_osfhandle(fd)); +#line 2159 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#else +#define XSubPPtmpAAAC 1 + +XS(XS_Net__SSLeay_set_fd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_fd) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_fd(s, fd)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int fd = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_fd(s, fd); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_rfd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_rfd) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_rfd(s, fd)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int fd = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_rfd(s, fd); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_wfd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_wfd) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_wfd(s, fd)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int fd = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_wfd(s, fd); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#endif +XS(XS_Net__SSLeay_get_fd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_fd) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_fd(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_fd(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_read); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_read) +{ + dXSARGS; + if (items < 1 || items > 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::read(s, max=sizeof(buf))"); + { + SSL * s = (SSL *)SvIV(ST(0)); +#line 1913 "SSLeay.xs" + char buf[32768]; +#line 2250 "SSLeay.c" + int max; +#line 1917 "SSLeay.xs" + int got; +#line 2254 "SSLeay.c" + + if (items < 2) + max = sizeof(buf); + else { + max = (int)SvIV(ST(1)); + } +#line 1919 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + if ((got = SSL_read(s, buf, max)) >= 0) + sv_setpvn( ST(0), buf, got); +#line 2265 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_peek); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_peek) +{ + dXSARGS; + if (items < 1 || items > 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::peek(s, max=sizeof(buf))"); + { + SSL * s = (SSL *)SvIV(ST(0)); +#line 1927 "SSLeay.xs" + char buf[32768]; +#line 2280 "SSLeay.c" + int max; +#line 1931 "SSLeay.xs" + int got; +#line 2284 "SSLeay.c" + + if (items < 2) + max = sizeof(buf); + else { + max = (int)SvIV(ST(1)); + } +#line 1933 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + if ((got = SSL_peek(s, buf, max)) >= 0) + sv_setpvn( ST(0), buf, got); +#line 2295 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_write); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_write) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::write(s, buf)"); + { + SSL * s = (SSL *)SvIV(ST(0)); +#line 1941 "SSLeay.xs" + STRLEN len; +#line 2310 "SSLeay.c" + char * buf = SvPV( ST(1), len); + int RETVAL; + dXSTARG; +#line 1945 "SSLeay.xs" + RETVAL = SSL_write (s, buf, (int)len); +#line 2316 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_write_partial); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_write_partial) +{ + dXSARGS; + if (items != 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::write_partial(s, from, count, buf)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int from = (int)SvIV(ST(1)); + int count = (int)SvIV(ST(2)); +#line 1955 "SSLeay.xs" + STRLEN len; +#line 2334 "SSLeay.c" + char * buf = SvPV( ST(3), len); + int RETVAL; + dXSTARG; +#line 1959 "SSLeay.xs" + /* + 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); +#line 2355 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_RSAPrivateKey); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_RSAPrivateKey) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_RSAPrivateKey(s, rsa)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + RSA * rsa = (RSA *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_RSAPrivateKey(s, rsa); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_RSAPrivateKey_ASN1); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_RSAPrivateKey_ASN1) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_RSAPrivateKey_ASN1(s, d, len)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + unsigned char * d = (unsigned char *)SvPV_nolen(ST(1)); + long len = (long)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_RSAPrivateKey_ASN1(s, d, len); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_RSAPrivateKey_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_RSAPrivateKey_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_RSAPrivateKey_file(s, file, type)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_RSAPrivateKey_file(s, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_use_RSAPrivateKey_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_RSAPrivateKey_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_RSAPrivateKey_file(ctx, file, type)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_RSAPrivateKey_file(ctx, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_PrivateKey); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_PrivateKey) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_PrivateKey(s, pkey)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + EVP_PKEY * pkey = (EVP_PKEY *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_PrivateKey(s, pkey); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_PrivateKey_ASN1); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_PrivateKey_ASN1) +{ + dXSARGS; + if (items != 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_PrivateKey_ASN1(pk, s, d, len)"); + { + int pk = (int)SvIV(ST(0)); + SSL * s = (SSL *)SvIV(ST(1)); + unsigned char * d = (unsigned char *)SvPV_nolen(ST(2)); + long len = (long)SvIV(ST(3)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_PrivateKey_ASN1(pk, s, d, len); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_PrivateKey_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_PrivateKey_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_PrivateKey_file(s, file, type)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_PrivateKey_file(s, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_use_PrivateKey_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_PrivateKey_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_PrivateKey_file(ctx, file, type)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_PrivateKey_file(ctx, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_certificate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_certificate) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_certificate(s, x)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + X509 * x = (X509 *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_certificate(s, x); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_certificate_ASN1); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_certificate_ASN1) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_certificate_ASN1(s, d, len)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + unsigned char * d = (unsigned char *)SvPV_nolen(ST(1)); + long len = (long)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_certificate_ASN1(s, d, len); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_use_certificate_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_use_certificate_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::use_certificate_file(s, file, type)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_use_certificate_file(s, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_use_certificate_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_certificate_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_certificate_file(ctx, file, type)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_certificate_file(ctx, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_state_string); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_state_string) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::state_string(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_state_string(s); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_rstate_string); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_rstate_string) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::rstate_string(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_rstate_string(s); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_state_string_long); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_state_string_long) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::state_string_long(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_state_string_long(s); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_rstate_string_long); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_rstate_string_long) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::rstate_string_long(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_rstate_string_long(s); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_time); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_time) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_time(ses)"); + { + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_get_time(ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_time); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_time) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_time(ses, t)"); + { + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(0)); + long t = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_set_time(ses, t); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_timeout) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_timeout(ses)"); + { + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_get_timeout(ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_timeout) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_timeout(ses, t)"); + { + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(0)); + long t = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_set_timeout(ses, t); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_copy_session_id); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_copy_session_id) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::copy_session_id(to, from)"); + { + SSL * to = (SSL *)SvIV(ST(0)); + SSL * from = (SSL *)SvIV(ST(1)); + + SSL_copy_session_id(to, from); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_read_ahead); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_read_ahead) +{ + dXSARGS; + if (items < 1 || items > 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_read_ahead(s, yes=1)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int yes; + + if (items < 2) + yes = 1; + else { + yes = (int)SvIV(ST(1)); + } + + SSL_set_read_ahead(s, yes); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_get_read_ahead); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_read_ahead) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_read_ahead(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_read_ahead(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_pending); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_pending) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::pending(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_pending(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_cipher_list); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_cipher_list) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_cipher_list(s, str)"); + { + SSL_CTX * s = (SSL_CTX *)SvIV(ST(0)); + char * str = (char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_cipher_list(s, str); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_cipher_list); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_cipher_list) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_cipher_list(s, n)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int n = (int)SvIV(ST(1)); + const char * RETVAL; + dXSTARG; + + RETVAL = SSL_get_cipher_list(s, n); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_cipher_list); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_cipher_list) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_cipher_list(s, str)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * str = (char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_cipher_list(s, str); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_cipher); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_cipher) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_cipher(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + const char * RETVAL; + dXSTARG; + + RETVAL = SSL_get_cipher(s); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_shared_ciphers); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_shared_ciphers) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_shared_ciphers(s, buf, len)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + char * buf = (char *)SvPV_nolen(ST(1)); + int len = (int)SvIV(ST(2)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_get_shared_ciphers(s, buf, len); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_peer_certificate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_peer_certificate) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_peer_certificate(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + X509 * RETVAL; + dXSTARG; + + RETVAL = SSL_get_peer_certificate(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_verify); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_verify) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_verify(s, mode, callback)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int mode = (int)SvIV(ST(1)); + SV * callback = ST(2); +#line 2136 "SSLeay.xs" + 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); + } +#line 2922 "SSLeay.c" + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_bio); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_bio) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_bio(s, rbio, wbio)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + BIO * rbio = (BIO *)SvIV(ST(1)); + BIO * wbio = (BIO *)SvIV(ST(2)); + + SSL_set_bio(s, rbio, wbio); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_get_rbio); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_rbio) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_rbio(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + BIO * RETVAL; + dXSTARG; + + RETVAL = SSL_get_rbio(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_wbio); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_wbio) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_wbio(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + BIO * RETVAL; + dXSTARG; + + RETVAL = SSL_get_wbio(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_new) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_new()"); + { + SSL_SESSION * RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_new(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_print); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_print) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_print(fp, ses)"); + { + BIO * fp = (BIO *)SvIV(ST(0)); + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_print(fp, ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_free(ses)"); + { + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(0)); + + SSL_SESSION_free(ses); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_i2d_SSL_SESSION); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_i2d_SSL_SESSION) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::i2d_SSL_SESSION(in, pp)"); + { + SSL_SESSION * in = (SSL_SESSION *)SvIV(ST(0)); + unsigned char * pp = (unsigned char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = i2d_SSL_SESSION(in, &pp); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_session); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_session) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_session(to, ses)"); + { + SSL * to = (SSL *)SvIV(ST(0)); + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_session(to, ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_d2i_SSL_SESSION); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_d2i_SSL_SESSION) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::d2i_SSL_SESSION(a, pp, length)"); + { + SSL_SESSION * a = (SSL_SESSION *)SvIV(ST(0)); + unsigned char * pp = (unsigned char *)SvPV_nolen(ST(1)); + long length = (long)SvIV(ST(2)); + SSL_SESSION * RETVAL; + dXSTARG; + + RETVAL = d2i_SSL_SESSION(&a, &pp, length); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM30 "SSLeay-0.9.0 defines these as macros. I expand them here for safety's sake" +XS(XS_Net__SSLeay_get_session); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_session) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_session(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + SSL_SESSION * RETVAL; + dXSTARG; + + RETVAL = SSL_get_session(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_certificate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_certificate) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_certificate(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + X509 * RETVAL; + dXSTARG; + + RETVAL = SSL_get_certificate(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_SSL_CTX); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_SSL_CTX) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_SSL_CTX(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + SSL_CTX * RETVAL; + dXSTARG; + + RETVAL = SSL_get_SSL_CTX(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_ctrl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ctrl) +{ + dXSARGS; + if (items != 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ctrl(ssl, cmd, larg, parg)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int cmd = (int)SvIV(ST(1)); + long larg = (long)SvIV(ST(2)); + char * parg = (char *)SvPV_nolen(ST(3)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_ctrl(ssl, cmd, larg, parg); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_ctrl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_ctrl) +{ + dXSARGS; + if (items != 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_ctrl(ctx, cmd, larg, parg)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int cmd = (int)SvIV(ST(1)); + long larg = (long)SvIV(ST(2)); + char * parg = (char *)SvPV_nolen(ST(3)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_ctrl(ctx, cmd, larg, parg); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_options); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_options) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_options(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_get_options(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_options); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_options) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_options(ssl, op)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + unsigned long op = (unsigned long)SvUV(ST(1)); + + SSL_set_options(ssl, op); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_get_options); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_options) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_options(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_options(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_options); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_options) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_options(ctx, op)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + unsigned long op = (unsigned long)SvUV(ST(1)); + + SSL_CTX_set_options(ctx, op); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_sessions); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sessions) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sessions(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + LHASH * RETVAL; + dXSTARG; +#line 2239 "SSLeay.xs" + /* 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; +#line 3250 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_number); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_number) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_number(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + unsigned long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_number(ctx); + XSprePUSH; PUSHu((UV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_connect); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_connect) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_connect(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_connect(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_connect_good); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_connect_good) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_connect_good(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_connect_good(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_connect_renegotiate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_connect_renegotiate) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_connect_renegotiate(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_connect_renegotiate(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_accept); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_accept) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_accept(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_accept(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_accept_renegotiate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_accept_renegotiate) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_accept_renegotiate(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_accept_renegotiate(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_accept_good); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_accept_good) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_accept_good(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_accept_good(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_hits); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_hits) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_hits(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_hits(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_cb_hits); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_cb_hits) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_cb_hits(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_cb_hits(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_misses); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_misses) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_misses(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_misses(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_timeouts); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_timeouts) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_timeouts(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_timeouts(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_cache_full); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_cache_full) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_cache_full(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_cache_full(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_get_cache_size); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_get_cache_size) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_get_cache_size(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_sess_get_cache_size(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_sess_set_cache_size); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_sess_set_cache_size) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_sess_set_cache_size(ctx, size)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int size = (int)SvIV(ST(1)); + + SSL_CTX_sess_set_cache_size(ctx, size); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_want); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_want) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::want(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_want(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_state); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_state) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::state(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_state(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_f_ssl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_f_ssl) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_f_ssl()"); + { + BIO_METHOD * RETVAL; + dXSTARG; + + RETVAL = BIO_f_ssl(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_s_mem); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_s_mem) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_s_mem()"); + { + BIO_METHOD * RETVAL; + dXSTARG; + + RETVAL = BIO_s_mem(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_ERR_get_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_get_error) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_get_error()"); + { + unsigned long RETVAL; + dXSTARG; + + RETVAL = ERR_get_error(); + XSprePUSH; PUSHu((UV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_ERR_peek_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_peek_error) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_peek_error()"); + { + unsigned long RETVAL; + dXSTARG; + + RETVAL = ERR_peek_error(); + XSprePUSH; PUSHu((UV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_ERR_put_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_put_error) +{ + dXSARGS; + if (items != 5) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_put_error(lib, func, reason, file, line)"); + { + int lib = (int)SvIV(ST(0)); + int func = (int)SvIV(ST(1)); + int reason = (int)SvIV(ST(2)); + char * file = (char *)SvPV_nolen(ST(3)); + int line = (int)SvIV(ST(4)); + + ERR_put_error(lib, func, reason, file, line); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_ERR_clear_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_clear_error) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_clear_error()"); + { + + ERR_clear_error(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_ERR_error_string); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_error_string) +{ + dXSARGS; + if (items < 1 || items > 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_error_string(error, buf=NULL)"); + { + unsigned long error = (unsigned long)SvUV(ST(0)); + char * buf; + char * RETVAL; + dXSTARG; + + if (items < 2) + buf = NULL; + else { + buf = (char *)SvPV_nolen(ST(1)); + } +#line 2338 "SSLeay.xs" + RETVAL = ERR_error_string(error,buf); +#line 3640 "SSLeay.c" + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_load_error_strings); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_load_error_strings) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::load_error_strings()"); + { + + SSL_load_error_strings(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_ERR_load_crypto_strings); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_load_crypto_strings) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_load_crypto_strings()"); + { + + ERR_load_crypto_strings(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_SSLeay_add_ssl_algorithms); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SSLeay_add_ssl_algorithms) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SSLeay_add_ssl_algorithms()"); + { + + SSLeay_add_ssl_algorithms(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_ERR_load_SSL_strings); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_load_SSL_strings) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_load_SSL_strings()"); + { + + ERR_load_SSL_strings(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_ERR_load_RAND_strings); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_ERR_load_RAND_strings) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::ERR_load_RAND_strings()"); + { + + ERR_load_RAND_strings(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_RAND_bytes); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_bytes) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_bytes(buf, num)"); + { + SV * buf = ST(0); + int num = (int)SvIV(ST(1)); +#line 2362 "SSLeay.xs" + int rc; + unsigned char *random; +#line 3723 "SSLeay.c" + int RETVAL; + dXSTARG; +#line 2365 "SSLeay.xs" + New(0, random, num, unsigned char); + rc = RAND_bytes(random, num); + sv_setpvn(buf, random, num); + Safefree(random); + RETVAL = rc; +#line 3732 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_pseudo_bytes); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_pseudo_bytes) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_pseudo_bytes(buf, num)"); + { + SV * buf = ST(0); + int num = (int)SvIV(ST(1)); +#line 2378 "SSLeay.xs" + int rc; + unsigned char *random; +#line 3750 "SSLeay.c" + int RETVAL; + dXSTARG; +#line 2381 "SSLeay.xs" + New(0, random, num, unsigned char); + rc = RAND_pseudo_bytes(random, num); + sv_setpvn(buf, random, num); + Safefree(random); + RETVAL = rc; +#line 3759 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_add); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_add) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_add(buf, num, entropy)"); + { + SV * buf = ST(0); + int num = (int)SvIV(ST(1)); + double entropy = (double)SvNV(ST(2)); +#line 2395 "SSLeay.xs" + STRLEN len; +#line 3777 "SSLeay.c" +#line 2397 "SSLeay.xs" + RAND_add((const void *)SvPV(buf, len), num, entropy); +#line 3780 "SSLeay.c" + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_RAND_poll); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_poll) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_poll()"); + { + int RETVAL; + dXSTARG; + + RETVAL = RAND_poll(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_status); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_status) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_status()"); + { + int RETVAL; + dXSTARG; + + RETVAL = RAND_status(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_egd_bytes); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_egd_bytes) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_egd_bytes(path, bytes)"); + { + const char * path = (const char *)SvPV_nolen(ST(0)); + int bytes = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = RAND_egd_bytes(path, bytes); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_file_name); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_file_name) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_file_name(num)"); + { + size_t num = (size_t)SvUV(ST(0)); +#line 2414 "SSLeay.xs" + char *buf; +#line 3845 "SSLeay.c" + SV * RETVAL; +#line 2416 "SSLeay.xs" + New(0, buf, num, char); + if (!RAND_file_name(buf, num)) { + Safefree(buf); + XSRETURN_UNDEF; + } + RETVAL = newSVpv(buf, 0); + Safefree(buf); +#line 3855 "SSLeay.c" + ST(0) = RETVAL; + sv_2mortal(ST(0)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_seed); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_seed) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_seed(buf)"); + { +#line 2429 "SSLeay.xs" + STRLEN len; +#line 3871 "SSLeay.c" + char * buf = SvPV( ST(1), len); +#line 2433 "SSLeay.xs" + RAND_seed (buf, (int)len); +#line 3875 "SSLeay.c" + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_RAND_cleanup); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_cleanup) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_cleanup()"); + { + + RAND_cleanup(); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_RAND_load_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_load_file) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_load_file(file_name, how_much)"); + { + char * file_name = (char *)SvPV_nolen(ST(0)); + int how_much = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = RAND_load_file(file_name, how_much); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_write_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_write_file) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_write_file(file_name)"); + { + char * file_name = (char *)SvPV_nolen(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = RAND_write_file(file_name); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RAND_egd); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RAND_egd) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RAND_egd(path)"); + { + char * path = (char *)SvPV_nolen(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = RAND_egd(path); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM40 "Minimal X509 stuff..., this is a bit ugly and should be put in its own modules Net::SSLeay::X509.pm" +XS(XS_Net__SSLeay_X509_get_issuer_name); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_get_issuer_name) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_get_issuer_name(cert)"); + { + X509 * cert = (X509 *)SvIV(ST(0)); + X509_NAME * RETVAL; + dXSTARG; + + RETVAL = X509_get_issuer_name(cert); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_get_subject_name); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_get_subject_name) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_get_subject_name(cert)"); + { + X509 * cert = (X509 *)SvIV(ST(0)); + X509_NAME * RETVAL; + dXSTARG; + + RETVAL = X509_get_subject_name(cert); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_NAME_oneline); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_NAME_oneline) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_NAME_oneline(name)"); + { + X509_NAME * name = (X509_NAME *)SvIV(ST(0)); +#line 2465 "SSLeay.xs" + char buf[32768]; +#line 3990 "SSLeay.c" +#line 2467 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + if (X509_NAME_oneline(name, buf, sizeof(buf))) + sv_setpvn( ST(0), buf, strlen(buf)); +#line 3995 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_NAME_get_text_by_NID); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_NAME_get_text_by_NID) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_NAME_get_text_by_NID(name, nid)"); + { + X509_NAME * name = (X509_NAME *)SvIV(ST(0)); + int nid = (int)SvIV(ST(1)); +#line 2476 "SSLeay.xs" + char buf[32768]; +#line 4011 "SSLeay.c" +#line 2478 "SSLeay.xs" + 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)); +#line 4016 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_get_current_cert); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_get_current_cert) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_get_current_cert(x509_store_ctx)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + X509 * RETVAL; + dXSTARG; + + RETVAL = X509_STORE_CTX_get_current_cert(x509_store_ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_get_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_get_ex_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_get_ex_data(x509_store_ctx, idx)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * RETVAL; + dXSTARG; + + RETVAL = X509_STORE_CTX_get_ex_data(x509_store_ctx, idx); + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_get_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_get_error) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_get_error(x509_store_ctx)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = X509_STORE_CTX_get_error(x509_store_ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_get_error_depth); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_get_error_depth) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_get_error_depth(x509_store_ctx)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = X509_STORE_CTX_get_error_depth(x509_store_ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_set_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_set_ex_data) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_set_ex_data(x509_store_ctx, idx, data)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * data = INT2PTR(void *,SvIV(ST(2))); + int RETVAL; + dXSTARG; + + RETVAL = X509_STORE_CTX_set_ex_data(x509_store_ctx, idx, data); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_set_error); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_set_error) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_set_error(x509_store_ctx, s)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + int s = (int)SvIV(ST(1)); + + X509_STORE_CTX_set_error(x509_store_ctx, s); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_set_cert); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_set_cert) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_set_cert(x509_store_ctx, x)"); + { + X509_STORE_CTX * x509_store_ctx = (X509_STORE_CTX *)SvIV(ST(0)); + X509 * x = (X509 *)SvIV(ST(1)); + + X509_STORE_CTX_set_cert(x509_store_ctx, x); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_X509_STORE_add_cert); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_add_cert) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_add_cert(ctx, x)"); + { + X509_STORE * ctx = (X509_STORE *)SvIV(ST(0)); + X509 * x = (X509 *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = X509_STORE_add_cert(ctx, x); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_add_crl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_add_crl) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_add_crl(ctx, x)"); + { + X509_STORE * ctx = (X509_STORE *)SvIV(ST(0)); + X509_CRL * x = (X509_CRL *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = X509_STORE_add_crl(ctx, x); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_STORE_CTX_set_flags); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_STORE_CTX_set_flags) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_STORE_CTX_set_flags(ctx, flags)"); + { + X509_STORE_CTX * ctx = (X509_STORE_CTX *)SvIV(ST(0)); + long flags = (long)SvIV(ST(1)); + + X509_STORE_CTX_set_flags(ctx, flags); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_X509_load_cert_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_load_cert_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_load_cert_file(ctx, file, type)"); + { + X509_LOOKUP * ctx = (X509_LOOKUP *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = X509_load_cert_file(ctx, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_load_crl_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_load_crl_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_load_crl_file(ctx, file, type)"); + { + X509_LOOKUP * ctx = (X509_LOOKUP *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = X509_load_crl_file(ctx, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_load_cert_crl_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_load_cert_crl_file) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_load_cert_crl_file(ctx, file, type)"); + { + X509_LOOKUP * ctx = (X509_LOOKUP *)SvIV(ST(0)); + char * file = (char *)SvPV_nolen(ST(1)); + int type = (int)SvIV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = X509_load_cert_crl_file(ctx, file, type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_get_notBefore); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_get_notBefore) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_get_notBefore(cert)"); + { + X509 * cert = (X509 *)SvIV(ST(0)); + ASN1_UTCTIME * RETVAL; + dXSTARG; + + RETVAL = X509_get_notBefore(cert); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_X509_get_notAfter); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_get_notAfter) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_get_notAfter(cert)"); + { + X509 * cert = (X509 *)SvIV(ST(0)); + ASN1_UTCTIME * RETVAL; + dXSTARG; + + RETVAL = X509_get_notAfter(cert); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_P_ASN1_UTCTIME_put2string); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_P_ASN1_UTCTIME_put2string) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::P_ASN1_UTCTIME_put2string(tm)"); + { + ASN1_UTCTIME * tm = (ASN1_UTCTIME *)SvIV(ST(0)); +#line 2561 "SSLeay.xs" + BIO *bp; + int i; + char buffer[256]; +#line 4293 "SSLeay.c" +#line 2565 "SSLeay.xs" + 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); +#line 4303 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_EVP_PKEY_copy_parameters); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_EVP_PKEY_copy_parameters) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::EVP_PKEY_copy_parameters(to, from)"); + { + EVP_PKEY * to = (EVP_PKEY *)SvIV(ST(0)); + EVP_PKEY * from = (EVP_PKEY *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = EVP_PKEY_copy_parameters(to, from); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_PEM_get_string_X509); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_PEM_get_string_X509) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::PEM_get_string_X509(x509)"); + { + X509 * x509 = (X509 *)SvIV(ST(0)); +#line 2583 "SSLeay.xs" + BIO *bp; + int i; + char buffer[8196]; +#line 4338 "SSLeay.c" +#line 2587 "SSLeay.xs" + 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); +#line 4348 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_MD5); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_MD5) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::MD5(data)"); + { +#line 2599 "SSLeay.xs" + STRLEN len; + unsigned char md[MD5_DIGEST_LENGTH]; + unsigned char * ret; +#line 4364 "SSLeay.c" + unsigned char * data = (unsigned char *) SvPV( ST(0), len); +#line 2605 "SSLeay.xs" + ret = MD5(data,len,md); + if (ret!=NULL) { + XSRETURN_PV((char *) md); + } else { + XSRETURN_UNDEF; + } +#line 4373 "SSLeay.c" + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_SSLv2_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SSLv2_method) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SSLv2_method()"); + { + SSL_METHOD * RETVAL; + dXSTARG; + + RETVAL = SSLv2_method(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SSLv3_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SSLv3_method) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SSLv3_method()"); + { + SSL_METHOD * RETVAL; + dXSTARG; + + RETVAL = SSLv3_method(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_TLSv1_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_TLSv1_method) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::TLSv1_method()"); + { + SSL_METHOD * RETVAL; + dXSTARG; + + RETVAL = TLSv1_method(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_ssl_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_ssl_method) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_ssl_method(ssl, method)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + SSL_METHOD * method = (SSL_METHOD *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_ssl_method(ssl, method); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_ssl_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_ssl_method) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_ssl_method(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + SSL_METHOD * RETVAL; + dXSTARG; + + RETVAL = SSL_get_ssl_method(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM_AUTOMATICALLY_GENERATED_1_09 +XS(XS_Net__SSLeay_BIO_new_buffer_ssl_connect); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_new_buffer_ssl_connect) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_new_buffer_ssl_connect(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + BIO * RETVAL; + dXSTARG; + + RETVAL = BIO_new_buffer_ssl_connect(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_new_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_new_file) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_new_file(filename, mode)"); + { + char * filename = (char *)SvPV_nolen(ST(0)); + char * mode = (char *)SvPV_nolen(ST(1)); + BIO * RETVAL; + dXSTARG; + + RETVAL = BIO_new_file(filename, mode); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_new_ssl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_new_ssl) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_new_ssl(ctx, client)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int client = (int)SvIV(ST(1)); + BIO * RETVAL; + dXSTARG; + + RETVAL = BIO_new_ssl(ctx, client); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_new_ssl_connect); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_new_ssl_connect) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_new_ssl_connect(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + BIO * RETVAL; + dXSTARG; + + RETVAL = BIO_new_ssl_connect(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_new); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_new) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_new(type)"); + { + BIO_METHOD * type = (BIO_METHOD *)SvIV(ST(0)); + BIO * RETVAL; + dXSTARG; + + RETVAL = BIO_new(type); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_free(bio)"); + { + BIO * bio = (BIO *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = BIO_free(bio); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_read); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_read) +{ + dXSARGS; + if (items < 1 || items > 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_read(s, max=sizeof(buf))"); + { + BIO * s = (BIO *)SvIV(ST(0)); +#line 2662 "SSLeay.xs" + char buf[32768]; +#line 4576 "SSLeay.c" + int max; +#line 2666 "SSLeay.xs" + int got; +#line 4580 "SSLeay.c" + + if (items < 2) + max = sizeof(buf); + else { + max = (int)SvIV(ST(1)); + } +#line 2668 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + if ((got = BIO_read(s, buf, max)) >= 0) + sv_setpvn( ST(0), buf, got); +#line 4591 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_write); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_write) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_write(s, buf)"); + { + BIO * s = (BIO *)SvIV(ST(0)); +#line 2677 "SSLeay.xs" + STRLEN len; +#line 4606 "SSLeay.c" + char * buf = SvPV( ST(1), len); + int RETVAL; + dXSTARG; +#line 2681 "SSLeay.xs" + RETVAL = BIO_write (s, buf, (int)len); +#line 4612 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_eof); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_eof) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_eof(s)"); + { + BIO * s = (BIO *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = BIO_eof(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_pending); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_pending) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_pending(s)"); + { + BIO * s = (BIO *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = BIO_pending(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_wpending); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_wpending) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_wpending(s)"); + { + BIO * s = (BIO *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = BIO_wpending(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_ssl_copy_session_id); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_ssl_copy_session_id) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_ssl_copy_session_id(to, from)"); + { + BIO * to = (BIO *)SvIV(ST(0)); + BIO * from = (BIO *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = BIO_ssl_copy_session_id(to, from); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_BIO_ssl_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_BIO_ssl_shutdown) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::BIO_ssl_shutdown(ssl_bio)"); + { + BIO * ssl_bio = (BIO *)SvIV(ST(0)); + + BIO_ssl_shutdown(ssl_bio); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_add_client_CA); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_add_client_CA) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::add_client_CA(ssl, x)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + X509 * x = (X509 *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_add_client_CA(ssl, x); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_alert_desc_string); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_alert_desc_string) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::alert_desc_string(value)"); + { + int value = (int)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_alert_desc_string(value); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_alert_desc_string_long); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_alert_desc_string_long) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::alert_desc_string_long(value)"); + { + int value = (int)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_alert_desc_string_long(value); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_alert_type_string); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_alert_type_string) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::alert_type_string(value)"); + { + int value = (int)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_alert_type_string(value); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_alert_type_string_long); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_alert_type_string_long) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::alert_type_string_long(value)"); + { + int value = (int)SvIV(ST(0)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_alert_type_string_long(value); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_callback_ctrl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_callback_ctrl) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::callback_ctrl(ssl, i, fp)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int i = (int)SvIV(ST(1)); + callback_no_ret * fp = (callback_no_ret *)SvIV(ST(2)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_callback_ctrl(ssl, i, fp); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_check_private_key); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_check_private_key) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::check_private_key(ctx)"); + { + SSL * ctx = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_check_private_key(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CIPHER_description); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CIPHER_description) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CIPHER_description(cipher, buf, size)"); + { + SSL_CIPHER * cipher = (SSL_CIPHER *)SvIV(ST(0)); + char * buf = (char *)SvPV_nolen(ST(1)); + int size = (int)SvIV(ST(2)); + char * RETVAL; + dXSTARG; + + RETVAL = SSL_CIPHER_description(cipher, buf, size); + sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CIPHER_get_bits); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CIPHER_get_bits) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CIPHER_get_bits(c, alg_bits)"); + { + SSL_CIPHER * c = (SSL_CIPHER *)SvIV(ST(0)); + int * alg_bits = (int *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CIPHER_get_bits(c, alg_bits); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_COMP_add_compression_method); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_COMP_add_compression_method) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::COMP_add_compression_method(id, cm)"); + { + int id = (int)SvIV(ST(0)); + COMP_METHOD * cm = (COMP_METHOD *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_COMP_add_compression_method(id, cm); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_add_client_CA); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_add_client_CA) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_add_client_CA(ctx, x)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + X509 * x = (X509 *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_add_client_CA(ctx, x); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_callback_ctrl); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_callback_ctrl) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_callback_ctrl(ctx, i, fp)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int i = (int)SvIV(ST(1)); + callback_no_ret * fp = (callback_no_ret *)SvIV(ST(2)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_callback_ctrl(ctx, i, fp); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_check_private_key); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_check_private_key) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_check_private_key(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_check_private_key(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_ex_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_ex_data(ssl, idx)"); + { + SSL_CTX * ssl = (SSL_CTX *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_ex_data(ssl, idx); + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_quiet_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_quiet_shutdown) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_quiet_shutdown(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_quiet_shutdown(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_timeout) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_timeout(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_timeout(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_verify_depth); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_verify_depth) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_verify_depth(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_verify_depth(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_verify_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_verify_mode) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_verify_mode(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_verify_mode(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_cert_store); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_cert_store) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_cert_store(ctx, store)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + X509_STORE * store = (X509_STORE *)SvIV(ST(1)); + + SSL_CTX_set_cert_store(ctx, store); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_get_cert_store); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_cert_store) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_cert_store(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + X509_STORE * RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_cert_store(ctx); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_cert_verify_callback); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_cert_verify_callback) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_cert_verify_callback(ctx, cb, arg)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + callback_ret_int * cb = (callback_ret_int *)SvIV(ST(1)); + char * arg = (char *)SvPV_nolen(ST(2)); + + SSL_CTX_set_cert_verify_callback(ctx, cb, arg); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_client_CA_list); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_client_CA_list) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_client_CA_list(ctx, list)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + X509_NAME_STACK * list = (X509_NAME_STACK *)SvIV(ST(1)); + + SSL_CTX_set_client_CA_list(ctx, list); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_default_passwd_cb); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_default_passwd_cb) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_default_passwd_cb(ctx, cb)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + SV * cb = ST(1); +#line 2814 "SSLeay.xs" + 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); + } +#line 5101 "SSLeay.c" + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_default_passwd_cb_userdata); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_default_passwd_cb_userdata) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_default_passwd_cb_userdata(ctx, u)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + void * u = INT2PTR(void *,SvIV(ST(1))); + + SSL_CTX_set_default_passwd_cb_userdata(ctx, u); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_ex_data) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_ex_data(ssl, idx, data)"); + { + SSL_CTX * ssl = (SSL_CTX *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * data = INT2PTR(void *,SvIV(ST(2))); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_ex_data(ssl, idx, data); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_purpose); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_purpose) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_purpose(s, purpose)"); + { + SSL_CTX * s = (SSL_CTX *)SvIV(ST(0)); + int purpose = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_purpose(s, purpose); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_quiet_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_quiet_shutdown) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_quiet_shutdown(ctx, mode)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int mode = (int)SvIV(ST(1)); + + SSL_CTX_set_quiet_shutdown(ctx, mode); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_ssl_version); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_ssl_version) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_ssl_version(ctx, meth)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + SSL_METHOD * meth = (SSL_METHOD *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_ssl_version(ctx, meth); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_timeout) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_timeout(ctx, t)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long t = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_timeout(ctx, t); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_trust); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_trust) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_trust(s, trust)"); + { + SSL_CTX * s = (SSL_CTX *)SvIV(ST(0)); + int trust = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_trust(s, trust); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_verify_depth); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_verify_depth) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_verify_depth(ctx, depth)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + int depth = (int)SvIV(ST(1)); + + SSL_CTX_set_verify_depth(ctx, depth); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_use_certificate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_certificate) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_certificate(ctx, x)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + X509 * x = (X509 *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_certificate(ctx, x); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_use_certificate_chain_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_certificate_chain_file) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_certificate_chain_file(ctx, file)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + const char * file = (const char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_certificate_chain_file(ctx, file); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_use_PrivateKey); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_PrivateKey) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_PrivateKey(ctx, pkey)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + EVP_PKEY * pkey = (EVP_PKEY *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_PrivateKey(ctx, pkey); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_use_RSAPrivateKey); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_use_RSAPrivateKey) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_use_RSAPrivateKey(ctx, rsa)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + RSA * rsa = (RSA *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_use_RSAPrivateKey(ctx, rsa); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_do_handshake); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_do_handshake) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::do_handshake(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_do_handshake(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_dup); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_dup) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::dup(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + SSL * RETVAL; + dXSTARG; + + RETVAL = SSL_dup(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_current_cipher); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_current_cipher) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_current_cipher(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + SSL_CIPHER * RETVAL; + dXSTARG; + + RETVAL = SSL_get_current_cipher(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_default_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_default_timeout) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_default_timeout(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_get_default_timeout(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_ex_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_ex_data(ssl, idx)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * RETVAL; + dXSTARG; + + RETVAL = SSL_get_ex_data(ssl, idx); + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_finished); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_finished) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_finished(s, buf, count)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + void * buf = INT2PTR(void *,SvIV(ST(1))); + size_t count = (size_t)SvUV(ST(2)); + size_t RETVAL; + dXSTARG; + + RETVAL = SSL_get_finished(s, buf, count); + XSprePUSH; PUSHu((UV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_peer_finished); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_peer_finished) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_peer_finished(s, buf, count)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + void * buf = INT2PTR(void *,SvIV(ST(1))); + size_t count = (size_t)SvUV(ST(2)); + size_t RETVAL; + dXSTARG; + + RETVAL = SSL_get_peer_finished(s, buf, count); + XSprePUSH; PUSHu((UV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_quiet_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_quiet_shutdown) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_quiet_shutdown(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_quiet_shutdown(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_shutdown) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_shutdown(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_shutdown(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_verify_depth); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_verify_depth) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_verify_depth(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_verify_depth(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_verify_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_verify_mode) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_verify_mode(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_verify_mode(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_verify_result); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_verify_result) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_verify_result(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_get_verify_result(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_library_init); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_library_init) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::library_init()"); + { + int RETVAL; + dXSTARG; + + RETVAL = SSL_library_init(); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_renegotiate); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_renegotiate) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::renegotiate(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_renegotiate(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_cmp); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_cmp) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_cmp(a, b)"); + { + SSL_SESSION * a = (SSL_SESSION *)SvIV(ST(0)); + SSL_SESSION * b = (SSL_SESSION *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_cmp(a, b); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_get_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_get_ex_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_get_ex_data(ss, idx)"); + { + SSL_SESSION * ss = (SSL_SESSION *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_get_ex_data(ss, idx); + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_get_time); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_get_time) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_get_time(s)"); + { + SSL_SESSION * s = (SSL_SESSION *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_get_time(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_get_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_get_timeout) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_get_timeout(s)"); + { + SSL_SESSION * s = (SSL_SESSION *)SvIV(ST(0)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_get_timeout(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_print_fp); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_print_fp) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_print_fp(fp, ses)"); + { + FILE * fp = PerlIO_findFILE(IoIFP(sv_2io(ST(0)))); + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_print_fp(fp, ses); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_set_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_set_ex_data) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_set_ex_data(ss, idx, data)"); + { + SSL_SESSION * ss = (SSL_SESSION *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * data = INT2PTR(void *,SvIV(ST(2))); + int RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_set_ex_data(ss, idx, data); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_set_time); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_set_time) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_set_time(s, t)"); + { + SSL_SESSION * s = (SSL_SESSION *)SvIV(ST(0)); + long t = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_set_time(s, t); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_set_timeout); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_set_timeout) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_set_timeout(s, t)"); + { + SSL_SESSION * s = (SSL_SESSION *)SvIV(ST(0)); + long t = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_set_timeout(s, t); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_accept_state); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_accept_state) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_accept_state(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + + SSL_set_accept_state(s); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_client_CA_list); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_client_CA_list) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_client_CA_list(s, list)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + X509_NAME_STACK * list = (X509_NAME_STACK *)SvIV(ST(1)); + + SSL_set_client_CA_list(s, list); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_connect_state); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_connect_state) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_connect_state(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + + SSL_set_connect_state(s); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_ex_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_ex_data) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_ex_data(ssl, idx, data)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int idx = (int)SvIV(ST(1)); + void * data = INT2PTR(void *,SvIV(ST(2))); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_ex_data(ssl, idx, data); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_info_callback); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_info_callback) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_info_callback(ssl, cb)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + callback_no_ret * cb = (callback_no_ret *)SvIV(ST(1)); + + SSL_set_info_callback(ssl, cb); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_purpose); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_purpose) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_purpose(s, purpose)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int purpose = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_purpose(s, purpose); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_quiet_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_quiet_shutdown) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_quiet_shutdown(ssl, mode)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int mode = (int)SvIV(ST(1)); + + SSL_set_quiet_shutdown(ssl, mode); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_shutdown) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_shutdown(ssl, mode)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int mode = (int)SvIV(ST(1)); + + SSL_set_shutdown(ssl, mode); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_trust); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_trust) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_trust(s, trust)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int trust = (int)SvIV(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_trust(s, trust); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_verify_depth); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_verify_depth) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_verify_depth(s, depth)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int depth = (int)SvIV(ST(1)); + + SSL_set_verify_depth(s, depth); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_verify_result); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_verify_result) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_verify_result(ssl, v)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long v = (long)SvIV(ST(1)); + + SSL_set_verify_result(ssl, v); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_shutdown); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_shutdown) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::shutdown(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_shutdown(s); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_version); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_version) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::version(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_version(ssl); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM_MANUALLY_ADDED_1_09 +XS(XS_Net__SSLeay_load_client_CA_file); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_load_client_CA_file) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::load_client_CA_file(file)"); + { + const char * file = (const char *)SvPV_nolen(ST(0)); + X509_NAME_STACK * RETVAL; + dXSTARG; + + RETVAL = SSL_load_client_CA_file(file); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_add_file_cert_subjects_to_stack); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_add_file_cert_subjects_to_stack) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::add_file_cert_subjects_to_stack(stackCAs, file)"); + { + X509_NAME_STACK * stackCAs = (X509_NAME_STACK *)SvIV(ST(0)); + const char * file = (const char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_add_file_cert_subjects_to_stack(stackCAs, file); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#ifndef WIN32 +#ifndef VMS +#ifndef MAC_OS_pre_X +#define XSubPPtmpAAAD 1 + +XS(XS_Net__SSLeay_add_dir_cert_subjects_to_stack); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_add_dir_cert_subjects_to_stack) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::add_dir_cert_subjects_to_stack(stackCAs, dir)"); + { + X509_NAME_STACK * stackCAs = (X509_NAME_STACK *)SvIV(ST(0)); + const char * dir = (const char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_add_dir_cert_subjects_to_stack(stackCAs, dir); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#endif +#endif +#endif +XS(XS_Net__SSLeay_CTX_get_ex_new_index); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_ex_new_index) +{ + dXSARGS; + if (items != 5) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_ex_new_index(argl, argp, new_func, dup_func, free_func)"); + { + long argl = (long)SvIV(ST(0)); + void * argp = INT2PTR(void *,SvIV(ST(1))); + CRYPTO_EX_new * new_func = (CRYPTO_EX_new *)SvIV(ST(2)); + CRYPTO_EX_dup * dup_func = (CRYPTO_EX_dup *)SvIV(ST(3)); + CRYPTO_EX_free * free_func = (CRYPTO_EX_free *)SvIV(ST(4)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_get_ex_new_index(argl, argp, new_func, dup_func, free_func); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_session_id_context); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_session_id_context) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_session_id_context(ctx, sid_ctx, sid_ctx_len)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + const unsigned char * sid_ctx = (const unsigned char *)SvPV_nolen(ST(1)); + unsigned int sid_ctx_len = (unsigned int)SvUV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_session_id_context(ctx, sid_ctx, sid_ctx_len); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_session_id_context); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_session_id_context) +{ + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_session_id_context(ssl, sid_ctx, sid_ctx_len)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + const unsigned char * sid_ctx = (const unsigned char *)SvPV_nolen(ST(1)); + unsigned int sid_ctx_len = (unsigned int)SvUV(ST(2)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_set_session_id_context(ssl, sid_ctx, sid_ctx_len); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_tmp_rsa_callback); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_tmp_rsa_callback) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_tmp_rsa_callback(ctx, cb)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + cb_ssl_int_int_ret_RSA * cb = (cb_ssl_int_int_ret_RSA *)SvIV(ST(1)); + + SSL_CTX_set_tmp_rsa_callback(ctx, cb); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_tmp_rsa_callback); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_tmp_rsa_callback) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_tmp_rsa_callback(ssl, cb)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + cb_ssl_int_int_ret_RSA * cb = (cb_ssl_int_int_ret_RSA *)SvIV(ST(1)); + + SSL_set_tmp_rsa_callback(ssl, cb); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_CTX_set_tmp_dh_callback); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_tmp_dh_callback) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_tmp_dh_callback(ctx, dh)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + cb_ssl_int_int_ret_DH * dh = (cb_ssl_int_int_ret_DH *)SvIV(ST(1)); + + SSL_CTX_set_tmp_dh_callback(ctx, dh); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_set_tmp_dh_callback); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_tmp_dh_callback) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_tmp_dh_callback(ssl, dh)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + cb_ssl_int_int_ret_DH * dh = (cb_ssl_int_int_ret_DH *)SvIV(ST(1)); + + SSL_set_tmp_dh_callback(ssl, dh); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_get_ex_new_index); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_ex_new_index) +{ + dXSARGS; + if (items != 5) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_ex_new_index(argl, argp, new_func, dup_func, free_func)"); + { + long argl = (long)SvIV(ST(0)); + void * argp = INT2PTR(void *,SvIV(ST(1))); + CRYPTO_EX_new * new_func = (CRYPTO_EX_new *)SvIV(ST(2)); + CRYPTO_EX_dup * dup_func = (CRYPTO_EX_dup *)SvIV(ST(3)); + CRYPTO_EX_free * free_func = (CRYPTO_EX_free *)SvIV(ST(4)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_get_ex_new_index(argl, argp, new_func, dup_func, free_func); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_get_ex_new_index); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_get_ex_new_index) +{ + dXSARGS; + if (items != 5) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_get_ex_new_index(argl, argp, new_func, dup_func, free_func)"); + { + long argl = (long)SvIV(ST(0)); + void * argp = INT2PTR(void *,SvIV(ST(1))); + CRYPTO_EX_new * new_func = (CRYPTO_EX_new *)SvIV(ST(2)); + CRYPTO_EX_dup * dup_func = (CRYPTO_EX_dup *)SvIV(ST(3)); + CRYPTO_EX_free * free_func = (CRYPTO_EX_free *)SvIV(ST(4)); + int RETVAL; + dXSTARG; + + RETVAL = SSL_SESSION_get_ex_new_index(argl, argp, new_func, dup_func, free_func); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +#define REM_SEMIAUTOMATIC_MACRO_GEN_1_09 +XS(XS_Net__SSLeay_OpenSSL_add_ssl_algorithms); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_OpenSSL_add_ssl_algorithms) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: Net::SSLeay::OpenSSL_add_ssl_algorithms()"); + { + int RETVAL; + dXSTARG; +#line 3132 "SSLeay.xs" + RETVAL = SSL_library_init(); +#line 6141 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_clear_num_renegotiations); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_clear_num_renegotiations) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::clear_num_renegotiations(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3140 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL); +#line 6159 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_add_extra_chain_cert); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_add_extra_chain_cert) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_add_extra_chain_cert(ctx, x509)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + X509 * x509 = (X509 *)SvIV(ST(1)); + long RETVAL; + dXSTARG; +#line 3149 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char*)x509); +#line 6178 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_app_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_app_data) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_app_data(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + void * RETVAL; + dXSTARG; +#line 3157 "SSLeay.xs" + RETVAL = SSL_CTX_get_ex_data(ctx,0); +#line 6196 "SSLeay.c" + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_mode) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_mode(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3165 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_MODE,0,NULL); +#line 6214 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_read_ahead); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_read_ahead) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_read_ahead(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3173 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL); +#line 6232 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_get_session_cache_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_get_session_cache_mode) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_get_session_cache_mode(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3181 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL); +#line 6250 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_need_tmp_RSA); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_need_tmp_RSA) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_need_tmp_RSA(ctx)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3189 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL); +#line 6268 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_app_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_app_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_app_data(ctx, arg)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + char * arg = (char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; +#line 3198 "SSLeay.xs" + RETVAL = SSL_CTX_set_ex_data(ctx,0,arg); +#line 6287 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_mode) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_mode(ctx, op)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long op = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; +#line 3207 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_MODE,op,NULL); +#line 6306 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_read_ahead); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_read_ahead) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_read_ahead(ctx, m)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long m = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; +#line 3216 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL); +#line 6325 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_session_cache_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_session_cache_mode) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_session_cache_mode(ctx, m)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + long m = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; +#line 3225 "SSLeay.xs" + RETVAL = SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL); +#line 6344 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_tmp_dh); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_tmp_dh) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_tmp_dh(ctx, dh)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + DH * dh = (DH *)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_tmp_dh(ctx, dh); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_CTX_set_tmp_rsa); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_CTX_set_tmp_rsa) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::CTX_set_tmp_rsa(ctx, rsa)"); + { + SSL_CTX * ctx = (SSL_CTX *)SvIV(ST(0)); + RSA * rsa = (RSA *)SvIV(ST(1)); + long RETVAL; + dXSTARG; + + RETVAL = SSL_CTX_set_tmp_rsa(ctx, rsa); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_app_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_app_data) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_app_data(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + void * RETVAL; + dXSTARG; +#line 3243 "SSLeay.xs" + RETVAL = SSL_get_ex_data(s,0); +#line 6398 "SSLeay.c" + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_cipher_bits); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_cipher_bits) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_cipher_bits(s, np)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + int * np = (int *)SvIV(ST(1)); + int RETVAL; + dXSTARG; +#line 3252 "SSLeay.xs" + RETVAL = SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np); +#line 6417 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_mode) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_mode(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3260 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_MODE,0,NULL); +#line 6435 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_state); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_state) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_state(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + int RETVAL; + dXSTARG; +#line 3268 "SSLeay.xs" + RETVAL = SSL_state(ssl); +#line 6453 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_need_tmp_RSA); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_need_tmp_RSA) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::need_tmp_RSA(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3276 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL); +#line 6471 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_num_renegotiations); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_num_renegotiations) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::num_renegotiations(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3284 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL); +#line 6489 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_get_app_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_get_app_data) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_get_app_data(ses)"); + { + SSL_SESSION * ses = (SSL_SESSION *)SvIV(ST(0)); + void * RETVAL; + dXSTARG; +#line 3292 "SSLeay.xs" + RETVAL = SSL_SESSION_get_ex_data(ses,0); +#line 6507 "SSLeay.c" + XSprePUSH; PUSHi(PTR2IV(RETVAL)); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_session_reused); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_session_reused) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::session_reused(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3300 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_GET_SESSION_REUSED,0,NULL); +#line 6525 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_set_app_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_set_app_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_set_app_data(s, a)"); + { + SSL_SESSION * s = (SSL_SESSION *)SvIV(ST(0)); + void * a = INT2PTR(void *,SvIV(ST(1))); + int RETVAL; + dXSTARG; +#line 3309 "SSLeay.xs" + RETVAL = SSL_SESSION_set_ex_data(s,0,(char *)a); +#line 6544 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_app_data); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_app_data) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_app_data(s, arg)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + void * arg = INT2PTR(void *,SvIV(ST(1))); + int RETVAL; + dXSTARG; +#line 3318 "SSLeay.xs" + RETVAL = SSL_set_ex_data(s,0,(char *)arg); +#line 6563 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_mode); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_mode) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_mode(ssl, op)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long op = (long)SvIV(ST(1)); + long RETVAL; + dXSTARG; +#line 3327 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_MODE,op,NULL); +#line 6582 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_pref_cipher); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_pref_cipher) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_pref_cipher(s, n)"); + { + SSL * s = (SSL *)SvIV(ST(0)); + const char * n = (const char *)SvPV_nolen(ST(1)); + int RETVAL; + dXSTARG; +#line 3336 "SSLeay.xs" + RETVAL = SSL_set_cipher_list(s,n); +#line 6601 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_tmp_dh); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_tmp_dh) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_tmp_dh(ssl, dh)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + char * dh = (char *)SvPV_nolen(ST(1)); + long RETVAL; + dXSTARG; +#line 3345 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh); +#line 6620 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_set_tmp_rsa); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_set_tmp_rsa) +{ + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Net::SSLeay::set_tmp_rsa(ssl, rsa)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + char * rsa = (char *)SvPV_nolen(ST(1)); + long RETVAL; + dXSTARG; +#line 3354 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa); +#line 6639 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RSA_generate_key); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RSA_generate_key) +{ + dXSARGS; + if (items < 2 || items > 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RSA_generate_key(bits, e, callback=NULL, cb_arg=NULL)"); + { + int bits = (int)SvIV(ST(0)); + unsigned long e = (unsigned long)SvUV(ST(1)); + void * callback; + void * cb_arg; + RSA * RETVAL; + dXSTARG; + + if (items < 3) + callback = NULL; + else { + callback = INT2PTR(void *,SvIV(ST(2))); + } + + if (items < 4) + cb_arg = NULL; + else { + cb_arg = INT2PTR(void *,SvIV(ST(3))); + } + + RETVAL = RSA_generate_key(bits, e, callback, cb_arg); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_RSA_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_RSA_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::RSA_free(r)"); + { + RSA * r = (RSA *)SvIV(ST(0)); + + RSA_free(r); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_X509_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_X509_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::X509_free(a)"); + { + X509 * a = (X509 *)SvIV(ST(0)); + + X509_free(a); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_PEM_read_bio_DHparams); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_PEM_read_bio_DHparams) +{ + dXSARGS; + if (items < 1 || items > 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::PEM_read_bio_DHparams(bio, x=NULL, cb=NULL, u=NULL)"); + { + BIO * bio = (BIO *)SvIV(ST(0)); + void * x; + void * cb; + void * u; + DH * RETVAL; + dXSTARG; + + if (items < 2) + x = NULL; + else { + x = INT2PTR(void *,SvIV(ST(1))); + } + + if (items < 3) + cb = NULL; + else { + cb = INT2PTR(void *,SvIV(ST(2))); + } + + if (items < 4) + u = NULL; + else { + u = INT2PTR(void *,SvIV(ST(3))); + } + + RETVAL = PEM_read_bio_DHparams(bio, x, cb, u); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_PEM_read_bio_X509_CRL); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_PEM_read_bio_X509_CRL) +{ + dXSARGS; + if (items < 1 || items > 4) + Perl_croak(aTHX_ "Usage: Net::SSLeay::PEM_read_bio_X509_CRL(bio, x=NULL, cb=NULL, u=NULL)"); + { + BIO * bio = (BIO *)SvIV(ST(0)); + void * x; + void * cb; + void * u; + X509_CRL * RETVAL; + dXSTARG; + + if (items < 2) + x = NULL; + else { + x = INT2PTR(void *,SvIV(ST(1))); + } + + if (items < 3) + cb = NULL; + else { + cb = INT2PTR(void *,SvIV(ST(2))); + } + + if (items < 4) + u = NULL; + else { + u = INT2PTR(void *,SvIV(ST(3))); + } + + RETVAL = PEM_read_bio_X509_CRL(bio, x, cb, u); + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_DH_free); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_DH_free) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::DH_free(dh)"); + { + DH * dh = (DH *)SvIV(ST(0)); + + DH_free(dh); + } + XSRETURN_EMPTY; +} + +XS(XS_Net__SSLeay_total_renegotiations); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_total_renegotiations) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::total_renegotiations(ssl)"); + { + SSL * ssl = (SSL *)SvIV(ST(0)); + long RETVAL; + dXSTARG; +#line 3395 "SSLeay.xs" + RETVAL = SSL_ctrl(ssl,SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL); +#line 6807 "SSLeay.c" + XSprePUSH; PUSHi((IV)RETVAL); + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_SESSION_get_master_key); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_SESSION_get_master_key) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::SESSION_get_master_key(s)"); + { + SSL_SESSION * s = (SSL_SESSION *)SvIV(ST(0)); +#line 3403 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + sv_setpvn(ST(0), s->master_key, s->master_key_length); +#line 6824 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_client_random); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_client_random) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_client_random(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); +#line 3410 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + sv_setpvn(ST(0), s->s3->client_random, SSL3_RANDOM_SIZE); +#line 6840 "SSLeay.c" + } + XSRETURN(1); +} + +XS(XS_Net__SSLeay_get_server_random); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Net__SSLeay_get_server_random) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Net::SSLeay::get_server_random(s)"); + { + SSL * s = (SSL *)SvIV(ST(0)); +#line 3417 "SSLeay.xs" + ST(0) = sv_newmortal(); /* Undefined to start with */ + sv_setpvn(ST(0), s->s3->server_random, SSL3_RANDOM_SIZE); +#line 6856 "SSLeay.c" + } + XSRETURN(1); +} + +#define REM_EOF "/* EOF - SSLeay.xs */" +#ifdef __cplusplus +extern "C" +#endif +XS(boot_Net__SSLeay); /* prototype to pass -Wmissing-prototypes */ +XS(boot_Net__SSLeay) +{ + dXSARGS; + char* file = __FILE__; + + XS_VERSION_BOOTCHECK ; + + newXSproto("Net::SSLeay::constant", XS_Net__SSLeay_constant, file, "$"); + newXSproto("Net::SSLeay::hello", XS_Net__SSLeay_hello, file, ""); + newXSproto("Net::SSLeay::CTX_new", XS_Net__SSLeay_CTX_new, file, ""); + newXSproto("Net::SSLeay::CTX_v2_new", XS_Net__SSLeay_CTX_v2_new, file, ""); + newXSproto("Net::SSLeay::CTX_v3_new", XS_Net__SSLeay_CTX_v3_new, file, ""); + newXSproto("Net::SSLeay::CTX_v23_new", XS_Net__SSLeay_CTX_v23_new, file, ""); + newXSproto("Net::SSLeay::CTX_tlsv1_new", XS_Net__SSLeay_CTX_tlsv1_new, file, ""); + newXSproto("Net::SSLeay::CTX_new_with_method", XS_Net__SSLeay_CTX_new_with_method, file, "$"); + newXSproto("Net::SSLeay::CTX_free", XS_Net__SSLeay_CTX_free, file, "$"); + newXSproto("Net::SSLeay::CTX_add_session", XS_Net__SSLeay_CTX_add_session, file, "$$"); + newXSproto("Net::SSLeay::CTX_remove_session", XS_Net__SSLeay_CTX_remove_session, file, "$$"); + newXSproto("Net::SSLeay::CTX_flush_sessions", XS_Net__SSLeay_CTX_flush_sessions, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_default_verify_paths", XS_Net__SSLeay_CTX_set_default_verify_paths, file, "$"); + newXSproto("Net::SSLeay::CTX_load_verify_locations", XS_Net__SSLeay_CTX_load_verify_locations, file, "$$$"); + newXSproto("Net::SSLeay::CTX_set_verify", XS_Net__SSLeay_CTX_set_verify, file, "$$$"); + newXSproto("Net::SSLeay::get_error", XS_Net__SSLeay_get_error, file, "$$"); + newXSproto("Net::SSLeay::new", XS_Net__SSLeay_new, file, "$"); + newXSproto("Net::SSLeay::free", XS_Net__SSLeay_free, file, "$"); +#if XSubPPtmpAAAA + newXSproto("Net::SSLeay::debug", XS_Net__SSLeay_debug, file, "$"); +#endif + newXSproto("Net::SSLeay::accept", XS_Net__SSLeay_accept, file, "$"); + newXSproto("Net::SSLeay::clear", XS_Net__SSLeay_clear, file, "$"); + newXSproto("Net::SSLeay::connect", XS_Net__SSLeay_connect, file, "$"); +#if XSubPPtmpAAAB + newXSproto("Net::SSLeay::set_fd", XS_Net__SSLeay_set_fd, file, "$$"); + newXSproto("Net::SSLeay::set_rfd", XS_Net__SSLeay_set_rfd, file, "$$"); + newXSproto("Net::SSLeay::set_wfd", XS_Net__SSLeay_set_wfd, file, "$$"); +#endif +#if XSubPPtmpAAAC + newXSproto("Net::SSLeay::set_fd", XS_Net__SSLeay_set_fd, file, "$$"); + newXSproto("Net::SSLeay::set_rfd", XS_Net__SSLeay_set_rfd, file, "$$"); + newXSproto("Net::SSLeay::set_wfd", XS_Net__SSLeay_set_wfd, file, "$$"); +#endif + newXSproto("Net::SSLeay::get_fd", XS_Net__SSLeay_get_fd, file, "$"); + newXSproto("Net::SSLeay::read", XS_Net__SSLeay_read, file, "$;$"); + newXSproto("Net::SSLeay::peek", XS_Net__SSLeay_peek, file, "$;$"); + newXSproto("Net::SSLeay::write", XS_Net__SSLeay_write, file, "$$"); + newXSproto("Net::SSLeay::write_partial", XS_Net__SSLeay_write_partial, file, "$$$$"); + newXSproto("Net::SSLeay::use_RSAPrivateKey", XS_Net__SSLeay_use_RSAPrivateKey, file, "$$"); + newXSproto("Net::SSLeay::use_RSAPrivateKey_ASN1", XS_Net__SSLeay_use_RSAPrivateKey_ASN1, file, "$$$"); + newXSproto("Net::SSLeay::use_RSAPrivateKey_file", XS_Net__SSLeay_use_RSAPrivateKey_file, file, "$$$"); + newXSproto("Net::SSLeay::CTX_use_RSAPrivateKey_file", XS_Net__SSLeay_CTX_use_RSAPrivateKey_file, file, "$$$"); + newXSproto("Net::SSLeay::use_PrivateKey", XS_Net__SSLeay_use_PrivateKey, file, "$$"); + newXSproto("Net::SSLeay::use_PrivateKey_ASN1", XS_Net__SSLeay_use_PrivateKey_ASN1, file, "$$$$"); + newXSproto("Net::SSLeay::use_PrivateKey_file", XS_Net__SSLeay_use_PrivateKey_file, file, "$$$"); + newXSproto("Net::SSLeay::CTX_use_PrivateKey_file", XS_Net__SSLeay_CTX_use_PrivateKey_file, file, "$$$"); + newXSproto("Net::SSLeay::use_certificate", XS_Net__SSLeay_use_certificate, file, "$$"); + newXSproto("Net::SSLeay::use_certificate_ASN1", XS_Net__SSLeay_use_certificate_ASN1, file, "$$$"); + newXSproto("Net::SSLeay::use_certificate_file", XS_Net__SSLeay_use_certificate_file, file, "$$$"); + newXSproto("Net::SSLeay::CTX_use_certificate_file", XS_Net__SSLeay_CTX_use_certificate_file, file, "$$$"); + newXSproto("Net::SSLeay::state_string", XS_Net__SSLeay_state_string, file, "$"); + newXSproto("Net::SSLeay::rstate_string", XS_Net__SSLeay_rstate_string, file, "$"); + newXSproto("Net::SSLeay::state_string_long", XS_Net__SSLeay_state_string_long, file, "$"); + newXSproto("Net::SSLeay::rstate_string_long", XS_Net__SSLeay_rstate_string_long, file, "$"); + newXSproto("Net::SSLeay::get_time", XS_Net__SSLeay_get_time, file, "$"); + newXSproto("Net::SSLeay::set_time", XS_Net__SSLeay_set_time, file, "$$"); + newXSproto("Net::SSLeay::get_timeout", XS_Net__SSLeay_get_timeout, file, "$"); + newXSproto("Net::SSLeay::set_timeout", XS_Net__SSLeay_set_timeout, file, "$$"); + newXSproto("Net::SSLeay::copy_session_id", XS_Net__SSLeay_copy_session_id, file, "$$"); + newXSproto("Net::SSLeay::set_read_ahead", XS_Net__SSLeay_set_read_ahead, file, "$;$"); + newXSproto("Net::SSLeay::get_read_ahead", XS_Net__SSLeay_get_read_ahead, file, "$"); + newXSproto("Net::SSLeay::pending", XS_Net__SSLeay_pending, file, "$"); + newXSproto("Net::SSLeay::CTX_set_cipher_list", XS_Net__SSLeay_CTX_set_cipher_list, file, "$$"); + newXSproto("Net::SSLeay::get_cipher_list", XS_Net__SSLeay_get_cipher_list, file, "$$"); + newXSproto("Net::SSLeay::set_cipher_list", XS_Net__SSLeay_set_cipher_list, file, "$$"); + newXSproto("Net::SSLeay::get_cipher", XS_Net__SSLeay_get_cipher, file, "$"); + newXSproto("Net::SSLeay::get_shared_ciphers", XS_Net__SSLeay_get_shared_ciphers, file, "$$$"); + newXSproto("Net::SSLeay::get_peer_certificate", XS_Net__SSLeay_get_peer_certificate, file, "$"); + newXSproto("Net::SSLeay::set_verify", XS_Net__SSLeay_set_verify, file, "$$$"); + newXSproto("Net::SSLeay::set_bio", XS_Net__SSLeay_set_bio, file, "$$$"); + newXSproto("Net::SSLeay::get_rbio", XS_Net__SSLeay_get_rbio, file, "$"); + newXSproto("Net::SSLeay::get_wbio", XS_Net__SSLeay_get_wbio, file, "$"); + newXSproto("Net::SSLeay::SESSION_new", XS_Net__SSLeay_SESSION_new, file, ""); + newXSproto("Net::SSLeay::SESSION_print", XS_Net__SSLeay_SESSION_print, file, "$$"); + newXSproto("Net::SSLeay::SESSION_free", XS_Net__SSLeay_SESSION_free, file, "$"); + newXSproto("Net::SSLeay::i2d_SSL_SESSION", XS_Net__SSLeay_i2d_SSL_SESSION, file, "$$"); + newXSproto("Net::SSLeay::set_session", XS_Net__SSLeay_set_session, file, "$$"); + newXSproto("Net::SSLeay::d2i_SSL_SESSION", XS_Net__SSLeay_d2i_SSL_SESSION, file, "$$$"); + newXSproto("Net::SSLeay::get_session", XS_Net__SSLeay_get_session, file, "$"); + newXSproto("Net::SSLeay::get_certificate", XS_Net__SSLeay_get_certificate, file, "$"); + newXSproto("Net::SSLeay::get_SSL_CTX", XS_Net__SSLeay_get_SSL_CTX, file, "$"); + newXSproto("Net::SSLeay::ctrl", XS_Net__SSLeay_ctrl, file, "$$$$"); + newXSproto("Net::SSLeay::CTX_ctrl", XS_Net__SSLeay_CTX_ctrl, file, "$$$$"); + newXSproto("Net::SSLeay::get_options", XS_Net__SSLeay_get_options, file, "$"); + newXSproto("Net::SSLeay::set_options", XS_Net__SSLeay_set_options, file, "$$"); + newXSproto("Net::SSLeay::CTX_get_options", XS_Net__SSLeay_CTX_get_options, file, "$"); + newXSproto("Net::SSLeay::CTX_set_options", XS_Net__SSLeay_CTX_set_options, file, "$$"); + newXSproto("Net::SSLeay::CTX_sessions", XS_Net__SSLeay_CTX_sessions, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_number", XS_Net__SSLeay_CTX_sess_number, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_connect", XS_Net__SSLeay_CTX_sess_connect, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_connect_good", XS_Net__SSLeay_CTX_sess_connect_good, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_connect_renegotiate", XS_Net__SSLeay_CTX_sess_connect_renegotiate, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_accept", XS_Net__SSLeay_CTX_sess_accept, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_accept_renegotiate", XS_Net__SSLeay_CTX_sess_accept_renegotiate, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_accept_good", XS_Net__SSLeay_CTX_sess_accept_good, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_hits", XS_Net__SSLeay_CTX_sess_hits, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_cb_hits", XS_Net__SSLeay_CTX_sess_cb_hits, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_misses", XS_Net__SSLeay_CTX_sess_misses, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_timeouts", XS_Net__SSLeay_CTX_sess_timeouts, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_cache_full", XS_Net__SSLeay_CTX_sess_cache_full, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_get_cache_size", XS_Net__SSLeay_CTX_sess_get_cache_size, file, "$"); + newXSproto("Net::SSLeay::CTX_sess_set_cache_size", XS_Net__SSLeay_CTX_sess_set_cache_size, file, "$$"); + newXSproto("Net::SSLeay::want", XS_Net__SSLeay_want, file, "$"); + newXSproto("Net::SSLeay::state", XS_Net__SSLeay_state, file, "$"); + newXSproto("Net::SSLeay::BIO_f_ssl", XS_Net__SSLeay_BIO_f_ssl, file, ""); + newXSproto("Net::SSLeay::BIO_s_mem", XS_Net__SSLeay_BIO_s_mem, file, ""); + newXSproto("Net::SSLeay::ERR_get_error", XS_Net__SSLeay_ERR_get_error, file, ""); + newXSproto("Net::SSLeay::ERR_peek_error", XS_Net__SSLeay_ERR_peek_error, file, ""); + newXSproto("Net::SSLeay::ERR_put_error", XS_Net__SSLeay_ERR_put_error, file, "$$$$$"); + newXSproto("Net::SSLeay::ERR_clear_error", XS_Net__SSLeay_ERR_clear_error, file, ""); + newXSproto("Net::SSLeay::ERR_error_string", XS_Net__SSLeay_ERR_error_string, file, "$;$"); + newXSproto("Net::SSLeay::load_error_strings", XS_Net__SSLeay_load_error_strings, file, ""); + newXSproto("Net::SSLeay::ERR_load_crypto_strings", XS_Net__SSLeay_ERR_load_crypto_strings, file, ""); + newXSproto("Net::SSLeay::SSLeay_add_ssl_algorithms", XS_Net__SSLeay_SSLeay_add_ssl_algorithms, file, ""); + newXSproto("Net::SSLeay::ERR_load_SSL_strings", XS_Net__SSLeay_ERR_load_SSL_strings, file, ""); + newXSproto("Net::SSLeay::ERR_load_RAND_strings", XS_Net__SSLeay_ERR_load_RAND_strings, file, ""); + newXSproto("Net::SSLeay::RAND_bytes", XS_Net__SSLeay_RAND_bytes, file, "$$"); + newXSproto("Net::SSLeay::RAND_pseudo_bytes", XS_Net__SSLeay_RAND_pseudo_bytes, file, "$$"); + newXSproto("Net::SSLeay::RAND_add", XS_Net__SSLeay_RAND_add, file, "$$$"); + newXSproto("Net::SSLeay::RAND_poll", XS_Net__SSLeay_RAND_poll, file, ""); + newXSproto("Net::SSLeay::RAND_status", XS_Net__SSLeay_RAND_status, file, ""); + newXSproto("Net::SSLeay::RAND_egd_bytes", XS_Net__SSLeay_RAND_egd_bytes, file, "$$"); + newXSproto("Net::SSLeay::RAND_file_name", XS_Net__SSLeay_RAND_file_name, file, "$"); + newXSproto("Net::SSLeay::RAND_seed", XS_Net__SSLeay_RAND_seed, file, "$"); + newXSproto("Net::SSLeay::RAND_cleanup", XS_Net__SSLeay_RAND_cleanup, file, ""); + newXSproto("Net::SSLeay::RAND_load_file", XS_Net__SSLeay_RAND_load_file, file, "$$"); + newXSproto("Net::SSLeay::RAND_write_file", XS_Net__SSLeay_RAND_write_file, file, "$"); + newXSproto("Net::SSLeay::RAND_egd", XS_Net__SSLeay_RAND_egd, file, "$"); + newXSproto("Net::SSLeay::X509_get_issuer_name", XS_Net__SSLeay_X509_get_issuer_name, file, "$"); + newXSproto("Net::SSLeay::X509_get_subject_name", XS_Net__SSLeay_X509_get_subject_name, file, "$"); + newXSproto("Net::SSLeay::X509_NAME_oneline", XS_Net__SSLeay_X509_NAME_oneline, file, "$"); + newXSproto("Net::SSLeay::X509_NAME_get_text_by_NID", XS_Net__SSLeay_X509_NAME_get_text_by_NID, file, "$$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_get_current_cert", XS_Net__SSLeay_X509_STORE_CTX_get_current_cert, file, "$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_get_ex_data", XS_Net__SSLeay_X509_STORE_CTX_get_ex_data, file, "$$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_get_error", XS_Net__SSLeay_X509_STORE_CTX_get_error, file, "$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_get_error_depth", XS_Net__SSLeay_X509_STORE_CTX_get_error_depth, file, "$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_set_ex_data", XS_Net__SSLeay_X509_STORE_CTX_set_ex_data, file, "$$$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_set_error", XS_Net__SSLeay_X509_STORE_CTX_set_error, file, "$$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_set_cert", XS_Net__SSLeay_X509_STORE_CTX_set_cert, file, "$$"); + newXSproto("Net::SSLeay::X509_STORE_add_cert", XS_Net__SSLeay_X509_STORE_add_cert, file, "$$"); + newXSproto("Net::SSLeay::X509_STORE_add_crl", XS_Net__SSLeay_X509_STORE_add_crl, file, "$$"); + newXSproto("Net::SSLeay::X509_STORE_CTX_set_flags", XS_Net__SSLeay_X509_STORE_CTX_set_flags, file, "$$"); + newXSproto("Net::SSLeay::X509_load_cert_file", XS_Net__SSLeay_X509_load_cert_file, file, "$$$"); + newXSproto("Net::SSLeay::X509_load_crl_file", XS_Net__SSLeay_X509_load_crl_file, file, "$$$"); + newXSproto("Net::SSLeay::X509_load_cert_crl_file", XS_Net__SSLeay_X509_load_cert_crl_file, file, "$$$"); + newXSproto("Net::SSLeay::X509_get_notBefore", XS_Net__SSLeay_X509_get_notBefore, file, "$"); + newXSproto("Net::SSLeay::X509_get_notAfter", XS_Net__SSLeay_X509_get_notAfter, file, "$"); + newXSproto("Net::SSLeay::P_ASN1_UTCTIME_put2string", XS_Net__SSLeay_P_ASN1_UTCTIME_put2string, file, "$"); + newXSproto("Net::SSLeay::EVP_PKEY_copy_parameters", XS_Net__SSLeay_EVP_PKEY_copy_parameters, file, "$$"); + newXSproto("Net::SSLeay::PEM_get_string_X509", XS_Net__SSLeay_PEM_get_string_X509, file, "$"); + newXSproto("Net::SSLeay::MD5", XS_Net__SSLeay_MD5, file, "$"); + newXSproto("Net::SSLeay::SSLv2_method", XS_Net__SSLeay_SSLv2_method, file, ""); + newXSproto("Net::SSLeay::SSLv3_method", XS_Net__SSLeay_SSLv3_method, file, ""); + newXSproto("Net::SSLeay::TLSv1_method", XS_Net__SSLeay_TLSv1_method, file, ""); + newXSproto("Net::SSLeay::set_ssl_method", XS_Net__SSLeay_set_ssl_method, file, "$$"); + newXSproto("Net::SSLeay::get_ssl_method", XS_Net__SSLeay_get_ssl_method, file, "$"); + newXSproto("Net::SSLeay::BIO_new_buffer_ssl_connect", XS_Net__SSLeay_BIO_new_buffer_ssl_connect, file, "$"); + newXSproto("Net::SSLeay::BIO_new_file", XS_Net__SSLeay_BIO_new_file, file, "$$"); + newXSproto("Net::SSLeay::BIO_new_ssl", XS_Net__SSLeay_BIO_new_ssl, file, "$$"); + newXSproto("Net::SSLeay::BIO_new_ssl_connect", XS_Net__SSLeay_BIO_new_ssl_connect, file, "$"); + newXSproto("Net::SSLeay::BIO_new", XS_Net__SSLeay_BIO_new, file, "$"); + newXSproto("Net::SSLeay::BIO_free", XS_Net__SSLeay_BIO_free, file, "$"); + newXSproto("Net::SSLeay::BIO_read", XS_Net__SSLeay_BIO_read, file, "$;$"); + newXSproto("Net::SSLeay::BIO_write", XS_Net__SSLeay_BIO_write, file, "$$"); + newXSproto("Net::SSLeay::BIO_eof", XS_Net__SSLeay_BIO_eof, file, "$"); + newXSproto("Net::SSLeay::BIO_pending", XS_Net__SSLeay_BIO_pending, file, "$"); + newXSproto("Net::SSLeay::BIO_wpending", XS_Net__SSLeay_BIO_wpending, file, "$"); + newXSproto("Net::SSLeay::BIO_ssl_copy_session_id", XS_Net__SSLeay_BIO_ssl_copy_session_id, file, "$$"); + newXSproto("Net::SSLeay::BIO_ssl_shutdown", XS_Net__SSLeay_BIO_ssl_shutdown, file, "$"); + newXSproto("Net::SSLeay::add_client_CA", XS_Net__SSLeay_add_client_CA, file, "$$"); + newXSproto("Net::SSLeay::alert_desc_string", XS_Net__SSLeay_alert_desc_string, file, "$"); + newXSproto("Net::SSLeay::alert_desc_string_long", XS_Net__SSLeay_alert_desc_string_long, file, "$"); + newXSproto("Net::SSLeay::alert_type_string", XS_Net__SSLeay_alert_type_string, file, "$"); + newXSproto("Net::SSLeay::alert_type_string_long", XS_Net__SSLeay_alert_type_string_long, file, "$"); + newXSproto("Net::SSLeay::callback_ctrl", XS_Net__SSLeay_callback_ctrl, file, "$$$"); + newXSproto("Net::SSLeay::check_private_key", XS_Net__SSLeay_check_private_key, file, "$"); + newXSproto("Net::SSLeay::CIPHER_description", XS_Net__SSLeay_CIPHER_description, file, "$$$"); + newXSproto("Net::SSLeay::CIPHER_get_bits", XS_Net__SSLeay_CIPHER_get_bits, file, "$$"); + newXSproto("Net::SSLeay::COMP_add_compression_method", XS_Net__SSLeay_COMP_add_compression_method, file, "$$"); + newXSproto("Net::SSLeay::CTX_add_client_CA", XS_Net__SSLeay_CTX_add_client_CA, file, "$$"); + newXSproto("Net::SSLeay::CTX_callback_ctrl", XS_Net__SSLeay_CTX_callback_ctrl, file, "$$$"); + newXSproto("Net::SSLeay::CTX_check_private_key", XS_Net__SSLeay_CTX_check_private_key, file, "$"); + newXSproto("Net::SSLeay::CTX_get_ex_data", XS_Net__SSLeay_CTX_get_ex_data, file, "$$"); + newXSproto("Net::SSLeay::CTX_get_quiet_shutdown", XS_Net__SSLeay_CTX_get_quiet_shutdown, file, "$"); + newXSproto("Net::SSLeay::CTX_get_timeout", XS_Net__SSLeay_CTX_get_timeout, file, "$"); + newXSproto("Net::SSLeay::CTX_get_verify_depth", XS_Net__SSLeay_CTX_get_verify_depth, file, "$"); + newXSproto("Net::SSLeay::CTX_get_verify_mode", XS_Net__SSLeay_CTX_get_verify_mode, file, "$"); + newXSproto("Net::SSLeay::CTX_set_cert_store", XS_Net__SSLeay_CTX_set_cert_store, file, "$$"); + newXSproto("Net::SSLeay::CTX_get_cert_store", XS_Net__SSLeay_CTX_get_cert_store, file, "$"); + newXSproto("Net::SSLeay::CTX_set_cert_verify_callback", XS_Net__SSLeay_CTX_set_cert_verify_callback, file, "$$$"); + newXSproto("Net::SSLeay::CTX_set_client_CA_list", XS_Net__SSLeay_CTX_set_client_CA_list, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_default_passwd_cb", XS_Net__SSLeay_CTX_set_default_passwd_cb, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_default_passwd_cb_userdata", XS_Net__SSLeay_CTX_set_default_passwd_cb_userdata, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_ex_data", XS_Net__SSLeay_CTX_set_ex_data, file, "$$$"); + newXSproto("Net::SSLeay::CTX_set_purpose", XS_Net__SSLeay_CTX_set_purpose, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_quiet_shutdown", XS_Net__SSLeay_CTX_set_quiet_shutdown, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_ssl_version", XS_Net__SSLeay_CTX_set_ssl_version, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_timeout", XS_Net__SSLeay_CTX_set_timeout, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_trust", XS_Net__SSLeay_CTX_set_trust, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_verify_depth", XS_Net__SSLeay_CTX_set_verify_depth, file, "$$"); + newXSproto("Net::SSLeay::CTX_use_certificate", XS_Net__SSLeay_CTX_use_certificate, file, "$$"); + newXSproto("Net::SSLeay::CTX_use_certificate_chain_file", XS_Net__SSLeay_CTX_use_certificate_chain_file, file, "$$"); + newXSproto("Net::SSLeay::CTX_use_PrivateKey", XS_Net__SSLeay_CTX_use_PrivateKey, file, "$$"); + newXSproto("Net::SSLeay::CTX_use_RSAPrivateKey", XS_Net__SSLeay_CTX_use_RSAPrivateKey, file, "$$"); + newXSproto("Net::SSLeay::do_handshake", XS_Net__SSLeay_do_handshake, file, "$"); + newXSproto("Net::SSLeay::dup", XS_Net__SSLeay_dup, file, "$"); + newXSproto("Net::SSLeay::get_current_cipher", XS_Net__SSLeay_get_current_cipher, file, "$"); + newXSproto("Net::SSLeay::get_default_timeout", XS_Net__SSLeay_get_default_timeout, file, "$"); + newXSproto("Net::SSLeay::get_ex_data", XS_Net__SSLeay_get_ex_data, file, "$$"); + newXSproto("Net::SSLeay::get_finished", XS_Net__SSLeay_get_finished, file, "$$$"); + newXSproto("Net::SSLeay::get_peer_finished", XS_Net__SSLeay_get_peer_finished, file, "$$$"); + newXSproto("Net::SSLeay::get_quiet_shutdown", XS_Net__SSLeay_get_quiet_shutdown, file, "$"); + newXSproto("Net::SSLeay::get_shutdown", XS_Net__SSLeay_get_shutdown, file, "$"); + newXSproto("Net::SSLeay::get_verify_depth", XS_Net__SSLeay_get_verify_depth, file, "$"); + newXSproto("Net::SSLeay::get_verify_mode", XS_Net__SSLeay_get_verify_mode, file, "$"); + newXSproto("Net::SSLeay::get_verify_result", XS_Net__SSLeay_get_verify_result, file, "$"); + newXSproto("Net::SSLeay::library_init", XS_Net__SSLeay_library_init, file, ""); + newXSproto("Net::SSLeay::renegotiate", XS_Net__SSLeay_renegotiate, file, "$"); + newXSproto("Net::SSLeay::SESSION_cmp", XS_Net__SSLeay_SESSION_cmp, file, "$$"); + newXSproto("Net::SSLeay::SESSION_get_ex_data", XS_Net__SSLeay_SESSION_get_ex_data, file, "$$"); + newXSproto("Net::SSLeay::SESSION_get_time", XS_Net__SSLeay_SESSION_get_time, file, "$"); + newXSproto("Net::SSLeay::SESSION_get_timeout", XS_Net__SSLeay_SESSION_get_timeout, file, "$"); + newXSproto("Net::SSLeay::SESSION_print_fp", XS_Net__SSLeay_SESSION_print_fp, file, "$$"); + newXSproto("Net::SSLeay::SESSION_set_ex_data", XS_Net__SSLeay_SESSION_set_ex_data, file, "$$$"); + newXSproto("Net::SSLeay::SESSION_set_time", XS_Net__SSLeay_SESSION_set_time, file, "$$"); + newXSproto("Net::SSLeay::SESSION_set_timeout", XS_Net__SSLeay_SESSION_set_timeout, file, "$$"); + newXSproto("Net::SSLeay::set_accept_state", XS_Net__SSLeay_set_accept_state, file, "$"); + newXSproto("Net::SSLeay::set_client_CA_list", XS_Net__SSLeay_set_client_CA_list, file, "$$"); + newXSproto("Net::SSLeay::set_connect_state", XS_Net__SSLeay_set_connect_state, file, "$"); + newXSproto("Net::SSLeay::set_ex_data", XS_Net__SSLeay_set_ex_data, file, "$$$"); + newXSproto("Net::SSLeay::set_info_callback", XS_Net__SSLeay_set_info_callback, file, "$$"); + newXSproto("Net::SSLeay::set_purpose", XS_Net__SSLeay_set_purpose, file, "$$"); + newXSproto("Net::SSLeay::set_quiet_shutdown", XS_Net__SSLeay_set_quiet_shutdown, file, "$$"); + newXSproto("Net::SSLeay::set_shutdown", XS_Net__SSLeay_set_shutdown, file, "$$"); + newXSproto("Net::SSLeay::set_trust", XS_Net__SSLeay_set_trust, file, "$$"); + newXSproto("Net::SSLeay::set_verify_depth", XS_Net__SSLeay_set_verify_depth, file, "$$"); + newXSproto("Net::SSLeay::set_verify_result", XS_Net__SSLeay_set_verify_result, file, "$$"); + newXSproto("Net::SSLeay::shutdown", XS_Net__SSLeay_shutdown, file, "$"); + newXSproto("Net::SSLeay::version", XS_Net__SSLeay_version, file, "$"); + newXSproto("Net::SSLeay::load_client_CA_file", XS_Net__SSLeay_load_client_CA_file, file, "$"); + newXSproto("Net::SSLeay::add_file_cert_subjects_to_stack", XS_Net__SSLeay_add_file_cert_subjects_to_stack, file, "$$"); +#if XSubPPtmpAAAD + newXSproto("Net::SSLeay::add_dir_cert_subjects_to_stack", XS_Net__SSLeay_add_dir_cert_subjects_to_stack, file, "$$"); +#endif + newXSproto("Net::SSLeay::CTX_get_ex_new_index", XS_Net__SSLeay_CTX_get_ex_new_index, file, "$$$$$"); + newXSproto("Net::SSLeay::CTX_set_session_id_context", XS_Net__SSLeay_CTX_set_session_id_context, file, "$$$"); + newXSproto("Net::SSLeay::set_session_id_context", XS_Net__SSLeay_set_session_id_context, file, "$$$"); + newXSproto("Net::SSLeay::CTX_set_tmp_rsa_callback", XS_Net__SSLeay_CTX_set_tmp_rsa_callback, file, "$$"); + newXSproto("Net::SSLeay::set_tmp_rsa_callback", XS_Net__SSLeay_set_tmp_rsa_callback, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_tmp_dh_callback", XS_Net__SSLeay_CTX_set_tmp_dh_callback, file, "$$"); + newXSproto("Net::SSLeay::set_tmp_dh_callback", XS_Net__SSLeay_set_tmp_dh_callback, file, "$$"); + newXSproto("Net::SSLeay::get_ex_new_index", XS_Net__SSLeay_get_ex_new_index, file, "$$$$$"); + newXSproto("Net::SSLeay::SESSION_get_ex_new_index", XS_Net__SSLeay_SESSION_get_ex_new_index, file, "$$$$$"); + newXSproto("Net::SSLeay::OpenSSL_add_ssl_algorithms", XS_Net__SSLeay_OpenSSL_add_ssl_algorithms, file, ""); + newXSproto("Net::SSLeay::clear_num_renegotiations", XS_Net__SSLeay_clear_num_renegotiations, file, "$"); + newXSproto("Net::SSLeay::CTX_add_extra_chain_cert", XS_Net__SSLeay_CTX_add_extra_chain_cert, file, "$$"); + newXSproto("Net::SSLeay::CTX_get_app_data", XS_Net__SSLeay_CTX_get_app_data, file, "$"); + newXSproto("Net::SSLeay::CTX_get_mode", XS_Net__SSLeay_CTX_get_mode, file, "$"); + newXSproto("Net::SSLeay::CTX_get_read_ahead", XS_Net__SSLeay_CTX_get_read_ahead, file, "$"); + newXSproto("Net::SSLeay::CTX_get_session_cache_mode", XS_Net__SSLeay_CTX_get_session_cache_mode, file, "$"); + newXSproto("Net::SSLeay::CTX_need_tmp_RSA", XS_Net__SSLeay_CTX_need_tmp_RSA, file, "$"); + newXSproto("Net::SSLeay::CTX_set_app_data", XS_Net__SSLeay_CTX_set_app_data, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_mode", XS_Net__SSLeay_CTX_set_mode, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_read_ahead", XS_Net__SSLeay_CTX_set_read_ahead, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_session_cache_mode", XS_Net__SSLeay_CTX_set_session_cache_mode, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_tmp_dh", XS_Net__SSLeay_CTX_set_tmp_dh, file, "$$"); + newXSproto("Net::SSLeay::CTX_set_tmp_rsa", XS_Net__SSLeay_CTX_set_tmp_rsa, file, "$$"); + newXSproto("Net::SSLeay::get_app_data", XS_Net__SSLeay_get_app_data, file, "$"); + newXSproto("Net::SSLeay::get_cipher_bits", XS_Net__SSLeay_get_cipher_bits, file, "$$"); + newXSproto("Net::SSLeay::get_mode", XS_Net__SSLeay_get_mode, file, "$"); + newXSproto("Net::SSLeay::get_state", XS_Net__SSLeay_get_state, file, "$"); + newXSproto("Net::SSLeay::need_tmp_RSA", XS_Net__SSLeay_need_tmp_RSA, file, "$"); + newXSproto("Net::SSLeay::num_renegotiations", XS_Net__SSLeay_num_renegotiations, file, "$"); + newXSproto("Net::SSLeay::SESSION_get_app_data", XS_Net__SSLeay_SESSION_get_app_data, file, "$"); + newXSproto("Net::SSLeay::session_reused", XS_Net__SSLeay_session_reused, file, "$"); + newXSproto("Net::SSLeay::SESSION_set_app_data", XS_Net__SSLeay_SESSION_set_app_data, file, "$$"); + newXSproto("Net::SSLeay::set_app_data", XS_Net__SSLeay_set_app_data, file, "$$"); + newXSproto("Net::SSLeay::set_mode", XS_Net__SSLeay_set_mode, file, "$$"); + newXSproto("Net::SSLeay::set_pref_cipher", XS_Net__SSLeay_set_pref_cipher, file, "$$"); + newXSproto("Net::SSLeay::set_tmp_dh", XS_Net__SSLeay_set_tmp_dh, file, "$$"); + newXSproto("Net::SSLeay::set_tmp_rsa", XS_Net__SSLeay_set_tmp_rsa, file, "$$"); + newXSproto("Net::SSLeay::RSA_generate_key", XS_Net__SSLeay_RSA_generate_key, file, "$$;$$"); + newXSproto("Net::SSLeay::RSA_free", XS_Net__SSLeay_RSA_free, file, "$"); + newXSproto("Net::SSLeay::X509_free", XS_Net__SSLeay_X509_free, file, "$"); + newXSproto("Net::SSLeay::PEM_read_bio_DHparams", XS_Net__SSLeay_PEM_read_bio_DHparams, file, "$;$$$"); + newXSproto("Net::SSLeay::PEM_read_bio_X509_CRL", XS_Net__SSLeay_PEM_read_bio_X509_CRL, file, "$;$$$"); + newXSproto("Net::SSLeay::DH_free", XS_Net__SSLeay_DH_free, file, "$"); + newXSproto("Net::SSLeay::total_renegotiations", XS_Net__SSLeay_total_renegotiations, file, "$"); + newXSproto("Net::SSLeay::SESSION_get_master_key", XS_Net__SSLeay_SESSION_get_master_key, file, "$"); + newXSproto("Net::SSLeay::get_client_random", XS_Net__SSLeay_get_client_random, file, "$"); + newXSproto("Net::SSLeay::get_server_random", XS_Net__SSLeay_get_server_random, file, "$"); + + /* Initialisation Section */ + +#if XSubPPtmpAAAA +#endif +#if XSubPPtmpAAAB +#endif +#if XSubPPtmpAAAC +#endif +#if XSubPPtmpAAAD +#endif +#line 7176 "SSLeay.c" + + /* End of Initialisation Section */ + + XSRETURN_YES; +} + diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/SSLeay.pm b/~downloads/files/tools/Net_SSLeay.pm-1.22/SSLeay.pm new file mode 100644 index 0000000..9b6083a --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/SSLeay.xs b/~downloads/files/tools/Net_SSLeay.pm-1.22/SSLeay.xs new file mode 100644 index 0000000..f58bf07 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/blib/arch/auto/Net/SSLeay/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/arch/auto/Net/SSLeay/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/arch/auto/Net/SSLeay/Handle/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/arch/auto/Net/SSLeay/Handle/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay.pm b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay.pm new file mode 100644 index 0000000..9b6083a --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/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/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay/Handle.pm b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay/Handle.pm new file mode 100644 index 0000000..d00f261 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/SSLeay/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/blib/lib/Net/ptrtstrun.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/ptrtstrun.pl new file mode 100644 index 0000000..7bbf41b --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/Net/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/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/Handle/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/Handle/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/autosplit.ix b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/autosplit.ix new file mode 100644 index 0000000..0bb59d0 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/autosplit.ix @@ -0,0 +1,42 @@ +# Index created by AutoSplit for blib/lib/Net/SSLeay.pm +# (file acts as timestamp) +package Net::SSLeay; +sub want_nothing ; +sub want_read ; +sub want_write ; +sub want_X509_lookup ; +sub open_tcp_connection ; +sub open_proxy_tcp_connection ; +sub debug_read ; +sub ssl_read_all ; +sub ssl_write_all ; +sub ssl_read_until ($;$$); +sub ssl_read_CRLF ($;$); +sub ssl_write_CRLF ($$); +sub dump_peer_certificate ($); +sub randomize (;$$); +sub new_x_ctx ; +sub sslcat ; +sub https_cat ; +sub set_cert_and_key ($$$); +sub set_server_cert_and_key ($$$); +sub set_proxy ($$;**); +sub make_form ; +sub make_headers ; +sub do_https3 ; +sub do_https2 ; +sub do_https4 ; +sub get_https ($$$;***); +sub post_https ($$$;***); +sub put_https ($$$;***); +sub head_https ($$$;***); +sub get_https3 ($$$;***); +sub post_https3 ($$$;***); +sub put_https3 ($$$;***); +sub head_https3 ($$$;***); +sub get_https4 ($$$;***); +sub post_https4 ($$$;***); +sub put_https4 ($$$;***); +sub head_https4 ($$$;***); +sub do_https ; +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/debug_read.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/debug_read.al new file mode 100644 index 0000000..3e724b0 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/debug_read.al @@ -0,0 +1,22 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1500 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/debug_read.al)" +### +### 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; +} + +# end of Net::SSLeay::debug_read +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https.al new file mode 100644 index 0000000..a5ead39 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https.al @@ -0,0 +1,18 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2024 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/do_https.al)" +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__ +1; +# end of Net::SSLeay::do_https diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https2.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https2.al new file mode 100644 index 0000000..1ff5eb7 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https2.al @@ -0,0 +1,20 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1981 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/do_https2.al)" +### 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) + ) + ); +} + +# end of Net::SSLeay::do_https2 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https3.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https3.al new file mode 100644 index 0000000..5d00314 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https3.al @@ -0,0 +1,34 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1955 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/do_https3.al)" +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); +} + +# end of Net::SSLeay::do_https3 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https4.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https4.al new file mode 100644 index 0000000..1b257f9 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/do_https4.al @@ -0,0 +1,21 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1993 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/do_https4.al)" +### 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); +} + +# end of Net::SSLeay::do_https4 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/dump_peer_certificate.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/dump_peer_certificate.al new file mode 100644 index 0000000..76c9368 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/dump_peer_certificate.al @@ -0,0 +1,29 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1665 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/dump_peer_certificate.al)" +### 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; + } +} + +# end of Net::SSLeay::dump_peer_certificate +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https.al new file mode 100644 index 0000000..0f44c33 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2006 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/get_https.al)" +sub get_https ($$$;***) { do_https2(GET => @_) } +# end of Net::SSLeay::get_https +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https3.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https3.al new file mode 100644 index 0000000..e568366 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https3.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2011 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/get_https3.al)" +sub get_https3 ($$$;***) { do_https3(GET => @_) } +# end of Net::SSLeay::get_https3 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https4.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https4.al new file mode 100644 index 0000000..4f1bf70 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/get_https4.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2016 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/get_https4.al)" +sub get_https4 ($$$;***) { do_https4(GET => @_) } +# end of Net::SSLeay::get_https4 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https.al new file mode 100644 index 0000000..f2e5e42 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https.al @@ -0,0 +1,10 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2009 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/head_https.al)" +sub head_https ($$$;***) { do_https2(HEAD => @_) } + +# end of Net::SSLeay::head_https +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https3.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https3.al new file mode 100644 index 0000000..127db10 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https3.al @@ -0,0 +1,10 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2014 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/head_https3.al)" +sub head_https3 ($$$;***) { do_https3(HEAD => @_) } + +# end of Net::SSLeay::head_https3 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https4.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https4.al new file mode 100644 index 0000000..0598188 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/head_https4.al @@ -0,0 +1,13 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2019 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/head_https4.al)" +sub head_https4 ($$$;***) { do_https4(HEAD => @_) } + +### Legacy +# ($page, $respone_or_err, %headers) = do_https(...); + +# end of Net::SSLeay::head_https4 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/https_cat.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/https_cat.al new file mode 100644 index 0000000..fe99649 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/https_cat.al @@ -0,0 +1,97 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1807 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/https_cat.al)" +### +### 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; +} + +# end of Net::SSLeay::https_cat +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/make_form.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/make_form.al new file mode 100644 index 0000000..3a06c4f --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/make_form.al @@ -0,0 +1,25 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1925 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/make_form.al)" +### +### 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; +} + +# end of Net::SSLeay::make_form +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/make_headers.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/make_headers.al new file mode 100644 index 0000000..e9791b6 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/make_headers.al @@ -0,0 +1,21 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1942 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/make_headers.al)" +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; +} + +# end of Net::SSLeay::make_headers +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/new_x_ctx.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/new_x_ctx.al new file mode 100644 index 0000000..de4126f --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/new_x_ctx.al @@ -0,0 +1,16 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1708 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/new_x_ctx.al)" +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; +} + +# end of Net::SSLeay::new_x_ctx +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/open_proxy_tcp_connection.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/open_proxy_tcp_connection.al new file mode 100644 index 0000000..460ed09 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/open_proxy_tcp_connection.al @@ -0,0 +1,28 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1480 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/open_proxy_tcp_connection.al)" +### 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 +} + +# end of Net::SSLeay::open_proxy_tcp_connection +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/open_tcp_connection.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/open_tcp_connection.al new file mode 100644 index 0000000..742f9a3 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/open_tcp_connection.al @@ -0,0 +1,40 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1448 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/open_tcp_connection.al)" +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 +} + +# end of Net::SSLeay::open_tcp_connection +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https.al new file mode 100644 index 0000000..4e5dd29 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2007 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/post_https.al)" +sub post_https ($$$;***) { do_https2(POST => @_) } +# end of Net::SSLeay::post_https +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https3.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https3.al new file mode 100644 index 0000000..6bc5be2 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https3.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2012 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/post_https3.al)" +sub post_https3 ($$$;***) { do_https3(POST => @_) } +# end of Net::SSLeay::post_https3 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https4.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https4.al new file mode 100644 index 0000000..bd2e2fe --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/post_https4.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2017 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/post_https4.al)" +sub post_https4 ($$$;***) { do_https4(POST => @_) } +# end of Net::SSLeay::post_https4 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https.al new file mode 100644 index 0000000..9cbfdd8 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2008 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/put_https.al)" +sub put_https ($$$;***) { do_https2(PUT => @_) } +# end of Net::SSLeay::put_https +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https3.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https3.al new file mode 100644 index 0000000..22c5514 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https3.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2013 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/put_https3.al)" +sub put_https3 ($$$;***) { do_https3(PUT => @_) } +# end of Net::SSLeay::put_https3 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https4.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https4.al new file mode 100644 index 0000000..4915256 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/put_https4.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 2018 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/put_https4.al)" +sub put_https4 ($$$;***) { do_https4(PUT => @_) } +# end of Net::SSLeay::put_https4 +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/randomize.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/randomize.al new file mode 100644 index 0000000..818441f --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/randomize.al @@ -0,0 +1,30 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1686 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/randomize.al)" +### 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; +} + +# end of Net::SSLeay::randomize +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_cert_and_key.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_cert_and_key.al new file mode 100644 index 0000000..aa1d32f --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_cert_and_key.al @@ -0,0 +1,23 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1896 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/set_cert_and_key.al)" +### +### 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 ''); +} + +# end of Net::SSLeay::set_cert_and_key +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_proxy.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_proxy.al new file mode 100644 index 0000000..05530fc --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_proxy.al @@ -0,0 +1,16 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1917 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/set_proxy.al)" +sub set_proxy ($$;**) { + ($proxyhost, $proxyport, $proxyuser, $proxypass) = @_; + require MIME::Base64 if $proxyuser; + $proxyauth = $CRLF . 'Proxy-authorization: Basic ' + . MIME::Base64::encode("$proxyuser:$proxypass", '') + if $proxyuser; +} + +# end of Net::SSLeay::set_proxy +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_server_cert_and_key.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_server_cert_and_key.al new file mode 100644 index 0000000..4bbe4ee --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/set_server_cert_and_key.al @@ -0,0 +1,14 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1911 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/set_server_cert_and_key.al)" +### Old deprecated API + +sub set_server_cert_and_key ($$$) { &set_cert_and_key } + +### Set up to use web proxy + +# end of Net::SSLeay::set_server_cert_and_key +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_CRLF.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_CRLF.al new file mode 100644 index 0000000..b18a46c --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_CRLF.al @@ -0,0 +1,12 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1646 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/ssl_read_CRLF.al)" +# 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 +# end of Net::SSLeay::ssl_read_CRLF +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_all.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_all.al new file mode 100644 index 0000000..676f157 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_all.al @@ -0,0 +1,25 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1514 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/ssl_read_all.al)" +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; +} + +# end of Net::SSLeay::ssl_read_all +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_until.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_until.al new file mode 100644 index 0000000..6c4e4c8 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_read_until.al @@ -0,0 +1,95 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1559 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/ssl_read_until.al)" +### 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; +} + +# end of Net::SSLeay::ssl_read_until +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_write_CRLF.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_write_CRLF.al new file mode 100644 index 0000000..0958cbd --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_write_CRLF.al @@ -0,0 +1,23 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1650 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/ssl_write_CRLF.al)" +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); +} + +# end of Net::SSLeay::ssl_write_CRLF +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_write_all.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_write_all.al new file mode 100644 index 0000000..45f42d4 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/ssl_write_all.al @@ -0,0 +1,36 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1531 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/ssl_write_all.al)" +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; +} + +# end of Net::SSLeay::ssl_write_all +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/sslcat.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/sslcat.al new file mode 100644 index 0000000..9884b6f --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/sslcat.al @@ -0,0 +1,99 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1716 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/sslcat.al)" +### +### 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; +} + +# end of Net::SSLeay::sslcat +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_X509_lookup.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_X509_lookup.al new file mode 100644 index 0000000..cd8d348 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_X509_lookup.al @@ -0,0 +1,15 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1441 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/want_X509_lookup.al)" +sub want_X509_lookup { want(shift) == 4 } + +### +### Open TCP stream to given host and port, looking up the details +### from system databases or DNS. +### + +# end of Net::SSLeay::want_X509_lookup +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_nothing.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_nothing.al new file mode 100644 index 0000000..c5ca762 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_nothing.al @@ -0,0 +1,16 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1431 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/want_nothing.al)" +# Documentation. Use `perl-root/pod/pod2html SSLeay.pm` to output html + + +# '; + +### Some methods that are macros in C + +sub want_nothing { want(shift) == 1 } +# end of Net::SSLeay::want_nothing +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_read.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_read.al new file mode 100644 index 0000000..85b4631 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_read.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1439 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/want_read.al)" +sub want_read { want(shift) == 2 } +# end of Net::SSLeay::want_read +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_write.al b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_write.al new file mode 100644 index 0000000..8378769 --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/lib/auto/Net/SSLeay/want_write.al @@ -0,0 +1,9 @@ +# NOTE: Derived from blib/lib/Net/SSLeay.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Net::SSLeay; + +#line 1440 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/want_write.al)" +sub want_write { want(shift) == 3 } +# end of Net::SSLeay::want_write +1; diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/man3/.exists b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/man3/.exists new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/man3/Net::SSLeay::Handle.3 b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/man3/Net::SSLeay::Handle.3 new file mode 100644 index 0000000..8a40a7b --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/blib/man3/Net::SSLeay::Handle.3 @@ -0,0 +1,269 @@ +.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "Handle 3" +.TH Handle 3 "2002-06-07" "perl v5.8.0" "User Contributed Perl Documentation" +.SH "NAME" +Net::SSLeay::Handle \- Perl module that lets SSL (HTTPS) sockets be +handled as standard file handles. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 2 +\& use Net::SSLeay::Handle qw/shutdown/; +\& my ($host, $port) = ("localhost", 443); +.Ve +.PP +.Vb 1 +\& tie(*SSL, "Net::SSLeay::Handle", $host, $port); +.Ve +.PP +.Vb 4 +\& print SSL "GET / HTTP/1.0\er\en"; +\& shutdown(\e*SSL, 1); +\& print while (); +\& close SSL; +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +Net::SSLeay::Handle allows you to request and receive \s-1HTTPS\s0 web pages +using \*(L"old\-fashion\*(R" file handles as in: +.PP +.Vb 1 +\& print SSL "GET / HTTP/1.0\er\en"; +.Ve +.PP +and +.PP +.Vb 1 +\& print while (); +.Ve +.PP +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: +.PP +.Vb 9 +\& my $socket; +\& if ($scheme eq "https") { +\& tie(*S2, "Net::SSLeay::Handle", host, $port); +\& $socket = \e*S2; +\& else { +\& $socket = Net::SSLeay::Handle->make_socket(host, $port); +\& } +\& print $socket $request_headers; +\& ... +.Ve +.Sh "\s-1USING\s0 \s-1EXISTING\s0 \s-1SOCKETS\s0" +.IX Subsection "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 \fItie()\fR above where it is passed a \f(CW$host\fR and \f(CW$port\fR 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: +.PP +.Vb 8 +\& my $socket \e*S1; +\& if ($scheme eq "https") { +\& tie(*S2, "Net::SSLeay::Handle", $socket); +\& $socket = \e*S2; +\& } +\& my $last_sel = select($socket); $| = 1; select($last_sel); +\& print $socket $request_headers; +\& ... +.Ve +.PP +Note: As far as I know you must be careful with the globs in the \fItie()\fR +function. The first parameter must be a glob (*SOMETHING) and the +last parameter must be a reference to a glob (\e*SOMETHING_ELSE) or a +scaler that was assigned to a reference to a glob (as in the example +above) +.PP +Also, the two globs must be different. When I tried to use the same +glob, I got a core dump. +.Sh "\s-1EXPORT\s0" +.IX Subsection "EXPORT" +None by default. +.PP +You can export the \fIshutdown()\fR function. +.PP +It is suggested that you do export \fIshutdown()\fR or use the fully +qualified \fINet::SSLeay::Handle::shutdown()\fR function to shutdown \s-1SSL\s0 +sockets. It should be smart enough to distinguish between \s-1SSL\s0 and +non-SSL sockets and do the right thing. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +.Vb 2 +\& use Net::SSLeay::Handle qw/shutdown/; +\& my ($host, $port) = ("localhost", 443); +.Ve +.PP +.Vb 1 +\& tie(*SSL, "Net::SSLeay::Handle", $host, $port); +.Ve +.PP +.Vb 4 +\& print SSL "GET / HTTP/1.0\er\en"; +\& shutdown(\e*SSL, 1); +\& print while (); +\& close SSL; +.Ve +.SH "TODO" +.IX Header "TODO" +Better error handling. Callback routine? +.SH "CAVEATS" +.IX Header "CAVEATS" +Tying to a file handle is a little tricky (for me at least). +.PP +The first parameter to \fItie()\fR must be a glob (*SOMETHING) and the last +parameter must be a reference to a glob (\e*SOMETHING_ELSE) or a scaler +that was assigned to a reference to a glob ($s = \e*SOMETHING_ELSE). +Also, the two globs must be different. When I tried to use the same +glob, I got a core dump. +.PP +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. +.PP +Support for old perls may not be 100%. If in trouble try 5.6.0 or +newer. +.SH "CHANGES" +.IX Header "CHANGES" +Please see Net\-SSLeay\-Handle\-0.50/Changes file. +.SH "KNOWN BUGS" +.IX Header "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. +.SH "AUTHOR" +.IX Header "AUTHOR" +Jim Bowlin jbowlin@linklint.org +.SH "SEE ALSO" +.IX Header "SEE ALSO" +Net::SSLeay, \fIperl\fR\|(1), http://openssl.org/ diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/bio.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/bio.pl new file mode 100644 index 0000000..53f7278 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/bulk.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/bulk.pl new file mode 100755 index 0000000..02582ea --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/callback.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/callback.pl new file mode 100755 index 0000000..b97e105 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/cb-testi.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/cb-testi.pl new file mode 100644 index 0000000..1e2f62f --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/cli-cert.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/cli-cert.pl new file mode 100644 index 0000000..4d0ef0c --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/ephemeral.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/ephemeral.pl new file mode 100644 index 0000000..7736c07 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/get_authenticated_page.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/get_authenticated_page.pl new file mode 100755 index 0000000..24aa024 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/get_page.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/get_page.pl new file mode 100755 index 0000000..6e36739 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/get_page_cert.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/get_page_cert.pl new file mode 100644 index 0000000..9b6aff2 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/https-proxy-snif.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/https-proxy-snif.pl new file mode 100755 index 0000000..3b9927e --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/makecert.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/makecert.pl new file mode 100755 index 0000000..ffcceee --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/passwd-cb.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/passwd-cb.pl new file mode 100644 index 0000000..3156fe3 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/req.conf b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/req.conf new file mode 100644 index 0000000..0e102c1 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/server_key.pem b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/server_key.pem new file mode 100644 index 0000000..07c79c8 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/ssl-inetd-serv.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/ssl-inetd-serv.pl new file mode 100755 index 0000000..7f2a183 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/ssl_diff.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/ssl_diff.pl new file mode 100755 index 0000000..e9fd1cf --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/sslcat.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/sslcat.pl new file mode 100755 index 0000000..505acec --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/sslecho.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/sslecho.pl new file mode 100755 index 0000000..e4f1c0e --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/examples/stdio_bulk.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/examples/stdio_bulk.pl new file mode 100755 index 0000000..85fdada --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/openssl_path b/~downloads/files/tools/Net_SSLeay.pm-1.22/openssl_path new file mode 100644 index 0000000..3f239fb --- /dev/null +++ b/~downloads/files/tools/Net_SSLeay.pm-1.22/openssl_path @@ -0,0 +1 @@ +/usr/bin/openssl \ No newline at end of file diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/pm_to_blib b/~downloads/files/tools/Net_SSLeay.pm-1.22/pm_to_blib new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/Net_SSLeay.pm-1.22/ptrcasttst.c b/~downloads/files/tools/Net_SSLeay.pm-1.22/ptrcasttst.c new file mode 100644 index 0000000..ccf76f5 --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/ptrtstrun.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/ptrtstrun.pl new file mode 100644 index 0000000..7bbf41b --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/test.pl b/~downloads/files/tools/Net_SSLeay.pm-1.22/test.pl new file mode 100644 index 0000000..8f06bda --- /dev/null +++ b/~downloads/files/tools/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/tools/Net_SSLeay.pm-1.22/typemap b/~downloads/files/tools/Net_SSLeay.pm-1.22/typemap new file mode 100644 index 0000000..8d1d2a2 --- /dev/null +++ b/~downloads/files/tools/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/db-4.1.25.NC.tar.gz b/~downloads/files/tools/db-4.1.25.NC.tar.gz new file mode 100644 index 0000000..8d617f9 Binary files /dev/null and b/~downloads/files/tools/db-4.1.25.NC.tar.gz differ diff --git a/~downloads/files/tools/index.html b/~downloads/files/tools/index.html new file mode 100644 index 0000000..e69de29 diff --git a/~downloads/files/tools/openldap-2.1.16.tgz b/~downloads/files/tools/openldap-2.1.16.tgz new file mode 100644 index 0000000..ceb857d Binary files /dev/null and b/~downloads/files/tools/openldap-2.1.16.tgz differ diff --git a/~downloads/files/tools/perl-ldap-0.26.tar.gz b/~downloads/files/tools/perl-ldap-0.26.tar.gz new file mode 100644 index 0000000..b7f6ada Binary files /dev/null and b/~downloads/files/tools/perl-ldap-0.26.tar.gz differ diff --git a/~downloads/files/tools/urildap.pm.tar.gz b/~downloads/files/tools/urildap.pm.tar.gz new file mode 100644 index 0000000..f1d38ab Binary files /dev/null and b/~downloads/files/tools/urildap.pm.tar.gz differ diff --git a/~downloads/index.html b/~downloads/index.html new file mode 100644 index 0000000..debe3eb --- /dev/null +++ b/~downloads/index.html @@ -0,0 +1,16 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<HTML> +<head> + <TITLE>STTA download index + + + + + + + + + + + + diff --git a/~downloads/spa/eagor1/index.html b/~downloads/spa/eagor1/index.html new file mode 100644 index 0000000..3e68658 --- /dev/null +++ b/~downloads/spa/eagor1/index.html @@ -0,0 +1,150 @@ + + + + STTA - Descargar Servicios con Tarantella + + + + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      + STTA +
                                      +
                                      +  STTATM - Descarga de STTA + +   + +
                                      + STTA Download +
                                      +
                                      + +  { Principal + | Login Descarga + | e-agor@ + | %{$ENV{'REMOTE_USER'}}% + } + + +
                                        
                                      +
                                      +
                                      %{$ENV{'REMOTE_USER'}}% -- Ultimo acceso: %{$lastAccess}%
                                      +
                                      + +

                                      Nota Legal sobre el uso de STTA (fuente PERL CGI,etc)

                                      +
                                        +
                                      • +Este programa es Software Libre; usted puede redistribuirlo + y/o modificarlo bajo los términos de la "GNU General Public License" + como lo publica la "FSF Free Software Foundation", versión 2 + o (a su elección) de cualquier versión posterior. +
                                      • +
                                      • +Este programa es distribuído con la esperanza de que le sea +útil, pero SIN NINGUNA GARANTIA; incluso sin la garantía +implícita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO + en particular. +
                                      • +
                                      • +Ver Licencia Pública General GNU (General Public License) para más +detalles, publicada en +http://www.gnu.org/copyleft/gpl.html +Traducción +
                                      • +
                                      • +Por favor, hay que tener en cuenta que STTA está entre o embebido con +otras tecnolog&iactue;as que usan sus propias licencias; hay que comprobar y +leer los términos y condiciones correspondientes en cada caso. +Webmin, Tarantella, el Software LDAP seleccionado, Perl, etc. tienen su +propia marca registradao y licencia de uso y distribución. + Contactar con los autores y propietaris para más detalles.
                                      • +
                                      + + + + +
                                      +  STTA: Ficheros Disponibles: %STRINGDIR% +

                                      + + + + + +
                                      + +
                                      + %syscmd{cat /u/web/eagor1%STRINGPATH%/.info.es %STRINGPATH%/.info.es}% +
                                      + + + %syscmd{ls /u/web/eagor1%STRINGPATH% %STRINGPATH%}% + +
                                              Nombre         Tamaño         Ultimo acceso     
                                                
                                                
                                      Usar "Click" sobre el enlace del fichero para descargar o en DIR para explorar.

                                      + +
                                      + + + + + + + + + + + + + +
                                      +
                                      + STTA +
                                      +
                                            + +
                                      + STTA Download +
                                      +
                                      + STTA - Descargar Servicios con Tarantella STTA + +
                                        
                                      +
                                      +
                                        
                                      +
                                      + + + + + +
                                      + Revision 1.0 Nov 2002 por Jesus Perez + + Derechos y Copia 2002 de e-agor@ y + autores y colaboradores.
                                      + Ideas, solicitudes, y problemas acerca de STTA? + Enviar detalles. +
                                      +
                                      + + diff --git a/~downloads/spa/index.html b/~downloads/spa/index.html new file mode 100644 index 0000000..a04b4c7 --- /dev/null +++ b/~downloads/spa/index.html @@ -0,0 +1,150 @@ + + + + STTA - Descargar Servicios con Tarantella + + + + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      + STTA +
                                      +
                                      +  STTATM - Descarga de STTA + +   + +
                                      + STTA Download +
                                      +
                                      + +  { Principal + | Login Descarga + | e-agor@ + | %{$ENV{'REMOTE_USER'}}% + } + + +
                                        
                                      +
                                      +
                                      %{$ENV{'REMOTE_USER'}}% -- Ultimo acceso: %{$lastAccess}%
                                      +
                                      + +

                                      Nota Legal sobre el uso de STTA (fuente PERL CGI,etc)

                                      +
                                        +
                                      • +Este programa es Software Libre; usted puede redistribuirlo + y/o modificarlo bajo los términos de la "GNU General Public License" + como lo publica la "FSF Free Software Foundation", versión 2 + o (a su elección) de cualquier versión posterior. +
                                      • +
                                      • +Este programa es distribuído con la esperanza de que le sea +útil, pero SIN NINGUNA GARANTIA; incluso sin la garantía +implícita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO + en particular. +
                                      • +
                                      • +Ver Licencia Pública General GNU (General Public License) para más +detalles, publicada en +http://www.gnu.org/copyleft/gpl.html +Traducción +
                                      • +
                                      • +Por favor, hay que tener en cuenta que STTA está entre o embebido con +otras tecnolog&iactue;as que usan sus propias licencias; hay que comprobar y +leer los términos y condiciones correspondientes en cada caso. +Webmin, Tarantella, el Software LDAP seleccionado, Perl, etc. tienen su +propia marca registradao y licencia de uso y distribución. + Contactar con los autores y propietaris para más detalles.
                                      • +
                                      + + + + +
                                      +  STTA: Ficheros Disponibles: %STRINGDIR% +

                                      + + + + + +
                                      + +
                                      + %syscmd{cat /home2/eagora%STRINGPATH%/.info.es %STRINGPATH%/.info.es}% +
                                      + + + %syscmd{ls /home2/eagora%STRINGPATH% %STRINGPATH%}% + +
                                              Nombre         Tamaño         Ultimo acceso     
                                                
                                                
                                      Usar "Click" sobre el enlace del fichero para descargar o en DIR para explorar.

                                      + +
                                      + + + + + + + + + + + + + +
                                      +
                                      + STTA +
                                      +
                                            + +
                                      + STTA Download +
                                      +
                                      + STTA - Descargar Servicios con Tarantella STTA + +
                                        
                                      +
                                      +
                                        
                                      +
                                      + + + + + +
                                      + Revision 1.0 Nov 2002 por Jesus Perez + + Derechos y Copia 2002 de e-agor@ y + autores y colaboradores.
                                      + Ideas, solicitudes, y problemas acerca de STTA? + Enviar detalles. +
                                      +
                                      + +