tor-browser

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

ckdbm.h (4524B)


      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 CKDBM_H
      6 #define CKDBM_H
      7 
      8 #include "nssckmdt.h"
      9 #include "nssckfw.h"
     10 
     11 /*
     12 * I'm including this for access to the arena functions.
     13 * Looks like we should publish that API.
     14 */
     15 #ifndef BASE_H
     16 #include "base.h"
     17 #endif /* BASE_H */
     18 
     19 /*
     20 * This is where the Netscape extensions live, at least for now.
     21 */
     22 #ifndef CKT_H
     23 #include "ckt.h"
     24 #endif /* CKT_H */
     25 
     26 #include "mcom_db.h"
     27 
     28 NSS_EXTERN_DATA NSSCKMDInstance nss_dbm_mdInstance;
     29 
     30 typedef struct nss_dbm_db_struct nss_dbm_db_t;
     31 struct nss_dbm_db_struct {
     32    DB *db;
     33    NSSCKFWMutex *crustylock;
     34 };
     35 
     36 typedef struct nss_dbm_dbt_struct nss_dbm_dbt_t;
     37 struct nss_dbm_dbt_struct {
     38    DBT dbt;
     39    nss_dbm_db_t *my_db;
     40 };
     41 
     42 typedef struct nss_dbm_instance_struct nss_dbm_instance_t;
     43 struct nss_dbm_instance_struct {
     44    NSSArena *arena;
     45    CK_ULONG nSlots;
     46    char **filenames;
     47    int *flags; /* e.g. O_RDONLY, O_RDWR */
     48 };
     49 
     50 typedef struct nss_dbm_slot_struct nss_dbm_slot_t;
     51 struct nss_dbm_slot_struct {
     52    nss_dbm_instance_t *instance;
     53    char *filename;
     54    int flags;
     55    nss_dbm_db_t *token_db;
     56 };
     57 
     58 typedef struct nss_dbm_token_struct nss_dbm_token_t;
     59 struct nss_dbm_token_struct {
     60    NSSArena *arena;
     61    nss_dbm_slot_t *slot;
     62    nss_dbm_db_t *session_db;
     63    NSSUTF8 *label;
     64 };
     65 
     66 struct nss_dbm_dbt_node {
     67    struct nss_dbm_dbt_node *next;
     68    nss_dbm_dbt_t *dbt;
     69 };
     70 
     71 typedef struct nss_dbm_session_struct nss_dbm_session_t;
     72 struct nss_dbm_session_struct {
     73    NSSArena *arena;
     74    nss_dbm_token_t *token;
     75    CK_ULONG deviceError;
     76    struct nss_dbm_dbt_node *session_objects;
     77    NSSCKFWMutex *list_lock;
     78 };
     79 
     80 typedef struct nss_dbm_object_struct nss_dbm_object_t;
     81 struct nss_dbm_object_struct {
     82    NSSArena *arena; /* token or session */
     83    nss_dbm_dbt_t *handle;
     84 };
     85 
     86 typedef struct nss_dbm_find_struct nss_dbm_find_t;
     87 struct nss_dbm_find_struct {
     88    NSSArena *arena;
     89    struct nss_dbm_dbt_node *found;
     90    NSSCKFWMutex *list_lock;
     91 };
     92 
     93 NSS_EXTERN NSSCKMDSlot *
     94 nss_dbm_mdSlot_factory(
     95    nss_dbm_instance_t *instance,
     96    char *filename,
     97    int flags,
     98    CK_RV *pError);
     99 
    100 NSS_EXTERN NSSCKMDToken *
    101 nss_dbm_mdToken_factory(
    102    nss_dbm_slot_t *slot,
    103    CK_RV *pError);
    104 
    105 NSS_EXTERN NSSCKMDSession *
    106 nss_dbm_mdSession_factory(
    107    nss_dbm_token_t *token,
    108    NSSCKFWSession *fwSession,
    109    NSSCKFWInstance *fwInstance,
    110    CK_BBOOL rw,
    111    CK_RV *pError);
    112 
    113 NSS_EXTERN NSSCKMDObject *
    114 nss_dbm_mdObject_factory(
    115    nss_dbm_object_t *object,
    116    CK_RV *pError);
    117 
    118 NSS_EXTERN NSSCKMDFindObjects *
    119 nss_dbm_mdFindObjects_factory(
    120    nss_dbm_find_t *find,
    121    CK_RV *pError);
    122 
    123 NSS_EXTERN nss_dbm_db_t *
    124 nss_dbm_db_open(
    125    NSSArena *arena,
    126    NSSCKFWInstance *fwInstance,
    127    char *filename,
    128    int flags,
    129    CK_RV *pError);
    130 
    131 NSS_EXTERN void
    132 nss_dbm_db_close(
    133    nss_dbm_db_t *db);
    134 
    135 NSS_EXTERN CK_VERSION
    136 nss_dbm_db_get_format_version(
    137    nss_dbm_db_t *db);
    138 
    139 NSS_EXTERN CK_RV
    140 nss_dbm_db_set_label(
    141    nss_dbm_db_t *db,
    142    NSSUTF8 *label);
    143 
    144 NSS_EXTERN NSSUTF8 *
    145 nss_dbm_db_get_label(
    146    nss_dbm_db_t *db,
    147    NSSArena *arena,
    148    CK_RV *pError);
    149 
    150 NSS_EXTERN CK_RV
    151 nss_dbm_db_delete_object(
    152    nss_dbm_dbt_t *dbt);
    153 
    154 NSS_EXTERN nss_dbm_dbt_t *
    155 nss_dbm_db_create_object(
    156    NSSArena *arena,
    157    nss_dbm_db_t *db,
    158    CK_ATTRIBUTE_PTR pTemplate,
    159    CK_ULONG ulAttributeCount,
    160    CK_RV *pError,
    161    CK_ULONG *pdbrv);
    162 
    163 NSS_EXTERN CK_RV
    164 nss_dbm_db_find_objects(
    165    nss_dbm_find_t *find,
    166    nss_dbm_db_t *db,
    167    CK_ATTRIBUTE_PTR pTemplate,
    168    CK_ULONG ulAttributeCount,
    169    CK_ULONG *pdbrv);
    170 
    171 NSS_EXTERN CK_BBOOL
    172 nss_dbm_db_object_still_exists(
    173    nss_dbm_dbt_t *dbt);
    174 
    175 NSS_EXTERN CK_ULONG
    176 nss_dbm_db_get_object_attribute_count(
    177    nss_dbm_dbt_t *dbt,
    178    CK_RV *pError,
    179    CK_ULONG *pdbrv);
    180 
    181 NSS_EXTERN CK_RV
    182 nss_dbm_db_get_object_attribute_types(
    183    nss_dbm_dbt_t *dbt,
    184    CK_ATTRIBUTE_TYPE_PTR typeArray,
    185    CK_ULONG ulCount,
    186    CK_ULONG *pdbrv);
    187 
    188 NSS_EXTERN CK_ULONG
    189 nss_dbm_db_get_object_attribute_size(
    190    nss_dbm_dbt_t *dbt,
    191    CK_ATTRIBUTE_TYPE type,
    192    CK_RV *pError,
    193    CK_ULONG *pdbrv);
    194 
    195 NSS_EXTERN NSSItem *
    196 nss_dbm_db_get_object_attribute(
    197    nss_dbm_dbt_t *dbt,
    198    NSSArena *arena,
    199    CK_ATTRIBUTE_TYPE type,
    200    CK_RV *pError,
    201    CK_ULONG *pdbrv);
    202 
    203 NSS_EXTERN CK_RV
    204 nss_dbm_db_set_object_attribute(
    205    nss_dbm_dbt_t *dbt,
    206    CK_ATTRIBUTE_TYPE type,
    207    NSSItem *value,
    208    CK_ULONG *pdbrv);
    209 
    210 #endif /* CKDBM_H */