1/* 2 * Copyright (c) 2005-2007,2011,2014 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 25/* 26 * asn1Types.h - ASN.1/DER #defines - strictly hard coded per the real world 27 * 28 */ 29 30#ifndef _ASN1_TYPES_H_ 31#define _ASN1_TYPES_H_ 32 33#ifdef __cplusplus 34extern "C" { 35#endif 36 37/* copied from libsecurity_asn1 project */ 38 39#define ASN1_BOOLEAN 0x01 40#define ASN1_INTEGER 0x02 41#define ASN1_BIT_STRING 0x03 42#define ASN1_OCTET_STRING 0x04 43#define ASN1_NULL 0x05 44#define ASN1_OBJECT_ID 0x06 45#define ASN1_OBJECT_DESCRIPTOR 0x07 46/* External type and instance-of type 0x08 */ 47#define ASN1_REAL 0x09 48#define ASN1_ENUMERATED 0x0a 49#define ASN1_EMBEDDED_PDV 0x0b 50#define ASN1_UTF8_STRING 0x0c 51/* 0x0d */ 52/* 0x0e */ 53/* 0x0f */ 54#define ASN1_SEQUENCE 0x10 55#define ASN1_SET 0x11 56#define ASN1_NUMERIC_STRING 0x12 57#define ASN1_PRINTABLE_STRING 0x13 58#define ASN1_T61_STRING 0x14 59#define ASN1_VIDEOTEX_STRING 0x15 60#define ASN1_IA5_STRING 0x16 61#define ASN1_UTC_TIME 0x17 62#define ASN1_GENERALIZED_TIME 0x18 63#define ASN1_GRAPHIC_STRING 0x19 64#define ASN1_VISIBLE_STRING 0x1a 65#define ASN1_GENERAL_STRING 0x1b 66#define ASN1_UNIVERSAL_STRING 0x1c 67/* 0x1d */ 68#define ASN1_BMP_STRING 0x1e 69#define ASN1_HIGH_TAG_NUMBER 0x1f 70#define ASN1_TELETEX_STRING ASN1_T61_STRING 71 72#ifdef DER_MULTIBYTE_TAGS 73 74#define ASN1_TAG_MASK ((DERTag)~0) 75#define ASN1_TAGNUM_MASK ((DERTag)~((DERTag)7 << (sizeof(DERTag) * 8 - 3))) 76 77#define ASN1_METHOD_MASK ((DERTag)1 << (sizeof(DERTag) * 8 - 3)) 78#define ASN1_PRIMITIVE ((DERTag)0 << (sizeof(DERTag) * 8 - 3)) 79#define ASN1_CONSTRUCTED ((DERTag)1 << (sizeof(DERTag) * 8 - 3)) 80 81#define ASN1_CLASS_MASK ((DERTag)3 << (sizeof(DERTag) * 8 - 2)) 82#define ASN1_UNIVERSAL ((DERTag)0 << (sizeof(DERTag) * 8 - 2)) 83#define ASN1_APPLICATION ((DERTag)1 << (sizeof(DERTag) * 8 - 2)) 84#define ASN1_CONTEXT_SPECIFIC ((DERTag)2 << (sizeof(DERTag) * 8 - 2)) 85#define ASN1_PRIVATE ((DERTag)3 << (sizeof(DERTag) * 8 - 2)) 86 87#else /* DER_MULTIBYTE_TAGS */ 88 89#define ASN1_TAG_MASK 0xff 90#define ASN1_TAGNUM_MASK 0x1f 91#define ASN1_METHOD_MASK 0x20 92#define ASN1_PRIMITIVE 0x00 93#define ASN1_CONSTRUCTED 0x20 94 95#define ASN1_CLASS_MASK 0xc0 96#define ASN1_UNIVERSAL 0x00 97#define ASN1_APPLICATION 0x40 98#define ASN1_CONTEXT_SPECIFIC 0x80 99#define ASN1_PRIVATE 0xc0 100 101#endif /* !DER_MULTIBYTE_TAGS */ 102 103/* sequence and set appear as the following */ 104#define ASN1_CONSTR_SEQUENCE (ASN1_CONSTRUCTED | ASN1_SEQUENCE) 105#define ASN1_CONSTR_SET (ASN1_CONSTRUCTED | ASN1_SET) 106 107#ifdef __cplusplus 108} 109#endif 110 111#endif /* _ASN1_TYPES_H_ */ 112 113