]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_keychain/libDER/Tests/DER_Ticket.h
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_keychain / libDER / Tests / DER_Ticket.h
diff --git a/Security/libsecurity_keychain/libDER/Tests/DER_Ticket.h b/Security/libsecurity_keychain/libDER/Tests/DER_Ticket.h
new file mode 100644 (file)
index 0000000..080b98f
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2009,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@
+ */
+
+
+#include <libDER/libDER.h>
+
+
+#define FAST_SET_LOOKUP     1
+
+#ifdef FAST_SET_LOOKUP
+/* state representing a fast by tag set accessor, the caller needs to provide
+   a set large enough to hold all */
+typedef struct {
+       DERTag  capacity;   /* should be large enough to hold all encountered tags.
+                           otherwise DR_UnexpectedTag will be returned, note
+                           that only one tag per tag number can exist. */
+       DERByte *end;
+       DERByte *byTag[];   /* maxTag element array of pointers to tag + length
+                           of items in set indexed by tagNumber. */
+} DERSet;
+
+/* Iterates over all the tags in the set to build an index returned in
+   derSet. */
+DERReturn DERDecodeSetContentInit(
+       const DERItem   *der,                   /* data to decode */
+       DERSet          *derSet);               /* IN/OUT, to use in DERDecodeSetTag */
+
+/* Returns DR_UnexpectedTag if the requested tag is not in derSet, returns
+   the content of the decoded item in content otherwise. */
+DERReturn DERDecodeSetTag(
+       DERSet          *derSeq,                /* data to decode */
+       DERTag                  tag,                    /* tag in sequence/set we are looking for. */
+       DERItem         *content);              /* RETURNED */
+#endif /* FAST_SET_LOOKUP */
+
+
+DERReturn DERSetDecodeItemWithTag(
+       const DERItem   *der,                   /* data to decode */
+       DERTag                  tag,                    /* tag in sequence/set we are looking for. */
+       DERItem         *content);              /* RETURNED */
+
+
+/* Application Processor Ticket */
+typedef struct {
+       DERItem         signatureAlgorithm;     /* AlgorithmId */
+       DERItem         body;                   /* SET OF OCTECT STRING, DER_DEC_SAVE_DER */
+       DERItem         signature;              /* OCTET STRING */
+       DERItem         certificates;            /* SEQUENCE of CERTIFICATE */
+} DERApTicket;
+
+/* DERItemSpecs to decode into a DERApTicket */
+extern const DERItemSpec DERApTicketItemSpecs[];
+extern const DERSize DERNumApTicketItemSpecs;
+
+DERReturn DERDecodeApTicket(
+       const DERItem   *contents,
+       DERApTicket             *ticket,            /* RETURNED */
+       DERSize                 *numUsedBytes);     /* RETURNED */
+
+
+/* Baseband Ticket */
+typedef struct {
+       DERItem         signatureAlgorithm;     /* AlgorithmId */
+       DERItem         body;                   /* SET OF OCTECT STRING, DER_DEC_SAVE_DER */
+       DERItem         signature;              /* OCTET STRING */
+       DERItem         gpuk;                   /* OCTET STRING */
+} DERBbTicket;
+
+/* DERItemSpecs to decode into a DERBbTicket */
+extern const DERItemSpec DERBbTicketItemSpecs[];
+extern const DERSize DERNumBbTicketItemSpecs;
+
+DERReturn DERDecodeBbTicket(
+       const DERItem   *contents,
+       DERBbTicket             *ticket,            /* RETURNED */
+       DERSize                 *numUsedBytes);     /* RETURNED */