Branch data Line data Source code
1 : : /* b128ops.h - common 128-bit block operations 2 : : * 3 : : * Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. 4 : : * Copyright (c) 2006, Rik Snel <rsnel@cube.dyndns.org> 5 : : * 6 : : * Based on Dr Brian Gladman's (GPL'd) work published at 7 : : * http://fp.gladman.plus.com/cryptography_technology/index.htm 8 : : * See the original copyright notice below. 9 : : * 10 : : * This program is free software; you can redistribute it and/or modify it 11 : : * under the terms of the GNU General Public License as published by the Free 12 : : * Software Foundation; either version 2 of the License, or (at your option) 13 : : * any later version. 14 : : */ 15 : : /* 16 : : --------------------------------------------------------------------------- 17 : : Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. All rights reserved. 18 : : 19 : : LICENSE TERMS 20 : : 21 : : The free distribution and use of this software in both source and binary 22 : : form is allowed (with or without changes) provided that: 23 : : 24 : : 1. distributions of this source code include the above copyright 25 : : notice, this list of conditions and the following disclaimer; 26 : : 27 : : 2. distributions in binary form include the above copyright 28 : : notice, this list of conditions and the following disclaimer 29 : : in the documentation and/or other associated materials; 30 : : 31 : : 3. the copyright holder's name is not used to endorse products 32 : : built using this software without specific written permission. 33 : : 34 : : ALTERNATIVELY, provided that this notice is retained in full, this product 35 : : may be distributed under the terms of the GNU General Public License (GPL), 36 : : in which case the provisions of the GPL apply INSTEAD OF those given above. 37 : : 38 : : DISCLAIMER 39 : : 40 : : This software is provided 'as is' with no explicit or implied warranties 41 : : in respect of its properties, including, but not limited to, correctness 42 : : and/or fitness for purpose. 43 : : --------------------------------------------------------------------------- 44 : : Issue Date: 13/06/2006 45 : : */ 46 : : 47 : : #ifndef _CRYPTO_B128OPS_H 48 : : #define _CRYPTO_B128OPS_H 49 : : 50 : : #include <linux/types.h> 51 : : 52 : : typedef struct { 53 : : u64 a, b; 54 : : } u128; 55 : : 56 : : typedef struct { 57 : : __be64 a, b; 58 : : } be128; 59 : : 60 : : typedef struct { 61 : : __le64 b, a; 62 : : } le128; 63 : : 64 : : static inline void u128_xor(u128 *r, const u128 *p, const u128 *q) 65 : : { 66 : 0 : r->a = p->a ^ q->a; 67 : 0 : r->b = p->b ^ q->b; 68 : : } 69 : : 70 : : static inline void be128_xor(be128 *r, const be128 *p, const be128 *q) 71 : : { 72 : : u128_xor((u128 *)r, (u128 *)p, (u128 *)q); 73 : : } 74 : : 75 : : static inline void le128_xor(le128 *r, const le128 *p, const le128 *q) 76 : : { 77 : : u128_xor((u128 *)r, (u128 *)p, (u128 *)q); 78 : : } 79 : : 80 : : #endif /* _CRYPTO_B128OPS_H */