1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/util/templates.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,136 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +/* 1.9 + * Templates that are compiled and exported from both libnss3 and libnssutil3. 1.10 + * They have to be, because they were previously exported from libnss3, and 1.11 + * there is no way to create data forwarder symbols on Unix. 1.12 + * 1.13 + * Please do not add to this file. New shared templates should be exported 1.14 + * from libnssutil3 only. 1.15 + * 1.16 + */ 1.17 + 1.18 +#include "utilrename.h" 1.19 +#include "secasn1.h" 1.20 +#include "secder.h" 1.21 +#include "secoid.h" 1.22 +#include "secdig.h" 1.23 + 1.24 +const SEC_ASN1Template SECOID_AlgorithmIDTemplate[] = { 1.25 + { SEC_ASN1_SEQUENCE, 1.26 + 0, NULL, sizeof(SECAlgorithmID) }, 1.27 + { SEC_ASN1_OBJECT_ID, 1.28 + offsetof(SECAlgorithmID,algorithm), }, 1.29 + { SEC_ASN1_OPTIONAL | SEC_ASN1_ANY, 1.30 + offsetof(SECAlgorithmID,parameters), }, 1.31 + { 0, } 1.32 +}; 1.33 + 1.34 +SEC_ASN1_CHOOSER_IMPLEMENT(SECOID_AlgorithmIDTemplate) 1.35 + 1.36 +const SEC_ASN1Template SEC_AnyTemplate[] = { 1.37 + { SEC_ASN1_ANY | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) } 1.38 +}; 1.39 + 1.40 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_AnyTemplate) 1.41 + 1.42 +const SEC_ASN1Template SEC_BMPStringTemplate[] = { 1.43 + { SEC_ASN1_BMP_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) } 1.44 +}; 1.45 + 1.46 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_BMPStringTemplate) 1.47 + 1.48 +const SEC_ASN1Template SEC_BitStringTemplate[] = { 1.49 + { SEC_ASN1_BIT_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) } 1.50 +}; 1.51 + 1.52 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_BitStringTemplate) 1.53 + 1.54 +const SEC_ASN1Template SEC_BooleanTemplate[] = { 1.55 + { SEC_ASN1_BOOLEAN, 0, NULL, sizeof(SECItem) } 1.56 +}; 1.57 + 1.58 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_BooleanTemplate) 1.59 + 1.60 +const SEC_ASN1Template SEC_GeneralizedTimeTemplate[] = { 1.61 + { SEC_ASN1_GENERALIZED_TIME | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem)} 1.62 +}; 1.63 + 1.64 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_GeneralizedTimeTemplate) 1.65 + 1.66 +const SEC_ASN1Template SEC_IA5StringTemplate[] = { 1.67 + { SEC_ASN1_IA5_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) } 1.68 +}; 1.69 + 1.70 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_IA5StringTemplate) 1.71 + 1.72 +const SEC_ASN1Template SEC_IntegerTemplate[] = { 1.73 + { SEC_ASN1_INTEGER, 0, NULL, sizeof(SECItem) } 1.74 +}; 1.75 + 1.76 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_IntegerTemplate) 1.77 + 1.78 +const SEC_ASN1Template SEC_NullTemplate[] = { 1.79 + { SEC_ASN1_NULL, 0, NULL, sizeof(SECItem) } 1.80 +}; 1.81 + 1.82 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_NullTemplate) 1.83 + 1.84 +const SEC_ASN1Template SEC_ObjectIDTemplate[] = { 1.85 + { SEC_ASN1_OBJECT_ID, 0, NULL, sizeof(SECItem) } 1.86 +}; 1.87 + 1.88 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_ObjectIDTemplate) 1.89 + 1.90 +const SEC_ASN1Template SEC_OctetStringTemplate[] = { 1.91 + { SEC_ASN1_OCTET_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) } 1.92 +}; 1.93 + 1.94 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_OctetStringTemplate) 1.95 + 1.96 +const SEC_ASN1Template SEC_PointerToAnyTemplate[] = { 1.97 + { SEC_ASN1_POINTER, 0, SEC_AnyTemplate } 1.98 +}; 1.99 + 1.100 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_PointerToAnyTemplate) 1.101 + 1.102 +const SEC_ASN1Template SEC_PointerToOctetStringTemplate[] = { 1.103 + { SEC_ASN1_POINTER | SEC_ASN1_MAY_STREAM, 0, SEC_OctetStringTemplate } 1.104 +}; 1.105 + 1.106 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_PointerToOctetStringTemplate) 1.107 + 1.108 +const SEC_ASN1Template SEC_SetOfAnyTemplate[] = { 1.109 + { SEC_ASN1_SET_OF, 0, SEC_AnyTemplate } 1.110 +}; 1.111 + 1.112 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_SetOfAnyTemplate) 1.113 + 1.114 +const SEC_ASN1Template SEC_UTCTimeTemplate[] = { 1.115 + { SEC_ASN1_UTC_TIME | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem) } 1.116 +}; 1.117 + 1.118 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_UTCTimeTemplate) 1.119 + 1.120 +const SEC_ASN1Template SEC_UTF8StringTemplate[] = { 1.121 + { SEC_ASN1_UTF8_STRING | SEC_ASN1_MAY_STREAM, 0, NULL, sizeof(SECItem)} 1.122 +}; 1.123 + 1.124 +SEC_ASN1_CHOOSER_IMPLEMENT(SEC_UTF8StringTemplate) 1.125 + 1.126 +/* XXX See comment below about SGN_DecodeDigestInfo -- keep this static! */ 1.127 +/* XXX Changed from static -- need to change name? */ 1.128 +const SEC_ASN1Template sgn_DigestInfoTemplate[] = { 1.129 + { SEC_ASN1_SEQUENCE, 1.130 + 0, NULL, sizeof(SGNDigestInfo) }, 1.131 + { SEC_ASN1_INLINE, 1.132 + offsetof(SGNDigestInfo,digestAlgorithm), 1.133 + SECOID_AlgorithmIDTemplate }, 1.134 + { SEC_ASN1_OCTET_STRING, 1.135 + offsetof(SGNDigestInfo,digest) }, 1.136 + { 0 } 1.137 +}; 1.138 + 1.139 +SEC_ASN1_CHOOSER_IMPLEMENT(sgn_DigestInfoTemplate)