Lines Matching refs:ctx
95 #define ABSORB(ctx, idx, v) do { ctx->state[(idx) >> 3] ^= ((uint64_t) (v)) << (((idx) & 0x7) << 3); \
97 #define SQUEEZE(ctx, idx) ((uint8_t) (ctx->state[(idx) >> 3] >> (((idx) & 0x7) << 3)))
101 static void keccak_f1600(mbedtls_sha3_context *ctx)
104 uint64_t *s = ctx->state;
247 void mbedtls_sha3_init(mbedtls_sha3_context *ctx)
249 memset(ctx, 0, sizeof(mbedtls_sha3_context));
252 void mbedtls_sha3_free(mbedtls_sha3_context *ctx)
254 if (ctx == NULL) {
258 mbedtls_platform_zeroize(ctx, sizeof(mbedtls_sha3_context));
270 int mbedtls_sha3_starts(mbedtls_sha3_context *ctx, mbedtls_sha3_id id)
274 ctx->olen = 224 / 8;
275 ctx->max_block_size = 1152 / 8;
278 ctx->olen = 256 / 8;
279 ctx->max_block_size = 1088 / 8;
282 ctx->olen = 384 / 8;
283 ctx->max_block_size = 832 / 8;
286 ctx->olen = 512 / 8;
287 ctx->max_block_size = 576 / 8;
293 memset(ctx->state, 0, sizeof(ctx->state));
294 ctx->index = 0;
302 int mbedtls_sha3_update(mbedtls_sha3_context *ctx,
308 int align_bytes = 8 - (ctx->index % 8);
311 ABSORB(ctx, ctx->index, *input++);
313 ctx->index++;
315 if ((ctx->index = ctx->index % ctx->max_block_size) == 0) {
316 keccak_f1600(ctx);
322 ABSORB(ctx, ctx->index, MBEDTLS_GET_UINT64_LE(input, 0));
325 if ((ctx->index = (ctx->index + 8) % ctx->max_block_size) == 0) {
326 keccak_f1600(ctx);
333 ABSORB(ctx, ctx->index, *input++);
334 if ((ctx->index = (ctx->index + 1) % ctx->max_block_size) == 0) {
335 keccak_f1600(ctx);
342 int mbedtls_sha3_finish(mbedtls_sha3_context *ctx,
348 if (ctx->olen > 0) {
349 if (ctx->olen > olen) {
353 olen = ctx->olen;
356 ABSORB(ctx, ctx->index, XOR_BYTE);
357 ABSORB(ctx, ctx->max_block_size - 1, 0x80);
358 keccak_f1600(ctx);
359 ctx->index = 0;
362 *output++ = SQUEEZE(ctx, ctx->index);
364 if ((ctx->index = (ctx->index + 1) % ctx->max_block_size) == 0) {
365 keccak_f1600(ctx);
372 mbedtls_sha3_free(ctx);
383 mbedtls_sha3_context ctx;
385 mbedtls_sha3_init(&ctx);
388 if ((ret = mbedtls_sha3_starts(&ctx, id)) != 0) {
392 if ((ret = mbedtls_sha3_update(&ctx, input, ilen)) != 0) {
396 if ((ret = mbedtls_sha3_finish(&ctx, output, olen)) != 0) {
401 mbedtls_sha3_free(&ctx);
592 mbedtls_sha3_context ctx;
603 mbedtls_sha3_init(&ctx);
605 result = mbedtls_sha3_starts(&ctx, id);
614 result = mbedtls_sha3_update(&ctx, buffer, 1000);
624 result = mbedtls_sha3_finish(&ctx, hash, sizeof(hash));
661 mbedtls_sha3_free(&ctx);