+static unsigned int crypto_ctxsize(struct crypto_alg *alg, int flags)
+{
+ unsigned int len;
+
+ switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) {
+ default:
+ BUG();
+
+ case CRYPTO_ALG_TYPE_CIPHER:
+ len = crypto_cipher_ctxsize(alg, flags);
+ break;
+
+ case CRYPTO_ALG_TYPE_DIGEST:
+ len = crypto_digest_ctxsize(alg, flags);
+ break;
+
+ case CRYPTO_ALG_TYPE_COMPRESS:
+ len = crypto_compress_ctxsize(alg, flags);
+ break;
+ }
+
+ return len + alg->cra_alignmask;
+}
+