pkixtm.h
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:35k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /* 
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is the Netscape security libraries.
  13.  * 
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are 
  16.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  17.  * Rights Reserved.
  18.  * 
  19.  * Contributor(s):
  20.  * 
  21.  * Alternatively, the contents of this file may be used under the
  22.  * terms of the GNU General Public License Version 2 or later (the
  23.  * "GPL"), in which case the provisions of the GPL are applicable 
  24.  * instead of those above.  If you wish to allow use of your 
  25.  * version of this file only under the terms of the GPL and not to
  26.  * allow others to use your version of this file under the MPL,
  27.  * indicate your decision by deleting the provisions above and
  28.  * replace them with the notice and other provisions required by
  29.  * the GPL.  If you do not delete the provisions above, a recipient
  30.  * may use your version of this file under either the MPL or the
  31.  * GPL.
  32.  */
  33. #ifndef PKIXTM_H
  34. #define PKIXTM_H
  35. #ifdef DEBUG
  36. static const char PKIXTM_CVS_ID[] = "@(#) $Source: /cvsroot/mozilla/security/nss/lib/pkix/include/pkixtm.h,v $ $Revision: 1.1 $ $Date: 2000/03/31 19:04:49 $ $Name: NSS_3_1_1_RTM $";
  37. #endif /* DEBUG */
  38. /*
  39.  * pkixtm.h
  40.  *
  41.  * This file contains the module-private type definitions for the 
  42.  * PKIX part-1 objects.  Mostly, this file contains the actual 
  43.  * structure definitions for the NSSPKIX types declared in nsspkixt.h.
  44.  */
  45. #ifndef NSSPKIXT_H
  46. #include "nsspkixt.h"
  47. #endif /* NSSPKIXT_H */
  48. PR_BEGIN_EXTERN_C
  49. /*
  50.  * Attribute
  51.  *
  52.  * -- fgmr comments --
  53.  *
  54.  * From RFC 2459:
  55.  *
  56.  *  Attribute       ::=     SEQUENCE {
  57.  *          type            AttributeType,
  58.  *          values  SET OF AttributeValue
  59.  *                  -- at least one value is required -- }
  60.  *
  61.  */
  62. struct NSSPKIXAttributeStr {
  63.   NSSArena *arena;
  64.   PRBool i_allocated_arena;
  65.   NSSBER *ber;
  66.   NSSDER *der;
  67.   nssASN1Item asn1type;
  68.   nssASN1Item **asn1values;
  69.   NSSPKIXAttributeType *type;
  70.   PRUint32 valuesCount;
  71. };
  72. /*
  73.  * AttributeTypeAndValue
  74.  *
  75.  * This structure contains an attribute type (indicated by an OID), 
  76.  * and the type-specific value.  RelativeDistinguishedNamess consist
  77.  * of a set of these.  These are distinct from Attributes (which have
  78.  * SET of values), from AttributeDescriptions (which have qualifiers
  79.  * on the types), and from AttributeValueAssertions (which assert a
  80.  * a value comparison under some matching rule).
  81.  *
  82.  * From RFC 2459:
  83.  *
  84.  *  AttributeTypeAndValue           ::=     SEQUENCE {
  85.  *          type    AttributeType,
  86.  *          value   AttributeValue }
  87.  * 
  88.  */
  89. struct NSSPKIXAttributeTypeAndValueStr {
  90.   NSSArena *arena;
  91.   PRBool i_allocated_arena;
  92.   NSSDER *der;
  93.   nssASN1Item asn1type;
  94.   nssASN1Item asn1value;
  95.   NSSPKIXAttributeType *type;
  96.   NSSUTF8 *utf8;
  97. };
  98. /*
  99.  * X520Name
  100.  *
  101.  * From RFC 2459:
  102.  *
  103.  *  X520name        ::= CHOICE {
  104.  *        teletexString         TeletexString (SIZE (1..ub-name)),
  105.  *        printableString       PrintableString (SIZE (1..ub-name)),
  106.  *        universalString       UniversalString (SIZE (1..ub-name)),
  107.  *        utf8String            UTF8String (SIZE (1..ub-name)),
  108.  *        bmpString             BMPString (SIZE(1..ub-name))   }
  109.  *
  110.  *
  111.  *  ub-name INTEGER ::=     32768
  112.  *
  113.  */
  114. struct NSSPKIXX520NameStr {
  115.   nssASN1Item string;
  116.   NSSUTF8 *utf8;
  117.   NSSDER *der;
  118.   PRBool wasPrintable;
  119.   PRBool inArena;
  120. };
  121. /*
  122.  * From RFC 2459:
  123.  *
  124.  *  X520CommonName  ::=      CHOICE {
  125.  *        teletexString         TeletexString (SIZE (1..ub-common-name)),
  126.  *        printableString       PrintableString (SIZE (1..ub-common-name)),
  127.  *        universalString       UniversalString (SIZE (1..ub-common-name)),
  128.  *        utf8String            UTF8String (SIZE (1..ub-common-name)),
  129.  *        bmpString             BMPString (SIZE(1..ub-common-name))   }
  130.  * 
  131.  *  ub-common-name  INTEGER ::=     64
  132.  *
  133.  */
  134. struct NSSPKIXX520CommonNameStr {
  135. };
  136. /*
  137.  * Name
  138.  *
  139.  * This structure contains a union of the possible name formats,
  140.  * which at the moment is limited to an RDNSequence.
  141.  *
  142.  * From RFC 2459:
  143.  *
  144.  *  Name            ::=   CHOICE { -- only one possibility for now --
  145.  *                                   rdnSequence  RDNSequence }
  146.  *
  147.  */
  148. struct NSSPKIXNameStr {
  149.   NSSArena *arena;
  150.   PRBool i_allocated_arena;
  151.   NSSDER *ber;
  152.   NSSDER *der;
  153.   NSSUTF8 *utf;
  154.   NSSPKIXNameChoice choice;
  155.   union {
  156.     NSSPKIXRDNSequence *rdnSequence;
  157.   } u;
  158. };
  159. /*
  160.  * RDNSequence
  161.  *
  162.  * This structure contains a sequence of RelativeDistinguishedName
  163.  * objects.
  164.  *
  165.  * From RFC 2459:
  166.  *
  167.  *  RDNSequence     ::=   SEQUENCE OF RelativeDistinguishedName
  168.  *
  169.  */
  170. struct NSSPKIXRDNSequenceStr {
  171.   NSSArena *arena;
  172.   PRBool i_allocated_arena;
  173.   NSSBER *ber;
  174.   NSSDER *der;
  175.   NSSUTF8 *utf8;
  176.   PRUint32 count;
  177.   NSSPKIXRelativeDistinguishedName **rdns;
  178. };
  179. /*
  180.  * RelativeDistinguishedName
  181.  *
  182.  * This structure contains an unordered set of AttributeTypeAndValue 
  183.  * objects.  RDNs are used to distinguish a set of objects underneath 
  184.  * a common object.
  185.  *
  186.  * Often, a single ATAV is sufficient to make a unique distinction.
  187.  * For example, if a company assigns its people unique uid values,
  188.  * then in the Name "uid=smith,ou=People,o=Acme,c=US" the "uid=smith"
  189.  * ATAV by itself forms an RDN.  However, sometimes a set of ATAVs is
  190.  * needed.  For example, if a company needed to distinguish between
  191.  * two Smiths by specifying their corporate divisions, then in the
  192.  * Name "(cn=Smith,ou=Sales),ou=People,o=Acme,c=US" the parenthesised
  193.  * set of ATAVs forms the RDN.
  194.  *
  195.  * From RFC 2459:
  196.  *
  197.  *  RelativeDistinguishedName  ::=
  198.  *                      SET SIZE (1 .. MAX) OF AttributeTypeAndValue
  199.  *
  200.  */
  201. struct NSSPKIXRelativeDistinguishedNameStr {
  202.   NSSArena *arena;
  203.   PRBool i_allocated_arena;
  204.   NSSDER *der;
  205.   NSSBER *ber;
  206.   NSSUTF8 *utf8;
  207.   PRUint32 count;
  208.   NSSPKIXAttributeTypeAndValue **atavs;
  209. };
  210. /*
  211.  * Certificate
  212.  *
  213.  * -- fgmr comments --
  214.  *
  215.  * From RFC 2459:
  216.  *
  217.  *  Certificate  ::=  SEQUENCE  {
  218.  *       tbsCertificate       TBSCertificate,
  219.  *       signatureAlgorithm   AlgorithmIdentifier,
  220.  *       signature            BIT STRING  }
  221.  *
  222.  */
  223. struct NSSPKIXCertificateStr {
  224.   NSSArena *arena;
  225.   PRBool i_allocated_arena;
  226.   NSSDER *der;
  227.   NSSPKIXTBSCertificate *tbsCertificate;
  228.   NSSPKIXAlgorithmIdentifier *signatureAlgorithm;
  229.   NSSItem *signature;
  230. };
  231. /*
  232.  * TBSCertificate
  233.  *
  234.  * -- fgmr comments --
  235.  *
  236.  * From RFC 2459:
  237.  *
  238.  *  TBSCertificate  ::=  SEQUENCE  {
  239.  *       version         [0]  Version DEFAULT v1,
  240.  *       serialNumber         CertificateSerialNumber,
  241.  *       signature            AlgorithmIdentifier,
  242.  *       issuer               Name,
  243.  *       validity             Validity,
  244.  *       subject              Name,
  245.  *       subjectPublicKeyInfo SubjectPublicKeyInfo,
  246.  *       issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
  247.  *                            -- If present, version shall be v2 or v3
  248.  *       subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
  249.  *                            -- If present, version shall be v2 or v3
  250.  *       extensions      [3]  Extensions OPTIONAL
  251.  *                            -- If present, version shall be v3 --  }
  252.  *
  253.  */
  254. struct NSSPKIXTBSCertificateStr {
  255.   NSSArena *arena;
  256.   PRBool i_allocated_arena;
  257.   NSSDER *der;
  258.   NSSPKIXVersion version;
  259.   NSSPKIXCertificateSerialNumber serialNumber;
  260.   NSSPKIXAlgorithmIdentifier *signature;
  261.   NSSPKIXName *issuer;
  262.   NSSPKIXValidity *validity;
  263.   NSSPKIXName *subject;
  264.   NSSPKIXSubjectPublicKeyInfo *subjectPublicKeyInfo;
  265.   NSSPKIXUniqueIdentifier *issuerUniqueID;
  266.   NSSPKIXUniqueIdentifier *subjectUniqueID;
  267.   NSSPKIXExtensions *extensions;
  268. };
  269. /*
  270.  * Validity
  271.  *
  272.  * -- fgmr comments --
  273.  *
  274.  * From RFC 2459:
  275.  *
  276.  *  Validity ::= SEQUENCE {
  277.  *       notBefore      Time,
  278.  *       notAfter       Time }
  279.  *
  280.  */
  281. struct NSSPKIXValidityStr {
  282.   NSSArena *arena;
  283.   PRBool i_allocated_arena;
  284.   NSSDER *der;
  285.   ...
  286. };
  287. /*
  288.  * Time
  289.  *
  290.  * -- fgmr comments --
  291.  *
  292.  * From RFC 2459:
  293.  *
  294.  *  Time ::= CHOICE {
  295.  *       utcTime        UTCTime,
  296.  *       generalTime    GeneralizedTime }
  297.  *
  298.  */
  299. struct NSSPKIXTimeStr {
  300.   NSSArena *arena;
  301.   PRBool i_allocated_arena;
  302.   NSSDER *der;
  303.   NSSBER *ber;
  304.   nssASN1Item asn1item;
  305.   PRTime prTime;
  306.   PRBool prTimeValid;
  307. };
  308. /*
  309.  * SubjectPublicKeyInfo
  310.  *
  311.  * -- fgmr comments --
  312.  *
  313.  * From RFC 2459:
  314.  *
  315.  *  SubjectPublicKeyInfo  ::=  SEQUENCE  {
  316.  *       algorithm            AlgorithmIdentifier,
  317.  *       subjectPublicKey     BIT STRING  }
  318.  *
  319.  */
  320. struct NSSPKIXSubjectPublicKeyInfoStr {
  321.   NSSArena *arena;
  322.   PRBool i_allocated_arena;
  323.   NSSDER *der;
  324.   NSSPKIXAlgorithmIdentifier *algorithm;
  325.   NSSItem *subjectPublicKey;
  326. };
  327. /*
  328.  * Extensions
  329.  *
  330.  * -- fgmr comments --
  331.  *
  332.  * From RFC 2459:
  333.  *
  334.  *  Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
  335.  *
  336.  */
  337. struct NSSPKIXExtensionsStr {
  338.   NSSArena *arena;
  339.   PRBool i_allocated_arena;
  340.   NSSDER *der;
  341.   ...
  342. };
  343. /*
  344.  * Extension
  345.  *
  346.  * -- fgmr comments --
  347.  *
  348.  * From RFC 2459:
  349.  *
  350.  *  Extension  ::=  SEQUENCE  {
  351.  *       extnID      OBJECT IDENTIFIER,
  352.  *       critical    BOOLEAN DEFAULT FALSE,
  353.  *       extnValue   OCTET STRING  }
  354.  *
  355.  */
  356. struct NSSPKIXExtensionStr {
  357.   NSSArena *arena;
  358.   PRBool i_allocated_arena;
  359.   NSSDER *der;
  360.   NSSOID *extnID;
  361.   PRBool critical;
  362.   NSSItem *extnValue;
  363. };
  364. /*
  365.  * CertificateList
  366.  *
  367.  * -- fgmr comments --
  368.  *
  369.  * From RFC 2459:
  370.  *
  371.  *  CertificateList  ::=  SEQUENCE  {
  372.  *       tbsCertList          TBSCertList,
  373.  *       signatureAlgorithm   AlgorithmIdentifier,
  374.  *       signature            BIT STRING  }
  375.  *
  376.  */
  377. struct NSSPKIXCertificateListStr {
  378.   NSSArena *arena;
  379.   PRBool i_allocated_arena;
  380.   NSSDER *der;
  381.   NSSPKIXTBSCertList *tbsCertList;
  382.   NSSPKIXAlgorithmIdentifier *signatureAlgorithm;
  383.   NSSItem *signature;
  384. };
  385. /*
  386.  * TBSCertList
  387.  *
  388.  * -- fgmr comments --
  389.  *
  390.  * From RFC 2459:
  391.  *
  392.  *  TBSCertList  ::=  SEQUENCE  {
  393.  *       version                 Version OPTIONAL,
  394.  *                                    -- if present, shall be v2
  395.  *       signature               AlgorithmIdentifier,
  396.  *       issuer                  Name,
  397.  *       thisUpdate              Time,
  398.  *       nextUpdate              Time OPTIONAL,
  399.  *       revokedCertificates     SEQUENCE OF SEQUENCE  {
  400.  *            userCertificate         CertificateSerialNumber,
  401.  *            revocationDate          Time,
  402.  *            crlEntryExtensions      Extensions OPTIONAL
  403.  *                                           -- if present, shall be v2
  404.  *                                 }  OPTIONAL,
  405.  *       crlExtensions           [0] Extensions OPTIONAL
  406.  *                                           -- if present, shall be v2 -- }
  407.  *
  408.  */
  409. struct NSSPKIXTBSCertListStr {
  410.   NSSArena *arena;
  411.   PRBool i_allocated_arena;
  412.   NSSDER *der;
  413.   NSSPKIXVersion version;
  414.   NSSPKIXAlgorithmIdentifier *signature;
  415.   NSSPKIXName *issuer;
  416.   -time- thisUpdate;
  417.   -time- nextUpdate;
  418.   NSSPKIXrevokedCertificates *revokedCertificates;
  419.   NSSPKIXExtensions *crlExtensions;  
  420. };
  421. /*
  422.  * revokedCertificates
  423.  *
  424.  * This is a "helper type" to simplify handling of TBSCertList objects.
  425.  *
  426.  *       revokedCertificates     SEQUENCE OF SEQUENCE  {
  427.  *            userCertificate         CertificateSerialNumber,
  428.  *            revocationDate          Time,
  429.  *            crlEntryExtensions      Extensions OPTIONAL
  430.  *                                           -- if present, shall be v2
  431.  *                                 }  OPTIONAL,
  432.  *
  433.  */
  434. struct NSSPKIXrevokedCertificatesStr {
  435.   NSSArena *arena;
  436.   PRBool i_allocated_arena;
  437.   NSSDER *der;
  438.   ...
  439. };
  440. /*
  441.  * revokedCertificate
  442.  *
  443.  * This is a "helper type" to simplify handling of TBSCertList objects.
  444.  *
  445.  *                                           SEQUENCE  {
  446.  *            userCertificate         CertificateSerialNumber,
  447.  *            revocationDate          Time,
  448.  *            crlEntryExtensions      Extensions OPTIONAL
  449.  *                                           -- if present, shall be v2
  450.  *                                 }  OPTIONAL,
  451.  *
  452.  */
  453. struct NSSPKIXrevokedCertificateStr {
  454.   NSSArena *arena;
  455.   PRBool i_allocated_arena;
  456.   NSSDER *der;
  457.   NSSPKIXCertificateSerialNumber *userCertificate;
  458.   -time- revocationDate;
  459.   NSSPKIXExtensions *crlEntryExtensions;
  460. };
  461. /*
  462.  * AlgorithmIdentifier
  463.  *
  464.  * -- fgmr comments --
  465.  *
  466.  * From RFC 2459:
  467.  *
  468.  * (1988 syntax)
  469.  *
  470.  *  AlgorithmIdentifier  ::=  SEQUENCE  {
  471.  *       algorithm               OBJECT IDENTIFIER,
  472.  *       parameters              ANY DEFINED BY algorithm OPTIONAL  }
  473.  *                                  -- contains a value of the type
  474.  *                                  -- registered for use with the
  475.  *                                  -- algorithm object identifier value
  476.  *
  477.  *
  478.  */
  479. struct NSSPKIXAlgorithmIdentifierStr {
  480.   NSSArena *arena;
  481.   PRBool i_allocated_arena;
  482.   NSSDER *der;
  483.   NSSBER *ber;
  484.   NSSOID *algorithm;
  485.   NSSItem *parameters;
  486. };
  487. /*
  488.  * -- types related to NSSPKIXAlgorithmIdentifiers:
  489.  *
  490.  *  Dss-Sig-Value  ::=  SEQUENCE  {
  491.  *       r       INTEGER,
  492.  *       s       INTEGER  }
  493.  *  
  494.  *  DomainParameters ::= SEQUENCE {
  495.  *       p       INTEGER, -- odd prime, p=jq +1
  496.  *       g       INTEGER, -- generator, g
  497.  *       q       INTEGER, -- factor of p-1
  498.  *       j       INTEGER OPTIONAL, -- subgroup factor, j>= 2
  499.  *       validationParms  ValidationParms OPTIONAL }
  500.  *  
  501.  *  ValidationParms ::= SEQUENCE {
  502.  *       seed             BIT STRING,
  503.  *       pgenCounter      INTEGER }
  504.  *  
  505.  *  Dss-Parms  ::=  SEQUENCE  {
  506.  *       p             INTEGER,
  507.  *       q             INTEGER,
  508.  *       g             INTEGER  }
  509.  *
  510.  */
  511. /*
  512.  * ORAddress
  513.  *
  514.  * -- fgmr comments --
  515.  *
  516.  * From RFC 2459:
  517.  *
  518.  *  ORAddress ::= SEQUENCE {
  519.  *     built-in-standard-attributes BuiltInStandardAttributes,
  520.  *     built-in-domain-defined-attributes
  521.  *                          BuiltInDomainDefinedAttributes OPTIONAL,
  522.  *     -- see also teletex-domain-defined-attributes
  523.  *     extension-attributes ExtensionAttributes OPTIONAL }
  524.  *  --      The OR-address is semantically absent from the OR-name if the
  525.  *  --      built-in-standard-attribute sequence is empty and the
  526.  *  --      built-in-domain-defined-attributes and extension-attributes are
  527.  *  --      both omitted.
  528.  *
  529.  */
  530. struct NSSPKIXORAddressStr {
  531.   NSSArena *arena;
  532.   PRBool i_allocated_arena;
  533.   NSSDER *der;
  534.   NSSPKIXBuiltInStandardAttributes *builtInStandardAttributes;
  535.   NSSPKIXBuiltInDomainDefinedAttributes *builtInDomainDefinedAttributes;
  536.   NSSPKIXExtensionsAttributes *extensionAttributes;
  537. };
  538. /*
  539.  * BuiltInStandardAttributes
  540.  *
  541.  * -- fgmr comments --
  542.  *
  543.  * From RFC 2459:
  544.  *
  545.  *  BuiltInStandardAttributes ::= SEQUENCE {
  546.  *     country-name CountryName OPTIONAL,
  547.  *     administration-domain-name AdministrationDomainName OPTIONAL,
  548.  *     network-address      [0] NetworkAddress OPTIONAL,
  549.  *     -- see also extended-network-address
  550.  *     terminal-identifier  [1] TerminalIdentifier OPTIONAL,
  551.  *     private-domain-name  [2] PrivateDomainName OPTIONAL,
  552.  *     organization-name    [3] OrganizationName OPTIONAL,
  553.  *     -- see also teletex-organization-name
  554.  *     numeric-user-identifier      [4] NumericUserIdentifier OPTIONAL,
  555.  *     personal-name        [5] PersonalName OPTIONAL,
  556.  *     -- see also teletex-personal-name
  557.  *     organizational-unit-names    [6] OrganizationalUnitNames OPTIONAL
  558.  *     -- see also teletex-organizational-unit-names -- }
  559.  *
  560.  */
  561. struct NSSPKIXBuiltInStandardAttributesStr {
  562.   NSSArena *arena;
  563.   PRBool i_allocated_arena;
  564.   NSSDER *der;
  565.   NSSPKIXCountryName *countryName;
  566.   NSSPKIXAdministrationDomainName *administrationDomainName;
  567.   NSSPKIXNetworkAddress *networkAddress;
  568.   NSSPKIXTerminalIdentifier *terminalIdentifier;
  569.   NSSPKIXPrivateDomainName *privateDomainName;
  570.   NSSPKIXOrganizationName *organizationName;
  571.   NSSPKIXNumericUserIdentifier *numericUserIdentifier;
  572.   NSSPKIXPersonalName *personalName;
  573.   NSSPKIXOrganizationalUnitNames *organizationalUnitNames;
  574. };
  575. /*
  576.  * PersonalName
  577.  *
  578.  * -- fgmr comments --
  579.  *
  580.  * From RFC 2459:
  581.  *
  582.  *  PersonalName ::= SET {
  583.  *     surname [0] PrintableString (SIZE (1..ub-surname-length)),
  584.  *     given-name [1] PrintableString
  585.  *                          (SIZE (1..ub-given-name-length)) OPTIONAL,
  586.  *     initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL,
  587.  *     generation-qualifier [3] PrintableString
  588.  *                  (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
  589.  *
  590.  */
  591. struct NSSPKIXPersonalNameStr {
  592.   NSSArena *arena;
  593.   PRBool i_allocated_arena;
  594.   NSSDER *der;
  595.   NSSUTF8 *surname;
  596.   NSSUTF8 *givenName;
  597.   NSSUTF8 *initials;
  598.   NSSUTF8 *generationQualifier;
  599. };
  600. /*
  601.  * OrganizationalUnitNames
  602.  *
  603.  * -- fgmr comments --
  604.  *
  605.  * From RFC 2459:
  606.  *
  607.  *  OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
  608.  *                                          OF OrganizationalUnitName
  609.  * 
  610.  */
  611. struct NSSPKIXOrganizationalUnitNamesStr {
  612.   NSSArena *arena;
  613.   PRBool i_allocated_arena;
  614.   NSSDER *der;
  615.   ...
  616. };
  617. /*
  618.  * BuiltInDomainDefinedAttributes
  619.  *
  620.  * -- fgmr comments --
  621.  *
  622.  * From RFC 2459:
  623.  *
  624.  *  BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
  625.  *                                  (1..ub-domain-defined-attributes) OF
  626.  *                                  BuiltInDomainDefinedAttribute
  627.  *
  628.  */
  629. struct NSSPKIXBuiltInDomainDefinedAttributesStr {
  630.   NSSArena *arena;
  631.   PRBool i_allocated_arena;
  632.   NSSDER *der;
  633.   ...
  634. };
  635. /*
  636.  * BuiltInDomainDefinedAttribute
  637.  *
  638.  * -- fgmr comments --
  639.  *
  640.  * From RFC 2459:
  641.  *
  642.  *  BuiltInDomainDefinedAttribute ::= SEQUENCE {
  643.  *     type PrintableString (SIZE
  644.  *                          (1..ub-domain-defined-attribute-type-length)),
  645.  *     value PrintableString (SIZE
  646.  *                          (1..ub-domain-defined-attribute-value-length))}
  647.  *
  648.  */
  649. struct NSSPKIXBuiltInDomainDefinedAttributeStr {
  650.   NSSArena *arena;
  651.   PRBool i_allocated_arena;
  652.   NSSDER *der;
  653.   NSSUTF8 *type;
  654.   NSSUTF8 *value;
  655. };
  656. /*
  657.  * ExtensionAttributes
  658.  *
  659.  * -- fgmr comments --
  660.  *
  661.  * From RFC 2459:
  662.  *
  663.  *  ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
  664.  *                          ExtensionAttribute
  665.  *
  666.  */
  667. struct NSSPKIXExtensionAttributesStr {
  668.   NSSArena *arena;
  669.   PRBool i_allocated_arena;
  670.   NSSDER *der;
  671.   ...
  672. };
  673. /*
  674.  * ExtensionAttribute
  675.  *
  676.  * -- fgmr comments --
  677.  *
  678.  * From RFC 2459:
  679.  *
  680.  *  ExtensionAttribute ::=  SEQUENCE {
  681.  *     extension-attribute-type [0] INTEGER (0..ub-extension-attributes),
  682.  *     extension-attribute-value [1]
  683.  *                          ANY DEFINED BY extension-attribute-type }
  684.  *
  685.  */
  686. struct NSSPKIXExtensionAttributeStr {
  687.   NSSArena *arena;
  688.   PRBool i_allocated_arena;
  689.   NSSDER *der;
  690.   NSSPKIXExtensionsAttributeType extensionAttributeType;
  691.   NSSItem *extensionAttributeValue;
  692. };
  693. /*
  694.  * TeletexPersonalName
  695.  *
  696.  * -- fgmr comments --
  697.  *
  698.  * From RFC 2459:
  699.  *
  700.  *  TeletexPersonalName ::= SET {
  701.  *     surname [0] TeletexString (SIZE (1..ub-surname-length)),
  702.  *     given-name [1] TeletexString
  703.  *                  (SIZE (1..ub-given-name-length)) OPTIONAL,
  704.  *     initials [2] TeletexString (SIZE (1..ub-initials-length)) OPTIONAL,
  705.  *     generation-qualifier [3] TeletexString (SIZE
  706.  *                  (1..ub-generation-qualifier-length)) OPTIONAL }
  707.  *
  708.  */
  709. struct NSSPKIXTeletexPersonalNameStr {
  710.   NSSArena *arena;
  711.   PRBool i_allocated_arena;
  712.   NSSDER *der;
  713.   NSSUTF8 *surname;
  714.   NSSUTF8 *givenName;
  715.   NSSUTF8 *initials;
  716.   NSSUTF8 *generationQualifier;
  717. };
  718. /*
  719.  * TeletexOrganizationalUnitNames
  720.  *
  721.  * -- fgmr comments --
  722.  *
  723.  * From RFC 2459:
  724.  *
  725.  *  TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
  726.  *          (1..ub-organizational-units) OF TeletexOrganizationalUnitName
  727.  *
  728.  */
  729. struct NSSPKIXTeletexOrganizationalUnitNamesStr {
  730.   NSSArena *arena;
  731.   PRBool i_allocated_arena;
  732.   NSSDER *der;
  733.   ...
  734. };
  735. /*
  736.  * PDSParameter
  737.  *
  738.  * -- fgmr comments --
  739.  *
  740.  * From RFC 2459:
  741.  *
  742.  *  PDSParameter ::= SET {
  743.  *     printable-string PrintableString
  744.  *                  (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
  745.  *     teletex-string TeletexString
  746.  *                  (SIZE(1..ub-pds-parameter-length)) OPTIONAL }
  747.  *
  748.  */
  749. struct NSSPKIXPDSParameterStr {
  750.   NSSArena *arena;
  751.   PRBool i_allocated_arena;
  752.   NSSDER *der;
  753.   NSSUTF8 *printableString;
  754.   NSSTUF8 *teletexString;
  755. };
  756. /*
  757.  * UnformattedPostalAddress
  758.  *
  759.  * -- fgmr comments --
  760.  *
  761.  * From RFC 2459:
  762.  *
  763.  *  UnformattedPostalAddress ::= SET {
  764.  *     printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF
  765.  *             PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL,
  766.  *     teletex-string TeletexString
  767.  *           (SIZE (1..ub-unformatted-address-length)) OPTIONAL }
  768.  *
  769.  */
  770. struct NSSPKIXUnformattedPostalAddressStr {
  771.   NSSArena *arena;
  772.   PRBool i_allocated_arena;
  773.   NSSDER *der;
  774.   ...
  775.   NSSUTF8 *teletexString;
  776. };
  777. /*
  778.  * ExtendedNetworkAddress
  779.  *
  780.  * -- fgmr comments --
  781.  *
  782.  * From RFC 2459:
  783.  *
  784.  *  ExtendedNetworkAddress ::= CHOICE {
  785.  *     e163-4-address SEQUENCE {
  786.  *          number [0] NumericString (SIZE (1..ub-e163-4-number-length)),
  787.  *          sub-address [1] NumericString
  788.  *                  (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL },
  789.  *     psap-address [0] PresentationAddress }
  790.  *
  791.  */
  792. struct NSSPKIXExtendedNetworkAddressStr {
  793.   NSSArena *arena;
  794.   PRBool i_allocated_arena;
  795.   NSSDER *der;
  796.   NSSPKIXExtendedNetworkAddressChoice choice;
  797.   union {
  798.     NSSe1634address *e1634Address;
  799.     NSSPKIXPresentationAddress *psapAddress;
  800.   } u;
  801. };
  802. /*
  803.  * e163-4-address
  804.  *
  805.  * Helper structure for ExtendedNetworkAddress.
  806.  * -- fgmr comments --
  807.  *
  808.  * From RFC 2459:
  809.  * 
  810.  *     e163-4-address SEQUENCE {
  811.  *          number [0] NumericString (SIZE (1..ub-e163-4-number-length)),
  812.  *          sub-address [1] NumericString
  813.  *                  (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL },
  814.  * 
  815.  */
  816. struct NSSe1634addressStr {
  817.   NSSArena *arena;
  818.   PRBool i_allocated_arena;
  819.   NSSDER *der;
  820.   NSSUTF8 *number;
  821.   NSSUTF8 *subAddress;
  822. };
  823. /*
  824.  * PresentationAddress
  825.  *
  826.  * -- fgmr comments --
  827.  *
  828.  * From RFC 2459:
  829.  *
  830.  *  PresentationAddress ::= SEQUENCE {
  831.  *          pSelector       [0] EXPLICIT OCTET STRING OPTIONAL,
  832.  *          sSelector       [1] EXPLICIT OCTET STRING OPTIONAL,
  833.  *          tSelector       [2] EXPLICIT OCTET STRING OPTIONAL,
  834.  *          nAddresses      [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING }
  835.  *
  836.  */
  837. struct NSSPKIXPresentationAddressStr {
  838.   NSSArena *arena;
  839.   PRBool i_allocated_arena;
  840.   NSSDER *der;
  841.   NSSItem *pSelector;
  842.   NSSItem *sSelector;
  843.   NSSItem *tSelector;
  844.   NSSItem *nAddresses[]; --fgmr--
  845. };
  846. /*
  847.  * TeletexDomainDefinedAttributes
  848.  *
  849.  * -- fgmr comments --
  850.  *
  851.  * From RFC 2459:
  852.  *
  853.  *  TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
  854.  *     (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
  855.  * 
  856.  */
  857. struct NSSPKIXTeletexDomainDefinedAttributesStr {
  858.   NSSArena *arena;
  859.   PRBool i_allocated_arena;
  860.   NSSDER *der;
  861.   ...
  862. };
  863. /*
  864.  * TeletexDomainDefinedAttribute
  865.  *
  866.  * -- fgmr comments --
  867.  *
  868.  * From RFC 2459:
  869.  *
  870.  *  TeletexDomainDefinedAttribute ::= SEQUENCE {
  871.  *          type TeletexString
  872.  *                 (SIZE (1..ub-domain-defined-attribute-type-length)),
  873.  *          value TeletexString
  874.  *                 (SIZE (1..ub-domain-defined-attribute-value-length)) }
  875.  * 
  876.  */
  877. struct NSSPKIXTeletexDomainDefinedAttributeStr {
  878.   NSSArena *arena;
  879.   PRBool i_allocated_arena;
  880.   NSSDER *der;
  881.   NSSUTF8 *type;
  882.   NSSUTF8 *value;
  883. };
  884. /*
  885.  * AuthorityKeyIdentifier
  886.  *
  887.  * -- fgmr comments --
  888.  *
  889.  * From RFC 2459:
  890.  *
  891.  *  AuthorityKeyIdentifier ::= SEQUENCE {
  892.  *        keyIdentifier             [0] KeyIdentifier            OPTIONAL,
  893.  *        authorityCertIssuer       [1] GeneralNames             OPTIONAL,
  894.  *        authorityCertSerialNumber [2] CertificateSerialNumber  OPTIONAL }
  895.  *      -- authorityCertIssuer and authorityCertSerialNumber shall both
  896.  *      -- be present or both be absent
  897.  *
  898.  */
  899. struct NSSPKIXAuthorityKeyIdentifierStr {
  900.   NSSArena *arena;
  901.   PRBool i_allocated_arena;
  902.   NSSDER *der;
  903.   NSSPKIXKeyIdentifier *keyIdentifier;
  904.   NSSPKIXGeneralNames *authorityCertIssuer;
  905.   NSSPKIXCertificateSerialNumber *authorityCertSerialNumber;
  906. };
  907. /*
  908.  * KeyUsage
  909.  *
  910.  * -- fgmr comments --
  911.  *
  912.  * From RFC 2459:
  913.  *
  914.  *  KeyUsage ::= BIT STRING {
  915.  *       digitalSignature        (0),
  916.  *       nonRepudiation          (1),
  917.  *       keyEncipherment         (2),
  918.  *       dataEncipherment        (3),
  919.  *       keyAgreement            (4),
  920.  *       keyCertSign             (5),
  921.  *       cRLSign                 (6),
  922.  *       encipherOnly            (7),
  923.  *       decipherOnly            (8) }
  924.  *
  925.  */
  926. struct NSSPKIXKeyUsageStr {
  927.   NSSArena *arena;
  928.   PRBool i_allocated_arena;
  929.   NSSDER *der;
  930.   NSSPKIXKeyUsageValue keyUsage;
  931. };
  932. /*
  933.  * PrivateKeyUsagePeriod
  934.  *
  935.  * -- fgmr comments --
  936.  *
  937.  * From RFC 2459:
  938.  *
  939.  *  PrivateKeyUsagePeriod ::= SEQUENCE {
  940.  *       notBefore       [0]     GeneralizedTime OPTIONAL,
  941.  *       notAfter        [1]     GeneralizedTime OPTIONAL }
  942.  *       -- either notBefore or notAfter shall be present
  943.  *
  944.  */
  945. struct NSSPKIXPrivateKeyUsagePeriodStr {
  946.   NSSArena *arena;
  947.   PRBool i_allocated_arena;
  948.   NSSDER *der;
  949.   --time--
  950.   --time--
  951. };
  952. /*
  953.  * CertificatePolicies
  954.  *
  955.  * -- fgmr comments --
  956.  *
  957.  * From RFC 2459:
  958.  *
  959.  *  CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
  960.  *
  961.  */
  962. struct NSSPKIXCertificatePoliciesStr {
  963.   NSSArena *arena;
  964.   PRBool i_allocated_arena;
  965.   NSSDER *der;
  966.   ...
  967. };
  968. /*
  969.  * PolicyInformation
  970.  *
  971.  * -- fgmr comments --
  972.  *
  973.  * From RFC 2459:
  974.  *
  975.  *  PolicyInformation ::= SEQUENCE {
  976.  *       policyIdentifier   CertPolicyId,
  977.  *       policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  978.  *               PolicyQualifierInfo OPTIONAL }
  979.  *
  980.  */
  981. struct NSSPKIXPolicyInformationStr {
  982.   NSSArena *arena;
  983.   PRBool i_allocated_arena;
  984.   NSSDER *der;
  985.   NSSPKIXCertPolicyId *policyIdentifier;
  986.   NSSPKIXPolicyQualifierInfo *policyQualifiers[];
  987.   --fgmr--
  988. };
  989. /*
  990.  * PolicyQualifierInfo
  991.  *
  992.  * -- fgmr comments --
  993.  *
  994.  * From RFC 2459:
  995.  *
  996.  *  PolicyQualifierInfo ::= SEQUENCE {
  997.  *         policyQualifierId  PolicyQualifierId,
  998.  *         qualifier        ANY DEFINED BY policyQualifierId }
  999.  *
  1000.  */
  1001. struct NSSPKIXPolicyQualifierInfoStr {
  1002.   NSSArena *arena;
  1003.   PRBool i_allocated_arena;
  1004.   NSSDER *der;
  1005.   NSSPKIXPolicyQualifierId *policyQualifierId;
  1006.   NSSItem *qualifier;
  1007. };
  1008. /*
  1009.  * UserNotice
  1010.  *
  1011.  * -- fgmr comments --
  1012.  *
  1013.  * From RFC 2459:
  1014.  *
  1015.  *  UserNotice ::= SEQUENCE {
  1016.  *       noticeRef        NoticeReference OPTIONAL,
  1017.  *       explicitText     DisplayText OPTIONAL}
  1018.  *
  1019.  */
  1020. struct NSSPKIXUserNoticeStr {
  1021.   NSSArena *arena;
  1022.   PRBool i_allocated_arena;
  1023.   NSSDER *der;
  1024.   NSSPKIXNoticeReference *noticeRef;
  1025.   NSSPKIXDisplayText *explicitText;
  1026. };
  1027. /*
  1028.  * NoticeReference
  1029.  *
  1030.  * -- fgmr comments --
  1031.  *
  1032.  * From RFC 2459:
  1033.  *
  1034.  *  NoticeReference ::= SEQUENCE {
  1035.  *       organization     DisplayText,
  1036.  *       noticeNumbers    SEQUENCE OF INTEGER }
  1037.  *
  1038.  */
  1039. struct NSSPKIXNoticeReferenceStr {
  1040.   NSSArena *arena;
  1041.   PRBool i_allocated_arena;
  1042.   NSSDER *der;
  1043.   NSSPKIXDisplayText *organization;
  1044.   NSSItem *noticeNumbers[]; --fgmr--
  1045.   ...
  1046. };
  1047. /*
  1048.  * PolicyMappings
  1049.  *
  1050.  * -- fgmr comments --
  1051.  *
  1052.  * From RFC 2459:
  1053.  *
  1054.  *  PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  1055.  *       issuerDomainPolicy      CertPolicyId,
  1056.  *       subjectDomainPolicy     CertPolicyId }
  1057.  *
  1058.  */
  1059. struct NSSPKIXPolicyMappingsStr {
  1060.   NSSArena *arena;
  1061.   PRBool i_allocated_arena;
  1062.   NSSDER *der;
  1063.   NSSPKIXpolicyMapping *policyMappings[]; --fgmr--
  1064.   ...
  1065. };
  1066. /*
  1067.  * policyMapping
  1068.  *
  1069.  * Helper structure for PolicyMappings
  1070.  *
  1071.  *                                               SEQUENCE {
  1072.  *       issuerDomainPolicy      CertPolicyId,
  1073.  *       subjectDomainPolicy     CertPolicyId }
  1074.  *
  1075.  */
  1076. struct NSSPKIXpolicyMappingStr {
  1077.   NSSArena *arena;
  1078.   PRBool i_allocated_arena;
  1079.   NSSDER *der;
  1080.   NSSPKIXCertPolicyId *issuerDomainPolicy;
  1081.   NSSPKIXCertPolicyId *subjectDomainPolicy;
  1082. };
  1083. /*
  1084.  * GeneralName
  1085.  *
  1086.  * This structure contains a union of the possible general names,
  1087.  * of which there are several.
  1088.  *
  1089.  * From RFC 2459:
  1090.  *
  1091.  *  GeneralName ::= CHOICE {
  1092.  *       otherName                       [0]     AnotherName,
  1093.  *       rfc822Name                      [1]     IA5String,
  1094.  *       dNSName                         [2]     IA5String,
  1095.  *       x400Address                     [3]     ORAddress,
  1096.  *       directoryName                   [4]     Name,
  1097.  *       ediPartyName                    [5]     EDIPartyName,
  1098.  *       uniformResourceIdentifier       [6]     IA5String,
  1099.  *       iPAddress                       [7]     OCTET STRING,
  1100.  *       registeredID                    [8]     OBJECT IDENTIFIER }
  1101.  *
  1102.  */
  1103. struct NSSPKIXGeneralNameStr {
  1104.   NSSArena *arena;
  1105.   PRBool i_allocated_arena;
  1106.   NSSDER *der;
  1107.   NSSPKIXGeneralNameChoice choice;
  1108.   union {
  1109.     NSSPKIXAnotherName *otherName;
  1110.     NSSUTF8 *rfc822Name;
  1111.     NSSUTF8 *dNSName;
  1112.     NSSPKIXORAddress *x400Address;
  1113.     NSSPKIXName *directoryName;
  1114.     NSSEDIPartyName *ediPartyName;
  1115.     NSSUTF8 *uniformResourceIdentifier;
  1116.     NSSItem *iPAddress;
  1117.     NSSOID *registeredID;
  1118.   } u;
  1119. };
  1120. /*
  1121.  * GeneralNames
  1122.  *
  1123.  * This structure contains a sequence of GeneralName objects.
  1124.  *
  1125.  * From RFC 2459:
  1126.  *
  1127.  *  GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
  1128.  *
  1129.  */
  1130. struct NSSPKIXGeneralNamesStr {
  1131.   NSSArena *arena;
  1132.   PRBool i_allocated_arena;
  1133.   NSSDER *der;
  1134.   ...
  1135. };
  1136. /*
  1137.  * AnotherName
  1138.  *
  1139.  * -- fgmr comments --
  1140.  *
  1141.  * From RFC 2459:
  1142.  *
  1143.  *  AnotherName ::= SEQUENCE {
  1144.  *       type-id    OBJECT IDENTIFIER,
  1145.  *       value      [0] EXPLICIT ANY DEFINED BY type-id }
  1146.  *
  1147.  */
  1148. struct NSSPKIXAnotherNameStr {
  1149.   NSSArena *arena;
  1150.   PRBool i_allocated_arena;
  1151.   NSSDER *der;
  1152.   NSSOID *typeId;
  1153.   NSSItem *value;
  1154. };
  1155. /*
  1156.  * EDIPartyName
  1157.  *
  1158.  * -- fgmr comments --
  1159.  *
  1160.  * From RFC 2459:
  1161.  *
  1162.  *
  1163.  *  EDIPartyName ::= SEQUENCE {
  1164.  *       nameAssigner            [0]     DirectoryString OPTIONAL,
  1165.  *       partyName               [1]     DirectoryString }
  1166.  *
  1167.  */
  1168. struct NSSPKIXEDIPartyNameStr {
  1169.   NSSArena *arena;
  1170.   PRBool i_allocated_arena;
  1171.   NSSDER *der;
  1172.   NSSPKIXDirectoryString *nameAssigner;
  1173.   NSSPKIXDirectoryString *partyname;
  1174. };
  1175. /*
  1176.  * SubjectDirectoryAttributes
  1177.  *
  1178.  * -- fgmr comments --
  1179.  *
  1180.  * From RFC 2459:
  1181.  *
  1182.  *  SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
  1183.  *
  1184.  */
  1185. struct NSSPKIXSubjectDirectoryAttributesStr {
  1186.   NSSArena *arena;
  1187.   PRBool i_allocated_arena;
  1188.   NSSDER *der;
  1189.   ...
  1190. };
  1191. /*
  1192.  * BasicConstraints
  1193.  *
  1194.  * -- fgmr comments --
  1195.  *
  1196.  * From RFC 2459:
  1197.  *
  1198.  *  BasicConstraints ::= SEQUENCE {
  1199.  *       cA                      BOOLEAN DEFAULT FALSE,
  1200.  *       pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
  1201.  *
  1202.  */
  1203. struct NSSPKIXBasicConstraintsStr {
  1204.   NSSArena *arena;
  1205.   PRBool i_allocated_arena;
  1206.   NSSDER *der;
  1207.   PRBool cA;
  1208.   PRInt32 pathLenConstraint; --fgmr--
  1209. };
  1210. /*
  1211.  * NameConstraints
  1212.  *
  1213.  * -- fgmr comments --
  1214.  *
  1215.  * From RFC 2459:
  1216.  *
  1217.  *  NameConstraints ::= SEQUENCE {
  1218.  *       permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
  1219.  *       excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
  1220.  *
  1221.  */
  1222. struct NSSPKIXNameConstraintsStr {
  1223.   NSSArena *arena;
  1224.   PRBool i_allocated_arena;
  1225.   NSSDER *der;
  1226.   NSSPKIXGeneralSubtrees *permittedSubtrees;
  1227.   NSSPKIXGeneralSubtrees *excludedSubtrees;
  1228. };
  1229. /*
  1230.  * GeneralSubtrees
  1231.  *
  1232.  * -- fgmr comments --
  1233.  *
  1234.  * From RFC 2459:
  1235.  *
  1236.  *  GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
  1237.  *
  1238.  */
  1239. struct NSSPKIXGeneralSubtreesStr {
  1240.   NSSArena *arena;
  1241.   PRBool i_allocated_arena;
  1242.   NSSDER *der;
  1243.   ...
  1244. };
  1245. /*
  1246.  * GeneralSubtree
  1247.  *
  1248.  * -- fgmr comments --
  1249.  *
  1250.  * From RFC 2459:
  1251.  *
  1252.  *  GeneralSubtree ::= SEQUENCE {
  1253.  *       base                    GeneralName,
  1254.  *       minimum         [0]     BaseDistance DEFAULT 0,
  1255.  *       maximum         [1]     BaseDistance OPTIONAL }
  1256.  *
  1257.  */
  1258. struct NSSPKIXGeneralSubtreeStr {
  1259.   NSSArena *arena;
  1260.   PRBool i_allocated_arena;
  1261.   NSSDER *der;
  1262.   NSSPKIXGeneralName;
  1263.   NSSPKIXBaseDistance minimum;
  1264.   NSSPKIXBaseDistance maximum;
  1265. };
  1266. /*
  1267.  * PolicyConstraints
  1268.  *
  1269.  * -- fgmr comments --
  1270.  *
  1271.  * From RFC 2459:
  1272.  *
  1273.  *  PolicyConstraints ::= SEQUENCE {
  1274.  *       requireExplicitPolicy           [0] SkipCerts OPTIONAL,
  1275.  *       inhibitPolicyMapping            [1] SkipCerts OPTIONAL }
  1276.  * 
  1277.  */
  1278. struct NSSPKIXPolicyConstraintsStr {
  1279.   NSSArena *arena;
  1280.   PRBool i_allocated_arena;
  1281.   NSSDER *der;
  1282.   NSSPKIXSkipCerts *requireExplicitPolicy;
  1283.   NSSPKIXSkipCerts *inhibitPolicyMapping;
  1284. };
  1285. /*
  1286.  * CRLDistPointsSyntax
  1287.  *
  1288.  * -- fgmr comments --
  1289.  *
  1290.  * From RFC 2459:
  1291.  *
  1292.  *  CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
  1293.  *
  1294.  */
  1295. struct NSSPKIXCRLDistPointsSyntaxStr {
  1296.   NSSArena *arena;
  1297.   PRBool i_allocated_arena;
  1298.   NSSDER *der;
  1299.   ...
  1300. };
  1301. /*
  1302.  * DistributionPoint
  1303.  *
  1304.  * -- fgmr comments --
  1305.  *
  1306.  * From RFC 2459:
  1307.  *
  1308.  *  DistributionPoint ::= SEQUENCE {
  1309.  *       distributionPoint       [0]     DistributionPointName OPTIONAL,
  1310.  *       reasons                 [1]     ReasonFlags OPTIONAL,
  1311.  *       cRLIssuer               [2]     GeneralNames OPTIONAL }
  1312.  *
  1313.  */
  1314. struct NSSPKIXDistributionPointStr {
  1315.   NSSArena *arena;
  1316.   PRBool i_allocated_arena;
  1317.   NSSDER *der;
  1318.   NSSPKIXDistributionPointName *distributionPoint;
  1319.   NSSPKIXReasonFlags *reasons;
  1320.   NSSPKIXGeneralNames *cRLIssuer;
  1321. };
  1322. /*
  1323.  * DistributionPointName
  1324.  *
  1325.  * -- fgmr comments --
  1326.  *
  1327.  * From RFC 2459:
  1328.  *
  1329.  *  DistributionPointName ::= CHOICE {
  1330.  *       fullName                [0]     GeneralNames,
  1331.  *       nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
  1332.  *
  1333.  */
  1334. struct NSSPKIXDistributionPointNameStr {
  1335.   NSSArena *arena;
  1336.   PRBool i_allocated_arena;
  1337.   NSSDER *der;
  1338.   NSSPKIXDistributionPointNameChoice choice;
  1339.   union {
  1340.     NSSPKIXGeneralNames *fullName;
  1341.     NSSPKIXRelativeDistinguishedName *nameRelativeToCRLIssuer;
  1342.   } u;
  1343. };
  1344. /*
  1345.  * ReasonFlags
  1346.  *
  1347.  * -- fgmr comments --
  1348.  *
  1349.  * From RFC 2459:
  1350.  *
  1351.  *  ReasonFlags ::= BIT STRING {
  1352.  *       unused                  (0),
  1353.  *       keyCompromise           (1),
  1354.  *       cACompromise            (2),
  1355.  *       affiliationChanged      (3),
  1356.  *       superseded              (4),
  1357.  *       cessationOfOperation    (5),
  1358.  *       certificateHold         (6) }
  1359.  *
  1360.  */
  1361. struct NSSPKIXReasonFlagsStr {
  1362.   NSSArena *arena;
  1363.   PRBool i_allocated_arena;
  1364.   NSSDER *der;
  1365.   NSSPKIXReasonFlagsMask reasonFlags;
  1366. };
  1367. /*
  1368.  * ExtKeyUsageSyntax
  1369.  *
  1370.  * -- fgmr comments --
  1371.  *
  1372.  * From RFC 2459:
  1373.  *
  1374.  *  ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
  1375.  *
  1376.  */
  1377. struct NSSPKIXExtKeyUsageSyntaxStr {
  1378.   NSSArena *arena;
  1379.   PRBool i_allocated_arena;
  1380.   NSSDER *der;
  1381.   ...
  1382. };
  1383. /*
  1384.  * AuthorityInfoAccessSyntax
  1385.  *
  1386.  * -- fgmr comments --
  1387.  *
  1388.  * From RFC 2459:
  1389.  *
  1390.  *  AuthorityInfoAccessSyntax  ::=
  1391.  *          SEQUENCE SIZE (1..MAX) OF AccessDescription
  1392.  *
  1393.  */
  1394. struct NSSPKIXAuthorityInfoAccessSyntaxStr {
  1395.   NSSArena *arena;
  1396.   PRBool i_allocated_arena;
  1397.   NSSDER *der;
  1398.   ...
  1399. };
  1400. /*
  1401.  * AccessDescription
  1402.  *
  1403.  * -- fgmr comments --
  1404.  *
  1405.  * From RFC 2459:
  1406.  *
  1407.  *  AccessDescription  ::=  SEQUENCE {
  1408.  *          accessMethod          OBJECT IDENTIFIER,
  1409.  *          accessLocation        GeneralName  }
  1410.  *
  1411.  */
  1412. struct NSSPKIXAccessDescriptionStr {
  1413.   NSSArena *arena;
  1414.   PRBool i_allocated_arena;
  1415.   NSSDER *der;
  1416.   NSSOID *accessMethod;
  1417.   NSSPKIXGeneralName *accessLocation;
  1418. };
  1419. /*
  1420.  * IssuingDistributionPoint
  1421.  *
  1422.  * -- fgmr comments --
  1423.  *
  1424.  * From RFC 2459:
  1425.  *
  1426.  *  IssuingDistributionPoint ::= SEQUENCE {
  1427.  *       distributionPoint       [0] DistributionPointName OPTIONAL,
  1428.  *       onlyContainsUserCerts   [1] BOOLEAN DEFAULT FALSE,
  1429.  *       onlyContainsCACerts     [2] BOOLEAN DEFAULT FALSE,
  1430.  *       onlySomeReasons         [3] ReasonFlags OPTIONAL,
  1431.  *       indirectCRL             [4] BOOLEAN DEFAULT FALSE }
  1432.  *
  1433.  */
  1434. struct NSSPKIXIssuingDistributionPointStr {
  1435.   NSSArena *arena;
  1436.   PRBool i_allocated_arena;
  1437.   NSSDER *der;
  1438.   NSSPKIXDistributionPointName *distributionPoint;
  1439.   PRBool onlyContainsUserCerts;
  1440.   PRBool onlyContainsCACerts;
  1441.   NSSPKIXReasonFlags onlySomeReasons;
  1442.   PRBool indirectCRL;
  1443. };
  1444. PR_END_EXTERN_C
  1445. #endif /* PKIXTM_H */