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 )