Add Chacha20Poly1305 to AEAD Algorithms

Bug: b:153649905
Change-Id: I3eaca93d0ae7b0d0cd5c502e8536977fb66ca979
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2363351
Reviewed-by: Adam Langley <agl@chromium.org>
Commit-Queue: Leonid Baraz <lbaraz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799275}
GitOrigin-RevId: 07c057709a53d1cc021688027e605ee9ebec85b9
diff --git a/aead.cc b/aead.cc
index 012752b..6ba5cec 100644
--- a/aead.cc
+++ b/aead.cc
@@ -27,6 +27,9 @@
     case AES_256_GCM_SIV:
       aead_ = EVP_aead_aes_256_gcm_siv();
       break;
+    case CHACHA20_POLY1305:
+      aead_ = EVP_aead_chacha20_poly1305();
+      break;
   }
 }
 
diff --git a/aead.h b/aead.h
index 7a855fd..64a4f46 100644
--- a/aead.h
+++ b/aead.h
@@ -26,7 +26,12 @@
 // Prefer the latter in new code.
 class CRYPTO_EXPORT Aead {
  public:
-  enum AeadAlgorithm { AES_128_CTR_HMAC_SHA256, AES_256_GCM, AES_256_GCM_SIV };
+  enum AeadAlgorithm {
+    AES_128_CTR_HMAC_SHA256,
+    AES_256_GCM,
+    AES_256_GCM_SIV,
+    CHACHA20_POLY1305
+  };
 
   explicit Aead(AeadAlgorithm algorithm);
   Aead(const Aead&) = delete;
diff --git a/aead_unittest.cc b/aead_unittest.cc
index 00d56a1..8f3ae02 100644
--- a/aead_unittest.cc
+++ b/aead_unittest.cc
@@ -11,8 +11,10 @@
 namespace {
 
 const crypto::Aead::AeadAlgorithm kAllAlgorithms[]{
-    crypto::Aead::AES_128_CTR_HMAC_SHA256, crypto::Aead::AES_256_GCM,
+    crypto::Aead::AES_128_CTR_HMAC_SHA256,
+    crypto::Aead::AES_256_GCM,
     crypto::Aead::AES_256_GCM_SIV,
+    crypto::Aead::CHACHA20_POLY1305,
 };
 
 class AeadTest : public testing::TestWithParam<crypto::Aead::AeadAlgorithm> {};