MCPcopy Create free account
hub / github.com/F-Stack/f-stack / crp_sanity

Function crp_sanity

freebsd/opencrypto/crypto.c:1260–1406  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1258}
1259
1260static void
1261crp_sanity(struct cryptop *crp)
1262{
1263 struct crypto_session_params *csp;
1264 struct crypto_buffer *out;
1265 size_t ilen, len, olen;
1266
1267 KASSERT(crp->crp_session != NULL, ("incoming crp without a session"));
1268 KASSERT(crp->crp_obuf.cb_type >= CRYPTO_BUF_NONE &&
1269 crp->crp_obuf.cb_type <= CRYPTO_BUF_LAST,
1270 ("incoming crp with invalid output buffer type"));
1271 KASSERT(crp->crp_etype == 0, ("incoming crp with error"));
1272 KASSERT(!(crp->crp_flags & CRYPTO_F_DONE),
1273 ("incoming crp already done"));
1274
1275 csp = &crp->crp_session->csp;
1276 cb_sanity(&crp->crp_buf, "input");
1277 ilen = crypto_buffer_len(&crp->crp_buf);
1278 olen = ilen;
1279 out = NULL;
1280 if (csp->csp_flags & CSP_F_SEPARATE_OUTPUT) {
1281 if (crp->crp_obuf.cb_type != CRYPTO_BUF_NONE) {
1282 cb_sanity(&crp->crp_obuf, "output");
1283 out = &crp->crp_obuf;
1284 olen = crypto_buffer_len(out);
1285 }
1286 } else
1287 KASSERT(crp->crp_obuf.cb_type == CRYPTO_BUF_NONE,
1288 ("incoming crp with separate output buffer "
1289 "but no session support"));
1290
1291 switch (csp->csp_mode) {
1292 case CSP_MODE_COMPRESS:
1293 KASSERT(crp->crp_op == CRYPTO_OP_COMPRESS ||
1294 crp->crp_op == CRYPTO_OP_DECOMPRESS,
1295 ("invalid compression op %x", crp->crp_op));
1296 break;
1297 case CSP_MODE_CIPHER:
1298 KASSERT(crp->crp_op == CRYPTO_OP_ENCRYPT ||
1299 crp->crp_op == CRYPTO_OP_DECRYPT,
1300 ("invalid cipher op %x", crp->crp_op));
1301 break;
1302 case CSP_MODE_DIGEST:
1303 KASSERT(crp->crp_op == CRYPTO_OP_COMPUTE_DIGEST ||
1304 crp->crp_op == CRYPTO_OP_VERIFY_DIGEST,
1305 ("invalid digest op %x", crp->crp_op));
1306 break;
1307 case CSP_MODE_AEAD:
1308 KASSERT(crp->crp_op ==
1309 (CRYPTO_OP_ENCRYPT | CRYPTO_OP_COMPUTE_DIGEST) ||
1310 crp->crp_op ==
1311 (CRYPTO_OP_DECRYPT | CRYPTO_OP_VERIFY_DIGEST),
1312 ("invalid AEAD op %x", crp->crp_op));
1313 if (csp->csp_cipher_alg == CRYPTO_AES_NIST_GCM_16)
1314 KASSERT(crp->crp_flags & CRYPTO_F_IV_SEPARATE,
1315 ("GCM without a separate IV"));
1316 if (csp->csp_cipher_alg == CRYPTO_AES_CCM_16)
1317 KASSERT(crp->crp_flags & CRYPTO_F_IV_SEPARATE,

Callers 1

crypto_dispatchFunction · 0.85

Calls 2

cb_sanityFunction · 0.85
crypto_buffer_lenFunction · 0.85

Tested by

no test coverage detected