16ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 26ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * math.h 36ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 46ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * crypto math operations and data types 56ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 66ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * David A. McGrew 76ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Cisco Systems, Inc. 86ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 96ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 106ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 116ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Copyright (c) 2001-2006 Cisco Systems, Inc. 126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * All rights reserved. 136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistribution and use in source and binary forms, with or without 156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * modification, are permitted provided that the following conditions 166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * are met: 176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistributions of source code must retain the above copyright 196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * notice, this list of conditions and the following disclaimer. 206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistributions in binary form must reproduce the above 226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * copyright notice, this list of conditions and the following 236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * disclaimer in the documentation and/or other materials provided 246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * with the distribution. 256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Neither the name of the Cisco Systems, Inc. nor the names of its 276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * contributors may be used to endorse or promote products derived 286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * from this software without specific prior written permission. 296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 386ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 396ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 406ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 416ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * OF THE POSSIBILITY OF SUCH DAMAGE. 426ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 436ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 446ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 456ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#ifndef MATH_H 466ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define MATH_H 476ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 486ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include "datatypes.h" 496ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 506ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgunsigned char 516ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_weight(v32_t a); 526ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 536ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgunsigned char 546ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_distance(v32_t x, v32_t y); 556ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 566ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgunsigned int 576ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_dot_product(v32_t a, v32_t b); 586ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 596ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 606ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv16_bit_string(v16_t x); 616ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 626ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 636ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_bit_string(v32_t x); 646ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 656ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 666ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv64_bit_string(const v64_t *x); 676ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 686ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 696ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgoctet_hex_string(uint8_t x); 706ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 716ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 726ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv16_hex_string(v16_t x); 736ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 746ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 756ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_hex_string(v32_t x); 766ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 776ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgchar * 786ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv64_hex_string(const v64_t *x); 796ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 806ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 816ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orghex_char_to_nibble(uint8_t c); 826ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 836ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 846ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgis_hex_string(char *s); 856ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 866ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv16_t 876ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orghex_string_to_v16(char *s); 886ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 896ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_t 906ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orghex_string_to_v32(char *s); 916ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 926ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv64_t 936ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orghex_string_to_v64(char *s); 946ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 956ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* the matrix A[] is stored in column format, i.e., A[i] is 966ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org the ith column of the matrix */ 976ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 986ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orguint8_t 996ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgA_times_x_plus_b(uint8_t A[8], uint8_t x, uint8_t b); 1006ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1016ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1026ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv16_copy_octet_string(v16_t *x, const uint8_t s[2]); 1036ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1046ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1056ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv32_copy_octet_string(v32_t *x, const uint8_t s[4]); 1066ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1076ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1086ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv64_copy_octet_string(v64_t *x, const uint8_t s[8]); 1096ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1106ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1116ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_add(v128_t *z, v128_t *x, v128_t *y); 1126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 1146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgoctet_string_is_eq(uint8_t *a, uint8_t *b, int len); 1156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgoctet_string_set_to_zero(uint8_t *s, int len); 1186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 1226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * the matrix A[] is stored in column format, i.e., A[i] is the ith 1236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * column of the matrix 1246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org*/ 1256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orguint8_t 1266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgA_times_x_plus_b(uint8_t A[8], uint8_t x, uint8_t b); 1276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#if 0 1306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#if WORDS_BIGENDIAN 1316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define _v128_add(z, x, y) { \ 1336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org uint64_t tmp; \ 1346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = x->v32[3] + y->v32[3]; \ 1366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[3] = (uint32_t) tmp; \ 1376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1386ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = x->v32[2] + y->v32[2] + (tmp >> 32); \ 1396ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[2] = (uint32_t) tmp; \ 1406ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1416ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = x->v32[1] + y->v32[1] + (tmp >> 32); \ 1426ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[1] = (uint32_t) tmp; \ 1436ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1446ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = x->v32[0] + y->v32[0] + (tmp >> 32); \ 1456ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[0] = (uint32_t) tmp; \ 1466ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 1476ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1486ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#else /* assume little endian architecture */ 1496ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1506ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define _v128_add(z, x, y) { \ 1516ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org uint64_t tmp; \ 1526ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1536ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = htonl(x->v32[3]) + htonl(y->v32[3]); \ 1546ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[3] = ntohl((uint32_t) tmp); \ 1556ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1566ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = htonl(x->v32[2]) + htonl(y->v32[2]) \ 1576ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org + htonl(tmp >> 32); \ 1586ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[2] = ntohl((uint32_t) tmp); \ 1596ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1606ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = htonl(x->v32[1]) + htonl(y->v32[1]) \ 1616ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org + htonl(tmp >> 32); \ 1626ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[1] = ntohl((uint32_t) tmp); \ 1636ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org \ 1646ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org tmp = htonl(x->v32[0]) + htonl(y->v32[0]) \ 1656ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org + htonl(tmp >> 32); \ 1666ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org z->v32[0] = ntohl((uint32_t) tmp); \ 1676ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 1686ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1696ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif /* WORDS_BIGENDIAN */ 1706ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif 1716ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1726ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#ifdef DATATYPES_USE_MACROS /* little functions are really macros */ 1736ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1746ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_set_to_zero(z) _v128_set_to_zero(z) 1756ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_copy(z, x) _v128_copy(z, x) 1766ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_xor(z, x, y) _v128_xor(z, x, y) 1776ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_and(z, x, y) _v128_and(z, x, y) 1786ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_or(z, x, y) _v128_or(z, x, y) 1796ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_complement(x) _v128_complement(x) 1806ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_is_eq(x, y) _v128_is_eq(x, y) 1816ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_xor_eq(x, y) _v128_xor_eq(x, y) 1826ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_get_bit(x, i) _v128_get_bit(x, i) 1836ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_set_bit(x, i) _v128_set_bit(x, i) 1846ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_clear_bit(x, i) _v128_clear_bit(x, i) 1856ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define v128_set_bit_to(x, i, y) _v128_set_bit_to(x, i, y) 1866ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1876ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#else 1886ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1896ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1906ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_set_to_zero(v128_t *x); 1916ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1926ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 1936ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_is_eq(const v128_t *x, const v128_t *y); 1946ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1956ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1966ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_copy(v128_t *x, const v128_t *y); 1976ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1986ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1996ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_xor(v128_t *z, v128_t *x, v128_t *y); 2006ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2016ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2026ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_and(v128_t *z, v128_t *x, v128_t *y); 2036ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2046ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2056ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_or(v128_t *z, v128_t *x, v128_t *y); 2066ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2076ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2086ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_complement(v128_t *x); 2096ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2106ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 2116ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_get_bit(const v128_t *x, int i); 2126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_set_bit(v128_t *x, int i) ; 2156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_clear_bit(v128_t *x, int i); 2186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgv128_set_bit_to(v128_t *x, int i, int y); 2216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif /* DATATYPES_USE_MACROS */ 2236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 2256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * octet_string_is_eq(a,b, len) returns 1 if the length len strings a 2266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * and b are not equal, returns 0 otherwise 2276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 2286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 2306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgoctet_string_is_eq(uint8_t *a, uint8_t *b, int len); 2316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgoctet_string_set_to_zero(uint8_t *s, int len); 2346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif /* MATH_H */ 2376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2386ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2396ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 240