in fizz/experimental/protocol/BatchSignatureTypes.cpp [15:56]
folly::Optional<BatchSchemeInfo> getBatchSchemeInfo(
SignatureScheme batchScheme,
const std::vector<SignatureScheme>& supportedBaseSchemes) {
BatchSchemeInfo info{};
switch (batchScheme) {
case SignatureScheme::ecdsa_secp256r1_sha256_batch:
info.baseScheme = SignatureScheme::ecdsa_secp256r1_sha256;
break;
case SignatureScheme::ecdsa_secp384r1_sha384_batch:
info.baseScheme = SignatureScheme::ecdsa_secp384r1_sha384;
break;
case SignatureScheme::ecdsa_secp521r1_sha512_batch:
info.baseScheme = SignatureScheme::ecdsa_secp521r1_sha512;
break;
case SignatureScheme::ed25519_batch:
info.baseScheme = SignatureScheme::ed25519;
break;
case SignatureScheme::ed448_batch:
info.baseScheme = SignatureScheme::ed448;
break;
case SignatureScheme::rsa_pss_sha256_batch:
info.baseScheme = SignatureScheme::rsa_pss_sha256;
break;
case SignatureScheme::ecdsa_secp256r1_sha256:
case SignatureScheme::ecdsa_secp384r1_sha384:
case SignatureScheme::ecdsa_secp521r1_sha512:
case SignatureScheme::rsa_pss_sha256:
case SignatureScheme::rsa_pss_sha384:
case SignatureScheme::rsa_pss_sha512:
case SignatureScheme::ed25519:
case SignatureScheme::ed448:
return folly::none;
}
if (!supportedBaseSchemes.empty() &&
std::find(
supportedBaseSchemes.begin(),
supportedBaseSchemes.end(),
info.baseScheme) == supportedBaseSchemes.end()) {
return folly::none;
}
return info;
}