1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 00:15:08 +00:00

LibCrypto: Use ErrorOr error handling for parsing DER

This replaces a mixture of `Result`, `Optional`, and a custom error enum
with our usual `ErrorOr`-based error handling.
This commit is contained in:
Tim Schumacher 2023-02-07 23:47:28 +01:00 committed by Linus Groh
parent e80eb09fe5
commit f5fb1396e8
4 changed files with 107 additions and 197 deletions

View file

@ -37,8 +37,8 @@ Optional<Certificate> Certificate::parse_asn1(ReadonlyBytes buffer, bool)
{
#define ENTER_SCOPE_WITHOUT_TYPECHECK(scope) \
do { \
if (auto result = decoder.enter(); result.has_value()) { \
dbgln_if(TLS_DEBUG, "Failed to enter object (" scope "): {}", result.value()); \
if (auto result = decoder.enter(); result.is_error()) { \
dbgln_if(TLS_DEBUG, "Failed to enter object (" scope "): {}", result.error()); \
return {}; \
} \
} while (0)
@ -59,8 +59,8 @@ Optional<Certificate> Certificate::parse_asn1(ReadonlyBytes buffer, bool)
#define EXIT_SCOPE(scope) \
do { \
if (auto error = decoder.leave(); error.has_value()) { \
dbgln_if(TLS_DEBUG, "Error while exiting scope " scope ": {}", error.value()); \
if (auto error = decoder.leave(); error.is_error()) { \
dbgln_if(TLS_DEBUG, "Error while exiting scope " scope ": {}", error.error()); \
return {}; \
} \
} while (0)
@ -88,8 +88,8 @@ Optional<Certificate> Certificate::parse_asn1(ReadonlyBytes buffer, bool)
#define DROP_OBJECT_OR_FAIL(scope) \
do { \
if (auto error = decoder.drop(); error.has_value()) { \
dbgln_if(TLS_DEBUG, scope " read failed: {}", error.value()); \
if (auto error = decoder.drop(); error.is_error()) { \
dbgln_if(TLS_DEBUG, scope " read failed: {}", error.error()); \
} \
} while (0)