1
mirror of https://github.com/jedisct1/libsodium.git synced 2024-12-19 18:15:18 -07:00

Postpone from_hash()

This commit is contained in:
Frank Denis 2019-05-02 10:12:12 +02:00
parent 4f1d0ccfdb
commit ab1e720a30
5 changed files with 5 additions and 55 deletions

View File

@ -70,21 +70,13 @@ crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r)
return 0; return 0;
} }
int
crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h)
{
ge25519_from_hash(p, h);
return 0;
}
void void
crypto_core_ed25519_random(unsigned char *p) crypto_core_ed25519_random(unsigned char *p)
{ {
unsigned char h[crypto_core_ed25519_HASHBYTES]; unsigned char r[crypto_core_ed25519_UNIFORMBYTES];
randombytes_buf(h, sizeof h); randombytes_buf(r, sizeof r);
(void) crypto_core_ed25519_from_hash(p, h); (void) crypto_core_ed25519_from_uniform(p, r);
} }
void void
@ -212,12 +204,6 @@ crypto_core_ed25519_uniformbytes(void)
return crypto_core_ed25519_UNIFORMBYTES; return crypto_core_ed25519_UNIFORMBYTES;
} }
size_t
crypto_core_ed25519_hashbytes(void)
{
return crypto_core_ed25519_HASHBYTES;
}
size_t size_t
crypto_core_ed25519_scalarbytes(void) crypto_core_ed25519_scalarbytes(void)
{ {

View File

@ -2605,20 +2605,6 @@ ge25519_from_uniform(unsigned char s[32], const unsigned char r[32])
ge25519_elligator2(s, x_sign); ge25519_elligator2(s, x_sign);
} }
void
ge25519_from_hash(unsigned char s[32], const unsigned char h[64])
{
unsigned char r[64];
unsigned char x_sign;
memcpy(r, h, 64);
x_sign = h[63] & 0x80;
r[63] &= 0x7f;
sc25519_reduce(r);
memcpy(s, r, 32);
ge25519_elligator2(s, x_sign);
}
/* Ristretto group */ /* Ristretto group */
static int static int

View File

@ -16,10 +16,6 @@ size_t crypto_core_ed25519_bytes(void);
SODIUM_EXPORT SODIUM_EXPORT
size_t crypto_core_ed25519_uniformbytes(void); size_t crypto_core_ed25519_uniformbytes(void);
#define crypto_core_ed25519_HASHBYTES 64
SODIUM_EXPORT
size_t crypto_core_ed25519_hashbytes(void);
#define crypto_core_ed25519_SCALARBYTES 32 #define crypto_core_ed25519_SCALARBYTES 32
SODIUM_EXPORT SODIUM_EXPORT
size_t crypto_core_ed25519_scalarbytes(void); size_t crypto_core_ed25519_scalarbytes(void);
@ -46,10 +42,6 @@ SODIUM_EXPORT
int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r)
__attribute__ ((nonnull)); __attribute__ ((nonnull));
SODIUM_EXPORT
int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h)
__attribute__ ((nonnull));
SODIUM_EXPORT SODIUM_EXPORT
void crypto_core_ed25519_random(unsigned char *p) void crypto_core_ed25519_random(unsigned char *p)
__attribute__ ((nonnull)); __attribute__ ((nonnull));

View File

@ -110,8 +110,6 @@ int ge25519_has_small_order(const unsigned char s[32]);
void ge25519_from_uniform(unsigned char s[32], const unsigned char r[32]); void ge25519_from_uniform(unsigned char s[32], const unsigned char r[32]);
void ge25519_from_hash(unsigned char s[32], const unsigned char h[64]);
/* /*
Ristretto group Ristretto group
*/ */

View File

@ -44,17 +44,16 @@ add_l64(unsigned char * const S)
int int
main(void) main(void)
{ {
unsigned char *h, *r; unsigned char *r;
unsigned char *p, *p2, *p3; unsigned char *p, *p2, *p3;
unsigned char *sc, *sc2, *sc3; unsigned char *sc, *sc2, *sc3;
unsigned char *sc64; unsigned char *sc64;
char *hex; char *hex;
unsigned int i, j; unsigned int i, j;
h = (unsigned char *) sodium_malloc(crypto_core_ed25519_HASHBYTES);
r = (unsigned char *) sodium_malloc(crypto_core_ed25519_UNIFORMBYTES); r = (unsigned char *) sodium_malloc(crypto_core_ed25519_UNIFORMBYTES);
p = (unsigned char *) sodium_malloc(crypto_core_ed25519_BYTES); p = (unsigned char *) sodium_malloc(crypto_core_ed25519_BYTES);
for (i = 0; i < 500; i++) { for (i = 0; i < 1000; i++) {
randombytes_buf(r, crypto_core_ed25519_UNIFORMBYTES); randombytes_buf(r, crypto_core_ed25519_UNIFORMBYTES);
if (crypto_core_ed25519_from_uniform(p, r) != 0) { if (crypto_core_ed25519_from_uniform(p, r) != 0) {
printf("crypto_core_ed25519_from_uniform() failed\n"); printf("crypto_core_ed25519_from_uniform() failed\n");
@ -63,14 +62,6 @@ main(void)
printf("crypto_core_ed25519_from_uniform() returned an invalid point\n"); printf("crypto_core_ed25519_from_uniform() returned an invalid point\n");
} }
randombytes_buf(h, crypto_core_ed25519_HASHBYTES);
if (crypto_core_ed25519_from_hash(p, h) != 0) {
printf("crypto_core_ed25519_from_hash() failed\n");
}
if (crypto_core_ed25519_is_valid_point(p) == 0) {
printf("crypto_core_ed25519_from_hash() returned an invalid point\n");
}
crypto_core_ed25519_random(p); crypto_core_ed25519_random(p);
if (crypto_core_ed25519_is_valid_point(p) == 0) { if (crypto_core_ed25519_is_valid_point(p) == 0) {
printf("crypto_core_ed25519_random() returned an invalid point\n"); printf("crypto_core_ed25519_random() returned an invalid point\n");
@ -396,7 +387,6 @@ main(void)
sodium_free(p2); sodium_free(p2);
sodium_free(p); sodium_free(p);
sodium_free(r); sodium_free(r);
sodium_free(h);
assert(crypto_core_ed25519_BYTES == crypto_core_ed25519_bytes()); assert(crypto_core_ed25519_BYTES == crypto_core_ed25519_bytes());
assert(crypto_core_ed25519_SCALARBYTES == crypto_core_ed25519_scalarbytes()); assert(crypto_core_ed25519_SCALARBYTES == crypto_core_ed25519_scalarbytes());
@ -404,8 +394,6 @@ main(void)
assert(crypto_core_ed25519_NONREDUCEDSCALARBYTES >= crypto_core_ed25519_SCALARBYTES); assert(crypto_core_ed25519_NONREDUCEDSCALARBYTES >= crypto_core_ed25519_SCALARBYTES);
assert(crypto_core_ed25519_UNIFORMBYTES == crypto_core_ed25519_uniformbytes()); assert(crypto_core_ed25519_UNIFORMBYTES == crypto_core_ed25519_uniformbytes());
assert(crypto_core_ed25519_UNIFORMBYTES >= crypto_core_ed25519_BYTES); assert(crypto_core_ed25519_UNIFORMBYTES >= crypto_core_ed25519_BYTES);
assert(crypto_core_ed25519_HASHBYTES == crypto_core_ed25519_hashbytes());
assert(crypto_core_ed25519_HASHBYTES >= 2 * crypto_core_ed25519_BYTES);
printf("OK\n"); printf("OK\n");