Browse Source

OpenSSL 1.1 for EVP_PKEY

pull/708/head
orignal 8 years ago
parent
commit
6377631ae7
  1. 6
      Crypto.cpp
  2. 10
      Crypto.h
  3. 2
      Family.cpp
  4. 6
      Reseed.cpp

6
Crypto.cpp

@ -270,8 +270,10 @@ namespace crypto @@ -270,8 +270,10 @@ namespace crypto
{
if (m_IsUpdated)
{
bn2buf (m_DH->pub_key, m_PublicKey, 256);
BN_free (m_DH->pub_key); m_DH->pub_key = NULL;
const BIGNUM * priv_key, * pub_key;
DH_get0_key (m_DH, &pub_key, &priv_key);
bn2buf (pub_key, m_PublicKey, 256);
DH_set0_key (m_DH, NULL, NULL);
m_IsUpdated= false;
}
return m_PublicKey;

10
Crypto.h

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
#include <openssl/ecdsa.h>
#include <openssl/rsa.h>
#include <openssl/sha.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
#include "Base.h"
@ -281,6 +282,8 @@ namespace crypto @@ -281,6 +282,8 @@ namespace crypto
void InitCrypto (bool precomputation);
void TerminateCrypto ();
}
}
// take care about openssl version
#include <openssl/opensslv.h>
@ -318,9 +321,10 @@ inline int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key) @@ -318,9 +321,10 @@ inline int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
inline void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
{ *pub_key = dh->pub_key; *priv_key = dh->priv_key; }
inline int EVP_PKEY_base_id(const EVP_PKEY *pkey)
{ return EVP_PKEY_type(pkey->type); }
inline RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey)
{ return pkey->pkey.rsa; }
#endif
}
}
#endif

2
Family.cpp

@ -40,7 +40,7 @@ namespace data @@ -40,7 +40,7 @@ namespace data
if (family) family[0] = 0;
}
auto pkey = X509_get_pubkey (cert);
int keyType = EVP_PKEY_type(pkey->type);
int keyType = EVP_PKEY_base_id (pkey);
switch (keyType)
{
case EVP_PKEY_DSA:

6
Reseed.cpp

@ -350,9 +350,11 @@ namespace data @@ -350,9 +350,11 @@ namespace data
if (terminator) terminator[0] = 0;
}
// extract RSA key (we need n only, e = 65537)
RSA * key = X509_get_pubkey (cert)->pkey.rsa;
RSA * key = EVP_PKEY_get0_RSA (X509_get_pubkey (cert));
const BIGNUM * n, * e, * d;
RSA_get0_key(key, &n, &e, &d);
PublicKey value;
i2p::crypto::bn2buf (key->n, value, 512);
i2p::crypto::bn2buf (n, value, 512);
if (cn)
m_SigningKeys[cn] = value;
else

Loading…
Cancel
Save