Skip to content
Snippets Groups Projects
Commit 867bcf15 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

crypto: add EC key generation

parent fb882ee4
No related branches found
No related tags found
No related merge requests found
...@@ -148,6 +148,7 @@ struct OPENDHT_PUBLIC PrivateKey ...@@ -148,6 +148,7 @@ struct OPENDHT_PUBLIC PrivateKey
* Recommended values: 4096, 8192 * Recommended values: 4096, 8192
*/ */
static PrivateKey generate(unsigned key_length = 4096); static PrivateKey generate(unsigned key_length = 4096);
static PrivateKey generateEC();
gnutls_privkey_t key {}; gnutls_privkey_t key {};
gnutls_x509_privkey_t x509_key {}; gnutls_x509_privkey_t x509_key {};
......
...@@ -739,6 +739,20 @@ PrivateKey::generate(unsigned key_length) ...@@ -739,6 +739,20 @@ PrivateKey::generate(unsigned key_length)
return PrivateKey{key}; return PrivateKey{key};
} }
PrivateKey
PrivateKey::generateEC()
{
gnutls_x509_privkey_t key;
if (gnutls_x509_privkey_init(&key) != GNUTLS_E_SUCCESS)
throw CryptoException("Can't initialize private key.");
int err = gnutls_x509_privkey_generate(key, GNUTLS_PK_EC, gnutls_sec_param_to_pk_bits(GNUTLS_PK_EC, GNUTLS_SEC_PARAM_ULTRA), 0);
if (err != GNUTLS_E_SUCCESS) {
gnutls_x509_privkey_deinit(key);
throw CryptoException(std::string("Can't generate EC key pair: ") + gnutls_strerror(err));
}
return PrivateKey{key};
}
Identity Identity
generateIdentity(const std::string& name, crypto::Identity ca, unsigned key_length, bool is_ca) generateIdentity(const std::string& name, crypto::Identity ca, unsigned key_length, bool is_ca)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment