#endif
}
+static inline void xor_block(void *dst, const void *src, size_t sz)
+{
+ const size_t *sx = (const size_t *)src;
+ const TF_BYTE_TYPE *usx = (const TF_BYTE_TYPE *)src;
+ size_t *dx = (size_t *)dst;
+ TF_BYTE_TYPE *udx = (TF_BYTE_TYPE *)dst;
+ size_t sl = sz;
+
+ for (sl = 0; sl < (sz / sizeof(size_t)); sl++) dx[sl] ^= sx[sl];
+ if (sz - (sl * sizeof(size_t))) for (sl *= sizeof(size_t); sl < sz; sl++) udx[sl] ^= usx[sl];
+}
+
static inline void ctr_inc(TF_UNIT_TYPE *x, size_t xl)
{
size_t z;
void tf_ecb_decrypt(const void *key, void *out, const void *in, size_t sz);
void tf_cbc_encrypt(const void *key, void *iv, void *out, const void *in, size_t sz);
void tf_cbc_decrypt(const void *key, void *iv, void *out, const void *in, size_t sz);
+void tf_pcbc_encrypt(const void *key, void *iv, void *out, const void *in, size_t sz);
+void tf_pcbc_decrypt(const void *key, void *iv, void *out, const void *in, size_t sz);
void tf_xts_encrypt(const void *keyx, const void *keyz, void *ctr, void *out, const void *in, size_t sz, size_t bpi);
void tf_xts_decrypt(const void *keyx, const void *keyz, void *ctr, void *out, const void *in, size_t sz, size_t bpi);