Home | History | Annotate | Download | only in ocb

Lines Matching refs:ocb

14    OCB implementation, initialize state, by Tom St Denis
39 Initialize an OCB context.
40 @param ocb [out] The destination of the OCB state
47 int ocb_init(ocb_state *ocb, int cipher,
52 LTC_ARGCHK(ocb != NULL);
62 ocb->block_len = cipher_descriptor[cipher].block_length;
64 if (polys[poly].len == ocb->block_len) {
68 if (polys[poly].len != ocb->block_len) {
73 if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) {
78 zeromem(ocb->L, ocb->block_len);
79 if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->L, ocb->L, &ocb->key)) != CRYPT_OK) {
84 for (x = 0; x < ocb->block_len; x++) {
85 ocb->R[x] = ocb->L[x] ^ nonce[x];
87 if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->R, ocb->R, &ocb->key)) != CRYPT_OK) {
92 XMEMCPY(ocb->Ls[0], ocb->L, ocb->block_len);
94 m = ocb->Ls[x-1][0] >> 7;
95 for (y = 0; y < ocb->block_len-1; y++) {
96 ocb->Ls[x][y] = ((ocb->Ls[x-1][y] << 1) | (ocb->Ls[x-1][y+1] >> 7)) & 255;
98 ocb->Ls[x][ocb->block_len-1] = (ocb->Ls[x-1][ocb->block_len-1] << 1) & 255;
101 for (y = 0; y < ocb->block_len; y++) {
102 ocb->Ls[x][y] ^= polys[poly].poly_mul[y];
108 m = ocb->L[ocb->block_len-1] & 1;
111 for (x = ocb->block_len - 1; x > 0; x--) {
112 ocb->Lr[x] = ((ocb->L[x] >> 1) | (ocb->L[x-1] << 7)) & 255;
114 ocb->Lr[0] = ocb->L[0] >> 1;
117 for (x = 0; x < ocb->block_len; x++) {
118 ocb->Lr[x] ^= polys[poly].poly_div[x];
123 zeromem(ocb->Li, ocb->block_len);
124 zeromem(ocb->checksum, ocb->block_len);
127 ocb->block_index = 1;
128 ocb->cipher = cipher;
135 /* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_init.c,v $ */