Crypt-OpenSSL-EC
view release on metacpan or search on metacpan
t/Crypt-OpenSSL-EC.t view on Meta::CPAN
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 POINT_CONVERSION_COMPRESSED
POINT_CONVERSION_HYBRID POINT_CONVERSION_UNCOMPRESSED)) {
next if (eval "my \$a = $constname; 1");
if ($@ =~ /^Your vendor has not defined Crypt::OpenSSL::EC macro $constname/) {
print "# pass: $@";
} else {
print "# fail: $@";
$fail = 1;
}
}
ok( $fail == 0 , 'Constants' );
#########################
# Insert your test code below, the Test::More module is use()ed here so read
# its man page ( perldoc Test::More ) for help writing this test script.
# Exercise basic creation and destruction code:
my $method = Crypt::OpenSSL::EC::EC_GFp_mont_method();
ok($method);
$method = Crypt::OpenSSL::EC::EC_GFp_mont_method();
ok($method);
my $group = Crypt::OpenSSL::EC::EC_GROUP::new($method);
$group = Crypt::OpenSSL::EC::EC_GROUP::new($method);
ok($group);
my $point = Crypt::OpenSSL::EC::EC_POINT::new($group);
ok($point);
$point = Crypt::OpenSSL::EC::EC_POINT::new($group);
ok($point);
my $key = Crypt::OpenSSL::EC::EC_KEY::new();
ok($key);
$key = Crypt::OpenSSL::EC::EC_KEY::new();
ok($key);
my $bignum = $key->get0_private_key();
ok($bignum);
$group = $key->get0_group();
ok($group);
$point = $key->get0_public_key();
ok($point);
my $nid = 415; # NID_X9_62_prime256v1
$group = Crypt::OpenSSL::EC::EC_GROUP::new_by_curve_name($nid);
my $ctx = Crypt::OpenSSL::Bignum::CTX->new();
my $order = Crypt::OpenSSL::Bignum->zero;
$group->get_order( $order, $ctx );
my $eckey = Crypt::OpenSSL::EC::EC_KEY::new();
ok($eckey);
ok($eckey->set_group($group));
ok($eckey->generate_key());
$bignum = $eckey->get0_private_key();
ok($bignum);
#print '$bignum ', $bignum, "\n";
my $binary = $bignum->to_bin;
ok($binary);
my $K = $eckey->get0_public_key();
ok($K);
#print '$K: ', $K, "\n";
( run in 1.217 second using v1.01-cache-2.11-cpan-39bf76dae61 )