forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
/* b128ops.h - common 128-bit block operations |
|
* |
|
* Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. |
|
* Copyright (c) 2006, Rik Snel <[email protected]> |
|
* |
|
* 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 */
|
|
|