X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/Security/libsecurity_apple_csp/tests/t.cpp diff --git a/Security/libsecurity_apple_csp/tests/t.cpp b/Security/libsecurity_apple_csp/tests/t.cpp new file mode 100644 index 00000000..fe402dad --- /dev/null +++ b/Security/libsecurity_apple_csp/tests/t.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2000-2001,2011,2014 Apple Inc. All Rights Reserved. + * + * The contents of this file constitute Original Code as defined in and are + * subject to the Apple Public Source License Version 1.2 (the 'License'). + * You may not use this file except in compliance with the License. Please obtain + * a copy of the License at http://www.apple.com/publicsource and read it before + * using this file. + * + * This Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS + * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT + * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the + * specific language governing rights and limitations under the License. + */ + + +#include +#include + +#include +#include +#include + + +B_ALGORITHM_METHOD *chooser[] = { + &AM_SHA, + &AM_SHA_RANDOM, + NULL +}; + +void dumpItem(ITEM &item, const char *name); + +unsigned char seed[] = { 17, 205, 99, 13, 6, 199 }; +char data[] = "These are the times that try men's souls."; + + +#define check(expr) \ + if (status = (expr)) { printf("error %d at %d\n", status, __LINE__); abort(); } else /* ok */ + +int main(int argc, char *argv[]) +{ + int status; + + ITEM key; + key.data = (unsigned char *)"Walla Walla Washington! Yeah, yeah, yeah!"; + key.len = strlen((const char *)key.data); + B_KEY_OBJ bsKey = NULL; + check(B_CreateKeyObject(&bsKey)); + check(B_SetKeyInfo(bsKey, KI_Item, POINTER(&key))); + + B_ALGORITHM_OBJ macAlg = NULL; + check(B_CreateAlgorithmObject(&macAlg)); + B_DIGEST_SPECIFIER macSpec; + macSpec.digestInfoType = AI_SHA1; + macSpec.digestInfoParams = NULL_PTR; + check(B_SetAlgorithmInfo(macAlg, AI_HMAC, POINTER(&macSpec))); + + check(B_DigestInit(macAlg, bsKey, chooser, NULL)); + check(B_DigestUpdate(macAlg, + POINTER(data), sizeof(data), NULL)); + char mac[128]; + unsigned int length; + check(B_DigestFinal(macAlg, POINTER(mac), &length, sizeof(mac), + NULL)); + ITEM macItem; macItem.data = POINTER(mac); macItem.len = length; + dumpItem(macItem, "MAC"); + + check(B_DigestUpdate(macAlg, POINTER(data), 10, NULL)); + check(B_DigestUpdate(macAlg, + POINTER(data+10), sizeof(data)-10, NULL)); + check(B_DigestFinal(macAlg, POINTER(mac), &length, sizeof(mac), + NULL)); + macItem.data = POINTER(mac); macItem.len = length; + dumpItem(macItem, "MAC"); + + printf("Done.\n"); + + exit(0); +} + +void dumpItem(ITEM &item, const char *name) +{ + printf("%s [%d] ", name, item.len); + for (unsigned char *p = item.data; p < item.data + item.len; p++) + printf("%2.2x", *p); + printf("\n"); +} + + + + + +void T_free(POINTER p) +{ free(p); } + +POINTER T_malloc(unsigned int size) +{ return (POINTER)malloc(size); } + +POINTER T_realloc(POINTER p, unsigned int size) +{ return (POINTER)realloc(p, size); } + +int T_memcmp(POINTER p1, POINTER p2, unsigned int size) +{ return memcmp(p1, p2, size); } +void T_memcpy(POINTER p1, POINTER p2, unsigned int size) +{ memcpy(p1, p2, size); } +void T_memmove(POINTER p1, POINTER p2, unsigned int size) +{ memmove(p1, p2, size); } +void T_memset(POINTER p1, int size, unsigned int val) +{ memset(p1, size, val); } +extern "C" int T_GetDynamicList() +{ printf("GetDynamicList!\n"); abort(); }