diff options
author | gregor herrmann <gregoa@debian.org> | 2023-11-01 21:24:14 +0100 |
---|---|---|
committer | gregor herrmann <gregoa@debian.org> | 2023-11-01 21:24:14 +0100 |
commit | d0028b7800375d4b99b3b7fa0b080463b5f20516 (patch) | |
tree | 87c2ee04800120d0124ce4de312f6297f77574bf /src/ltc/headers/tomcrypt_pk.h | |
parent | 0d9dd2adfb84247ac5d89b5e5de45532e670ad89 (diff) | |
parent | 91b33728c36084305fcc75cc15901d60ba285a4e (diff) |
New upstream version 0.080
Diffstat (limited to 'src/ltc/headers/tomcrypt_pk.h')
-rw-r--r-- | src/ltc/headers/tomcrypt_pk.h | 92 |
1 files changed, 55 insertions, 37 deletions
diff --git a/src/ltc/headers/tomcrypt_pk.h b/src/ltc/headers/tomcrypt_pk.h index 167789e4..903e118d 100644 --- a/src/ltc/headers/tomcrypt_pk.h +++ b/src/ltc/headers/tomcrypt_pk.h @@ -355,13 +355,31 @@ int ed25519_import_pkcs8(const unsigned char *in, unsigned long inlen, const void *pwd, unsigned long pwdlen, curve25519_key *key); -int ed25519_sign(const unsigned char *msg, unsigned long msglen, - unsigned char *sig, unsigned long *siglen, +int ed25519_sign(const unsigned char *msg, unsigned long msglen, + unsigned char *sig, unsigned long *siglen, const curve25519_key *private_key); - +int ed25519ctx_sign(const unsigned char *msg, unsigned long msglen, + unsigned char *sig, unsigned long *siglen, + const unsigned char *ctx, unsigned long ctxlen, + const curve25519_key *private_key); +int ed25519ph_sign(const unsigned char *msg, unsigned long msglen, + unsigned char *sig, unsigned long *siglen, + const unsigned char *ctx, unsigned long ctxlen, + const curve25519_key *private_key); int ed25519_verify(const unsigned char *msg, unsigned long msglen, const unsigned char *sig, unsigned long siglen, - int *stat, const curve25519_key *public_key); + int *stat, + const curve25519_key *public_key); +int ed25519ctx_verify(const unsigned char *msg, unsigned long msglen, + const unsigned char *sig, unsigned long siglen, + const unsigned char *ctx, unsigned long ctxlen, + int *stat, + const curve25519_key *public_key); +int ed25519ph_verify(const unsigned char *msg, unsigned long msglen, + const unsigned char *sig, unsigned long siglen, + const unsigned char *ctx, unsigned long ctxlen, + int *stat, + const curve25519_key *public_key); /** X25519 Key-Exchange API */ int x25519_make_key(prng_state *prng, int wprng, curve25519_key *key); @@ -530,43 +548,43 @@ typedef struct ltc_asn1_list_ { struct ltc_asn1_list_ *prev, *next, *child, *parent; } ltc_asn1_list; -#define LTC_SET_ASN1(list, index, Type, Data, Size) \ - do { \ - int LTC_MACRO_temp = (index); \ - ltc_asn1_list *LTC_MACRO_list = (list); \ - LTC_MACRO_list[LTC_MACRO_temp].type = (Type); \ - LTC_MACRO_list[LTC_MACRO_temp].data = (void*)(Data); \ - LTC_MACRO_list[LTC_MACRO_temp].size = (Size); \ - LTC_MACRO_list[LTC_MACRO_temp].used = 0; \ - LTC_MACRO_list[LTC_MACRO_temp].optional = 0; \ - LTC_MACRO_list[LTC_MACRO_temp].klass = 0; \ - LTC_MACRO_list[LTC_MACRO_temp].pc = 0; \ - LTC_MACRO_list[LTC_MACRO_temp].tag = 0; \ +#define LTC_SET_ASN1(list, index, Type, Data, Size) \ + do { \ + int LTC_TMPVAR(SA) = (index); \ + ltc_asn1_list *LTC_TMPVAR(SA_list) = (list); \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].type = (Type); \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].data = (void*)(Data); \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].size = (Size); \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].used = 0; \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].optional = 0; \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].klass = 0; \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].pc = 0; \ + LTC_TMPVAR(SA_list)[LTC_TMPVAR(SA)].tag = 0; \ } while (0) -#define LTC_SET_ASN1_IDENTIFIER(list, index, Class, Pc, Tag) \ - do { \ - int LTC_MACRO_temp = (index); \ - ltc_asn1_list *LTC_MACRO_list = (list); \ - LTC_MACRO_list[LTC_MACRO_temp].type = LTC_ASN1_CUSTOM_TYPE; \ - LTC_MACRO_list[LTC_MACRO_temp].klass = (Class); \ - LTC_MACRO_list[LTC_MACRO_temp].pc = (Pc); \ - LTC_MACRO_list[LTC_MACRO_temp].tag = (Tag); \ +#define LTC_SET_ASN1_IDENTIFIER(list, index, Class, Pc, Tag) \ + do { \ + int LTC_TMPVAR(SAI) = (index); \ + ltc_asn1_list *LTC_TMPVAR(SAI_list) = (list); \ + LTC_TMPVAR(SAI_list)[LTC_TMPVAR(SAI)].type = LTC_ASN1_CUSTOM_TYPE; \ + LTC_TMPVAR(SAI_list)[LTC_TMPVAR(SAI)].klass = (Class); \ + LTC_TMPVAR(SAI_list)[LTC_TMPVAR(SAI)].pc = (Pc); \ + LTC_TMPVAR(SAI_list)[LTC_TMPVAR(SAI)].tag = (Tag); \ } while (0) -#define LTC_SET_ASN1_CUSTOM_CONSTRUCTED(list, index, Class, Tag, Data) \ - do { \ - int LTC_MACRO_temp##__LINE__ = (index); \ - LTC_SET_ASN1(list, LTC_MACRO_temp##__LINE__, LTC_ASN1_CUSTOM_TYPE, Data, 1); \ - LTC_SET_ASN1_IDENTIFIER(list, LTC_MACRO_temp##__LINE__, Class, LTC_ASN1_PC_CONSTRUCTED, Tag); \ +#define LTC_SET_ASN1_CUSTOM_CONSTRUCTED(list, index, Class, Tag, Data) \ + do { \ + int LTC_TMPVAR(SACC) = (index); \ + LTC_SET_ASN1(list, LTC_TMPVAR(SACC), LTC_ASN1_CUSTOM_TYPE, Data, 1); \ + LTC_SET_ASN1_IDENTIFIER(list, LTC_TMPVAR(SACC), Class, LTC_ASN1_PC_CONSTRUCTED, Tag); \ } while (0) -#define LTC_SET_ASN1_CUSTOM_PRIMITIVE(list, index, Class, Tag, Type, Data, Size) \ - do { \ - int LTC_MACRO_temp##__LINE__ = (index); \ - LTC_SET_ASN1(list, LTC_MACRO_temp##__LINE__, LTC_ASN1_CUSTOM_TYPE, Data, Size); \ - LTC_SET_ASN1_IDENTIFIER(list, LTC_MACRO_temp##__LINE__, Class, LTC_ASN1_PC_PRIMITIVE, Tag); \ - list[LTC_MACRO_temp##__LINE__].used = (int)(Type); \ +#define LTC_SET_ASN1_CUSTOM_PRIMITIVE(list, index, Class, Tag, Type, Data, Size) \ + do { \ + int LTC_TMPVAR(SACP) = (index); \ + LTC_SET_ASN1(list, LTC_TMPVAR(SACP), LTC_ASN1_CUSTOM_TYPE, Data, Size); \ + LTC_SET_ASN1_IDENTIFIER(list, LTC_TMPVAR(SACP), Class, LTC_ASN1_PC_PRIMITIVE, Tag); \ + list[LTC_TMPVAR(SACP)].used = (int)(Type); \ } while (0) extern const char* der_asn1_class_to_string_map[]; @@ -636,8 +654,8 @@ int der_encode_setof(const ltc_asn1_list *list, unsigned long inlen, unsigned char *out, unsigned long *outlen); /* VA list handy helpers with triplets of <type, size, data> */ -int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...); -int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...); +int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...) LTC_NULL_TERMINATED; +int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...) LTC_NULL_TERMINATED; /* FLEXI DECODER handle unknown list decoder */ int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out); |