std::string SrtpCryptoSuiteToName(int crypto_suite) { switch (crypto_suite) { case kSrtpAes128CmSha1_80: return"AES_CM_128_HMAC_SHA1_80"; case kSrtpAes128CmSha1_32: return"AES_CM_128_HMAC_SHA1_32"; case kSrtpAeadAes128Gcm: return"AEAD_AES_128_GCM"; case kSrtpAeadAes256Gcm: return"AEAD_AES_256_GCM"; default: return std::string();
}
}
bool GetSrtpKeyAndSaltLengths(int crypto_suite, int* key_length, int* salt_length) { switch (crypto_suite) { case kSrtpAes128CmSha1_32: case kSrtpAes128CmSha1_80: // SRTP_AES128_CM_HMAC_SHA1_32 and SRTP_AES128_CM_HMAC_SHA1_80 are defined // in RFC 5764 to use a 128 bits key and 112 bits salt for the cipher.
*key_length = 16;
*salt_length = 14; break; case kSrtpAeadAes128Gcm: // kSrtpAeadAes128Gcm is defined in RFC 7714 to use a 128 bits key and // a 96 bits salt for the cipher.
*key_length = 16;
*salt_length = 12; break; case kSrtpAeadAes256Gcm: // kSrtpAeadAes256Gcm is defined in RFC 7714 to use a 256 bits key and // a 96 bits salt for the cipher.
*key_length = 32;
*salt_length = 12; break; default: returnfalse;
} returntrue;
}
std::optional<std::string>
SSLStreamAdapter::GetEphemeralKeyExchangeCipherGroupName(uint16_t group_id) { #ifdefined(OPENSSL_IS_BORINGSSL) auto val = SSL_get_group_name(group_id); if (val != nullptr) { return std::string(val);
} #endif return std::nullopt;
}
std::set<uint16_t>
SSLStreamAdapter::GetSupportedEphemeralKeyExchangeCipherGroups() { return { // It would be nice if BoringSSL had a function like this! #ifdef SSL_GROUP_SECP224R1
SSL_GROUP_SECP224R1, #endif #ifdef SSL_GROUP_SECP256R1
SSL_GROUP_SECP256R1, #endif #ifdef SSL_GROUP_SECP384R1
SSL_GROUP_SECP384R1, #endif #ifdef SSL_GROUP_SECP521R1
SSL_GROUP_SECP521R1, #endif #ifdef SSL_GROUP_X25519
SSL_GROUP_X25519, #endif #ifdef SSL_GROUP_X25519_MLKEM768
SSL_GROUP_X25519_MLKEM768, #endif
};
}
std::vector<uint16_t>
SSLStreamAdapter::GetDefaultEphemeralKeyExchangeCipherGroups( const FieldTrialsView* field_trials) { // It would be nice if BoringSSL had a function like this! // from boringssl/src/ssl/extensions.cc kDefaultGroups. if (field_trials && field_trials->IsEnabled("WebRTC-EnableDtlsPqc")) { return { #ifdef SSL_GROUP_X25519_MLKEM768
SSL_GROUP_X25519_MLKEM768, #endif #ifdef SSL_GROUP_X25519
SSL_GROUP_X25519, #endif #ifdef SSL_GROUP_SECP256R1
SSL_GROUP_SECP256R1, #endif #ifdef SSL_GROUP_SECP384R1
SSL_GROUP_SECP384R1, #endif
};
} return { #ifdef SSL_GROUP_X25519
SSL_GROUP_X25519, #endif #ifdef SSL_GROUP_SECP256R1
SSL_GROUP_SECP256R1, #endif #ifdef SSL_GROUP_SECP384R1
SSL_GROUP_SECP384R1, #endif
};
}
// Default shim for backward compat. bool SSLStreamAdapter::SetPeerCertificateDigest(
absl::string_view digest_alg, constunsignedchar* digest_val,
size_t digest_len,
SSLPeerCertificateDigestError* error) { unsignedchar* nonconst_val = const_cast<unsignedchar*>(digest_val);
SSLPeerCertificateDigestError ret = SetPeerCertificateDigest(
digest_alg, std::span<uint8_t>(nonconst_val, digest_len)); if (error)
*error = ret; return ret == SSLPeerCertificateDigestError::NONE;
}
/////////////////////////////////////////////////////////////////////////////// // Test only settings ///////////////////////////////////////////////////////////////////////////////
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.