15#define DISABLE_DEBUGLOG
18#include "cryptkey_p.h"
19#include <gwenhywfar/misc.h>
20#include <gwenhywfar/debug.h>
36 gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
37 if (!gcry_check_version(NEED_LIBGCRYPT_VERSION)) {
38 const char *gcrypt_version = gcry_check_version(0);
40 "Gwen needs GCrypt >= %s, but is running with GCrypt %s",
41 NEED_LIBGCRYPT_VERSION, gcrypt_version);
46 gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
47 gcry_control(GCRYCTL_ENABLE_QUICK_RANDOM, 0);
72 k->cryptAlgoId=cryptAlgoId;
91 cryptAlgoId=GWEN_Crypt_CryptAlgoId_Unknown;
93 if (cryptAlgoId==GWEN_Crypt_CryptAlgoId_Unknown) {
126 "keySize", k->keySize);
128 "keyNumber", k->keyNumber);
130 "keyVersion", k->keyVersion);
146 nk->keyNumber=k->keyNumber;
147 nk->keyVersion=k->keyVersion;
158 if (k->refCount==1) {
174 return k->cryptAlgoId;
206 return k->keyVersion;
274 const uint8_t *pInData,
276 uint8_t *pSignatureData,
277 uint32_t *pSignatureLen)
281 return k->signFn(k, pInData, inLen, pSignatureData, pSignatureLen);
289 const uint8_t *pInData,
291 const uint8_t *pSignatureData,
292 uint32_t signatureLen)
296 return k->verifyFn(k, pInData, inLen, pSignatureData, signatureLen);
304 const uint8_t *pInData,
311 return k->encipherFn(k, pInData, inLen, pOutData, pOutLen);
319 const uint8_t *pInData,
326 return k->decipherFn(k, pInData, inLen, pOutData, pOutLen);
const char * GWEN_Crypt_CryptAlgoId_toString(GWEN_CRYPT_CRYPTALGOID a)
GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_CryptAlgoId_fromString(const char *s)
GWEN_CRYPT_KEY * GWEN_Crypt_Key_new(GWEN_CRYPT_CRYPTALGOID cryptAlgoId, int keySize)
int GWEN_Crypt_Key_Decipher(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, uint8_t *pOutData, uint32_t *pOutLen)
void GWEN_Crypt_Key_free(GWEN_CRYPT_KEY *k)
void GWEN_Crypt_Key_SetKeyVersion(GWEN_CRYPT_KEY *k, int i)
int GWEN_Crypt_Key_Sign(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, uint8_t *pSignatureData, uint32_t *pSignatureLen)
int GWEN_Crypt_Key_GetKeyVersion(const GWEN_CRYPT_KEY *k)
GWEN_CRYPT_KEY * GWEN_Crypt_Key_fromDb(GWEN_DB_NODE *db)
void GWEN_Crypt_Key_SetKeyNumber(GWEN_CRYPT_KEY *k, int i)
GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_Key_GetCryptAlgoId(const GWEN_CRYPT_KEY *k)
int GWEN_Crypt_Key_GetKeySize(const GWEN_CRYPT_KEY *k)
GWEN_CRYPT_KEY * GWEN_Crypt_Key_dup(const GWEN_CRYPT_KEY *k)
int GWEN_Crypt3_ModuleInit(void)
GWEN_CRYPT_KEY_SIGN_FN GWEN_Crypt_Key_SetSignFn(GWEN_CRYPT_KEY *k, GWEN_CRYPT_KEY_SIGN_FN f)
int GWEN_Crypt_Key_GetKeyNumber(const GWEN_CRYPT_KEY *k)
GWEN_CRYPT_KEY_VERIFY_FN GWEN_Crypt_Key_SetVerifyFn(GWEN_CRYPT_KEY *k, GWEN_CRYPT_KEY_VERIFY_FN f)
GWEN_CRYPT_KEY_ENCIPHER_FN GWEN_Crypt_Key_SetEncipherFn(GWEN_CRYPT_KEY *k, GWEN_CRYPT_KEY_ENCIPHER_FN f)
int GWEN_Crypt_Key_toDb(const GWEN_CRYPT_KEY *k, GWEN_DB_NODE *db)
int GWEN_Crypt_Key_Encipher(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, uint8_t *pOutData, uint32_t *pOutLen)
int GWEN_Crypt_Key_Verify(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, const uint8_t *pSignatureData, uint32_t signatureLen)
int GWEN_Crypt3_ModuleFini(void)
GWEN_CRYPT_KEY_DECIPHER_FN GWEN_Crypt_Key_SetDecipherFn(GWEN_CRYPT_KEY *k, GWEN_CRYPT_KEY_DECIPHER_FN f)
struct GWEN_CRYPT_KEY GWEN_CRYPT_KEY
GWENHYWFAR_CB int(* GWEN_CRYPT_KEY_DECIPHER_FN)(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, uint8_t *pOutData, uint32_t *pOutLen)
GWENHYWFAR_CB int(* GWEN_CRYPT_KEY_VERIFY_FN)(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, const uint8_t *pSignatureData, uint32_t signatureLen)
GWENHYWFAR_CB int(* GWEN_CRYPT_KEY_SIGN_FN)(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, uint8_t *pSignatureData, uint32_t *pSignatureLen)
GWENHYWFAR_CB int(* GWEN_CRYPT_KEY_ENCIPHER_FN)(GWEN_CRYPT_KEY *k, const uint8_t *pInData, uint32_t inLen, uint8_t *pOutData, uint32_t *pOutLen)
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
#define GWEN_DB_FLAGS_OVERWRITE_VARS
struct GWEN_DB_NODE GWEN_DB_NODE
#define DBG_ERROR(dbg_logger, format, args...)
#define GWEN_ERROR_NOT_IMPLEMENTED
#define GWEN_ERROR_GENERIC
#define GWEN_INHERIT_FUNCTIONS(t)
#define GWEN_INHERIT_INIT(t, element)
#define GWEN_INHERIT_FINI(t, element)
#define GWEN_LIST_FINI(t, element)
#define GWEN_LIST_FUNCTIONS(t, pr)
#define GWEN_LIST_INIT(t, element)
#define GWEN_LIST2_FUNCTIONS(t, pr)
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)