summaryrefslogtreecommitdiffstats
path: root/net/quic/crypto/null_encrypter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/quic/crypto/null_encrypter.cc')
-rw-r--r--net/quic/crypto/null_encrypter.cc37
1 files changed, 37 insertions, 0 deletions
diff --git a/net/quic/crypto/null_encrypter.cc b/net/quic/crypto/null_encrypter.cc
new file mode 100644
index 0000000..fda844b
--- /dev/null
+++ b/net/quic/crypto/null_encrypter.cc
@@ -0,0 +1,37 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/quic/crypto/null_encrypter.h"
+#include "net/quic/quic_data_writer.h"
+#include "net/quic/quic_utils.h"
+
+using base::StringPiece;
+using std::string;
+
+namespace net {
+
+const size_t kHashSize = 16; // size of uint128 serialized
+
+QuicData* NullEncrypter::Encrypt(StringPiece associated_data,
+ StringPiece plaintext) {
+ // TODO(rch): avoid buffer copy here
+ string buffer = associated_data.as_string();
+ plaintext.AppendToString(&buffer);
+ uint128 hash = QuicUtils::FNV1a_128_Hash(buffer.data(), buffer.length());
+ QuicDataWriter writer(plaintext.length() + kHashSize);
+ writer.WriteUInt128(hash);
+ writer.WriteBytes(plaintext.data(), plaintext.length());
+ size_t len = writer.length();
+ return new QuicData(writer.take(), len, true);
+}
+
+size_t NullEncrypter::GetMaxPlaintextSize(size_t ciphertext_size) {
+ return ciphertext_size - kHashSize;
+}
+
+size_t NullEncrypter::GetCiphertextSize(size_t plaintext_size) {
+ return plaintext_size + kHashSize;
+}
+
+} // namespace net