21#ifndef FREERDP_LIB_CORE_PRIVATEKEY_H
22#define FREERDP_LIB_CORE_PRIVATEKEY_H
24#include <freerdp/api.h>
25#include <freerdp/crypto/crypto.h>
26#include <freerdp/crypto/privatekey.h>
28#include <openssl/rsa.h>
29#include <openssl/evp.h>
36 enum FREERDP_KEY_PARAM
38 FREERDP_KEY_PARAM_RSA_D,
39 FREERDP_KEY_PARAM_RSA_E,
40 FREERDP_KEY_PARAM_RSA_N
43 WINPR_ATTR_MALLOC(freerdp_key_free, 1)
45 FREERDP_LOCAL rdpPrivateKey* freerdp_key_clone(const rdpPrivateKey* key);
48 FREERDP_LOCAL const rdpCertInfo* freerdp_key_get_info(const rdpPrivateKey* key);
51 FREERDP_LOCAL const BYTE* freerdp_key_get_exponent(const rdpPrivateKey* key,
size_t* plength);
56 WINPR_ATTR_MALLOC(EVP_PKEY_free, 1)
58 FREERDP_LOCAL EVP_PKEY* freerdp_key_get_evp_pkey(const rdpPrivateKey* key);
60 WINPR_ATTR_MALLOC(free, 1)
62 FREERDP_LOCAL BYTE* freerdp_key_get_param(const rdpPrivateKey* key,
63 enum FREERDP_KEY_PARAM param,
size_t* plength);
66 WINPR_ATTR_MALLOC(winpr_Digest_Free, 1)
67 FREERDP_LOCAL WINPR_DIGEST_CTX* freerdp_key_digest_sign(rdpPrivateKey* key,
68 WINPR_MD_TYPE digest);
70 FREERDP_LOCAL extern const rdpPrivateKey* priv_key_tssk;