tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

templates.c (4054B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 /*
      6 * Templates that are compiled and exported from both libnss3 and libnssutil3.
      7 * They have to be, because they were previously exported from libnss3, and
      8 * there is no way to create data forwarder symbols on Unix.
      9 *
     10 * Please do not add to this file. New shared templates should be exported
     11 * from libnssutil3 only.
     12 *
     13 */
     14 
     15 #include "utilrename.h"
     16 #include "secasn1.h"
     17 #include "secder.h"
     18 #include "secoid.h"
     19 #include "secdig.h"
     20 
     21 const SEC_ASN1Template SECOID_AlgorithmIDTemplate[] = {
     22    { SEC_ASN1_SEQUENCE,
     23      0, NULL, sizeof(SECAlgorithmID) },
     24    { SEC_ASN1_OBJECT_ID,
     25      offsetof(SECAlgorithmID, algorithm) },
     26    { SEC_ASN1_OPTIONAL | SEC_ASN1_ANY,
     27      offsetof(SECAlgorithmID, parameters) },
     28    { 0 }
     29 };
     30 
     31 SEC_ASN1_CHOOSER_IMPLEMENT(SECOID_AlgorithmIDTemplate)
     32 
     33 const SEC_ASN1Template SEC_AnyTemplate[] = {
     34    { SEC_ASN1_ANY | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
     35 };
     36 
     37 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_AnyTemplate)
     38 
     39 const SEC_ASN1Template SEC_BMPStringTemplate[] = {
     40    { SEC_ASN1_BMP_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
     41 };
     42 
     43 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_BMPStringTemplate)
     44 
     45 const SEC_ASN1Template SEC_BitStringTemplate[] = {
     46    { SEC_ASN1_BIT_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
     47 };
     48 
     49 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_BitStringTemplate)
     50 
     51 const SEC_ASN1Template SEC_BooleanTemplate[] = {
     52    { SEC_ASN1_BOOLEAN, 0, NULL, sizeof(SECItem) }
     53 };
     54 
     55 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_BooleanTemplate)
     56 
     57 const SEC_ASN1Template SEC_GeneralizedTimeTemplate[] = {
     58    { SEC_ASN1_GENERALIZED_TIME | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
     59 };
     60 
     61 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_GeneralizedTimeTemplate)
     62 
     63 const SEC_ASN1Template SEC_IA5StringTemplate[] = {
     64    { SEC_ASN1_IA5_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
     65 };
     66 
     67 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_IA5StringTemplate)
     68 
     69 const SEC_ASN1Template SEC_IntegerTemplate[] = {
     70    { SEC_ASN1_INTEGER, 0, NULL, sizeof(SECItem) }
     71 };
     72 
     73 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_IntegerTemplate)
     74 
     75 const SEC_ASN1Template SEC_NullTemplate[] = {
     76    { SEC_ASN1_NULL, 0, NULL, sizeof(SECItem) }
     77 };
     78 
     79 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_NullTemplate)
     80 
     81 const SEC_ASN1Template SEC_ObjectIDTemplate[] = {
     82    { SEC_ASN1_OBJECT_ID, 0, NULL, sizeof(SECItem) }
     83 };
     84 
     85 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_ObjectIDTemplate)
     86 
     87 const SEC_ASN1Template SEC_OctetStringTemplate[] = {
     88    { SEC_ASN1_OCTET_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
     89 };
     90 
     91 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_OctetStringTemplate)
     92 
     93 const SEC_ASN1Template SEC_PointerToAnyTemplate[] = {
     94    { SEC_ASN1_POINTER, 0, SEC_AnyTemplate }
     95 };
     96 
     97 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_PointerToAnyTemplate)
     98 
     99 const SEC_ASN1Template SEC_PointerToOctetStringTemplate[] = {
    100    { SEC_ASN1_POINTER | SEC_ASN1_MAY_STREAM, 0, SEC_OctetStringTemplate }
    101 };
    102 
    103 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_PointerToOctetStringTemplate)
    104 
    105 const SEC_ASN1Template SEC_SetOfAnyTemplate[] = {
    106    { SEC_ASN1_SET_OF, 0, SEC_AnyTemplate }
    107 };
    108 
    109 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_SetOfAnyTemplate)
    110 
    111 const SEC_ASN1Template SEC_UTCTimeTemplate[] = {
    112    { SEC_ASN1_UTC_TIME | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
    113 };
    114 
    115 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_UTCTimeTemplate)
    116 
    117 const SEC_ASN1Template SEC_UTF8StringTemplate[] = {
    118    { SEC_ASN1_UTF8_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) }
    119 };
    120 
    121 SEC_ASN1_CHOOSER_IMPLEMENT(SEC_UTF8StringTemplate)
    122 
    123 /* XXX See comment below about SGN_DecodeDigestInfo -- keep this static! */
    124 /* XXX Changed from static -- need to change name? */
    125 const SEC_ASN1Template sgn_DigestInfoTemplate[] = {
    126    { SEC_ASN1_SEQUENCE,
    127      0, NULL, sizeof(SGNDigestInfo) },
    128    { SEC_ASN1_INLINE,
    129      offsetof(SGNDigestInfo, digestAlgorithm),
    130      SECOID_AlgorithmIDTemplate },
    131    { SEC_ASN1_OCTET_STRING,
    132      offsetof(SGNDigestInfo, digest) },
    133    { 0 }
    134 };
    135 
    136 SEC_ASN1_CHOOSER_IMPLEMENT(sgn_DigestInfoTemplate)