/* 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 void nss_dbm_mdObject_Finalize( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance) { ; } static CK_RV nss_dbm_mdObject_Destroy( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance) { nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; return nss_dbm_db_delete_object(object->handle); } static CK_ULONG nss_dbm_mdObject_GetAttributeCount( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance, CK_RV *pError) { nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; return nss_dbm_db_get_object_attribute_count(object->handle, pError, &session->deviceError); } static CK_RV nss_dbm_mdObject_GetAttributeTypes( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance, CK_ATTRIBUTE_TYPE_PTR typeArray, CK_ULONG ulCount) { nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; return nss_dbm_db_get_object_attribute_types(object->handle, typeArray, ulCount, &session->deviceError); } static CK_ULONG nss_dbm_mdObject_GetAttributeSize( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance, CK_ATTRIBUTE_TYPE attribute, CK_RV *pError) { nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; return nss_dbm_db_get_object_attribute_size(object->handle, attribute, pError, &session->deviceError); } static NSSItem * nss_dbm_mdObject_GetAttribute( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance, CK_ATTRIBUTE_TYPE attribute, CK_RV *pError) { nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; return nss_dbm_db_get_object_attribute(object->handle, object->arena, attribute, pError, &session->deviceError); } static CK_RV nss_dbm_mdObject_SetAttribute( NSSCKMDObject *mdObject, NSSCKFWObject *fwObject, NSSCKMDSession *mdSession, NSSCKFWSession *fwSession, NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance, CK_ATTRIBUTE_TYPE attribute, NSSItem *value) { nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; return nss_dbm_db_set_object_attribute(object->handle, attribute, value, &session->deviceError); } NSS_IMPLEMENT NSSCKMDObject * nss_dbm_mdObject_factory( nss_dbm_object_t *object, CK_RV *pError) { NSSCKMDObject *rv; rv = nss_ZNEW(object->arena, NSSCKMDObject); if ((NSSCKMDObject *)NULL == rv) { *pError = CKR_HOST_MEMORY; return (NSSCKMDObject *)NULL; } rv->etc = (void *)object; rv->Finalize = nss_dbm_mdObject_Finalize; rv->Destroy = nss_dbm_mdObject_Destroy; /* IsTokenObject can be deferred */ rv->GetAttributeCount = nss_dbm_mdObject_GetAttributeCount; rv->GetAttributeTypes = nss_dbm_mdObject_GetAttributeTypes; rv->GetAttributeSize = nss_dbm_mdObject_GetAttributeSize; rv->GetAttribute = nss_dbm_mdObject_GetAttribute; rv->SetAttribute = nss_dbm_mdObject_SetAttribute; /* GetObjectSize can be deferred */ return rv; }