summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibCrypto
diff options
context:
space:
mode:
authorstelar7 <dudedbz@gmail.com>2023-04-12 15:05:08 +0200
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2023-05-05 09:36:43 +0330
commit0b7031437905d5e7dac228d2af05cd8a507c7a04 (patch)
tree42acd012792761a27d7575fd1c663a1fbbab7e9b /Userland/Libraries/LibCrypto
parent24c7995743116a79672ce7c930fe0781522c893b (diff)
downloadserenity-0b7031437905d5e7dac228d2af05cd8a507c7a04.zip
LibCrypto: Store the TBS ASN.1 data on the certificate
This way we dont need to guess the offsets in LibTLS when using it.
Diffstat (limited to 'Userland/Libraries/LibCrypto')
-rw-r--r--Userland/Libraries/LibCrypto/ASN1/DER.cpp10
-rw-r--r--Userland/Libraries/LibCrypto/ASN1/DER.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/Userland/Libraries/LibCrypto/ASN1/DER.cpp b/Userland/Libraries/LibCrypto/ASN1/DER.cpp
index cbd7167921..262a12454b 100644
--- a/Userland/Libraries/LibCrypto/ASN1/DER.cpp
+++ b/Userland/Libraries/LibCrypto/ASN1/DER.cpp
@@ -67,6 +67,16 @@ ErrorOr<u8> Decoder::read_byte()
return byte;
}
+ErrorOr<ReadonlyBytes> Decoder::peek_entry_bytes()
+{
+ if (m_stack.is_empty())
+ return Error::from_string_literal("ASN1::Decoder: Reading bytes from an empty stack");
+
+ auto entry = m_stack.last();
+
+ return entry;
+}
+
ErrorOr<ReadonlyBytes> Decoder::read_bytes(size_t length)
{
if (m_stack.is_empty())
diff --git a/Userland/Libraries/LibCrypto/ASN1/DER.h b/Userland/Libraries/LibCrypto/ASN1/DER.h
index 63829c95b2..8138461e38 100644
--- a/Userland/Libraries/LibCrypto/ASN1/DER.h
+++ b/Userland/Libraries/LibCrypto/ASN1/DER.h
@@ -151,6 +151,8 @@ public:
ErrorOr<void> enter();
ErrorOr<void> leave();
+ ErrorOr<ReadonlyBytes> peek_entry_bytes();
+
private:
template<typename ValueType, typename DecodedType>
ErrorOr<ValueType> with_type_check(DecodedType&& value)