Lines Matching refs:ctx
100 static size_t cts128_cs1_encrypt(PROV_CIPHER_CTX *ctx, const unsigned char *in,
108 if (!ctx->hw->cipher(ctx, out, in, len))
119 if (!ctx->hw->cipher(ctx, out - CTS_BLOCK_SIZE + residue, tmp_in.c,
134 static size_t cts128_cs1_decrypt(PROV_CIPHER_CTX *ctx, const unsigned char *in,
143 if (!ctx->hw->cipher(ctx, out, in, len))
150 if (!ctx->hw->cipher(ctx, out, in, len))
156 memcpy(mid_iv.c, ctx->iv, CTS_BLOCK_SIZE);
161 memset(ctx->iv, 0, CTS_BLOCK_SIZE);
162 if (!ctx->hw->cipher(ctx, pt_last.c, in + residue, CTS_BLOCK_SIZE))
182 memcpy(ctx->iv, mid_iv.c, CTS_BLOCK_SIZE);
188 if (!ctx->hw->cipher(ctx, out, ct_mid.c, CTS_BLOCK_SIZE))
192 memcpy(ctx->iv, cn.c, CTS_BLOCK_SIZE);
196 static size_t cts128_cs3_encrypt(PROV_CIPHER_CTX *ctx, const unsigned char *in,
207 return ctx->hw->cipher(ctx, out, in, len) ? len : 0;
214 if (!ctx->hw->cipher(ctx, out, in, len))
223 if (!ctx->hw->cipher(ctx, out - CTS_BLOCK_SIZE, tmp_in.c, CTS_BLOCK_SIZE))
236 static size_t cts128_cs3_decrypt(PROV_CIPHER_CTX *ctx, const unsigned char *in,
247 return ctx->hw->cipher(ctx, out, in, len) ? len : 0;
256 if (!ctx->hw->cipher(ctx, out, in, len))
262 memcpy(mid_iv.c, ctx->iv, CTS_BLOCK_SIZE);
267 memset(ctx->iv, 0, CTS_BLOCK_SIZE);
268 if (!ctx->hw->cipher(ctx, pt_last.c, in, CTS_BLOCK_SIZE))
289 memcpy(ctx->iv, mid_iv.c, CTS_BLOCK_SIZE);
294 if (!ctx->hw->cipher(ctx, out, ct_mid.c, CTS_BLOCK_SIZE))
298 memcpy(ctx->iv, cn.c, CTS_BLOCK_SIZE);
302 static size_t cts128_cs2_encrypt(PROV_CIPHER_CTX *ctx, const unsigned char *in,
307 if (!ctx->hw->cipher(ctx, out, in, len))
312 return cts128_cs3_encrypt(ctx, in, out, len);
315 static size_t cts128_cs2_decrypt(PROV_CIPHER_CTX *ctx, const unsigned char *in,
320 if (!ctx->hw->cipher(ctx, out, in, len))
325 return cts128_cs3_decrypt(ctx, in, out, len);
332 PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
348 if (ctx->updated == 1)
351 if (ctx->enc) {
352 if (ctx->cts_mode == CTS_CS1)
353 sz = cts128_cs1_encrypt(ctx, in, out, inl);
354 else if (ctx->cts_mode == CTS_CS2)
355 sz = cts128_cs2_encrypt(ctx, in, out, inl);
356 else if (ctx->cts_mode == CTS_CS3)
357 sz = cts128_cs3_encrypt(ctx, in, out, inl);
359 if (ctx->cts_mode == CTS_CS1)
360 sz = cts128_cs1_decrypt(ctx, in, out, inl);
361 else if (ctx->cts_mode == CTS_CS2)
362 sz = cts128_cs2_decrypt(ctx, in, out, inl);
363 else if (ctx->cts_mode == CTS_CS3)
364 sz = cts128_cs3_decrypt(ctx, in, out, inl);
368 ctx->updated = 1; /* Stop multiple updates being allowed */