1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 06:47:34 +00:00

LibCrypto: Add missing ASN1 tag kinds

This commit is contained in:
stelar7 2023-04-03 18:50:57 +02:00 committed by Ali Mohammad Pur
parent 6163f607c0
commit 8273fc230c
3 changed files with 90 additions and 17 deletions

View file

@ -26,20 +26,66 @@ DeprecatedString kind_name(Kind kind)
return "Null";
case Kind::ObjectIdentifier:
return "ObjectIdentifier";
case Kind::IA5String:
return "IA5String";
case Kind::PrintableString:
return "PrintableString";
case Kind::ObjectDescriptor:
return "ObjectDescriptor";
case Kind::External:
return "External";
case Kind::Real:
return "Real";
case Kind::Enumerated:
return "Enumerated";
case Kind::EmbeddedPdv:
return "EmbeddedPdv";
case Kind::Utf8String:
return "UTF8String";
case Kind::UTCTime:
return "UTCTime";
case Kind::GeneralizedTime:
return "GeneralizedTime";
return "Utf8String";
case Kind::RelativeOid:
return "RelativeOid";
case Kind::Time:
return "Time";
case Kind::Reserved:
return "Reserved";
case Kind::Sequence:
return "Sequence";
case Kind::Set:
return "Set";
case Kind::NumericString:
return "NumericString";
case Kind::PrintableString:
return "PrintableString";
case Kind::T61String:
return "T61String";
case Kind::VideotexString:
return "VideotexString";
case Kind::IA5String:
return "IA5String";
case Kind::UTCTime:
return "UTCTime";
case Kind::GeneralizedTime:
return "GeneralizedTime";
case Kind::GraphicString:
return "GraphicString";
case Kind::VisibleString:
return "VisibleString";
case Kind::GeneralString:
return "GeneralString";
case Kind::UniversalString:
return "UniversalString";
case Kind::CharacterString:
return "CharacterString";
case Kind::BMPString:
return "BMPString";
case Kind::Date:
return "Date";
case Kind::TimeOfDay:
return "TimeOfDay";
case Kind::DateTime:
return "DateTime";
case Kind::Duration:
return "Duration";
case Kind::OidIri:
return "OidIri";
case Kind::RelativeOidIri:
return "RelativeOidIri";
}
return "InvalidKind";
@ -190,5 +236,4 @@ done_parsing:;
// Unceremoniously drop the milliseconds on the floor.
return Core::DateTime::create(year.value(), month.value(), day.value(), hour.value(), minute.value_or(0), seconds.value_or(0));
}
}

View file

@ -12,22 +12,45 @@
namespace Crypto::ASN1 {
// ITU-T X.680, section 8, table 1
enum class Kind : u8 {
Eol,
Eol = 0x00,
Boolean = 0x01,
Integer = 0x02,
BitString = 0x03,
OctetString = 0x04,
Null = 0x05,
ObjectIdentifier = 0x06,
IA5String = 0x16,
PrintableString = 0x13,
Utf8String = 0x0c,
UTCTime = 0x017,
GeneralizedTime = 0x018,
ObjectDescriptor = 0x07,
External = 0x08,
Real = 0x09,
Enumerated = 0x0A,
EmbeddedPdv = 0x0B,
Utf8String = 0x0C,
RelativeOid = 0x0D,
Time = 0x0E,
Reserved = 0x0F,
Sequence = 0x10,
Set = 0x11,
// Choice = ??,
NumericString = 0x12,
PrintableString = 0x13,
T61String = 0x14,
VideotexString = 0x15,
IA5String = 0x16,
UTCTime = 0x017,
GeneralizedTime = 0x18,
GraphicString = 0x19,
VisibleString = 0x1A,
GeneralString = 0x1B,
UniversalString = 0x1C,
CharacterString = 0x1D,
BMPString = 0x1E,
Date = 0x1F,
TimeOfDay = 0x20,
DateTime = 0x21,
Duration = 0x22,
OidIri = 0x23,
RelativeOidIri = 0x24,
};
enum class Class : u8 {

View file

@ -294,6 +294,8 @@ ErrorOr<void> pretty_print(Decoder& decoder, Stream& stream, int indent)
case Kind::UTCTime:
case Kind::GeneralizedTime:
case Kind::IA5String:
case Kind::VisibleString:
case Kind::BMPString:
case Kind::PrintableString: {
auto value = TRY(decoder.read<StringView>());
builder.append(' ');
@ -310,6 +312,9 @@ ErrorOr<void> pretty_print(Decoder& decoder, Stream& stream, int indent)
case Kind::Sequence:
case Kind::Set:
return Error::from_string_literal("ASN1::Decoder: Unexpected Primitive");
default: {
dbgln("PrettyPrint error: Unhandled kind {}", static_cast<u8>(tag.kind));
}
}
}