Commit ce64feb
committed
fix: check key type in C_SignInit/C_VerifyInit to prevent crash
Passing a wrong asymmetric key type (e.g. EC key) to a mismatched
mechanism (e.g. CKM_RSA_PKCS) caused a crash (segfault or abort)
because the code tried to read RSA attributes from an EC key object,
then passed invalid data to OpenSSL.
Add key type validation after the mechanism switch in both functions,
returning CKR_KEY_TYPE_INCONSISTENT on mismatch. Also convert the
GOST catch-all else branch to an explicit else-if(isGOST) check.
Regression tests use cross-matched asymmetric keys (EC key with RSA
mechanisms, RSA key with ECDSA/EdDSA mechanisms) to verify the fix.
Without the fix, C_SignInit accepts the wrong key type and the
subsequent C_Sign crashes.1 parent 3e6e6c3 commit ce64feb
File tree
3 files changed
+222
-16
lines changed- src/lib
- test
3 files changed
+222
-16
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4190 | 4190 | | |
4191 | 4191 | | |
4192 | 4192 | | |
| 4193 | + | |
| 4194 | + | |
| 4195 | + | |
4193 | 4196 | | |
4194 | 4197 | | |
4195 | 4198 | | |
| |||
4202 | 4205 | | |
4203 | 4206 | | |
4204 | 4207 | | |
| 4208 | + | |
| 4209 | + | |
| 4210 | + | |
4205 | 4211 | | |
4206 | 4212 | | |
4207 | 4213 | | |
4208 | 4214 | | |
4209 | 4215 | | |
4210 | 4216 | | |
4211 | | - | |
4212 | 4217 | | |
4213 | 4218 | | |
4214 | 4219 | | |
| |||
4463 | 4468 | | |
4464 | 4469 | | |
4465 | 4470 | | |
| 4471 | + | |
4466 | 4472 | | |
4467 | 4473 | | |
4468 | 4474 | | |
4469 | 4475 | | |
| 4476 | + | |
4470 | 4477 | | |
4471 | 4478 | | |
4472 | 4479 | | |
| |||
4478 | 4485 | | |
4479 | 4486 | | |
4480 | 4487 | | |
4481 | | - | |
4482 | | - | |
4483 | 4488 | | |
4484 | 4489 | | |
4485 | 4490 | | |
| |||
4527 | 4532 | | |
4528 | 4533 | | |
4529 | 4534 | | |
| 4535 | + | |
| 4536 | + | |
| 4537 | + | |
| 4538 | + | |
| 4539 | + | |
| 4540 | + | |
| 4541 | + | |
| 4542 | + | |
| 4543 | + | |
| 4544 | + | |
| 4545 | + | |
| 4546 | + | |
| 4547 | + | |
| 4548 | + | |
| 4549 | + | |
| 4550 | + | |
| 4551 | + | |
| 4552 | + | |
4530 | 4553 | | |
4531 | 4554 | | |
4532 | 4555 | | |
| |||
4630 | 4653 | | |
4631 | 4654 | | |
4632 | 4655 | | |
4633 | | - | |
4634 | | - | |
4635 | 4656 | | |
| 4657 | + | |
| 4658 | + | |
4636 | 4659 | | |
4637 | 4660 | | |
4638 | 4661 | | |
| |||
4649 | 4672 | | |
4650 | 4673 | | |
4651 | 4674 | | |
4652 | | - | |
4653 | | - | |
| 4675 | + | |
4654 | 4676 | | |
4655 | | - | |
| 4677 | + | |
| 4678 | + | |
| 4679 | + | |
| 4680 | + | |
4656 | 4681 | | |
4657 | 4682 | | |
4658 | 4683 | | |
| |||
5269 | 5294 | | |
5270 | 5295 | | |
5271 | 5296 | | |
| 5297 | + | |
| 5298 | + | |
| 5299 | + | |
5272 | 5300 | | |
5273 | 5301 | | |
5274 | 5302 | | |
| |||
5281 | 5309 | | |
5282 | 5310 | | |
5283 | 5311 | | |
| 5312 | + | |
| 5313 | + | |
| 5314 | + | |
5284 | 5315 | | |
5285 | 5316 | | |
5286 | 5317 | | |
5287 | 5318 | | |
5288 | 5319 | | |
5289 | 5320 | | |
5290 | | - | |
5291 | 5321 | | |
5292 | 5322 | | |
5293 | 5323 | | |
| |||
5540 | 5570 | | |
5541 | 5571 | | |
5542 | 5572 | | |
| 5573 | + | |
5543 | 5574 | | |
5544 | 5575 | | |
5545 | 5576 | | |
5546 | 5577 | | |
| 5578 | + | |
5547 | 5579 | | |
5548 | 5580 | | |
5549 | 5581 | | |
| |||
5555 | 5587 | | |
5556 | 5588 | | |
5557 | 5589 | | |
5558 | | - | |
5559 | | - | |
5560 | 5590 | | |
5561 | 5591 | | |
5562 | 5592 | | |
| |||
5604 | 5634 | | |
5605 | 5635 | | |
5606 | 5636 | | |
| 5637 | + | |
| 5638 | + | |
| 5639 | + | |
| 5640 | + | |
| 5641 | + | |
| 5642 | + | |
| 5643 | + | |
| 5644 | + | |
| 5645 | + | |
| 5646 | + | |
| 5647 | + | |
| 5648 | + | |
| 5649 | + | |
| 5650 | + | |
| 5651 | + | |
| 5652 | + | |
| 5653 | + | |
| 5654 | + | |
5607 | 5655 | | |
5608 | 5656 | | |
5609 | 5657 | | |
| |||
5707 | 5755 | | |
5708 | 5756 | | |
5709 | 5757 | | |
5710 | | - | |
5711 | | - | |
5712 | 5758 | | |
| 5759 | + | |
| 5760 | + | |
5713 | 5761 | | |
5714 | 5762 | | |
5715 | 5763 | | |
| |||
5726 | 5774 | | |
5727 | 5775 | | |
5728 | 5776 | | |
5729 | | - | |
5730 | | - | |
| 5777 | + | |
5731 | 5778 | | |
5732 | | - | |
| 5779 | + | |
| 5780 | + | |
| 5781 | + | |
| 5782 | + | |
5733 | 5783 | | |
5734 | 5784 | | |
5735 | 5785 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1285 | 1285 | | |
1286 | 1286 | | |
1287 | 1287 | | |
| 1288 | + | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
| 1433 | + | |
| 1434 | + | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
| 56 | + | |
55 | 57 | | |
56 | 58 | | |
57 | 59 | | |
| |||
66 | 68 | | |
67 | 69 | | |
68 | 70 | | |
| 71 | + | |
| 72 | + | |
69 | 73 | | |
70 | 74 | | |
71 | 75 | | |
| |||
0 commit comments