1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_QUIC_CRYPTO_AES_128_GCM_12_DECRYPTER_H_
6 #define NET_QUIC_CRYPTO_AES_128_GCM_12_DECRYPTER_H_
8 #include "net/quic/crypto/aead_base_decrypter.h"
12 // An Aes128Gcm12Decrypter is a QuicDecrypter that implements the
13 // AEAD_AES_128_GCM_12 algorithm specified in RFC 5282. Create an instance by
14 // calling QuicDecrypter::Create(kAESG).
16 // It uses an authentication tag of 12 bytes (96 bits). The fixed prefix
17 // of the nonce is four bytes.
18 class NET_EXPORT_PRIVATE Aes128Gcm12Decrypter
: public AeadBaseDecrypter
{
21 // Authentication tags are truncated to 96 bits.
25 Aes128Gcm12Decrypter();
26 ~Aes128Gcm12Decrypter() override
;
28 #if !defined(USE_OPENSSL)
30 // AeadBaseDecrypter methods:
31 void FillAeadParams(base::StringPiece nonce
,
32 const base::StringPiece
& associated_data
,
34 AeadParams
* aead_params
) const override
;
37 const char* cipher_name() const override
;
38 uint32
cipher_id() const override
;
41 DISALLOW_COPY_AND_ASSIGN(Aes128Gcm12Decrypter
);
46 #endif // NET_QUIC_CRYPTO_AES_128_GCM_12_DECRYPTER_H_