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

Function swcr_newsession

freebsd/opencrypto/cryptosoft.c:1308–1409  ·  view source on GitHub ↗

* Generate a new software session. */

Source from the content-addressed store, hash-verified

1306 * Generate a new software session.
1307 */
1308static int
1309swcr_newsession(device_t dev, crypto_session_t cses,
1310 const struct crypto_session_params *csp)
1311{
1312 struct swcr_session *ses;
1313 struct swcr_encdec *swe;
1314 struct swcr_auth *swa;
1315 struct comp_algo *cxf;
1316 int error;
1317
1318 ses = crypto_get_driver_session(cses);
1319 mtx_init(&ses->swcr_lock, "swcr session lock", NULL, MTX_DEF);
1320
1321 error = 0;
1322 swe = &ses->swcr_encdec;
1323 swa = &ses->swcr_auth;
1324 switch (csp->csp_mode) {
1325 case CSP_MODE_COMPRESS:
1326 switch (csp->csp_cipher_alg) {
1327 case CRYPTO_DEFLATE_COMP:
1328 cxf = &comp_algo_deflate;
1329 break;
1330#ifdef INVARIANTS
1331 default:
1332 panic("bad compression algo");
1333#endif
1334 }
1335 ses->swcr_compdec.sw_cxf = cxf;
1336 ses->swcr_process = swcr_compdec;
1337 break;
1338 case CSP_MODE_CIPHER:
1339 switch (csp->csp_cipher_alg) {
1340 case CRYPTO_NULL_CBC:
1341 ses->swcr_process = swcr_null;
1342 break;
1343#ifdef INVARIANTS
1344 case CRYPTO_AES_NIST_GCM_16:
1345 case CRYPTO_AES_CCM_16:
1346 panic("bad cipher algo");
1347#endif
1348 default:
1349 error = swcr_setup_cipher(ses, csp);
1350 if (error == 0)
1351 ses->swcr_process = swcr_encdec;
1352 }
1353 break;
1354 case CSP_MODE_DIGEST:
1355 error = swcr_setup_auth(ses, csp);
1356 break;
1357 case CSP_MODE_AEAD:
1358 switch (csp->csp_cipher_alg) {
1359 case CRYPTO_AES_NIST_GCM_16:
1360 error = swcr_setup_gcm(ses, csp);
1361 if (error == 0)
1362 ses->swcr_process = swcr_gcm;
1363 break;
1364 case CRYPTO_AES_CCM_16:
1365 error = swcr_setup_ccm(ses, csp);

Callers

nothing calls this directly

Calls 8

mtx_initFunction · 0.85
swcr_setup_cipherFunction · 0.85
swcr_setup_authFunction · 0.85
swcr_setup_gcmFunction · 0.85
swcr_setup_ccmFunction · 0.85
swcr_freesessionFunction · 0.85
panicFunction · 0.50

Tested by

no test coverage detected