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

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