mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-02-02 04:51:10 +00:00
Remove num_bytes member from curve structure
Reduces code size and size of the structure.
This commit is contained in:
parent
1765933ab2
commit
72c1764c00
|
@ -124,7 +124,6 @@ typedef uint64_t uECC_dword_t;
|
|||
struct uECC_Curve_t;
|
||||
typedef const struct uECC_Curve_t * uECC_Curve;
|
||||
struct uECC_Curve_t {
|
||||
wordcount_t num_bytes;
|
||||
bitcount_t num_n_bits;
|
||||
uECC_word_t p[NUM_ECC_WORDS];
|
||||
uECC_word_t n[NUM_ECC_WORDS];
|
||||
|
@ -159,7 +158,6 @@ void vli_mmod_fast_secp256r1(unsigned int *result, unsigned int *product);
|
|||
|
||||
/* definition of curve NIST p-256: */
|
||||
static const struct uECC_Curve_t curve_secp256r1 = {
|
||||
NUM_ECC_BYTES,
|
||||
256, /* num_n_bits */ {
|
||||
BYTES_TO_WORDS_8(FF, FF, FF, FF, FF, FF, FF, FF),
|
||||
BYTES_TO_WORDS_8(FF, FF, FF, FF, 00, 00, 00, 00),
|
||||
|
|
|
@ -93,7 +93,8 @@ int uECC_curve_private_key_size(uECC_Curve curve)
|
|||
|
||||
int uECC_curve_public_key_size(uECC_Curve curve)
|
||||
{
|
||||
return 2 * curve->num_bytes;
|
||||
(void) curve;
|
||||
return 2 * NUM_ECC_BYTES;
|
||||
}
|
||||
|
||||
void uECC_vli_clear(uECC_word_t *vli)
|
||||
|
@ -1070,11 +1071,11 @@ int uECC_valid_public_key(const uint8_t *public_key, uECC_Curve curve)
|
|||
|
||||
uECC_word_t _public[NUM_ECC_WORDS * 2];
|
||||
|
||||
uECC_vli_bytesToNative(_public, public_key, curve->num_bytes);
|
||||
uECC_vli_bytesToNative(_public, public_key, NUM_ECC_BYTES);
|
||||
uECC_vli_bytesToNative(
|
||||
_public + NUM_ECC_WORDS,
|
||||
public_key + curve->num_bytes,
|
||||
curve->num_bytes);
|
||||
public_key + NUM_ECC_BYTES,
|
||||
NUM_ECC_BYTES);
|
||||
|
||||
if (memcmp(_public, curve->G, NUM_ECC_WORDS * 2) == 0) {
|
||||
return -4;
|
||||
|
@ -1109,10 +1110,10 @@ int uECC_compute_public_key(const uint8_t *private_key, uint8_t *public_key,
|
|||
return 0;
|
||||
}
|
||||
|
||||
uECC_vli_nativeToBytes(public_key, curve->num_bytes, _public);
|
||||
uECC_vli_nativeToBytes(public_key, NUM_ECC_BYTES, _public);
|
||||
uECC_vli_nativeToBytes(
|
||||
public_key +
|
||||
curve->num_bytes, curve->num_bytes, _public + NUM_ECC_WORDS);
|
||||
NUM_ECC_BYTES, NUM_ECC_BYTES, _public + NUM_ECC_WORDS);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -92,10 +92,10 @@ int uECC_make_key_with_d(uint8_t *public_key, uint8_t *private_key,
|
|||
BITS_TO_BYTES(curve->num_n_bits),
|
||||
_private);
|
||||
uECC_vli_nativeToBytes(public_key,
|
||||
curve->num_bytes,
|
||||
NUM_ECC_BYTES,
|
||||
_public);
|
||||
uECC_vli_nativeToBytes(public_key + curve->num_bytes,
|
||||
curve->num_bytes,
|
||||
uECC_vli_nativeToBytes(public_key + NUM_ECC_BYTES,
|
||||
NUM_ECC_BYTES,
|
||||
_public + NUM_ECC_WORDS);
|
||||
|
||||
/* erasing temporary buffer used to store secret: */
|
||||
|
@ -133,10 +133,10 @@ int uECC_make_key(uint8_t *public_key, uint8_t *private_key, uECC_Curve curve)
|
|||
BITS_TO_BYTES(curve->num_n_bits),
|
||||
_private);
|
||||
uECC_vli_nativeToBytes(public_key,
|
||||
curve->num_bytes,
|
||||
NUM_ECC_BYTES,
|
||||
_public);
|
||||
uECC_vli_nativeToBytes(public_key + curve->num_bytes,
|
||||
curve->num_bytes,
|
||||
uECC_vli_nativeToBytes(public_key + NUM_ECC_BYTES,
|
||||
NUM_ECC_BYTES,
|
||||
_public + NUM_ECC_WORDS);
|
||||
|
||||
/* erasing temporary buffer that stored secret: */
|
||||
|
@ -155,7 +155,7 @@ int uECC_shared_secret(const uint8_t *public_key, const uint8_t *private_key,
|
|||
uECC_word_t _public[NUM_ECC_WORDS * 2];
|
||||
uECC_word_t _private[NUM_ECC_WORDS];
|
||||
wordcount_t num_words = NUM_ECC_WORDS;
|
||||
wordcount_t num_bytes = curve->num_bytes;
|
||||
wordcount_t num_bytes = NUM_ECC_BYTES;
|
||||
int r;
|
||||
|
||||
/* Converting buffers to correct bit order: */
|
||||
|
|
|
@ -147,7 +147,7 @@ int uECC_sign_with_k(const uint8_t *private_key, const uint8_t *message_hash,
|
|||
uECC_vli_modInv(k, k, curve->n); /* k = 1 / k' */
|
||||
uECC_vli_modMult(k, k, tmp, curve->n); /* k = 1 / k */
|
||||
|
||||
uECC_vli_nativeToBytes(signature, curve->num_bytes, p); /* store r */
|
||||
uECC_vli_nativeToBytes(signature, NUM_ECC_BYTES, p); /* store r */
|
||||
|
||||
/* tmp = d: */
|
||||
uECC_vli_bytesToNative(tmp, private_key, BITS_TO_BYTES(curve->num_n_bits));
|
||||
|
@ -159,11 +159,11 @@ int uECC_sign_with_k(const uint8_t *private_key, const uint8_t *message_hash,
|
|||
bits2int(tmp, message_hash, hash_size, curve);
|
||||
uECC_vli_modAdd(s, tmp, s, curve->n); /* s = e + r*d */
|
||||
uECC_vli_modMult(s, s, k, curve->n); /* s = (e + r*d) / k */
|
||||
if (uECC_vli_numBits(s) > (bitcount_t)curve->num_bytes * 8) {
|
||||
if (uECC_vli_numBits(s) > (bitcount_t)NUM_ECC_BYTES * 8) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uECC_vli_nativeToBytes(signature + curve->num_bytes, curve->num_bytes, s);
|
||||
uECC_vli_nativeToBytes(signature + NUM_ECC_BYTES, NUM_ECC_BYTES, s);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -229,11 +229,11 @@ int uECC_verify(const uint8_t *public_key, const uint8_t *message_hash,
|
|||
r[num_n_words - 1] = 0;
|
||||
s[num_n_words - 1] = 0;
|
||||
|
||||
uECC_vli_bytesToNative(_public, public_key, curve->num_bytes);
|
||||
uECC_vli_bytesToNative(_public + num_words, public_key + curve->num_bytes,
|
||||
curve->num_bytes);
|
||||
uECC_vli_bytesToNative(r, signature, curve->num_bytes);
|
||||
uECC_vli_bytesToNative(s, signature + curve->num_bytes, curve->num_bytes);
|
||||
uECC_vli_bytesToNative(_public, public_key, NUM_ECC_BYTES);
|
||||
uECC_vli_bytesToNative(_public + num_words, public_key + NUM_ECC_BYTES,
|
||||
NUM_ECC_BYTES);
|
||||
uECC_vli_bytesToNative(r, signature, NUM_ECC_BYTES);
|
||||
uECC_vli_bytesToNative(s, signature + NUM_ECC_BYTES, NUM_ECC_BYTES);
|
||||
|
||||
/* r, s must not be 0. */
|
||||
if (uECC_vli_isZero(r) || uECC_vli_isZero(s)) {
|
||||
|
|
Loading…
Reference in a new issue