mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 10:57:34 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
165
security/nss/lib/ckfw/dbm/slot.c
Normal file
165
security/nss/lib/ckfw/dbm/slot.c
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "ckdbm.h"
|
||||
|
||||
static CK_RV
|
||||
nss_dbm_mdSlot_Initialize(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance)
|
||||
{
|
||||
nss_dbm_slot_t *slot = (nss_dbm_slot_t *)mdSlot->etc;
|
||||
nss_dbm_instance_t *instance = (nss_dbm_instance_t *)mdInstance->etc;
|
||||
CK_RV rv = CKR_OK;
|
||||
|
||||
slot->token_db = nss_dbm_db_open(instance->arena, fwInstance, slot->filename,
|
||||
slot->flags, &rv);
|
||||
if ((nss_dbm_db_t *)NULL == slot->token_db) {
|
||||
if (CKR_TOKEN_NOT_PRESENT == rv) {
|
||||
/* This is not an error-- just means "the token isn't there" */
|
||||
rv = CKR_OK;
|
||||
}
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
static void
|
||||
nss_dbm_mdSlot_Destroy(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance)
|
||||
{
|
||||
nss_dbm_slot_t *slot = (nss_dbm_slot_t *)mdSlot->etc;
|
||||
|
||||
if ((nss_dbm_db_t *)NULL != slot->token_db) {
|
||||
nss_dbm_db_close(slot->token_db);
|
||||
slot->token_db = (nss_dbm_db_t *)NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static NSSUTF8 *
|
||||
nss_dbm_mdSlot_GetSlotDescription(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance,
|
||||
CK_RV *pError)
|
||||
{
|
||||
return "Database";
|
||||
}
|
||||
|
||||
static NSSUTF8 *
|
||||
nss_dbm_mdSlot_GetManufacturerID(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance,
|
||||
CK_RV *pError)
|
||||
{
|
||||
return "Berkeley";
|
||||
}
|
||||
|
||||
static CK_BBOOL
|
||||
nss_dbm_mdSlot_GetTokenPresent(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance)
|
||||
{
|
||||
nss_dbm_slot_t *slot = (nss_dbm_slot_t *)mdSlot->etc;
|
||||
|
||||
if ((nss_dbm_db_t *)NULL == slot->token_db) {
|
||||
return CK_FALSE;
|
||||
} else {
|
||||
return CK_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static CK_BBOOL
|
||||
nss_dbm_mdSlot_GetRemovableDevice(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance)
|
||||
{
|
||||
/*
|
||||
* Well, this supports "tokens" (databases) that aren't there, so in
|
||||
* that sense they're removable. It'd be nice to handle databases
|
||||
* that suddenly disappear (NFS-mounted home directories and network
|
||||
* errors, for instance) but that's a harder problem. We'll say
|
||||
* we support removable devices, badly.
|
||||
*/
|
||||
|
||||
return CK_TRUE;
|
||||
}
|
||||
|
||||
/* nss_dbm_mdSlot_GetHardwareSlot defaults to CK_FALSE */
|
||||
/*
|
||||
* nss_dbm_mdSlot_GetHardwareVersion
|
||||
* nss_dbm_mdSlot_GetFirmwareVersion
|
||||
*
|
||||
* These are kinda fuzzy concepts here. I suppose we could return the
|
||||
* Berkeley DB version for one of them, if we had an actual number we
|
||||
* were confident in. But mcom's "dbm" has been hacked enough that I
|
||||
* don't really know from what "real" version it stems..
|
||||
*/
|
||||
|
||||
static NSSCKMDToken *
|
||||
nss_dbm_mdSlot_GetToken(
|
||||
NSSCKMDSlot *mdSlot,
|
||||
NSSCKFWSlot *fwSlot,
|
||||
NSSCKMDInstance *mdInstance,
|
||||
NSSCKFWInstance *fwInstance,
|
||||
CK_RV *pError)
|
||||
{
|
||||
nss_dbm_slot_t *slot = (nss_dbm_slot_t *)mdSlot->etc;
|
||||
return nss_dbm_mdToken_factory(slot, pError);
|
||||
}
|
||||
|
||||
NSS_IMPLEMENT NSSCKMDSlot *
|
||||
nss_dbm_mdSlot_factory(
|
||||
nss_dbm_instance_t *instance,
|
||||
char *filename,
|
||||
int flags,
|
||||
CK_RV *pError)
|
||||
{
|
||||
nss_dbm_slot_t *slot;
|
||||
NSSCKMDSlot *rv;
|
||||
|
||||
slot = nss_ZNEW(instance->arena, nss_dbm_slot_t);
|
||||
if ((nss_dbm_slot_t *)NULL == slot) {
|
||||
*pError = CKR_HOST_MEMORY;
|
||||
return (NSSCKMDSlot *)NULL;
|
||||
}
|
||||
|
||||
slot->instance = instance;
|
||||
slot->filename = filename;
|
||||
slot->flags = flags;
|
||||
slot->token_db = (nss_dbm_db_t *)NULL;
|
||||
|
||||
rv = nss_ZNEW(instance->arena, NSSCKMDSlot);
|
||||
if ((NSSCKMDSlot *)NULL == rv) {
|
||||
*pError = CKR_HOST_MEMORY;
|
||||
return (NSSCKMDSlot *)NULL;
|
||||
}
|
||||
|
||||
rv->etc = (void *)slot;
|
||||
rv->Initialize = nss_dbm_mdSlot_Initialize;
|
||||
rv->Destroy = nss_dbm_mdSlot_Destroy;
|
||||
rv->GetSlotDescription = nss_dbm_mdSlot_GetSlotDescription;
|
||||
rv->GetManufacturerID = nss_dbm_mdSlot_GetManufacturerID;
|
||||
rv->GetTokenPresent = nss_dbm_mdSlot_GetTokenPresent;
|
||||
rv->GetRemovableDevice = nss_dbm_mdSlot_GetRemovableDevice;
|
||||
/* GetHardwareSlot */
|
||||
/* GetHardwareVersion */
|
||||
/* GetFirmwareVersion */
|
||||
rv->GetToken = nss_dbm_mdSlot_GetToken;
|
||||
rv->null = (void *)NULL;
|
||||
|
||||
return rv;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue