1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/ckfw/dbm/ckdbm.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,248 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef CKDBM_H 1.9 +#define CKDBM_H 1.10 + 1.11 +#include "nssckmdt.h" 1.12 +#include "nssckfw.h" 1.13 + 1.14 +/* 1.15 + * I'm including this for access to the arena functions. 1.16 + * Looks like we should publish that API. 1.17 + */ 1.18 +#ifndef BASE_H 1.19 +#include "base.h" 1.20 +#endif /* BASE_H */ 1.21 + 1.22 +/* 1.23 + * This is where the Netscape extensions live, at least for now. 1.24 + */ 1.25 +#ifndef CKT_H 1.26 +#include "ckt.h" 1.27 +#endif /* CKT_H */ 1.28 + 1.29 +#include "mcom_db.h" 1.30 + 1.31 +NSS_EXTERN_DATA NSSCKMDInstance nss_dbm_mdInstance; 1.32 + 1.33 +typedef struct nss_dbm_db_struct nss_dbm_db_t; 1.34 +struct nss_dbm_db_struct { 1.35 + DB *db; 1.36 + NSSCKFWMutex *crustylock; 1.37 +}; 1.38 + 1.39 +typedef struct nss_dbm_dbt_struct nss_dbm_dbt_t; 1.40 +struct nss_dbm_dbt_struct { 1.41 + DBT dbt; 1.42 + nss_dbm_db_t *my_db; 1.43 +}; 1.44 + 1.45 +typedef struct nss_dbm_instance_struct nss_dbm_instance_t; 1.46 +struct nss_dbm_instance_struct { 1.47 + NSSArena *arena; 1.48 + CK_ULONG nSlots; 1.49 + char **filenames; 1.50 + int *flags; /* e.g. O_RDONLY, O_RDWR */ 1.51 +}; 1.52 + 1.53 +typedef struct nss_dbm_slot_struct nss_dbm_slot_t; 1.54 +struct nss_dbm_slot_struct { 1.55 + nss_dbm_instance_t *instance; 1.56 + char *filename; 1.57 + int flags; 1.58 + nss_dbm_db_t *token_db; 1.59 +}; 1.60 + 1.61 +typedef struct nss_dbm_token_struct nss_dbm_token_t; 1.62 +struct nss_dbm_token_struct { 1.63 + NSSArena *arena; 1.64 + nss_dbm_slot_t *slot; 1.65 + nss_dbm_db_t *session_db; 1.66 + NSSUTF8 *label; 1.67 +}; 1.68 + 1.69 +struct nss_dbm_dbt_node { 1.70 + struct nss_dbm_dbt_node *next; 1.71 + nss_dbm_dbt_t *dbt; 1.72 +}; 1.73 + 1.74 +typedef struct nss_dbm_session_struct nss_dbm_session_t; 1.75 +struct nss_dbm_session_struct { 1.76 + NSSArena *arena; 1.77 + nss_dbm_token_t *token; 1.78 + CK_ULONG deviceError; 1.79 + struct nss_dbm_dbt_node *session_objects; 1.80 + NSSCKFWMutex *list_lock; 1.81 +}; 1.82 + 1.83 +typedef struct nss_dbm_object_struct nss_dbm_object_t; 1.84 +struct nss_dbm_object_struct { 1.85 + NSSArena *arena; /* token or session */ 1.86 + nss_dbm_dbt_t *handle; 1.87 +}; 1.88 + 1.89 +typedef struct nss_dbm_find_struct nss_dbm_find_t; 1.90 +struct nss_dbm_find_struct { 1.91 + NSSArena *arena; 1.92 + struct nss_dbm_dbt_node *found; 1.93 + NSSCKFWMutex *list_lock; 1.94 +}; 1.95 + 1.96 +NSS_EXTERN NSSCKMDSlot * 1.97 +nss_dbm_mdSlot_factory 1.98 +( 1.99 + nss_dbm_instance_t *instance, 1.100 + char *filename, 1.101 + int flags, 1.102 + CK_RV *pError 1.103 +); 1.104 + 1.105 +NSS_EXTERN NSSCKMDToken * 1.106 +nss_dbm_mdToken_factory 1.107 +( 1.108 + nss_dbm_slot_t *slot, 1.109 + CK_RV *pError 1.110 +); 1.111 + 1.112 +NSS_EXTERN NSSCKMDSession * 1.113 +nss_dbm_mdSession_factory 1.114 +( 1.115 + nss_dbm_token_t *token, 1.116 + NSSCKFWSession *fwSession, 1.117 + NSSCKFWInstance *fwInstance, 1.118 + CK_BBOOL rw, 1.119 + CK_RV *pError 1.120 +); 1.121 + 1.122 +NSS_EXTERN NSSCKMDObject * 1.123 +nss_dbm_mdObject_factory 1.124 +( 1.125 + nss_dbm_object_t *object, 1.126 + CK_RV *pError 1.127 +); 1.128 + 1.129 +NSS_EXTERN NSSCKMDFindObjects * 1.130 +nss_dbm_mdFindObjects_factory 1.131 +( 1.132 + nss_dbm_find_t *find, 1.133 + CK_RV *pError 1.134 +); 1.135 + 1.136 +NSS_EXTERN nss_dbm_db_t * 1.137 +nss_dbm_db_open 1.138 +( 1.139 + NSSArena *arena, 1.140 + NSSCKFWInstance *fwInstance, 1.141 + char *filename, 1.142 + int flags, 1.143 + CK_RV *pError 1.144 +); 1.145 + 1.146 +NSS_EXTERN void 1.147 +nss_dbm_db_close 1.148 +( 1.149 + nss_dbm_db_t *db 1.150 +); 1.151 + 1.152 +NSS_EXTERN CK_VERSION 1.153 +nss_dbm_db_get_format_version 1.154 +( 1.155 + nss_dbm_db_t *db 1.156 +); 1.157 + 1.158 +NSS_EXTERN CK_RV 1.159 +nss_dbm_db_set_label 1.160 +( 1.161 + nss_dbm_db_t *db, 1.162 + NSSUTF8 *label 1.163 +); 1.164 + 1.165 +NSS_EXTERN NSSUTF8 * 1.166 +nss_dbm_db_get_label 1.167 +( 1.168 + nss_dbm_db_t *db, 1.169 + NSSArena *arena, 1.170 + CK_RV *pError 1.171 +); 1.172 + 1.173 +NSS_EXTERN CK_RV 1.174 +nss_dbm_db_delete_object 1.175 +( 1.176 + nss_dbm_dbt_t *dbt 1.177 +); 1.178 + 1.179 +NSS_EXTERN nss_dbm_dbt_t * 1.180 +nss_dbm_db_create_object 1.181 +( 1.182 + NSSArena *arena, 1.183 + nss_dbm_db_t *db, 1.184 + CK_ATTRIBUTE_PTR pTemplate, 1.185 + CK_ULONG ulAttributeCount, 1.186 + CK_RV *pError, 1.187 + CK_ULONG *pdbrv 1.188 +); 1.189 + 1.190 +NSS_EXTERN CK_RV 1.191 +nss_dbm_db_find_objects 1.192 +( 1.193 + nss_dbm_find_t *find, 1.194 + nss_dbm_db_t *db, 1.195 + CK_ATTRIBUTE_PTR pTemplate, 1.196 + CK_ULONG ulAttributeCount, 1.197 + CK_ULONG *pdbrv 1.198 +); 1.199 + 1.200 +NSS_EXTERN CK_BBOOL 1.201 +nss_dbm_db_object_still_exists 1.202 +( 1.203 + nss_dbm_dbt_t *dbt 1.204 +); 1.205 + 1.206 +NSS_EXTERN CK_ULONG 1.207 +nss_dbm_db_get_object_attribute_count 1.208 +( 1.209 + nss_dbm_dbt_t *dbt, 1.210 + CK_RV *pError, 1.211 + CK_ULONG *pdbrv 1.212 +); 1.213 + 1.214 +NSS_EXTERN CK_RV 1.215 +nss_dbm_db_get_object_attribute_types 1.216 +( 1.217 + nss_dbm_dbt_t *dbt, 1.218 + CK_ATTRIBUTE_TYPE_PTR typeArray, 1.219 + CK_ULONG ulCount, 1.220 + CK_ULONG *pdbrv 1.221 +); 1.222 + 1.223 +NSS_EXTERN CK_ULONG 1.224 +nss_dbm_db_get_object_attribute_size 1.225 +( 1.226 + nss_dbm_dbt_t *dbt, 1.227 + CK_ATTRIBUTE_TYPE type, 1.228 + CK_RV *pError, 1.229 + CK_ULONG *pdbrv 1.230 +); 1.231 + 1.232 +NSS_EXTERN NSSItem * 1.233 +nss_dbm_db_get_object_attribute 1.234 +( 1.235 + nss_dbm_dbt_t *dbt, 1.236 + NSSArena *arena, 1.237 + CK_ATTRIBUTE_TYPE type, 1.238 + CK_RV *pError, 1.239 + CK_ULONG *pdbrv 1.240 +); 1.241 + 1.242 +NSS_EXTERN CK_RV 1.243 +nss_dbm_db_set_object_attribute 1.244 +( 1.245 + nss_dbm_dbt_t *dbt, 1.246 + CK_ATTRIBUTE_TYPE type, 1.247 + NSSItem *value, 1.248 + CK_ULONG *pdbrv 1.249 +); 1.250 + 1.251 +#endif /* CKDBM_H */