tor-browser

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

object.c (4883B)


      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 #include "ckdbm.h"
      6 
      7 static void
      8 nss_dbm_mdObject_Finalize(
      9    NSSCKMDObject *mdObject,
     10    NSSCKFWObject *fwObject,
     11    NSSCKMDSession *mdSession,
     12    NSSCKFWSession *fwSession,
     13    NSSCKMDToken *mdToken,
     14    NSSCKFWToken *fwToken,
     15    NSSCKMDInstance *mdInstance,
     16    NSSCKFWInstance *fwInstance)
     17 {
     18    ;
     19 }
     20 
     21 static CK_RV
     22 nss_dbm_mdObject_Destroy(
     23    NSSCKMDObject *mdObject,
     24    NSSCKFWObject *fwObject,
     25    NSSCKMDSession *mdSession,
     26    NSSCKFWSession *fwSession,
     27    NSSCKMDToken *mdToken,
     28    NSSCKFWToken *fwToken,
     29    NSSCKMDInstance *mdInstance,
     30    NSSCKFWInstance *fwInstance)
     31 {
     32    nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc;
     33    return nss_dbm_db_delete_object(object->handle);
     34 }
     35 
     36 static CK_ULONG
     37 nss_dbm_mdObject_GetAttributeCount(
     38    NSSCKMDObject *mdObject,
     39    NSSCKFWObject *fwObject,
     40    NSSCKMDSession *mdSession,
     41    NSSCKFWSession *fwSession,
     42    NSSCKMDToken *mdToken,
     43    NSSCKFWToken *fwToken,
     44    NSSCKMDInstance *mdInstance,
     45    NSSCKFWInstance *fwInstance,
     46    CK_RV *pError)
     47 {
     48    nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc;
     49    nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc;
     50    return nss_dbm_db_get_object_attribute_count(object->handle, pError,
     51                                                 &session->deviceError);
     52 }
     53 
     54 static CK_RV
     55 nss_dbm_mdObject_GetAttributeTypes(
     56    NSSCKMDObject *mdObject,
     57    NSSCKFWObject *fwObject,
     58    NSSCKMDSession *mdSession,
     59    NSSCKFWSession *fwSession,
     60    NSSCKMDToken *mdToken,
     61    NSSCKFWToken *fwToken,
     62    NSSCKMDInstance *mdInstance,
     63    NSSCKFWInstance *fwInstance,
     64    CK_ATTRIBUTE_TYPE_PTR typeArray,
     65    CK_ULONG ulCount)
     66 {
     67    nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc;
     68    nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc;
     69    return nss_dbm_db_get_object_attribute_types(object->handle, typeArray,
     70                                                 ulCount, &session->deviceError);
     71 }
     72 
     73 static CK_ULONG
     74 nss_dbm_mdObject_GetAttributeSize(
     75    NSSCKMDObject *mdObject,
     76    NSSCKFWObject *fwObject,
     77    NSSCKMDSession *mdSession,
     78    NSSCKFWSession *fwSession,
     79    NSSCKMDToken *mdToken,
     80    NSSCKFWToken *fwToken,
     81    NSSCKMDInstance *mdInstance,
     82    NSSCKFWInstance *fwInstance,
     83    CK_ATTRIBUTE_TYPE attribute,
     84    CK_RV *pError)
     85 {
     86    nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc;
     87    nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc;
     88    return nss_dbm_db_get_object_attribute_size(object->handle, attribute, pError,
     89                                                &session->deviceError);
     90 }
     91 
     92 static NSSItem *
     93 nss_dbm_mdObject_GetAttribute(
     94    NSSCKMDObject *mdObject,
     95    NSSCKFWObject *fwObject,
     96    NSSCKMDSession *mdSession,
     97    NSSCKFWSession *fwSession,
     98    NSSCKMDToken *mdToken,
     99    NSSCKFWToken *fwToken,
    100    NSSCKMDInstance *mdInstance,
    101    NSSCKFWInstance *fwInstance,
    102    CK_ATTRIBUTE_TYPE attribute,
    103    CK_RV *pError)
    104 {
    105    nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc;
    106    nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc;
    107    return nss_dbm_db_get_object_attribute(object->handle, object->arena, attribute,
    108                                           pError, &session->deviceError);
    109 }
    110 
    111 static CK_RV
    112 nss_dbm_mdObject_SetAttribute(
    113    NSSCKMDObject *mdObject,
    114    NSSCKFWObject *fwObject,
    115    NSSCKMDSession *mdSession,
    116    NSSCKFWSession *fwSession,
    117    NSSCKMDToken *mdToken,
    118    NSSCKFWToken *fwToken,
    119    NSSCKMDInstance *mdInstance,
    120    NSSCKFWInstance *fwInstance,
    121    CK_ATTRIBUTE_TYPE attribute,
    122    NSSItem *value)
    123 {
    124    nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc;
    125    nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc;
    126    return nss_dbm_db_set_object_attribute(object->handle, attribute, value,
    127                                           &session->deviceError);
    128 }
    129 
    130 NSS_IMPLEMENT NSSCKMDObject *
    131 nss_dbm_mdObject_factory(
    132    nss_dbm_object_t *object,
    133    CK_RV *pError)
    134 {
    135    NSSCKMDObject *rv;
    136 
    137    rv = nss_ZNEW(object->arena, NSSCKMDObject);
    138    if ((NSSCKMDObject *)NULL == rv) {
    139        *pError = CKR_HOST_MEMORY;
    140        return (NSSCKMDObject *)NULL;
    141    }
    142 
    143    rv->etc = (void *)object;
    144    rv->Finalize = nss_dbm_mdObject_Finalize;
    145    rv->Destroy = nss_dbm_mdObject_Destroy;
    146    /*  IsTokenObject can be deferred */
    147    rv->GetAttributeCount = nss_dbm_mdObject_GetAttributeCount;
    148    rv->GetAttributeTypes = nss_dbm_mdObject_GetAttributeTypes;
    149    rv->GetAttributeSize = nss_dbm_mdObject_GetAttributeSize;
    150    rv->GetAttribute = nss_dbm_mdObject_GetAttribute;
    151    rv->SetAttribute = nss_dbm_mdObject_SetAttribute;
    152    /*  GetObjectSize can be deferred */
    153 
    154    return rv;
    155 }