]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_asn1/lib/SecAsn1Types.h
Security-57031.1.35.tar.gz
[apple/security.git] / libsecurity_asn1 / lib / SecAsn1Types.h
diff --git a/libsecurity_asn1/lib/SecAsn1Types.h b/libsecurity_asn1/lib/SecAsn1Types.h
deleted file mode 100644 (file)
index d82f5e2..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * The contents of this file are subject to the Mozilla Public
- * License Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- * 
- * Software distributed under the License is distributed on an "AS
- * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * rights and limitations under the License.
- * 
- * The Original Code is the Netscape security libraries.
- * 
- * The Initial Developer of the Original Code is Netscape
- * Communications Corporation.  Portions created by Netscape are 
- * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
- * Rights Reserved.
- * 
- * Contributor(s):
- * 
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License Version 2 or later (the
- * "GPL"), in which case the provisions of the GPL are applicable 
- * instead of those above.  If you wish to allow use of your 
- * version of this file only under the terms of the GPL and not to
- * allow others to use your version of this file under the MPL,
- * indicate your decision by deleting the provisions above and
- * replace them with the notice and other provisions required by
- * the GPL.  If you do not delete the provisions above, a recipient
- * may use your version of this file under either the MPL or the
- * GPL.
- */
-
-/*
- * Types for encoding/decoding of ASN.1 using BER/DER (Basic/Distinguished
- * Encoding Rules).
- */
-
-#ifndef _SEC_ASN1_TYPES_H_
-#define _SEC_ASN1_TYPES_H_
-
-#include <CoreFoundation/CFBase.h>             /* Boolean */
-#include <sys/types.h>
-#include <stdint.h>
-
-#include <TargetConditionals.h>
-#if TARGET_OS_EMBEDDED || TARGET_IPHONE_SIMULATOR
-/* @@@ We need something that tells us which platform we are building
-   for that let's us distinguish if we are doing an emulator build. */
-
-typedef struct {
-    size_t Length;
-    uint8_t *Data;
-} SecAsn1Item, SecAsn1Oid;
-
-typedef struct {
-    SecAsn1Oid algorithm;
-    SecAsn1Item parameters;
-} SecAsn1AlgId;
-
-typedef struct {
-    SecAsn1AlgId algorithm;
-    SecAsn1Item subjectPublicKey;
-} SecAsn1PubKeyInfo;
-
-#else
-#include <Security/cssmtype.h>
-#include <Security/x509defs.h>
-
-typedef CSSM_DATA SecAsn1Item;
-typedef CSSM_OID SecAsn1Oid;
-typedef CSSM_X509_ALGORITHM_IDENTIFIER SecAsn1AlgId;
-typedef CSSM_X509_SUBJECT_PUBLIC_KEY_INFO SecAsn1PubKeyInfo;
-
-#endif          
-
-/*
- * An array of these structures defines a BER/DER encoding for an object.
- *
- * The array usually starts with a dummy entry whose kind is SEC_ASN1_SEQUENCE;
- * such an array is terminated with an entry where kind == 0.  (An array
- * which consists of a single component does not require a second dummy
- * entry -- the array is only searched as long as previous component(s)
- * instruct it.)
- */
-typedef struct SecAsn1Template_struct {
-    /*
-     * Kind of item being decoded/encoded, including tags and modifiers.
-     */
-    uint32_t kind;
-
-    /*
-     * This value is the offset from the base of the structure (i.e., the 
-        * (void *) passed as 'src' to SecAsn1EncodeItem, or the 'dst' argument
-        * passed to SecAsn1CoderRef()) to the field that holds the value being 
-        * decoded/encoded.
-     */
-    uint32_t offset;
-
-    /*
-     * When kind suggests it (e.g., SEC_ASN1_POINTER, SEC_ASN1_GROUP, 
-        * SEC_ASN1_INLINE, or a component that is *not* a SEC_ASN1_UNIVERSAL), 
-        * this points to a sub-template for nested encoding/decoding.
-     * OR, iff SEC_ASN1_DYNAMIC is set, then this is a pointer to a pointer
-     * to a function which will return the appropriate template when called
-     * at runtime.  NOTE! that explicit level of indirection, which is
-     * necessary because ANSI does not allow you to store a function
-     * pointer directly as a "void *" so we must store it separately and
-     * dereference it to get at the function pointer itself.
-     */
-    const void *sub;
-
-    /*
-     * In the first element of a template array, the value is the size
-     * of the structure to allocate when this template is being referenced
-     * by another template via SEC_ASN1_POINTER or SEC_ASN1_GROUP.
-     * In all other cases, the value is ignored.
-     */
-    uint32_t size;
-} SecAsn1Template;
-
-
-/*
- * BER/DER values for ASN.1 identifier octets.
- */
-#define SEC_ASN1_TAG_MASK              0xff
-
-/*
- * BER/DER universal type tag numbers.
- */
-#define SEC_ASN1_TAGNUM_MASK           0x1f
-#define SEC_ASN1_BOOLEAN                       0x01
-#define SEC_ASN1_INTEGER                       0x02
-#define SEC_ASN1_BIT_STRING                    0x03
-#define SEC_ASN1_OCTET_STRING          0x04
-#define SEC_ASN1_NULL                          0x05
-#define SEC_ASN1_OBJECT_ID                     0x06
-#define SEC_ASN1_OBJECT_DESCRIPTOR  0x07
-/* External type and instance-of type   0x08 */
-#define SEC_ASN1_REAL               0x09
-#define SEC_ASN1_ENUMERATED                    0x0a
-#define SEC_ASN1_EMBEDDED_PDV       0x0b
-#define SEC_ASN1_UTF8_STRING           0x0c
-/* not used                         0x0d */
-/* not used                         0x0e */
-/* not used                         0x0f */
-#define SEC_ASN1_SEQUENCE                      0x10
-#define SEC_ASN1_SET                           0x11
-#define SEC_ASN1_NUMERIC_STRING     0x12
-#define SEC_ASN1_PRINTABLE_STRING      0x13
-#define SEC_ASN1_T61_STRING                    0x14
-#define SEC_ASN1_VIDEOTEX_STRING       0x15
-#define SEC_ASN1_IA5_STRING                    0x16
-#define SEC_ASN1_UTC_TIME                      0x17
-#define SEC_ASN1_GENERALIZED_TIME      0x18
-#define SEC_ASN1_GRAPHIC_STRING                0x19
-#define SEC_ASN1_VISIBLE_STRING                0x1a
-#define SEC_ASN1_GENERAL_STRING                0x1b
-#define SEC_ASN1_UNIVERSAL_STRING      0x1c
-/* not used                                                    0x1d */
-#define SEC_ASN1_BMP_STRING                    0x1e
-#define SEC_ASN1_HIGH_TAG_NUMBER       0x1f
-#define SEC_ASN1_TELETEX_STRING SEC_ASN1_T61_STRING
-
-/*
- * Modifiers to type tags.  These are also specified by a/the
- * standard, and must not be changed.
- */
-#define SEC_ASN1_METHOD_MASK           0x20
-#define SEC_ASN1_PRIMITIVE                     0x00
-#define SEC_ASN1_CONSTRUCTED           0x20
-
-#define SEC_ASN1_CLASS_MASK                    0xc0
-#define SEC_ASN1_UNIVERSAL                     0x00
-#define SEC_ASN1_APPLICATION           0x40
-#define SEC_ASN1_CONTEXT_SPECIFIC      0x80
-#define SEC_ASN1_PRIVATE                       0xc0
-
-/*
- * Our additions, used for templates.
- * These are not defined by any standard; the values are used internally only.
- * Just be careful to keep them out of the low 8 bits.
- */
-#define SEC_ASN1_OPTIONAL      0x00100
-#define SEC_ASN1_EXPLICIT      0x00200
-#define SEC_ASN1_ANY           0x00400
-#define SEC_ASN1_INLINE                0x00800
-#define SEC_ASN1_POINTER       0x01000
-#define SEC_ASN1_GROUP         0x02000 /* with SET or SEQUENCE means 
-                                                                        * SET OF or SEQUENCE OF */
-#define SEC_ASN1_DYNAMIC       0x04000 /* subtemplate is found by calling
-                                                                        * a function at runtime */
-#define SEC_ASN1_SKIP          0x08000 /* skip a field; only for decoding */
-#define SEC_ASN1_INNER         0x10000 /* with ANY means capture the
-                                                                        * contents only (not the id, len,
-                                                                        * or eoc); only for decoding */
-#define SEC_ASN1_SAVE          0x20000 /* stash away the encoded bytes first;
-                                                                        * only for decoding */
-#define SEC_ASN1_SKIP_REST     0x80000 /* skip all following fields;
-                                                                        * only for decoding */
-#define SEC_ASN1_CHOICE     0x100000 /* pick one from a template */
-
-/* 
- * Indicate that a type SEC_ASN1_INTEGER is actually signed.
- * The default is unsigned, which causes a leading zero to be 
- * encoded if the MS bit of the source data is 1.
- */
-#define SEC_ASN1_SIGNED_INT    0X800000
-                                          
-/* Shorthand/Aliases */
-#define SEC_ASN1_SEQUENCE_OF   (SEC_ASN1_GROUP | SEC_ASN1_SEQUENCE)
-#define SEC_ASN1_SET_OF                        (SEC_ASN1_GROUP | SEC_ASN1_SET)
-#define SEC_ASN1_ANY_CONTENTS  (SEC_ASN1_ANY | SEC_ASN1_INNER)
-
-/*
- * Function used for SEC_ASN1_DYNAMIC.
- * "arg"  is a pointer to the top-level structure being encoded or
- *        decoded.
- *
- * "enc"  when true, means that we are encoding (false means decoding)
- *
- * "buf"  For decode only; points to the start of the decoded data for 
- *        the current template. Callee can use the tag at this location 
- *        to infer the returned template. Not used on encode. 
- *
- * "Dest" points to the template-specific item being decoded to 
- *        or encoded from. (This is as opposed to arg, which 
- *        points to the start of the struct associated with the 
- *        current array of templates). 
- */
-
-typedef const SecAsn1Template * SecAsn1TemplateChooser(
-       void *arg, 
-       Boolean enc,
-       const char *buf,
-       void *dest);
-
-typedef SecAsn1TemplateChooser * SecAsn1TemplateChooserPtr;
-
-
-#endif /* _SEC_ASN1_TYPES_H_ */