mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
Add a quick and simple implementation of base64 encryption and Whirpool hashing algorithm.
This commit is contained in:
parent
4b1e3909a4
commit
f86f3c8433
@ -415,7 +415,22 @@
|
|||||||
<Linker>
|
<Linker>
|
||||||
<Add library="squirrel" />
|
<Add library="squirrel" />
|
||||||
</Linker>
|
</Linker>
|
||||||
|
<Unit filename="../external/B64/decode.c">
|
||||||
|
<Option compilerVar="CC" />
|
||||||
|
</Unit>
|
||||||
|
<Unit filename="../external/B64/encode.c">
|
||||||
|
<Option compilerVar="CC" />
|
||||||
|
</Unit>
|
||||||
<Unit filename="../external/Common/aes256.cpp" />
|
<Unit filename="../external/Common/aes256.cpp" />
|
||||||
|
<Unit filename="../external/Common/byte_order.c">
|
||||||
|
<Option compilerVar="CC" />
|
||||||
|
</Unit>
|
||||||
|
<Unit filename="../external/Common/whirlpool.c">
|
||||||
|
<Option compilerVar="CC" />
|
||||||
|
</Unit>
|
||||||
|
<Unit filename="../external/Common/whirlpool_sbox.c">
|
||||||
|
<Option compilerVar="CC" />
|
||||||
|
</Unit>
|
||||||
<Unit filename="../external/Hash/crc32.cpp" />
|
<Unit filename="../external/Hash/crc32.cpp" />
|
||||||
<Unit filename="../external/Hash/crc32.h" />
|
<Unit filename="../external/Hash/crc32.h" />
|
||||||
<Unit filename="../external/Hash/digest.cpp" />
|
<Unit filename="../external/Hash/digest.cpp" />
|
||||||
|
21
external/B64/LICENSE
vendored
Normal file
21
external/B64/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 Little Star Media, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
123
external/B64/decode.c
vendored
Normal file
123
external/B64/decode.c
vendored
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* `decode.c' - b64
|
||||||
|
*
|
||||||
|
* copyright (c) 2014 joseph werle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include "b64.h"
|
||||||
|
|
||||||
|
|
||||||
|
unsigned char *
|
||||||
|
b64_decode (const char *src, size_t len) {
|
||||||
|
return b64_decode_ex(src, len, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char *
|
||||||
|
b64_decode_ex (const char *src, size_t len, size_t *decsize) {
|
||||||
|
int i = 0;
|
||||||
|
int j = 0;
|
||||||
|
int l = 0;
|
||||||
|
size_t size = 0;
|
||||||
|
unsigned char *dec = NULL;
|
||||||
|
unsigned char buf[3];
|
||||||
|
unsigned char tmp[4];
|
||||||
|
|
||||||
|
// alloc
|
||||||
|
dec = (unsigned char *) b64_malloc(1);
|
||||||
|
if (NULL == dec) { return NULL; }
|
||||||
|
|
||||||
|
// parse until end of source
|
||||||
|
while (len--) {
|
||||||
|
// break if char is `=' or not base64 char
|
||||||
|
if ('=' == src[j]) { break; }
|
||||||
|
if (!(isalnum(src[j]) || '+' == src[j] || '/' == src[j])) { break; }
|
||||||
|
|
||||||
|
// read up to 4 bytes at a time into `tmp'
|
||||||
|
tmp[i++] = src[j++];
|
||||||
|
|
||||||
|
// if 4 bytes read then decode into `buf'
|
||||||
|
if (4 == i) {
|
||||||
|
// translate values in `tmp' from table
|
||||||
|
for (i = 0; i < 4; ++i) {
|
||||||
|
// find translation char in `b64_table'
|
||||||
|
for (l = 0; l < 64; ++l) {
|
||||||
|
if (tmp[i] == b64_table[l]) {
|
||||||
|
tmp[i] = l;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// decode
|
||||||
|
buf[0] = (tmp[0] << 2) + ((tmp[1] & 0x30) >> 4);
|
||||||
|
buf[1] = ((tmp[1] & 0xf) << 4) + ((tmp[2] & 0x3c) >> 2);
|
||||||
|
buf[2] = ((tmp[2] & 0x3) << 6) + tmp[3];
|
||||||
|
|
||||||
|
// write decoded buffer to `dec'
|
||||||
|
dec = (unsigned char *) b64_realloc(dec, size + 3);
|
||||||
|
if (dec != NULL){
|
||||||
|
for (i = 0; i < 3; ++i) {
|
||||||
|
dec[size++] = buf[i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remainder
|
||||||
|
if (i > 0) {
|
||||||
|
// fill `tmp' with `\0' at most 4 times
|
||||||
|
for (j = i; j < 4; ++j) {
|
||||||
|
tmp[j] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
// translate remainder
|
||||||
|
for (j = 0; j < 4; ++j) {
|
||||||
|
// find translation char in `b64_table'
|
||||||
|
for (l = 0; l < 64; ++l) {
|
||||||
|
if (tmp[j] == b64_table[l]) {
|
||||||
|
tmp[j] = l;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// decode remainder
|
||||||
|
buf[0] = (tmp[0] << 2) + ((tmp[1] & 0x30) >> 4);
|
||||||
|
buf[1] = ((tmp[1] & 0xf) << 4) + ((tmp[2] & 0x3c) >> 2);
|
||||||
|
buf[2] = ((tmp[2] & 0x3) << 6) + tmp[3];
|
||||||
|
|
||||||
|
// write remainer decoded buffer to `dec'
|
||||||
|
dec = (unsigned char *) b64_realloc(dec, size + (i - 1));
|
||||||
|
if (dec != NULL){
|
||||||
|
for (j = 0; (j < i - 1); ++j) {
|
||||||
|
dec[size++] = buf[j];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure we have enough space to add '\0' character at end.
|
||||||
|
dec = (unsigned char *) b64_realloc(dec, size + 1);
|
||||||
|
if (dec != NULL){
|
||||||
|
dec[size] = '\0';
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return back the size of decoded string if demanded.
|
||||||
|
if (decsize != NULL) {
|
||||||
|
*decsize = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dec;
|
||||||
|
}
|
93
external/B64/encode.c
vendored
Normal file
93
external/B64/encode.c
vendored
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* `encode.c' - b64
|
||||||
|
*
|
||||||
|
* copyright (c) 2014 joseph werle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "b64.h"
|
||||||
|
|
||||||
|
char *
|
||||||
|
b64_encode (const unsigned char *src, size_t len) {
|
||||||
|
return b64_encode_ex(src, len, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
b64_encode_ex (const unsigned char *src, size_t len, size_t *encsize) {
|
||||||
|
int i = 0;
|
||||||
|
int j = 0;
|
||||||
|
char *enc = NULL;
|
||||||
|
size_t size = 0;
|
||||||
|
unsigned char buf[4];
|
||||||
|
unsigned char tmp[3];
|
||||||
|
|
||||||
|
// alloc
|
||||||
|
enc = (char *) b64_malloc(1);
|
||||||
|
if (NULL == enc) { return NULL; }
|
||||||
|
|
||||||
|
// parse until end of source
|
||||||
|
while (len--) {
|
||||||
|
// read up to 3 bytes at a time into `tmp'
|
||||||
|
tmp[i++] = *(src++);
|
||||||
|
|
||||||
|
// if 3 bytes read then encode into `buf'
|
||||||
|
if (3 == i) {
|
||||||
|
buf[0] = (tmp[0] & 0xfc) >> 2;
|
||||||
|
buf[1] = ((tmp[0] & 0x03) << 4) + ((tmp[1] & 0xf0) >> 4);
|
||||||
|
buf[2] = ((tmp[1] & 0x0f) << 2) + ((tmp[2] & 0xc0) >> 6);
|
||||||
|
buf[3] = tmp[2] & 0x3f;
|
||||||
|
|
||||||
|
// allocate 4 new byts for `enc` and
|
||||||
|
// then translate each encoded buffer
|
||||||
|
// part by index from the base 64 index table
|
||||||
|
// into `enc' unsigned char array
|
||||||
|
enc = (char *) b64_realloc(enc, size + 4);
|
||||||
|
for (i = 0; i < 4; ++i) {
|
||||||
|
enc[size++] = b64_table[buf[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset index
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remainder
|
||||||
|
if (i > 0) {
|
||||||
|
// fill `tmp' with `\0' at most 3 times
|
||||||
|
for (j = i; j < 3; ++j) {
|
||||||
|
tmp[j] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
// perform same codec as above
|
||||||
|
buf[0] = (tmp[0] & 0xfc) >> 2;
|
||||||
|
buf[1] = ((tmp[0] & 0x03) << 4) + ((tmp[1] & 0xf0) >> 4);
|
||||||
|
buf[2] = ((tmp[1] & 0x0f) << 2) + ((tmp[2] & 0xc0) >> 6);
|
||||||
|
buf[3] = tmp[2] & 0x3f;
|
||||||
|
|
||||||
|
// perform same write to `enc` with new allocation
|
||||||
|
for (j = 0; (j < i + 1); ++j) {
|
||||||
|
enc = (char *) b64_realloc(enc, size + 1);
|
||||||
|
enc[size++] = b64_table[buf[j]];
|
||||||
|
}
|
||||||
|
|
||||||
|
// while there is still a remainder
|
||||||
|
// append `=' to `enc'
|
||||||
|
while ((i++ < 3)) {
|
||||||
|
enc = (char *) b64_realloc(enc, size + 1);
|
||||||
|
enc[size++] = '=';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure we have enough space to add '\0' character at end.
|
||||||
|
enc = (char *) b64_realloc(enc, size + 1);
|
||||||
|
enc[size] = '\0';
|
||||||
|
|
||||||
|
// Return back the size of encoded string if demanded.
|
||||||
|
if (encsize != NULL) {
|
||||||
|
*encsize = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
return enc;
|
||||||
|
}
|
150
external/Common/byte_order.c
vendored
Normal file
150
external/Common/byte_order.c
vendored
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
/* byte_order.c - byte order related platform dependent routines,
|
||||||
|
*
|
||||||
|
* Copyright: 2008-2012 Aleksey Kravchenko <rhash.admin@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. Use this program at your own risk!
|
||||||
|
*/
|
||||||
|
#include "byte_order.h"
|
||||||
|
|
||||||
|
#if !(__GNUC__ >= 4 || (__GNUC__ ==3 && __GNUC_MINOR__ >= 4)) /* if !GCC or GCC < 4.3 */
|
||||||
|
|
||||||
|
# if _MSC_VER >= 1300 && (_M_IX86 || _M_AMD64 || _M_IA64) /* if MSVC++ >= 2002 on x86/x64 */
|
||||||
|
# include <intrin.h>
|
||||||
|
# pragma intrinsic(_BitScanForward)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns index of the trailing bit of x.
|
||||||
|
*
|
||||||
|
* @param x the number to process
|
||||||
|
* @return zero-based index of the trailing bit
|
||||||
|
*/
|
||||||
|
unsigned rhash_ctz(unsigned x)
|
||||||
|
{
|
||||||
|
unsigned long index;
|
||||||
|
unsigned char isNonzero = _BitScanForward(&index, x); /* MSVC intrinsic */
|
||||||
|
return (isNonzero ? (unsigned)index : 0);
|
||||||
|
}
|
||||||
|
# else /* _MSC_VER >= 1300... */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns index of the trailing bit of a 32-bit number.
|
||||||
|
* This is a plain C equivalent for GCC __builtin_ctz() bit scan.
|
||||||
|
*
|
||||||
|
* @param x the number to process
|
||||||
|
* @return zero-based index of the trailing bit
|
||||||
|
*/
|
||||||
|
unsigned rhash_ctz(unsigned x)
|
||||||
|
{
|
||||||
|
/* array for conversion to bit position */
|
||||||
|
static unsigned char bit_pos[32] = {
|
||||||
|
0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
|
||||||
|
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The De Bruijn bit-scan was devised in 1997, according to Donald Knuth
|
||||||
|
* by Martin Lauter. The constant 0x077CB531UL is a De Bruijn sequence,
|
||||||
|
* which produces a unique pattern of bits into the high 5 bits for each
|
||||||
|
* possible bit position that it is multiplied against.
|
||||||
|
* See http://graphics.stanford.edu/~seander/bithacks.html
|
||||||
|
* and http://chessprogramming.wikispaces.com/BitScan */
|
||||||
|
return (unsigned)bit_pos[((uint32_t)((x & -x) * 0x077CB531U)) >> 27];
|
||||||
|
}
|
||||||
|
# endif /* _MSC_VER >= 1300... */
|
||||||
|
#endif /* !(GCC >= 4.3) */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a memory block with simultaneous exchanging byte order.
|
||||||
|
* The byte order is changed from little-endian 32-bit integers
|
||||||
|
* to big-endian (or vice-versa).
|
||||||
|
*
|
||||||
|
* @param to the pointer where to copy memory block
|
||||||
|
* @param index the index to start writing from
|
||||||
|
* @param from the source block to copy
|
||||||
|
* @param length length of the memory block
|
||||||
|
*/
|
||||||
|
void rhash_swap_copy_str_to_u32(void* to, int index, const void* from, size_t length)
|
||||||
|
{
|
||||||
|
/* if all pointers and length are 32-bits aligned */
|
||||||
|
if ( 0 == (( (int)((char*)to - (char*)0) | ((char*)from - (char*)0) | index | length ) & 3) ) {
|
||||||
|
/* copy memory as 32-bit words */
|
||||||
|
const uint32_t* src = (const uint32_t*)from;
|
||||||
|
const uint32_t* end = (const uint32_t*)((const char*)src + length);
|
||||||
|
uint32_t* dst = (uint32_t*)((char*)to + index);
|
||||||
|
while (src < end) *(dst++) = bswap_32( *(src++) );
|
||||||
|
} else {
|
||||||
|
const char* src = (const char*)from;
|
||||||
|
for (length += index; (size_t)index < length; index++) ((char*)to)[index ^ 3] = *(src++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a memory block with changed byte order.
|
||||||
|
* The byte order is changed from little-endian 64-bit integers
|
||||||
|
* to big-endian (or vice-versa).
|
||||||
|
*
|
||||||
|
* @param to the pointer where to copy memory block
|
||||||
|
* @param index the index to start writing from
|
||||||
|
* @param from the source block to copy
|
||||||
|
* @param length length of the memory block
|
||||||
|
*/
|
||||||
|
void rhash_swap_copy_str_to_u64(void* to, int index, const void* from, size_t length)
|
||||||
|
{
|
||||||
|
/* if all pointers and length are 64-bits aligned */
|
||||||
|
if ( 0 == (( (int)((char*)to - (char*)0) | ((char*)from - (char*)0) | index | length ) & 7) ) {
|
||||||
|
/* copy aligned memory block as 64-bit integers */
|
||||||
|
const uint64_t* src = (const uint64_t*)from;
|
||||||
|
const uint64_t* end = (const uint64_t*)((const char*)src + length);
|
||||||
|
uint64_t* dst = (uint64_t*)((char*)to + index);
|
||||||
|
while (src < end) *(dst++) = bswap_64( *(src++) );
|
||||||
|
} else {
|
||||||
|
const char* src = (const char*)from;
|
||||||
|
for (length += index; (size_t)index < length; index++) ((char*)to)[index ^ 7] = *(src++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy data from a sequence of 64-bit words to a binary string of given length,
|
||||||
|
* while changing byte order.
|
||||||
|
*
|
||||||
|
* @param to the binary string to receive data
|
||||||
|
* @param from the source sequence of 64-bit words
|
||||||
|
* @param length the size in bytes of the data being copied
|
||||||
|
*/
|
||||||
|
void rhash_swap_copy_u64_to_str(void* to, const void* from, size_t length)
|
||||||
|
{
|
||||||
|
/* if all pointers and length are 64-bits aligned */
|
||||||
|
if ( 0 == (( (int)((char*)to - (char*)0) | ((char*)from - (char*)0) | length ) & 7) ) {
|
||||||
|
/* copy aligned memory block as 64-bit integers */
|
||||||
|
const uint64_t* src = (const uint64_t*)from;
|
||||||
|
const uint64_t* end = (const uint64_t*)((const char*)src + length);
|
||||||
|
uint64_t* dst = (uint64_t*)to;
|
||||||
|
while (src < end) *(dst++) = bswap_64( *(src++) );
|
||||||
|
} else {
|
||||||
|
size_t index;
|
||||||
|
char* dst = (char*)to;
|
||||||
|
for (index = 0; index < length; index++) *(dst++) = ((char*)from)[index ^ 7];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exchange byte order in the given array of 32-bit integers.
|
||||||
|
*
|
||||||
|
* @param arr the array to process
|
||||||
|
* @param length array length
|
||||||
|
*/
|
||||||
|
void rhash_u32_mem_swap(unsigned *arr, int length)
|
||||||
|
{
|
||||||
|
unsigned* end = arr + length;
|
||||||
|
for (; arr < end; arr++) {
|
||||||
|
*arr = bswap_32(*arr);
|
||||||
|
}
|
||||||
|
}
|
171
external/Common/byte_order.h
vendored
Normal file
171
external/Common/byte_order.h
vendored
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
/* byte_order.h */
|
||||||
|
#ifndef BYTE_ORDER_H
|
||||||
|
#define BYTE_ORDER_H
|
||||||
|
#include "ustd.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#ifdef IN_RHASH
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GLIBC__
|
||||||
|
# include <endian.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* if x86 compatible cpu */
|
||||||
|
#if defined(i386) || defined(__i386__) || defined(__i486__) || \
|
||||||
|
defined(__i586__) || defined(__i686__) || defined(__pentium__) || \
|
||||||
|
defined(__pentiumpro__) || defined(__pentium4__) || \
|
||||||
|
defined(__nocona__) || defined(prescott) || defined(__core2__) || \
|
||||||
|
defined(__k6__) || defined(__k8__) || defined(__athlon__) || \
|
||||||
|
defined(__amd64) || defined(__amd64__) || \
|
||||||
|
defined(__x86_64) || defined(__x86_64__) || defined(_M_IX86) || \
|
||||||
|
defined(_M_AMD64) || defined(_M_IA64) || defined(_M_X64)
|
||||||
|
/* detect if x86-64 instruction set is supported */
|
||||||
|
# if defined(_LP64) || defined(__LP64__) || defined(__x86_64) || \
|
||||||
|
defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
|
||||||
|
# define CPU_X64
|
||||||
|
# else
|
||||||
|
# define CPU_IA32
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* detect CPU endianness */
|
||||||
|
#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
|
||||||
|
__BYTE_ORDER == __LITTLE_ENDIAN) || \
|
||||||
|
defined(CPU_IA32) || defined(CPU_X64) || \
|
||||||
|
defined(__ia64) || defined(__ia64__) || defined(__alpha__) || defined(_M_ALPHA) || \
|
||||||
|
defined(vax) || defined(MIPSEL) || defined(_ARM_) || defined(__arm__)
|
||||||
|
# define CPU_LITTLE_ENDIAN
|
||||||
|
# define IS_BIG_ENDIAN 0
|
||||||
|
# define IS_LITTLE_ENDIAN 1
|
||||||
|
#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
|
||||||
|
__BYTE_ORDER == __BIG_ENDIAN) || \
|
||||||
|
defined(__sparc) || defined(__sparc__) || defined(sparc) || \
|
||||||
|
defined(_ARCH_PPC) || defined(_ARCH_PPC64) || defined(_POWER) || \
|
||||||
|
defined(__POWERPC__) || defined(POWERPC) || defined(__powerpc) || \
|
||||||
|
defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || \
|
||||||
|
defined(__hpux) || defined(_MIPSEB) || defined(mc68000) || \
|
||||||
|
defined(__s390__) || defined(__s390x__) || defined(sel)
|
||||||
|
# define CPU_BIG_ENDIAN
|
||||||
|
# define IS_BIG_ENDIAN 1
|
||||||
|
# define IS_LITTLE_ENDIAN 0
|
||||||
|
#else
|
||||||
|
# error "Can't detect CPU architechture"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define IS_ALIGNED_32(p) (0 == (3 & ((const char*)(p) - (const char*)0)))
|
||||||
|
#define IS_ALIGNED_64(p) (0 == (7 & ((const char*)(p) - (const char*)0)))
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define ALIGN_ATTR(n) __declspec(align(n))
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#define ALIGN_ATTR(n) __attribute__((aligned (n)))
|
||||||
|
#else
|
||||||
|
#define ALIGN_ATTR(n) /* nothing */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
||||||
|
#define I64(x) x##ui64
|
||||||
|
#else
|
||||||
|
#define I64(x) x##LL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* convert a hash flag to index */
|
||||||
|
#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) /* GCC < 3.4 */
|
||||||
|
# define rhash_ctz(x) __builtin_ctz(x)
|
||||||
|
#else
|
||||||
|
unsigned rhash_ctz(unsigned); /* define as function */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void rhash_swap_copy_str_to_u32(void* to, int index, const void* from, size_t length);
|
||||||
|
void rhash_swap_copy_str_to_u64(void* to, int index, const void* from, size_t length);
|
||||||
|
void rhash_swap_copy_u64_to_str(void* to, const void* from, size_t length);
|
||||||
|
void rhash_u32_mem_swap(unsigned *p, int length_in_u32);
|
||||||
|
|
||||||
|
/* define bswap_32 */
|
||||||
|
#if defined(__GNUC__) && defined(CPU_IA32) && !defined(__i386__)
|
||||||
|
/* for intel x86 CPU */
|
||||||
|
static inline uint32_t bswap_32(uint32_t x) {
|
||||||
|
__asm("bswap\t%0" : "=r" (x) : "0" (x));
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
#elif defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC__ > 4 || __GNUC_MINOR__ >= 3)
|
||||||
|
/* for GCC >= 4.3 */
|
||||||
|
# define bswap_32(x) __builtin_bswap32(x)
|
||||||
|
#elif (_MSC_VER > 1300) && (defined(CPU_IA32) || defined(CPU_X64)) /* MS VC */
|
||||||
|
# define bswap_32(x) _byteswap_ulong((unsigned long)x)
|
||||||
|
#elif !defined(__STRICT_ANSI__)
|
||||||
|
/* general bswap_32 definition */
|
||||||
|
static inline uint32_t bswap_32(uint32_t x) {
|
||||||
|
x = ((x << 8) & 0xFF00FF00) | ((x >> 8) & 0x00FF00FF);
|
||||||
|
return (x >> 16) | (x << 16);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define bswap_32(x) ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
|
||||||
|
(((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
|
||||||
|
#endif /* bswap_32 */
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC__ > 4 || __GNUC_MINOR__ >= 3)
|
||||||
|
# define bswap_64(x) __builtin_bswap64(x)
|
||||||
|
#elif (_MSC_VER > 1300) && (defined(CPU_IA32) || defined(CPU_X64)) /* MS VC */
|
||||||
|
# define bswap_64(x) _byteswap_uint64((__int64)x)
|
||||||
|
#elif !defined(__STRICT_ANSI__)
|
||||||
|
static inline uint64_t bswap_64(uint64_t x) {
|
||||||
|
union {
|
||||||
|
uint64_t ll;
|
||||||
|
uint32_t l[2];
|
||||||
|
} w, r;
|
||||||
|
w.ll = x;
|
||||||
|
r.l[0] = bswap_32(w.l[1]);
|
||||||
|
r.l[1] = bswap_32(w.l[0]);
|
||||||
|
return r.ll;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#error "bswap_64 unsupported"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CPU_BIG_ENDIAN
|
||||||
|
# define be2me_32(x) (x)
|
||||||
|
# define be2me_64(x) (x)
|
||||||
|
# define le2me_32(x) bswap_32(x)
|
||||||
|
# define le2me_64(x) bswap_64(x)
|
||||||
|
|
||||||
|
# define be32_copy(to, index, from, length) memcpy((to) + (index), (from), (length))
|
||||||
|
# define le32_copy(to, index, from, length) rhash_swap_copy_str_to_u32((to), (index), (from), (length))
|
||||||
|
# define be64_copy(to, index, from, length) memcpy((to) + (index), (from), (length))
|
||||||
|
# define le64_copy(to, index, from, length) rhash_swap_copy_str_to_u64((to), (index), (from), (length))
|
||||||
|
# define me64_to_be_str(to, from, length) memcpy((to), (from), (length))
|
||||||
|
# define me64_to_le_str(to, from, length) rhash_swap_copy_u64_to_str((to), (from), (length))
|
||||||
|
|
||||||
|
#else /* CPU_BIG_ENDIAN */
|
||||||
|
# define be2me_32(x) bswap_32(x)
|
||||||
|
# define be2me_64(x) bswap_64(x)
|
||||||
|
# define le2me_32(x) (x)
|
||||||
|
# define le2me_64(x) (x)
|
||||||
|
|
||||||
|
# define be32_copy(to, index, from, length) rhash_swap_copy_str_to_u32((to), (index), (from), (length))
|
||||||
|
# define le32_copy(to, index, from, length) memcpy((to) + (index), (from), (length))
|
||||||
|
# define be64_copy(to, index, from, length) rhash_swap_copy_str_to_u64((to), (index), (from), (length))
|
||||||
|
# define le64_copy(to, index, from, length) memcpy((to) + (index), (from), (length))
|
||||||
|
# define me64_to_be_str(to, from, length) rhash_swap_copy_u64_to_str((to), (from), (length))
|
||||||
|
# define me64_to_le_str(to, from, length) memcpy((to), (from), (length))
|
||||||
|
#endif /* CPU_BIG_ENDIAN */
|
||||||
|
|
||||||
|
/* ROTL/ROTR macros rotate a 32/64-bit word left/right by n bits */
|
||||||
|
#define ROTL32(dword, n) ((dword) << (n) ^ ((dword) >> (32 - (n))))
|
||||||
|
#define ROTR32(dword, n) ((dword) >> (n) ^ ((dword) << (32 - (n))))
|
||||||
|
#define ROTL64(qword, n) ((qword) << (n) ^ ((qword) >> (64 - (n))))
|
||||||
|
#define ROTR64(qword, n) ((qword) >> (n) ^ ((qword) << (64 - (n))))
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* BYTE_ORDER_H */
|
30
external/Common/ustd.h
vendored
Normal file
30
external/Common/ustd.h
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* ustd.h common macros and includes */
|
||||||
|
#ifndef LIBRHASH_USTD_H
|
||||||
|
#define LIBRHASH_USTD_H
|
||||||
|
|
||||||
|
#if _MSC_VER >= 1300
|
||||||
|
|
||||||
|
# define int64_t __int64
|
||||||
|
# define int32_t __int32
|
||||||
|
# define int16_t __int16
|
||||||
|
# define int8_t __int8
|
||||||
|
# define uint64_t unsigned __int64
|
||||||
|
# define uint32_t unsigned __int32
|
||||||
|
# define uint16_t unsigned __int16
|
||||||
|
# define uint8_t unsigned __int8
|
||||||
|
|
||||||
|
/* disable warnings: The POSIX name for this item is deprecated. Use the ISO C++ conformant name. */
|
||||||
|
#pragma warning(disable : 4996)
|
||||||
|
|
||||||
|
#else /* _MSC_VER >= 1300 */
|
||||||
|
|
||||||
|
# include <stdint.h>
|
||||||
|
# include <unistd.h>
|
||||||
|
|
||||||
|
#endif /* _MSC_VER >= 1300 */
|
||||||
|
|
||||||
|
#if _MSC_VER <= 1300
|
||||||
|
# include <stdlib.h> /* size_t for vc6.0 */
|
||||||
|
#endif /* _MSC_VER <= 1300 */
|
||||||
|
|
||||||
|
#endif /* LIBRHASH_USTD_H */
|
207
external/Common/whirlpool.c
vendored
Normal file
207
external/Common/whirlpool.c
vendored
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
/* whirlpool.c - an implementation of the Whirlpool Hash Function.
|
||||||
|
*
|
||||||
|
* Copyright: 2009-2012 Aleksey Kravchenko <rhash.admin@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. Use this program at your own risk!
|
||||||
|
*
|
||||||
|
* Documentation:
|
||||||
|
* P. S. L. M. Barreto, V. Rijmen, ``The Whirlpool hashing function,''
|
||||||
|
* NESSIE submission, 2000 (tweaked version, 2001)
|
||||||
|
*
|
||||||
|
* The algorithm is named after the Whirlpool Galaxy in Canes Venatici.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "byte_order.h"
|
||||||
|
#include "whirlpool.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize context before calculating hash.
|
||||||
|
*
|
||||||
|
* @param ctx context to initialize
|
||||||
|
*/
|
||||||
|
void rhash_whirlpool_init(struct whirlpool_ctx* ctx)
|
||||||
|
{
|
||||||
|
ctx->length = 0;
|
||||||
|
memset(ctx->hash, 0, sizeof(ctx->hash));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Algorithm S-Box */
|
||||||
|
extern uint64_t rhash_whirlpool_sbox[8][256];
|
||||||
|
|
||||||
|
#define WHIRLPOOL_OP(src, shift) ( \
|
||||||
|
rhash_whirlpool_sbox[0][(int)(src[ shift & 7] >> 56) ] ^ \
|
||||||
|
rhash_whirlpool_sbox[1][(int)(src[(shift + 7) & 7] >> 48) & 0xff] ^ \
|
||||||
|
rhash_whirlpool_sbox[2][(int)(src[(shift + 6) & 7] >> 40) & 0xff] ^ \
|
||||||
|
rhash_whirlpool_sbox[3][(int)(src[(shift + 5) & 7] >> 32) & 0xff] ^ \
|
||||||
|
rhash_whirlpool_sbox[4][(int)(src[(shift + 4) & 7] >> 24) & 0xff] ^ \
|
||||||
|
rhash_whirlpool_sbox[5][(int)(src[(shift + 3) & 7] >> 16) & 0xff] ^ \
|
||||||
|
rhash_whirlpool_sbox[6][(int)(src[(shift + 2) & 7] >> 8) & 0xff] ^ \
|
||||||
|
rhash_whirlpool_sbox[7][(int)(src[(shift + 1) & 7] ) & 0xff])
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The core transformation. Process a 512-bit block.
|
||||||
|
*
|
||||||
|
* @param hash algorithm state
|
||||||
|
* @param block the message block to process
|
||||||
|
*/
|
||||||
|
static void rhash_whirlpool_process_block(uint64_t *hash, uint64_t* p_block)
|
||||||
|
{
|
||||||
|
int i; /* loop counter */
|
||||||
|
uint64_t K[2][8]; /* key */
|
||||||
|
uint64_t state[2][8]; /* state */
|
||||||
|
|
||||||
|
/* alternating binary flags */
|
||||||
|
unsigned int m = 0;
|
||||||
|
|
||||||
|
/* the number of rounds of the internal dedicated block cipher */
|
||||||
|
const int number_of_rounds = 10;
|
||||||
|
|
||||||
|
/* array used in the rounds */
|
||||||
|
static const uint64_t rc[10] = {
|
||||||
|
I64(0x1823c6e887b8014f),
|
||||||
|
I64(0x36a6d2f5796f9152),
|
||||||
|
I64(0x60bc9b8ea30c7b35),
|
||||||
|
I64(0x1de0d7c22e4bfe57),
|
||||||
|
I64(0x157737e59ff04ada),
|
||||||
|
I64(0x58c9290ab1a06b85),
|
||||||
|
I64(0xbd5d10f4cb3e0567),
|
||||||
|
I64(0xe427418ba77d95d8),
|
||||||
|
I64(0xfbee7c66dd17479e),
|
||||||
|
I64(0xca2dbf07ad5a8333)
|
||||||
|
};
|
||||||
|
|
||||||
|
/* map the message buffer to a block */
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
/* store K^0 and xor it with the intermediate hash state */
|
||||||
|
K[0][i] = hash[i];
|
||||||
|
state[0][i] = be2me_64(p_block[i]) ^ hash[i];
|
||||||
|
hash[i] = state[0][i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* iterate over algorithm rounds */
|
||||||
|
for (i = 0; i < number_of_rounds; i++)
|
||||||
|
{
|
||||||
|
/* compute K^i from K^{i-1} */
|
||||||
|
K[m ^ 1][0] = WHIRLPOOL_OP(K[m], 0) ^ rc[i];
|
||||||
|
K[m ^ 1][1] = WHIRLPOOL_OP(K[m], 1);
|
||||||
|
K[m ^ 1][2] = WHIRLPOOL_OP(K[m], 2);
|
||||||
|
K[m ^ 1][3] = WHIRLPOOL_OP(K[m], 3);
|
||||||
|
K[m ^ 1][4] = WHIRLPOOL_OP(K[m], 4);
|
||||||
|
K[m ^ 1][5] = WHIRLPOOL_OP(K[m], 5);
|
||||||
|
K[m ^ 1][6] = WHIRLPOOL_OP(K[m], 6);
|
||||||
|
K[m ^ 1][7] = WHIRLPOOL_OP(K[m], 7);
|
||||||
|
|
||||||
|
/* apply the i-th round transformation */
|
||||||
|
state[m ^ 1][0] = WHIRLPOOL_OP(state[m], 0) ^ K[m ^ 1][0];
|
||||||
|
state[m ^ 1][1] = WHIRLPOOL_OP(state[m], 1) ^ K[m ^ 1][1];
|
||||||
|
state[m ^ 1][2] = WHIRLPOOL_OP(state[m], 2) ^ K[m ^ 1][2];
|
||||||
|
state[m ^ 1][3] = WHIRLPOOL_OP(state[m], 3) ^ K[m ^ 1][3];
|
||||||
|
state[m ^ 1][4] = WHIRLPOOL_OP(state[m], 4) ^ K[m ^ 1][4];
|
||||||
|
state[m ^ 1][5] = WHIRLPOOL_OP(state[m], 5) ^ K[m ^ 1][5];
|
||||||
|
state[m ^ 1][6] = WHIRLPOOL_OP(state[m], 6) ^ K[m ^ 1][6];
|
||||||
|
state[m ^ 1][7] = WHIRLPOOL_OP(state[m], 7) ^ K[m ^ 1][7];
|
||||||
|
|
||||||
|
m = m ^ 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* apply the Miyaguchi-Preneel compression function */
|
||||||
|
hash[0] ^= state[0][0];
|
||||||
|
hash[1] ^= state[0][1];
|
||||||
|
hash[2] ^= state[0][2];
|
||||||
|
hash[3] ^= state[0][3];
|
||||||
|
hash[4] ^= state[0][4];
|
||||||
|
hash[5] ^= state[0][5];
|
||||||
|
hash[6] ^= state[0][6];
|
||||||
|
hash[7] ^= state[0][7];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate message hash.
|
||||||
|
* Can be called repeatedly with chunks of the message to be hashed.
|
||||||
|
*
|
||||||
|
* @param ctx the algorithm context containing current hashing state
|
||||||
|
* @param msg message chunk
|
||||||
|
* @param size length of the message chunk
|
||||||
|
*/
|
||||||
|
void rhash_whirlpool_update(whirlpool_ctx *ctx, const unsigned char* msg, size_t size)
|
||||||
|
{
|
||||||
|
unsigned index = (unsigned)ctx->length & 63;
|
||||||
|
unsigned left;
|
||||||
|
ctx->length += size;
|
||||||
|
|
||||||
|
/* fill partial block */
|
||||||
|
if (index) {
|
||||||
|
left = whirlpool_block_size - index;
|
||||||
|
memcpy(ctx->message + index, msg, (size < left ? size : left));
|
||||||
|
if (size < left) return;
|
||||||
|
|
||||||
|
/* process partial block */
|
||||||
|
rhash_whirlpool_process_block(ctx->hash, (uint64_t*)ctx->message);
|
||||||
|
msg += left;
|
||||||
|
size -= left;
|
||||||
|
}
|
||||||
|
while (size >= whirlpool_block_size) {
|
||||||
|
uint64_t* aligned_message_block;
|
||||||
|
if (IS_ALIGNED_64(msg)) {
|
||||||
|
/* the most common case is processing of an already aligned message
|
||||||
|
without copying it */
|
||||||
|
aligned_message_block = (uint64_t*)msg;
|
||||||
|
} else {
|
||||||
|
memcpy(ctx->message, msg, whirlpool_block_size);
|
||||||
|
aligned_message_block = (uint64_t*)ctx->message;
|
||||||
|
}
|
||||||
|
|
||||||
|
rhash_whirlpool_process_block(ctx->hash, aligned_message_block);
|
||||||
|
msg += whirlpool_block_size;
|
||||||
|
size -= whirlpool_block_size;
|
||||||
|
}
|
||||||
|
if (size) {
|
||||||
|
/* save leftovers */
|
||||||
|
memcpy(ctx->message, msg, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store calculated hash into the given array.
|
||||||
|
*
|
||||||
|
* @param ctx the algorithm context containing current hashing state
|
||||||
|
* @param result calculated hash in binary form
|
||||||
|
*/
|
||||||
|
void rhash_whirlpool_final(whirlpool_ctx *ctx, unsigned char* result)
|
||||||
|
{
|
||||||
|
unsigned index = (unsigned)ctx->length & 63;
|
||||||
|
uint64_t* msg64 = (uint64_t*)ctx->message;
|
||||||
|
|
||||||
|
/* pad message and run for last block */
|
||||||
|
ctx->message[index++] = 0x80;
|
||||||
|
|
||||||
|
/* if no room left in the message to store 256-bit message length */
|
||||||
|
if (index > 32) {
|
||||||
|
/* then pad the rest with zeros and process it */
|
||||||
|
while (index < 64) {
|
||||||
|
ctx->message[index++] = 0;
|
||||||
|
}
|
||||||
|
rhash_whirlpool_process_block(ctx->hash, msg64);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
/* due to optimization actually only 64-bit of message length are stored */
|
||||||
|
while (index < 56) {
|
||||||
|
ctx->message[index++] = 0;
|
||||||
|
}
|
||||||
|
msg64[7] = be2me_64(ctx->length << 3);
|
||||||
|
rhash_whirlpool_process_block(ctx->hash, msg64);
|
||||||
|
|
||||||
|
/* save result hash */
|
||||||
|
be64_copy(result, 0, ctx->hash, 64);
|
||||||
|
}
|
550
external/Common/whirlpool_sbox.c
vendored
Normal file
550
external/Common/whirlpool_sbox.c
vendored
Normal file
@ -0,0 +1,550 @@
|
|||||||
|
/* whirlpool_sbox.c - S-Box for the Whirlpool hash function
|
||||||
|
*
|
||||||
|
* Copyright: 2009-2012 Aleksey Kravchenko <rhash.admin@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. Use this program at your own risk!
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "byte_order.h"
|
||||||
|
|
||||||
|
uint64_t rhash_whirlpool_sbox[8][256] = {
|
||||||
|
{
|
||||||
|
/* C0 vectors */
|
||||||
|
I64(0x18186018c07830d8), I64(0x23238c2305af4626), I64(0xc6c63fc67ef991b8), I64(0xe8e887e8136fcdfb),
|
||||||
|
I64(0x878726874ca113cb), I64(0xb8b8dab8a9626d11), I64(0x0101040108050209), I64(0x4f4f214f426e9e0d),
|
||||||
|
I64(0x3636d836adee6c9b), I64(0xa6a6a2a6590451ff), I64(0xd2d26fd2debdb90c), I64(0xf5f5f3f5fb06f70e),
|
||||||
|
I64(0x7979f979ef80f296), I64(0x6f6fa16f5fcede30), I64(0x91917e91fcef3f6d), I64(0x52525552aa07a4f8),
|
||||||
|
I64(0x60609d6027fdc047), I64(0xbcbccabc89766535), I64(0x9b9b569baccd2b37), I64(0x8e8e028e048c018a),
|
||||||
|
I64(0xa3a3b6a371155bd2), I64(0x0c0c300c603c186c), I64(0x7b7bf17bff8af684), I64(0x3535d435b5e16a80),
|
||||||
|
I64(0x1d1d741de8693af5), I64(0xe0e0a7e05347ddb3), I64(0xd7d77bd7f6acb321), I64(0xc2c22fc25eed999c),
|
||||||
|
I64(0x2e2eb82e6d965c43), I64(0x4b4b314b627a9629), I64(0xfefedffea321e15d), I64(0x575741578216aed5),
|
||||||
|
I64(0x15155415a8412abd), I64(0x7777c1779fb6eee8), I64(0x3737dc37a5eb6e92), I64(0xe5e5b3e57b56d79e),
|
||||||
|
I64(0x9f9f469f8cd92313), I64(0xf0f0e7f0d317fd23), I64(0x4a4a354a6a7f9420), I64(0xdada4fda9e95a944),
|
||||||
|
I64(0x58587d58fa25b0a2), I64(0xc9c903c906ca8fcf), I64(0x2929a429558d527c), I64(0x0a0a280a5022145a),
|
||||||
|
I64(0xb1b1feb1e14f7f50), I64(0xa0a0baa0691a5dc9), I64(0x6b6bb16b7fdad614), I64(0x85852e855cab17d9),
|
||||||
|
I64(0xbdbdcebd8173673c), I64(0x5d5d695dd234ba8f), I64(0x1010401080502090), I64(0xf4f4f7f4f303f507),
|
||||||
|
I64(0xcbcb0bcb16c08bdd), I64(0x3e3ef83eedc67cd3), I64(0x0505140528110a2d), I64(0x676781671fe6ce78),
|
||||||
|
I64(0xe4e4b7e47353d597), I64(0x27279c2725bb4e02), I64(0x4141194132588273), I64(0x8b8b168b2c9d0ba7),
|
||||||
|
I64(0xa7a7a6a7510153f6), I64(0x7d7de97dcf94fab2), I64(0x95956e95dcfb3749), I64(0xd8d847d88e9fad56),
|
||||||
|
I64(0xfbfbcbfb8b30eb70), I64(0xeeee9fee2371c1cd), I64(0x7c7ced7cc791f8bb), I64(0x6666856617e3cc71),
|
||||||
|
I64(0xdddd53dda68ea77b), I64(0x17175c17b84b2eaf), I64(0x4747014702468e45), I64(0x9e9e429e84dc211a),
|
||||||
|
I64(0xcaca0fca1ec589d4), I64(0x2d2db42d75995a58), I64(0xbfbfc6bf9179632e), I64(0x07071c07381b0e3f),
|
||||||
|
I64(0xadad8ead012347ac), I64(0x5a5a755aea2fb4b0), I64(0x838336836cb51bef), I64(0x3333cc3385ff66b6),
|
||||||
|
I64(0x636391633ff2c65c), I64(0x02020802100a0412), I64(0xaaaa92aa39384993), I64(0x7171d971afa8e2de),
|
||||||
|
I64(0xc8c807c80ecf8dc6), I64(0x19196419c87d32d1), I64(0x494939497270923b), I64(0xd9d943d9869aaf5f),
|
||||||
|
I64(0xf2f2eff2c31df931), I64(0xe3e3abe34b48dba8), I64(0x5b5b715be22ab6b9), I64(0x88881a8834920dbc),
|
||||||
|
I64(0x9a9a529aa4c8293e), I64(0x262698262dbe4c0b), I64(0x3232c8328dfa64bf), I64(0xb0b0fab0e94a7d59),
|
||||||
|
I64(0xe9e983e91b6acff2), I64(0x0f0f3c0f78331e77), I64(0xd5d573d5e6a6b733), I64(0x80803a8074ba1df4),
|
||||||
|
I64(0xbebec2be997c6127), I64(0xcdcd13cd26de87eb), I64(0x3434d034bde46889), I64(0x48483d487a759032),
|
||||||
|
I64(0xffffdbffab24e354), I64(0x7a7af57af78ff48d), I64(0x90907a90f4ea3d64), I64(0x5f5f615fc23ebe9d),
|
||||||
|
I64(0x202080201da0403d), I64(0x6868bd6867d5d00f), I64(0x1a1a681ad07234ca), I64(0xaeae82ae192c41b7),
|
||||||
|
I64(0xb4b4eab4c95e757d), I64(0x54544d549a19a8ce), I64(0x93937693ece53b7f), I64(0x222288220daa442f),
|
||||||
|
I64(0x64648d6407e9c863), I64(0xf1f1e3f1db12ff2a), I64(0x7373d173bfa2e6cc), I64(0x12124812905a2482),
|
||||||
|
I64(0x40401d403a5d807a), I64(0x0808200840281048), I64(0xc3c32bc356e89b95), I64(0xecec97ec337bc5df),
|
||||||
|
I64(0xdbdb4bdb9690ab4d), I64(0xa1a1bea1611f5fc0), I64(0x8d8d0e8d1c830791), I64(0x3d3df43df5c97ac8),
|
||||||
|
I64(0x97976697ccf1335b), I64(0x0000000000000000), I64(0xcfcf1bcf36d483f9), I64(0x2b2bac2b4587566e),
|
||||||
|
I64(0x7676c57697b3ece1), I64(0x8282328264b019e6), I64(0xd6d67fd6fea9b128), I64(0x1b1b6c1bd87736c3),
|
||||||
|
I64(0xb5b5eeb5c15b7774), I64(0xafaf86af112943be), I64(0x6a6ab56a77dfd41d), I64(0x50505d50ba0da0ea),
|
||||||
|
I64(0x45450945124c8a57), I64(0xf3f3ebf3cb18fb38), I64(0x3030c0309df060ad), I64(0xefef9bef2b74c3c4),
|
||||||
|
I64(0x3f3ffc3fe5c37eda), I64(0x55554955921caac7), I64(0xa2a2b2a2791059db), I64(0xeaea8fea0365c9e9),
|
||||||
|
I64(0x656589650fecca6a), I64(0xbabad2bab9686903), I64(0x2f2fbc2f65935e4a), I64(0xc0c027c04ee79d8e),
|
||||||
|
I64(0xdede5fdebe81a160), I64(0x1c1c701ce06c38fc), I64(0xfdfdd3fdbb2ee746), I64(0x4d4d294d52649a1f),
|
||||||
|
I64(0x92927292e4e03976), I64(0x7575c9758fbceafa), I64(0x06061806301e0c36), I64(0x8a8a128a249809ae),
|
||||||
|
I64(0xb2b2f2b2f940794b), I64(0xe6e6bfe66359d185), I64(0x0e0e380e70361c7e), I64(0x1f1f7c1ff8633ee7),
|
||||||
|
I64(0x6262956237f7c455), I64(0xd4d477d4eea3b53a), I64(0xa8a89aa829324d81), I64(0x96966296c4f43152),
|
||||||
|
I64(0xf9f9c3f99b3aef62), I64(0xc5c533c566f697a3), I64(0x2525942535b14a10), I64(0x59597959f220b2ab),
|
||||||
|
I64(0x84842a8454ae15d0), I64(0x7272d572b7a7e4c5), I64(0x3939e439d5dd72ec), I64(0x4c4c2d4c5a619816),
|
||||||
|
I64(0x5e5e655eca3bbc94), I64(0x7878fd78e785f09f), I64(0x3838e038ddd870e5), I64(0x8c8c0a8c14860598),
|
||||||
|
I64(0xd1d163d1c6b2bf17), I64(0xa5a5aea5410b57e4), I64(0xe2e2afe2434dd9a1), I64(0x616199612ff8c24e),
|
||||||
|
I64(0xb3b3f6b3f1457b42), I64(0x2121842115a54234), I64(0x9c9c4a9c94d62508), I64(0x1e1e781ef0663cee),
|
||||||
|
I64(0x4343114322528661), I64(0xc7c73bc776fc93b1), I64(0xfcfcd7fcb32be54f), I64(0x0404100420140824),
|
||||||
|
I64(0x51515951b208a2e3), I64(0x99995e99bcc72f25), I64(0x6d6da96d4fc4da22), I64(0x0d0d340d68391a65),
|
||||||
|
I64(0xfafacffa8335e979), I64(0xdfdf5bdfb684a369), I64(0x7e7ee57ed79bfca9), I64(0x242490243db44819),
|
||||||
|
I64(0x3b3bec3bc5d776fe), I64(0xabab96ab313d4b9a), I64(0xcece1fce3ed181f0), I64(0x1111441188552299),
|
||||||
|
I64(0x8f8f068f0c890383), I64(0x4e4e254e4a6b9c04), I64(0xb7b7e6b7d1517366), I64(0xebeb8beb0b60cbe0),
|
||||||
|
I64(0x3c3cf03cfdcc78c1), I64(0x81813e817cbf1ffd), I64(0x94946a94d4fe3540), I64(0xf7f7fbf7eb0cf31c),
|
||||||
|
I64(0xb9b9deb9a1676f18), I64(0x13134c13985f268b), I64(0x2c2cb02c7d9c5851), I64(0xd3d36bd3d6b8bb05),
|
||||||
|
I64(0xe7e7bbe76b5cd38c), I64(0x6e6ea56e57cbdc39), I64(0xc4c437c46ef395aa), I64(0x03030c03180f061b),
|
||||||
|
I64(0x565645568a13acdc), I64(0x44440d441a49885e), I64(0x7f7fe17fdf9efea0), I64(0xa9a99ea921374f88),
|
||||||
|
I64(0x2a2aa82a4d825467), I64(0xbbbbd6bbb16d6b0a), I64(0xc1c123c146e29f87), I64(0x53535153a202a6f1),
|
||||||
|
I64(0xdcdc57dcae8ba572), I64(0x0b0b2c0b58271653), I64(0x9d9d4e9d9cd32701), I64(0x6c6cad6c47c1d82b),
|
||||||
|
I64(0x3131c43195f562a4), I64(0x7474cd7487b9e8f3), I64(0xf6f6fff6e309f115), I64(0x464605460a438c4c),
|
||||||
|
I64(0xacac8aac092645a5), I64(0x89891e893c970fb5), I64(0x14145014a04428b4), I64(0xe1e1a3e15b42dfba),
|
||||||
|
I64(0x16165816b04e2ca6), I64(0x3a3ae83acdd274f7), I64(0x6969b9696fd0d206), I64(0x09092409482d1241),
|
||||||
|
I64(0x7070dd70a7ade0d7), I64(0xb6b6e2b6d954716f), I64(0xd0d067d0ceb7bd1e), I64(0xeded93ed3b7ec7d6),
|
||||||
|
I64(0xcccc17cc2edb85e2), I64(0x424215422a578468), I64(0x98985a98b4c22d2c), I64(0xa4a4aaa4490e55ed),
|
||||||
|
I64(0x2828a0285d885075), I64(0x5c5c6d5cda31b886), I64(0xf8f8c7f8933fed6b), I64(0x8686228644a411c2),
|
||||||
|
}, {
|
||||||
|
/* C1 vectors */
|
||||||
|
I64(0xd818186018c07830), I64(0x2623238c2305af46), I64(0xb8c6c63fc67ef991), I64(0xfbe8e887e8136fcd),
|
||||||
|
I64(0xcb878726874ca113), I64(0x11b8b8dab8a9626d), I64(0x0901010401080502), I64(0x0d4f4f214f426e9e),
|
||||||
|
I64(0x9b3636d836adee6c), I64(0xffa6a6a2a6590451), I64(0x0cd2d26fd2debdb9), I64(0x0ef5f5f3f5fb06f7),
|
||||||
|
I64(0x967979f979ef80f2), I64(0x306f6fa16f5fcede), I64(0x6d91917e91fcef3f), I64(0xf852525552aa07a4),
|
||||||
|
I64(0x4760609d6027fdc0), I64(0x35bcbccabc897665), I64(0x379b9b569baccd2b), I64(0x8a8e8e028e048c01),
|
||||||
|
I64(0xd2a3a3b6a371155b), I64(0x6c0c0c300c603c18), I64(0x847b7bf17bff8af6), I64(0x803535d435b5e16a),
|
||||||
|
I64(0xf51d1d741de8693a), I64(0xb3e0e0a7e05347dd), I64(0x21d7d77bd7f6acb3), I64(0x9cc2c22fc25eed99),
|
||||||
|
I64(0x432e2eb82e6d965c), I64(0x294b4b314b627a96), I64(0x5dfefedffea321e1), I64(0xd5575741578216ae),
|
||||||
|
I64(0xbd15155415a8412a), I64(0xe87777c1779fb6ee), I64(0x923737dc37a5eb6e), I64(0x9ee5e5b3e57b56d7),
|
||||||
|
I64(0x139f9f469f8cd923), I64(0x23f0f0e7f0d317fd), I64(0x204a4a354a6a7f94), I64(0x44dada4fda9e95a9),
|
||||||
|
I64(0xa258587d58fa25b0), I64(0xcfc9c903c906ca8f), I64(0x7c2929a429558d52), I64(0x5a0a0a280a502214),
|
||||||
|
I64(0x50b1b1feb1e14f7f), I64(0xc9a0a0baa0691a5d), I64(0x146b6bb16b7fdad6), I64(0xd985852e855cab17),
|
||||||
|
I64(0x3cbdbdcebd817367), I64(0x8f5d5d695dd234ba), I64(0x9010104010805020), I64(0x07f4f4f7f4f303f5),
|
||||||
|
I64(0xddcbcb0bcb16c08b), I64(0xd33e3ef83eedc67c), I64(0x2d0505140528110a), I64(0x78676781671fe6ce),
|
||||||
|
I64(0x97e4e4b7e47353d5), I64(0x0227279c2725bb4e), I64(0x7341411941325882), I64(0xa78b8b168b2c9d0b),
|
||||||
|
I64(0xf6a7a7a6a7510153), I64(0xb27d7de97dcf94fa), I64(0x4995956e95dcfb37), I64(0x56d8d847d88e9fad),
|
||||||
|
I64(0x70fbfbcbfb8b30eb), I64(0xcdeeee9fee2371c1), I64(0xbb7c7ced7cc791f8), I64(0x716666856617e3cc),
|
||||||
|
I64(0x7bdddd53dda68ea7), I64(0xaf17175c17b84b2e), I64(0x454747014702468e), I64(0x1a9e9e429e84dc21),
|
||||||
|
I64(0xd4caca0fca1ec589), I64(0x582d2db42d75995a), I64(0x2ebfbfc6bf917963), I64(0x3f07071c07381b0e),
|
||||||
|
I64(0xacadad8ead012347), I64(0xb05a5a755aea2fb4), I64(0xef838336836cb51b), I64(0xb63333cc3385ff66),
|
||||||
|
I64(0x5c636391633ff2c6), I64(0x1202020802100a04), I64(0x93aaaa92aa393849), I64(0xde7171d971afa8e2),
|
||||||
|
I64(0xc6c8c807c80ecf8d), I64(0xd119196419c87d32), I64(0x3b49493949727092), I64(0x5fd9d943d9869aaf),
|
||||||
|
I64(0x31f2f2eff2c31df9), I64(0xa8e3e3abe34b48db), I64(0xb95b5b715be22ab6), I64(0xbc88881a8834920d),
|
||||||
|
I64(0x3e9a9a529aa4c829), I64(0x0b262698262dbe4c), I64(0xbf3232c8328dfa64), I64(0x59b0b0fab0e94a7d),
|
||||||
|
I64(0xf2e9e983e91b6acf), I64(0x770f0f3c0f78331e), I64(0x33d5d573d5e6a6b7), I64(0xf480803a8074ba1d),
|
||||||
|
I64(0x27bebec2be997c61), I64(0xebcdcd13cd26de87), I64(0x893434d034bde468), I64(0x3248483d487a7590),
|
||||||
|
I64(0x54ffffdbffab24e3), I64(0x8d7a7af57af78ff4), I64(0x6490907a90f4ea3d), I64(0x9d5f5f615fc23ebe),
|
||||||
|
I64(0x3d202080201da040), I64(0x0f6868bd6867d5d0), I64(0xca1a1a681ad07234), I64(0xb7aeae82ae192c41),
|
||||||
|
I64(0x7db4b4eab4c95e75), I64(0xce54544d549a19a8), I64(0x7f93937693ece53b), I64(0x2f222288220daa44),
|
||||||
|
I64(0x6364648d6407e9c8), I64(0x2af1f1e3f1db12ff), I64(0xcc7373d173bfa2e6), I64(0x8212124812905a24),
|
||||||
|
I64(0x7a40401d403a5d80), I64(0x4808082008402810), I64(0x95c3c32bc356e89b), I64(0xdfecec97ec337bc5),
|
||||||
|
I64(0x4ddbdb4bdb9690ab), I64(0xc0a1a1bea1611f5f), I64(0x918d8d0e8d1c8307), I64(0xc83d3df43df5c97a),
|
||||||
|
I64(0x5b97976697ccf133), I64(0x0000000000000000), I64(0xf9cfcf1bcf36d483), I64(0x6e2b2bac2b458756),
|
||||||
|
I64(0xe17676c57697b3ec), I64(0xe68282328264b019), I64(0x28d6d67fd6fea9b1), I64(0xc31b1b6c1bd87736),
|
||||||
|
I64(0x74b5b5eeb5c15b77), I64(0xbeafaf86af112943), I64(0x1d6a6ab56a77dfd4), I64(0xea50505d50ba0da0),
|
||||||
|
I64(0x5745450945124c8a), I64(0x38f3f3ebf3cb18fb), I64(0xad3030c0309df060), I64(0xc4efef9bef2b74c3),
|
||||||
|
I64(0xda3f3ffc3fe5c37e), I64(0xc755554955921caa), I64(0xdba2a2b2a2791059), I64(0xe9eaea8fea0365c9),
|
||||||
|
I64(0x6a656589650fecca), I64(0x03babad2bab96869), I64(0x4a2f2fbc2f65935e), I64(0x8ec0c027c04ee79d),
|
||||||
|
I64(0x60dede5fdebe81a1), I64(0xfc1c1c701ce06c38), I64(0x46fdfdd3fdbb2ee7), I64(0x1f4d4d294d52649a),
|
||||||
|
I64(0x7692927292e4e039), I64(0xfa7575c9758fbcea), I64(0x3606061806301e0c), I64(0xae8a8a128a249809),
|
||||||
|
I64(0x4bb2b2f2b2f94079), I64(0x85e6e6bfe66359d1), I64(0x7e0e0e380e70361c), I64(0xe71f1f7c1ff8633e),
|
||||||
|
I64(0x556262956237f7c4), I64(0x3ad4d477d4eea3b5), I64(0x81a8a89aa829324d), I64(0x5296966296c4f431),
|
||||||
|
I64(0x62f9f9c3f99b3aef), I64(0xa3c5c533c566f697), I64(0x102525942535b14a), I64(0xab59597959f220b2),
|
||||||
|
I64(0xd084842a8454ae15), I64(0xc57272d572b7a7e4), I64(0xec3939e439d5dd72), I64(0x164c4c2d4c5a6198),
|
||||||
|
I64(0x945e5e655eca3bbc), I64(0x9f7878fd78e785f0), I64(0xe53838e038ddd870), I64(0x988c8c0a8c148605),
|
||||||
|
I64(0x17d1d163d1c6b2bf), I64(0xe4a5a5aea5410b57), I64(0xa1e2e2afe2434dd9), I64(0x4e616199612ff8c2),
|
||||||
|
I64(0x42b3b3f6b3f1457b), I64(0x342121842115a542), I64(0x089c9c4a9c94d625), I64(0xee1e1e781ef0663c),
|
||||||
|
I64(0x6143431143225286), I64(0xb1c7c73bc776fc93), I64(0x4ffcfcd7fcb32be5), I64(0x2404041004201408),
|
||||||
|
I64(0xe351515951b208a2), I64(0x2599995e99bcc72f), I64(0x226d6da96d4fc4da), I64(0x650d0d340d68391a),
|
||||||
|
I64(0x79fafacffa8335e9), I64(0x69dfdf5bdfb684a3), I64(0xa97e7ee57ed79bfc), I64(0x19242490243db448),
|
||||||
|
I64(0xfe3b3bec3bc5d776), I64(0x9aabab96ab313d4b), I64(0xf0cece1fce3ed181), I64(0x9911114411885522),
|
||||||
|
I64(0x838f8f068f0c8903), I64(0x044e4e254e4a6b9c), I64(0x66b7b7e6b7d15173), I64(0xe0ebeb8beb0b60cb),
|
||||||
|
I64(0xc13c3cf03cfdcc78), I64(0xfd81813e817cbf1f), I64(0x4094946a94d4fe35), I64(0x1cf7f7fbf7eb0cf3),
|
||||||
|
I64(0x18b9b9deb9a1676f), I64(0x8b13134c13985f26), I64(0x512c2cb02c7d9c58), I64(0x05d3d36bd3d6b8bb),
|
||||||
|
I64(0x8ce7e7bbe76b5cd3), I64(0x396e6ea56e57cbdc), I64(0xaac4c437c46ef395), I64(0x1b03030c03180f06),
|
||||||
|
I64(0xdc565645568a13ac), I64(0x5e44440d441a4988), I64(0xa07f7fe17fdf9efe), I64(0x88a9a99ea921374f),
|
||||||
|
I64(0x672a2aa82a4d8254), I64(0x0abbbbd6bbb16d6b), I64(0x87c1c123c146e29f), I64(0xf153535153a202a6),
|
||||||
|
I64(0x72dcdc57dcae8ba5), I64(0x530b0b2c0b582716), I64(0x019d9d4e9d9cd327), I64(0x2b6c6cad6c47c1d8),
|
||||||
|
I64(0xa43131c43195f562), I64(0xf37474cd7487b9e8), I64(0x15f6f6fff6e309f1), I64(0x4c464605460a438c),
|
||||||
|
I64(0xa5acac8aac092645), I64(0xb589891e893c970f), I64(0xb414145014a04428), I64(0xbae1e1a3e15b42df),
|
||||||
|
I64(0xa616165816b04e2c), I64(0xf73a3ae83acdd274), I64(0x066969b9696fd0d2), I64(0x4109092409482d12),
|
||||||
|
I64(0xd77070dd70a7ade0), I64(0x6fb6b6e2b6d95471), I64(0x1ed0d067d0ceb7bd), I64(0xd6eded93ed3b7ec7),
|
||||||
|
I64(0xe2cccc17cc2edb85), I64(0x68424215422a5784), I64(0x2c98985a98b4c22d), I64(0xeda4a4aaa4490e55),
|
||||||
|
I64(0x752828a0285d8850), I64(0x865c5c6d5cda31b8), I64(0x6bf8f8c7f8933fed), I64(0xc28686228644a411),
|
||||||
|
}, {
|
||||||
|
/* C2 vectors */
|
||||||
|
I64(0x30d818186018c078), I64(0x462623238c2305af), I64(0x91b8c6c63fc67ef9), I64(0xcdfbe8e887e8136f),
|
||||||
|
I64(0x13cb878726874ca1), I64(0x6d11b8b8dab8a962), I64(0x0209010104010805), I64(0x9e0d4f4f214f426e),
|
||||||
|
I64(0x6c9b3636d836adee), I64(0x51ffa6a6a2a65904), I64(0xb90cd2d26fd2debd), I64(0xf70ef5f5f3f5fb06),
|
||||||
|
I64(0xf2967979f979ef80), I64(0xde306f6fa16f5fce), I64(0x3f6d91917e91fcef), I64(0xa4f852525552aa07),
|
||||||
|
I64(0xc04760609d6027fd), I64(0x6535bcbccabc8976), I64(0x2b379b9b569baccd), I64(0x018a8e8e028e048c),
|
||||||
|
I64(0x5bd2a3a3b6a37115), I64(0x186c0c0c300c603c), I64(0xf6847b7bf17bff8a), I64(0x6a803535d435b5e1),
|
||||||
|
I64(0x3af51d1d741de869), I64(0xddb3e0e0a7e05347), I64(0xb321d7d77bd7f6ac), I64(0x999cc2c22fc25eed),
|
||||||
|
I64(0x5c432e2eb82e6d96), I64(0x96294b4b314b627a), I64(0xe15dfefedffea321), I64(0xaed5575741578216),
|
||||||
|
I64(0x2abd15155415a841), I64(0xeee87777c1779fb6), I64(0x6e923737dc37a5eb), I64(0xd79ee5e5b3e57b56),
|
||||||
|
I64(0x23139f9f469f8cd9), I64(0xfd23f0f0e7f0d317), I64(0x94204a4a354a6a7f), I64(0xa944dada4fda9e95),
|
||||||
|
I64(0xb0a258587d58fa25), I64(0x8fcfc9c903c906ca), I64(0x527c2929a429558d), I64(0x145a0a0a280a5022),
|
||||||
|
I64(0x7f50b1b1feb1e14f), I64(0x5dc9a0a0baa0691a), I64(0xd6146b6bb16b7fda), I64(0x17d985852e855cab),
|
||||||
|
I64(0x673cbdbdcebd8173), I64(0xba8f5d5d695dd234), I64(0x2090101040108050), I64(0xf507f4f4f7f4f303),
|
||||||
|
I64(0x8bddcbcb0bcb16c0), I64(0x7cd33e3ef83eedc6), I64(0x0a2d050514052811), I64(0xce78676781671fe6),
|
||||||
|
I64(0xd597e4e4b7e47353), I64(0x4e0227279c2725bb), I64(0x8273414119413258), I64(0x0ba78b8b168b2c9d),
|
||||||
|
I64(0x53f6a7a7a6a75101), I64(0xfab27d7de97dcf94), I64(0x374995956e95dcfb), I64(0xad56d8d847d88e9f),
|
||||||
|
I64(0xeb70fbfbcbfb8b30), I64(0xc1cdeeee9fee2371), I64(0xf8bb7c7ced7cc791), I64(0xcc716666856617e3),
|
||||||
|
I64(0xa77bdddd53dda68e), I64(0x2eaf17175c17b84b), I64(0x8e45474701470246), I64(0x211a9e9e429e84dc),
|
||||||
|
I64(0x89d4caca0fca1ec5), I64(0x5a582d2db42d7599), I64(0x632ebfbfc6bf9179), I64(0x0e3f07071c07381b),
|
||||||
|
I64(0x47acadad8ead0123), I64(0xb4b05a5a755aea2f), I64(0x1bef838336836cb5), I64(0x66b63333cc3385ff),
|
||||||
|
I64(0xc65c636391633ff2), I64(0x041202020802100a), I64(0x4993aaaa92aa3938), I64(0xe2de7171d971afa8),
|
||||||
|
I64(0x8dc6c8c807c80ecf), I64(0x32d119196419c87d), I64(0x923b494939497270), I64(0xaf5fd9d943d9869a),
|
||||||
|
I64(0xf931f2f2eff2c31d), I64(0xdba8e3e3abe34b48), I64(0xb6b95b5b715be22a), I64(0x0dbc88881a883492),
|
||||||
|
I64(0x293e9a9a529aa4c8), I64(0x4c0b262698262dbe), I64(0x64bf3232c8328dfa), I64(0x7d59b0b0fab0e94a),
|
||||||
|
I64(0xcff2e9e983e91b6a), I64(0x1e770f0f3c0f7833), I64(0xb733d5d573d5e6a6), I64(0x1df480803a8074ba),
|
||||||
|
I64(0x6127bebec2be997c), I64(0x87ebcdcd13cd26de), I64(0x68893434d034bde4), I64(0x903248483d487a75),
|
||||||
|
I64(0xe354ffffdbffab24), I64(0xf48d7a7af57af78f), I64(0x3d6490907a90f4ea), I64(0xbe9d5f5f615fc23e),
|
||||||
|
I64(0x403d202080201da0), I64(0xd00f6868bd6867d5), I64(0x34ca1a1a681ad072), I64(0x41b7aeae82ae192c),
|
||||||
|
I64(0x757db4b4eab4c95e), I64(0xa8ce54544d549a19), I64(0x3b7f93937693ece5), I64(0x442f222288220daa),
|
||||||
|
I64(0xc86364648d6407e9), I64(0xff2af1f1e3f1db12), I64(0xe6cc7373d173bfa2), I64(0x248212124812905a),
|
||||||
|
I64(0x807a40401d403a5d), I64(0x1048080820084028), I64(0x9b95c3c32bc356e8), I64(0xc5dfecec97ec337b),
|
||||||
|
I64(0xab4ddbdb4bdb9690), I64(0x5fc0a1a1bea1611f), I64(0x07918d8d0e8d1c83), I64(0x7ac83d3df43df5c9),
|
||||||
|
I64(0x335b97976697ccf1), I64(0x0000000000000000), I64(0x83f9cfcf1bcf36d4), I64(0x566e2b2bac2b4587),
|
||||||
|
I64(0xece17676c57697b3), I64(0x19e68282328264b0), I64(0xb128d6d67fd6fea9), I64(0x36c31b1b6c1bd877),
|
||||||
|
I64(0x7774b5b5eeb5c15b), I64(0x43beafaf86af1129), I64(0xd41d6a6ab56a77df), I64(0xa0ea50505d50ba0d),
|
||||||
|
I64(0x8a5745450945124c), I64(0xfb38f3f3ebf3cb18), I64(0x60ad3030c0309df0), I64(0xc3c4efef9bef2b74),
|
||||||
|
I64(0x7eda3f3ffc3fe5c3), I64(0xaac755554955921c), I64(0x59dba2a2b2a27910), I64(0xc9e9eaea8fea0365),
|
||||||
|
I64(0xca6a656589650fec), I64(0x6903babad2bab968), I64(0x5e4a2f2fbc2f6593), I64(0x9d8ec0c027c04ee7),
|
||||||
|
I64(0xa160dede5fdebe81), I64(0x38fc1c1c701ce06c), I64(0xe746fdfdd3fdbb2e), I64(0x9a1f4d4d294d5264),
|
||||||
|
I64(0x397692927292e4e0), I64(0xeafa7575c9758fbc), I64(0x0c3606061806301e), I64(0x09ae8a8a128a2498),
|
||||||
|
I64(0x794bb2b2f2b2f940), I64(0xd185e6e6bfe66359), I64(0x1c7e0e0e380e7036), I64(0x3ee71f1f7c1ff863),
|
||||||
|
I64(0xc4556262956237f7), I64(0xb53ad4d477d4eea3), I64(0x4d81a8a89aa82932), I64(0x315296966296c4f4),
|
||||||
|
I64(0xef62f9f9c3f99b3a), I64(0x97a3c5c533c566f6), I64(0x4a102525942535b1), I64(0xb2ab59597959f220),
|
||||||
|
I64(0x15d084842a8454ae), I64(0xe4c57272d572b7a7), I64(0x72ec3939e439d5dd), I64(0x98164c4c2d4c5a61),
|
||||||
|
I64(0xbc945e5e655eca3b), I64(0xf09f7878fd78e785), I64(0x70e53838e038ddd8), I64(0x05988c8c0a8c1486),
|
||||||
|
I64(0xbf17d1d163d1c6b2), I64(0x57e4a5a5aea5410b), I64(0xd9a1e2e2afe2434d), I64(0xc24e616199612ff8),
|
||||||
|
I64(0x7b42b3b3f6b3f145), I64(0x42342121842115a5), I64(0x25089c9c4a9c94d6), I64(0x3cee1e1e781ef066),
|
||||||
|
I64(0x8661434311432252), I64(0x93b1c7c73bc776fc), I64(0xe54ffcfcd7fcb32b), I64(0x0824040410042014),
|
||||||
|
I64(0xa2e351515951b208), I64(0x2f2599995e99bcc7), I64(0xda226d6da96d4fc4), I64(0x1a650d0d340d6839),
|
||||||
|
I64(0xe979fafacffa8335), I64(0xa369dfdf5bdfb684), I64(0xfca97e7ee57ed79b), I64(0x4819242490243db4),
|
||||||
|
I64(0x76fe3b3bec3bc5d7), I64(0x4b9aabab96ab313d), I64(0x81f0cece1fce3ed1), I64(0x2299111144118855),
|
||||||
|
I64(0x03838f8f068f0c89), I64(0x9c044e4e254e4a6b), I64(0x7366b7b7e6b7d151), I64(0xcbe0ebeb8beb0b60),
|
||||||
|
I64(0x78c13c3cf03cfdcc), I64(0x1ffd81813e817cbf), I64(0x354094946a94d4fe), I64(0xf31cf7f7fbf7eb0c),
|
||||||
|
I64(0x6f18b9b9deb9a167), I64(0x268b13134c13985f), I64(0x58512c2cb02c7d9c), I64(0xbb05d3d36bd3d6b8),
|
||||||
|
I64(0xd38ce7e7bbe76b5c), I64(0xdc396e6ea56e57cb), I64(0x95aac4c437c46ef3), I64(0x061b03030c03180f),
|
||||||
|
I64(0xacdc565645568a13), I64(0x885e44440d441a49), I64(0xfea07f7fe17fdf9e), I64(0x4f88a9a99ea92137),
|
||||||
|
I64(0x54672a2aa82a4d82), I64(0x6b0abbbbd6bbb16d), I64(0x9f87c1c123c146e2), I64(0xa6f153535153a202),
|
||||||
|
I64(0xa572dcdc57dcae8b), I64(0x16530b0b2c0b5827), I64(0x27019d9d4e9d9cd3), I64(0xd82b6c6cad6c47c1),
|
||||||
|
I64(0x62a43131c43195f5), I64(0xe8f37474cd7487b9), I64(0xf115f6f6fff6e309), I64(0x8c4c464605460a43),
|
||||||
|
I64(0x45a5acac8aac0926), I64(0x0fb589891e893c97), I64(0x28b414145014a044), I64(0xdfbae1e1a3e15b42),
|
||||||
|
I64(0x2ca616165816b04e), I64(0x74f73a3ae83acdd2), I64(0xd2066969b9696fd0), I64(0x124109092409482d),
|
||||||
|
I64(0xe0d77070dd70a7ad), I64(0x716fb6b6e2b6d954), I64(0xbd1ed0d067d0ceb7), I64(0xc7d6eded93ed3b7e),
|
||||||
|
I64(0x85e2cccc17cc2edb), I64(0x8468424215422a57), I64(0x2d2c98985a98b4c2), I64(0x55eda4a4aaa4490e),
|
||||||
|
I64(0x50752828a0285d88), I64(0xb8865c5c6d5cda31), I64(0xed6bf8f8c7f8933f), I64(0x11c28686228644a4),
|
||||||
|
}, {
|
||||||
|
/* C3 vectors */
|
||||||
|
I64(0x7830d818186018c0), I64(0xaf462623238c2305), I64(0xf991b8c6c63fc67e), I64(0x6fcdfbe8e887e813),
|
||||||
|
I64(0xa113cb878726874c), I64(0x626d11b8b8dab8a9), I64(0x0502090101040108), I64(0x6e9e0d4f4f214f42),
|
||||||
|
I64(0xee6c9b3636d836ad), I64(0x0451ffa6a6a2a659), I64(0xbdb90cd2d26fd2de), I64(0x06f70ef5f5f3f5fb),
|
||||||
|
I64(0x80f2967979f979ef), I64(0xcede306f6fa16f5f), I64(0xef3f6d91917e91fc), I64(0x07a4f852525552aa),
|
||||||
|
I64(0xfdc04760609d6027), I64(0x766535bcbccabc89), I64(0xcd2b379b9b569bac), I64(0x8c018a8e8e028e04),
|
||||||
|
I64(0x155bd2a3a3b6a371), I64(0x3c186c0c0c300c60), I64(0x8af6847b7bf17bff), I64(0xe16a803535d435b5),
|
||||||
|
I64(0x693af51d1d741de8), I64(0x47ddb3e0e0a7e053), I64(0xacb321d7d77bd7f6), I64(0xed999cc2c22fc25e),
|
||||||
|
I64(0x965c432e2eb82e6d), I64(0x7a96294b4b314b62), I64(0x21e15dfefedffea3), I64(0x16aed55757415782),
|
||||||
|
I64(0x412abd15155415a8), I64(0xb6eee87777c1779f), I64(0xeb6e923737dc37a5), I64(0x56d79ee5e5b3e57b),
|
||||||
|
I64(0xd923139f9f469f8c), I64(0x17fd23f0f0e7f0d3), I64(0x7f94204a4a354a6a), I64(0x95a944dada4fda9e),
|
||||||
|
I64(0x25b0a258587d58fa), I64(0xca8fcfc9c903c906), I64(0x8d527c2929a42955), I64(0x22145a0a0a280a50),
|
||||||
|
I64(0x4f7f50b1b1feb1e1), I64(0x1a5dc9a0a0baa069), I64(0xdad6146b6bb16b7f), I64(0xab17d985852e855c),
|
||||||
|
I64(0x73673cbdbdcebd81), I64(0x34ba8f5d5d695dd2), I64(0x5020901010401080), I64(0x03f507f4f4f7f4f3),
|
||||||
|
I64(0xc08bddcbcb0bcb16), I64(0xc67cd33e3ef83eed), I64(0x110a2d0505140528), I64(0xe6ce78676781671f),
|
||||||
|
I64(0x53d597e4e4b7e473), I64(0xbb4e0227279c2725), I64(0x5882734141194132), I64(0x9d0ba78b8b168b2c),
|
||||||
|
I64(0x0153f6a7a7a6a751), I64(0x94fab27d7de97dcf), I64(0xfb374995956e95dc), I64(0x9fad56d8d847d88e),
|
||||||
|
I64(0x30eb70fbfbcbfb8b), I64(0x71c1cdeeee9fee23), I64(0x91f8bb7c7ced7cc7), I64(0xe3cc716666856617),
|
||||||
|
I64(0x8ea77bdddd53dda6), I64(0x4b2eaf17175c17b8), I64(0x468e454747014702), I64(0xdc211a9e9e429e84),
|
||||||
|
I64(0xc589d4caca0fca1e), I64(0x995a582d2db42d75), I64(0x79632ebfbfc6bf91), I64(0x1b0e3f07071c0738),
|
||||||
|
I64(0x2347acadad8ead01), I64(0x2fb4b05a5a755aea), I64(0xb51bef838336836c), I64(0xff66b63333cc3385),
|
||||||
|
I64(0xf2c65c636391633f), I64(0x0a04120202080210), I64(0x384993aaaa92aa39), I64(0xa8e2de7171d971af),
|
||||||
|
I64(0xcf8dc6c8c807c80e), I64(0x7d32d119196419c8), I64(0x70923b4949394972), I64(0x9aaf5fd9d943d986),
|
||||||
|
I64(0x1df931f2f2eff2c3), I64(0x48dba8e3e3abe34b), I64(0x2ab6b95b5b715be2), I64(0x920dbc88881a8834),
|
||||||
|
I64(0xc8293e9a9a529aa4), I64(0xbe4c0b262698262d), I64(0xfa64bf3232c8328d), I64(0x4a7d59b0b0fab0e9),
|
||||||
|
I64(0x6acff2e9e983e91b), I64(0x331e770f0f3c0f78), I64(0xa6b733d5d573d5e6), I64(0xba1df480803a8074),
|
||||||
|
I64(0x7c6127bebec2be99), I64(0xde87ebcdcd13cd26), I64(0xe468893434d034bd), I64(0x75903248483d487a),
|
||||||
|
I64(0x24e354ffffdbffab), I64(0x8ff48d7a7af57af7), I64(0xea3d6490907a90f4), I64(0x3ebe9d5f5f615fc2),
|
||||||
|
I64(0xa0403d202080201d), I64(0xd5d00f6868bd6867), I64(0x7234ca1a1a681ad0), I64(0x2c41b7aeae82ae19),
|
||||||
|
I64(0x5e757db4b4eab4c9), I64(0x19a8ce54544d549a), I64(0xe53b7f93937693ec), I64(0xaa442f222288220d),
|
||||||
|
I64(0xe9c86364648d6407), I64(0x12ff2af1f1e3f1db), I64(0xa2e6cc7373d173bf), I64(0x5a24821212481290),
|
||||||
|
I64(0x5d807a40401d403a), I64(0x2810480808200840), I64(0xe89b95c3c32bc356), I64(0x7bc5dfecec97ec33),
|
||||||
|
I64(0x90ab4ddbdb4bdb96), I64(0x1f5fc0a1a1bea161), I64(0x8307918d8d0e8d1c), I64(0xc97ac83d3df43df5),
|
||||||
|
I64(0xf1335b97976697cc), I64(0x0000000000000000), I64(0xd483f9cfcf1bcf36), I64(0x87566e2b2bac2b45),
|
||||||
|
I64(0xb3ece17676c57697), I64(0xb019e68282328264), I64(0xa9b128d6d67fd6fe), I64(0x7736c31b1b6c1bd8),
|
||||||
|
I64(0x5b7774b5b5eeb5c1), I64(0x2943beafaf86af11), I64(0xdfd41d6a6ab56a77), I64(0x0da0ea50505d50ba),
|
||||||
|
I64(0x4c8a574545094512), I64(0x18fb38f3f3ebf3cb), I64(0xf060ad3030c0309d), I64(0x74c3c4efef9bef2b),
|
||||||
|
I64(0xc37eda3f3ffc3fe5), I64(0x1caac75555495592), I64(0x1059dba2a2b2a279), I64(0x65c9e9eaea8fea03),
|
||||||
|
I64(0xecca6a656589650f), I64(0x686903babad2bab9), I64(0x935e4a2f2fbc2f65), I64(0xe79d8ec0c027c04e),
|
||||||
|
I64(0x81a160dede5fdebe), I64(0x6c38fc1c1c701ce0), I64(0x2ee746fdfdd3fdbb), I64(0x649a1f4d4d294d52),
|
||||||
|
I64(0xe0397692927292e4), I64(0xbceafa7575c9758f), I64(0x1e0c360606180630), I64(0x9809ae8a8a128a24),
|
||||||
|
I64(0x40794bb2b2f2b2f9), I64(0x59d185e6e6bfe663), I64(0x361c7e0e0e380e70), I64(0x633ee71f1f7c1ff8),
|
||||||
|
I64(0xf7c4556262956237), I64(0xa3b53ad4d477d4ee), I64(0x324d81a8a89aa829), I64(0xf4315296966296c4),
|
||||||
|
I64(0x3aef62f9f9c3f99b), I64(0xf697a3c5c533c566), I64(0xb14a102525942535), I64(0x20b2ab59597959f2),
|
||||||
|
I64(0xae15d084842a8454), I64(0xa7e4c57272d572b7), I64(0xdd72ec3939e439d5), I64(0x6198164c4c2d4c5a),
|
||||||
|
I64(0x3bbc945e5e655eca), I64(0x85f09f7878fd78e7), I64(0xd870e53838e038dd), I64(0x8605988c8c0a8c14),
|
||||||
|
I64(0xb2bf17d1d163d1c6), I64(0x0b57e4a5a5aea541), I64(0x4dd9a1e2e2afe243), I64(0xf8c24e616199612f),
|
||||||
|
I64(0x457b42b3b3f6b3f1), I64(0xa542342121842115), I64(0xd625089c9c4a9c94), I64(0x663cee1e1e781ef0),
|
||||||
|
I64(0x5286614343114322), I64(0xfc93b1c7c73bc776), I64(0x2be54ffcfcd7fcb3), I64(0x1408240404100420),
|
||||||
|
I64(0x08a2e351515951b2), I64(0xc72f2599995e99bc), I64(0xc4da226d6da96d4f), I64(0x391a650d0d340d68),
|
||||||
|
I64(0x35e979fafacffa83), I64(0x84a369dfdf5bdfb6), I64(0x9bfca97e7ee57ed7), I64(0xb44819242490243d),
|
||||||
|
I64(0xd776fe3b3bec3bc5), I64(0x3d4b9aabab96ab31), I64(0xd181f0cece1fce3e), I64(0x5522991111441188),
|
||||||
|
I64(0x8903838f8f068f0c), I64(0x6b9c044e4e254e4a), I64(0x517366b7b7e6b7d1), I64(0x60cbe0ebeb8beb0b),
|
||||||
|
I64(0xcc78c13c3cf03cfd), I64(0xbf1ffd81813e817c), I64(0xfe354094946a94d4), I64(0x0cf31cf7f7fbf7eb),
|
||||||
|
I64(0x676f18b9b9deb9a1), I64(0x5f268b13134c1398), I64(0x9c58512c2cb02c7d), I64(0xb8bb05d3d36bd3d6),
|
||||||
|
I64(0x5cd38ce7e7bbe76b), I64(0xcbdc396e6ea56e57), I64(0xf395aac4c437c46e), I64(0x0f061b03030c0318),
|
||||||
|
I64(0x13acdc565645568a), I64(0x49885e44440d441a), I64(0x9efea07f7fe17fdf), I64(0x374f88a9a99ea921),
|
||||||
|
I64(0x8254672a2aa82a4d), I64(0x6d6b0abbbbd6bbb1), I64(0xe29f87c1c123c146), I64(0x02a6f153535153a2),
|
||||||
|
I64(0x8ba572dcdc57dcae), I64(0x2716530b0b2c0b58), I64(0xd327019d9d4e9d9c), I64(0xc1d82b6c6cad6c47),
|
||||||
|
I64(0xf562a43131c43195), I64(0xb9e8f37474cd7487), I64(0x09f115f6f6fff6e3), I64(0x438c4c464605460a),
|
||||||
|
I64(0x2645a5acac8aac09), I64(0x970fb589891e893c), I64(0x4428b414145014a0), I64(0x42dfbae1e1a3e15b),
|
||||||
|
I64(0x4e2ca616165816b0), I64(0xd274f73a3ae83acd), I64(0xd0d2066969b9696f), I64(0x2d12410909240948),
|
||||||
|
I64(0xade0d77070dd70a7), I64(0x54716fb6b6e2b6d9), I64(0xb7bd1ed0d067d0ce), I64(0x7ec7d6eded93ed3b),
|
||||||
|
I64(0xdb85e2cccc17cc2e), I64(0x578468424215422a), I64(0xc22d2c98985a98b4), I64(0x0e55eda4a4aaa449),
|
||||||
|
I64(0x8850752828a0285d), I64(0x31b8865c5c6d5cda), I64(0x3fed6bf8f8c7f893), I64(0xa411c28686228644),
|
||||||
|
}, {
|
||||||
|
/* C4 vectors */
|
||||||
|
I64(0xc07830d818186018), I64(0x05af462623238c23), I64(0x7ef991b8c6c63fc6), I64(0x136fcdfbe8e887e8),
|
||||||
|
I64(0x4ca113cb87872687), I64(0xa9626d11b8b8dab8), I64(0x0805020901010401), I64(0x426e9e0d4f4f214f),
|
||||||
|
I64(0xadee6c9b3636d836), I64(0x590451ffa6a6a2a6), I64(0xdebdb90cd2d26fd2), I64(0xfb06f70ef5f5f3f5),
|
||||||
|
I64(0xef80f2967979f979), I64(0x5fcede306f6fa16f), I64(0xfcef3f6d91917e91), I64(0xaa07a4f852525552),
|
||||||
|
I64(0x27fdc04760609d60), I64(0x89766535bcbccabc), I64(0xaccd2b379b9b569b), I64(0x048c018a8e8e028e),
|
||||||
|
I64(0x71155bd2a3a3b6a3), I64(0x603c186c0c0c300c), I64(0xff8af6847b7bf17b), I64(0xb5e16a803535d435),
|
||||||
|
I64(0xe8693af51d1d741d), I64(0x5347ddb3e0e0a7e0), I64(0xf6acb321d7d77bd7), I64(0x5eed999cc2c22fc2),
|
||||||
|
I64(0x6d965c432e2eb82e), I64(0x627a96294b4b314b), I64(0xa321e15dfefedffe), I64(0x8216aed557574157),
|
||||||
|
I64(0xa8412abd15155415), I64(0x9fb6eee87777c177), I64(0xa5eb6e923737dc37), I64(0x7b56d79ee5e5b3e5),
|
||||||
|
I64(0x8cd923139f9f469f), I64(0xd317fd23f0f0e7f0), I64(0x6a7f94204a4a354a), I64(0x9e95a944dada4fda),
|
||||||
|
I64(0xfa25b0a258587d58), I64(0x06ca8fcfc9c903c9), I64(0x558d527c2929a429), I64(0x5022145a0a0a280a),
|
||||||
|
I64(0xe14f7f50b1b1feb1), I64(0x691a5dc9a0a0baa0), I64(0x7fdad6146b6bb16b), I64(0x5cab17d985852e85),
|
||||||
|
I64(0x8173673cbdbdcebd), I64(0xd234ba8f5d5d695d), I64(0x8050209010104010), I64(0xf303f507f4f4f7f4),
|
||||||
|
I64(0x16c08bddcbcb0bcb), I64(0xedc67cd33e3ef83e), I64(0x28110a2d05051405), I64(0x1fe6ce7867678167),
|
||||||
|
I64(0x7353d597e4e4b7e4), I64(0x25bb4e0227279c27), I64(0x3258827341411941), I64(0x2c9d0ba78b8b168b),
|
||||||
|
I64(0x510153f6a7a7a6a7), I64(0xcf94fab27d7de97d), I64(0xdcfb374995956e95), I64(0x8e9fad56d8d847d8),
|
||||||
|
I64(0x8b30eb70fbfbcbfb), I64(0x2371c1cdeeee9fee), I64(0xc791f8bb7c7ced7c), I64(0x17e3cc7166668566),
|
||||||
|
I64(0xa68ea77bdddd53dd), I64(0xb84b2eaf17175c17), I64(0x02468e4547470147), I64(0x84dc211a9e9e429e),
|
||||||
|
I64(0x1ec589d4caca0fca), I64(0x75995a582d2db42d), I64(0x9179632ebfbfc6bf), I64(0x381b0e3f07071c07),
|
||||||
|
I64(0x012347acadad8ead), I64(0xea2fb4b05a5a755a), I64(0x6cb51bef83833683), I64(0x85ff66b63333cc33),
|
||||||
|
I64(0x3ff2c65c63639163), I64(0x100a041202020802), I64(0x39384993aaaa92aa), I64(0xafa8e2de7171d971),
|
||||||
|
I64(0x0ecf8dc6c8c807c8), I64(0xc87d32d119196419), I64(0x7270923b49493949), I64(0x869aaf5fd9d943d9),
|
||||||
|
I64(0xc31df931f2f2eff2), I64(0x4b48dba8e3e3abe3), I64(0xe22ab6b95b5b715b), I64(0x34920dbc88881a88),
|
||||||
|
I64(0xa4c8293e9a9a529a), I64(0x2dbe4c0b26269826), I64(0x8dfa64bf3232c832), I64(0xe94a7d59b0b0fab0),
|
||||||
|
I64(0x1b6acff2e9e983e9), I64(0x78331e770f0f3c0f), I64(0xe6a6b733d5d573d5), I64(0x74ba1df480803a80),
|
||||||
|
I64(0x997c6127bebec2be), I64(0x26de87ebcdcd13cd), I64(0xbde468893434d034), I64(0x7a75903248483d48),
|
||||||
|
I64(0xab24e354ffffdbff), I64(0xf78ff48d7a7af57a), I64(0xf4ea3d6490907a90), I64(0xc23ebe9d5f5f615f),
|
||||||
|
I64(0x1da0403d20208020), I64(0x67d5d00f6868bd68), I64(0xd07234ca1a1a681a), I64(0x192c41b7aeae82ae),
|
||||||
|
I64(0xc95e757db4b4eab4), I64(0x9a19a8ce54544d54), I64(0xece53b7f93937693), I64(0x0daa442f22228822),
|
||||||
|
I64(0x07e9c86364648d64), I64(0xdb12ff2af1f1e3f1), I64(0xbfa2e6cc7373d173), I64(0x905a248212124812),
|
||||||
|
I64(0x3a5d807a40401d40), I64(0x4028104808082008), I64(0x56e89b95c3c32bc3), I64(0x337bc5dfecec97ec),
|
||||||
|
I64(0x9690ab4ddbdb4bdb), I64(0x611f5fc0a1a1bea1), I64(0x1c8307918d8d0e8d), I64(0xf5c97ac83d3df43d),
|
||||||
|
I64(0xccf1335b97976697), I64(0x0000000000000000), I64(0x36d483f9cfcf1bcf), I64(0x4587566e2b2bac2b),
|
||||||
|
I64(0x97b3ece17676c576), I64(0x64b019e682823282), I64(0xfea9b128d6d67fd6), I64(0xd87736c31b1b6c1b),
|
||||||
|
I64(0xc15b7774b5b5eeb5), I64(0x112943beafaf86af), I64(0x77dfd41d6a6ab56a), I64(0xba0da0ea50505d50),
|
||||||
|
I64(0x124c8a5745450945), I64(0xcb18fb38f3f3ebf3), I64(0x9df060ad3030c030), I64(0x2b74c3c4efef9bef),
|
||||||
|
I64(0xe5c37eda3f3ffc3f), I64(0x921caac755554955), I64(0x791059dba2a2b2a2), I64(0x0365c9e9eaea8fea),
|
||||||
|
I64(0x0fecca6a65658965), I64(0xb9686903babad2ba), I64(0x65935e4a2f2fbc2f), I64(0x4ee79d8ec0c027c0),
|
||||||
|
I64(0xbe81a160dede5fde), I64(0xe06c38fc1c1c701c), I64(0xbb2ee746fdfdd3fd), I64(0x52649a1f4d4d294d),
|
||||||
|
I64(0xe4e0397692927292), I64(0x8fbceafa7575c975), I64(0x301e0c3606061806), I64(0x249809ae8a8a128a),
|
||||||
|
I64(0xf940794bb2b2f2b2), I64(0x6359d185e6e6bfe6), I64(0x70361c7e0e0e380e), I64(0xf8633ee71f1f7c1f),
|
||||||
|
I64(0x37f7c45562629562), I64(0xeea3b53ad4d477d4), I64(0x29324d81a8a89aa8), I64(0xc4f4315296966296),
|
||||||
|
I64(0x9b3aef62f9f9c3f9), I64(0x66f697a3c5c533c5), I64(0x35b14a1025259425), I64(0xf220b2ab59597959),
|
||||||
|
I64(0x54ae15d084842a84), I64(0xb7a7e4c57272d572), I64(0xd5dd72ec3939e439), I64(0x5a6198164c4c2d4c),
|
||||||
|
I64(0xca3bbc945e5e655e), I64(0xe785f09f7878fd78), I64(0xddd870e53838e038), I64(0x148605988c8c0a8c),
|
||||||
|
I64(0xc6b2bf17d1d163d1), I64(0x410b57e4a5a5aea5), I64(0x434dd9a1e2e2afe2), I64(0x2ff8c24e61619961),
|
||||||
|
I64(0xf1457b42b3b3f6b3), I64(0x15a5423421218421), I64(0x94d625089c9c4a9c), I64(0xf0663cee1e1e781e),
|
||||||
|
I64(0x2252866143431143), I64(0x76fc93b1c7c73bc7), I64(0xb32be54ffcfcd7fc), I64(0x2014082404041004),
|
||||||
|
I64(0xb208a2e351515951), I64(0xbcc72f2599995e99), I64(0x4fc4da226d6da96d), I64(0x68391a650d0d340d),
|
||||||
|
I64(0x8335e979fafacffa), I64(0xb684a369dfdf5bdf), I64(0xd79bfca97e7ee57e), I64(0x3db4481924249024),
|
||||||
|
I64(0xc5d776fe3b3bec3b), I64(0x313d4b9aabab96ab), I64(0x3ed181f0cece1fce), I64(0x8855229911114411),
|
||||||
|
I64(0x0c8903838f8f068f), I64(0x4a6b9c044e4e254e), I64(0xd1517366b7b7e6b7), I64(0x0b60cbe0ebeb8beb),
|
||||||
|
I64(0xfdcc78c13c3cf03c), I64(0x7cbf1ffd81813e81), I64(0xd4fe354094946a94), I64(0xeb0cf31cf7f7fbf7),
|
||||||
|
I64(0xa1676f18b9b9deb9), I64(0x985f268b13134c13), I64(0x7d9c58512c2cb02c), I64(0xd6b8bb05d3d36bd3),
|
||||||
|
I64(0x6b5cd38ce7e7bbe7), I64(0x57cbdc396e6ea56e), I64(0x6ef395aac4c437c4), I64(0x180f061b03030c03),
|
||||||
|
I64(0x8a13acdc56564556), I64(0x1a49885e44440d44), I64(0xdf9efea07f7fe17f), I64(0x21374f88a9a99ea9),
|
||||||
|
I64(0x4d8254672a2aa82a), I64(0xb16d6b0abbbbd6bb), I64(0x46e29f87c1c123c1), I64(0xa202a6f153535153),
|
||||||
|
I64(0xae8ba572dcdc57dc), I64(0x582716530b0b2c0b), I64(0x9cd327019d9d4e9d), I64(0x47c1d82b6c6cad6c),
|
||||||
|
I64(0x95f562a43131c431), I64(0x87b9e8f37474cd74), I64(0xe309f115f6f6fff6), I64(0x0a438c4c46460546),
|
||||||
|
I64(0x092645a5acac8aac), I64(0x3c970fb589891e89), I64(0xa04428b414145014), I64(0x5b42dfbae1e1a3e1),
|
||||||
|
I64(0xb04e2ca616165816), I64(0xcdd274f73a3ae83a), I64(0x6fd0d2066969b969), I64(0x482d124109092409),
|
||||||
|
I64(0xa7ade0d77070dd70), I64(0xd954716fb6b6e2b6), I64(0xceb7bd1ed0d067d0), I64(0x3b7ec7d6eded93ed),
|
||||||
|
I64(0x2edb85e2cccc17cc), I64(0x2a57846842421542), I64(0xb4c22d2c98985a98), I64(0x490e55eda4a4aaa4),
|
||||||
|
I64(0x5d8850752828a028), I64(0xda31b8865c5c6d5c), I64(0x933fed6bf8f8c7f8), I64(0x44a411c286862286),
|
||||||
|
}, {
|
||||||
|
/* C5 vectors */
|
||||||
|
I64(0x18c07830d8181860), I64(0x2305af462623238c), I64(0xc67ef991b8c6c63f), I64(0xe8136fcdfbe8e887),
|
||||||
|
I64(0x874ca113cb878726), I64(0xb8a9626d11b8b8da), I64(0x0108050209010104), I64(0x4f426e9e0d4f4f21),
|
||||||
|
I64(0x36adee6c9b3636d8), I64(0xa6590451ffa6a6a2), I64(0xd2debdb90cd2d26f), I64(0xf5fb06f70ef5f5f3),
|
||||||
|
I64(0x79ef80f2967979f9), I64(0x6f5fcede306f6fa1), I64(0x91fcef3f6d91917e), I64(0x52aa07a4f8525255),
|
||||||
|
I64(0x6027fdc04760609d), I64(0xbc89766535bcbcca), I64(0x9baccd2b379b9b56), I64(0x8e048c018a8e8e02),
|
||||||
|
I64(0xa371155bd2a3a3b6), I64(0x0c603c186c0c0c30), I64(0x7bff8af6847b7bf1), I64(0x35b5e16a803535d4),
|
||||||
|
I64(0x1de8693af51d1d74), I64(0xe05347ddb3e0e0a7), I64(0xd7f6acb321d7d77b), I64(0xc25eed999cc2c22f),
|
||||||
|
I64(0x2e6d965c432e2eb8), I64(0x4b627a96294b4b31), I64(0xfea321e15dfefedf), I64(0x578216aed5575741),
|
||||||
|
I64(0x15a8412abd151554), I64(0x779fb6eee87777c1), I64(0x37a5eb6e923737dc), I64(0xe57b56d79ee5e5b3),
|
||||||
|
I64(0x9f8cd923139f9f46), I64(0xf0d317fd23f0f0e7), I64(0x4a6a7f94204a4a35), I64(0xda9e95a944dada4f),
|
||||||
|
I64(0x58fa25b0a258587d), I64(0xc906ca8fcfc9c903), I64(0x29558d527c2929a4), I64(0x0a5022145a0a0a28),
|
||||||
|
I64(0xb1e14f7f50b1b1fe), I64(0xa0691a5dc9a0a0ba), I64(0x6b7fdad6146b6bb1), I64(0x855cab17d985852e),
|
||||||
|
I64(0xbd8173673cbdbdce), I64(0x5dd234ba8f5d5d69), I64(0x1080502090101040), I64(0xf4f303f507f4f4f7),
|
||||||
|
I64(0xcb16c08bddcbcb0b), I64(0x3eedc67cd33e3ef8), I64(0x0528110a2d050514), I64(0x671fe6ce78676781),
|
||||||
|
I64(0xe47353d597e4e4b7), I64(0x2725bb4e0227279c), I64(0x4132588273414119), I64(0x8b2c9d0ba78b8b16),
|
||||||
|
I64(0xa7510153f6a7a7a6), I64(0x7dcf94fab27d7de9), I64(0x95dcfb374995956e), I64(0xd88e9fad56d8d847),
|
||||||
|
I64(0xfb8b30eb70fbfbcb), I64(0xee2371c1cdeeee9f), I64(0x7cc791f8bb7c7ced), I64(0x6617e3cc71666685),
|
||||||
|
I64(0xdda68ea77bdddd53), I64(0x17b84b2eaf17175c), I64(0x4702468e45474701), I64(0x9e84dc211a9e9e42),
|
||||||
|
I64(0xca1ec589d4caca0f), I64(0x2d75995a582d2db4), I64(0xbf9179632ebfbfc6), I64(0x07381b0e3f07071c),
|
||||||
|
I64(0xad012347acadad8e), I64(0x5aea2fb4b05a5a75), I64(0x836cb51bef838336), I64(0x3385ff66b63333cc),
|
||||||
|
I64(0x633ff2c65c636391), I64(0x02100a0412020208), I64(0xaa39384993aaaa92), I64(0x71afa8e2de7171d9),
|
||||||
|
I64(0xc80ecf8dc6c8c807), I64(0x19c87d32d1191964), I64(0x497270923b494939), I64(0xd9869aaf5fd9d943),
|
||||||
|
I64(0xf2c31df931f2f2ef), I64(0xe34b48dba8e3e3ab), I64(0x5be22ab6b95b5b71), I64(0x8834920dbc88881a),
|
||||||
|
I64(0x9aa4c8293e9a9a52), I64(0x262dbe4c0b262698), I64(0x328dfa64bf3232c8), I64(0xb0e94a7d59b0b0fa),
|
||||||
|
I64(0xe91b6acff2e9e983), I64(0x0f78331e770f0f3c), I64(0xd5e6a6b733d5d573), I64(0x8074ba1df480803a),
|
||||||
|
I64(0xbe997c6127bebec2), I64(0xcd26de87ebcdcd13), I64(0x34bde468893434d0), I64(0x487a75903248483d),
|
||||||
|
I64(0xffab24e354ffffdb), I64(0x7af78ff48d7a7af5), I64(0x90f4ea3d6490907a), I64(0x5fc23ebe9d5f5f61),
|
||||||
|
I64(0x201da0403d202080), I64(0x6867d5d00f6868bd), I64(0x1ad07234ca1a1a68), I64(0xae192c41b7aeae82),
|
||||||
|
I64(0xb4c95e757db4b4ea), I64(0x549a19a8ce54544d), I64(0x93ece53b7f939376), I64(0x220daa442f222288),
|
||||||
|
I64(0x6407e9c86364648d), I64(0xf1db12ff2af1f1e3), I64(0x73bfa2e6cc7373d1), I64(0x12905a2482121248),
|
||||||
|
I64(0x403a5d807a40401d), I64(0x0840281048080820), I64(0xc356e89b95c3c32b), I64(0xec337bc5dfecec97),
|
||||||
|
I64(0xdb9690ab4ddbdb4b), I64(0xa1611f5fc0a1a1be), I64(0x8d1c8307918d8d0e), I64(0x3df5c97ac83d3df4),
|
||||||
|
I64(0x97ccf1335b979766), I64(0x0000000000000000), I64(0xcf36d483f9cfcf1b), I64(0x2b4587566e2b2bac),
|
||||||
|
I64(0x7697b3ece17676c5), I64(0x8264b019e6828232), I64(0xd6fea9b128d6d67f), I64(0x1bd87736c31b1b6c),
|
||||||
|
I64(0xb5c15b7774b5b5ee), I64(0xaf112943beafaf86), I64(0x6a77dfd41d6a6ab5), I64(0x50ba0da0ea50505d),
|
||||||
|
I64(0x45124c8a57454509), I64(0xf3cb18fb38f3f3eb), I64(0x309df060ad3030c0), I64(0xef2b74c3c4efef9b),
|
||||||
|
I64(0x3fe5c37eda3f3ffc), I64(0x55921caac7555549), I64(0xa2791059dba2a2b2), I64(0xea0365c9e9eaea8f),
|
||||||
|
I64(0x650fecca6a656589), I64(0xbab9686903babad2), I64(0x2f65935e4a2f2fbc), I64(0xc04ee79d8ec0c027),
|
||||||
|
I64(0xdebe81a160dede5f), I64(0x1ce06c38fc1c1c70), I64(0xfdbb2ee746fdfdd3), I64(0x4d52649a1f4d4d29),
|
||||||
|
I64(0x92e4e03976929272), I64(0x758fbceafa7575c9), I64(0x06301e0c36060618), I64(0x8a249809ae8a8a12),
|
||||||
|
I64(0xb2f940794bb2b2f2), I64(0xe66359d185e6e6bf), I64(0x0e70361c7e0e0e38), I64(0x1ff8633ee71f1f7c),
|
||||||
|
I64(0x6237f7c455626295), I64(0xd4eea3b53ad4d477), I64(0xa829324d81a8a89a), I64(0x96c4f43152969662),
|
||||||
|
I64(0xf99b3aef62f9f9c3), I64(0xc566f697a3c5c533), I64(0x2535b14a10252594), I64(0x59f220b2ab595979),
|
||||||
|
I64(0x8454ae15d084842a), I64(0x72b7a7e4c57272d5), I64(0x39d5dd72ec3939e4), I64(0x4c5a6198164c4c2d),
|
||||||
|
I64(0x5eca3bbc945e5e65), I64(0x78e785f09f7878fd), I64(0x38ddd870e53838e0), I64(0x8c148605988c8c0a),
|
||||||
|
I64(0xd1c6b2bf17d1d163), I64(0xa5410b57e4a5a5ae), I64(0xe2434dd9a1e2e2af), I64(0x612ff8c24e616199),
|
||||||
|
I64(0xb3f1457b42b3b3f6), I64(0x2115a54234212184), I64(0x9c94d625089c9c4a), I64(0x1ef0663cee1e1e78),
|
||||||
|
I64(0x4322528661434311), I64(0xc776fc93b1c7c73b), I64(0xfcb32be54ffcfcd7), I64(0x0420140824040410),
|
||||||
|
I64(0x51b208a2e3515159), I64(0x99bcc72f2599995e), I64(0x6d4fc4da226d6da9), I64(0x0d68391a650d0d34),
|
||||||
|
I64(0xfa8335e979fafacf), I64(0xdfb684a369dfdf5b), I64(0x7ed79bfca97e7ee5), I64(0x243db44819242490),
|
||||||
|
I64(0x3bc5d776fe3b3bec), I64(0xab313d4b9aabab96), I64(0xce3ed181f0cece1f), I64(0x1188552299111144),
|
||||||
|
I64(0x8f0c8903838f8f06), I64(0x4e4a6b9c044e4e25), I64(0xb7d1517366b7b7e6), I64(0xeb0b60cbe0ebeb8b),
|
||||||
|
I64(0x3cfdcc78c13c3cf0), I64(0x817cbf1ffd81813e), I64(0x94d4fe354094946a), I64(0xf7eb0cf31cf7f7fb),
|
||||||
|
I64(0xb9a1676f18b9b9de), I64(0x13985f268b13134c), I64(0x2c7d9c58512c2cb0), I64(0xd3d6b8bb05d3d36b),
|
||||||
|
I64(0xe76b5cd38ce7e7bb), I64(0x6e57cbdc396e6ea5), I64(0xc46ef395aac4c437), I64(0x03180f061b03030c),
|
||||||
|
I64(0x568a13acdc565645), I64(0x441a49885e44440d), I64(0x7fdf9efea07f7fe1), I64(0xa921374f88a9a99e),
|
||||||
|
I64(0x2a4d8254672a2aa8), I64(0xbbb16d6b0abbbbd6), I64(0xc146e29f87c1c123), I64(0x53a202a6f1535351),
|
||||||
|
I64(0xdcae8ba572dcdc57), I64(0x0b582716530b0b2c), I64(0x9d9cd327019d9d4e), I64(0x6c47c1d82b6c6cad),
|
||||||
|
I64(0x3195f562a43131c4), I64(0x7487b9e8f37474cd), I64(0xf6e309f115f6f6ff), I64(0x460a438c4c464605),
|
||||||
|
I64(0xac092645a5acac8a), I64(0x893c970fb589891e), I64(0x14a04428b4141450), I64(0xe15b42dfbae1e1a3),
|
||||||
|
I64(0x16b04e2ca6161658), I64(0x3acdd274f73a3ae8), I64(0x696fd0d2066969b9), I64(0x09482d1241090924),
|
||||||
|
I64(0x70a7ade0d77070dd), I64(0xb6d954716fb6b6e2), I64(0xd0ceb7bd1ed0d067), I64(0xed3b7ec7d6eded93),
|
||||||
|
I64(0xcc2edb85e2cccc17), I64(0x422a578468424215), I64(0x98b4c22d2c98985a), I64(0xa4490e55eda4a4aa),
|
||||||
|
I64(0x285d8850752828a0), I64(0x5cda31b8865c5c6d), I64(0xf8933fed6bf8f8c7), I64(0x8644a411c2868622),
|
||||||
|
}, {
|
||||||
|
/* C6 vectors */
|
||||||
|
I64(0x6018c07830d81818), I64(0x8c2305af46262323), I64(0x3fc67ef991b8c6c6), I64(0x87e8136fcdfbe8e8),
|
||||||
|
I64(0x26874ca113cb8787), I64(0xdab8a9626d11b8b8), I64(0x0401080502090101), I64(0x214f426e9e0d4f4f),
|
||||||
|
I64(0xd836adee6c9b3636), I64(0xa2a6590451ffa6a6), I64(0x6fd2debdb90cd2d2), I64(0xf3f5fb06f70ef5f5),
|
||||||
|
I64(0xf979ef80f2967979), I64(0xa16f5fcede306f6f), I64(0x7e91fcef3f6d9191), I64(0x5552aa07a4f85252),
|
||||||
|
I64(0x9d6027fdc0476060), I64(0xcabc89766535bcbc), I64(0x569baccd2b379b9b), I64(0x028e048c018a8e8e),
|
||||||
|
I64(0xb6a371155bd2a3a3), I64(0x300c603c186c0c0c), I64(0xf17bff8af6847b7b), I64(0xd435b5e16a803535),
|
||||||
|
I64(0x741de8693af51d1d), I64(0xa7e05347ddb3e0e0), I64(0x7bd7f6acb321d7d7), I64(0x2fc25eed999cc2c2),
|
||||||
|
I64(0xb82e6d965c432e2e), I64(0x314b627a96294b4b), I64(0xdffea321e15dfefe), I64(0x41578216aed55757),
|
||||||
|
I64(0x5415a8412abd1515), I64(0xc1779fb6eee87777), I64(0xdc37a5eb6e923737), I64(0xb3e57b56d79ee5e5),
|
||||||
|
I64(0x469f8cd923139f9f), I64(0xe7f0d317fd23f0f0), I64(0x354a6a7f94204a4a), I64(0x4fda9e95a944dada),
|
||||||
|
I64(0x7d58fa25b0a25858), I64(0x03c906ca8fcfc9c9), I64(0xa429558d527c2929), I64(0x280a5022145a0a0a),
|
||||||
|
I64(0xfeb1e14f7f50b1b1), I64(0xbaa0691a5dc9a0a0), I64(0xb16b7fdad6146b6b), I64(0x2e855cab17d98585),
|
||||||
|
I64(0xcebd8173673cbdbd), I64(0x695dd234ba8f5d5d), I64(0x4010805020901010), I64(0xf7f4f303f507f4f4),
|
||||||
|
I64(0x0bcb16c08bddcbcb), I64(0xf83eedc67cd33e3e), I64(0x140528110a2d0505), I64(0x81671fe6ce786767),
|
||||||
|
I64(0xb7e47353d597e4e4), I64(0x9c2725bb4e022727), I64(0x1941325882734141), I64(0x168b2c9d0ba78b8b),
|
||||||
|
I64(0xa6a7510153f6a7a7), I64(0xe97dcf94fab27d7d), I64(0x6e95dcfb37499595), I64(0x47d88e9fad56d8d8),
|
||||||
|
I64(0xcbfb8b30eb70fbfb), I64(0x9fee2371c1cdeeee), I64(0xed7cc791f8bb7c7c), I64(0x856617e3cc716666),
|
||||||
|
I64(0x53dda68ea77bdddd), I64(0x5c17b84b2eaf1717), I64(0x014702468e454747), I64(0x429e84dc211a9e9e),
|
||||||
|
I64(0x0fca1ec589d4caca), I64(0xb42d75995a582d2d), I64(0xc6bf9179632ebfbf), I64(0x1c07381b0e3f0707),
|
||||||
|
I64(0x8ead012347acadad), I64(0x755aea2fb4b05a5a), I64(0x36836cb51bef8383), I64(0xcc3385ff66b63333),
|
||||||
|
I64(0x91633ff2c65c6363), I64(0x0802100a04120202), I64(0x92aa39384993aaaa), I64(0xd971afa8e2de7171),
|
||||||
|
I64(0x07c80ecf8dc6c8c8), I64(0x6419c87d32d11919), I64(0x39497270923b4949), I64(0x43d9869aaf5fd9d9),
|
||||||
|
I64(0xeff2c31df931f2f2), I64(0xabe34b48dba8e3e3), I64(0x715be22ab6b95b5b), I64(0x1a8834920dbc8888),
|
||||||
|
I64(0x529aa4c8293e9a9a), I64(0x98262dbe4c0b2626), I64(0xc8328dfa64bf3232), I64(0xfab0e94a7d59b0b0),
|
||||||
|
I64(0x83e91b6acff2e9e9), I64(0x3c0f78331e770f0f), I64(0x73d5e6a6b733d5d5), I64(0x3a8074ba1df48080),
|
||||||
|
I64(0xc2be997c6127bebe), I64(0x13cd26de87ebcdcd), I64(0xd034bde468893434), I64(0x3d487a7590324848),
|
||||||
|
I64(0xdbffab24e354ffff), I64(0xf57af78ff48d7a7a), I64(0x7a90f4ea3d649090), I64(0x615fc23ebe9d5f5f),
|
||||||
|
I64(0x80201da0403d2020), I64(0xbd6867d5d00f6868), I64(0x681ad07234ca1a1a), I64(0x82ae192c41b7aeae),
|
||||||
|
I64(0xeab4c95e757db4b4), I64(0x4d549a19a8ce5454), I64(0x7693ece53b7f9393), I64(0x88220daa442f2222),
|
||||||
|
I64(0x8d6407e9c8636464), I64(0xe3f1db12ff2af1f1), I64(0xd173bfa2e6cc7373), I64(0x4812905a24821212),
|
||||||
|
I64(0x1d403a5d807a4040), I64(0x2008402810480808), I64(0x2bc356e89b95c3c3), I64(0x97ec337bc5dfecec),
|
||||||
|
I64(0x4bdb9690ab4ddbdb), I64(0xbea1611f5fc0a1a1), I64(0x0e8d1c8307918d8d), I64(0xf43df5c97ac83d3d),
|
||||||
|
I64(0x6697ccf1335b9797), I64(0x0000000000000000), I64(0x1bcf36d483f9cfcf), I64(0xac2b4587566e2b2b),
|
||||||
|
I64(0xc57697b3ece17676), I64(0x328264b019e68282), I64(0x7fd6fea9b128d6d6), I64(0x6c1bd87736c31b1b),
|
||||||
|
I64(0xeeb5c15b7774b5b5), I64(0x86af112943beafaf), I64(0xb56a77dfd41d6a6a), I64(0x5d50ba0da0ea5050),
|
||||||
|
I64(0x0945124c8a574545), I64(0xebf3cb18fb38f3f3), I64(0xc0309df060ad3030), I64(0x9bef2b74c3c4efef),
|
||||||
|
I64(0xfc3fe5c37eda3f3f), I64(0x4955921caac75555), I64(0xb2a2791059dba2a2), I64(0x8fea0365c9e9eaea),
|
||||||
|
I64(0x89650fecca6a6565), I64(0xd2bab9686903baba), I64(0xbc2f65935e4a2f2f), I64(0x27c04ee79d8ec0c0),
|
||||||
|
I64(0x5fdebe81a160dede), I64(0x701ce06c38fc1c1c), I64(0xd3fdbb2ee746fdfd), I64(0x294d52649a1f4d4d),
|
||||||
|
I64(0x7292e4e039769292), I64(0xc9758fbceafa7575), I64(0x1806301e0c360606), I64(0x128a249809ae8a8a),
|
||||||
|
I64(0xf2b2f940794bb2b2), I64(0xbfe66359d185e6e6), I64(0x380e70361c7e0e0e), I64(0x7c1ff8633ee71f1f),
|
||||||
|
I64(0x956237f7c4556262), I64(0x77d4eea3b53ad4d4), I64(0x9aa829324d81a8a8), I64(0x6296c4f431529696),
|
||||||
|
I64(0xc3f99b3aef62f9f9), I64(0x33c566f697a3c5c5), I64(0x942535b14a102525), I64(0x7959f220b2ab5959),
|
||||||
|
I64(0x2a8454ae15d08484), I64(0xd572b7a7e4c57272), I64(0xe439d5dd72ec3939), I64(0x2d4c5a6198164c4c),
|
||||||
|
I64(0x655eca3bbc945e5e), I64(0xfd78e785f09f7878), I64(0xe038ddd870e53838), I64(0x0a8c148605988c8c),
|
||||||
|
I64(0x63d1c6b2bf17d1d1), I64(0xaea5410b57e4a5a5), I64(0xafe2434dd9a1e2e2), I64(0x99612ff8c24e6161),
|
||||||
|
I64(0xf6b3f1457b42b3b3), I64(0x842115a542342121), I64(0x4a9c94d625089c9c), I64(0x781ef0663cee1e1e),
|
||||||
|
I64(0x1143225286614343), I64(0x3bc776fc93b1c7c7), I64(0xd7fcb32be54ffcfc), I64(0x1004201408240404),
|
||||||
|
I64(0x5951b208a2e35151), I64(0x5e99bcc72f259999), I64(0xa96d4fc4da226d6d), I64(0x340d68391a650d0d),
|
||||||
|
I64(0xcffa8335e979fafa), I64(0x5bdfb684a369dfdf), I64(0xe57ed79bfca97e7e), I64(0x90243db448192424),
|
||||||
|
I64(0xec3bc5d776fe3b3b), I64(0x96ab313d4b9aabab), I64(0x1fce3ed181f0cece), I64(0x4411885522991111),
|
||||||
|
I64(0x068f0c8903838f8f), I64(0x254e4a6b9c044e4e), I64(0xe6b7d1517366b7b7), I64(0x8beb0b60cbe0ebeb),
|
||||||
|
I64(0xf03cfdcc78c13c3c), I64(0x3e817cbf1ffd8181), I64(0x6a94d4fe35409494), I64(0xfbf7eb0cf31cf7f7),
|
||||||
|
I64(0xdeb9a1676f18b9b9), I64(0x4c13985f268b1313), I64(0xb02c7d9c58512c2c), I64(0x6bd3d6b8bb05d3d3),
|
||||||
|
I64(0xbbe76b5cd38ce7e7), I64(0xa56e57cbdc396e6e), I64(0x37c46ef395aac4c4), I64(0x0c03180f061b0303),
|
||||||
|
I64(0x45568a13acdc5656), I64(0x0d441a49885e4444), I64(0xe17fdf9efea07f7f), I64(0x9ea921374f88a9a9),
|
||||||
|
I64(0xa82a4d8254672a2a), I64(0xd6bbb16d6b0abbbb), I64(0x23c146e29f87c1c1), I64(0x5153a202a6f15353),
|
||||||
|
I64(0x57dcae8ba572dcdc), I64(0x2c0b582716530b0b), I64(0x4e9d9cd327019d9d), I64(0xad6c47c1d82b6c6c),
|
||||||
|
I64(0xc43195f562a43131), I64(0xcd7487b9e8f37474), I64(0xfff6e309f115f6f6), I64(0x05460a438c4c4646),
|
||||||
|
I64(0x8aac092645a5acac), I64(0x1e893c970fb58989), I64(0x5014a04428b41414), I64(0xa3e15b42dfbae1e1),
|
||||||
|
I64(0x5816b04e2ca61616), I64(0xe83acdd274f73a3a), I64(0xb9696fd0d2066969), I64(0x2409482d12410909),
|
||||||
|
I64(0xdd70a7ade0d77070), I64(0xe2b6d954716fb6b6), I64(0x67d0ceb7bd1ed0d0), I64(0x93ed3b7ec7d6eded),
|
||||||
|
I64(0x17cc2edb85e2cccc), I64(0x15422a5784684242), I64(0x5a98b4c22d2c9898), I64(0xaaa4490e55eda4a4),
|
||||||
|
I64(0xa0285d8850752828), I64(0x6d5cda31b8865c5c), I64(0xc7f8933fed6bf8f8), I64(0x228644a411c28686),
|
||||||
|
}, {
|
||||||
|
/* C7 vectors */
|
||||||
|
I64(0x186018c07830d818), I64(0x238c2305af462623), I64(0xc63fc67ef991b8c6), I64(0xe887e8136fcdfbe8),
|
||||||
|
I64(0x8726874ca113cb87), I64(0xb8dab8a9626d11b8), I64(0x0104010805020901), I64(0x4f214f426e9e0d4f),
|
||||||
|
I64(0x36d836adee6c9b36), I64(0xa6a2a6590451ffa6), I64(0xd26fd2debdb90cd2), I64(0xf5f3f5fb06f70ef5),
|
||||||
|
I64(0x79f979ef80f29679), I64(0x6fa16f5fcede306f), I64(0x917e91fcef3f6d91), I64(0x525552aa07a4f852),
|
||||||
|
I64(0x609d6027fdc04760), I64(0xbccabc89766535bc), I64(0x9b569baccd2b379b), I64(0x8e028e048c018a8e),
|
||||||
|
I64(0xa3b6a371155bd2a3), I64(0x0c300c603c186c0c), I64(0x7bf17bff8af6847b), I64(0x35d435b5e16a8035),
|
||||||
|
I64(0x1d741de8693af51d), I64(0xe0a7e05347ddb3e0), I64(0xd77bd7f6acb321d7), I64(0xc22fc25eed999cc2),
|
||||||
|
I64(0x2eb82e6d965c432e), I64(0x4b314b627a96294b), I64(0xfedffea321e15dfe), I64(0x5741578216aed557),
|
||||||
|
I64(0x155415a8412abd15), I64(0x77c1779fb6eee877), I64(0x37dc37a5eb6e9237), I64(0xe5b3e57b56d79ee5),
|
||||||
|
I64(0x9f469f8cd923139f), I64(0xf0e7f0d317fd23f0), I64(0x4a354a6a7f94204a), I64(0xda4fda9e95a944da),
|
||||||
|
I64(0x587d58fa25b0a258), I64(0xc903c906ca8fcfc9), I64(0x29a429558d527c29), I64(0x0a280a5022145a0a),
|
||||||
|
I64(0xb1feb1e14f7f50b1), I64(0xa0baa0691a5dc9a0), I64(0x6bb16b7fdad6146b), I64(0x852e855cab17d985),
|
||||||
|
I64(0xbdcebd8173673cbd), I64(0x5d695dd234ba8f5d), I64(0x1040108050209010), I64(0xf4f7f4f303f507f4),
|
||||||
|
I64(0xcb0bcb16c08bddcb), I64(0x3ef83eedc67cd33e), I64(0x05140528110a2d05), I64(0x6781671fe6ce7867),
|
||||||
|
I64(0xe4b7e47353d597e4), I64(0x279c2725bb4e0227), I64(0x4119413258827341), I64(0x8b168b2c9d0ba78b),
|
||||||
|
I64(0xa7a6a7510153f6a7), I64(0x7de97dcf94fab27d), I64(0x956e95dcfb374995), I64(0xd847d88e9fad56d8),
|
||||||
|
I64(0xfbcbfb8b30eb70fb), I64(0xee9fee2371c1cdee), I64(0x7ced7cc791f8bb7c), I64(0x66856617e3cc7166),
|
||||||
|
I64(0xdd53dda68ea77bdd), I64(0x175c17b84b2eaf17), I64(0x47014702468e4547), I64(0x9e429e84dc211a9e),
|
||||||
|
I64(0xca0fca1ec589d4ca), I64(0x2db42d75995a582d), I64(0xbfc6bf9179632ebf), I64(0x071c07381b0e3f07),
|
||||||
|
I64(0xad8ead012347acad), I64(0x5a755aea2fb4b05a), I64(0x8336836cb51bef83), I64(0x33cc3385ff66b633),
|
||||||
|
I64(0x6391633ff2c65c63), I64(0x020802100a041202), I64(0xaa92aa39384993aa), I64(0x71d971afa8e2de71),
|
||||||
|
I64(0xc807c80ecf8dc6c8), I64(0x196419c87d32d119), I64(0x4939497270923b49), I64(0xd943d9869aaf5fd9),
|
||||||
|
I64(0xf2eff2c31df931f2), I64(0xe3abe34b48dba8e3), I64(0x5b715be22ab6b95b), I64(0x881a8834920dbc88),
|
||||||
|
I64(0x9a529aa4c8293e9a), I64(0x2698262dbe4c0b26), I64(0x32c8328dfa64bf32), I64(0xb0fab0e94a7d59b0),
|
||||||
|
I64(0xe983e91b6acff2e9), I64(0x0f3c0f78331e770f), I64(0xd573d5e6a6b733d5), I64(0x803a8074ba1df480),
|
||||||
|
I64(0xbec2be997c6127be), I64(0xcd13cd26de87ebcd), I64(0x34d034bde4688934), I64(0x483d487a75903248),
|
||||||
|
I64(0xffdbffab24e354ff), I64(0x7af57af78ff48d7a), I64(0x907a90f4ea3d6490), I64(0x5f615fc23ebe9d5f),
|
||||||
|
I64(0x2080201da0403d20), I64(0x68bd6867d5d00f68), I64(0x1a681ad07234ca1a), I64(0xae82ae192c41b7ae),
|
||||||
|
I64(0xb4eab4c95e757db4), I64(0x544d549a19a8ce54), I64(0x937693ece53b7f93), I64(0x2288220daa442f22),
|
||||||
|
I64(0x648d6407e9c86364), I64(0xf1e3f1db12ff2af1), I64(0x73d173bfa2e6cc73), I64(0x124812905a248212),
|
||||||
|
I64(0x401d403a5d807a40), I64(0x0820084028104808), I64(0xc32bc356e89b95c3), I64(0xec97ec337bc5dfec),
|
||||||
|
I64(0xdb4bdb9690ab4ddb), I64(0xa1bea1611f5fc0a1), I64(0x8d0e8d1c8307918d), I64(0x3df43df5c97ac83d),
|
||||||
|
I64(0x976697ccf1335b97), I64(0x0000000000000000), I64(0xcf1bcf36d483f9cf), I64(0x2bac2b4587566e2b),
|
||||||
|
I64(0x76c57697b3ece176), I64(0x82328264b019e682), I64(0xd67fd6fea9b128d6), I64(0x1b6c1bd87736c31b),
|
||||||
|
I64(0xb5eeb5c15b7774b5), I64(0xaf86af112943beaf), I64(0x6ab56a77dfd41d6a), I64(0x505d50ba0da0ea50),
|
||||||
|
I64(0x450945124c8a5745), I64(0xf3ebf3cb18fb38f3), I64(0x30c0309df060ad30), I64(0xef9bef2b74c3c4ef),
|
||||||
|
I64(0x3ffc3fe5c37eda3f), I64(0x554955921caac755), I64(0xa2b2a2791059dba2), I64(0xea8fea0365c9e9ea),
|
||||||
|
I64(0x6589650fecca6a65), I64(0xbad2bab9686903ba), I64(0x2fbc2f65935e4a2f), I64(0xc027c04ee79d8ec0),
|
||||||
|
I64(0xde5fdebe81a160de), I64(0x1c701ce06c38fc1c), I64(0xfdd3fdbb2ee746fd), I64(0x4d294d52649a1f4d),
|
||||||
|
I64(0x927292e4e0397692), I64(0x75c9758fbceafa75), I64(0x061806301e0c3606), I64(0x8a128a249809ae8a),
|
||||||
|
I64(0xb2f2b2f940794bb2), I64(0xe6bfe66359d185e6), I64(0x0e380e70361c7e0e), I64(0x1f7c1ff8633ee71f),
|
||||||
|
I64(0x62956237f7c45562), I64(0xd477d4eea3b53ad4), I64(0xa89aa829324d81a8), I64(0x966296c4f4315296),
|
||||||
|
I64(0xf9c3f99b3aef62f9), I64(0xc533c566f697a3c5), I64(0x25942535b14a1025), I64(0x597959f220b2ab59),
|
||||||
|
I64(0x842a8454ae15d084), I64(0x72d572b7a7e4c572), I64(0x39e439d5dd72ec39), I64(0x4c2d4c5a6198164c),
|
||||||
|
I64(0x5e655eca3bbc945e), I64(0x78fd78e785f09f78), I64(0x38e038ddd870e538), I64(0x8c0a8c148605988c),
|
||||||
|
I64(0xd163d1c6b2bf17d1), I64(0xa5aea5410b57e4a5), I64(0xe2afe2434dd9a1e2), I64(0x6199612ff8c24e61),
|
||||||
|
I64(0xb3f6b3f1457b42b3), I64(0x21842115a5423421), I64(0x9c4a9c94d625089c), I64(0x1e781ef0663cee1e),
|
||||||
|
I64(0x4311432252866143), I64(0xc73bc776fc93b1c7), I64(0xfcd7fcb32be54ffc), I64(0x0410042014082404),
|
||||||
|
I64(0x515951b208a2e351), I64(0x995e99bcc72f2599), I64(0x6da96d4fc4da226d), I64(0x0d340d68391a650d),
|
||||||
|
I64(0xfacffa8335e979fa), I64(0xdf5bdfb684a369df), I64(0x7ee57ed79bfca97e), I64(0x2490243db4481924),
|
||||||
|
I64(0x3bec3bc5d776fe3b), I64(0xab96ab313d4b9aab), I64(0xce1fce3ed181f0ce), I64(0x1144118855229911),
|
||||||
|
I64(0x8f068f0c8903838f), I64(0x4e254e4a6b9c044e), I64(0xb7e6b7d1517366b7), I64(0xeb8beb0b60cbe0eb),
|
||||||
|
I64(0x3cf03cfdcc78c13c), I64(0x813e817cbf1ffd81), I64(0x946a94d4fe354094), I64(0xf7fbf7eb0cf31cf7),
|
||||||
|
I64(0xb9deb9a1676f18b9), I64(0x134c13985f268b13), I64(0x2cb02c7d9c58512c), I64(0xd36bd3d6b8bb05d3),
|
||||||
|
I64(0xe7bbe76b5cd38ce7), I64(0x6ea56e57cbdc396e), I64(0xc437c46ef395aac4), I64(0x030c03180f061b03),
|
||||||
|
I64(0x5645568a13acdc56), I64(0x440d441a49885e44), I64(0x7fe17fdf9efea07f), I64(0xa99ea921374f88a9),
|
||||||
|
I64(0x2aa82a4d8254672a), I64(0xbbd6bbb16d6b0abb), I64(0xc123c146e29f87c1), I64(0x535153a202a6f153),
|
||||||
|
I64(0xdc57dcae8ba572dc), I64(0x0b2c0b582716530b), I64(0x9d4e9d9cd327019d), I64(0x6cad6c47c1d82b6c),
|
||||||
|
I64(0x31c43195f562a431), I64(0x74cd7487b9e8f374), I64(0xf6fff6e309f115f6), I64(0x4605460a438c4c46),
|
||||||
|
I64(0xac8aac092645a5ac), I64(0x891e893c970fb589), I64(0x145014a04428b414), I64(0xe1a3e15b42dfbae1),
|
||||||
|
I64(0x165816b04e2ca616), I64(0x3ae83acdd274f73a), I64(0x69b9696fd0d20669), I64(0x092409482d124109),
|
||||||
|
I64(0x70dd70a7ade0d770), I64(0xb6e2b6d954716fb6), I64(0xd067d0ceb7bd1ed0), I64(0xed93ed3b7ec7d6ed),
|
||||||
|
I64(0xcc17cc2edb85e2cc), I64(0x4215422a57846842), I64(0x985a98b4c22d2c98), I64(0xa4aaa4490e55eda4),
|
||||||
|
I64(0x28a0285d88507528), I64(0x5c6d5cda31b8865c), I64(0xf8c7f8933fed6bf8), I64(0x86228644a411c286),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/* end of whirlpool_sbox array */
|
76
include/b64.h
Normal file
76
include/b64.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* `b64.h' - b64
|
||||||
|
*
|
||||||
|
* copyright (c) 2014 joseph werle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef B64_H
|
||||||
|
#define B64_H 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Memory allocation functions to use. You can define b64_malloc and
|
||||||
|
* b64_realloc to custom functions if you want.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef b64_malloc
|
||||||
|
# define b64_malloc(ptr) malloc(ptr)
|
||||||
|
#endif
|
||||||
|
#ifndef b64_realloc
|
||||||
|
# define b64_realloc(ptr, size) realloc(ptr, size)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64 index table.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const char b64_table[] = {
|
||||||
|
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
|
||||||
|
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
|
||||||
|
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
|
||||||
|
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
|
||||||
|
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
|
||||||
|
'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
|
||||||
|
'w', 'x', 'y', 'z', '0', '1', '2', '3',
|
||||||
|
'4', '5', '6', '7', '8', '9', '+', '/'
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode `unsigned char *' source with `size_t' size.
|
||||||
|
* Returns a `char *' base64 encoded string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
b64_encode (const unsigned char *, size_t);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode `unsigned char *' source with `size_t' size.
|
||||||
|
* Returns a `char *' base64 encoded string + size of encoded string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
b64_encode_ex (const unsigned char *, size_t, size_t *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dencode `char *' source with `size_t' size.
|
||||||
|
* Returns a `unsigned char *' base64 decoded string.
|
||||||
|
*/
|
||||||
|
unsigned char *
|
||||||
|
b64_decode (const char *, size_t);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dencode `char *' source with `size_t' size.
|
||||||
|
* Returns a `unsigned char *' base64 decoded string + size of decoded string.
|
||||||
|
*/
|
||||||
|
unsigned char *
|
||||||
|
b64_decode_ex (const char *, size_t, size_t *);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
34
include/whirlpool.h
Normal file
34
include/whirlpool.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/* whirlpool.h */
|
||||||
|
#ifndef WHIRLPOOL_H
|
||||||
|
#define WHIRLPOOL_H
|
||||||
|
#include "ustd.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define whirlpool_block_size 64
|
||||||
|
|
||||||
|
/* algorithm context */
|
||||||
|
typedef struct whirlpool_ctx
|
||||||
|
{
|
||||||
|
uint64_t hash[8]; /* 512-bit algorithm internal hashing state */
|
||||||
|
unsigned char message[whirlpool_block_size]; /* 512-bit buffer to hash */
|
||||||
|
|
||||||
|
/* Note: original algorith uses 256-bit counter, allowing to hash up to
|
||||||
|
2^256 bits sized message. For optimization we use here 64-bit counter,
|
||||||
|
thus reducing maximal message size to 2^64 bits = 2 Exbibytes = 2^21 TiB) */
|
||||||
|
uint64_t length; /* number of processed bytes */
|
||||||
|
} whirlpool_ctx;
|
||||||
|
|
||||||
|
/* hash functions */
|
||||||
|
|
||||||
|
void rhash_whirlpool_init(whirlpool_ctx* ctx);
|
||||||
|
void rhash_whirlpool_update(whirlpool_ctx* ctx, const unsigned char* msg, size_t size);
|
||||||
|
void rhash_whirlpool_final(whirlpool_ctx* ctx, unsigned char* result);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* WHIRLPOOL_H */
|
@ -9,6 +9,8 @@
|
|||||||
#include <sha1.h>
|
#include <sha1.h>
|
||||||
#include <sha256.h>
|
#include <sha256.h>
|
||||||
#include <sha3.h>
|
#include <sha3.h>
|
||||||
|
#include <b64.h>
|
||||||
|
#include <whirlpool.h>
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
@ -48,6 +50,99 @@ template < class T > static SQInteger HashF(HSQUIRRELVM vm)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Hash the specified value or the result of a formatted string with whirlpool algorithm.
|
||||||
|
*/
|
||||||
|
static SQInteger WhirlpoolF(HSQUIRRELVM vm)
|
||||||
|
{
|
||||||
|
// Attempt to retrieve the value from the stack as a string
|
||||||
|
StackStrF val(vm, 2);
|
||||||
|
// Have we failed to retrieve the string?
|
||||||
|
if (SQ_FAILED(val.mRes))
|
||||||
|
{
|
||||||
|
return val.mRes; // Propagate the error!
|
||||||
|
}
|
||||||
|
// Prepare a whirlpool hashing context
|
||||||
|
whirlpool_ctx ctx;
|
||||||
|
// Initialize the hashing context
|
||||||
|
rhash_whirlpool_init(&ctx);
|
||||||
|
// Update the context with the given string
|
||||||
|
rhash_whirlpool_update(&ctx, reinterpret_cast< const unsigned char * >(val.mPtr),
|
||||||
|
val.mLen < 0 ? 0 : static_cast< size_t >(val.mLen));
|
||||||
|
// Reserve space for the result in binary form
|
||||||
|
unsigned char raw_hash[whirlpool_block_size];
|
||||||
|
// Finalize hashing and obtain the result
|
||||||
|
rhash_whirlpool_final(&ctx, raw_hash);
|
||||||
|
// Reserve space for the hexadecimal string
|
||||||
|
char hex_hash[whirlpool_block_size * 2];
|
||||||
|
// Convert from binary form to hex string
|
||||||
|
for (int i = 0, p = 0; i < whirlpool_block_size; ++i)
|
||||||
|
{
|
||||||
|
static const char dec2hex[16+1] = "0123456789abcdef";
|
||||||
|
hex_hash[p++] = dec2hex[(raw_hash[i] >> 4) & 15];
|
||||||
|
hex_hash[p++] = dec2hex[ raw_hash[i] & 15];
|
||||||
|
}
|
||||||
|
// Push the string on the stack
|
||||||
|
sq_pushstring(vm, hex_hash, whirlpool_block_size * 2);
|
||||||
|
// At this point we have a valid string on the stack
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Encode the specified value or the result of a formatted string with base64 algorithm.
|
||||||
|
*/
|
||||||
|
static SQInteger EncodeBase64F(HSQUIRRELVM vm)
|
||||||
|
{
|
||||||
|
// Attempt to retrieve the value from the stack as a string
|
||||||
|
StackStrF val(vm, 2);
|
||||||
|
// Have we failed to retrieve the string?
|
||||||
|
if (SQ_FAILED(val.mRes))
|
||||||
|
{
|
||||||
|
return val.mRes; // Propagate the error!
|
||||||
|
}
|
||||||
|
// Size of the encoded string
|
||||||
|
size_t enclen = 0;
|
||||||
|
// Attempt to encode the resulted string
|
||||||
|
char * result = b64_encode_ex(reinterpret_cast< const unsigned char * >(val.mPtr),
|
||||||
|
val.mLen < 0 ? 0 : static_cast< size_t >(val.mLen), &enclen);
|
||||||
|
// Did we fail to allocate memory for it?
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return sq_throwerror(vm, _SC("Unable to allocate memory for output"));
|
||||||
|
}
|
||||||
|
// Push the string on the stack
|
||||||
|
sq_pushstring(vm, result, ConvTo< SQInteger >::From(enclen));
|
||||||
|
// At this point we have a valid string on the stack
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Decode the specified value or the result of a formatted string with base64 algorithm.
|
||||||
|
*/
|
||||||
|
static SQInteger DecodeBase64F(HSQUIRRELVM vm)
|
||||||
|
{
|
||||||
|
// Attempt to retrieve the value from the stack as a string
|
||||||
|
StackStrF val(vm, 2);
|
||||||
|
// Have we failed to retrieve the string?
|
||||||
|
if (SQ_FAILED(val.mRes))
|
||||||
|
{
|
||||||
|
return val.mRes; // Propagate the error!
|
||||||
|
}
|
||||||
|
// Size of the decoded string
|
||||||
|
size_t declen = 0;
|
||||||
|
// Attempt to decode the resulted string
|
||||||
|
unsigned char * result = b64_decode_ex(val.mPtr, val.mLen < 0 ? 0 : static_cast< size_t >(val.mLen), &declen);
|
||||||
|
// Did we fail to allocate memory for it?
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return sq_throwerror(vm, _SC("Unable to allocate memory for output"));
|
||||||
|
}
|
||||||
|
// Push the string on the stack
|
||||||
|
sq_pushstring(vm, reinterpret_cast< CSStr >(result), ConvTo< SQInteger >::From(declen));
|
||||||
|
// At this point we have a valid string on the stack
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
template < class T > static void RegisterWrapper(Table & hashns, CCStr cname)
|
template < class T > static void RegisterWrapper(Table & hashns, CCStr cname)
|
||||||
{
|
{
|
||||||
@ -87,6 +182,9 @@ void Register_Hash(HSQUIRRELVM vm)
|
|||||||
hashns.SquirrelFunc(_SC("GetSHA1"), &HashF< SHA1 >);
|
hashns.SquirrelFunc(_SC("GetSHA1"), &HashF< SHA1 >);
|
||||||
hashns.SquirrelFunc(_SC("GetSHA256"), &HashF< SHA256 >);
|
hashns.SquirrelFunc(_SC("GetSHA256"), &HashF< SHA256 >);
|
||||||
hashns.SquirrelFunc(_SC("GetSHA3"), &HashF< SHA3 >);
|
hashns.SquirrelFunc(_SC("GetSHA3"), &HashF< SHA3 >);
|
||||||
|
hashns.SquirrelFunc(_SC("GetWhirlpool"), &WhirlpoolF);
|
||||||
|
hashns.SquirrelFunc(_SC("EncodeBase64"), &EncodeBase64F);
|
||||||
|
hashns.SquirrelFunc(_SC("DecodeBase64"), &DecodeBase64F);
|
||||||
|
|
||||||
RootTable(vm).Bind(_SC("SqHash"), hashns);
|
RootTable(vm).Bind(_SC("SqHash"), hashns);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user