X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/Security/libsecurity_keychain/libDER/libDERUtils/printFields.c diff --git a/Security/libsecurity_keychain/libDER/libDERUtils/printFields.c b/Security/libsecurity_keychain/libDER/libDERUtils/printFields.c new file mode 100644 index 00000000..51bcffe9 --- /dev/null +++ b/Security/libsecurity_keychain/libDER/libDERUtils/printFields.c @@ -0,0 +1,364 @@ +/* + * Copyright (c) 2005-2007,2011-2012,2014 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The 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. + * + * @APPLE_LICENSE_HEADER_END@ + */ + + +/* + * printFeilds.h - print various DER objects + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static int indentLevel = 0; + +void doIndent(void) +{ + int i; + for (i = 0; ilength; + + printf("<%lu> ", item->length); + if(toPrint > TO_PRINT_MAX) { + toPrint = TO_PRINT_MAX; + } + for(dex=0; dexdata[dex]); + } + if(item->length > TO_PRINT_MAX) { + printf("..."); + } + printf("\n"); +} + +void printBitString( + DERItem *item) +{ + DERSize dex; + DERSize toPrint = item->length; + DERItem bitStringBytes; + DERByte numUnused; + DERReturn drtn; + + drtn = DERParseBitString(item, &bitStringBytes, &numUnused); + if(drtn) { + DERPerror("DERParseBitString", drtn); + return; + } + + printf("<%lu, %lu> ", (unsigned long)bitStringBytes.length, (unsigned long)numUnused); + toPrint = bitStringBytes.length; + if(toPrint > TO_PRINT_MAX) { + toPrint = TO_PRINT_MAX; + } + for(dex=0; dexlength > TO_PRINT_MAX) { + printf("..."); + } + printf("\n"); +} + +void printString( + DERItem *item) +{ + unsigned dex; + char *cp = (char *)item->data; + printf("'"); + for(dex=0; dexlength; dex++) { + putchar(*cp++); + } + printf("'\n"); + +} + +#define COLON_COLUMN 20 + +/* + * Print line header, with current indent, followed by specified label, followed + * by a ':' in column COLON_COLUMN, followed by one space. + */ +void printHeader( + const char *label) +{ + size_t numPrinted; + + doIndent(); + printf("%s", label); + numPrinted = indentLevel + strlen(label); + if(numPrinted < COLON_COLUMN) { + size_t numSpaces = COLON_COLUMN - numPrinted; + size_t dex; + for(dex=0; dex