From 1be411cc73150b0d78f25f9752ef1ee0aea5ae69 Mon Sep 17 00:00:00 2001 From: stelar7 Date: Fri, 22 Mar 2024 10:10:41 +0100 Subject: [PATCH] LibCrypto: Adjust DER length encoding to follow the spec It says to always use the smallest possible length representation --- Userland/Libraries/LibCrypto/ASN1/DER.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibCrypto/ASN1/DER.cpp b/Userland/Libraries/LibCrypto/ASN1/DER.cpp index a8717b6f602..73e827bd68b 100644 --- a/Userland/Libraries/LibCrypto/ASN1/DER.cpp +++ b/Userland/Libraries/LibCrypto/ASN1/DER.cpp @@ -262,7 +262,8 @@ ErrorOr Encoder::write_length(size_t value) if (value < 0x80) return write_byte(value); - size_t size = ceil_div(AK::ceil_log2(value), 3ul); + size_t size_in_bits = AK::ceil_log2(value); + size_t size = ceil_div(size_in_bits, 8ul); TRY(write_byte(0x80 | size)); for (size_t i = 0; i < size; i++) {