fc = ctx->func; if (ctx->first_message_part)
fc |= CPACF_KIMD_NIP;
/* process as many blocks as possible */
n = (len / bsize) * bsize;
ctx->count += n; switch (ctx->func) { case CPACF_KLMD_SHA_512: case CPACF_KLMD_SHA3_384: if (ctx->count < n)
ctx->sha512.count_hi++; break;
}
cpacf_kimd(fc, ctx->state, data, n);
ctx->first_message_part = 0; return len - n;
}
EXPORT_SYMBOL_GPL(s390_sha_update_blocks);
staticint s390_crypto_shash_parmsize(int func)
{ switch (func) { case CPACF_KLMD_SHA_1: return 20; case CPACF_KLMD_SHA_256: return 32; case CPACF_KLMD_SHA_512: return 64; case CPACF_KLMD_SHA3_224: case CPACF_KLMD_SHA3_256: case CPACF_KLMD_SHA3_384: case CPACF_KLMD_SHA3_512: return 200; default: return -EINVAL;
}
}
/* set total msg bit length (mbl) in CPACF parmblock */ switch (ctx->func) { case CPACF_KLMD_SHA_512: /* The SHA512 parmblock has a 128-bit mbl field. */ if (ctx->count < len)
ctx->sha512.count_hi++;
ctx->sha512.count_hi <<= 3;
ctx->sha512.count_hi |= ctx->count >> 61;
mbl_offset += sizeof(u64) / sizeof(u32);
fallthrough; case CPACF_KLMD_SHA_1: case CPACF_KLMD_SHA_256:
memcpy(ctx->state + mbl_offset, &bits, sizeof(bits)); break; case CPACF_KLMD_SHA3_224: case CPACF_KLMD_SHA3_256: case CPACF_KLMD_SHA3_384: case CPACF_KLMD_SHA3_512: break; default: return -EINVAL;
}
fc = ctx->func;
fc |= test_facility(86) ? CPACF_KLMD_DUFOP : 0; if (ctx->first_message_part)
fc |= CPACF_KLMD_NIP;
cpacf_klmd(fc, ctx->state, src, len);
/* copy digest to out */
memcpy(out, ctx->state, crypto_shash_digestsize(desc->tfm));
return 0;
}
EXPORT_SYMBOL_GPL(s390_sha_finup);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("s390 SHA cipher common functions");
Messung V0.5
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.