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

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 PKIX_H
  34. #define PKIX_H
  35. #ifdef DEBUG
  36. static const char PKIX_CVS_ID[] = "@(#) $Source: /cvsroot/mozilla/security/nss/lib/pkix/include/pkix.h,v $ $Revision: 1.1 $ $Date: 2000/03/31 19:02:56 $ $Name: NSS_3_1_1_RTM $";
  37. #endif /* DEBUG */
  38. /*
  39.  * pkix.h
  40.  *
  41.  * This file contains the prototypes for the private methods defined
  42.  * for the PKIX part-1 objects.
  43.  */
  44. #ifndef NSSPKIX_H
  45. #include "nsspkix.h"
  46. #endif /* NSSPKIX_H */
  47. #ifndef PKIXT_H
  48. #include "pkixt.h"
  49. #endif /* PKIXT_H */
  50. #ifndef ASN1T_H
  51. #include "asn1t.h"
  52. #endif /* ASN1T_H */
  53. PR_BEGIN_EXTERN_C
  54. /*
  55.  * Attribute
  56.  *
  57.  * -- fgmr comments --
  58.  *
  59.  * From RFC 2459:
  60.  *
  61.  *  Attribute       ::=     SEQUENCE {
  62.  *          type            AttributeType,
  63.  *          values  SET OF AttributeValue
  64.  *                  -- at least one value is required -- }
  65.  *
  66.  * The private calls for the type:
  67.  * 
  68.  *  nssPKIXAttribute_Decode
  69.  *  nssPKIXAttribute_Create
  70.  *  nssPKIXAttribute_CreateFromArray
  71.  *  nssPKIXAttribute_Destroy
  72.  *  nssPKIXAttribute_Encode
  73.  *  nssPKIXAttribute_GetType
  74.  *  nssPKIXAttribute_SetType
  75.  *  nssPKIXAttribute_GetValueCount
  76.  *  nssPKIXAttribute_GetValues
  77.  *  nssPKIXAttribute_SetValues
  78.  *  nssPKIXAttribute_GetValue
  79.  *  nssPKIXAttribute_SetValue
  80.  *  nssPKIXAttribute_AddValue
  81.  *  nssPKIXAttribute_RemoveValue
  82.  *  nssPKIXAttribute_FindValue
  83.  *  nssPKIXAttribute_Equal
  84.  *  nssPKIXAttribute_Duplicate
  85.  *
  86.  * In debug builds, the following call is available:
  87.  *
  88.  *  nssPKIXAttribute_verifyPointer
  89.  */
  90. /*
  91.  * nssPKIXAttribute_template
  92.  *
  93.  *
  94.  */
  95. extern const nssASN1Template nssPKIXAttribute_template[];
  96. /*
  97.  * nssPKIXAttribute_Decode
  98.  *
  99.  * This routine creates an NSSPKIXAttribute by decoding a BER-
  100.  * or DER-encoded Attribute as defined in RFC 2459.  This
  101.  * routine may return NULL upon error, in which case it will
  102.  * have created an error stack.  If the optional arena argument
  103.  * is non-NULL, that arena will be used for the required memory.
  104.  *
  105.  * The error may be one of the following values:
  106.  *  NSS_ERROR_INVALID_BER
  107.  *  NSS_ERROR_NO_MEMORY
  108.  *  NSS_ERROR_INVALID_ARENA
  109.  *  NSS_ERROR_INVALID_ITEM
  110.  *
  111.  * Return value:
  112.  *  A valid pointer to an NSSPKIXAttribute upon success
  113.  *  NULL upon failure.
  114.  */
  115. NSS_EXTERN NSSPKIXAttribute *
  116. nssPKIXAttribute_Decode
  117. (
  118.   NSSArena *arenaOpt,
  119.   NSSBER *ber
  120. );
  121. /*
  122.  * nssPKIXAttribute_Create
  123.  *
  124.  * This routine creates an NSSPKIXAttribute from specified components.
  125.  * This routine may return NULL upon error, in which case it will have
  126.  * created an error stack.  If the optional arena argument is non-NULL,
  127.  * that arena will be used for the required memory.  There must be at
  128.  * least one attribute value specified.  The final argument must be
  129.  * NULL, to indicate the end of the set of attribute values.
  130.  *
  131.  * The error may be one of the following values:
  132.  *  NSS_ERROR_NO_MEMORY
  133.  *  NSS_ERROR_INVALID_ARENA
  134.  *  NSS_ERROR_INVALID_OID
  135.  *  NSS_ERROR_INVALID_ITEM
  136.  *
  137.  * Return value:
  138.  *  A valid pointer to an NSSPKIXAttribute upon success
  139.  *  NULL upon failure.
  140.  */
  141. NSS_EXTERN NSSPKIXAttribute *
  142. nssPKIXAttribute_Create
  143. (
  144.   NSSArena *arenaOpt,
  145.   NSSPKIXAttributeType *typeOid,
  146.   NSSPKIXAttributeValue *value1,
  147.   ...
  148. );
  149. /*
  150.  * nssPKIXAttribute_CreateFromArray
  151.  *
  152.  * This routine creates an NSSPKIXAttribute from specified components.
  153.  * This routine may return NULL upon error, in which case it will have
  154.  * created an error stack.  If the optional arena argument is non-NULL,
  155.  * that arena will be used for the required memory.  There must be at
  156.  * least one attribute value specified.  The final argument must be
  157.  * NULL, to indicate the end of the set of attribute values.
  158.  *
  159.  * The error may be one of the following values:
  160.  *  NSS_ERROR_NO_MEMORY
  161.  *  NSS_ERROR_INVALID_ARENA
  162.  *  NSS_ERROR_INVALID_OID
  163.  *  NSS_ERROR_INVALID_ITEM
  164.  *
  165.  * Return value:
  166.  *  A valid pointer to an NSSPKIXAttribute upon success
  167.  *  NULL upon failure.
  168.  */
  169. NSS_EXTERN NSSPKIXAttribute *
  170. nssPKIXAttribute_CreateFromArray
  171. (
  172.   NSSArena *arenaOpt,
  173.   NSSPKIXAttributeType *typeOid,
  174.   PRUint32 count,
  175.   NSSPKIXAttributeValue values[]
  176. );
  177. /*
  178.  * nssPKIXAttribute_Destroy
  179.  *
  180.  * This routine destroys an NSSPKIXAttribute.  It should be called on
  181.  * all such objects created without an arena.  It does not need to be
  182.  * called for objects created with an arena, but it may be.  This
  183.  * routine returns a PRStatus value.  Upon error, it will create an
  184.  * error stack and return PR_FAILURE.
  185.  *
  186.  * The error value may be one of the following values:
  187.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  188.  *
  189.  * Return value:
  190.  *  PR_SUCCESS upon success
  191.  *  PR_FAILURE upon failure
  192.  */
  193. NSS_EXTERN PRStatus
  194. nssPKIXAttribute_Destroy
  195. (
  196.   NSSPKIXAttribute *attribute
  197. );
  198. /*
  199.  * nssPKIXAttribute_Encode
  200.  *
  201.  * This routine returns the BER encoding of the specified 
  202.  * NSSPKIXAttribute.  {usual rules about itemOpt and arenaOpt}
  203.  * This routine indicates an error (NSS_ERROR_INVALID_DATA) 
  204.  * if there are no attribute values (i.e., the last one was removed).
  205.  *
  206.  * The error value may be one of the following values:
  207.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  208.  *  NSS_ERROR_INVALID_ARENA
  209.  *  NSS_ERROR_NO_MEMORY
  210.  *  NSS_ERROR_INVALID_DATA
  211.  *
  212.  * Return value:
  213.  *  A valid NSSBER pointer upon success
  214.  *  NULL upon failure
  215.  */
  216. NSS_EXTERN NSSBER *
  217. nssPKIXAttribute_Encode
  218. (
  219.   NSSPKIXAttribute *attribute,
  220.   NSSASN1EncodingType encoding,
  221.   NSSBER *rvOpt,
  222.   NSSArena *arenaOpt
  223. );
  224. /*
  225.  * nssPKIXAttribute_GetType
  226.  *
  227.  * This routine returns the attribute type oid of the specified
  228.  * NSSPKIXAttribute.
  229.  *
  230.  * The error value may be one of the following values:
  231.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  232.  *  NSS_ERROR_NO_MEMORY
  233.  *
  234.  * Return value:
  235.  *  A valid NSSPKIXAttributeType pointer upon success
  236.  *  NULL upon failure.
  237.  */
  238. NSS_EXTERN NSSPKIXAttributeType *
  239. nssPKIXAttribute_GetType
  240. (
  241.   NSSPKIXAttribute *attribute
  242. );
  243. /*
  244.  * nssPKIXAttribute_SetType
  245.  *
  246.  * This routine sets the attribute type oid of the indicated
  247.  * NSSPKIXAttribute to the specified value.  Since attributes
  248.  * may be application-defined, no checking can be done on
  249.  * either the correctness of the attribute type oid value nor
  250.  * the suitability of the set of attribute values.
  251.  *
  252.  * The error value may be one of the following values:
  253.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  254.  *  NSS_ERROR_INVALID_OID
  255.  *
  256.  * Return value:
  257.  *  PR_SUCCESS upon success
  258.  *  PR_FAILURE upon failure
  259.  */
  260. NSS_EXTERN PRStatus
  261. nssPKIXAttribute_SetType
  262. (
  263.   NSSPKIXAttribute *attribute,
  264.   NSSPKIXAttributeType *attributeType
  265. );
  266. /*
  267.  * nssPKIXAttribute_GetValueCount
  268.  *
  269.  * This routine returns the number of attribute values present in
  270.  * the specified NSSPKIXAttribute.  This routine returns a PRInt32.
  271.  * Upon error, this routine returns -1.  This routine indicates an
  272.  * error if the number of values cannot be expressed as a PRInt32.
  273.  *
  274.  * The error may be one of the following values:
  275.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  276.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  277.  *
  278.  * Return value:
  279.  *  Nonnegative integer upon success
  280.  *  -1 upon failure.
  281.  */
  282. NSS_EXTERN PRInt32
  283. nssPKIXAttribute_GetValueCount
  284. (
  285.   NSSPKIXAttribute *attribute
  286. );
  287. /*
  288.  * nssPKIXAttribute_GetValues
  289.  *
  290.  * This routine returns all of the attribute values in the specified
  291.  * NSSPKIXAttribute.  If the optional pointer to an array of NSSItems
  292.  * is non-null, then that array will be used and returned; otherwise,
  293.  * an array will be allocated and returned.  If the limit is nonzero
  294.  * (which is must be if the specified array is nonnull), then an
  295.  * error is indicated if it is smaller than the value count.
  296.  * {arenaOpt}
  297.  *
  298.  * The error may be one of the following values:
  299.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  300.  *  NSS_ERROR_INVALID_ARENA
  301.  *  NSS_ERROR_NO_MEMORY
  302.  *  NSS_ERROR_ARRAY_TOO_SMALL
  303.  *
  304.  * Return value:
  305.  *  A valid pointer to an array of NSSItem's upon success
  306.  *  NULL upon failure.
  307.  */
  308. NSS_EXTERN NSSPKIXAttributeValue *
  309. nssPKIXAttribute_GetValues
  310. (
  311.   NSSPKIXAttribute *attribute,
  312.   NSSPKIXAttributeValue rvOpt[],
  313.   PRInt32 limit,
  314.   NSSArena *arenaOpt
  315. );
  316. /*
  317.  * nssPKIXAttribute_SetValues
  318.  *
  319.  * This routine sets all of the values of the specified 
  320.  * NSSPKIXAttribute to the values in the specified NSSItem array.
  321.  *
  322.  * The error may be one of the following values:
  323.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  324.  *  NSS_ERROR_INVALID_POINTER
  325.  *  NSS_ERROR_ARRAY_TOO_SMALL
  326.  *
  327.  * Return value:
  328.  *  PR_SUCCESS upon success
  329.  *  PR_FAILURE upon failure
  330.  */
  331. NSS_EXTERN PRStatus
  332. nssPKIXAttribute_SetValues
  333. (
  334.   NSSPKIXAttribute *attribute,
  335.   NSSPKIXAttributeValue values[],
  336.   PRInt32 count
  337. );
  338. /*
  339.  * nssPKIXAttribute_GetValue
  340.  *
  341.  * This routine returns the i'th attribute value of the set of
  342.  * values in the specified NSSPKIXAttribute.  Although the set
  343.  * is unordered, an arbitrary ordering will be maintained until
  344.  * the data in the attribute is changed.  {usual comments about
  345.  * itemOpt and arenaOpt}
  346.  *
  347.  * The error may be one of the following values:
  348.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  349.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  350.  *  NSS_ERROR_NO_MEMORY
  351.  *  NSS_ERROR_INVALID_ARENA
  352.  *
  353.  * Return value:
  354.  *  A valid pointer to an NSSPKIXAttributeValue upon success
  355.  *  NULL upon failure
  356.  */
  357. NSS_EXTERN NSSPKIXAttributeValue *
  358. nssPKIXAttribute_GetValue
  359. (
  360.   NSSPKIXAttribute *attribute,
  361.   PRInt32 i,
  362.   NSSPKIXAttributeValue *itemOpt,
  363.   NSSArena *arenaOpt
  364. );
  365. /*
  366.  * nssPKIXAttribute_SetValue
  367.  *
  368.  * This routine sets the i'th attribute value {blah blah; copies
  369.  * memory contents over..}
  370.  *
  371.  * The error may be one of the following values:
  372.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  373.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  374.  *  NSS_ERROR_INVALID_ITEM
  375.  *  NSS_ERROR_NO_MEMORY
  376.  *
  377.  * Return value:
  378.  *  PR_SUCCESS upon success
  379.  *  PR_FAILURE upon failure
  380.  */
  381. NSS_EXTERN PRStatus
  382. nssPKIXAttribute_SetValue
  383. (
  384.   NSSPKIXAttribute *attribute,
  385.   PRInt32 i,
  386.   NSSPKIXAttributeValue *value
  387. );
  388. /*
  389.  * nssPKIXAttribute_AddValue
  390.  *
  391.  * This routine adds the specified attribute value to the set in
  392.  * the specified NSSPKIXAttribute.
  393.  *
  394.  * The error may be one of the following values:
  395.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  396.  *  NSS_ERROR_INVALID_ITEM
  397.  *  NSS_ERROR_NO_MEMORY
  398.  *
  399.  * Return value:
  400.  *  PR_SUCCESS upon success
  401.  *  PR_FAILURE upon failure
  402.  */
  403. NSS_EXTERN PRStatus
  404. nssPKIXAttribute_AddValue
  405. (
  406.   NSSPKIXAttribute *attribute,
  407.   NSSPKIXAttributeValue *value
  408. ); 
  409. /*
  410.  * nssPKIXAttribute_RemoveValue
  411.  *
  412.  * This routine removes the i'th attribute value of the set in the
  413.  * specified NSSPKIXAttribute.  An attempt to remove the last value
  414.  * will fail.
  415.  *
  416.  * The error may be one of the following values:
  417.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  418.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  419.  *  NSS_ERROR_AT_MINIMUM
  420.  *
  421.  * Return value:
  422.  *  PR_SUCCESS upon success
  423.  *  PR_FAILURE upon failure
  424.  */
  425. NSS_EXTERN PRStatus
  426. nssPKIXAttribute_RemoveValue
  427. (
  428.   NSSPKIXAttribute *attribute,
  429.   PRInt32 i
  430. );
  431. /*
  432.  * nssPKIXAttribute_FindValue
  433.  *
  434.  * This routine searches the set of attribute values in the specified
  435.  * NSSPKIXAttribute for the provided data.  If an exact match is found,
  436.  * then that value's index is returned.  If an exact match is not 
  437.  * found, -1 is returned.  If there is more than one exact match, one
  438.  * index will be returned.  {notes about unorderdness of SET, etc}
  439.  * If the index may not be represented as an integer, an error is
  440.  * indicated.
  441.  *
  442.  * The error may be one of the following values:
  443.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  444.  *  NSS_ERROR_INVALID_ITEM
  445.  *  NSS_ERROR_NOT_FOUND
  446.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  447.  *
  448.  * Return value
  449.  *  The index of the specified attribute value upon success
  450.  *  -1 upon failure.
  451.  */
  452. NSS_EXTERN PRInt32
  453. nssPKIXAttribute_FindValue
  454. (
  455.   NSSPKIXAttribute *attribute,
  456.   NSSPKIXAttributeValue *attributeValue
  457. );
  458. /*
  459.  * nssPKIXAttribute_Equal
  460.  *
  461.  * This routine compares two NSSPKIXAttribute's for equality.
  462.  * It returns PR_TRUE if they are equal, PR_FALSE otherwise.
  463.  * This routine also returns PR_FALSE upon error; if you're
  464.  * that worried about it, check for an error stack.
  465.  *
  466.  * The error may be one of the following values:
  467.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  468.  *
  469.  * Return value:
  470.  *  PR_TRUE if the two objects have equal values
  471.  *  PR_FALSE otherwise
  472.  *  PR_FALSE upon error
  473.  */
  474. NSS_EXTERN PRBool
  475. nssPKIXAttribute_Equal
  476. (
  477.   NSSPKIXAttribute *one,
  478.   NSSPKIXAttribute *two,
  479.   PRStatus *statusOpt
  480. );
  481. /*
  482.  * nssPKIXAttribute_Duplicate
  483.  *
  484.  * This routine duplicates an NSSPKIXAttribute.  {arenaOpt}
  485.  *
  486.  * The error may be one of the following values:
  487.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  488.  *  NSS_ERROR_INVALID_ARENA
  489.  *  NSS_ERROR_NO_MEMORY
  490.  *
  491.  * Return value:
  492.  *  A valid pointer to an NSSPKIXAttribute upon success
  493.  *  NULL upon failure.
  494.  */
  495. NSS_EXTERN NSSPKIXAttribute *
  496. nssPKIXAttribute_Duplicate
  497. (
  498.   NSSPKIXAttribute *attribute,
  499.   NSSArena *arenaOpt
  500. );
  501. #ifdef DEBUG
  502. /*
  503.  * nssPKIXAttribute_verifyPointer
  504.  *
  505.  * This method is only present in debug builds.
  506.  *
  507.  * If the specified pointer is a valid pointer to an NSSPKIXAttribute
  508.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  509.  * put an error on the error stack and return PR_FAILURE.
  510.  *
  511.  * The error may be one of the following values:
  512.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE
  513.  *
  514.  * Return value:
  515.  *  PR_SUCCESS if the pointer is valid
  516.  *  PR_FAILURE if it isn't
  517.  */
  518. NSS_EXTERN PRStatus
  519. nssPKIXAttribute_verifyPointer
  520. (
  521.   NSSPKIXAttribute *p
  522. );
  523. #endif /* DEBUG */
  524. /*
  525.  * AttributeTypeAndValue
  526.  *
  527.  * This structure contains an attribute type (indicated by an OID), 
  528.  * and the type-specific value.  RelativeDistinguishedNames consist
  529.  * of a set of these.  These are distinct from Attributes (which have
  530.  * SET of values), from AttributeDescriptions (which have qualifiers
  531.  * on the types), and from AttributeValueAssertions (which assert a
  532.  * a value comparison under some matching rule).
  533.  *
  534.  * From RFC 2459:
  535.  *
  536.  *  AttributeTypeAndValue           ::=     SEQUENCE {
  537.  *          type    AttributeType,
  538.  *          value   AttributeValue }
  539.  * 
  540.  * The private calls for the type:
  541.  *
  542.  *  nssPKIXAttributeTypeAndValue_Decode
  543.  *  nssPKIXAttributeTypeAndValue_CreateFromUTF8
  544.  *  nssPKIXAttributeTypeAndValue_Create
  545.  *  nssPKIXAttributeTypeAndValue_Destroy
  546.  *  nssPKIXAttributeTypeAndValue_Encode
  547.  *  nssPKIXAttributeTypeAndValue_GetUTF8Encoding
  548.  *  nssPKIXAttributeTypeAndValue_GetType
  549.  *  nssPKIXAttributeTypeAndValue_SetType
  550.  *  nssPKIXAttributeTypeAndValue_GetValue
  551.  *  nssPKIXAttributeTypeAndValue_SetValue
  552.  *  nssPKIXAttributeTypeAndValue_Equal
  553.  *  nssPKIXAttributeTypeAndValue_Duplicate
  554.  *
  555.  * In debug builds, the following call is available:
  556.  *
  557.  *  nssPKIXAttributeTypeAndValue_verifyPointer
  558.  */
  559. /*
  560.  * nssPKIXAttributeTypeAndValue_Decode
  561.  *
  562.  * 
  563.  *
  564.  * The error may be one of the following values:
  565.  *  NSS_ERROR_INVALID_BER
  566.  *  NSS_ERROR_NO_MEMORY
  567.  *  NSS_ERROR_INVALID_ARENA
  568.  *
  569.  * Return value:
  570.  *  A valid pointer to an NSSPKIXAttributeTypeAndValue upon success
  571.  *  NULL upon failure
  572.  */
  573. NSS_EXTERN NSSPKIXAttributeTypeAndValue *
  574. nssPKIXAttributeTypeAndValue_Decode
  575. (
  576.   NSSArena *arenaOpt,
  577.   NSSBER *ber
  578. );
  579. /*
  580.  * nssPKIXAttributeTypeAndValue_CreateFromUTF8
  581.  *
  582.  * 
  583.  *
  584.  * The error may be one of the following values:
  585.  *  NSS_ERROR_NO_MEMORY
  586.  *  NSS_ERROR_INVALID_ARENA
  587.  *  NSS_ERROR_INVALID_STRING
  588.  *  NSS_ERROR_UNKNOWN_ATTRIBUTE
  589.  *
  590.  * Return value:
  591.  *  A valid pointer to an NSSPKIXAttributeTypeAndValue upon success
  592.  *  NULL upon failure
  593.  */
  594. NSS_EXTERN NSSPKIXAttributeTypeAndValue *
  595. nssPKIXAttributeTypeAndValue_CreateFromUTF8
  596. (
  597.   NSSArena *arenaOpt,
  598.   NSSUTF8 *string
  599. );
  600. /*
  601.  * nssPKIXAttributeTypeAndValue_Create
  602.  *
  603.  * 
  604.  *
  605.  * The error may be one of the following values:
  606.  *  NSS_ERROR_NO_MEMORY
  607.  *  NSS_ERROR_INVALID_ARENA
  608.  *  NSS_ERROR_INVALID_OID
  609.  *  NSS_ERROR_INVALID_ITEM
  610.  *
  611.  * Return value:
  612.  *  A valid pointer to an NSSPKIXAttributeTypeAndValue upon success
  613.  *  NULL upon failure
  614.  */
  615. NSS_EXTERN NSSPKIXAttributeTypeAndValue *
  616. nssPKIXAttributeTypeAndValue_Create
  617. (
  618.   NSSArena *arenaOpt,
  619.   NSSPKIXAttributeType *typeOid,
  620.   NSSPKIXAttributeValue *value
  621. );
  622. /*
  623.  * nssPKIXAttributeTypeAndValue_Destroy
  624.  *
  625.  * 
  626.  *
  627.  * The error may be one of the following values:
  628.  *  NSS_ERROR_INVALID_PKIX_ATAV
  629.  *
  630.  * Return value:
  631.  *  PR_SUCCESS upon success
  632.  *  PR_FAILURE upon failure
  633.  */
  634. NSS_EXTERN PRStatus
  635. nssPKIXAttributeTypeAndValue_Destroy
  636. (
  637.   NSSPKIXAttributeTypeAndValue *atav
  638. );
  639. /*
  640.  * nssPKIXAttributeTypeAndValue_Encode
  641.  *
  642.  * 
  643.  *
  644.  * The error may be one of the following values:
  645.  *  NSS_ERROR_INVALID_PKIX_ATAV
  646.  *  NSS_ERROR_INVALID_ARENA
  647.  *  NSS_ERROR_NO_MEMORY
  648.  *  
  649.  * Return value:
  650.  *  A valid NSSBER pointer upon success
  651.  *  NULL upon failure
  652.  */
  653. NSS_EXTERN NSSBER *
  654. nssPKIXAttributeTypeAndValue_Encode
  655. (
  656.   NSSPKIXAttributeTypeAndValue *atav,
  657.   NSSASN1EncodingType encoding,
  658.   NSSBER *rvOpt,
  659.   NSSArena *arenaOpt
  660. );
  661. /*
  662.  * nssPKIXAttributeTypeAndValue_GetUTF8Encoding
  663.  *
  664.  * 
  665.  *
  666.  * The error may be one of the following values:
  667.  *  NSS_ERROR_INVALID_PKIX_ATAV
  668.  *  NSS_ERROR_INVALID_ARENA
  669.  *  NSS_ERROR_NO_MEMORY
  670.  *
  671.  * Return value:
  672.  *  A valid NSSUTF8 pointer upon success
  673.  *  NULL upon failure
  674.  */
  675. NSS_EXTERN NSSUTF8 *
  676. nssPKIXAttributeTypeAndValue_GetUTF8Encoding
  677. (
  678.   NSSPKIXAttributeTypeAndValue *atav,
  679.   NSSArena *arenaOpt
  680. );
  681. /*
  682.  * nssPKIXAttributeTypeAndValue_GetType
  683.  *
  684.  * 
  685.  *
  686.  * The error may be one of the following values:
  687.  *  NSS_ERROR_INVALID_PKIX_ATAV
  688.  *  NSS_ERROR_NO_MEMORY
  689.  *
  690.  * Return value:
  691.  *  A valid NSSPKIXAttributeType pointer upon success
  692.  *  NULL upon failure
  693.  */
  694. NSS_EXTERN NSSPKIXAttributeType *
  695. nssPKIXAttributeTypeAndValue_GetType
  696. (
  697.   NSSPKIXAttributeTypeAndValue *atav
  698. );
  699. /*
  700.  * nssPKIXAttributeTypeAndValue_SetType
  701.  *
  702.  * 
  703.  *
  704.  * The error may be one of the following values:
  705.  *  NSS_ERROR_INVALID_PKIX_ATAV
  706.  *  NSS_ERROR_INVALID_OID
  707.  *
  708.  * Return value:
  709.  *  PR_SUCCESS upon success
  710.  *  PR_FAILURE upon failure
  711.  */
  712. NSS_EXTERN PRStatus
  713. nssPKIXAttributeTypeAndValue_SetType
  714. (
  715.   NSSPKIXAttributeTypeAndValue *atav,
  716.   NSSPKIXAttributeType *attributeType
  717. );
  718. /*
  719.  * nssPKIXAttributeTypeAndValue_GetValue
  720.  *
  721.  * 
  722.  *
  723.  * The error may be one of the following values:
  724.  *  NSS_ERROR_INVALID_PKIX_ATAV
  725.  *  NSS_ERROR_NO_MEMORY
  726.  *  NSS_ERROR_INVALID_ARENA
  727.  *
  728.  * Return value:
  729.  *  A valid pointer to an NSSAttributeValue upon success
  730.  *  NULL upon failure
  731.  */
  732. NSS_EXTERN NSSPKIXAttributeValue *
  733. nssPKIXAttributeTypeAndValue_GetValue
  734. (
  735.   NSSPKIXAttributeTypeAndValue *atav,
  736.   NSSPKIXAttributeValue *itemOpt,
  737.   NSSArena *arenaOpt
  738. );
  739. /*
  740.  * nssPKIXAttributeTypeAndValue_SetValue
  741.  *
  742.  * 
  743.  *
  744.  * The error may be one of the following values:
  745.  *  NSS_ERROR_INVALID_PKIX_ATAV
  746.  *  NSS_ERROR_INVALID_ITEM
  747.  *  NSS_ERROR_NO_MEMORY
  748.  *
  749.  * Return value:
  750.  *  PR_SUCCESS upon success
  751.  *  PR_FAILURE upon failure
  752.  */
  753. NSS_EXTERN PRStatus
  754. nssPKIXAttributeTypeAndValue_SetValue
  755. (
  756.   NSSPKIXAttributeTypeAndValue *atav,
  757.   NSSPKIXAttributeValue *value
  758. );
  759. /*
  760.  * nssPKIXAttributeTypeAndValue_Equal
  761.  *
  762.  * 
  763.  *
  764.  * The error may be one of the following values:
  765.  *  NSS_ERROR_INVALID_PKIX_ATAV
  766.  *
  767.  * Return value:
  768.  *  PR_TRUE if the two objects have equal values
  769.  *  PR_FALSE otherwise
  770.  *  PR_FALSE upon error
  771.  */
  772. NSS_EXTERN PRBool
  773. nssPKIXAttributeTypeAndValue_Equal
  774. (
  775.   NSSPKIXAttributeTypeAndValue *atav1,
  776.   NSSPKIXAttributeTypeAndValue *atav2,
  777.   PRStatus *statusOpt
  778. );
  779. /*
  780.  * nssPKIXAttributeTypeAndValue_Duplicate
  781.  *
  782.  * 
  783.  *
  784.  * The error may be one of the following values:
  785.  *  NSS_ERROR_INVALID_PKIX_ATAV
  786.  *  NSS_ERROR_INVALID_ARENA
  787.  *  NSS_ERROR_NO_MEMORY
  788.  *
  789.  * Return value:
  790.  *  A valid pointer to an NSSPKIXAttributeTypeAndValue upon success
  791.  *  NULL upon failure
  792.  */
  793. NSS_EXTERN NSSPKIXAttributeTypeAndValue *
  794. nssPKIXAttributeTypeAndValue_Duplicate
  795. (
  796.   NSSPKIXAttributeTypeAndValue *atav,
  797.   NSSArena *arenaOpt
  798. );
  799. #ifdef DEBUG
  800. /*
  801.  * nssPKIXAttributeTypeAndValue_verifyPointer
  802.  *
  803.  * This method is only present in debug builds.
  804.  *
  805.  * If the specified pointer is a valid pointer to an NSSPKIXAttributeTypeAndValue
  806.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  807.  * put an error on the error stack and return PR_FAILURE.
  808.  *
  809.  * The error may be one of the following values:
  810.  *  NSS_ERROR_INVALID_PKIX_ATTRIBUTE_TYPE_AND_VALUE
  811.  *
  812.  * Return value:
  813.  *  PR_SUCCESS if the pointer is valid
  814.  *  PR_FAILURE if it isn't
  815.  */
  816. NSS_EXTERN PRStatus
  817. nssPKIXAttributeTypeAndValue_verifyPointer
  818. (
  819.   NSSPKIXAttributeTypeAndValue *p
  820. );
  821. #endif /* DEBUG */
  822. /*
  823.  * X520Name
  824.  *
  825.  * -- fgmr comments --
  826.  *
  827.  * From RFC 2459:
  828.  *
  829.  *  X520name        ::= CHOICE {
  830.  *        teletexString         TeletexString (SIZE (1..ub-name)),
  831.  *        printableString       PrintableString (SIZE (1..ub-name)),
  832.  *        universalString       UniversalString (SIZE (1..ub-name)),
  833.  *        utf8String            UTF8String (SIZE (1..ub-name)),
  834.  *        bmpString             BMPString (SIZE(1..ub-name))   }
  835.  *
  836.  *
  837.  *  ub-name INTEGER ::=     32768
  838.  *
  839.  * The private calls for this type:
  840.  *
  841.  *  nssPKIXX520Name_Decode
  842.  *  nssPKIXX520Name_CreateFromUTF8
  843.  *  nssPKIXX520Name_Create
  844.  *  nssPKIXX520Name_Destroy
  845.  *  nssPKIXX520Name_Encode
  846.  *  nssPKIXX520Name_GetUTF8Encoding
  847.  *  nssPKIXX520Name_Equal
  848.  *  nssPKIXX520Name_Duplicate
  849.  *
  850.  * In debug builds, the following call is available:
  851.  *
  852.  *  nssPKIXX520Name_verifyPointer
  853.  */
  854. /*
  855.  * nssPKIXX520Name_Decode
  856.  *
  857.  * -- fgmr comments --
  858.  *
  859.  * The error may be one of the following values:
  860.  *  NSS_ERROR_INVALID_BER
  861.  *  NSS_ERROR_NO_MEMORY
  862.  *  NSS_ERROR_INVALID_ARENA
  863.  * 
  864.  * Return value:
  865.  *  A valid pointer to an NSSPKIXX520Name upon success
  866.  *  NULL upon failure
  867.  */
  868. NSS_EXTERN NSSPKIXX520Name *
  869. nssPKIXX520Name_Decode
  870. (
  871.   NSSArena *arenaOpt,
  872.   NSSBER *ber
  873. );
  874. /*
  875.  * nssPKIXX520Name_CreateFromUTF8
  876.  *
  877.  * { basically just enforces the length limit }
  878.  *
  879.  * The error may be one of the following values:
  880.  *  NSS_ERROR_INVALID_BER
  881.  *  NSS_ERROR_NO_MEMORY
  882.  *  NSS_ERROR_INVALID_ARENA
  883.  * 
  884.  * Return value:
  885.  *  A valid pointer to an NSSPKIXX520Name upon success
  886.  *  NULL upon failure
  887.  */
  888. NSS_EXTERN NSSPKIXX520Name *
  889. nssPKIXX520Name_CreateFromUTF8
  890. (
  891.   NSSArena *arenaOpt,
  892.   NSSUTF8 *utf8
  893. );
  894. /*
  895.  * nssPKIXX520Name_Create
  896.  *
  897.  *
  898.  *
  899.  * The error may be one of the following values:
  900.  *  NSS_ERROR_INVALID_STRING_TYPE
  901.  *  NSS_ERROR_INVALID_ITEM
  902.  *  NSS_ERROR_NO_MEMORY
  903.  *
  904.  * Return value:
  905.  *  A valid pointer to an NSSPKIXX520Name upon success
  906.  *  NULL upon failure
  907.  */
  908. NSS_EXTERN NSSPKIXX520Name *
  909. nssPKIXX520Name_Create
  910. (
  911.   NSSArena *arenaOpt,
  912.   nssStringType type,
  913.   NSSItem *data
  914. );
  915. /*
  916.  * nssPKIXX520Name_Destroy
  917.  *
  918.  *
  919.  *
  920.  * The error may be one of the following values:
  921.  *  NSS_ERROR_INVALID_X520_NAME
  922.  *
  923.  * Return value:
  924.  *  PR_SUCCESS upon success
  925.  *  PR_FAILURE upon failure
  926.  */
  927. NSS_EXTERN NSSBER *
  928. nssPKIXX520Name_Destroy
  929. (
  930.   NSSPKIXX520Name *name
  931. );
  932. /*
  933.  * nssPKIXX520Name_Encode
  934.  *
  935.  *
  936.  *
  937.  * The error may be one of the following values:
  938.  *  NSS_ERROR_INVALID_X520_NAME
  939.  *  NSS_ERROR_NO_MEMORY
  940.  *
  941.  * Return value:
  942.  *  A valid NSSBER pointer upon success
  943.  *  NULL upon failure
  944.  */
  945. NSS_EXTERN NSSBER *
  946. nssPKIXX520Name_Encode
  947. (
  948.   NSSPKIXX520Name *name,
  949.   NSSASN1EncodingType encoding,
  950.   NSSBER *rvOpt,
  951.   NSSArena *arenaOpt
  952. );
  953. /*
  954.  * nssPKIXX520Name_GetUTF8Encoding
  955.  *
  956.  *
  957.  *
  958.  * The error may be one of the following values:
  959.  *  NSS_ERROR_INVALID_X520_NAME
  960.  *  NSS_ERROR_NO_MEMORY
  961.  *
  962.  * Return value:
  963.  *  A valid NSSBER pointer upon success
  964.  *  NULL upon failure
  965.  */
  966. NSS_EXTERN NSSUTF8 *
  967. nssPKIXX520Name_GetUTF8Encoding
  968. (
  969.   NSSPKIXX520Name *name,
  970.   NSSArena *arenaOpt
  971. );
  972. /*
  973.  * nssPKIXX520Name_Equal
  974.  *
  975.  *
  976.  *
  977.  * The error may be one of the following values:
  978.  *  NSS_ERROR_INVALID_X520_NAME
  979.  *
  980.  * Return value:
  981.  *  PR_TRUE if the two objects have equal values
  982.  *  PR_FALSE otherwise
  983.  *  PR_FALSE upon error
  984.  */
  985. NSS_EXTERN PRBool
  986. nssPKIXX520Name_Equal
  987. (
  988.   NSSPKIXX520Name *name1,
  989.   NSSPKIXX520Name *name2,
  990.   PRStatus *statusOpt
  991. );
  992. /*
  993.  * nssPKIXX520Name_Duplicate
  994.  *
  995.  * 
  996.  *
  997.  * The error may be one of the following values:
  998.  *  NSS_ERROR_INVALID_X520_NAME
  999.  *  NSS_ERROR_NO_MEMORY
  1000.  *  NSS_ERROR_INVALID_ARENA
  1001.  * 
  1002.  * Return value:
  1003.  *  A valid pointer to an NSSPKIXX520Name upon success
  1004.  *  NULL upon failure
  1005.  */
  1006. NSS_EXTERN NSSPKIXX520Name *
  1007. nssPKIXX520Name_Duplicate
  1008. (
  1009.   NSSPKIXX520Name *name,
  1010.   NSSArena *arenaOpt
  1011. );
  1012. #ifdef DEBUG
  1013. /*
  1014.  * nssPKIXX520Name_verifyPointer
  1015.  *
  1016.  * This method is only present in debug builds.
  1017.  *
  1018.  * If the specified pointer is a valid pointer to an NSSPKIXX520Name
  1019.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  1020.  * put an error on the error stack and return PR_FAILURE.
  1021.  *
  1022.  * The error may be one of the following values:
  1023.  *  NSS_ERROR_INVALID_PKIX_X520_NAME
  1024.  *
  1025.  * Return value:
  1026.  *  PR_SUCCESS if the pointer is valid
  1027.  *  PR_FAILURE if it isn't
  1028.  */
  1029. NSS_EXTERN PRStatus
  1030. nssPKIXX520Name_verifyPointer
  1031. (
  1032.   NSSPKIXX520Name *p
  1033. );
  1034. #endif /* DEBUG */
  1035. /*
  1036.  * X520CommonName
  1037.  *
  1038.  * -- fgmr comments --
  1039.  *
  1040.  * From RFC 2459:
  1041.  *
  1042.  *  X520CommonName  ::=      CHOICE {
  1043.  *        teletexString         TeletexString (SIZE (1..ub-common-name)),
  1044.  *        printableString       PrintableString (SIZE (1..ub-common-name)),
  1045.  *        universalString       UniversalString (SIZE (1..ub-common-name)),
  1046.  *        utf8String            UTF8String (SIZE (1..ub-common-name)),
  1047.  *        bmpString             BMPString (SIZE(1..ub-common-name))   }
  1048.  * 
  1049.  * 
  1050.  *  ub-common-name  INTEGER ::=     64
  1051.  *
  1052.  * The private calls for this type:
  1053.  *
  1054.  *
  1055.  *  nssPKIXX520CommonName_Decode
  1056.  *  nssPKIXX520CommonName_CreateFromUTF8
  1057.  *  nssPKIXX520CommonName_Create
  1058.  *  nssPKIXX520CommonName_Destroy
  1059.  *  nssPKIXX520CommonName_Encode
  1060.  *  nssPKIXX520CommonName_GetUTF8Encoding
  1061.  *  nssPKIXX520CommonName_Equal
  1062.  *  nssPKIXX520CommonName_Duplicate
  1063.  *
  1064.  * In debug builds, the following call is available:
  1065.  *
  1066.  *  nssPKIXX520CommonName_verifyPointer
  1067.  */
  1068. /*
  1069.  * nssPKIXX520CommonName_Decode
  1070.  *
  1071.  * -- fgmr comments --
  1072.  *
  1073.  * The error may be one of the following values:
  1074.  *  NSS_ERROR_INVALID_BER
  1075.  *  NSS_ERROR_NO_MEMORY
  1076.  *  NSS_ERROR_INVALID_ARENA
  1077.  * 
  1078.  * Return value:
  1079.  *  A valid pointer to an NSSPKIXX520CommonName upon success
  1080.  *  NULL upon failure
  1081.  */
  1082. NSS_EXTERN NSSPKIXX520CommonName *
  1083. nssPKIXX520CommonName_Decode
  1084. (
  1085.   NSSArena *arenaOpt,
  1086.   NSSBER *ber
  1087. );
  1088. /*
  1089.  * nssPKIXX520CommonName_CreateFromUTF8
  1090.  *
  1091.  * { basically just enforces the length limit }
  1092.  *
  1093.  * The error may be one of the following values:
  1094.  *  NSS_ERROR_INVALID_BER
  1095.  *  NSS_ERROR_NO_MEMORY
  1096.  *  NSS_ERROR_INVALID_ARENA
  1097.  * 
  1098.  * Return value:
  1099.  *  A valid pointer to an NSSPKIXX520CommonName upon success
  1100.  *  NULL upon failure
  1101.  */
  1102. NSS_EXTERN NSSPKIXX520CommonName *
  1103. nssPKIXX520CommonName_CreateFromUTF8
  1104. (
  1105.   NSSArena *arenaOpt,
  1106.   NSSUTF8 *utf8
  1107. );
  1108. /*
  1109.  * nssPKIXX520CommonName_Create
  1110.  *
  1111.  *
  1112.  *
  1113.  * The error may be one of the following values:
  1114.  *  NSS_ERROR_INVALID_STRING_TYPE
  1115.  *  NSS_ERROR_INVALID_ITEM
  1116.  *  NSS_ERROR_NO_MEMORY
  1117.  *
  1118.  * Return value:
  1119.  *  A valid pointer to an NSSPKIXX520CommonName upon success
  1120.  *  NULL upon failure
  1121.  */
  1122. NSS_EXTERN NSSPKIXX520CommonName *
  1123. nssPKIXX520CommonName_Create
  1124. (
  1125.   NSSArena *arenaOpt,
  1126.   nssStringType type,
  1127.   NSSItem *data
  1128. );
  1129. /*
  1130.  * nssPKIXX520CommonName_Destroy
  1131.  *
  1132.  *
  1133.  *
  1134.  * The error may be one of the following values:
  1135.  *  NSS_ERROR_INVALID_X520_NAME
  1136.  *
  1137.  * Return value:
  1138.  *  PR_SUCCESS upon success
  1139.  *  PR_FAILURE upon failure
  1140.  */
  1141. NSS_EXTERN NSSBER *
  1142. nssPKIXX520CommonName_Destroy
  1143. (
  1144.   NSSPKIXX520CommonName *name
  1145. );
  1146. /*
  1147.  * nssPKIXX520CommonName_Encode
  1148.  *
  1149.  *
  1150.  *
  1151.  * The error may be one of the following values:
  1152.  *  NSS_ERROR_INVALID_X520_NAME
  1153.  *  NSS_ERROR_NO_MEMORY
  1154.  *
  1155.  * Return value:
  1156.  *  A valid NSSBER pointer upon success
  1157.  *  NULL upon failure
  1158.  */
  1159. NSS_EXTERN NSSBER *
  1160. nssPKIXX520CommonName_Encode
  1161. (
  1162.   NSSPKIXX520CommonName *name,
  1163.   NSSASN1EncodingType encoding,
  1164.   NSSBER *rvOpt,
  1165.   NSSArena *arenaOpt
  1166. );
  1167. /*
  1168.  * nssPKIXX520CommonName_GetUTF8Encoding
  1169.  *
  1170.  *
  1171.  *
  1172.  * The error may be one of the following values:
  1173.  *  NSS_ERROR_INVALID_X520_NAME
  1174.  *  NSS_ERROR_NO_MEMORY
  1175.  *
  1176.  * Return value:
  1177.  *  A valid NSSBER pointer upon success
  1178.  *  NULL upon failure
  1179.  */
  1180. NSS_EXTERN NSSUTF8 *
  1181. nssPKIXX520CommonName_GetUTF8Encoding
  1182. (
  1183.   NSSPKIXX520CommonName *name,
  1184.   NSSArena *arenaOpt
  1185. );
  1186. /*
  1187.  * nssPKIXX520CommonName_Equal
  1188.  *
  1189.  *
  1190.  *
  1191.  * The error may be one of the following values:
  1192.  *  NSS_ERROR_INVALID_X520_NAME
  1193.  *
  1194.  * Return value:
  1195.  *  PR_TRUE if the two objects have equal values
  1196.  *  PR_FALSE otherwise
  1197.  *  PR_FALSE upon error
  1198.  */
  1199. NSS_EXTERN PRBool
  1200. nssPKIXX520CommonName_Equal
  1201. (
  1202.   NSSPKIXX520CommonName *name1,
  1203.   NSSPKIXX520CommonName *name2,
  1204.   PRStatus *statusOpt
  1205. );
  1206. /*
  1207.  * nssPKIXX520CommonName_Duplicate
  1208.  *
  1209.  * 
  1210.  *
  1211.  * The error may be one of the following values:
  1212.  *  NSS_ERROR_INVALID_X520_NAME
  1213.  *  NSS_ERROR_NO_MEMORY
  1214.  *  NSS_ERROR_INVALID_ARENA
  1215.  * 
  1216.  * Return value:
  1217.  *  A valid pointer to an NSSPKIXX520CommonName upon success
  1218.  *  NULL upon failure
  1219.  */
  1220. NSS_EXTERN NSSPKIXX520CommonName *
  1221. nssPKIXX520CommonName_Duplicate
  1222. (
  1223.   NSSPKIXX520CommonName *name,
  1224.   NSSArena *arenaOpt
  1225. );
  1226. #ifdef DEBUG
  1227. /*
  1228.  * nssPKIXX520CommonName_verifyPointer
  1229.  *
  1230.  * This method is only present in debug builds.
  1231.  *
  1232.  * If the specified pointer is a valid pointer to an NSSPKIXX520CommonName
  1233.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  1234.  * put an error on the error stack and return PR_FAILURE.
  1235.  *
  1236.  * The error may be one of the following values:
  1237.  *  NSS_ERROR_INVALID_PKIX_X520_NAME
  1238.  *
  1239.  * Return value:
  1240.  *  PR_SUCCESS if the pointer is valid
  1241.  *  PR_FAILURE if it isn't
  1242.  */
  1243. NSS_EXTERN PRStatus
  1244. nssPKIXX520CommonName_verifyPointer
  1245. (
  1246.   NSSPKIXX520CommonName *p
  1247. );
  1248. #endif /* DEBUG */
  1249. /*
  1250.  * X520LocalityName
  1251.  *
  1252.  * -- fgmr comments --
  1253.  *
  1254.  * From RFC 2459:
  1255.  *
  1256.  *  X520LocalityName ::= CHOICE {
  1257.  *        teletexString       TeletexString (SIZE (1..ub-locality-name)),
  1258.  *        printableString     PrintableString (SIZE (1..ub-locality-name)),
  1259.  *        universalString     UniversalString (SIZE (1..ub-locality-name)),
  1260.  *        utf8String          UTF8String (SIZE (1..ub-locality-name)),
  1261.  *        bmpString           BMPString (SIZE(1..ub-locality-name))   }
  1262.  * 
  1263.  * The private calls for this type:
  1264.  *
  1265.  *  nssPKIXX520LocalityName_Decode
  1266.  *  nssPKIXX520LocalityName_CreateFromUTF8
  1267.  *  nssPKIXX520LocalityName_Encode
  1268.  *
  1269.  */
  1270. /*
  1271.  * nssPKIXX520LocalityName_Decode
  1272.  *
  1273.  * -- fgmr comments --
  1274.  *
  1275.  * The error may be one of the following values:
  1276.  *  NSS_ERROR_INVALID_BER
  1277.  *  NSS_ERROR_NO_MEMORY
  1278.  *  NSS_ERROR_INVALID_ARENA
  1279.  * 
  1280.  * Return value:
  1281.  *  A valid pointer to an NSSPKIXX520LocalityName upon success
  1282.  *  NULL upon failure
  1283.  */
  1284. NSS_EXTERN NSSPKIXX520LocalityName *
  1285. nssPKIXX520LocalityName_Decode
  1286. (
  1287.   NSSArena *arenaOpt,
  1288.   NSSBER *ber
  1289. );
  1290. /*
  1291.  * nssPKIXX520LocalityName_CreateFromUTF8
  1292.  *
  1293.  * { basically just enforces the length limit }
  1294.  *
  1295.  * The error may be one of the following values:
  1296.  *  NSS_ERROR_INVALID_BER
  1297.  *  NSS_ERROR_NO_MEMORY
  1298.  *  NSS_ERROR_INVALID_ARENA
  1299.  * 
  1300.  * Return value:
  1301.  *  A valid pointer to an NSSPKIXX520LocalityName upon success
  1302.  *  NULL upon failure
  1303.  */
  1304. NSS_EXTERN NSSPKIXX520LocalityName *
  1305. nssPKIXX520LocalityName_CreateFromUTF8
  1306. (
  1307.   NSSArena *arenaOpt,
  1308.   NSSUTF8 *utf8
  1309. );
  1310. /*
  1311.  * nssPKIXX520LocalityName_Encode
  1312.  *
  1313.  *
  1314.  *
  1315.  * The error may be one of the following values:
  1316.  *  NSS_ERROR_INVALID_X520_NAME
  1317.  *  NSS_ERROR_NO_MEMORY
  1318.  *
  1319.  * Return value:
  1320.  *  A valid NSSBER pointer upon success
  1321.  *  NULL upon failure
  1322.  */
  1323. NSS_EXTERN NSSBER *
  1324. nssPKIXX520LocalityName_Encode
  1325. (
  1326.   NSSPKIXX520LocalityName *name,
  1327.   NSSASN1EncodingType encoding,
  1328.   NSSBER *rvOpt,
  1329.   NSSArena *arenaOpt
  1330. );
  1331. /*
  1332.  * X520StateOrProvinceName
  1333.  *
  1334.  * -- fgmr comments --
  1335.  *
  1336.  * From RFC 2459:
  1337.  *
  1338.  *  X520StateOrProvinceName         ::= CHOICE {
  1339.  *        teletexString       TeletexString (SIZE (1..ub-state-name)),
  1340.  *        printableString     PrintableString (SIZE (1..ub-state-name)),
  1341.  *        universalString     UniversalString (SIZE (1..ub-state-name)),
  1342.  *        utf8String          UTF8String (SIZE (1..ub-state-name)),
  1343.  *        bmpString           BMPString (SIZE(1..ub-state-name))   }
  1344.  *
  1345.  * The private calls for this type:
  1346.  *
  1347.  *  nssPKIXX520StateOrProvinceName_Decode
  1348.  *  nssPKIXX520StateOrProvinceName_CreateFromUTF8
  1349.  *  nssPKIXX520StateOrProvinceName_Encode
  1350.  *
  1351.  */
  1352. /*
  1353.  * nssPKIXX520StateOrProvinceName_Decode
  1354.  *
  1355.  * -- fgmr comments --
  1356.  *
  1357.  * The error may be one of the following values:
  1358.  *  NSS_ERROR_INVALID_BER
  1359.  *  NSS_ERROR_NO_MEMORY
  1360.  *  NSS_ERROR_INVALID_ARENA
  1361.  * 
  1362.  * Return value:
  1363.  *  A valid pointer to an NSSPKIXX520StateOrProvinceName upon success
  1364.  *  NULL upon failure
  1365.  */
  1366. NSS_EXTERN NSSPKIXX520StateOrProvinceName *
  1367. nssPKIXX520StateOrProvinceName_Decode
  1368. (
  1369.   NSSArena *arenaOpt,
  1370.   NSSBER *ber
  1371. );
  1372. /*
  1373.  * nssPKIXX520StateOrProvinceName_CreateFromUTF8
  1374.  *
  1375.  * { basically just enforces the length limit }
  1376.  *
  1377.  * The error may be one of the following values:
  1378.  *  NSS_ERROR_INVALID_BER
  1379.  *  NSS_ERROR_NO_MEMORY
  1380.  *  NSS_ERROR_INVALID_ARENA
  1381.  * 
  1382.  * Return value:
  1383.  *  A valid pointer to an NSSPKIXX520StateOrProvinceName upon success
  1384.  *  NULL upon failure
  1385.  */
  1386. NSS_EXTERN NSSPKIXX520StateOrProvinceName *
  1387. nssPKIXX520StateOrProvinceName_CreateFromUTF8
  1388. (
  1389.   NSSArena *arenaOpt,
  1390.   NSSUTF8 *utf8
  1391. );
  1392. /*
  1393.  * nssPKIXX520StateOrProvinceName_Encode
  1394.  *
  1395.  *
  1396.  *
  1397.  * The error may be one of the following values:
  1398.  *  NSS_ERROR_INVALID_X520_NAME
  1399.  *  NSS_ERROR_NO_MEMORY
  1400.  *
  1401.  * Return value:
  1402.  *  A valid NSSBER pointer upon success
  1403.  *  NULL upon failure
  1404.  */
  1405. NSS_EXTERN NSSBER *
  1406. nssPKIXX520StateOrProvinceName_Encode
  1407. (
  1408.   NSSPKIXX520StateOrProvinceName *name,
  1409.   NSSASN1EncodingType encoding,
  1410.   NSSBER *rvOpt,
  1411.   NSSArena *arenaOpt
  1412. );
  1413. /*
  1414.  * X520OrganizationName
  1415.  *
  1416.  * -- fgmr comments --
  1417.  *
  1418.  * From RFC 2459:
  1419.  *
  1420.  *  X520OrganizationName ::= CHOICE {
  1421.  *    teletexString     TeletexString (SIZE (1..ub-organization-name)),
  1422.  *    printableString   PrintableString (SIZE (1..ub-organization-name)),
  1423.  *    universalString   UniversalString (SIZE (1..ub-organization-name)),
  1424.  *    utf8String        UTF8String (SIZE (1..ub-organization-name)),
  1425.  *    bmpString         BMPString (SIZE(1..ub-organization-name))   }
  1426.  *
  1427.  * The private calls for this type:
  1428.  *
  1429.  *  nssPKIXX520OrganizationName_Decode
  1430.  *  nssPKIXX520OrganizationName_CreateFromUTF8
  1431.  *  nssPKIXX520OrganizationName_Encode
  1432.  *
  1433.  */
  1434. /*
  1435.  * nssPKIXX520OrganizationName_Decode
  1436.  *
  1437.  * -- fgmr comments --
  1438.  *
  1439.  * The error may be one of the following values:
  1440.  *  NSS_ERROR_INVALID_BER
  1441.  *  NSS_ERROR_NO_MEMORY
  1442.  *  NSS_ERROR_INVALID_ARENA
  1443.  * 
  1444.  * Return value:
  1445.  *  A valid pointer to an NSSPKIXX520OrganizationName upon success
  1446.  *  NULL upon failure
  1447.  */
  1448. NSS_EXTERN NSSPKIXX520OrganizationName *
  1449. nssPKIXX520OrganizationName_Decode
  1450. (
  1451.   NSSArena *arenaOpt,
  1452.   NSSBER *ber
  1453. );
  1454. /*
  1455.  * nssPKIXX520OrganizationName_CreateFromUTF8
  1456.  *
  1457.  * { basically just enforces the length limit }
  1458.  *
  1459.  * The error may be one of the following values:
  1460.  *  NSS_ERROR_INVALID_BER
  1461.  *  NSS_ERROR_NO_MEMORY
  1462.  *  NSS_ERROR_INVALID_ARENA
  1463.  * 
  1464.  * Return value:
  1465.  *  A valid pointer to an NSSPKIXX520OrganizationName upon success
  1466.  *  NULL upon failure
  1467.  */
  1468. NSS_EXTERN NSSPKIXX520OrganizationName *
  1469. nssPKIXX520OrganizationName_CreateFromUTF8
  1470. (
  1471.   NSSArena *arenaOpt,
  1472.   NSSUTF8 *utf8
  1473. );
  1474. /*
  1475.  * nssPKIXX520OrganizationName_Encode
  1476.  *
  1477.  *
  1478.  *
  1479.  * The error may be one of the following values:
  1480.  *  NSS_ERROR_INVALID_X520_NAME
  1481.  *  NSS_ERROR_NO_MEMORY
  1482.  *
  1483.  * Return value:
  1484.  *  A valid NSSBER pointer upon success
  1485.  *  NULL upon failure
  1486.  */
  1487. NSS_EXTERN NSSBER *
  1488. nssPKIXX520OrganizationName_Encode
  1489. (
  1490.   NSSPKIXX520OrganizationName *name,
  1491.   NSSASN1EncodingType encoding,
  1492.   NSSBER *rvOpt,
  1493.   NSSArena *arenaOpt
  1494. );
  1495. /*
  1496.  * X520OrganizationalUnitName
  1497.  *
  1498.  * -- fgmr comments --
  1499.  *
  1500.  * From RFC 2459:
  1501.  *
  1502.  *  X520OrganizationalUnitName ::= CHOICE {
  1503.  *   teletexString    TeletexString (SIZE (1..ub-organizational-unit-name)),
  1504.  *   printableString        PrintableString
  1505.  *                        (SIZE (1..ub-organizational-unit-name)),
  1506.  *   universalString        UniversalString
  1507.  *                        (SIZE (1..ub-organizational-unit-name)),
  1508.  *   utf8String       UTF8String (SIZE (1..ub-organizational-unit-name)),
  1509.  *   bmpString        BMPString (SIZE(1..ub-organizational-unit-name))   }
  1510.  *
  1511.  * The private calls for this type:
  1512.  *
  1513.  *  nssPKIXX520OrganizationalUnitName_Decode
  1514.  *  nssPKIXX520OrganizationalUnitName_CreateFromUTF8
  1515.  *  nssPKIXX520OrganizationalUnitName_Encode
  1516.  *
  1517.  */
  1518. /*
  1519.  * nssPKIXX520OrganizationalUnitName_Decode
  1520.  *
  1521.  * -- fgmr comments --
  1522.  *
  1523.  * The error may be one of the following values:
  1524.  *  NSS_ERROR_INVALID_BER
  1525.  *  NSS_ERROR_NO_MEMORY
  1526.  *  NSS_ERROR_INVALID_ARENA
  1527.  * 
  1528.  * Return value:
  1529.  *  A valid pointer to an NSSPKIXX520OrganizationalUnitName upon success
  1530.  *  NULL upon failure
  1531.  */
  1532. NSS_EXTERN NSSPKIXX520OrganizationalUnitName *
  1533. nssPKIXX520OrganizationalUnitName_Decode
  1534. (
  1535.   NSSArena *arenaOpt,
  1536.   NSSBER *ber
  1537. );
  1538. /*
  1539.  * nssPKIXX520OrganizationalUnitName_CreateFromUTF8
  1540.  *
  1541.  * { basically just enforces the length limit }
  1542.  *
  1543.  * The error may be one of the following values:
  1544.  *  NSS_ERROR_INVALID_BER
  1545.  *  NSS_ERROR_NO_MEMORY
  1546.  *  NSS_ERROR_INVALID_ARENA
  1547.  * 
  1548.  * Return value:
  1549.  *  A valid pointer to an NSSPKIXX520OrganizationalUnitName upon success
  1550.  *  NULL upon failure
  1551.  */
  1552. NSS_EXTERN NSSPKIXX520OrganizationalUnitName *
  1553. nssPKIXX520OrganizationalUnitName_CreateFromUTF8
  1554. (
  1555.   NSSArena *arenaOpt,
  1556.   NSSUTF8 *utf8
  1557. );
  1558. /*
  1559.  * nssPKIXX520OrganizationalUnitName_Encode
  1560.  *
  1561.  *
  1562.  *
  1563.  * The error may be one of the following values:
  1564.  *  NSS_ERROR_INVALID_X520_NAME
  1565.  *  NSS_ERROR_NO_MEMORY
  1566.  *
  1567.  * Return value:
  1568.  *  A valid NSSBER pointer upon success
  1569.  *  NULL upon failure
  1570.  */
  1571. NSS_EXTERN NSSBER *
  1572. nssPKIXX520OrganizationalUnitName_Encode
  1573. (
  1574.   NSSPKIXX520OrganizationalUnitName *name,
  1575.   NSSASN1EncodingType encoding,
  1576.   NSSBER *rvOpt,
  1577.   NSSArena *arenaOpt
  1578. );
  1579. /*
  1580.  * X520Title
  1581.  *
  1582.  * -- fgmr comments --
  1583.  *
  1584.  * From RFC 2459:
  1585.  *
  1586.  *  X520Title ::=   CHOICE {
  1587.  *        teletexString         TeletexString (SIZE (1..ub-title)),
  1588.  *        printableString       PrintableString (SIZE (1..ub-title)),
  1589.  *        universalString       UniversalString (SIZE (1..ub-title)),
  1590.  *        utf8String            UTF8String (SIZE (1..ub-title)),
  1591.  *        bmpString             BMPString (SIZE(1..ub-title))   }
  1592.  *
  1593.  * The private calls for this type:
  1594.  *
  1595.  *  nssPKIXX520Title_Decode
  1596.  *  nssPKIXX520Title_CreateFromUTF8
  1597.  *  nssPKIXX520Title_Encode
  1598.  *
  1599.  */
  1600. /*
  1601.  * nssPKIXX520Title_Decode
  1602.  *
  1603.  * -- fgmr comments --
  1604.  *
  1605.  * The error may be one of the following values:
  1606.  *  NSS_ERROR_INVALID_BER
  1607.  *  NSS_ERROR_NO_MEMORY
  1608.  *  NSS_ERROR_INVALID_ARENA
  1609.  * 
  1610.  * Return value:
  1611.  *  A valid pointer to an NSSPKIXX520Title upon success
  1612.  *  NULL upon failure
  1613.  */
  1614. NSS_EXTERN NSSPKIXX520Title *
  1615. nssPKIXX520Title_Decode
  1616. (
  1617.   NSSArena *arenaOpt,
  1618.   NSSBER *ber
  1619. );
  1620. /*
  1621.  * nssPKIXX520Title_CreateFromUTF8
  1622.  *
  1623.  * { basically just enforces the length limit }
  1624.  *
  1625.  * The error may be one of the following values:
  1626.  *  NSS_ERROR_INVALID_BER
  1627.  *  NSS_ERROR_NO_MEMORY
  1628.  *  NSS_ERROR_INVALID_ARENA
  1629.  * 
  1630.  * Return value:
  1631.  *  A valid pointer to an NSSPKIXX520Title upon success
  1632.  *  NULL upon failure
  1633.  */
  1634. NSS_EXTERN NSSPKIXX520Title *
  1635. nssPKIXX520Title_CreateFromUTF8
  1636. (
  1637.   NSSArena *arenaOpt,
  1638.   NSSUTF8 *utf8
  1639. );
  1640. /*
  1641.  * nssPKIXX520Title_Encode
  1642.  *
  1643.  *
  1644.  *
  1645.  * The error may be one of the following values:
  1646.  *  NSS_ERROR_INVALID_X520_NAME
  1647.  *  NSS_ERROR_NO_MEMORY
  1648.  *
  1649.  * Return value:
  1650.  *  A valid NSSBER pointer upon success
  1651.  *  NULL upon failure
  1652.  */
  1653. NSS_EXTERN NSSBER *
  1654. nssPKIXX520Title_Encode
  1655. (
  1656.   NSSPKIXX520Title *name,
  1657.   NSSASN1EncodingType encoding,
  1658.   NSSBER *rvOpt,
  1659.   NSSArena *arenaOpt
  1660. );
  1661. /*
  1662.  * X520dnQualifier
  1663.  *
  1664.  * -- fgmr comments --
  1665.  *
  1666.  * From RFC 2459:
  1667.  *
  1668.  *  X520dnQualifier ::=     PrintableString
  1669.  *
  1670.  * The private calls for this type:
  1671.  *
  1672.  *  nssPKIXX520dnQualifier_Decode
  1673.  *  nssPKIXX520dnQualifier_CreateFromUTF8
  1674.  *  nssPKIXX520dnQualifier_Encode
  1675.  *
  1676.  */
  1677. /*
  1678.  * nssPKIXX520dnQualifier_Decode
  1679.  *
  1680.  * -- fgmr comments --
  1681.  *
  1682.  * The error may be one of the following values:
  1683.  *  NSS_ERROR_INVALID_BER
  1684.  *  NSS_ERROR_NO_MEMORY
  1685.  *  NSS_ERROR_INVALID_ARENA
  1686.  * 
  1687.  * Return value:
  1688.  *  A valid pointer to an NSSPKIXX520dnQualifier upon success
  1689.  *  NULL upon failure
  1690.  */
  1691. NSS_EXTERN NSSPKIXX520dnQualifier *
  1692. nssPKIXX520dnQualifier_Decode
  1693. (
  1694.   NSSArena *arenaOpt,
  1695.   NSSBER *ber
  1696. );
  1697. /*
  1698.  * nssPKIXX520dnQualifier_CreateFromUTF8
  1699.  *
  1700.  * { basically just enforces the length limit }
  1701.  *
  1702.  * The error may be one of the following values:
  1703.  *  NSS_ERROR_INVALID_BER
  1704.  *  NSS_ERROR_NO_MEMORY
  1705.  *  NSS_ERROR_INVALID_ARENA
  1706.  * 
  1707.  * Return value:
  1708.  *  A valid pointer to an NSSPKIXX520dnQualifier upon success
  1709.  *  NULL upon failure
  1710.  */
  1711. NSS_EXTERN NSSPKIXX520dnQualifier *
  1712. nssPKIXX520dnQualifier_CreateFromUTF8
  1713. (
  1714.   NSSArena *arenaOpt,
  1715.   NSSUTF8 *utf8
  1716. );
  1717. /*
  1718.  * nssPKIXX520dnQualifier_Encode
  1719.  *
  1720.  *
  1721.  *
  1722.  * The error may be one of the following values:
  1723.  *  NSS_ERROR_INVALID_X520_NAME
  1724.  *  NSS_ERROR_NO_MEMORY
  1725.  *
  1726.  * Return value:
  1727.  *  A valid NSSBER pointer upon success
  1728.  *  NULL upon failure
  1729.  */
  1730. NSS_EXTERN NSSBER *
  1731. nssPKIXX520dnQualifier_Encode
  1732. (
  1733.   NSSPKIXX520dnQualifier *name,
  1734.   NSSASN1EncodingType encoding,
  1735.   NSSBER *rvOpt,
  1736.   NSSArena *arenaOpt
  1737. );
  1738. /*
  1739.  * X520countryName
  1740.  *
  1741.  * -- fgmr comments --
  1742.  *
  1743.  * From RFC 2459:
  1744.  *
  1745.  *  X520countryName ::=     PrintableString (SIZE (2)) -- IS 3166 codes
  1746.  *
  1747.  * The private calls for this type:
  1748.  *
  1749.  *  nssPKIXX520countryName_Decode
  1750.  *  nssPKIXX520countryName_CreateFromUTF8
  1751.  *  nssPKIXX520countryName_Encode
  1752.  *
  1753.  */
  1754. /*
  1755.  * nssPKIXX520countryName_Decode
  1756.  *
  1757.  * -- fgmr comments --
  1758.  *
  1759.  * The error may be one of the following values:
  1760.  *  NSS_ERROR_INVALID_BER
  1761.  *  NSS_ERROR_NO_MEMORY
  1762.  *  NSS_ERROR_INVALID_ARENA
  1763.  * 
  1764.  * Return value:
  1765.  *  A valid pointer to an NSSPKIXX520countryName upon success
  1766.  *  NULL upon failure
  1767.  */
  1768. NSS_EXTERN NSSPKIXX520countryName *
  1769. nssPKIXX520countryName_Decode
  1770. (
  1771.   NSSArena *arenaOpt,
  1772.   NSSBER *ber
  1773. );
  1774. /*
  1775.  * nssPKIXX520countryName_CreateFromUTF8
  1776.  *
  1777.  * { basically just enforces the length limit }
  1778.  *
  1779.  * The error may be one of the following values:
  1780.  *  NSS_ERROR_INVALID_BER
  1781.  *  NSS_ERROR_NO_MEMORY
  1782.  *  NSS_ERROR_INVALID_ARENA
  1783.  * 
  1784.  * Return value:
  1785.  *  A valid pointer to an NSSPKIXX520countryName upon success
  1786.  *  NULL upon failure
  1787.  */
  1788. NSS_EXTERN NSSPKIXX520countryName *
  1789. nssPKIXX520countryName_CreateFromUTF8
  1790. (
  1791.   NSSArena *arenaOpt,
  1792.   NSSUTF8 *utf8
  1793. );
  1794. /*
  1795.  * nssPKIXX520countryName_Encode
  1796.  *
  1797.  *
  1798.  *
  1799.  * The error may be one of the following values:
  1800.  *  NSS_ERROR_INVALID_X520_NAME
  1801.  *  NSS_ERROR_NO_MEMORY
  1802.  *
  1803.  * Return value:
  1804.  *  A valid NSSBER pointer upon success
  1805.  *  NULL upon failure
  1806.  */
  1807. NSS_EXTERN NSSBER *
  1808. nssPKIXX520countryName_Encode
  1809. (
  1810.   NSSPKIXX520countryName *name,
  1811.   NSSASN1EncodingType encoding,
  1812.   NSSBER *rvOpt,
  1813.   NSSArena *arenaOpt
  1814. );
  1815. /*
  1816.  * Pkcs9email
  1817.  *
  1818.  * -- fgmr comments --
  1819.  *
  1820.  * From RFC 2459:
  1821.  *
  1822.  *  Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length))
  1823.  *
  1824.  * The private calls for this type:
  1825.  *
  1826.  *  nssPKIXPkcs9email_Decode
  1827.  *  nssPKIXPkcs9email_CreateFromUTF8
  1828.  *  nssPKIXPkcs9email_Encode
  1829.  *
  1830.  */
  1831. /*
  1832.  * nssPKIXPkcs9email_Decode
  1833.  *
  1834.  * -- fgmr comments --
  1835.  *
  1836.  * The error may be one of the following values:
  1837.  *  NSS_ERROR_INVALID_BER
  1838.  *  NSS_ERROR_NO_MEMORY
  1839.  *  NSS_ERROR_INVALID_ARENA
  1840.  * 
  1841.  * Return value:
  1842.  *  A valid pointer to an NSSPKIXPkcs9email upon success
  1843.  *  NULL upon failure
  1844.  */
  1845. NSS_EXTERN NSSPKIXPkcs9email *
  1846. nssPKIXPkcs9email_Decode
  1847. (
  1848.   NSSArena *arenaOpt,
  1849.   NSSBER *ber
  1850. );
  1851. /*
  1852.  * nssPKIXPkcs9email_CreateFromUTF8
  1853.  *
  1854.  * { basically just enforces the length limit }
  1855.  *
  1856.  * The error may be one of the following values:
  1857.  *  NSS_ERROR_INVALID_BER
  1858.  *  NSS_ERROR_NO_MEMORY
  1859.  *  NSS_ERROR_INVALID_ARENA
  1860.  * 
  1861.  * Return value:
  1862.  *  A valid pointer to an NSSPKIXPkcs9email upon success
  1863.  *  NULL upon failure
  1864.  */
  1865. NSS_EXTERN NSSPKIXPkcs9email *
  1866. nssPKIXPkcs9email_CreateFromUTF8
  1867. (
  1868.   NSSArena *arenaOpt,
  1869.   NSSUTF8 *utf8
  1870. );
  1871. /*
  1872.  * nssPKIXPkcs9email_Encode
  1873.  *
  1874.  *
  1875.  *
  1876.  * The error may be one of the following values:
  1877.  *  NSS_ERROR_INVALID_X520_NAME
  1878.  *  NSS_ERROR_NO_MEMORY
  1879.  *
  1880.  * Return value:
  1881.  *  A valid NSSBER pointer upon success
  1882.  *  NULL upon failure
  1883.  */
  1884. NSS_EXTERN NSSBER *
  1885. nssPKIXPkcs9email_Encode
  1886. (
  1887.   NSSPKIXPkcs9email *name,
  1888.   NSSASN1EncodingType encoding,
  1889.   NSSBER *rvOpt,
  1890.   NSSArena *arenaOpt
  1891. );
  1892. /*
  1893.  * Name
  1894.  *
  1895.  * This structure contains a union of the possible name formats,
  1896.  * which at the moment is limited to an RDNSequence.
  1897.  *
  1898.  * From RFC 2459:
  1899.  *
  1900.  *  Name            ::=   CHOICE { -- only one possibility for now --
  1901.  *                                   rdnSequence  RDNSequence }
  1902.  *
  1903.  * The private calls for this type:
  1904.  *
  1905.  *  nssPKIXName_Decode
  1906.  *  nssPKIXName_CreateFromUTF8
  1907.  *  nssPKIXName_Create
  1908.  *  nssPKIXName_CreateFromRDNSequence
  1909.  *  nssPKIXName_Destroy
  1910.  *  nssPKIXName_Encode
  1911.  *  nssPKIXName_GetUTF8Encoding
  1912.  *  nssPKIXName_GetChoice
  1913.  *  nssPKIXName_GetRDNSequence
  1914.  *  nssPKIXName_GetSpecifiedChoice {fgmr remove this}
  1915. {fgmr} _SetRDNSequence
  1916. {fgmr} _SetSpecifiedChoice
  1917.  *  nssPKIXName_Equal
  1918.  *  nssPKIXName_Duplicate
  1919.  *
  1920.  *  (here is where I had specific attribute value gettors in pki1)
  1921.  * 
  1922.  * In debug builds, the following call is available:
  1923.  *
  1924.  *  nssPKIXName_verifyPointer
  1925.  *
  1926.  */
  1927. /*
  1928.  * nssPKIXName_Decode
  1929.  *
  1930.  * -- fgmr comments --
  1931.  *
  1932.  * The error may be one of the following values:
  1933.  *  NSS_ERROR_INVALID_BER
  1934.  *  NSS_ERROR_NO_MEMORY
  1935.  *  NSS_ERROR_INVALID_ARENA
  1936.  *
  1937.  * Return value:
  1938.  *  A valid pointer to an NSSPKIXName upon success
  1939.  *  NULL upon failure
  1940.  */
  1941. NSS_EXTERN NSSPKIXName *
  1942. nssPKIXName_Decode
  1943. (
  1944.   NSSArena *arenaOpt,
  1945.   NSSBER *ber
  1946. );
  1947. /*
  1948.  * nssPKIXName_CreateFromUTF8
  1949.  *
  1950.  * -- fgmr comments --
  1951.  *
  1952.  * The error may be one of the following values:
  1953.  *  NSS_ERROR_NO_MEMORY
  1954.  *  NSS_ERROR_INVALID_ARENA
  1955.  *  NSS_ERROR_INVALID_STRING
  1956.  *  NSS_ERROR_UNKNOWN_ATTRIBUTE
  1957.  *
  1958.  * Return value:
  1959.  *  A valid pointer to an NSSPKIXName upon success
  1960.  *  NULL upon failure
  1961.  */
  1962. NSS_EXTERN NSSPKIXName *
  1963. nssPKIXName_CreateFromUTF8
  1964. (
  1965.   NSSArena *arenaOpt,
  1966.   NSSUTF8 *string
  1967. );
  1968. /*
  1969.  * nssPKIXName_Create
  1970.  *
  1971.  * -- fgmr comments --
  1972.  *
  1973.  * The error may be one of the following values:
  1974.  *  NSS_ERROR_NO_MEMORY
  1975.  *  NSS_ERROR_INVALID_ARENA
  1976.  *  NSS_ERROR_INVALID_CHOICE
  1977.  *  NSS_ERROR_INVALID_ARGUMENT
  1978.  *
  1979.  * Return value:
  1980.  *  A valid pointer to an NSSPKIXName upon success
  1981.  *  NULL upon failure
  1982.  */
  1983. NSS_EXTERN NSSPKIXName *
  1984. nssPKIXName_Create
  1985. (
  1986.   NSSArena *arenaOpt,
  1987.   NSSPKIXNameChoice choice,
  1988.   void *arg
  1989. );
  1990. /*
  1991.  * nssPKIXName_CreateFromRDNSequence
  1992.  *
  1993.  * -- fgmr comments --
  1994.  *
  1995.  * The error may be one of the following values:
  1996.  *  NSS_ERROR_NO_MEMORY
  1997.  *  NSS_ERROR_INVALID_ARENA
  1998.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  1999.  *
  2000.  * Return value:
  2001.  *  A valid pointer to an NSSPKIXName upon success
  2002.  *  NULL upon failure
  2003.  */
  2004. NSS_EXTERN NSSPKIXName *
  2005. nssPKIXName_CreateFromRDNSequence
  2006. (
  2007.   NSSArena *arenaOpt,
  2008.   NSSPKIXRDNSequence *rdnSequence
  2009. );
  2010. /*
  2011.  * nssPKIXName_Destroy
  2012.  *
  2013.  * -- fgmr comments --
  2014.  *
  2015.  * The error may be one of the following values:
  2016.  *  NSS_ERROR_INVALID_PKIX_NAME
  2017.  *
  2018.  * Return value:
  2019.  *  PR_SUCCESS upon success
  2020.  *  PR_FAILURE upon failure
  2021.  */
  2022. NSS_EXTERN PRStatus
  2023. nssPKIXName_Destroy
  2024. (
  2025.   NSSPKIXName *name
  2026. );
  2027. /*
  2028.  * nssPKIXName_Encode
  2029.  *
  2030.  * -- fgmr comments --
  2031.  *
  2032.  * The error may be one of the following values:
  2033.  *  NSS_ERROR_INVALID_PKIX_NAME
  2034.  *  NSS_ERROR_INVALID_ARENA
  2035.  *  NSS_ERROR_NO_MEMORY
  2036.  *
  2037.  * Return value:
  2038.  *  A valid NSSBER pointer upon success
  2039.  *  NULL upon failure
  2040.  */
  2041. NSS_EXTERN NSSBER *
  2042. nssPKIXName_Encode
  2043. (
  2044.   NSSPKIXName *name,
  2045.   NSSASN1EncodingType encoding,
  2046.   NSSBER *rvOpt,
  2047.   NSSArena *arenaOpt
  2048. );
  2049. /*
  2050.  * nssPKIXName_GetUTF8Encoding
  2051.  *
  2052.  * -- fgmr comments --
  2053.  *
  2054.  * The error may be one of the following values:
  2055.  *  NSS_ERROR_INVALID_PKIX_NAME
  2056.  *  NSS_ERROR_INVALID_ARENA
  2057.  *  NSS_ERROR_NO_MEMORY
  2058.  *
  2059.  * Return value:
  2060.  *  A valid NSSUTF8 pointer upon success
  2061.  *  NULL upon failure
  2062.  */
  2063. NSS_EXTERN NSSUTF8 *
  2064. nssPKIXName_GetUTF8Encoding
  2065. (
  2066.   NSSPKIXName *name,
  2067.   NSSArena *arenaOpt
  2068. );
  2069. /*
  2070.  * nssPKIXName_GetChoice
  2071.  *
  2072.  * -- fgmr comments --
  2073.  *
  2074.  * The error may be one of the following values:
  2075.  *  NSS_ERROR_INVALID_PKIX_NAME
  2076.  *
  2077.  * Return value:
  2078.  *  A valid element of the NSSPKIXNameChoice enumeration upon success
  2079.  *  The value NSSPKIXNameChoice_NSSinvalid (-1) upon error
  2080.  */
  2081. NSS_EXTERN NSSPKIXNameChoice
  2082. nssPKIXName_GetChoice
  2083. (
  2084.   NSSPKIXName *name
  2085. );
  2086. /*
  2087.  * nssPKIXName_GetRDNSequence
  2088.  *
  2089.  * -- fgmr comments --
  2090.  *
  2091.  * The error may be one of the following values:
  2092.  *  NSS_ERROR_INVALID_PKIX_NAME
  2093.  *  NSS_ERROR_INVALID_ARENA
  2094.  *  NSS_ERROR_NO_MEMORY
  2095.  *  NSS_ERROR_WRONG_CHOICE
  2096.  *
  2097.  * Return value:
  2098.  *  A pointer to a valid NSSPKIXRDNSequence upon success
  2099.  *  NULL upon failure
  2100.  */
  2101. NSS_EXTERN NSSPKIXRDNSequence *
  2102. nssPKIXName_GetRDNSequence
  2103. (
  2104.   NSSPKIXName *name,
  2105.   NSSArena *arenaOpt
  2106. );
  2107. /*
  2108.  * nssPKIXName_GetSpecifiedChoice
  2109.  *
  2110.  * -- fgmr comments --
  2111.  *
  2112.  * The error may be one of the following values:
  2113.  *  NSS_ERROR_INVALID_PKIX_NAME
  2114.  *  NSS_ERROR_INVALID_ARENA
  2115.  *  NSS_ERROR_NO_MEMORY
  2116.  *  NSS_ERROR_WRONG_CHOICE
  2117.  *
  2118.  * Return value:
  2119.  *  A valid pointer ...
  2120.  *  NULL upon failure
  2121.  */
  2122. NSS_EXTERN void *
  2123. nssPKIXName_GetSpecifiedChoice
  2124. (
  2125.   NSSPKIXName *name,
  2126.   NSSPKIXNameChoice choice,
  2127.   NSSArena *arenaOpt
  2128. );
  2129. /*
  2130.  * nssPKIXName_Equal
  2131.  *
  2132.  * -- fgmr comments --
  2133.  *
  2134.  * The error may be one of the following values:
  2135.  *  NSS_ERROR_INVALID_PKIX_NAME
  2136.  *
  2137.  * Return value:
  2138.  *  PR_TRUE if the two objects have equal values
  2139.  *  PR_FALSE otherwise
  2140.  *  PR_FALSE upon error
  2141.  */
  2142. NSS_EXTERN PRBool
  2143. nssPKIXName_Equal
  2144. (
  2145.   NSSPKIXName *name1,
  2146.   NSSPKIXName *name2,
  2147.   PRStatus *statusOpt
  2148. );
  2149. /*
  2150.  * nssPKIXName_Duplicate
  2151.  *
  2152.  * -- fgmr comments --
  2153.  *
  2154.  * The error may be one of the following values:
  2155.  *  NSS_ERROR_INVALID_PKIX_NAME
  2156.  *  NSS_ERROR_INVALID_ARENA
  2157.  *  NSS_ERROR_NO_MEMORY
  2158.  *
  2159.  * Return value:
  2160.  *  A valid pointer to an NSSPKIXName upon success
  2161.  *  NULL upon failure
  2162.  */
  2163. NSS_EXTERN NSSPKIXName *
  2164. nssPKIXName_Duplicate
  2165. (
  2166.   NSSPKIXName *name,
  2167.   NSSArena *arenaOpt
  2168. );
  2169. #ifdef DEBUG
  2170. /*
  2171.  * nssPKIXName_verifyPointer
  2172.  *
  2173.  * This method is only present in debug builds.
  2174.  *
  2175.  * If the specified pointer is a valid pointer to an NSSPKIXName
  2176.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  2177.  * put an error on the error stack and return PR_FAILURE.
  2178.  *
  2179.  * The error may be one of the following values:
  2180.  *  NSS_ERROR_INVALID_PKIX_NAME
  2181.  *
  2182.  * Return value:
  2183.  *  PR_SUCCESS if the pointer is valid
  2184.  *  PR_FAILURE if it isn't
  2185.  */
  2186. NSS_EXTERN PRStatus
  2187. nssPKIXName_verifyPointer
  2188. (
  2189.   NSSPKIXName *p
  2190. );
  2191. #endif /* DEBUG */
  2192. /*
  2193.  * RDNSequence
  2194.  *
  2195.  * This structure contains a sequence of RelativeDistinguishedName
  2196.  * objects.
  2197.  *
  2198.  * From RFC 2459:
  2199.  *
  2200.  *  RDNSequence     ::=   SEQUENCE OF RelativeDistinguishedName
  2201.  *
  2202.  * The private calls for this type:
  2203.  *
  2204.  *  nssPKIXRDNSequence_Decode
  2205.  *  nssPKIXRDNSequence_CreateFromUTF8
  2206.  *  nssPKIXRDNSequence_Create
  2207.  *  nssPKIXRDNSequence_CreateFromArray
  2208.  *  nssPKIXRDNSequence_Destroy
  2209.  *  nssPKIXRDNSequence_Encode
  2210.  *  nssPKIXRDNSequence_GetUTF8Encoding
  2211.  *  nssPKIXRDNSequence_GetRelativeDistinguishedNameCount
  2212.  *  nssPKIXRDNSequence_GetRelativeDistinguishedNames
  2213.  *  nssPKIXRDNSequence_SetRelativeDistinguishedNames
  2214.  *  nssPKIXRDNSequence_GetRelativeDistinguishedName
  2215.  *  nssPKIXRDNSequence_SetRelativeDistinguishedName
  2216.  *  nssPKIXRDNSequence_AppendRelativeDistinguishedName
  2217.  *  nssPKIXRDNSequence_InsertRelativeDistinguishedName
  2218.  *  nssPKIXRDNSequence_RemoveRelativeDistinguishedName
  2219.  *  nssPKIXRDNSequence_FindRelativeDistinguishedName
  2220.  *  nssPKIXRDNSequence_Equal
  2221.  *  nssPKIXRDNSequence_Duplicate
  2222.  * 
  2223.  * In debug builds, the following call is available:
  2224.  *
  2225.  *  nssPKIXRDNSequence_verifyPointer
  2226.  *
  2227.  */
  2228. /*
  2229.  * nssPKIXRDNSequence_Decode
  2230.  *
  2231.  * -- fgmr comments --
  2232.  *
  2233.  * The error may be one of the following values:
  2234.  *  NSS_ERROR_INVALID_BER
  2235.  *  NSS_ERROR_NO_MEMORY
  2236.  *  NSS_ERROR_INVALID_ARENA
  2237.  *
  2238.  * Return value:
  2239.  *  A valid pointer to an NSSPKIXRDNSequence upon success
  2240.  *  NULL upon failure
  2241.  */
  2242. NSS_EXTERN NSSPKIXRDNSequence *
  2243. nssPKIXRDNSequence_Decode
  2244. (
  2245.   NSSArena *arenaOpt,
  2246.   NSSBER *ber
  2247. );
  2248. /*
  2249.  * nssPKIXRDNSequence_CreateFromUTF8
  2250.  *
  2251.  * -- fgmr comments --
  2252.  *
  2253.  * The error may be one of the following values:
  2254.  *  NSS_ERROR_NO_MEMORY
  2255.  *  NSS_ERROR_INVALID_ARENA
  2256.  *  NSS_ERROR_INVALID_STRING
  2257.  *  NSS_ERROR_UNKNOWN_ATTRIBUTE
  2258.  *
  2259.  * Return value:
  2260.  *  A valid pointer to an NSSPKIXRDNSequence upon success
  2261.  *  NULL upon failure
  2262.  */
  2263. NSS_EXTERN NSSPKIXRDNSequence *
  2264. nssPKIXRDNSequence_CreateFromUTF8
  2265. (
  2266.   NSSArena *arenaOpt,
  2267.   NSSUTF8 *string
  2268. );
  2269. /*
  2270.  * nssPKIXRDNSequence_CreateFromArray
  2271.  *
  2272.  * -- fgmr comments --
  2273.  *
  2274.  * The error may be one of the following values:
  2275.  *  NSS_ERROR_NO_MEMORY
  2276.  *  NSS_ERROR_INVALID_ARENA
  2277.  *  NSS_ERROR_INVALID_PKIX_RDN
  2278.  *
  2279.  * Return value:
  2280.  *  A valid pointer to an NSSPKIXRDNSequence upon success
  2281.  *  NULL upon failure
  2282.  */
  2283. NSS_EXTERN NSSPKIXRDNSequence *
  2284. nssPKIXRDNSequence_CreateFromArray
  2285. (
  2286.   NSSArena *arenaOpt,
  2287.   PRUint32 count,
  2288.   NSSPKIXRelativeDistinguishedName *rdn1
  2289. );
  2290. /*
  2291.  * nssPKIXRDNSequence_Create
  2292.  *
  2293.  * -- fgmr comments --
  2294.  *
  2295.  * The error may be one of the following values:
  2296.  *  NSS_ERROR_NO_MEMORY
  2297.  *  NSS_ERROR_INVALID_ARENA
  2298.  *  NSS_ERROR_INVALID_PKIX_RDN
  2299.  *
  2300.  * Return value:
  2301.  *  A valid pointer to an NSSPKIXRDNSequence upon success
  2302.  *  NULL upon failure
  2303.  */
  2304. NSS_EXTERN NSSPKIXRDNSequence *
  2305. nssPKIXRDNSequence_Create
  2306. (
  2307.   NSSArena *arenaOpt,
  2308.   NSSPKIXRelativeDistinguishedName *rdn1,
  2309.   ...
  2310. );
  2311. /*
  2312.  * nssPKIXRDNSequence_Destroy
  2313.  *
  2314.  * -- fgmr comments --
  2315.  *
  2316.  * The error may be one of the following values:
  2317.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2318.  *
  2319.  * Return value:
  2320.  *  PR_SUCCESS upon success
  2321.  *  PR_FAILURE upon failure
  2322.  */
  2323. NSS_EXTERN PRStatus
  2324. nssPKIXRDNSequence_Destroy
  2325. (
  2326.   NSSPKIXRDNSequence *rdnseq
  2327. );
  2328. /*
  2329.  * nssPKIXRDNSequence_Encode
  2330.  *
  2331.  * -- fgmr comments --
  2332.  *
  2333.  * The error may be one of the following values:
  2334.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2335.  *  NSS_ERROR_INVALID_ARENA
  2336.  *  NSS_ERROR_NO_MEMORY
  2337.  *
  2338.  * Return value:
  2339.  *  A valid NSSBER pointer upon success
  2340.  *  NULL upon failure
  2341.  */
  2342. NSS_EXTERN NSSBER *
  2343. nssPKIXRDNSequence_Encode
  2344. (
  2345.   NSSPKIXRDNSequence *rdnseq,
  2346.   NSSASN1EncodingType encoding,
  2347.   NSSBER *rvOpt,
  2348.   NSSArena *arenaOpt
  2349. );
  2350. /*
  2351.  * nssPKIXRDNSequence_GetUTF8Encoding
  2352.  *
  2353.  * -- fgmr comments --
  2354.  *
  2355.  * The error may be one of the following values:
  2356.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2357.  *  NSS_ERROR_INVALID_ARENA
  2358.  *  NSS_ERROR_NO_MEMORY
  2359.  *
  2360.  * Return value:
  2361.  *  A valid NSSUTF8 pointer upon success
  2362.  *  NULL upon failure
  2363.  */
  2364. NSS_EXTERN NSSUTF8 *
  2365. nssPKIXRDNSequence_GetUTF8Encoding
  2366. (
  2367.   NSSPKIXRDNSequence *rdnseq,
  2368.   NSSArena *arenaOpt
  2369. );
  2370. /*
  2371.  * nssPKIXRDNSequence_GetRelativeDistinguishedNameCount
  2372.  *
  2373.  * -- fgmr comments --
  2374.  *
  2375.  * The error may be one of the following values:
  2376.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2377.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2378.  *
  2379.  * Return value:
  2380.  *  Nonnegative integer upon success
  2381.  *  -1 upon failure.
  2382.  */
  2383. NSS_EXTERN PRInt32
  2384. nssPKIXRDNSequence_GetRelativeDistinguishedNameCount
  2385. (
  2386.   NSSPKIXRDNSequence *rdnseq
  2387. );
  2388. /*
  2389.  * nssPKIXRDNSequence_GetRelativeDistinguishedNames
  2390.  *
  2391.  * This routine returns all of the relative distinguished names in the
  2392.  * specified RDN Sequence.  {...} If the array is allocated, or if the
  2393.  * specified one has extra space, the array will be null-terminated.
  2394.  *
  2395.  * The error may be one of the following values:
  2396.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2397.  *  NSS_ERROR_INVALID_ARENA
  2398.  *  NSS_ERROR_NO_MEMORY
  2399.  *  NSS_ERROR_ARRAY_TOO_SMALL
  2400.  *
  2401.  * Return value:
  2402.  *  A valid pointer to an array of NSSPKIXRelativeDistinguishedName 
  2403.  *      pointers upon success
  2404.  *  NULL upon failure.
  2405.  */
  2406. NSS_EXTERN NSSPKIXRelativeDistinguishedName **
  2407. nssPKIXRDNSequence_GetRelativeDistinguishedNames
  2408. (
  2409.   NSSPKIXRDNSequence *rdnseq,
  2410.   NSSPKIXRelativeDistinguishedName *rvOpt[],
  2411.   PRInt32 limit,
  2412.   NSSArena *arenaOpt
  2413. );
  2414. /*
  2415.  * nssPKIXRDNSequence_SetRelativeDistinguishedNames
  2416.  *
  2417.  * -- fgmr comments --
  2418.  * If the array pointer itself is null, the set is considered empty.
  2419.  * If the count is zero but the pointer nonnull, the array will be
  2420.  * assumed to be null-terminated.
  2421.  *
  2422.  * The error may be one of the following values:
  2423.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2424.  *  NSS_ERROR_INVALID_PKIX_RDN
  2425.  *
  2426.  * Return value:
  2427.  *  PR_SUCCESS upon success
  2428.  *  PR_FAILURE upon failure
  2429.  */
  2430. NSS_EXTERN PRStatus
  2431. nssPKIXRDNSequence_SetRelativeDistinguishedNames
  2432. (
  2433.   NSSPKIXRDNSequence *rdnseq,
  2434.   NSSPKIXRelativeDistinguishedName *rdns[],
  2435.   PRInt32 countOpt
  2436. );
  2437. /*
  2438.  * nssPKIXRDNSequence_GetRelativeDistinguishedName
  2439.  *
  2440.  * -- fgmr comments --
  2441.  *
  2442.  * The error may be one of the following values:
  2443.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2444.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2445.  *  NSS_ERROR_NO_MEMORY
  2446.  *  NSS_ERROR_INVALID_ARENA
  2447.  *
  2448.  * Return value:
  2449.  *  A valid pointer to an NSSPKIXRelativeDistinguishedName upon success
  2450.  *  NULL upon failure
  2451.  */
  2452. NSS_EXTERN NSSPKIXRelativeDistinguishedName *
  2453. nssPKIXRDNSequence_GetRelativeDistinguishedName
  2454. (
  2455.   NSSPKIXRDNSequence *rdnseq,
  2456.   PRInt32 i,
  2457.   NSSArena *arenaOpt
  2458. );
  2459. /*
  2460.  * nssPKIXRDNSequence_SetRelativeDistinguishedName
  2461.  *
  2462.  * -- fgmr comments --
  2463.  *
  2464.  * The error may be one of the following values:
  2465.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2466.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2467.  *  NSS_ERROR_INVALID_PKIX_RDN
  2468.  *  NSS_ERROR_NO_MEMORY
  2469.  *
  2470.  * Return value:
  2471.  *  PR_SUCCESS upon success
  2472.  *  PR_FAILURE upon failure
  2473.  */
  2474. NSS_EXTERN PRStatus
  2475. nssPKIXRDNSequence_SetRelativeDistinguishedName
  2476. (
  2477.   NSSPKIXRDNSequence *rdnseq,
  2478.   PRInt32 i,
  2479.   NSSPKIXRelativeDistinguishedName *rdn
  2480. );
  2481. /*
  2482.  * nssPKIXRDNSequence_AppendRelativeDistinguishedName
  2483.  *
  2484.  * -- fgmr comments --
  2485.  *
  2486.  * The error may be one of the following values:
  2487.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2488.  *  NSS_ERROR_INVALID_PKIX_RDN
  2489.  *  NSS_ERROR_NO_MEMORY
  2490.  *
  2491.  * Return value:
  2492.  *  PR_SUCCESS upon success
  2493.  *  PR_FAILURE upon failure
  2494.  */
  2495. NSS_EXTERN PRStatus
  2496. nssPKIXRDNSequence_AppendRelativeDistinguishedName
  2497. (
  2498.   NSSPKIXRDNSequence *rdnseq,
  2499.   NSSPKIXRelativeDistinguishedName *rdn
  2500. );
  2501. /*
  2502.  * nssPKIXRDNSequence_InsertRelativeDistinguishedName
  2503.  *
  2504.  * -- fgmr comments --
  2505.  *
  2506.  * The error may be one of the following values:
  2507.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2508.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2509.  *  NSS_ERROR_INVALID_PKIX_RDN
  2510.  *  NSS_ERROR_NO_MEMORY
  2511.  *
  2512.  * Return value:
  2513.  *  PR_SUCCESS upon success
  2514.  *  PR_FAILURE upon failure
  2515.  */
  2516. NSS_EXTERN PRStatus
  2517. nssPKIXRDNSequence_InsertRelativeDistinguishedName
  2518. (
  2519.   NSSPKIXRDNSequence *rdnseq,
  2520.   PRInt32 i,
  2521.   NSSPKIXRelativeDistinguishedName *rdn
  2522. );
  2523. /*
  2524.  * nssPKIXRDNSequence_RemoveRelativeDistinguishedName
  2525.  *
  2526.  * -- fgmr comments --
  2527.  *
  2528.  * The error may be one of the following values:
  2529.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2530.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2531.  *
  2532.  * Return value:
  2533.  *  PR_SUCCESS upon success
  2534.  *  PR_FAILURE upon failure
  2535.  */
  2536. NSS_EXTERN PRStatus
  2537. nssPKIXRDNSequence_RemoveRelativeDistinguishedName
  2538. (
  2539.   NSSPKIXRDNSequence *rdnseq,
  2540.   PRInt32 i
  2541. );
  2542. /*
  2543.  * nssPKIXRDNSequence_FindRelativeDistinguishedName
  2544.  *
  2545.  * -- fgmr comments --
  2546.  *
  2547.  * The error may be one of the following values:
  2548.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2549.  *  NSS_ERROR_INVALID_PKIX_RDN
  2550.  *  NSS_ERROR_NOT_FOUND
  2551.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2552.  *
  2553.  * Return value:
  2554.  *  The index of the specified attribute value upon success
  2555.  *  -1 upon failure.
  2556.  */
  2557. NSS_EXTERN PRInt32
  2558. nssPKIXRDNSequence_FindRelativeDistinguishedName
  2559. (
  2560.   NSSPKIXRDNSequence *rdnseq,
  2561.   NSSPKIXRelativeDistinguishedName *rdn
  2562. );
  2563. /*
  2564.  * nssPKIXRDNSequence_Equal
  2565.  *
  2566.  * -- fgmr comments --
  2567.  *
  2568.  * The error may be one of the following values:
  2569.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2570.  *
  2571.  * Return value:
  2572.  *  PR_TRUE if the two objects have equal values
  2573.  *  PR_FALSE otherwise
  2574.  *  PR_FALSE upon error
  2575.  */
  2576. NSS_EXTERN PRBool
  2577. nssPKIXRDNSequence_Equal
  2578. (
  2579.   NSSPKIXRDNSequence *one,
  2580.   NSSPKIXRDNSequence *two,
  2581.   PRStatus *statusOpt
  2582. );
  2583. /*
  2584.  * nssPKIXRDNSequence_Duplicate
  2585.  *
  2586.  * -- fgmr comments --
  2587.  *
  2588.  * The error may be one of the following values:
  2589.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2590.  *  NSS_ERROR_INVALID_ARENA
  2591.  *  NSS_ERROR_NO_MEMORY
  2592.  *
  2593.  * Return value:
  2594.  *  A valid pointer to an NSSPKIXRDNSequence upon success
  2595.  *  NULL upon failure
  2596.  */
  2597. NSS_EXTERN NSSPKIXRDNSequence *
  2598. nssPKIXRDNSequence_Duplicate
  2599. (
  2600.   NSSPKIXRDNSequence *rdnseq,
  2601.   NSSArena *arenaOpt
  2602. );
  2603. #ifdef DEBUG
  2604. /*
  2605.  * nssPKIXRDNSequence_verifyPointer
  2606.  *
  2607.  * This method is only present in debug builds.
  2608.  *
  2609.  * If the specified pointer is a valid pointer to an NSSPKIXRDNSequence
  2610.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  2611.  * put an error on the error stack and return PR_FAILURE.
  2612.  *
  2613.  * The error may be one of the following values:
  2614.  *  NSS_ERROR_INVALID_PKIX_RDN_SEQUENCE
  2615.  *
  2616.  * Return value:
  2617.  *  PR_SUCCESS if the pointer is valid
  2618.  *  PR_FAILURE if it isn't
  2619.  */
  2620. NSS_EXTERN PRStatus
  2621. nssPKIXRDNSequence_verifyPointer
  2622. (
  2623.   NSSPKIXRDNSequence *p
  2624. );
  2625. #endif /* DEBUG */
  2626. /*
  2627.  * DistinguishedName
  2628.  *
  2629.  * -- fgmr comments --
  2630.  *
  2631.  * From RFC 2459:
  2632.  *
  2633.  *  DistinguishedName       ::=   RDNSequence
  2634.  *
  2635.  * This is just a public typedef; no new methods are required. {fgmr-- right?}
  2636.  */
  2637. /*
  2638.  * RelativeDistinguishedName
  2639.  *
  2640.  * This structure contains an unordered set of AttributeTypeAndValue 
  2641.  * objects.  RDNs are used to distinguish a set of objects underneath 
  2642.  * a common object.
  2643.  *
  2644.  * Often, a single ATAV is sufficient to make a unique distinction.
  2645.  * For example, if a company assigns its people unique uid values,
  2646.  * then in the Name "uid=smith,ou=People,o=Acme,c=US" the "uid=smith"
  2647.  * ATAV by itself forms an RDN.  However, sometimes a set of ATAVs is
  2648.  * needed.  For example, if a company needed to distinguish between
  2649.  * two Smiths by specifying their corporate divisions, then in the
  2650.  * Name "(cn=Smith,ou=Sales),ou=People,o=Acme,c=US" the parenthesised
  2651.  * set of ATAVs forms the RDN.
  2652.  *
  2653.  * From RFC 2459:
  2654.  *
  2655.  *  RelativeDistinguishedName  ::=
  2656.  *                      SET SIZE (1 .. MAX) OF AttributeTypeAndValue
  2657.  *
  2658.  * The private calls for this type:
  2659.  *
  2660.  *  nssPKIXRelativeDistinguishedName_Decode
  2661.  *  nssPKIXRelativeDistinguishedName_CreateFromUTF8
  2662.  *  nssPKIXRelativeDistinguishedName_Create
  2663.  *  nssPKIXRelativeDistinguishedName_CreateFromArray
  2664.  *  nssPKIXRelativeDistinguishedName_Destroy
  2665.  *  nssPKIXRelativeDistinguishedName_Encode
  2666.  *  nssPKIXRelativeDistinguishedName_GetUTF8Encoding
  2667.  *  nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValueCount
  2668.  *  nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValues
  2669.  *  nssPKIXRelativeDistinguishedName_SetAttributeTypeAndValues
  2670.  *  nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValue
  2671.  *  nssPKIXRelativeDistinguishedName_SetAttributeTypeAndValue
  2672.  *  nssPKIXRelativeDistinguishedName_AddAttributeTypeAndValue
  2673.  *  nssPKIXRelativeDistinguishedName_RemoveAttributeTypeAndValue
  2674.  *  nssPKIXRelativeDistinguishedName_FindAttributeTypeAndValue
  2675.  *  nssPKIXRelativeDistinguishedName_Equal
  2676.  *  nssPKIXRelativeDistinguishedName_Duplicate
  2677.  * 
  2678.  * fgmr: Logical additional functions include
  2679.  *
  2680.  *  NSSPKIXRelativeDistinguishedName_FindAttributeTypeAndValueByType
  2681.  *    returns PRInt32
  2682.  *  NSSPKIXRelativeDistinguishedName_FindAttributeTypeAndValuesByType
  2683.  *    returns array of PRInt32
  2684.  *  NSSPKIXRelativeDistinguishedName_GetAttributeTypeAndValueForType
  2685.  *    returns NSSPKIXAttributeTypeAndValue
  2686.  *  NSSPKIXRelativeDistinguishedName_GetAttributeTypeAndValuesForType
  2687.  *    returns array of NSSPKIXAttributeTypeAndValue
  2688.  *  NSSPKIXRelativeDistinguishedName_GetAttributeValueForType
  2689.  *    returns NSSPKIXAttributeValue
  2690.  *  NSSPKIXRelativeDistinguishedName_GetAttributeValuesForType
  2691.  *    returns array of NSSPKIXAttributeValue
  2692.  *
  2693.  * NOTE: the "return array" versions are only meaningful if an RDN may
  2694.  * contain multiple ATAVs with the same type.  Verify in the RFC if
  2695.  * this is possible or not.  If not, nuke those three functions.
  2696.  *
  2697.  * In debug builds, the following call is available:
  2698.  *
  2699.  *  nssPKIXRelativeDistinguishedName_verifyPointer
  2700.  *
  2701.  */
  2702. /*
  2703.  * nssPKIXRelativeDistinguishedName_Decode
  2704.  *
  2705.  * -- fgmr comments --
  2706.  *
  2707.  * The error may be one of the following values:
  2708.  *  NSS_ERROR_INVALID_BER
  2709.  *  NSS_ERROR_NO_MEMORY
  2710.  *  NSS_ERROR_INVALID_ARENA
  2711.  *
  2712.  * Return value:
  2713.  *  A valid pointer to an NSSPKIXRelativeDistinguishedName upon success
  2714.  *  NULL upon failure
  2715.  */
  2716. NSS_EXTERN NSSPKIXRelativeDistinguishedName *
  2717. nssPKIXRelativeDistinguishedName_Decode
  2718. (
  2719.   NSSArena *arenaOpt,
  2720.   NSSBER *ber
  2721. );
  2722. /*
  2723.  * nssPKIXRelativeDistinguishedName_CreateFromUTF8
  2724.  *
  2725.  * -- fgmr comments --
  2726.  *
  2727.  * The error may be one of the following values:
  2728.  *  NSS_ERROR_NO_MEMORY
  2729.  *  NSS_ERROR_INVALID_ARENA
  2730.  *  NSS_ERROR_INVALID_STRING
  2731.  *  NSS_ERROR_UNKNOWN_ATTRIBUTE
  2732.  *
  2733.  * Return value:
  2734.  *  A valid pointer to an NSSPKIXRelativeDistinguishedName upon success
  2735.  *  NULL upon failure
  2736.  */
  2737. NSS_EXTERN NSSPKIXRelativeDistinguishedName *
  2738. nssPKIXRelativeDistinguishedName_CreateFromUTF8
  2739. (
  2740.   NSSArena *arenaOpt,
  2741.   NSSUTF8 *string
  2742. );
  2743. /*
  2744.  * nssPKIXRelativeDistinguishedName_Create
  2745.  *
  2746.  * -- fgmr comments --
  2747.  *
  2748.  * The error may be one of the following values:
  2749.  *  NSS_ERROR_NO_MEMORY
  2750.  *  NSS_ERROR_INVALID_ARENA
  2751.  *  NSS_ERROR_INVALID_ATAV
  2752.  *
  2753.  * Return value:
  2754.  *  A valid pointer to an NSSPKIXRelativeDistinguishedName upon success
  2755.  *  NULL upon failure
  2756.  */
  2757. NSS_EXTERN NSSPKIXRelativeDistinguishedName *
  2758. nssPKIXRelativeDistinguishedName_Create
  2759. (
  2760.   NSSArena *arenaOpt,
  2761.   NSSPKIXAttributeTypeAndValue *atav1,
  2762.   ...
  2763. );
  2764. /*
  2765.  * nssPKIXRelativeDistinguishedName_CreateFromArray
  2766.  *
  2767.  * -- fgmr comments --
  2768.  *
  2769.  * The error may be one of the following values:
  2770.  *  NSS_ERROR_NO_MEMORY
  2771.  *  NSS_ERROR_INVALID_ARENA
  2772.  *  NSS_ERROR_INVALID_ATAV
  2773.  *
  2774.  * Return value:
  2775.  *  A valid pointer to an NSSPKIXRelativeDistinguishedName upon success
  2776.  *  NULL upon failure
  2777.  */
  2778. NSS_EXTERN NSSPKIXRelativeDistinguishedName *
  2779. nssPKIXRelativeDistinguishedName_CreateFromArray
  2780. (
  2781.   NSSArena *arenaOpt,
  2782.   PRUint32 count,
  2783.   NSSPKIXAttributeTypeAndValue *atavs
  2784. );
  2785. /*
  2786.  * nssPKIXRelativeDistinguishedName_Destroy
  2787.  *
  2788.  * -- fgmr comments --
  2789.  *
  2790.  * The error may be one of the following values:
  2791.  *  NSS_ERROR_INVALID_PKIX_RDN
  2792.  *
  2793.  * Return value:
  2794.  *  PR_SUCCESS upon success
  2795.  *  PR_FAILURE upon failure
  2796.  */
  2797. NSS_EXTERN PRStatus
  2798. nssPKIXRelativeDistinguishedName_Destroy
  2799. (
  2800.   NSSPKIXRelativeDistinguishedName *rdn
  2801. );
  2802. /*
  2803.  * nssPKIXRelativeDistinguishedName_Encode
  2804.  *
  2805.  * -- fgmr comments --
  2806.  *
  2807.  * The error may be one of the following values:
  2808.  *  NSS_ERROR_INVALID_PKIX_RDN
  2809.  *  NSS_ERROR_INVALID_ARENA
  2810.  *  NSS_ERROR_NO_MEMORY
  2811.  *
  2812.  * Return value:
  2813.  *  A valid NSSBER pointer upon success
  2814.  *  NULL upon failure
  2815.  */
  2816. NSS_EXTERN NSSBER *
  2817. nssPKIXRelativeDistinguishedName_Encode
  2818. (
  2819.   NSSPKIXRelativeDistinguishedName *rdn,
  2820.   NSSASN1EncodingType encoding,
  2821.   NSSBER *rvOpt,
  2822.   NSSArena *arenaOpt
  2823. );
  2824. /*
  2825.  * nssPKIXRelativeDistinguishedName_GetUTF8Encoding
  2826.  *
  2827.  * -- fgmr comments --
  2828.  *
  2829.  * The error may be one of the following values:
  2830.  *  NSS_ERROR_INVALID_PKIX_RDN
  2831.  *  NSS_ERROR_INVALID_ARENA
  2832.  *  NSS_ERROR_NO_MEMORY
  2833.  *
  2834.  * Return value:
  2835.  *  A valid NSSUTF8 pointer upon success
  2836.  *  NULL upon failure
  2837.  */
  2838. NSS_EXTERN NSSUTF8 *
  2839. nssPKIXRelativeDistinguishedName_GetUTF8Encoding
  2840. (
  2841.   NSSPKIXRelativeDistinguishedName *rdn,
  2842.   NSSArena *arenaOpt
  2843. );
  2844. /*
  2845.  * nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValueCount
  2846.  *
  2847.  * -- fgmr comments --
  2848.  *
  2849.  * The error may be one of the following values:
  2850.  *  NSS_ERROR_INVALID_PKIX_RDN
  2851.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2852.  *
  2853.  * Return value:
  2854.  *  Nonnegative integer upon success
  2855.  *  -1 upon failure.
  2856.  */
  2857. NSS_EXTERN PRInt32
  2858. nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValueCount
  2859. (
  2860.   NSSPKIXRelativeDistinguishedName *rdn
  2861. );
  2862. /*
  2863.  * nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValues
  2864.  *
  2865.  * -- fgmr comments --
  2866.  *
  2867.  * The error may be one of the following values:
  2868.  *  NSS_ERROR_INVALID_PKIX_RDN
  2869.  *  NSS_ERROR_INVALID_ARENA
  2870.  *  NSS_ERROR_NO_MEMORY
  2871.  *  NSS_ERROR_ARRAY_TOO_SMALL
  2872.  *
  2873.  * Return value:
  2874.  *  A valid pointer to an array of NSSPKIXAttributeTypeAndValue 
  2875.  *      pointers upon success
  2876.  *  NULL upon failure
  2877.  */
  2878. NSS_EXTERN NSSPKIXAttributeTypeAndValue **
  2879. nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValues
  2880. (
  2881.   NSSPKIXRelativeDistinguishedName *rdn,
  2882.   NSSPKIXAttributeTypeAndValue *rvOpt[],
  2883.   PRInt32 limit,
  2884.   NSSArena *arenaOpt
  2885. );
  2886. /*
  2887.  * nssPKIXRelativeDistinguishedName_SetAttributeTypeAndValues
  2888.  *
  2889.  * -- fgmr comments --
  2890.  *
  2891.  * The error may be one of the following values:
  2892.  *  NSS_ERROR_INVALID_PKIX_RDN
  2893.  *  NSS_ERROR_INVALID_ATAV
  2894.  *
  2895.  * Return value:
  2896.  *  PR_SUCCESS upon success
  2897.  *  PR_FAILURE upon failure
  2898.  */
  2899. NSS_EXTERN PRStatus
  2900. nssPKIXRelativeDistinguishedName_SetAttributeTypeAndValues
  2901. (
  2902.   NSSPKIXRelativeDistinguishedName *rdn,
  2903.   NSSPKIXAttributeTypeAndValue *atavs[],
  2904.   PRInt32 countOpt
  2905. );
  2906. /*
  2907.  * nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValue
  2908.  *
  2909.  * -- fgmr comments --
  2910.  *
  2911.  * The error may be one of the following values:
  2912.  *  NSS_ERROR_INVALID_PKIX_RDN
  2913.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2914.  *  NSS_ERROR_NO_MEMORY
  2915.  *  NSS_ERROR_INVALID_ARENA
  2916.  *
  2917.  * Return value:
  2918.  *  A valid pointer to an NSSPKIXAttributeTypeAndValue upon success
  2919.  *  NULL upon failure
  2920.  */
  2921. NSS_EXTERN NSSPKIXAttributeTypeAndValue *
  2922. nssPKIXRelativeDistinguishedName_GetAttributeTypeAndValue
  2923. (
  2924.   NSSPKIXRelativeDistinguishedName *rdn,
  2925.   PRInt32 i,
  2926.   NSSArena *arenaOpt
  2927. );
  2928. /*
  2929.  * nssPKIXRelativeDistinguishedName_SetAttributeTypeAndValue
  2930.  *
  2931.  * -- fgmr comments --
  2932.  *
  2933.  * The error may be one of the following values:
  2934.  *  NSS_ERROR_INVALID_PKIX_RDN
  2935.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2936.  *  NSS_ERROR_INVALID_PKIX_ATAV
  2937.  *  NSS_ERROR_NO_MEMORY
  2938.  *
  2939.  * Return value:
  2940.  *  PR_SUCCESS upon success
  2941.  *  PR_FAILURE upon failure
  2942.  */
  2943. NSS_EXTERN PRStatus
  2944. nssPKIXRelativeDistinguishedName_SetAttributeTypeAndValue
  2945. (
  2946.   NSSPKIXRelativeDistinguishedName *rdn,
  2947.   PRInt32 i,
  2948.   NSSPKIXAttributeTypeAndValue *atav
  2949. );
  2950. /*
  2951.  * nssPKIXRelativeDistinguishedName_AddAttributeTypeAndValue
  2952.  *
  2953.  * -- fgmr comments --
  2954.  *
  2955.  * The error may be one of the following values:
  2956.  *  NSS_ERROR_INVALID_PKIX_RDN
  2957.  *  NSS_ERROR_INVALID_PKIX_ATAV
  2958.  *  NSS_ERROR_NO_MEMORY
  2959.  *
  2960.  * Return value:
  2961.  *  PR_SUCCESS upon success
  2962.  *  PR_FAILURE upon failure
  2963.  */
  2964. NSS_EXTERN PRStatus
  2965. nssPKIXRelativeDistinguishedName_AddAttributeTypeAndValue
  2966. (
  2967.   NSSPKIXRelativeDistinguishedName *rdn,
  2968.   NSSPKIXAttributeTypeAndValue *atav
  2969. );
  2970. /*
  2971.  * nssPKIXRelativeDistinguishedName_RemoveAttributeTypeAndValue
  2972.  *
  2973.  * -- fgmr comments --
  2974.  *
  2975.  * The error may be one of the following values:
  2976.  *  NSS_ERROR_INVALID_PKIX_RDN
  2977.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  2978.  *  NSS_ERROR_AT_MINIMUM
  2979.  *
  2980.  * Return value:
  2981.  *  PR_SUCCESS upon success
  2982.  *  PR_FAILURE upon failure
  2983.  */
  2984. NSS_EXTERN PRStatus
  2985. nssPKIXRelativeDistinguishedName_RemoveAttributeTypeAndValue
  2986. (
  2987.   NSSPKIXRelativeDistinguishedName *rdn,
  2988.   PRInt32 i
  2989. );
  2990. /*
  2991.  * nssPKIXRelativeDistinguishedName_FindAttributeTypeAndValue
  2992.  *
  2993.  * -- fgmr comments --
  2994.  *
  2995.  * The error may be one of the following values:
  2996.  *  NSS_ERROR_INVALID_PKIX_RDN
  2997.  *  NSS_ERROR_INVALID_PKIX_ATAV
  2998.  *  NSS_ERROR_NOT_FOUND
  2999.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  3000.  *
  3001.  * Return value:
  3002.  *  The index of the specified attribute value upon success
  3003.  *  -1 upon failure.
  3004.  */
  3005. NSS_EXTERN PRInt32
  3006. nssPKIXRelativeDistinguishedName_FindAttributeTypeAndValue
  3007. (
  3008.   NSSPKIXRelativeDistinguishedName *rdn,
  3009.   NSSPKIXAttributeTypeAndValue *atav
  3010. );
  3011. /*
  3012.  * nssPKIXRelativeDistinguishedName_Equal
  3013.  *
  3014.  * -- fgmr comments --
  3015.  *
  3016.  * The error may be one of the following values:
  3017.  *  NSS_ERROR_INVALID_PKIX_RDN
  3018.  *
  3019.  * Return value:
  3020.  *  PR_TRUE if the two objects have equal values
  3021.  *  PR_FALSE otherwise
  3022.  *  PR_FALSE upon error
  3023.  */
  3024. NSS_EXTERN PRBool
  3025. nssPKIXRelativeDistinguishedName_Equal
  3026. (
  3027.   NSSPKIXRelativeDistinguishedName *one,
  3028.   NSSPKIXRelativeDistinguishedName *two,
  3029.   PRStatus *statusOpt
  3030. );
  3031. /*
  3032.  * nssPKIXRelativeDistinguishedName_Duplicate
  3033.  *
  3034.  * -- fgmr comments --
  3035.  *
  3036.  * The error may be one of the following values:
  3037.  *  NSS_ERROR_INVALID_PKIX_RDN
  3038.  *  NSS_ERROR_INVALID_ARENA
  3039.  *  NSS_ERROR_NO_MEMORY
  3040.  *
  3041.  * Return value:
  3042.  *  A valid pointer to an NSSPKIXRelativeDistinguishedName upon success
  3043.  *  NULL upon failure
  3044.  */
  3045. NSS_EXTERN NSSPKIXRelativeDistinguishedName *
  3046. nssPKIXRelativeDistinguishedName_Duplicate
  3047. (
  3048.   NSSPKIXRelativeDistinguishedName *rdn,
  3049.   NSSArena *arenaOpt
  3050. );
  3051. #ifdef DEBUG
  3052. /*
  3053.  * nssPKIXRelativeDistinguishedName_verifyPointer
  3054.  *
  3055.  * This method is only present in debug builds.
  3056.  *
  3057.  * If the specified pointer is a valid pointer to an NSSPKIXRelativeDistinguishedName
  3058.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  3059.  * put an error on the error stack and return PR_FAILURE.
  3060.  *
  3061.  * The error may be one of the following values:
  3062.  *  NSS_ERROR_INVALID_PKIX_RELATIVE_DISTINGUISHED_NAME
  3063.  *
  3064.  * Return value:
  3065.  *  PR_SUCCESS if the pointer is valid
  3066.  *  PR_FAILURE if it isn't
  3067.  */
  3068. NSS_EXTERN PRStatus
  3069. nssPKIXRelativeDistinguishedName_verifyPointer
  3070. (
  3071.   NSSPKIXRelativeDistinguishedName *p
  3072. );
  3073. #endif /* DEBUG */
  3074. /*
  3075.  * DirectoryString
  3076.  *
  3077.  * -- fgmr comments --
  3078.  *
  3079.  * From RFC 2459:
  3080.  *
  3081.  *  DirectoryString ::= CHOICE {
  3082.  *        teletexString             TeletexString (SIZE (1..MAX)),
  3083.  *        printableString           PrintableString (SIZE (1..MAX)),
  3084.  *        universalString           UniversalString (SIZE (1..MAX)),
  3085.  *        utf8String              UTF8String (SIZE (1..MAX)),
  3086.  *        bmpString               BMPString (SIZE(1..MAX))   }
  3087.  *
  3088.  * The private calls for this type:
  3089.  *
  3090.  *  nssPKIXDirectoryString_Decode
  3091.  *  nssPKIXDirectoryString_CreateFromUTF8
  3092.  *  nssPKIXDirectoryString_Encode
  3093.  *
  3094.  */
  3095. /*
  3096.  * nssPKIXDirectoryString_Decode
  3097.  *
  3098.  * -- fgmr comments --
  3099.  *
  3100.  * The error may be one of the following values:
  3101.  *  NSS_ERROR_INVALID_BER
  3102.  *  NSS_ERROR_NO_MEMORY
  3103.  *  NSS_ERROR_INVALID_ARENA
  3104.  * 
  3105.  * Return value:
  3106.  *  A valid pointer to an NSSPKIXDirectoryString upon success
  3107.  *  NULL upon failure
  3108.  */
  3109. NSS_EXTERN NSSPKIXDirectoryString *
  3110. nssPKIXDirectoryString_Decode
  3111. (
  3112.   NSSArena *arenaOpt,
  3113.   NSSBER *ber
  3114. );
  3115. /*
  3116.  * nssPKIXDirectoryString_CreateFromUTF8
  3117.  *
  3118.  * { basically just enforces the length limit }
  3119.  *
  3120.  * The error may be one of the following values:
  3121.  *  NSS_ERROR_INVALID_BER
  3122.  *  NSS_ERROR_NO_MEMORY
  3123.  *  NSS_ERROR_INVALID_ARENA
  3124.  * 
  3125.  * Return value:
  3126.  *  A valid pointer to an NSSPKIXDirectoryString upon success
  3127.  *  NULL upon failure
  3128.  */
  3129. NSS_EXTERN NSSPKIXDirectoryString *
  3130. nssPKIXDirectoryString_CreateFromUTF8
  3131. (
  3132.   NSSArena *arenaOpt,
  3133.   NSSUTF8 *utf8
  3134. );
  3135. /*
  3136.  * nssPKIXDirectoryString_Encode
  3137.  *
  3138.  *
  3139.  *
  3140.  * The error may be one of the following values:
  3141.  *  NSS_ERROR_INVALID_DIRECTORY_STRING
  3142.  *  NSS_ERROR_NO_MEMORY
  3143.  *
  3144.  * Return value:
  3145.  *  A valid NSSBER pointer upon success
  3146.  *  NULL upon failure
  3147.  */
  3148. NSS_EXTERN NSSBER *
  3149. nssPKIXDirectoryString_Encode
  3150. (
  3151.   NSSPKIXDirectoryString *name,
  3152.   NSSASN1EncodingType encoding,
  3153.   NSSBER *rvOpt,
  3154.   NSSArena *arenaOpt
  3155. );
  3156. /*
  3157.  * Certificate
  3158.  *
  3159.  * -- fgmr comments --
  3160.  *
  3161.  * From RFC 2459:
  3162.  *
  3163.  *  Certificate  ::=  SEQUENCE  {
  3164.  *       tbsCertificate       TBSCertificate,
  3165.  *       signatureAlgorithm   AlgorithmIdentifier,
  3166.  *       signature            BIT STRING  }
  3167.  *
  3168.  * The private calls for this type:
  3169.  *
  3170.  *  nssPKIXCertificate_Decode
  3171.  *  nssPKIXCertificate_Create
  3172.  *  nssPKIXCertificate_Destroy
  3173.  *  nssPKIXCertificate_Encode
  3174.  *  nssPKIXCertificate_GetTBSCertificate
  3175.  *  nssPKIXCertificate_SetTBSCertificate
  3176.  *  nssPKIXCertificate_GetAlgorithmIdentifier
  3177.  *  nssPKIXCertificate_SetAlgorithmIdentifier
  3178.  *  nssPKIXCertificate_GetSignature
  3179.  *  nssPKIXCertificate_SetSignature
  3180.  *  nssPKIXCertificate_Equal
  3181.  *  nssPKIXCertificate_Duplicate
  3182.  *
  3183.  *  { inherit TBSCertificate gettors? }
  3184.  * 
  3185.  * In debug builds, the following call is available:
  3186.  *
  3187.  *  nssPKIXCertificate_verifyPointer
  3188.  *
  3189.  */
  3190. /*
  3191.  * nssPKIXCertificate_Decode
  3192.  *
  3193.  * -- fgmr comments --
  3194.  *
  3195.  * The error may be one of the following values:
  3196.  *  NSS_ERROR_INVALID_BER
  3197.  *  NSS_ERROR_NO_MEMORY
  3198.  *  NSS_ERROR_INVALID_ARENA
  3199.  *
  3200.  * Return value:
  3201.  *  A valid pointer to an NSSPKIXCertificate upon success
  3202.  *  NULL upon failure
  3203.  */
  3204. NSS_EXTERN NSSPKIXCertificate *
  3205. nssPKIXCertificate_Decode
  3206. (
  3207.   NSSArena *arenaOpt,
  3208.   NSSBER *ber
  3209. );
  3210. /*
  3211.  * nssPKIXCertificate_Create
  3212.  *
  3213.  * -- fgmr comments --
  3214.  * { at this level we'll have to just accept a specified signature }
  3215.  *
  3216.  * The error may be one of the following values:
  3217.  *  NSS_ERROR_NO_MEMORY
  3218.  *  NSS_ERROR_INVALID_ARENA
  3219.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3220.  *  NSS_ERROR_INVALID_PKIX_ALGID
  3221.  *  NSS_ERROR_INVALID_PKIX_ITEM
  3222.  *
  3223.  * Return value:
  3224.  *  A valid pointer to an NSSPKIXCertificate upon success
  3225.  *  NULL upon failure
  3226.  */
  3227. NSS_EXTERN NSSPKIXCertificate *
  3228. nssPKIXCertificate_Create
  3229. (
  3230.   NSSArena *arenaOpt,
  3231.   NSSPKIXTBSCertificate *tbsCert,
  3232.   NSSPKIXAlgorithmIdentifier *algID,
  3233.   NSSItem *signature
  3234. );
  3235. /*
  3236.  * nssPKIXCertificate_Destroy
  3237.  *
  3238.  * -- fgmr comments --
  3239.  *
  3240.  * The error may be one of the following values:
  3241.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3242.  *
  3243.  * Return value:
  3244.  *  PR_SUCCESS upon success
  3245.  *  PR_FAILURE upon failure
  3246.  */
  3247. NSS_EXTERN PRStatus
  3248. nssPKIXCertificate_Destroy
  3249. (
  3250.   NSSPKIXCertificate *cert
  3251. );
  3252. /*
  3253.  * nssPKIXCertificate_Encode
  3254.  *
  3255.  * -- fgmr comments --
  3256.  *
  3257.  * The error may be one of the following values:
  3258.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3259.  *  NSS_ERROR_INVALID_ARENA
  3260.  *  NSS_ERROR_NO_MEMORY
  3261.  *
  3262.  * Return value:
  3263.  *  A valid NSSBER pointer upon success
  3264.  *  NULL upon failure
  3265.  */
  3266. NSS_EXTERN NSSBER *
  3267. nssPKIXCertificate_Encode
  3268. (
  3269.   NSSPKIXCertificate *cert,
  3270.   NSSASN1EncodingType encoding,
  3271.   NSSBER *rvOpt,
  3272.   NSSArena *arenaOpt
  3273. );
  3274. /*
  3275.  * nssPKIXCertificate_GetTBSCertificate
  3276.  *
  3277.  * -- fgmr comments --
  3278.  *
  3279.  * The error may be one of the following values:
  3280.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3281.  *  NSS_ERROR_INVALID_ARENA
  3282.  *  NSS_ERROR_NO_MEMORY
  3283.  *
  3284.  * Return value:
  3285.  *  A valid pointer to an NSSPKIXTBSCertificate upon success
  3286.  *  NULL upon failure
  3287.  */
  3288. NSS_EXTERN NSSPKIXTBSCertificate *
  3289. nssPKIXCertificate_GetTBSCertificate
  3290. (
  3291.   NSSPKIXCertificate *cert,
  3292.   NSSArena *arenaOpt
  3293. );
  3294. /*
  3295.  * nssPKIXCertificate_SetTBSCertificate
  3296.  *
  3297.  * -- fgmr comments --
  3298.  *
  3299.  * The error may be one of the following values:
  3300.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3301.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3302.  *  NSS_ERROR_NO_MEMORY
  3303.  *
  3304.  * Return value:
  3305.  *  PR_SUCCESS upon success
  3306.  *  PR_FAILURE upon failure
  3307.  */
  3308. NSS_EXTERN PRStatus
  3309. nssPKIXCertificate_SetTBSCertificate
  3310. (
  3311.   NSSPKIXCertificate *cert,
  3312.   NSSPKIXTBSCertificate *tbsCert
  3313. );
  3314. /*
  3315.  * nssPKIXCertificate_GetAlgorithmIdentifier
  3316.  *
  3317.  * -- fgmr comments --
  3318.  *
  3319.  * The error may be one of the following values:
  3320.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3321.  *  NSS_ERROR_INVALID_ARENA
  3322.  *  NSS_ERROR_NO_MEMORY
  3323.  *
  3324.  * Return value:
  3325.  *  A valid pointer to an NSSPKIXAlgorithmIdentifier upon success
  3326.  *  NULL upon failure
  3327.  */
  3328. NSS_EXTERN NSSPKIXAlgorithmIdentifier *
  3329. nssPKIXCertificate_GetAlgorithmIdentifier
  3330. (
  3331.   NSSPKIXCertificate *cert,
  3332.   NSSArena *arenaOpt
  3333. );
  3334. /*
  3335.  * nssPKIXCertificate_SetAlgorithmIdentifier
  3336.  *
  3337.  * -- fgmr comments --
  3338.  *
  3339.  * The error may be one of the following values:
  3340.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3341.  *  NSS_ERROR_INVALID_PKIX_ALGORITHM_IDENTIFIER
  3342.  *  NSS_ERROR_NO_MEMORY
  3343.  *
  3344.  * Return value:
  3345.  *  PR_SUCCESS upon success
  3346.  *  PR_FAILURE upon failure
  3347.  */
  3348. NSS_EXTERN PRStatus
  3349. nssPKIXCertificate_SetAlgorithmIdentifier
  3350. (
  3351.   NSSPKIXCertificate *cert,
  3352.   NSSPKIXAlgorithmIdentifier *algid,
  3353. );
  3354. /*
  3355.  * nssPKIXCertificate_GetSignature
  3356.  *
  3357.  * -- fgmr comments --
  3358.  *
  3359.  * The error may be one of the following values:
  3360.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3361.  *  NSS_ERROR_INVALID_ARENA
  3362.  *  NSS_ERROR_NO_MEMORY
  3363.  *
  3364.  * Return value:
  3365.  *  A valid pointer to an NSSItem upon success
  3366.  *  NULL upon failure
  3367.  */
  3368. NSS_EXTERN NSSItem *
  3369. nssPKIXCertificate_GetSignature
  3370. (
  3371.   NSSPKIXCertificate *cert,
  3372.   NSSItem *rvOpt,
  3373.   NSSArena *arenaOpt
  3374. );
  3375. /*
  3376.  * nssPKIXCertificate_SetSignature
  3377.  *
  3378.  * -- fgmr comments --
  3379.  *
  3380.  * The error may be one of the following values:
  3381.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3382.  *  NSS_ERROR_INVALID_POINTER
  3383.  *  NSS_ERROR_NO_MEMORY
  3384.  *
  3385.  * Return value:
  3386.  *  PR_SUCCESS upon success
  3387.  *  PR_FAILURE upon failure
  3388.  */
  3389. NSS_EXTERN PRStatus
  3390. nssPKIXCertificate_SetSignature
  3391. (
  3392.   NSSPKIXCertificate *cert,
  3393.   NSSItem *signature
  3394. );
  3395. /*
  3396.  * nssPKIXCertificate_Equal
  3397.  *
  3398.  * -- fgmr comments --
  3399.  *
  3400.  * The error may be one of the following values:
  3401.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3402.  *
  3403.  * Return value:
  3404.  *  PR_TRUE if the two objects have equal values
  3405.  *  PR_FALSE otherwise
  3406.  *  PR_FALSE upon error
  3407.  */
  3408. NSS_EXTERN PRBool
  3409. nssPKIXCertificate_Equal
  3410. (
  3411.   NSSPKIXCertificate *one,
  3412.   NSSPKIXCertificate *two,
  3413.   PRStatus *statusOpt
  3414. );
  3415. /*
  3416.  * nssPKIXCertificate_Duplicate
  3417.  *
  3418.  * -- fgmr comments --
  3419.  *
  3420.  * The error may be one of the following values:
  3421.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3422.  *  NSS_ERROR_INVALID_ARENA
  3423.  *  NSS_ERROR_NO_MEMORY
  3424.  *
  3425.  * Return value:
  3426.  *  A valid pointer to an NSSPKIXCertificate upon success
  3427.  *  NULL upon failure
  3428.  */
  3429. NSS_EXTERN NSSPKIXCertificate *
  3430. nssPKIXCertificate_Duplicate
  3431. (
  3432.   NSSPKIXCertificate *cert,
  3433.   NSSArena *arenaOpt
  3434. );
  3435. #ifdef DEBUG
  3436. /*
  3437.  * nssPKIXCertificate_verifyPointer
  3438.  *
  3439.  * This method is only present in debug builds.
  3440.  *
  3441.  * If the specified pointer is a valid pointer to an NSSPKIXCertificate
  3442.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  3443.  * put an error on the error stack and return PR_FAILURE.
  3444.  *
  3445.  * The error may be one of the following values:
  3446.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE
  3447.  *
  3448.  * Return value:
  3449.  *  PR_SUCCESS if the pointer is valid
  3450.  *  PR_FAILURE if it isn't
  3451.  */
  3452. NSS_EXTERN PRStatus
  3453. nssPKIXCertificate_verifyPointer
  3454. (
  3455.   NSSPKIXCertificate *p
  3456. );
  3457. #endif /* DEBUG */
  3458. /*
  3459.  * TBSCertificate
  3460.  *
  3461.  * -- fgmr comments --
  3462.  *
  3463.  * From RFC 2459:
  3464.  *
  3465.  *  TBSCertificate  ::=  SEQUENCE  {
  3466.  *       version         [0]  Version DEFAULT v1,
  3467.  *       serialNumber         CertificateSerialNumber,
  3468.  *       signature            AlgorithmIdentifier,
  3469.  *       issuer               Name,
  3470.  *       validity             Validity,
  3471.  *       subject              Name,
  3472.  *       subjectPublicKeyInfo SubjectPublicKeyInfo,
  3473.  *       issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
  3474.  *                            -- If present, version shall be v2 or v3
  3475.  *       subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
  3476.  *                            -- If present, version shall be v2 or v3
  3477.  *       extensions      [3]  Extensions OPTIONAL
  3478.  *                            -- If present, version shall be v3 --  }
  3479.  *
  3480.  * The private calls for this type:
  3481.  *
  3482.  *  nssPKIXTBSCertificate_Decode
  3483.  *  nssPKIXTBSCertificate_Create
  3484.  *  nssPKIXTBSCertificate_Destroy
  3485.  *  nssPKIXTBSCertificate_Encode
  3486.  *  nssPKIXTBSCertificate_GetVersion
  3487.  *  nssPKIXTBSCertificate_SetVersion
  3488.  *  nssPKIXTBSCertificate_GetSerialNumber
  3489.  *  nssPKIXTBSCertificate_SetSerialNumber
  3490.  *  nssPKIXTBSCertificate_GetSignature
  3491.  *  nssPKIXTBSCertificate_SetSignature
  3492.  *    { inherit algid gettors? }
  3493.  *  nssPKIXTBSCertificate_GetIssuer
  3494.  *  nssPKIXTBSCertificate_SetIssuer
  3495.  *    { inherit "helper" issuer gettors? }
  3496.  *  nssPKIXTBSCertificate_GetValidity
  3497.  *  nssPKIXTBSCertificate_SetValidity
  3498.  *    { inherit validity accessors }
  3499.  *  nssPKIXTBSCertificate_GetSubject
  3500.  *  nssPKIXTBSCertificate_SetSubject
  3501.  *  nssPKIXTBSCertificate_GetSubjectPublicKeyInfo
  3502.  *  nssPKIXTBSCertificate_SetSubjectPublicKeyInfo
  3503.  *  nssPKIXTBSCertificate_HasIssuerUniqueID
  3504.  *  nssPKIXTBSCertificate_GetIssuerUniqueID
  3505.  *  nssPKIXTBSCertificate_SetIssuerUniqueID
  3506.  *  nssPKIXTBSCertificate_RemoveIssuerUniqueID
  3507.  *  nssPKIXTBSCertificate_HasSubjectUniqueID
  3508.  *  nssPKIXTBSCertificate_GetSubjectUniqueID
  3509.  *  nssPKIXTBSCertificate_SetSubjectUniqueID
  3510.  *  nssPKIXTBSCertificate_RemoveSubjectUniqueID
  3511.  *  nssPKIXTBSCertificate_HasExtensions
  3512.  *  nssPKIXTBSCertificate_GetExtensions
  3513.  *  nssPKIXTBSCertificate_SetExtensions
  3514.  *  nssPKIXTBSCertificate_RemoveExtensions
  3515.  *    { extension accessors }
  3516.  *  nssPKIXTBSCertificate_Equal
  3517.  *  nssPKIXTBSCertificate_Duplicate
  3518.  * 
  3519.  * In debug builds, the following call is available:
  3520.  *
  3521.  *  nssPKIXTBSCertificate_verifyPointer
  3522.  */
  3523. /*
  3524.  * nssPKIXTBSCertificate_Decode
  3525.  *
  3526.  * -- fgmr comments --
  3527.  *
  3528.  * The error may be one of the following values:
  3529.  *  NSS_ERROR_INVALID_BER
  3530.  *  NSS_ERROR_NO_MEMORY
  3531.  *  NSS_ERROR_INVALID_ARENA
  3532.  *
  3533.  * Return value:
  3534.  *  A valid pointer to an NSSPKIXTBSCertificate upon success
  3535.  *  NULL upon failure
  3536.  */
  3537. NSS_EXTERN NSSPKIXTBSCertificate *
  3538. nssPKIXTBSCertificate_Decode
  3539. (
  3540.   NSSArena *arenaOpt,
  3541.   NSSBER *ber
  3542. );
  3543. /*
  3544.  * nssPKIXTBSCertificate_Create
  3545.  *
  3546.  * -- fgmr comments --
  3547.  *
  3548.  * The error may be one of the following values:
  3549.  *  NSS_ERROR_NO_MEMORY
  3550.  *  NSS_ERROR_INVALID_ARENA
  3551.  *  NSS_ERROR_INVALID_PKIX_VERSION
  3552.  *  NSS_ERROR_INVALID_PKIX_CERTIFICATE_SERIAL_NUMBER
  3553.  *  NSS_ERROR_INVALID_PKIX_ALGORITHM_IDENTIFIER
  3554.  *  NSS_ERROR_INVALID_ISSUER_NAME
  3555.  *  NSS_ERROR_INVALID_VALIDITY
  3556.  *  NSS_ERROR_INVALID_SUBJECT_NAME
  3557.  *  NSS_ERROR_INVALID_SUBJECT_PUBLIC_KEY_INFO
  3558.  *  NSS_ERROR_INVALID_ISSUER_UNIQUE_IDENTIFIER
  3559.  *  NSS_ERROR_INVALID_SUBJECT_UNIQUE_IDENTIFIER
  3560.  *  NSS_ERROR_INVALID_EXTENSION
  3561.  *
  3562.  * Return value:
  3563.  */
  3564. NSS_EXTERN NSSPKIXTBSCertificate *
  3565. nssPKIXTBSCertificate_Create
  3566. (
  3567.   NSSArena *arenaOpt,
  3568.   NSSPKIXVersion version,
  3569.   NSSPKIXCertificateSerialNumber *serialNumber,
  3570.   NSSPKIXAlgorithmIdentifier *signature,
  3571.   NSSPKIXName *issuer,
  3572.   NSSPKIXValidity *validity,
  3573.   NSSPKIXName *subject,
  3574.   NSSPKIXSubjectPublicKeyInfo *spki,
  3575.   NSSPKIXUniqueIdentifier *issuerUniqueID,
  3576.   NSSPKIXUniqueIdentifier *subjectUniqueID,
  3577.   NSSPKIXExtensions *extensions
  3578. );
  3579. /*
  3580.  * nssPKIXTBSCertificate_Destroy
  3581.  *
  3582.  * -- fgmr comments --
  3583.  *
  3584.  * The error may be one of the following values:
  3585.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3586.  *
  3587.  * Return value:
  3588.  *  PR_SUCCESS upon success
  3589.  *  PR_FAILURE upon failure
  3590.  */
  3591. NSS_EXTERN PRStatus
  3592. nssPKIXTBSCertificate_Destroy
  3593. (
  3594.   NSSPKIXTBSCertificate *tbsCert
  3595. );
  3596. /*
  3597.  * nssPKIXTBSCertificate_Encode
  3598.  *
  3599.  * -- fgmr comments --
  3600.  *
  3601.  * The error may be one of the following values:
  3602.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3603.  *  NSS_ERROR_INVALID_ARENA
  3604.  *  NSS_ERROR_NO_MEMORY
  3605.  *
  3606.  * Return value:
  3607.  *  A valid NSSBER pointer upon success
  3608.  *  NULL upon failure
  3609.  */
  3610. NSS_EXTERN NSSBER *
  3611. nssPKIXTBSCertificate_Encode
  3612. (
  3613.   NSSPKIXTBSCertificate *tbsCert,
  3614.   NSSASN1EncodingType encoding,
  3615.   NSSBER *rvOpt,
  3616.   NSSArena *arenaOpt
  3617. );
  3618. /*
  3619.  * nssPKIXTBSCertificate_GetVersion
  3620.  *
  3621.  * -- fgmr comments --
  3622.  *
  3623.  * The error may be one of the following values:
  3624.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3625.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  3626.  *
  3627.  * Return value:
  3628.  *  A valid element of the NSSPKIXVersion enumeration upon success
  3629.  *  NSSPKIXVersion_NSSinvalid (-1) upon failure
  3630.  */
  3631. NSS_EXTERN NSSPKIXVersion
  3632. nssPKIXTBSCertificate_GetVersion
  3633. (
  3634.   NSSPKIXTBSCertificate *tbsCert
  3635. );
  3636. /*
  3637.  * nssPKIXTBSCertificate_SetVersion
  3638.  *
  3639.  * -- fgmr comments --
  3640.  *
  3641.  * The error may be one of the following values:
  3642.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3643.  *  NSS_ERROR_INVALID_PKIX_VERSION
  3644.  *
  3645.  * Return value:
  3646.  *  PR_SUCCESS upon success
  3647.  *  PR_FAILURE upon failure
  3648.  */
  3649. NSS_EXTERN PRStatus
  3650. nssPKIXTBSCertificate_SetVersion
  3651. (
  3652.   NSSPKIXTBSCertificate *tbsCert,
  3653.   NSSPKIXVersion version
  3654. );
  3655. /*
  3656.  * nssPKIXTBSCertificate_GetSerialNumber
  3657.  *
  3658.  * -- fgmr comments --
  3659.  *
  3660.  * The error may be one of the following values:
  3661.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3662.  *  NSS_ERROR_INVALID_ARENA
  3663.  *  NSS_ERROR_NO_MEMORY
  3664.  *
  3665.  * Return value:
  3666.  *  A valid pointer to an NSSPKIXCertificateSerialNumber upon success
  3667.  *  NULL upon failure
  3668.  */
  3669. NSS_EXTERN NSSPKIXCertificateSerialNumber *
  3670. nssPKIXTBSCertificate_GetSerialNumber
  3671. (
  3672.   NSSPKIXTBSCertificate *tbsCert,
  3673.   NSSPKIXCertificateSerialNumber *snOpt,
  3674.   NSSArena *arenaOpt
  3675. );
  3676. /*
  3677.  * nssPKIXTBSCertificate_SetSerialNumber
  3678.  *
  3679.  * -- fgmr comments --
  3680.  *
  3681.  * The error may be one of the following values:
  3682.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3683.  *  NSS_ERROR_INVALID_ITEM
  3684.  *  NSS_ERROR_NO_MEMORY
  3685.  *
  3686.  * Return value:
  3687.  *  PR_SUCCESS upon success
  3688.  *  PR_FAILURE upon failure
  3689.  */
  3690. NSS_EXTERN PRStatus
  3691. nssPKIXTBSCertificate_SetSerialNumber
  3692. (
  3693.   NSSPKIXTBSCertificate *tbsCert,
  3694.   NSSPKIXCertificateSerialNumber *sn
  3695. );
  3696. /*
  3697.  * nssPKIXTBSCertificate_GetSignature
  3698.  *
  3699.  * -- fgmr comments --
  3700.  *
  3701.  * The error may be one of the following values:
  3702.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3703.  *  NSS_ERROR_INVALID_ARENA
  3704.  *  NSS_ERROR_NO_MEMORY
  3705.  *
  3706.  * Return value:
  3707.  *  A valid pointer to an NSSPKIXAlgorithmIdentifier upon success
  3708.  *  NULL upon failure
  3709.  */
  3710. NSS_EXTERN NSSPKIXAlgorithmIdentifier *
  3711. nssPKIXTBSCertificate_GetSignature
  3712. (
  3713.   NSSPKIXTBSCertificate *tbsCert,
  3714.   NSSArena *arenaOpt
  3715. );
  3716. /*
  3717.  * nssPKIXTBSCertificate_SetSignature
  3718.  *
  3719.  * -- fgmr comments --
  3720.  *
  3721.  * The error may be one of the following values:
  3722.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3723.  *  NSS_ERROR_INVALID_ITEM
  3724.  *  NSS_ERROR_NO_MEMORY
  3725.  *
  3726.  * Return value:
  3727.  *  PR_SUCCESS upon success
  3728.  *  PR_FAILURE upon failure
  3729.  */
  3730. NSS_EXTERN PRStatus
  3731. nssPKIXTBSCertificate_SetSignature
  3732. (
  3733.   NSSPKIXTBSCertificate *tbsCert,
  3734.   NSSPKIXAlgorithmIdentifier *algID
  3735. );
  3736. /*
  3737.  *   { fgmr inherit algid gettors? }
  3738.  */
  3739. /*
  3740.  * nssPKIXTBSCertificate_GetIssuer
  3741.  *
  3742.  * -- fgmr comments --
  3743.  *
  3744.  * The error may be one of the following values:
  3745.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3746.  *  NSS_ERROR_INVALID_ARENA
  3747.  *  NSS_ERROR_NO_MEMORY
  3748.  *
  3749.  * Return value:
  3750.  *  A valid pointer to an NSSPKIXName upon success
  3751.  *  NULL upon failure
  3752.  */
  3753. NSS_EXTERN NSSPKIXName *
  3754. nssPKIXTBSCertificate_GetIssuer
  3755. (
  3756.   NSSPKIXTBSCertificate *tbsCert,
  3757.   NSSArena *arenaOpt
  3758. );
  3759. /*
  3760.  * nssPKIXTBSCertificate_SetIssuer
  3761.  *
  3762.  * -- fgmr comments --
  3763.  *
  3764.  * The error may be one of the following values:
  3765.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3766.  *  NSS_ERROR_INVALID_PKIX_NAME
  3767.  *  NSS_ERROR_NO_MEMORY
  3768.  *
  3769.  * Return value:
  3770.  *  PR_SUCCESS upon success
  3771.  *  PR_FAILURE upon failure
  3772.  */
  3773. NSS_EXTERN PRStatus
  3774. nssPKIXTBSCertificate_SetIssuer
  3775. (
  3776.   NSSPKIXTBSCertificate *tbsCert,
  3777.   NSSPKIXName *issuer
  3778. );
  3779. /*
  3780.  *   { inherit "helper" issuer gettors? }
  3781.  *
  3782.  * -- fgmr comments --
  3783.  *
  3784.  * The error may be one of the following values:
  3785.  *
  3786.  * Return value:
  3787.  */
  3788. /*
  3789.  * nssPKIXTBSCertificate_GetValidity
  3790.  *
  3791.  * -- fgmr comments --
  3792.  *
  3793.  * The error may be one of the following values:
  3794.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3795.  *  NSS_ERROR_INVALID_ARENA
  3796.  *  NSS_ERROR_NO_MEMORY
  3797.  *
  3798.  * Return value:
  3799.  *  A valid pointer to an NSSPKIXValidity upon success
  3800.  *  NULL upon failure
  3801.  */
  3802. NSS_EXTERN NSSPKIXValidity *
  3803. nssPKIXTBSCertificate_GetValidity
  3804. (
  3805.   NSSPKIXTBSCertificate *tbsCert,
  3806.   NSSArena *arenaOpt
  3807. );
  3808. /*
  3809.  * nssPKIXTBSCertificate_SetValidity
  3810.  *
  3811.  * -- fgmr comments --
  3812.  *
  3813.  * The error may be one of the following values:
  3814.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3815.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  3816.  *  NSS_ERROR_NO_MEMORY
  3817.  *
  3818.  * Return value:
  3819.  *  PR_SUCCESS upon success
  3820.  *  PR_FAILURE upon failure
  3821.  */
  3822. NSS_EXTERN PRStatus
  3823. nssPKIXTBSCertificate_SetValidity
  3824. (
  3825.   NSSPKIXTBSCertificate *tbsCert,
  3826.   NSSPKIXValidity *validity
  3827. );
  3828. /*
  3829.  *   { fgmr inherit validity accessors }
  3830.  */
  3831. /*
  3832.  * nssPKIXTBSCertificate_GetSubject
  3833.  *
  3834.  * -- fgmr comments --
  3835.  *
  3836.  * The error may be one of the following values:
  3837.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3838.  *  NSS_ERROR_INVALID_ARENA
  3839.  *  NSS_ERROR_NO_MEMORY
  3840.  *
  3841.  * Return value:
  3842.  *  A valid pointer to an NSSPKIXName upon success
  3843.  *  NULL upon failure
  3844.  */
  3845. NSS_EXTERN NSSPKIXName *
  3846. nssPKIXTBSCertificate_GetSubject
  3847. (
  3848.   NSSPKIXTBSCertificate *tbsCert,
  3849.   NSSArena *arenaOpt
  3850. );
  3851. /*
  3852.  * nssPKIXTBSCertificate_SetSubject
  3853.  *
  3854.  * -- fgmr comments --
  3855.  *
  3856.  * The error may be one of the following values:
  3857.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3858.  *  NSS_ERROR_INVALID_PKIX_NAME
  3859.  *  NSS_ERROR_NO_MEMORY
  3860.  *
  3861.  * Return value:
  3862.  *  PR_SUCCESS upon success
  3863.  *  PR_FAILURE upon failure
  3864.  */
  3865. NSS_EXTERN PRStatus
  3866. nssPKIXTBSCertificate_SetSubject
  3867. (
  3868.   NSSPKIXTBSCertificate *tbsCert,
  3869.   NSSPKIXName *subject
  3870. );
  3871. /*
  3872.  * nssPKIXTBSCertificate_GetSubjectPublicKeyInfo
  3873.  *
  3874.  * -- fgmr comments --
  3875.  *
  3876.  * The error may be one of the following values:
  3877.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3878.  *  NSS_ERROR_INVALID_ARENA
  3879.  *  NSS_ERROR_NO_MEMORY
  3880.  *
  3881.  * Return value:
  3882.  *  A valid pointer to an NSSPKIXSubjectPublicKeyInfo upon success
  3883.  *  NULL upon failure
  3884.  */
  3885. NSS_EXTERN NSSPKIXSubjectPublicKeyInfo *
  3886. nssPKIXTBSCertificate_GetSubjectPublicKeyInfo
  3887. (
  3888.   NSSPKIXTBSCertificate *tbsCert,
  3889.   NSSArena *arenaOpt
  3890. );
  3891. /*
  3892.  * nssPKIXTBSCertificate_SetSubjectPublicKeyInfo
  3893.  *
  3894.  * -- fgmr comments --
  3895.  *
  3896.  * The error may be one of the following values:
  3897.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3898.  *  NSS_ERROR_INVALID_PKIX_SUBJECT_PUBLIC_KEY_INFO
  3899.  *  NSS_ERROR_NO_MEMORY
  3900.  *
  3901.  * Return value:
  3902.  *  PR_SUCCESS upon success
  3903.  *  PR_FAILURE upon failure
  3904.  */
  3905. NSS_EXTERN PRStatus
  3906. nssPKIXTBSCertificate_SetSubjectPublicKeyInfo
  3907. (
  3908.   NSSPKIXTBSCertificate *tbsCert,
  3909.   NSSPKIXSubjectPublicKeyInfo *spki
  3910. );
  3911. /*
  3912.  * nssPKIXTBSCertificate_HasIssuerUniqueID
  3913.  *
  3914.  * -- fgmr comments --
  3915.  *
  3916.  * The error may be one of the following values:
  3917.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3918.  *
  3919.  * Return value:
  3920.  *  PR_TRUE if it has one
  3921.  *  PR_FALSE if it doesn't
  3922.  *  PR_FALSE upon failure
  3923.  */
  3924. NSS_EXTERN PRBool
  3925. nssPKIXTBSCertificate_HasIssuerUniqueID
  3926. (
  3927.   NSSPKIXTBSCertificate *tbsCert,
  3928.   PRStatus *statusOpt
  3929. );
  3930. /*
  3931.  * nssPKIXTBSCertificate_GetIssuerUniqueID
  3932.  *
  3933.  * -- fgmr comments --
  3934.  *
  3935.  * The error may be one of the following values:
  3936.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3937.  *  NSS_ERROR_INVALID_ARENA
  3938.  *  NSS_ERROR_NO_MEMORY
  3939.  *  NSS_ERROR_CERT_HAS_NO_ISSUER_UNIQUE_ID
  3940.  *
  3941.  * Return value:
  3942.  *  A valid pointer to an NSSPKIXUniqueIdentifier upon success
  3943.  *  NULL upon failure
  3944.  */
  3945. NSS_EXTERN NSSPKIXUniqueIdentifier *
  3946. nssPKIXTBSCertificate_GetIssuerUniqueID
  3947. (
  3948.   NSSPKIXTBSCertificate *tbsCert,
  3949.   NSSPKIXUniqueIdentifier *uidOpt,
  3950.   NSSArena *arenaOpt
  3951. );
  3952. /*
  3953.  * nssPKIXTBSCertificate_SetIssuerUniqueID
  3954.  *
  3955.  * -- fgmr comments --
  3956.  *
  3957.  * The error may be one of the following values:
  3958.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3959.  *  NSS_ERROR_INVALID_ITEM
  3960.  *  NSS_ERROR_NO_MEMORY
  3961.  *
  3962.  * Return value:
  3963.  *  PR_SUCCESS upon success
  3964.  *  PR_FAILURE upon failure
  3965.  */
  3966. NSS_EXTERN PRStatus
  3967. nssPKIXTBSCertificate_SetIssuerUniqueID
  3968. (
  3969.   NSSPKIXTBSCertificate *tbsCert,
  3970.   NSSPKIXUniqueIdentifier *uid
  3971. );
  3972. /*
  3973.  * nssPKIXTBSCertificate_RemoveIssuerUniqueID
  3974.  *
  3975.  * -- fgmr comments --
  3976.  *
  3977.  * The error may be one of the following values:
  3978.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3979.  *  NSS_ERROR_CERT_HAS_NO_ISSUER_UNIQUE_ID
  3980.  *
  3981.  * Return value:
  3982.  *  PR_SUCCESS upon success
  3983.  *  PR_FAILURE upon failure
  3984.  */
  3985. NSS_EXTERN PRStatus
  3986. nssPKIXTBSCertificate_RemoveIssuerUniqueID
  3987. (
  3988.   NSSPKIXTBSCertificate *tbsCert
  3989. );
  3990. /*
  3991.  * nssPKIXTBSCertificate_HasSubjectUniqueID
  3992.  *
  3993.  * -- fgmr comments --
  3994.  *
  3995.  * The error may be one of the following values:
  3996.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  3997.  *
  3998.  * Return value:
  3999.  *  PR_TRUE if it has one
  4000.  *  PR_FALSE if it doesn't
  4001.  *  PR_FALSE upon failure
  4002.  */
  4003. NSS_EXTERN PRBool
  4004. nssPKIXTBSCertificate_HasSubjectUniqueID
  4005. (
  4006.   NSSPKIXTBSCertificate *tbsCert,
  4007.   PRStatus *statusOpt
  4008. );
  4009. /*
  4010.  * nssPKIXTBSCertificate_GetSubjectUniqueID
  4011.  *
  4012.  * -- fgmr comments --
  4013.  *
  4014.  * The error may be one of the following values:
  4015.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4016.  *  NSS_ERROR_INVALID_ARENA
  4017.  *  NSS_ERROR_NO_MEMORY
  4018.  *  NSS_ERROR_CERT_HAS_NO_SUBJECT_UNIQUE_ID
  4019.  *
  4020.  * Return value:
  4021.  *  A valid pointer to an NSSPKIXUniqueIdentifier upon success
  4022.  *  NULL upon failure
  4023.  */
  4024. NSS_EXTERN NSSPKIXUniqueIdentifier *
  4025. nssPKIXTBSCertificate_GetSubjectUniqueID
  4026. (
  4027.   NSSPKIXTBSCertificate *tbsCert,
  4028.   NSSPKIXUniqueIdentifier *uidOpt,
  4029.   NSSArena *arenaOpt
  4030. );
  4031. /*
  4032.  * nssPKIXTBSCertificate_SetSubjectUniqueID
  4033.  *
  4034.  * -- fgmr comments --
  4035.  *
  4036.  * The error may be one of the following values:
  4037.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4038.  *  NSS_ERROR_INVALID_ITEM
  4039.  *  NSS_ERROR_NO_MEMORY
  4040.  *
  4041.  * Return value:
  4042.  *  PR_SUCCESS upon success
  4043.  *  PR_FAILURE upon failure
  4044.  */
  4045. NSS_EXTERN PRStatus
  4046. nssPKIXTBSCertificate_SetSubjectUniqueID
  4047. (
  4048.   NSSPKIXTBSCertificate *tbsCert,
  4049.   NSSPKIXUniqueIdentifier *uid
  4050. );
  4051. /*
  4052.  * nssPKIXTBSCertificate_RemoveSubjectUniqueID
  4053.  *
  4054.  * -- fgmr comments --
  4055.  *
  4056.  * The error may be one of the following values:
  4057.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4058.  *  NSS_ERROR_CERT_HAS_NO_SUBJECT_UNIQUE_ID
  4059.  *
  4060.  * Return value:
  4061.  *  PR_SUCCESS upon success
  4062.  *  PR_FAILURE upon failure
  4063.  */
  4064. NSS_EXTERN PRStatus
  4065. nssPKIXTBSCertificate_RemoveSubjectUniqueID
  4066. (
  4067.   NSSPKIXTBSCertificate *tbsCert
  4068. );
  4069. /*
  4070.  * nssPKIXTBSCertificate_HasExtensions
  4071.  *
  4072.  * -- fgmr comments --
  4073.  *
  4074.  * The error may be one of the following values:
  4075.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4076.  *
  4077.  * Return value:
  4078.  *  PR_TRUE if it has one
  4079.  *  PR_FALSE if it doesn't
  4080.  *  PR_FALSE upon failure
  4081.  */
  4082. NSS_EXTERN PRBool
  4083. nssPKIXTBSCertificate_HasExtensions
  4084. (
  4085.   NSSPKIXTBSCertificate *tbsCert,
  4086.   PRStatus *statusOpt
  4087. );
  4088. /*
  4089.  * nssPKIXTBSCertificate_GetExtensions
  4090.  *
  4091.  * -- fgmr comments --
  4092.  *
  4093.  * The error may be one of the following values:
  4094.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4095.  *  NSS_ERROR_INVALID_ARENA
  4096.  *  NSS_ERROR_NO_MEMORY
  4097.  *  NSS_ERROR_CERT_HAS_NO_EXTENSIONS
  4098.  *
  4099.  * Return value:
  4100.  *  A valid pointer to an NSSPKIXExtensions upon success
  4101.  *  NULL upon failure
  4102.  */
  4103. NSS_EXTERN NSSPKIXExtensions *
  4104. nssPKIXTBSCertificate_GetExtensions
  4105. (
  4106.   NSSPKIXTBSCertificate *tbsCert,
  4107.   NSSArena *arenaOpt
  4108. );
  4109. /*
  4110.  * nssPKIXTBSCertificate_SetExtensions
  4111.  *
  4112.  * -- fgmr comments --
  4113.  *
  4114.  * The error may be one of the following values:
  4115.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4116.  *  NSS_ERROR_INVALID_PKIX_EXTENSIONS
  4117.  *  NSS_ERROR_NO_MEMORY
  4118.  *
  4119.  * Return value:
  4120.  *  PR_SUCCESS upon success
  4121.  *  PR_FAILURE upon failure
  4122.  */
  4123. NSS_EXTERN PRStatus
  4124. nssPKIXTBSCertificate_SetExtensions
  4125. (
  4126.   NSSPKIXTBSCertificate *tbsCert,
  4127.   NSSPKIXExtensions *extensions
  4128. );
  4129. /*
  4130.  * nssPKIXTBSCertificate_RemoveExtensions
  4131.  *
  4132.  * -- fgmr comments --
  4133.  *
  4134.  * The error may be one of the following values:
  4135.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4136.  *  NSS_ERROR_CERT_HAS_NO_EXTENSIONS
  4137.  *
  4138.  * Return value:
  4139.  *  PR_SUCCESS upon success
  4140.  *  PR_FAILURE upon failure
  4141.  */
  4142. NSS_EXTERN PRStatus
  4143. nssPKIXTBSCertificate_RemoveExtensions
  4144. (
  4145.   NSSPKIXTBSCertificate *tbsCert
  4146. );
  4147. /*
  4148.  *   { extension accessors }
  4149.  */
  4150. /*
  4151.  * nssPKIXTBSCertificate_Equal
  4152.  *
  4153.  * -- fgmr comments --
  4154.  *
  4155.  * The error may be one of the following values:
  4156.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4157.  *
  4158.  * Return value:
  4159.  *  PR_TRUE if the two objects have equal values
  4160.  *  PR_FALSE otherwise
  4161.  *  PR_FALSE upon error
  4162.  */
  4163. NSS_EXTERN PRBool
  4164. nssPKIXTBSCertificate_Equal
  4165. (
  4166.   NSSPKIXTBSCertificate *one,
  4167.   NSSPKIXTBSCertificate *two,
  4168.   PRStatus *statusOpt
  4169. );
  4170. /*
  4171.  * nssPKIXTBSCertificate_Duplicate
  4172.  *
  4173.  * -- fgmr comments --
  4174.  *
  4175.  * The error may be one of the following values:
  4176.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4177.  *  NSS_ERROR_INVALID_ARENA
  4178.  *  NSS_ERROR_NO_MEMORY
  4179.  *
  4180.  * Return value:
  4181.  *  A valid pointer to an NSSPKIXTBSCertificate upon success
  4182.  *  NULL upon failure
  4183.  */
  4184. NSS_EXTERN NSSPKIXTBSCertificate *
  4185. nssPKIXTBSCertificate_Duplicate
  4186. (
  4187.   NSSPKIXTBSCertificate *tbsCert,
  4188.   NSSArena *arenaOpt
  4189. );
  4190. #ifdef DEBUG
  4191. /*
  4192.  * nssPKIXTBSCertificate_verifyPointer
  4193.  *
  4194.  * This method is only present in debug builds.
  4195.  *
  4196.  * If the specified pointer is a valid pointer to an NSSPKIXTBSCertificate
  4197.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  4198.  * put an error on the error stack and return PR_FAILURE.
  4199.  *
  4200.  * The error may be one of the following values:
  4201.  *  NSS_ERROR_INVALID_PKIX_TBS_CERTIFICATE
  4202.  *
  4203.  * Return value:
  4204.  *  PR_SUCCESS if the pointer is valid
  4205.  *  PR_FAILURE if it isn't
  4206.  */
  4207. NSS_EXTERN PRStatus
  4208. nssPKIXTBSCertificate_verifyPointer
  4209. (
  4210.   NSSPKIXTBSCertificate *p
  4211. );
  4212. #endif /* DEBUG */
  4213. /*
  4214.  * CertificateSerialNumber
  4215.  *
  4216.  * -- fgmr comments --
  4217.  *
  4218.  * From RFC 2459:
  4219.  *
  4220.  *  CertificateSerialNumber  ::=  INTEGER
  4221.  *
  4222.  * This is just a typedef'd NSSBER; no methods are required.
  4223.  * {fgmr -- the asn.1 stuff should have routines to convert
  4224.  * integers to natural types when possible and vv.  we can
  4225.  * refer to them here..}
  4226.  */
  4227. /*
  4228.  * Validity
  4229.  *
  4230.  * -- fgmr comments --
  4231.  *
  4232.  * From RFC 2459:
  4233.  *
  4234.  *  Validity ::= SEQUENCE {
  4235.  *       notBefore      Time,
  4236.  *       notAfter       Time }
  4237.  *
  4238.  * The private calls for the type:
  4239.  *
  4240.  *  nssPKIXValidity_Decode
  4241.  *  nssPKIXValidity_Create
  4242.  *  nssPKIXValidity_Encode
  4243.  *  nssPKIXValidity_Destroy
  4244.  *  nssPKIXValidity_GetNotBefore
  4245.  *  nssPKIXValidity_SetNotBefore
  4246.  *  nssPKIXValidity_GetNotAfter
  4247.  *  nssPKIXValidity_SetNotAfter
  4248.  *  nssPKIXValidity_Equal
  4249.  *  nssPKIXValidity_Compare
  4250.  *  nssPKIXValidity_Duplicate
  4251.  * 
  4252.  * In debug builds, the following call is available:
  4253.  *
  4254.  *  nssPKIXValidity_verifyPointer
  4255.  *
  4256.  */
  4257. /*
  4258.  * nssPKIXValidity_Decode
  4259.  *
  4260.  * -- fgmr comments --
  4261.  *
  4262.  * The error may be one of the following values:
  4263.  *  NSS_ERROR_INVALID_BER
  4264.  *  NSS_ERROR_NO_MEMORY
  4265.  *  NSS_ERROR_INVALID_ARENA
  4266.  *
  4267.  * Return value:
  4268.  *  A valid pointer to an NSSPKIXValidity upon success
  4269.  *  NULL upon failure
  4270.  */
  4271. NSS_EXTERN NSSPKIXValidity *
  4272. nssPKIXValidity_Decode
  4273. (
  4274.   NSSArena *arenaOpt,
  4275.   NSSBER *ber
  4276. );
  4277. /*
  4278.  * nssPKIXValidity_Create
  4279.  *
  4280.  * -- fgmr comments --
  4281.  *
  4282.  * The error may be one of the following values:
  4283.  *  NSS_ERROR_NO_MEMORY
  4284.  *  NSS_ERROR_INVALID_ARENA
  4285.  *  NSS_ERROR_INVALID_PKIX_TIME
  4286.  *
  4287.  * Return value:
  4288.  *  A valid pointer to an NSSPKIXValidity upon success
  4289.  *  NULL upon failure
  4290.  */
  4291. NSS_EXTERN NSSPKIXValidity *
  4292. nssPKIXValidity_Create
  4293. (
  4294.   NSSArena *arenaOpt,
  4295.   NSSPKIXTime notBefore,
  4296.   NSSPKIXTime notAfter
  4297. );
  4298. /*
  4299.  * nssPKIXValidity_Destroy
  4300.  *
  4301.  * -- fgmr comments --
  4302.  *
  4303.  * The error may be one of the following values:
  4304.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4305.  *
  4306.  * Return value:
  4307.  *  PR_SUCCESS upon success
  4308.  *  PR_FAILURE upon failure
  4309.  */
  4310. NSS_EXTERN PRStatus
  4311. nssPKIXValidity_Destroy
  4312. (
  4313.   NSSPKIXValidity *validity
  4314. );
  4315. /*
  4316.  * nssPKIXValidity_Encode
  4317.  *
  4318.  * -- fgmr comments --
  4319.  *
  4320.  * The error may be one of the following values:
  4321.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4322.  *  NSS_ERROR_INVALID_ARENA
  4323.  *  NSS_ERROR_NO_MEMORY
  4324.  *
  4325.  * Return value:
  4326.  *  A valid NSSBER pointer upon success
  4327.  *  NULL upon failure
  4328.  */
  4329. NSS_EXTERN NSSBER *
  4330. nssPKIXValidity_Encode
  4331. (
  4332.   NSSPKIXValidity *validity,
  4333.   NSSASN1EncodingType encoding,
  4334.   NSSBER *rvOpt,
  4335.   NSSArena *arenaOpt
  4336. );
  4337. /*
  4338.  * nssPKIXValidity_GetNotBefore
  4339.  *
  4340.  * -- fgmr comments --
  4341.  *
  4342.  * The error may be one of the following values:
  4343.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4344.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  4345.  *
  4346.  * Return value:
  4347.  *  A valid NSSPKIXTime upon success
  4348.  *  {we need to rethink NSSPKIXTime}
  4349.  */
  4350. NSS_EXTERN NSSPKIXTime
  4351. nssPKIXValidity_GetNotBefore
  4352. (
  4353.   NSSPKIXValidity *validity
  4354. );
  4355. /*
  4356.  * nssPKIXValidity_SetNotBefore
  4357.  *
  4358.  * -- fgmr comments --
  4359.  * {do we require that it be before the "notAfter" value?}
  4360.  *
  4361.  * The error may be one of the following values:
  4362.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4363.  *  NSS_ERROR_VALUE_TOO_LARGE
  4364.  *
  4365.  * Return value:
  4366.  *  PR_SUCCESS upon success
  4367.  *  PR_FAILURE upon failure
  4368.  */
  4369. NSS_EXTERN PRStatus
  4370. nssPKIXValidity_SetNotBefore
  4371. (
  4372.   NSSPKIXValidity *validity,
  4373.   NSSPKIXTime notBefore
  4374. );
  4375. /*
  4376.  * nssPKIXValidity_GetNotAfter
  4377.  *
  4378.  * -- fgmr comments --
  4379.  *
  4380.  * The error may be one of the following values:
  4381.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4382.  *  NSS_ERROR_VALUE_OUT_OF_RANGE
  4383.  *
  4384.  * Return value:
  4385.  *  A valid NSSPKIXTime upon success
  4386.  *  {we need to rethink NSSPKIXTime}
  4387.  */
  4388. NSS_EXTERN NSSPKIXTime
  4389. nssPKIXValidity_GetNotAfter
  4390. (
  4391.   NSSPKIXValidity *validity
  4392. );
  4393. /*
  4394.  * nssPKIXValidity_SetNotAfter
  4395.  *
  4396.  * -- fgmr comments --
  4397.  *
  4398.  * The error may be one of the following values:
  4399.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4400.  *  NSS_ERROR_VALUE_TOO_SMALL
  4401.  *
  4402.  * Return value:
  4403.  *  PR_SUCCESS upon success
  4404.  *  PR_FAILURE upon failure
  4405.  */
  4406. NSS_EXTERN PRStatus
  4407. nssPKIXValidity_SetNotAfter
  4408. (
  4409.   NSSPKIXValidity *validity,
  4410.   NSSPKIXTime notAfter
  4411. );
  4412. /*
  4413.  * nssPKIXValidity_Equal
  4414.  *
  4415.  * -- fgmr comments --
  4416.  *
  4417.  * The error may be one of the following values:
  4418.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4419.  *
  4420.  * Return value:
  4421.  *  PR_TRUE if the two objects have equal values
  4422.  *  PR_FALSE otherwise
  4423.  *  PR_FALSE upon error
  4424.  */
  4425. NSS_EXTERN PRBool
  4426. nssPKIXValidity_Equal
  4427. (
  4428.   NSSPKIXValidity *one,
  4429.   NSSPKIXValidity *two,
  4430.   PRStatus *statusOpt
  4431. );
  4432. /*
  4433.  * nssPKIXValidity_Compare
  4434.  *
  4435.  * -- fgmr comments --
  4436.  *
  4437.  * The error may be one of the following values:
  4438.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4439.  *
  4440.  * Return value:
  4441.  *   1 if the second is "greater" or later than the first
  4442.  *   0 if they are equal
  4443.  *  -1 if the first is "greater" or later than the first
  4444.  *  -2 upon failure
  4445.  */
  4446. NSS_EXTERN PRIntn
  4447. nssPKIXValidity_Compare
  4448. (
  4449.   NSSPKIXValidity *one,
  4450.   NSSPKIXValidity *two
  4451. );
  4452. /*
  4453.  * nssPKIXValidity_Duplicate
  4454.  *
  4455.  * -- fgmr comments --
  4456.  *
  4457.  * The error may be one of the following values:
  4458.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4459.  *  NSS_ERROR_INVALID_ARENA
  4460.  *  NSS_ERROR_NO_MEMORY
  4461.  *
  4462.  * Return value:
  4463.  *  A valid pointer to an NSSPKIXValidity upon success
  4464.  *  NULL upon failure
  4465.  */
  4466. NSS_EXTERN NSSPKIXValidity *
  4467. nssPKIXValidity_Duplicate
  4468. (
  4469.   NSSPKIXValidity *validity,
  4470.   NSSArena *arenaOpt
  4471. );
  4472. #ifdef DEBUG
  4473. /*
  4474.  * nssPKIXValidity_verifyPointer
  4475.  *
  4476.  * This method is only present in debug builds.
  4477.  *
  4478.  * If the specified pointer is a valid pointer to an NSSPKIXValidity
  4479.  * object, this routine will return PR_SUCCESS.  Otherwise, it will 
  4480.  * put an error on the error stack and return PR_FAILURE.
  4481.  *
  4482.  * The error may be one of the following values:
  4483.  *  NSS_ERROR_INVALID_PKIX_VALIDITY
  4484.  *
  4485.  * Return value:
  4486.  *  PR_SUCCESS if the pointer is valid
  4487.  *  PR_FAILURE if it isn't
  4488.  */
  4489. NSS_EXTERN PRStatus
  4490. nssPKIXValidity_verifyPointer
  4491. (
  4492.   NSSPKIXValidity *p
  4493. );
  4494. #endif /* DEBUG */
  4495. /*
  4496.  * Time
  4497.  *
  4498.  * -- fgmr comments --
  4499.  *
  4500.  * From RFC 2459:
  4501.  *
  4502.  *  Time ::= CHOICE {
  4503.  *       utcTime        UTCTime,
  4504.  *       generalTime    GeneralizedTime }
  4505.  *
  4506.  * The private calls for the type:
  4507.  *
  4508.  *  nssPKIXTime_Decode
  4509.  *  nssPKIXTime_CreateFromPRTime
  4510.  *  nssPKIXTime_CreateFromUTF8
  4511.  *  nssPKIXTime_Destroy
  4512.  *  nssPKIXTime_Encode
  4513.  *  nssPKIXTime_GetPRTime
  4514.  *  nssPKIXTime_GetUTF8Encoding
  4515.  *  nssPKIXTime_Equal
  4516.  *  nssPKIXTime_Duplicate
  4517.  *  nssPKIXTime_Compare
  4518.  *
  4519.  * In debug builds, the following call is available:
  4520.  *
  4521.  *  nssPKIXTime_verifyPointer
  4522.  *
  4523.  */
  4524. /*
  4525.  * nssPKIXTime_Decode
  4526.  *
  4527.  * 
  4528.  *
  4529.  * The error may be one of the following values:
  4530.  *  NSS_ERROR_INVALID_BER
  4531.  *  NSS_ERROR_NO_MEMORY
  4532.  *  NSS_ERROR_INVALID_ARENA
  4533.  *
  4534.  * Return value:
  4535.  *  A valid pointer to an NSSPKIXTime upon success
  4536.  *  NULL upon failure
  4537.  */
  4538. NSS_EXTERN NSSPKIXTime *
  4539. nssPKIXTime_Decode
  4540. (
  4541.   NSSArena *arenaOpt,
  4542.   NSSBER *ber
  4543. );
  4544. /*
  4545.  * nssPKIXTime_CreateFromPRTime
  4546.  *
  4547.  */
  4548. NSS_EXTERN NSSPKIXTime *
  4549. nssPKIXTime_CreateFromPRTime
  4550. (
  4551.   NSSArena *arenaOpt,
  4552.   PRTime prTime
  4553. );
  4554. /*
  4555.  * nssPKIXTime_CreateFromUTF8
  4556.  *
  4557.  */
  4558. NSS_EXTERN NSSPKIXTime *
  4559. nssPKIXTime_CreateFromUTF8
  4560. (
  4561.   NSSArena *arenaOpt,
  4562.   NSSUTF8 *utf8
  4563. );
  4564. /*
  4565.  * nssPKIXTime_Destroy
  4566.  *
  4567.  */
  4568. NSS_EXTERN PR_STATUS
  4569. nssPKIXTime_Destroy
  4570. (
  4571.   NSSPKIXTime *time
  4572. );
  4573. /*
  4574.  * nssPKIXTime_Encode
  4575.  *
  4576.  */
  4577. NSS_EXTERN NSSBER *
  4578. nssPKIXTime_Encode
  4579. (
  4580.   NSSPKIXTime *time,
  4581.   NSSASN1EncodingType encoding,
  4582.   NSSBER *rvOpt,
  4583.   NSSArena *arenaOpt
  4584. );
  4585. /*
  4586.  * nssPKIXTime_GetPRTime
  4587.  *
  4588.  * Returns a zero on error
  4589.  */
  4590. NSS_EXTERN PRTime
  4591. nssPKIXTime_GetPRTime
  4592. (
  4593.   NSSPKIXTime *time,
  4594.   PRStatus *statusOpt
  4595. );
  4596. /*
  4597.  * nssPKIXTime_GetUTF8Encoding
  4598.  *
  4599.  */
  4600. NSS_EXTERN NSSUTF8 *
  4601. nssPKXITime_GetUTF8Encoding
  4602. (
  4603.   NSSPKIXTime *time,
  4604.   NSSArena *arenaOpt
  4605. );
  4606. /*
  4607.  * nssPKIXTime_Equal
  4608.  *
  4609.  */
  4610. NSS_EXTERN PRBool
  4611. nssPKXITime_Equal
  4612. (
  4613.   NSSPKXITime *time1,
  4614.   NSSPKXITime *time2,
  4615.   PRStatus *statusOpt
  4616. );
  4617. /*
  4618.  * nssPKIXTime_Duplicate
  4619.  *
  4620.  */
  4621. NSS_EXTERN NSSPKIXTime *
  4622. nssPKXITime_Duplicate
  4623. (
  4624.   NSSPKIXTime *time,
  4625.   NSSArena *arenaOpt
  4626. );
  4627. /*
  4628.  * nssPKIXTime_Compare
  4629.  *
  4630.  * Usual result: -1, 0, 1
  4631.  *  Returns 0 on error
  4632.  */
  4633. NSS_EXTERN PRInt32
  4634. nssPKIXTime_Compare
  4635. (
  4636.   NSSPKIXTime *time1,
  4637.   NSSPKIXTime *tiem2,
  4638.   PRStatus *statusOpt
  4639. );
  4640. #ifdef DEBUG
  4641. /*
  4642.  * nssPKIXTime_verifyPointer
  4643.  *
  4644.  */
  4645. NSS_EXTERN PRStatus
  4646. nssPKIXTime_verifyPointer
  4647. (
  4648.   NSSPKIXTime *time
  4649. );
  4650. #endif /* DEBUG */
  4651. /*
  4652.  * UniqueIdentifier
  4653.  *
  4654.  * From RFC 2459:
  4655.  *
  4656.  *  UniqueIdentifier  ::=  BIT STRING
  4657.  *
  4658.  */
  4659. /*
  4660.  * SubjectPublicKeyInfo
  4661.  *
  4662.  * -- fgmr comments --
  4663.  *
  4664.  * From RFC 2459:
  4665.  *
  4666.  *  SubjectPublicKeyInfo  ::=  SEQUENCE  {
  4667.  *       algorithm            AlgorithmIdentifier,
  4668.  *       subjectPublicKey     BIT STRING  }
  4669.  *
  4670.  * The private calls for the type:
  4671.  *
  4672.  *  nssPKIXSubjectPublicKeyInfo_Decode
  4673.  *  nssPKIXSubjectPublicKeyInfo_Create
  4674.  *  nssPKIXSubjectPublicKeyInfo_Encode
  4675.  *  nssPKIXSubjectPublicKeyInfo_Destroy
  4676.  *  nssPKIXSubjectPublicKeyInfo_GetAlgorithm
  4677.  *  nssPKIXSubjectPublicKeyInfo_SetAlgorithm
  4678.  *  nssPKIXSubjectPublicKeyInfo_GetSubjectPublicKey
  4679.  *  nssPKIXSubjectPublicKeyInfo_SetSubjectPublicKey
  4680.  *  nssPKIXSubjectPublicKeyInfo_Equal
  4681.  *  nssPKIXSubjectPublicKeyInfo_Duplicate
  4682.  * 
  4683.  * In debug builds, the following call is available:
  4684.  *
  4685.  *  nssPKIXSubjectPublicKeyInfo_verifyPointer
  4686.  *
  4687.  */
  4688. /*
  4689.  * nssPKIXSubjectPublicKeyInfo_Decode
  4690.  *
  4691.  * -- fgmr comments --
  4692.  *
  4693.  * The error may be one of the following values:
  4694.  *  NSS_ERROR_INVALID_BER
  4695.  *  NSS_ERROR_NO_MEMORY
  4696.  *  NSS_ERROR_INVALID_ARENA
  4697.  *
  4698.  * Return value:
  4699.  *  A valid pointer to an NSSPKIXSubjectPublicKeyInfo upon success
  4700.  *  NULL upon failure
  4701.  */
  4702. NSS_EXTERN NSSPKIXSubjectPublicKeyInfo *
  4703. nssPKIXSubjectPublicKeyInfo_Decode
  4704. (
  4705.   NSSArena *arenaOpt,
  4706.   NSSBER *ber
  4707. );
  4708. /*
  4709.  * nssPKIXSubjectPublicKeyInfo_Create
  4710.  *
  4711.  * -- fgmr comments --
  4712.  *
  4713.  * The error may be one of the following values:
  4714.  *  NSS_ERROR_NO_MEMORY
  4715.  *  NSS_ERROR_INVALID_ARENA
  4716.  *  NSS_ERROR_INVALID_PKIX_ALGORITHM_IDENTIFIER
  4717.  *  NSS_ERROR_INVALID_ITEM
  4718.  *
  4719.  * Return value:
  4720.  *  A valid pointer to an NSSPKIXSubjectPublicKeyInfo upon success
  4721.  *  NULL upon failure
  4722.  */
  4723. NSS_EXTERN NSSPKIXSubjectPublicKeyInfo *
  4724. nssPKIXSubjectPublicKeyInfo_Create
  4725. (
  4726.   NSSArena *arenaOpt,
  4727.   NSSPKIXAlgorithmIdentifier *algid,
  4728.   NSSItem *subjectPublicKey
  4729. );
  4730. /*
  4731.  * nssPKIXSubjectPublicKeyInfo_Destroy
  4732.  *
  4733.  * -- fgmr comments --
  4734.  *
  4735.  * The error may be one of the following values:
  4736.  *  NSS_ERROR_INVALID_PKIX_SUBJECT_PUBLIC_KEY_INFO
  4737.  *
  4738.  * Return value:
  4739.  *  PR_SUCCESS upon success
  4740.  *  PR_FAILURE upon failure
  4741.  */
  4742. NSS_EXTERN PRStatus
  4743. nssPKIXSubjectPublicKeyInfo_Destroy
  4744. (
  4745.   NSSPKIXSubjectPublicKeyInfo *spki
  4746. );
  4747. /*
  4748.  * nssPKIXSubjectPublicKeyInfo_Encode
  4749.  *
  4750.  * -- fgmr comments --
  4751.  *
  4752.  * The error may be one of the following values:
  4753.  *  NSS_ERROR_INVALID_PKIX_SUBJECT_PUBLIC_KEY_INFO
  4754.  *
  4755.  * Return value:
  4756.  *  A valid NSSBER pointer upon success
  4757.  *  NULL upon failure
  4758.  */
  4759. NSS_EXTERN NSSBER *
  4760. nssPKIXSubjectPublicKeyInfo_Encode
  4761. (
  4762.   NSSPKIXSubjectPublicKeyInfo *spki,
  4763.   NSSASN1EncodingType encoding,
  4764.   NSSBER *rvOpt,
  4765.   NSSArena *arenaOpt
  4766. );
  4767. /*
  4768.  * nssPKIXSubjectPublicKeyInfo_GetAlgorithm
  4769.  *
  4770.  * -- fgmr comments --
  4771.  *
  4772.  * The error may be one of the following values:
  4773.  *  NSS_ERROR_INVALID_PKIX_SUBJECT_PUBLIC_KEY_INFO
  4774.  *  NSS_ERROR_INVALID_ARENA
  4775.  *  NSS_ERROR_NO_MEMORY
  4776.  *
  4777.  * Return value:
  4778.  *  A valid pointer to an NSSPKIXAlgorithmIdentifier upon success