20 #include <ripple/basics/contract.h>
21 #include <ripple/crypto/impl/openssl.h>
22 #include <openssl/hmac.h>
31 Throw<std::runtime_error> (
"BN_new() failed");
37 BIGNUM* bn = BN_bin2bn (data, size,
ptr);
39 Throw<std::runtime_error> (
"BN_bin2bn() failed");
46 ptr = BN_bin2bn (data, size,
nullptr);
48 Throw<std::runtime_error> (
"BN_bin2bn() failed");
55 Throw<std::runtime_error> (
"BN_CTX_new() failed");
61 if (! EC_GROUP_get_order (group, result.
get(), ctx.
get()))
62 Throw<std::runtime_error> (
"EC_GROUP_get_order() failed");
69 ptr = EC_POINT_new (group);
71 Throw<std::runtime_error> (
"EC_POINT_new() failed");
79 if (!EC_POINT_add (group, b.
get(), a.
get(), b.
get(), ctx.
get()))
80 Throw<std::runtime_error> (
"EC_POINT_add() failed");
88 if (! EC_POINT_mul (group, result.
get(), n.
get(),
nullptr,
nullptr, ctx.
get()))
89 Throw<std::runtime_error> (
"EC_POINT_mul() failed");
96 EC_POINT* result = EC_POINT_bn2point (group, number,
nullptr,
nullptr);
97 if (result ==
nullptr)
98 Throw<std::runtime_error> (
"EC_POINT_bn2point() failed");
105 EC_KEY* key = EC_KEY_new_by_curve_name (NID_secp256k1);
107 if (key ==
nullptr) Throw<std::runtime_error> (
"EC_KEY_new_by_curve_name() failed");
109 EC_KEY_set_conv_form (key, POINT_CONVERSION_COMPRESSED);
117 if (EC_KEY_set_public_key((EC_KEY*) key.
get(), point.
get()) <= 0)
118 Throw<std::runtime_error> (
"EC_KEY_set_public_key() failed");
120 int const size = i2o_ECPublicKey ((EC_KEY*) key.
get(), &ptr);
131 FILE _iob[] = {*stdin, *stdout, *stderr};
132 extern "C" FILE * __cdecl __iob_func(
void)