| 1453 | } |
| 1454 | |
| 1455 | int JLSRTP::deriveSessionSaltingKey() |
| 1456 | { |
| 1457 | std::vector<unsigned char> input_vector; // Input vector (built from applicable keyid_XXXs) |
| 1458 | std::vector<unsigned char> keyid_salting; |
| 1459 | unsigned int saltSize = 0; |
| 1460 | int retVal = -1; |
| 1461 | |
| 1462 | switch (_active_crypto) |
| 1463 | { |
| 1464 | case PRIMARY_CRYPTO: |
| 1465 | { |
| 1466 | saltSize = _primary_crypto.master_salt.size(); |
| 1467 | assert(saltSize == JLSRTP_SALTING_KEY_LENGTH); |
| 1468 | if (saltSize == JLSRTP_SALTING_KEY_LENGTH) |
| 1469 | { |
| 1470 | input_vector.clear(); |
| 1471 | |
| 1472 | keyid_salting.clear(); |
| 1473 | keyid_salting.resize(7); |
| 1474 | keyid_salting.push_back(JLSRTP_KEY_SALTING_LABEL); |
| 1475 | keyid_salting.push_back(0x00); |
| 1476 | keyid_salting.push_back(0x00); |
| 1477 | keyid_salting.push_back(0x00); |
| 1478 | keyid_salting.push_back(0x00); |
| 1479 | keyid_salting.push_back(0x00); |
| 1480 | keyid_salting.push_back(0x00); |
| 1481 | |
| 1482 | xorVector(keyid_salting, _primary_crypto.master_salt, input_vector); |
| 1483 | |
| 1484 | retVal = pseudorandomFunction(input_vector, 112, _session_salt_key); |
| 1485 | } |
| 1486 | else |
| 1487 | { |
| 1488 | retVal = -1; |
| 1489 | } |
| 1490 | } |
| 1491 | break; |
| 1492 | |
| 1493 | case SECONDARY_CRYPTO: |
| 1494 | { |
| 1495 | saltSize = _secondary_crypto.master_salt.size(); |
| 1496 | assert(saltSize == JLSRTP_SALTING_KEY_LENGTH); |
| 1497 | if (saltSize == JLSRTP_SALTING_KEY_LENGTH) |
| 1498 | { |
| 1499 | input_vector.clear(); |
| 1500 | |
| 1501 | keyid_salting.clear(); |
| 1502 | keyid_salting.resize(7); |
| 1503 | keyid_salting.push_back(JLSRTP_KEY_SALTING_LABEL); |
| 1504 | keyid_salting.push_back(0x00); |
| 1505 | keyid_salting.push_back(0x00); |
| 1506 | keyid_salting.push_back(0x00); |
| 1507 | keyid_salting.push_back(0x00); |
| 1508 | keyid_salting.push_back(0x00); |
| 1509 | keyid_salting.push_back(0x00); |
| 1510 | |
| 1511 | xorVector(keyid_salting, _secondary_crypto.master_salt, input_vector); |
| 1512 | |