X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfdef.h;h=463e5fb7c0f4d83be1549ef8bdaa7b0666c8658c;hb=0f0e095f408d4d867a056dffc9d20d853d761489;hp=5450271f12dc9f83989d5e87ecedd0e52d34b656;hpb=0c9c04e690c76bcaa3c9e96b903fa9b204b0f570;p=tfcrypt.git diff --git a/tfdef.h b/tfdef.h index 5450271..463e5fb 100644 --- a/tfdef.h +++ b/tfdef.h @@ -87,31 +87,26 @@ static inline void data_to_words(void *p, size_t l) #endif } -static inline void ctr_inc(TF_UNIT_TYPE *x, size_t l) +static inline void ctr_inc(TF_UNIT_TYPE *x, size_t xl) { - size_t i; + size_t z; - for (i = 0; i < l; i++) { - x[i] = ((x[i] + (TF_UNIT_TYPE)1) & ((TF_UNIT_TYPE)~0)); - if (x[i]) break; + for (z = 0; z < xl; z++) { + x[z] = ((x[z] + (TF_UNIT_TYPE)1) & ((TF_UNIT_TYPE)~0)); + if (x[z]) break; } } -static inline void ctr_add(TF_UNIT_TYPE *x, const TF_UNIT_TYPE *y, size_t l) +static inline void ctr_add(TF_UNIT_TYPE *x, size_t xl, const TF_UNIT_TYPE *y, size_t yl) { - size_t i, f = 0; + size_t z, cf; TF_UNIT_TYPE t; - for (i = 0; i < l; i++) { - t = x[i]; - x[i] += y[i]; x[i] &= ((TF_UNIT_TYPE)~0); - if (x[i] < t) { -_again: f++; - t = x[f-i]; - x[f-i]++; - if (x[f-i] < t) goto _again; - else f = 0; - } + for (z = 0, cf = 0; z < xl; z++) { + t = x[z] + (z >= yl ? (TF_UNIT_TYPE)0 : y[z]) + cf; + if (cf) cf = (x[z] >= t ? 1 : 0); + else cf = (x[z] > t ? 1 : 0); + x[z] = t; } }