1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/ckfw/dbm/object.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,171 @@ 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 +#include "ckdbm.h" 1.9 + 1.10 +static void 1.11 +nss_dbm_mdObject_Finalize 1.12 +( 1.13 + NSSCKMDObject *mdObject, 1.14 + NSSCKFWObject *fwObject, 1.15 + NSSCKMDSession *mdSession, 1.16 + NSSCKFWSession *fwSession, 1.17 + NSSCKMDToken *mdToken, 1.18 + NSSCKFWToken *fwToken, 1.19 + NSSCKMDInstance *mdInstance, 1.20 + NSSCKFWInstance *fwInstance 1.21 +) 1.22 +{ 1.23 + ; 1.24 +} 1.25 + 1.26 +static CK_RV 1.27 +nss_dbm_mdObject_Destroy 1.28 +( 1.29 + NSSCKMDObject *mdObject, 1.30 + NSSCKFWObject *fwObject, 1.31 + NSSCKMDSession *mdSession, 1.32 + NSSCKFWSession *fwSession, 1.33 + NSSCKMDToken *mdToken, 1.34 + NSSCKFWToken *fwToken, 1.35 + NSSCKMDInstance *mdInstance, 1.36 + NSSCKFWInstance *fwInstance 1.37 +) 1.38 +{ 1.39 + nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; 1.40 + return nss_dbm_db_delete_object(object->handle); 1.41 +} 1.42 + 1.43 +static CK_ULONG 1.44 +nss_dbm_mdObject_GetAttributeCount 1.45 +( 1.46 + NSSCKMDObject *mdObject, 1.47 + NSSCKFWObject *fwObject, 1.48 + NSSCKMDSession *mdSession, 1.49 + NSSCKFWSession *fwSession, 1.50 + NSSCKMDToken *mdToken, 1.51 + NSSCKFWToken *fwToken, 1.52 + NSSCKMDInstance *mdInstance, 1.53 + NSSCKFWInstance *fwInstance, 1.54 + CK_RV *pError 1.55 +) 1.56 +{ 1.57 + nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; 1.58 + nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; 1.59 + return nss_dbm_db_get_object_attribute_count(object->handle, pError, 1.60 + &session->deviceError); 1.61 +} 1.62 + 1.63 +static CK_RV 1.64 +nss_dbm_mdObject_GetAttributeTypes 1.65 +( 1.66 + NSSCKMDObject *mdObject, 1.67 + NSSCKFWObject *fwObject, 1.68 + NSSCKMDSession *mdSession, 1.69 + NSSCKFWSession *fwSession, 1.70 + NSSCKMDToken *mdToken, 1.71 + NSSCKFWToken *fwToken, 1.72 + NSSCKMDInstance *mdInstance, 1.73 + NSSCKFWInstance *fwInstance, 1.74 + CK_ATTRIBUTE_TYPE_PTR typeArray, 1.75 + CK_ULONG ulCount 1.76 +) 1.77 +{ 1.78 + nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; 1.79 + nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; 1.80 + return nss_dbm_db_get_object_attribute_types(object->handle, typeArray, 1.81 + ulCount, &session->deviceError); 1.82 +} 1.83 + 1.84 +static CK_ULONG 1.85 +nss_dbm_mdObject_GetAttributeSize 1.86 +( 1.87 + NSSCKMDObject *mdObject, 1.88 + NSSCKFWObject *fwObject, 1.89 + NSSCKMDSession *mdSession, 1.90 + NSSCKFWSession *fwSession, 1.91 + NSSCKMDToken *mdToken, 1.92 + NSSCKFWToken *fwToken, 1.93 + NSSCKMDInstance *mdInstance, 1.94 + NSSCKFWInstance *fwInstance, 1.95 + CK_ATTRIBUTE_TYPE attribute, 1.96 + CK_RV *pError 1.97 +) 1.98 +{ 1.99 + nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; 1.100 + nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; 1.101 + return nss_dbm_db_get_object_attribute_size(object->handle, attribute, pError, 1.102 + &session->deviceError); 1.103 +} 1.104 + 1.105 +static NSSItem * 1.106 +nss_dbm_mdObject_GetAttribute 1.107 +( 1.108 + NSSCKMDObject *mdObject, 1.109 + NSSCKFWObject *fwObject, 1.110 + NSSCKMDSession *mdSession, 1.111 + NSSCKFWSession *fwSession, 1.112 + NSSCKMDToken *mdToken, 1.113 + NSSCKFWToken *fwToken, 1.114 + NSSCKMDInstance *mdInstance, 1.115 + NSSCKFWInstance *fwInstance, 1.116 + CK_ATTRIBUTE_TYPE attribute, 1.117 + CK_RV *pError 1.118 +) 1.119 +{ 1.120 + nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; 1.121 + nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; 1.122 + return nss_dbm_db_get_object_attribute(object->handle, object->arena, attribute, 1.123 + pError, &session->deviceError); 1.124 +} 1.125 + 1.126 +static CK_RV 1.127 +nss_dbm_mdObject_SetAttribute 1.128 +( 1.129 + NSSCKMDObject *mdObject, 1.130 + NSSCKFWObject *fwObject, 1.131 + NSSCKMDSession *mdSession, 1.132 + NSSCKFWSession *fwSession, 1.133 + NSSCKMDToken *mdToken, 1.134 + NSSCKFWToken *fwToken, 1.135 + NSSCKMDInstance *mdInstance, 1.136 + NSSCKFWInstance *fwInstance, 1.137 + CK_ATTRIBUTE_TYPE attribute, 1.138 + NSSItem *value 1.139 +) 1.140 +{ 1.141 + nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; 1.142 + nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; 1.143 + return nss_dbm_db_set_object_attribute(object->handle, attribute, value, 1.144 + &session->deviceError); 1.145 +} 1.146 + 1.147 +NSS_IMPLEMENT NSSCKMDObject * 1.148 +nss_dbm_mdObject_factory 1.149 +( 1.150 + nss_dbm_object_t *object, 1.151 + CK_RV *pError 1.152 +) 1.153 +{ 1.154 + NSSCKMDObject *rv; 1.155 + 1.156 + rv = nss_ZNEW(object->arena, NSSCKMDObject); 1.157 + if( (NSSCKMDObject *)NULL == rv ) { 1.158 + *pError = CKR_HOST_MEMORY; 1.159 + return (NSSCKMDObject *)NULL; 1.160 + } 1.161 + 1.162 + rv->etc = (void *)object; 1.163 + rv->Finalize = nss_dbm_mdObject_Finalize; 1.164 + rv->Destroy = nss_dbm_mdObject_Destroy; 1.165 + /* IsTokenObject can be deferred */ 1.166 + rv->GetAttributeCount = nss_dbm_mdObject_GetAttributeCount; 1.167 + rv->GetAttributeTypes = nss_dbm_mdObject_GetAttributeTypes; 1.168 + rv->GetAttributeSize = nss_dbm_mdObject_GetAttributeSize; 1.169 + rv->GetAttribute = nss_dbm_mdObject_GetAttribute; 1.170 + rv->SetAttribute = nss_dbm_mdObject_SetAttribute; 1.171 + /* GetObjectSize can be deferred */ 1.172 + 1.173 + return rv; 1.174 +}