mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
28 lines
640 B
C++
28 lines
640 B
C++
|
#include "CryptoKey.h"
|
||
|
|
||
|
namespace i2p
|
||
|
{
|
||
|
namespace crypto
|
||
|
{
|
||
|
void CreateECIESP256RandomKeys (uint8_t * priv, uint8_t * pub)
|
||
|
{
|
||
|
EC_GROUP * curve = EC_GROUP_new_by_curve_name (NID_X9_62_prime256v1);
|
||
|
EC_POINT * p = nullptr;
|
||
|
BIGNUM * key = nullptr;
|
||
|
GenerateECIESKeyPair (curve, key, p);
|
||
|
bn2buf (key, priv, 32);
|
||
|
RAND_bytes (priv + 32, 224);
|
||
|
BN_free (key);
|
||
|
BIGNUM * x = BN_new (), * y = BN_new ();
|
||
|
EC_POINT_get_affine_coordinates_GFp (curve, p, x, y, NULL);
|
||
|
bn2buf (x, pub, 32);
|
||
|
bn2buf (y, pub + 32, 32);
|
||
|
RAND_bytes (priv + 64, 192);
|
||
|
EC_POINT_free (p);
|
||
|
BN_free (x); BN_free (y);
|
||
|
EC_GROUP_free (curve);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|