summaryrefslogtreecommitdiffstats
path: root/net/curvecp/protocol.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/curvecp/protocol.cc')
-rw-r--r--net/curvecp/protocol.cc88
1 files changed, 88 insertions, 0 deletions
diff --git a/net/curvecp/protocol.cc b/net/curvecp/protocol.cc
new file mode 100644
index 0000000..69f9b60
--- /dev/null
+++ b/net/curvecp/protocol.cc
@@ -0,0 +1,88 @@
+// Copyright (c) 2011 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/curvecp/protocol.h"
+
+#include "base/basictypes.h"
+
+namespace net {
+
+void uint16_pack(uchar* dest, uint16 val) {
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+}
+
+uint16 uint16_unpack(uchar* src) {
+ uint16 result;
+ result = src[1];
+ result <<= 8;
+ result |= src[0];
+ return result;
+}
+
+void uint32_pack(uchar* dest, uint32 val) {
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+}
+
+uint32 uint32_unpack(uchar* src) {
+ uint32 result;
+ result = src[3];
+ result <<= 8;
+ result |= src[2];
+ result <<= 8;
+ result |= src[1];
+ result <<= 8;
+ result |= src[0];
+ return result;
+}
+
+void uint64_pack(uchar* dest, uint64 val) {
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+ *dest++ = val;
+ val >>= 8;
+}
+
+uint64 uint64_unpack(uchar* src) {
+ uint64 result;
+ result = src[7];
+ result <<= 8;
+ result |= src[6];
+ result <<= 8;
+ result |= src[5];
+ result <<= 8;
+ result |= src[4];
+ result <<= 8;
+ result |= src[3];
+ result <<= 8;
+ result |= src[2];
+ result <<= 8;
+ result |= src[1];
+ result <<= 8;
+ result |= src[0];
+ return result;
+}
+
+} // namespace net