Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/util.h
Show First 20 Lines • Show All 154 Lines • ▼ Show 20 Lines | |||||
# if defined(__GNUC__) | # if defined(__GNUC__) | ||||
# define SECP256K1_GNUC_EXT __extension__ | # define SECP256K1_GNUC_EXT __extension__ | ||||
# else | # else | ||||
# define SECP256K1_GNUC_EXT | # define SECP256K1_GNUC_EXT | ||||
# endif | # endif | ||||
SECP256K1_GNUC_EXT typedef unsigned __int128 uint128_t; | SECP256K1_GNUC_EXT typedef unsigned __int128 uint128_t; | ||||
#endif | #endif | ||||
/* Zero memory if flag == 1. Constant time. */ | |||||
static SECP256K1_INLINE void memczero(void *s, size_t len, int flag) { | |||||
unsigned char *p; | |||||
unsigned char mask = -(unsigned char)flag; | |||||
p = (unsigned char *)s; | |||||
while (len) { | |||||
*p ^= *p & mask; | |||||
p++; | |||||
len--; | |||||
} | |||||
} | |||||
#endif /* SECP256K1_UTIL_H */ | #endif /* SECP256K1_UTIL_H */ |