On Mon Apr 21 07:11:23 2008, [EMAIL PROTECTED] wrote: > > I prefer the die behavior, because with it, I don't forget to add tests > with auto::crypto. >
So I'm not alone, after all ;-) > Now, I think the name gen::digest is not good. > I prefer gen::crypto because : > 1) same as auto::crypto > 2) libcrypto contains cypher algo (not only digest), so we could add > some PMC wrapper (for example : DES, ...) > The patch attached renames gen::digest to gen::crypto and makes associated changes. I had one problem pulling the patch. For some reason, config/gen/digest.pm was showing up in Subversion as a "binary" type. I couldn't figure out how to fix that, so if we decide to change the file's name and apply this patch, we may have to do a separate 'svn rm config/gen/digest.pm' to get everything in place. But that should be no impediment to reviewing the patch. Thank you very much. kid51
Index: lib/Parrot/Configure/Step/List.pm =================================================================== --- lib/Parrot/Configure/Step/List.pm (.../trunk) (revision 27092) +++ lib/Parrot/Configure/Step/List.pm (.../branches/gencrypto) (revision 27100) @@ -69,7 +69,7 @@ auto::icu gen::config_h gen::core_pmcs - gen::digest + gen::crypto gen::parrot_include gen::opengl gen::languages Index: MANIFEST =================================================================== --- MANIFEST (.../trunk) (revision 27092) +++ MANIFEST (.../branches/gencrypto) (revision 27100) @@ -1,7 +1,7 @@ # ex: set ro: # $Id$ # -# generated by tools\dev\mk_manifest_and_skip.pl Mon Apr 21 20:09:14 2008 UT +# generated by tools/dev/mk_manifest_and_skip.pl Mon Apr 21 23:13:41 2008 UT # # See tools/dev/install_files.pl for documentation on the # format of this file. @@ -299,8 +299,8 @@ config/gen/config_pm/config_lib.in [] config/gen/config_pm/myconfig.in [] config/gen/core_pmcs.pm [] -config/gen/digest.pm [] -config/gen/digest/digest_pmc.in [] +config/gen/crypto.pm [] +config/gen/crypto/digest_pmc.in [] config/gen/languages.pm [] config/gen/makefiles.pm [] config/gen/makefiles/CFLAGS.in [] @@ -3526,6 +3526,7 @@ t/steps/gen_config_h-01.t [] t/steps/gen_config_pm-01.t [] t/steps/gen_core_pmcs-01.t [] +t/steps/gen_crypto-01.t [] t/steps/gen_languages-01.t [] t/steps/gen_makefiles-01.t [] t/steps/gen_opengl-01.t [] Index: MANIFEST.SKIP =================================================================== --- MANIFEST.SKIP (.../trunk) (revision 27092) +++ MANIFEST.SKIP (.../branches/gencrypto) (revision 27100) @@ -1,6 +1,6 @@ # ex: set ro: # $Id$ -# generated by tools/dev/mk_manifest_and_skip.pl Sat Apr 19 12:18:20 2008 UT +# generated by tools/dev/mk_manifest_and_skip.pl Mon Apr 21 23:13:41 2008 UT # # This file should contain a transcript of the svn:ignore properties # of the directories in the Parrot subversion repository. (Needed for @@ -1183,6 +1183,9 @@ ^languages/scheme/t/syn/.*\.pir/ ^languages/scheme/t/syn/.*\.scheme$ ^languages/scheme/t/syn/.*\.scheme/ +# generated from svn:ignore of 'languages/squaak/' +^languages/squaak/Makefile$ +^languages/squaak/Makefile/ # generated from svn:ignore of 'languages/tcl/' ^languages/tcl/.*\.pdb$ ^languages/tcl/.*\.pdb/ Index: t/steps/gen_crypto-01.t =================================================================== --- t/steps/gen_crypto-01.t (.../trunk) (revision 0) +++ t/steps/gen_crypto-01.t (.../branches/gencrypto) (revision 27100) @@ -0,0 +1,50 @@ +#! perl +# Copyright (C) 2007-2008, The Perl Foundation. +# $Id$ +# gen_crypto-01.t + +use strict; +use warnings; +use Test::More tests => 2; +use Carp; +use lib qw( lib ); +use_ok('config::gen::crypto'); + +=for hints_for_testing This is just a stub so that Configure.pl will run. + +=cut + +pass("Completed all tests in $0"); + +################### DOCUMENTATION ################### + +=head1 NAME + + gen_crypto-01.t - test config::gen::crypto + +=head1 SYNOPSIS + + % prove t/steps/gen_crypto-01.t + +=head1 DESCRIPTION + +The files in this directory test functionality used by F<Configure.pl>. + +The tests in this file test config::gen::crypto. + +=head1 AUTHOR + +James E Keenan + +=head1 SEE ALSO + +config::gen::crypto, F<Configure.pl>. + +=cut + +# Local Variables: +# mode: cperl +# cperl-indent-level: 4 +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4: Property changes on: t/steps/gen_crypto-01.t ___________________________________________________________________ Name: svn:eol-style + native Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Index: config/gen/digest.pm =================================================================== Cannot display: file marked as a binary type. svn:mime-type = plain/text Index: config/gen/crypto/digest_pmc.in =================================================================== --- config/gen/crypto/digest_pmc.in (.../trunk) (revision 0) +++ config/gen/crypto/digest_pmc.in (.../branches/gencrypto) (revision 27100) @@ -0,0 +1,160 @@ +/* +Copyright (C) 2008, The Perl Foundation. +$Id$ + +=head1 NAME + +src/dynpmc/@[EMAIL PROTECTED] - @md_name@ wrapper of libcrypto (libssl) + +=head1 DESCRIPTION + +See L<www.openssl.org> + +=head2 Methods + +=over 4 + +=cut + +*/ + +#include <openssl/@[EMAIL PROTECTED]> + +pmclass @md_name@ + dynpmc + need_ext + group digest_group { + +/* + +=item C<void init()> + +=cut + +*/ + void init() { +#ifndef [EMAIL PROTECTED]@ + @md_ctx@ *c = mem_allocate_zeroed_typed(@md_ctx@); + PMC_data(SELF) = c; + PObj_active_destroy_SET(SELF); +#else + real_exception(interp, NULL, ILL_INHERIT, "@md_name@ is disabled"); +#endif + } + +/* + +=item C<void destroy()> + +=cut + +*/ + void destroy() { +#ifndef [EMAIL PROTECTED]@ + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); + if (c) { + mem_sys_free(c); + PMC_data(SELF) = NULL; + } +#endif + } + +/* + +=item C<PMC* clone()> + +=cut + +*/ + PMC* clone() { +#ifndef [EMAIL PROTECTED]@ + PMC *retval = pmc_new_noinit(INTERP, SELF->vtable->base_type); + @md_ctx@ *c = mem_allocate_zeroed_typed(@md_ctx@); + + memcpy(c, PMC_data(SELF), sizeof (@md_ctx@)); + PMC_data(retval) = c; + + PObj_active_destroy_SET(retval); + return retval; +#else + return NULL; +#endif + } + + +/* + +=back + +=head2 Specific Methods + +=over 4 + +=item C<void Init()> + +=cut + +*/ + METHOD void Init() { +#ifndef [EMAIL PROTECTED]@ + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); + (void)@[EMAIL PROTECTED](c); +#endif + } + +/* + +=item C<void Update(STRING *buf)> + +=cut + +*/ + METHOD void Update(STRING *buf) { +#ifndef [EMAIL PROTECTED]@ + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); + (void)@[EMAIL PROTECTED](c, (unsigned char *)buf->strstart, buf->bufused); +#endif + } + +/* + +=item C<STRING* Final()> + +=cut + +*/ + METHOD STRING* Final() { +#ifndef [EMAIL PROTECTED]@ + unsigned char [EMAIL PROTECTED]@_LENGTH]; + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); + STRING *retval; + + (void)@[EMAIL PROTECTED](digest, c); + retval = string_from_cstring(INTERP, (char *)digest, @[EMAIL PROTECTED]); + + RETURN(STRING *retval); +#else + return NULL; +#endif + } + +} + +/* + +=back + +=head1 AUTHORS + +Francois Perrad + +=cut + +*/ + +/* + * Local variables: + * c-file-style: "parrot" + * End: + * vim: expandtab shiftwidth=4: + */ Property changes on: config/gen/crypto/digest_pmc.in ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Index: config/gen/crypto.pm =================================================================== --- config/gen/crypto.pm (.../trunk) (revision 0) +++ config/gen/crypto.pm (.../branches/gencrypto) (revision 27100) @@ -0,0 +1,81 @@ +# Copyright (C) 2008, The Perl Foundation. +# $Id: crypto.pm 27096 2008-04-21 23:11:53Z jkeenan $ + +=head1 NAME + +config/gen/crypto.pm - Digest PMC Files + +=head1 DESCRIPTION + +Generates Digest PMC files. + +=cut + +package gen::crypto; + +use strict; +use warnings; + + +use base qw(Parrot::Configure::Step); + +use Parrot::Configure::Utils ':gen'; + +sub _init { + my $self = shift; + my %data; + $data{description} = q{Generating Digest PMC files}; + $data{result} = q{}; + return \%data; +} + +my %digest = ( + MD2 => {}, + MD4 => {}, + MD5 => {}, + RIPEMD160 => { + md_inc => 'ripemd', + }, + SHA => {}, + SHA1 => { + md_inc => 'sha', + md_ctx => 'SHA_CTX', + md_digest => 'SHA_DIGEST', + }, + SHA256 => {}, + SHA512 => {}, +); + +sub runstep { + my ( $self, $conf ) = @_; + + my $verbose = $conf->options->get('verbose'); + unless ( $conf->data->get('has_crypto') ) { + $self->set_result('skipped'); + return 1; + } + + while (my ($md, $val) = each(%digest)) { + my $file = lc $md; + $conf->data->set( md_name => $md ); + $conf->data->set( md_file => $file ); + $conf->data->set( md_inc => $val->{md_inc} || $file ); + $conf->data->set( md_ctx => $val->{md_ctx} || $md . '_CTX' ); + $conf->data->set( md_digest => $val->{md_digest} || $md . '_DIGEST' ); + $conf->genfile( + 'config/gen/crypto/digest_pmc.in' => "src/dynpmc/${file}.pmc", + comment_type => '/*', + ); + } + + return 1; +} + +1; + +# Local Variables: +# mode: cperl +# cperl-indent-level: 4 +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4: