security/nss/lib/ckfw/dbm/object.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

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

mercurial