]> git.saurik.com Git - apple/security.git/blob - AppleCSP/BSafeCSP/test/t.cpp
Security-179.tar.gz
[apple/security.git] / AppleCSP / BSafeCSP / test / t.cpp
1 /*
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 #include <bsafe.h>
20 #include <aglobal.h>
21
22 #include <stdlib.h>
23 #include <stdio.h>
24 #include <string.h>
25
26
27 B_ALGORITHM_METHOD *chooser[] = {
28 &AM_SHA,
29 &AM_SHA_RANDOM,
30 NULL
31 };
32
33 void dumpItem(ITEM &item, const char *name);
34
35 unsigned char seed[] = { 17, 205, 99, 13, 6, 199 };
36 char data[] = "These are the times that try men's souls.";
37
38
39 #define check(expr) \
40 if (status = (expr)) { printf("error %d at %d\n", status, __LINE__); abort(); } else /* ok */
41
42 int main(int argc, char *argv[])
43 {
44 int status;
45
46 ITEM key;
47 key.data = (unsigned char *)"Walla Walla Washington! Yeah, yeah, yeah!";
48 key.len = strlen((const char *)key.data);
49 B_KEY_OBJ bsKey = NULL;
50 check(B_CreateKeyObject(&bsKey));
51 check(B_SetKeyInfo(bsKey, KI_Item, POINTER(&key)));
52
53 B_ALGORITHM_OBJ macAlg = NULL;
54 check(B_CreateAlgorithmObject(&macAlg));
55 B_DIGEST_SPECIFIER macSpec;
56 macSpec.digestInfoType = AI_SHA1;
57 macSpec.digestInfoParams = NULL_PTR;
58 check(B_SetAlgorithmInfo(macAlg, AI_HMAC, POINTER(&macSpec)));
59
60 check(B_DigestInit(macAlg, bsKey, chooser, NULL));
61 check(B_DigestUpdate(macAlg,
62 POINTER(data), sizeof(data), NULL));
63 char mac[128];
64 unsigned int length;
65 check(B_DigestFinal(macAlg, POINTER(mac), &length, sizeof(mac),
66 NULL));
67 ITEM macItem; macItem.data = POINTER(mac); macItem.len = length;
68 dumpItem(macItem, "MAC");
69
70 check(B_DigestUpdate(macAlg, POINTER(data), 10, NULL));
71 check(B_DigestUpdate(macAlg,
72 POINTER(data+10), sizeof(data)-10, NULL));
73 check(B_DigestFinal(macAlg, POINTER(mac), &length, sizeof(mac),
74 NULL));
75 macItem.data = POINTER(mac); macItem.len = length;
76 dumpItem(macItem, "MAC");
77
78 printf("Done.\n");
79
80 exit(0);
81 }
82
83 void dumpItem(ITEM &item, const char *name)
84 {
85 printf("%s [%d] ", name, item.len);
86 for (unsigned char *p = item.data; p < item.data + item.len; p++)
87 printf("%2.2x", *p);
88 printf("\n");
89 }
90
91
92
93
94
95 void T_free(POINTER p)
96 { free(p); }
97
98 POINTER T_malloc(unsigned int size)
99 { return (POINTER)malloc(size); }
100
101 POINTER T_realloc(POINTER p, unsigned int size)
102 { return (POINTER)realloc(p, size); }
103
104 int T_memcmp(POINTER p1, POINTER p2, unsigned int size)
105 { return memcmp(p1, p2, size); }
106 void T_memcpy(POINTER p1, POINTER p2, unsigned int size)
107 { memcpy(p1, p2, size); }
108 void T_memmove(POINTER p1, POINTER p2, unsigned int size)
109 { memmove(p1, p2, size); }
110 void T_memset(POINTER p1, int size, unsigned int val)
111 { memset(p1, size, val); }
112 extern "C" int T_GetDynamicList()
113 { printf("GetDynamicList!\n"); abort(); }