xref: /titanic_41/usr/src/common/net/wanboot/crypt/cmn_test.c (revision 4445fffbbb1ea25fd0e9ea68b9380dd7a6709025)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2002-2003 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #pragma ident	"%Z%%M%	%I%	%E% SMI"
28 
29 /*
30  * Common functions used by the crypto tests.
31  */
32 
33 #include <stdio.h>
34 #include "cmn_test.h"
35 
36 /*
37  * hexascii to integer conversion
38  */
39 static int
40 xstrtoi(char *str, int len) {
41 	int val;
42 	int c;
43 	int i;
44 
45 	val = 0;
46 	for (i = 0, c = *str++; len-- > 0; i++, c = *str++) {
47 		if (c >= '0' && c <= '9') {
48 			c -= '0';
49 		} else if (c >= 'A' && c <= 'F') {
50 			c = (c - 'A') + 10;
51 		} else if (c >= 'a' && c <= 'f') {
52 			c = (c - 'a') + 10;
53 		} else {
54 			break;
55 		}
56 		val *= 16;
57 		val += c;
58 	}
59 	return (val);
60 }
61 
62 /*
63  * Accepts a buffer containing a hexascii string and converts
64  * it to a buffer with the hexascii nibbles converted to integers.
65  */
66 void
67 getxdata(unsigned char *cp, char *field, int len)
68 {
69 	int i;
70 	int t;
71 
72 	for (i = 0; i < len; i++) {
73 		t = xstrtoi(field, 2);
74 		*cp++ = (char)t;
75 		field += 2;
76 	}
77 }
78 
79 /*
80  * Accepts a buffer of integer nibbles and prints them
81  * out as a hexascii string.
82  */
83 void
84 putxdata(unsigned char *cp, int len)
85 {
86 	int i;
87 
88 	for (i = 0; i < len; i++) {
89 		(void) printf("%02X", *cp++ & 0xff);
90 	}
91 }
92