Lines Matching refs:ocb
47 int ocb_init(ocb_state *ocb, int cipher, in ocb_init() argument
52 LTC_ARGCHK(ocb != NULL); in ocb_init()
62 ocb->block_len = cipher_descriptor[cipher].block_length; in ocb_init()
64 if (polys[poly].len == ocb->block_len) { in ocb_init()
68 if (polys[poly].len != ocb->block_len) { in ocb_init()
73 if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) { in ocb_init()
78 zeromem(ocb->L, ocb->block_len); in ocb_init()
79 if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->L, ocb->L, &ocb->key)) != CRYPT_OK) { in ocb_init()
84 for (x = 0; x < ocb->block_len; x++) { in ocb_init()
85 ocb->R[x] = ocb->L[x] ^ nonce[x]; in ocb_init()
87 if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->R, ocb->R, &ocb->key)) != CRYPT_OK) { in ocb_init()
92 XMEMCPY(ocb->Ls[0], ocb->L, ocb->block_len); in ocb_init()
94 m = ocb->Ls[x-1][0] >> 7; in ocb_init()
95 for (y = 0; y < ocb->block_len-1; y++) { in ocb_init()
96 ocb->Ls[x][y] = ((ocb->Ls[x-1][y] << 1) | (ocb->Ls[x-1][y+1] >> 7)) & 255; in ocb_init()
98 ocb->Ls[x][ocb->block_len-1] = (ocb->Ls[x-1][ocb->block_len-1] << 1) & 255; in ocb_init()
101 for (y = 0; y < ocb->block_len; y++) { in ocb_init()
102 ocb->Ls[x][y] ^= polys[poly].poly_mul[y]; in ocb_init()
108 m = ocb->L[ocb->block_len-1] & 1; in ocb_init()
111 for (x = ocb->block_len - 1; x > 0; x--) { in ocb_init()
112 ocb->Lr[x] = ((ocb->L[x] >> 1) | (ocb->L[x-1] << 7)) & 255; in ocb_init()
114 ocb->Lr[0] = ocb->L[0] >> 1; in ocb_init()
117 for (x = 0; x < ocb->block_len; x++) { in ocb_init()
118 ocb->Lr[x] ^= polys[poly].poly_div[x]; in ocb_init()
123 zeromem(ocb->Li, ocb->block_len); in ocb_init()
124 zeromem(ocb->checksum, ocb->block_len); in ocb_init()
127 ocb->block_index = 1; in ocb_init()
128 ocb->cipher = cipher; in ocb_init()