1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
use 5.008005;
use ExtUtils::MakeMaker;
# You might need to set this if your openssl headers and libs anre in an unusual place:
my $openssl_prefix = $ENV{OPENSSL_PREFIX} || '/usr';
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'Crypt::OpenSSL::EC',
VERSION_FROM => 'lib/Crypt/OpenSSL/EC.pm',
PREREQ_PM => { 'Crypt::OpenSSL::Bignum' => 0.04,
},
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(ABSTRACT_FROM => 'lib/Crypt/OpenSSL/EC.pm', # retrieve abstract from module
AUTHOR => 'Mike McCauley <mikem@airspayce.com>') : ()),
LIBS => ["-L$openssl_prefix/lib -lcrypto"], # e.g., '-lm'
DEFINE => '-DPERL5 -DOPENSSL_NO_KRB5',
INC => "-I. -I$openssl_prefix/include",
);
if (eval {require ExtUtils::Constant; 1}) {
# If you edit these definitions to change the constants used by this module,
# you will need to use the generated const-c.inc and const-xs.inc
# files to replace their "fallback" counterparts before distributing your
# changes.
my @names = (qw(EC_F_COMPUTE_WNAF EC_F_D2I_ECPARAMETERS
EC_F_D2I_ECPKPARAMETERS EC_F_D2I_ECPRIVATEKEY
EC_F_DO_EC_KEY_PRINT EC_F_ECKEY_PARAM2TYPE
EC_F_ECKEY_PARAM_DECODE EC_F_ECKEY_PRIV_DECODE
EC_F_ECKEY_PRIV_ENCODE EC_F_ECKEY_PUB_DECODE
EC_F_ECKEY_PUB_ENCODE EC_F_ECKEY_TYPE2PARAM
EC_F_ECPARAMETERS_PRINT EC_F_ECPARAMETERS_PRINT_FP
EC_F_ECPKPARAMETERS_PRINT EC_F_ECPKPARAMETERS_PRINT_FP
EC_F_ECP_NIST_MOD_192 EC_F_ECP_NIST_MOD_224
EC_F_ECP_NIST_MOD_256 EC_F_ECP_NIST_MOD_521
EC_F_EC_ASN1_GROUP2CURVE EC_F_EC_ASN1_GROUP2FIELDID
EC_F_EC_ASN1_GROUP2PARAMETERS EC_F_EC_ASN1_GROUP2PKPARAMETERS
EC_F_EC_ASN1_PARAMETERS2GROUP EC_F_EC_ASN1_PKPARAMETERS2GROUP
EC_F_EC_EX_DATA_SET_DATA
EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY
EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT
EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE
EC_F_EC_GF2M_SIMPLE_OCT2POINT EC_F_EC_GF2M_SIMPLE_POINT2OCT
EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES
EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES
EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES
EC_F_EC_GFP_MONT_FIELD_DECODE EC_F_EC_GFP_MONT_FIELD_ENCODE
EC_F_EC_GFP_MONT_FIELD_MUL EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE
EC_F_EC_GFP_MONT_FIELD_SQR EC_F_EC_GFP_MONT_GROUP_SET_CURVE
EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP
EC_F_EC_GFP_NIST_FIELD_MUL EC_F_EC_GFP_NIST_FIELD_SQR
EC_F_EC_GFP_NIST_GROUP_SET_CURVE
EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT
EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE
EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP
EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR
EC_F_EC_GFP_SIMPLE_MAKE_AFFINE EC_F_EC_GFP_SIMPLE_OCT2POINT
EC_F_EC_GFP_SIMPLE_POINT2OCT
EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE
EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES
EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP
EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES
EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP
EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES
EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP
EC_F_EC_GROUP_CHECK EC_F_EC_GROUP_CHECK_DISCRIMINANT
EC_F_EC_GROUP_COPY EC_F_EC_GROUP_GET0_GENERATOR
EC_F_EC_GROUP_GET_COFACTOR EC_F_EC_GROUP_GET_CURVE_GF2M
EC_F_EC_GROUP_GET_CURVE_GFP EC_F_EC_GROUP_GET_DEGREE
EC_F_EC_GROUP_GET_ORDER EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS
EC_F_EC_GROUP_GET_TRINOMIAL_BASIS EC_F_EC_GROUP_NEW
EC_F_EC_GROUP_NEW_BY_CURVE_NAME EC_F_EC_GROUP_NEW_FROM_DATA
EC_F_EC_GROUP_PRECOMPUTE_MULT EC_F_EC_GROUP_SET_CURVE_GF2M
EC_F_EC_GROUP_SET_CURVE_GFP EC_F_EC_GROUP_SET_EXTRA_DATA
EC_F_EC_GROUP_SET_GENERATOR EC_F_EC_KEY_CHECK_KEY
EC_F_EC_KEY_COPY EC_F_EC_KEY_GENERATE_KEY EC_F_EC_KEY_NEW
EC_F_EC_KEY_PRINT EC_F_EC_KEY_PRINT_FP
EC_F_EC_POINTS_MAKE_AFFINE EC_F_EC_POINT_ADD EC_F_EC_POINT_CMP
EC_F_EC_POINT_COPY EC_F_EC_POINT_DBL
EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M
EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP
EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP
EC_F_EC_POINT_INVERT EC_F_EC_POINT_IS_AT_INFINITY
EC_F_EC_POINT_IS_ON_CURVE EC_F_EC_POINT_MAKE_AFFINE
EC_F_EC_POINT_MUL EC_F_EC_POINT_NEW EC_F_EC_POINT_OCT2POINT
EC_F_EC_POINT_POINT2OCT
EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M
EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP
EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M
EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP
EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP
EC_F_EC_POINT_SET_TO_INFINITY EC_F_EC_PRE_COMP_DUP
EC_F_EC_PRE_COMP_NEW EC_F_EC_WNAF_MUL
EC_F_EC_WNAF_PRECOMPUTE_MULT EC_F_I2D_ECPARAMETERS
EC_F_I2D_ECPKPARAMETERS EC_F_I2D_ECPRIVATEKEY
EC_F_I2O_ECPUBLICKEY EC_F_O2I_ECPUBLICKEY
EC_F_OLD_EC_PRIV_DECODE EC_F_PKEY_EC_CTRL
EC_F_PKEY_EC_CTRL_STR EC_F_PKEY_EC_DERIVE EC_F_PKEY_EC_KEYGEN
EC_F_PKEY_EC_PARAMGEN EC_F_PKEY_EC_SIGN EC_PKEY_NO_PARAMETERS
EC_PKEY_NO_PUBKEY EC_R_ASN1_ERROR EC_R_ASN1_UNKNOWN_FIELD
EC_R_BUFFER_TOO_SMALL EC_R_D2I_ECPKPARAMETERS_FAILURE
EC_R_DECODE_ERROR EC_R_DISCRIMINANT_IS_ZERO
EC_R_EC_GROUP_NEW_BY_NAME_FAILURE EC_R_FIELD_TOO_LARGE
EC_R_GROUP2PKPARAMETERS_FAILURE
EC_R_I2D_ECPKPARAMETERS_FAILURE EC_R_INCOMPATIBLE_OBJECTS
EC_R_INVALID_ARGUMENT EC_R_INVALID_COMPRESSED_POINT
EC_R_INVALID_COMPRESSION_BIT EC_R_INVALID_CURVE
EC_R_INVALID_DIGEST_TYPE EC_R_INVALID_ENCODING
EC_R_INVALID_FIELD EC_R_INVALID_FORM EC_R_INVALID_GROUP_ORDER
EC_R_INVALID_PENTANOMIAL_BASIS EC_R_INVALID_PRIVATE_KEY
EC_R_INVALID_TRINOMIAL_BASIS EC_R_KEYS_NOT_SET
EC_R_MISSING_PARAMETERS EC_R_MISSING_PRIVATE_KEY
EC_R_NOT_A_NIST_PRIME EC_R_NOT_A_SUPPORTED_NIST_PRIME
EC_R_NOT_IMPLEMENTED EC_R_NOT_INITIALIZED EC_R_NO_FIELD_MOD
EC_R_NO_PARAMETERS_SET EC_R_PASSED_NULL_PARAMETER
EC_R_PKPARAMETERS2GROUP_FAILURE EC_R_POINT_AT_INFINITY
EC_R_POINT_IS_NOT_ON_CURVE EC_R_SLOT_FULL
EC_R_UNDEFINED_GENERATOR EC_R_UNDEFINED_ORDER
EC_R_UNKNOWN_GROUP EC_R_UNKNOWN_ORDER EC_R_UNSUPPORTED_FIELD
EC_R_WRONG_ORDER EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID
OPENSSL_ECC_MAX_FIELD_BITS OPENSSL_EC_NAMED_CURVE),
{name=>"POINT_CONVERSION_COMPRESSED", macro=>"1"},
{name=>"POINT_CONVERSION_HYBRID", macro=>"1"},
{name=>"POINT_CONVERSION_UNCOMPRESSED", macro=>"1"});
ExtUtils::Constant::WriteConstants(
NAME => 'Crypt::OpenSSL::EC',
NAMES => \@names,
DEFAULT_TYPE => 'IV',
C_FILE => 'const-c.inc',
XS_FILE => 'const-xs.inc',
);
}
else {
use File::Copy;
use File::Spec;
foreach my $file ('const-c.inc', 'const-xs.inc') {
my $fallback = File::Spec->catfile('fallback', $file);
copy ($fallback, $file) or die "Can't copy $fallback to $file: $!";
}
}
|