15 #include <openssl/err.h> 16 #include <openssl/ec.h> 17 #include <openssl/pem.h> 18 #include <openssl/bn.h> 58 std::vector<unsigned char>
_tag;
80 security_ecc(
const ec_elliptic_curves p_elliptic_curve,
const std::vector<unsigned char>& p_public_key_x,
const std::vector<unsigned char>& p_public_key_y);
101 int sign(
const std::vector<unsigned char>& p_data, std::vector<unsigned char>& p_r_sig, std::vector<unsigned char>& p_s_sig);
109 int sign_verif(
const std::vector<unsigned char>& p_data,
const std::vector<unsigned char>& p_signature);
124 int generate_and_derive_ephemeral_key(
const encryption_algotithm p_enc_algorithm,
const std::vector<unsigned char>& p_recipients_public_key_x,
const std::vector<unsigned char>& p_recipients_public_key_y);
137 int generate_and_derive_ephemeral_key(
const encryption_algotithm p_enc_algorithm,
const std::vector<unsigned char>& p_private_enc_key,
const std::vector<unsigned char>& p_ephemeral_public_key_x,
const std::vector<unsigned char>& p_ephemeral_public_key_y,
const std::vector<unsigned char>& p_enc_sym_key,
const std::vector<unsigned char>& p_expected_nonce,
const std::vector<unsigned char>& p_authentication_vector);
150 int encrypt(
const encryption_algotithm p_enc_algorithm,
const std::vector<unsigned char>& p_message, std::vector<unsigned char>& p_enc_message);
164 int encrypt(
const encryption_algotithm p_enc_algorithm,
const std::vector<unsigned char>& p_symmetric_key,
const std::vector<unsigned char>& p_nonce,
const std::vector<unsigned char>& p_message, std::vector<unsigned char>& p_enc_message);
178 int decrypt(
const encryption_algotithm p_enc_algorithm,
const std::vector<unsigned char>& p_symmetric_key,
const std::vector<unsigned char>& p_nonce,
const std::vector<unsigned char>& p_tag,
const std::vector<unsigned char>& p_enc_message, std::vector<unsigned char>& p_message);
190 int decrypt(
const std::vector<unsigned char>& p_tag,
const std::vector<unsigned char>& p_enc_message, std::vector<unsigned char>& p_message);
192 inline const std::vector<unsigned char>&
private_key()
const {
return _pri_key; };
193 inline const std::vector<unsigned char>&
public_key_x()
const {
return _pub_key_x; };
194 inline const std::vector<unsigned char>&
public_key_y()
const {
return _pub_key_y; };
195 inline const std::vector<unsigned char>&
secret_key()
const {
return _secret_key; };
200 inline const std::vector<unsigned char>&
nonce()
const {
return _nonce; };
201 inline const std::vector<unsigned char>&
tag()
const {
return _tag; };
215 int bin_to_ec_point(
const std::vector<unsigned char>& p_public_key_x,
const std::vector<unsigned char>& p_public_key_y, EC_POINT** p_ec_point);
221 int public_key_to_bin(std::vector<unsigned char>& p_bin_key);
std::vector< unsigned char > _pub_key_x
Definition: security_ecc.hh:50
const std::vector< unsigned char > & encryption_key_x() const
Definition: security_ecc.hh:196
std::vector< unsigned char > _nonce
Definition: security_ecc.hh:57
const std::vector< unsigned char > & nonce() const
Definition: security_ecc.hh:200
const std::vector< unsigned char > & public_key_x() const
Definition: security_ecc.hh:193
const std::vector< unsigned char > & tag() const
Definition: security_ecc.hh:201
BN_CTX * _bn_ctx
Definition: security_ecc.hh:48
const std::vector< unsigned char > & private_key() const
Definition: security_ecc.hh:192
const std::vector< unsigned char > & encryption_key_y() const
Definition: security_ecc.hh:197
const std::vector< unsigned char > & encrypted_symmetric_key() const
Definition: security_ecc.hh:198
const EC_GROUP * _ec_group
Definition: security_ecc.hh:47
std::vector< unsigned char > _enc_sym_key
Definition: security_ecc.hh:56
ec_elliptic_curves
Definition: security_ecc.hh:23
const std::vector< unsigned char > & public_key_y() const
Definition: security_ecc.hh:194
std::vector< unsigned char > _sym_key
Definition: security_ecc.hh:55
This class implements the generation of a key pair private/public.
Definition: security_ecc.hh:43
std::vector< unsigned char > _pri_key
Definition: security_ecc.hh:49
std::vector< unsigned char > _pub_key_y
Definition: security_ecc.hh:51
const std::vector< unsigned char > & symmetric_encryption_key() const
Definition: security_ecc.hh:199
encryption_algotithm _encryption_algotithm
Definition: security_ecc.hh:45
std::vector< unsigned char > _enc_key_x
Definition: security_ecc.hh:53
EC_KEY * _ec_key
Definition: security_ecc.hh:46
ec_elliptic_curves _elliptic_curve
Definition: security_ecc.hh:44
encryption_algotithm
Definition: security_ecc.hh:32
std::vector< unsigned char > _secret_key
Definition: security_ecc.hh:52
const std::vector< unsigned char > & secret_key() const
Definition: security_ecc.hh:195
std::vector< unsigned char > _enc_key_y
Definition: security_ecc.hh:54
std::vector< unsigned char > _tag
Definition: security_ecc.hh:58