SIGTSTP: fix quiet mode.
[tfcrypt.git] / tfdef.h
diff --git a/tfdef.h b/tfdef.h
index 5450271f12dc9f83989d5e87ecedd0e52d34b656..72c713df4764b331452e311b7c9380c3ec43cf2b 100644 (file)
--- a/tfdef.h
+++ b/tfdef.h
 #define TF_BLOCK_SIZE (TF_SIZE_UNIT * TF_NR_BLOCK_UNITS)
 #define TF_KEY_SIZE (TF_SIZE_UNIT * TF_NR_KEY_UNITS)
 
+#define TF_NR_TWEAK_UNITS 2
+#define TF_NR_TWEAK_BITS 128
+#define TF_TWEAK_SIZE (TF_SIZE_UNIT * TF_NR_TWEAK_UNITS)
+#define TF_TWEAKEY_SIZE (TF_KEY_SIZE - (2 * TF_TWEAK_SIZE))
+#define TF_NR_TWEAKEY_BITS (TF_NR_KEY_BITS - (2 * TF_NR_TWEAK_BITS))
 #define TF_TWEAK_WORD1 (TF_NR_KEY_UNITS-3)
 #define TF_TWEAK_WORD2 (TF_NR_KEY_UNITS-2)
 #define TF_TWEAK_WORD3 (TF_NR_KEY_UNITS-1)
@@ -87,31 +92,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;
        }
 }
 
@@ -127,6 +127,9 @@ void tf_decrypt_block(const void *key, void *out, const void *in);
 
 void tf_ctr_set(void *ctr, const void *sctr, size_t sctrsz);
 void tf_ctr_crypt(const void *key, void *ctr, void *out, const void *in, size_t sz);
+
+void tf_tweak_set(void *key, const void *tweak);
+
 void tf_stream_crypt(struct tfe_stream *tfe, void *out, const void *in, size_t sz);
 void tf_ecb_encrypt(const void *key, void *out, const void *in, size_t sz);
 void tf_ecb_decrypt(const void *key, void *out, const void *in, size_t sz);