tor-browser

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

genname.h (3538B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #ifndef _GENAME_H_
      6 #define _GENAME_H_
      7 
      8 #include "plarena.h"
      9 #include "seccomon.h"
     10 #include "secoidt.h"
     11 #include "secasn1.h"
     12 #include "secder.h"
     13 #include "certt.h"
     14 
     15 /************************************************************************/
     16 SEC_BEGIN_PROTOS
     17 
     18 extern const SEC_ASN1Template CERT_GeneralNamesTemplate[];
     19 
     20 extern SECItem **cert_EncodeGeneralNames(PLArenaPool *arena,
     21                                         CERTGeneralName *names);
     22 
     23 extern CERTGeneralName *cert_DecodeGeneralNames(PLArenaPool *arena,
     24                                                SECItem **encodedGenName);
     25 
     26 extern SECStatus cert_DestroyGeneralNames(CERTGeneralName *name);
     27 
     28 extern SECStatus cert_EncodeNameConstraints(CERTNameConstraints *constraints,
     29                                            PLArenaPool *arena, SECItem *dest);
     30 
     31 extern CERTNameConstraints *cert_DecodeNameConstraints(
     32    PLArenaPool *arena, const SECItem *encodedConstraints);
     33 
     34 extern CERTGeneralName *cert_CombineNamesLists(CERTGeneralName *list1,
     35                                               CERTGeneralName *list2);
     36 
     37 extern CERTNameConstraint *cert_CombineConstraintsLists(
     38    CERTNameConstraint *list1, CERTNameConstraint *list2);
     39 
     40 /*********************************************************************/
     41 /* A thread safe implementation of General Names                     */
     42 /*********************************************************************/
     43 
     44 /* Destroy a Single CERTGeneralName */
     45 void CERT_DestroyGeneralName(CERTGeneralName *name);
     46 
     47 SECStatus CERT_CompareGeneralName(CERTGeneralName *a, CERTGeneralName *b);
     48 
     49 SECStatus CERT_CopyGeneralName(PLArenaPool *arena, CERTGeneralName *dest,
     50                               CERTGeneralName *src);
     51 
     52 /* General Name Lists are a thread safe, reference counting layer to
     53 * general names */
     54 
     55 /* Destroys a CERTGeneralNameList */
     56 void CERT_DestroyGeneralNameList(CERTGeneralNameList *list);
     57 
     58 /* Creates a CERTGeneralNameList */
     59 CERTGeneralNameList *CERT_CreateGeneralNameList(CERTGeneralName *name);
     60 
     61 /* Compares two CERTGeneralNameList */
     62 SECStatus CERT_CompareGeneralNameLists(CERTGeneralNameList *a,
     63                                       CERTGeneralNameList *b);
     64 
     65 /* returns a copy of the first name of the type requested */
     66 void *CERT_GetGeneralNameFromListByType(CERTGeneralNameList *list,
     67                                        CERTGeneralNameType type,
     68                                        PLArenaPool *arena);
     69 
     70 /* Adds a name to the tail of the list */
     71 void CERT_AddGeneralNameToList(CERTGeneralNameList *list,
     72                               CERTGeneralNameType type, void *data,
     73                               SECItem *oid);
     74 
     75 /* returns a duplicate of the CERTGeneralNameList */
     76 CERTGeneralNameList *CERT_DupGeneralNameList(CERTGeneralNameList *list);
     77 
     78 /* returns the number of CERTGeneralName objects in the  doubly linked
     79 ** list of which *names is a member.
     80 */
     81 extern int CERT_GetNamesLength(CERTGeneralName *names);
     82 
     83 /************************************************************************/
     84 
     85 SECStatus CERT_CompareNameSpace(CERTCertificate *cert,
     86                                CERTGeneralName *namesList,
     87                                CERTCertificate **certsList,
     88                                PLArenaPool *reqArena,
     89                                CERTCertificate **pBadCert);
     90 
     91 SEC_END_PROTOS
     92 
     93 #endif