mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-02 15:46:33 +00:00
moar wip
This commit is contained in:
parent
441f04f147
commit
1933b68b41
3 changed files with 34 additions and 6 deletions
|
@ -1141,6 +1141,19 @@ ErrorOr<Records::DS> Records::DS::from_raw(ParseContext& ctx)
|
|||
return Records::DS { key_tag, algorithm, digest_type, move(digest) };
|
||||
}
|
||||
|
||||
ErrorOr<void> Records::DS::to_raw(ByteBuffer& buffer) const
|
||||
{
|
||||
auto const output_size = 2 + 1 + 1 + digest.size();
|
||||
FixedMemoryStream stream { TRY(buffer.get_bytes_for_writing(output_size)) };
|
||||
|
||||
TRY(stream.write_value(static_cast<NetworkOrdered<u16>>(key_tag)));
|
||||
TRY(stream.write_value(static_cast<u8>(algorithm)));
|
||||
TRY(stream.write_value(static_cast<u8>(digest_type)));
|
||||
TRY(stream.write_until_depleted(digest.bytes()));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
ErrorOr<Records::SIG> Records::SIG::from_raw(ParseContext& ctx)
|
||||
{
|
||||
// RFC 4034, 2.2. The SIG Resource Record.
|
||||
|
|
|
@ -484,7 +484,7 @@ struct DNSKEY {
|
|||
ErrorOr<void> to_raw(ByteBuffer&) const;
|
||||
ErrorOr<String> to_string() const
|
||||
{
|
||||
return String::formatted("DNSKEY Flags: {}{}{}{}({}), Protocol: {}, Algorithm: {}, Public Key: {}",
|
||||
return String::formatted("DNSKEY Flags: {}{}{}{}({}), Protocol: {}, Algorithm: {}, Public Key: {}, Tag: {}",
|
||||
is_secure_entry_point() ? "sep "sv : ""sv,
|
||||
is_zone_key() ? "zone "sv : ""sv,
|
||||
is_revoked() ? "revoked "sv : ""sv,
|
||||
|
@ -492,7 +492,8 @@ struct DNSKEY {
|
|||
flags,
|
||||
protocol,
|
||||
DNSSEC::to_string(algorithm),
|
||||
TRY(encode_base64(public_key)));
|
||||
TRY(encode_base64(public_key)),
|
||||
calculated_key_tag);
|
||||
}
|
||||
};
|
||||
struct CDNSKEY : public DNSKEY {
|
||||
|
@ -513,8 +514,15 @@ struct DS {
|
|||
|
||||
static constexpr ResourceType type = ResourceType::DS;
|
||||
static ErrorOr<DS> from_raw(ParseContext&);
|
||||
ErrorOr<void> to_raw(ByteBuffer&) const { return Error::from_string_literal("Not implemented: DS::to_raw"); }
|
||||
ErrorOr<String> to_string() const { return "DS"_string; }
|
||||
ErrorOr<void> to_raw(ByteBuffer&) const;
|
||||
ErrorOr<String> to_string() const
|
||||
{
|
||||
return String::formatted("DS Key Tag: {}, Algorithm: {}, Digest Type: {}, Digest: {}",
|
||||
key_tag,
|
||||
DNSSEC::to_string(algorithm),
|
||||
DNSSEC::to_string(digest_type),
|
||||
TRY(encode_base64(digest)));
|
||||
}
|
||||
};
|
||||
struct CDS : public DS {
|
||||
template<typename... Ts>
|
||||
|
|
|
@ -707,8 +707,15 @@ private:
|
|||
|
||||
lookup.promise = move(promise);
|
||||
};
|
||||
if (is_root_zone)
|
||||
return resolve_using_keys(move(parent_zone_keys));
|
||||
if (is_root_zone) {
|
||||
return resolve_using_keys(Vector { Messages::Records::DNSKEY {
|
||||
.flags = 256,
|
||||
.protocol = 3,
|
||||
.algorithm = Messages::DNSSEC::Algorithm::RSASHA256,
|
||||
.public_key = MUST(decode_base64("AwEAAa96jeuknZlaeSrvyAJj6ZHv28hhOKkx3rLGXVaC6rXTsDc449/cidltpkyGwCJNnOAlFNKF2jBosZBU5eeHspaQWOmOElZsjICMQMC3aeHbGiShvZsx4wMYSjH8e7Vrhbu6irwCzVBApESjbUdpWWmEnhathWu1jo+siFUiRAAxm9qyJNg/wOZqqzL/dL/q8PkcRU5oUKEpUge71M3ej2/7CPqpdVwuMoTvoB+ZOT4YeGyxMvHmbrxlFzGOHOijtzN+u1TQNatX2XBuzZNQ1K+s2CXkPIZo7s6JgZyvaBevYtxPvYLw4z9mR7K2vaF18UYH9Z9GNUUeayffKC73PYc="sv)),
|
||||
.calculated_key_tag = 38696,
|
||||
} });
|
||||
}
|
||||
|
||||
dbgln_if(DNS_DEBUG, "DNS: Starting DNSKEY lookup for {}", lookup.name);
|
||||
this->lookup(lookup.name, Messages::Class::IN, { Messages::ResourceType::DNSKEY }, { .validate_dnssec_locally = false })
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue