16ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 26ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * datatypes_driver.c 36ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 46ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * a test driver for crypto/math datatypes 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 * 126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Copyright (c) 2001-2006, Cisco Systems, Inc. 136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * All rights reserved. 146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistribution and use in source and binary forms, with or without 166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * modification, are permitted provided that the following conditions 176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * are met: 186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistributions of source code must retain the above copyright 206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * notice, this list of conditions and the following disclaimer. 216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistributions in binary form must reproduce the above 236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * copyright notice, this list of conditions and the following 246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * disclaimer in the documentation and/or other materials provided 256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * with the distribution. 266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Neither the name of the Cisco Systems, Inc. nor the names of its 286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * contributors may be used to endorse or promote products derived 296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * from this software without specific prior written permission. 306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 386ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 396ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 406ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 416ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 426ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * OF THE POSSIBILITY OF SUCH DAMAGE. 436ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 446ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 456ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 466ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 476ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <stdio.h> /* for printf() */ 486ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <string.h> /* for strlen() */ 496ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include "datatypes.h" 506ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 516ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 526ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgbyte_order(void); 536ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 546ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 556ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgtest_hex_string_funcs(void); 566ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 576ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 586ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgprint_string(char *s); 596ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 606ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 616ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgtest_bswap(void); 626ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 636ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgint 646ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgmain (void) { 656ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 666ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org /* 676ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * this program includes various and sundry tests for fundamental 686ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * datatypes. it's a grab-bag of throwaway code, retained only in 696ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * case of future problems 706ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 716ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 726ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org int i, j; 736ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_t x; 746ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org char *r = 756ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org "The Moving Finger writes; and, having writ,\n" 766ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org "Moves on: nor all thy Piety nor Wit\n" 776ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org "Shall lure it back to cancel half a Line,\n" 786ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org "Nor all thy Tears wash out a Word of it."; 796ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org char *s = "incomplet"; 806ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 816ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org print_string(r); 826ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org print_string(s); 836ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 846ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org byte_order(); 856ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org test_hex_string_funcs(); 866ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 876ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (j=0; j < 128; j++) { 886ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_to_zero(&x); 896ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org /* x.v32[0] = (1 << j); */ 906ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_bit(&x, j); 916ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", v128_bit_string(&x)); 926ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_clear_bit(&x, j); 936ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", v128_bit_string(&x)); 946ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 956ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 966ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 976ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("----------------------------------------------\n"); 986ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_to_zero(&x); 996ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < 128; i++) { 1006ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_bit(&x, i); 1016ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 1026ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", v128_bit_string(&x)); 1036ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1046ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("----------------------------------------------\n"); 1056ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_to_zero(&x); 1066ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_bit(&x, 0); 1076ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < 128; i++) { 1086ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", v128_bit_string(&x)); 1096ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_right_shift(&x, 1); 1106ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 1116ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("----------------------------------------------\n"); 1126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_to_zero(&x); 1136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_bit(&x, 127); 1146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < 128; i++) { 1156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", v128_bit_string(&x)); 1166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_left_shift(&x, 1); 1176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 1186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("----------------------------------------------\n"); 1196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < 128; i++) { 1206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_to_zero(&x); 1216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_bit(&x, 127); 1226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_left_shift(&x, i); 1236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", v128_bit_string(&x)); 1246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 1256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("----------------------------------------------\n"); 1266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_to_zero(&x); 1276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < 128; i+=2) { 1286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_set_bit(&x, i); 1296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 1306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("bit_string: { %s }\n", v128_bit_string(&x)); 1316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("get_bit: { "); 1326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < 128; i++) { 1336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org if (v128_get_bit(&x, i) == 1) 1346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("1"); 1356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org else 1366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("0"); 1376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 1386ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf(" } \n"); 1396ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1406ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org test_bswap(); 1416ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1426ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org return 0; 1436ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 1446ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1456ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1466ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* byte_order() prints out byte ordering of datatypes */ 1476ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1486ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1496ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgbyte_order(void) { 1506ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org int i; 1516ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v128_t e; 1526ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#if 0 1536ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v16_t b; 1546ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v32_t c; 1556ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org v64_t d; 1566ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1576ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < sizeof(b); i++) 1586ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org b.octet[i] = i; 1596ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < sizeof(c); i++) 1606ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org c.octet[i] = i; 1616ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < sizeof(d); i++) 1626ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org d.octet[i] = i; 1636ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1646ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v128_t:\t%s\n", v128_hex_string(&e)); 1656ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v64_t:\t%s\n", v64_hex_string(&d)); 1666ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v32_t:\t%s\n", v32_hex_string(c)); 1676ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v16_t:\t%s\n", v16_hex_string(b)); 1686ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1696ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org c.value = 0x01020304; 1706ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v32_t:\t%s\n", v32_hex_string(c)); 1716ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org b.value = 0x0102; 1726ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v16_t:\t%s\n", v16_hex_string(b)); 1736ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1746ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("uint16_t ordering:\n"); 1756ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1766ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org c.value = 0x00010002; 1776ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v32_t:\t%x%x\n", c.v16[0], c.v16[1]); 1786ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif 1796ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1806ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("byte ordering of crypto/math datatypes:\n"); 1816ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < sizeof(e); i++) 1826ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org e.v8[i] = i; 1836ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("v128_t: %s\n", v128_hex_string(&e)); 1846ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1856ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 1866ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1876ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 1886ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgtest_hex_string_funcs(void) { 1896ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org char hex1[] = "abadcafe"; 1906ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org char hex2[] = "0123456789abcdefqqqqq"; 1916ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org char raw[10]; 1926ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org int len; 1936ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1946ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org len = hex_string_to_octet_string(raw, hex1, strlen(hex1)); 1956ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("computed length: %d\tstring: %s\n", len, 1966ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org octet_string_hex_string(raw, len/2)); 1976ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("expected length: %u\tstring: %s\n", (unsigned)strlen(hex1), hex1); 1986ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 1996ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org len = hex_string_to_octet_string(raw, hex2, strlen(hex2)); 2006ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("computed length: %d\tstring: %s\n", len, 2016ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org octet_string_hex_string(raw, len/2)); 2026ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("expected length: %d\tstring: %s\n", 16, "0123456789abcdef"); 2036ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2046ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 2056ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2066ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2076ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgprint_string(char *s) { 2086ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org int i; 2096ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("%s\n", s); 2106ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("strlen(s) = %u\n", (unsigned)strlen(s)); 2116ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("{ "); 2126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org for (i=0; i < strlen(s); i++) { 2136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("0x%x, ", s[i]); 2146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org if (((i+1) % 8) == 0) 2156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("\n "); 2166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org } 2176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("}\n"); 2186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 2196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgvoid 2216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.orgtest_bswap(void) { 2226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org uint32_t x = 0x11223344; 2236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org uint64_t y = 0x1122334455667788LL; 2246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("before: %0x\nafter: %0x\n", x, be32_to_cpu(x)); 2266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("before: %0llx\nafter: %0llx\n", (unsigned long long)y, 2276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org (unsigned long long)be64_to_cpu(y)); 2286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org y = 1234; 2306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 2316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("1234: %0llx\n", (unsigned long long)y); 2326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("as octet string: %s\n", 2336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org octet_string_hex_string((uint8_t *) &y, 8)); 2346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org y = be64_to_cpu(y); 2356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printf("bswapped octet string: %s\n", 2366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org octet_string_hex_string((uint8_t *) &y, 8)); 2376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 238