81 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /* 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 */
 |