|
@@ -0,0 +1,80 @@
|
|
|
|
+/* b128ops.h - common 128-bit block operations
|
|
|
|
+ *
|
|
|
|
+ * Copyright (c) 2003, Dr Brian Gladman, Worcester, UK.
|
|
|
|
+ * Copyright (c) 2006, Rik Snel <rsnel@cube.dyndns.org>
|
|
|
|
+ *
|
|
|
|
+ * Based on Dr Brian Gladman's (GPL'd) work published at
|
|
|
|
+ * http://fp.gladman.plus.com/cryptography_technology/index.htm
|
|
|
|
+ * See the original copyright notice below.
|
|
|
|
+ *
|
|
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
|
|
+ * under the terms of the GNU General Public License as published by the Free
|
|
|
|
+ * Software Foundation; either version 2 of the License, or (at your option)
|
|
|
|
+ * any later version.
|
|
|
|
+ */
|
|
|
|
+/*
|
|
|
|
+ ---------------------------------------------------------------------------
|
|
|
|
+ Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. All rights reserved.
|
|
|
|
+
|
|
|
|
+ LICENSE TERMS
|
|
|
|
+
|
|
|
|
+ The free distribution and use of this software in both source and binary
|
|
|
|
+ form is allowed (with or without changes) provided that:
|
|
|
|
+
|
|
|
|
+ 1. distributions of this source code include the above copyright
|
|
|
|
+ notice, this list of conditions and the following disclaimer;
|
|
|
|
+
|
|
|
|
+ 2. distributions in binary form include the above copyright
|
|
|
|
+ notice, this list of conditions and the following disclaimer
|
|
|
|
+ in the documentation and/or other associated materials;
|
|
|
|
+
|
|
|
|
+ 3. the copyright holder's name is not used to endorse products
|
|
|
|
+ built using this software without specific written permission.
|
|
|
|
+
|
|
|
|
+ ALTERNATIVELY, provided that this notice is retained in full, this product
|
|
|
|
+ may be distributed under the terms of the GNU General Public License (GPL),
|
|
|
|
+ in which case the provisions of the GPL apply INSTEAD OF those given above.
|
|
|
|
+
|
|
|
|
+ DISCLAIMER
|
|
|
|
+
|
|
|
|
+ This software is provided 'as is' with no explicit or implied warranties
|
|
|
|
+ in respect of its properties, including, but not limited to, correctness
|
|
|
|
+ and/or fitness for purpose.
|
|
|
|
+ ---------------------------------------------------------------------------
|
|
|
|
+ Issue Date: 13/06/2006
|
|
|
|
+*/
|
|
|
|
+
|
|
|
|
+#ifndef _CRYPTO_B128OPS_H
|
|
|
|
+#define _CRYPTO_B128OPS_H
|
|
|
|
+
|
|
|
|
+#include <linux/types.h>
|
|
|
|
+
|
|
|
|
+typedef struct {
|
|
|
|
+ u64 a, b;
|
|
|
|
+} u128;
|
|
|
|
+
|
|
|
|
+typedef struct {
|
|
|
|
+ __be64 a, b;
|
|
|
|
+} be128;
|
|
|
|
+
|
|
|
|
+typedef struct {
|
|
|
|
+ __le64 b, a;
|
|
|
|
+} le128;
|
|
|
|
+
|
|
|
|
+static inline void u128_xor(u128 *r, const u128 *p, const u128 *q)
|
|
|
|
+{
|
|
|
|
+ r->a = p->a ^ q->a;
|
|
|
|
+ r->b = p->b ^ q->b;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline void be128_xor(be128 *r, const be128 *p, const be128 *q)
|
|
|
|
+{
|
|
|
|
+ u128_xor((u128 *)r, (u128 *)p, (u128 *)q);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline void le128_xor(le128 *r, const le128 *p, const le128 *q)
|
|
|
|
+{
|
|
|
|
+ u128_xor((u128 *)r, (u128 *)p, (u128 *)q);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#endif /* _CRYPTO_B128OPS_H */
|