Explorar o código

LibCrypto: Require intent parameter in CTR constructor

This was preventing clang from building.
Luke %!s(int64=4) %!d(string=hai) anos
pai
achega
72abf3491b
Modificáronse 2 ficheiros con 4 adicións e 2 borrados
  1. 1 1
      Kernel/Random.h
  2. 3 1
      Libraries/LibCrypto/Cipher/Mode/CTR.h

+ 1 - 1
Kernel/Random.h

@@ -66,7 +66,7 @@ public:
         // FIXME: More than 2^20 bytes cannot be generated without refreshing the key.
         ASSERT(n < (1 << 20));
 
-        typename CipherType::CTRMode cipher(m_key, KeySize);
+        typename CipherType::CTRMode cipher(m_key, KeySize, Crypto::Cipher::Intent::Encryption);
 
         Bytes buffer_span { buffer, n };
         auto counter_span = m_counter.bytes();

+ 3 - 1
Libraries/LibCrypto/Cipher/Mode/CTR.h

@@ -113,8 +113,10 @@ public:
     // Must intercept `Intent`, because AES must always be set to
     // Encryption, even when decrypting AES-CTR.
     // TODO: How to deal with ciphers that take different arguments?
+    // FIXME: Add back the default intent parameter once clang-11 is the default in GitHub Actions.
+    //        Once added back, remove the parameter where it's constructed in get_random_bytes in Kernel/Random.h.
     template<typename KeyType, typename... Args>
-    explicit constexpr CTR(const KeyType& user_key, size_t key_bits, Intent = Intent::Encryption, Args... args)
+    explicit constexpr CTR(const KeyType& user_key, size_t key_bits, Intent, Args... args)
         : Mode<T>(user_key, key_bits, Intent::Encryption, args...)
     {
     }