diff options
Diffstat (limited to 'nss/lib/ckfw/find.c')
-rw-r--r-- | nss/lib/ckfw/find.c | 437 |
1 files changed, 210 insertions, 227 deletions
diff --git a/nss/lib/ckfw/find.c b/nss/lib/ckfw/find.c index 8a8a541..55732e6 100644 --- a/nss/lib/ckfw/find.c +++ b/nss/lib/ckfw/find.c @@ -21,7 +21,7 @@ * * -- public accessors -- * NSSCKFWFindObjects_GetMDFindObjects - * + * * -- implement public accessors -- * nssCKFWFindObjects_GetMDFindObjects * @@ -32,17 +32,17 @@ */ struct NSSCKFWFindObjectsStr { - NSSCKFWMutex *mutex; /* merely to serialise the MDObject calls */ - NSSCKMDFindObjects *mdfo1; - NSSCKMDFindObjects *mdfo2; - NSSCKFWSession *fwSession; - NSSCKMDSession *mdSession; - NSSCKFWToken *fwToken; - NSSCKMDToken *mdToken; - NSSCKFWInstance *fwInstance; - NSSCKMDInstance *mdInstance; - - NSSCKMDFindObjects *mdFindObjects; /* varies */ + NSSCKFWMutex *mutex; /* merely to serialise the MDObject calls */ + NSSCKMDFindObjects *mdfo1; + NSSCKMDFindObjects *mdfo2; + NSSCKFWSession *fwSession; + NSSCKMDSession *mdSession; + NSSCKFWToken *fwToken; + NSSCKMDToken *mdToken; + NSSCKFWInstance *fwInstance; + NSSCKMDInstance *mdInstance; + + NSSCKMDFindObjects *mdFindObjects; /* varies */ }; #ifdef DEBUG @@ -58,30 +58,24 @@ struct NSSCKFWFindObjectsStr { */ static CK_RV -findObjects_add_pointer -( - const NSSCKFWFindObjects *fwFindObjects -) +findObjects_add_pointer( + const NSSCKFWFindObjects *fwFindObjects) { - return CKR_OK; + return CKR_OK; } static CK_RV -findObjects_remove_pointer -( - const NSSCKFWFindObjects *fwFindObjects -) +findObjects_remove_pointer( + const NSSCKFWFindObjects *fwFindObjects) { - return CKR_OK; + return CKR_OK; } NSS_IMPLEMENT CK_RV -nssCKFWFindObjects_verifyPointer -( - const NSSCKFWFindObjects *fwFindObjects -) +nssCKFWFindObjects_verifyPointer( + const NSSCKFWFindObjects *fwFindObjects) { - return CKR_OK; + return CKR_OK; } #endif /* DEBUG */ @@ -91,128 +85,123 @@ nssCKFWFindObjects_verifyPointer * */ NSS_EXTERN NSSCKFWFindObjects * -nssCKFWFindObjects_Create -( - NSSCKFWSession *fwSession, - NSSCKFWToken *fwToken, - NSSCKFWInstance *fwInstance, - NSSCKMDFindObjects *mdFindObjects1, - NSSCKMDFindObjects *mdFindObjects2, - CK_RV *pError -) +nssCKFWFindObjects_Create( + NSSCKFWSession *fwSession, + NSSCKFWToken *fwToken, + NSSCKFWInstance *fwInstance, + NSSCKMDFindObjects *mdFindObjects1, + NSSCKMDFindObjects *mdFindObjects2, + CK_RV *pError) { - NSSCKFWFindObjects *fwFindObjects = NULL; - NSSCKMDSession *mdSession; - NSSCKMDToken *mdToken; - NSSCKMDInstance *mdInstance; - - mdSession = nssCKFWSession_GetMDSession(fwSession); - mdToken = nssCKFWToken_GetMDToken(fwToken); - mdInstance = nssCKFWInstance_GetMDInstance(fwInstance); - - fwFindObjects = nss_ZNEW(NULL, NSSCKFWFindObjects); - if (!fwFindObjects) { - *pError = CKR_HOST_MEMORY; - goto loser; - } - - fwFindObjects->mdfo1 = mdFindObjects1; - fwFindObjects->mdfo2 = mdFindObjects2; - fwFindObjects->fwSession = fwSession; - fwFindObjects->mdSession = mdSession; - fwFindObjects->fwToken = fwToken; - fwFindObjects->mdToken = mdToken; - fwFindObjects->fwInstance = fwInstance; - fwFindObjects->mdInstance = mdInstance; - - fwFindObjects->mutex = nssCKFWInstance_CreateMutex(fwInstance, NULL, pError); - if (!fwFindObjects->mutex) { - goto loser; - } + NSSCKFWFindObjects *fwFindObjects = NULL; + NSSCKMDSession *mdSession; + NSSCKMDToken *mdToken; + NSSCKMDInstance *mdInstance; + + mdSession = nssCKFWSession_GetMDSession(fwSession); + mdToken = nssCKFWToken_GetMDToken(fwToken); + mdInstance = nssCKFWInstance_GetMDInstance(fwInstance); + + fwFindObjects = nss_ZNEW(NULL, NSSCKFWFindObjects); + if (!fwFindObjects) { + *pError = CKR_HOST_MEMORY; + goto loser; + } + + fwFindObjects->mdfo1 = mdFindObjects1; + fwFindObjects->mdfo2 = mdFindObjects2; + fwFindObjects->fwSession = fwSession; + fwFindObjects->mdSession = mdSession; + fwFindObjects->fwToken = fwToken; + fwFindObjects->mdToken = mdToken; + fwFindObjects->fwInstance = fwInstance; + fwFindObjects->mdInstance = mdInstance; + + fwFindObjects->mutex = nssCKFWInstance_CreateMutex(fwInstance, NULL, pError); + if (!fwFindObjects->mutex) { + goto loser; + } #ifdef DEBUG - *pError = findObjects_add_pointer(fwFindObjects); - if( CKR_OK != *pError ) { - goto loser; - } + *pError = findObjects_add_pointer(fwFindObjects); + if (CKR_OK != *pError) { + goto loser; + } #endif /* DEBUG */ - return fwFindObjects; + return fwFindObjects; - loser: - if( fwFindObjects ) { - if( NULL != mdFindObjects1 ) { - if( NULL != mdFindObjects1->Final ) { - fwFindObjects->mdFindObjects = mdFindObjects1; - mdFindObjects1->Final(mdFindObjects1, fwFindObjects, mdSession, - fwSession, mdToken, fwToken, mdInstance, fwInstance); - } - } +loser: + if (fwFindObjects) { + if (NULL != mdFindObjects1) { + if (NULL != mdFindObjects1->Final) { + fwFindObjects->mdFindObjects = mdFindObjects1; + mdFindObjects1->Final(mdFindObjects1, fwFindObjects, mdSession, + fwSession, mdToken, fwToken, mdInstance, fwInstance); + } + } - if( NULL != mdFindObjects2 ) { - if( NULL != mdFindObjects2->Final ) { - fwFindObjects->mdFindObjects = mdFindObjects2; - mdFindObjects2->Final(mdFindObjects2, fwFindObjects, mdSession, - fwSession, mdToken, fwToken, mdInstance, fwInstance); - } - } + if (NULL != mdFindObjects2) { + if (NULL != mdFindObjects2->Final) { + fwFindObjects->mdFindObjects = mdFindObjects2; + mdFindObjects2->Final(mdFindObjects2, fwFindObjects, mdSession, + fwSession, mdToken, fwToken, mdInstance, fwInstance); + } + } - nss_ZFreeIf(fwFindObjects); - } + nss_ZFreeIf(fwFindObjects); + } - if( CKR_OK == *pError ) { - *pError = CKR_GENERAL_ERROR; - } + if (CKR_OK == *pError) { + *pError = CKR_GENERAL_ERROR; + } - return (NSSCKFWFindObjects *)NULL; + return (NSSCKFWFindObjects *)NULL; } - /* * nssCKFWFindObjects_Destroy * */ NSS_EXTERN void -nssCKFWFindObjects_Destroy -( - NSSCKFWFindObjects *fwFindObjects -) +nssCKFWFindObjects_Destroy( + NSSCKFWFindObjects *fwFindObjects) { #ifdef NSSDEBUG - if( CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects) ) { - return; - } + if (CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects)) { + return; + } #endif /* NSSDEBUG */ - (void)nssCKFWMutex_Destroy(fwFindObjects->mutex); + (void)nssCKFWMutex_Destroy(fwFindObjects->mutex); - if (fwFindObjects->mdfo1) { - if (fwFindObjects->mdfo1->Final) { - fwFindObjects->mdFindObjects = fwFindObjects->mdfo1; - fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects, - fwFindObjects->mdSession, fwFindObjects->fwSession, - fwFindObjects->mdToken, fwFindObjects->fwToken, - fwFindObjects->mdInstance, fwFindObjects->fwInstance); + if (fwFindObjects->mdfo1) { + if (fwFindObjects->mdfo1->Final) { + fwFindObjects->mdFindObjects = fwFindObjects->mdfo1; + fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects, + fwFindObjects->mdSession, fwFindObjects->fwSession, + fwFindObjects->mdToken, fwFindObjects->fwToken, + fwFindObjects->mdInstance, fwFindObjects->fwInstance); + } } - } - - if (fwFindObjects->mdfo2) { - if (fwFindObjects->mdfo2->Final) { - fwFindObjects->mdFindObjects = fwFindObjects->mdfo2; - fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects, - fwFindObjects->mdSession, fwFindObjects->fwSession, - fwFindObjects->mdToken, fwFindObjects->fwToken, - fwFindObjects->mdInstance, fwFindObjects->fwInstance); + + if (fwFindObjects->mdfo2) { + if (fwFindObjects->mdfo2->Final) { + fwFindObjects->mdFindObjects = fwFindObjects->mdfo2; + fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects, + fwFindObjects->mdSession, fwFindObjects->fwSession, + fwFindObjects->mdToken, fwFindObjects->fwToken, + fwFindObjects->mdInstance, fwFindObjects->fwInstance); + } } - } - nss_ZFreeIf(fwFindObjects); + nss_ZFreeIf(fwFindObjects); #ifdef DEBUG - (void)findObjects_remove_pointer(fwFindObjects); + (void)findObjects_remove_pointer(fwFindObjects); #endif /* DEBUG */ - return; + return; } /* @@ -220,18 +209,16 @@ nssCKFWFindObjects_Destroy * */ NSS_EXTERN NSSCKMDFindObjects * -nssCKFWFindObjects_GetMDFindObjects -( - NSSCKFWFindObjects *fwFindObjects -) +nssCKFWFindObjects_GetMDFindObjects( + NSSCKFWFindObjects *fwFindObjects) { #ifdef NSSDEBUG - if( CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects) ) { - return (NSSCKMDFindObjects *)NULL; - } + if (CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects)) { + return (NSSCKMDFindObjects *)NULL; + } #endif /* NSSDEBUG */ - return fwFindObjects->mdFindObjects; + return fwFindObjects->mdFindObjects; } /* @@ -239,89 +226,87 @@ nssCKFWFindObjects_GetMDFindObjects * */ NSS_EXTERN NSSCKFWObject * -nssCKFWFindObjects_Next -( - NSSCKFWFindObjects *fwFindObjects, - NSSArena *arenaOpt, - CK_RV *pError -) +nssCKFWFindObjects_Next( + NSSCKFWFindObjects *fwFindObjects, + NSSArena *arenaOpt, + CK_RV *pError) { - NSSCKMDObject *mdObject; - NSSCKFWObject *fwObject = (NSSCKFWObject *)NULL; - NSSArena *objArena; + NSSCKMDObject *mdObject; + NSSCKFWObject *fwObject = (NSSCKFWObject *)NULL; + NSSArena *objArena; #ifdef NSSDEBUG - if (!pError) { - return (NSSCKFWObject *)NULL; - } - - *pError = nssCKFWFindObjects_verifyPointer(fwFindObjects); - if( CKR_OK != *pError ) { - return (NSSCKFWObject *)NULL; - } -#endif /* NSSDEBUG */ + if (!pError) { + return (NSSCKFWObject *)NULL; + } - *pError = nssCKFWMutex_Lock(fwFindObjects->mutex); - if( CKR_OK != *pError ) { - return (NSSCKFWObject *)NULL; - } - - if (fwFindObjects->mdfo1) { - if (fwFindObjects->mdfo1->Next) { - fwFindObjects->mdFindObjects = fwFindObjects->mdfo1; - mdObject = fwFindObjects->mdfo1->Next(fwFindObjects->mdfo1, - fwFindObjects, fwFindObjects->mdSession, fwFindObjects->fwSession, - fwFindObjects->mdToken, fwFindObjects->fwToken, - fwFindObjects->mdInstance, fwFindObjects->fwInstance, - arenaOpt, pError); - if (!mdObject) { - if( CKR_OK != *pError ) { - goto done; - } + *pError = nssCKFWFindObjects_verifyPointer(fwFindObjects); + if (CKR_OK != *pError) { + return (NSSCKFWObject *)NULL; + } +#endif /* NSSDEBUG */ - /* All done. */ - fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects, - fwFindObjects->mdSession, fwFindObjects->fwSession, - fwFindObjects->mdToken, fwFindObjects->fwToken, - fwFindObjects->mdInstance, fwFindObjects->fwInstance); - fwFindObjects->mdfo1 = (NSSCKMDFindObjects *)NULL; - } else { - goto wrap; - } + *pError = nssCKFWMutex_Lock(fwFindObjects->mutex); + if (CKR_OK != *pError) { + return (NSSCKFWObject *)NULL; } - } - - if (fwFindObjects->mdfo2) { - if (fwFindObjects->mdfo2->Next) { - fwFindObjects->mdFindObjects = fwFindObjects->mdfo2; - mdObject = fwFindObjects->mdfo2->Next(fwFindObjects->mdfo2, - fwFindObjects, fwFindObjects->mdSession, fwFindObjects->fwSession, - fwFindObjects->mdToken, fwFindObjects->fwToken, - fwFindObjects->mdInstance, fwFindObjects->fwInstance, - arenaOpt, pError); - if (!mdObject) { - if( CKR_OK != *pError ) { - goto done; + + if (fwFindObjects->mdfo1) { + if (fwFindObjects->mdfo1->Next) { + fwFindObjects->mdFindObjects = fwFindObjects->mdfo1; + mdObject = fwFindObjects->mdfo1->Next(fwFindObjects->mdfo1, + fwFindObjects, fwFindObjects->mdSession, fwFindObjects->fwSession, + fwFindObjects->mdToken, fwFindObjects->fwToken, + fwFindObjects->mdInstance, fwFindObjects->fwInstance, + arenaOpt, pError); + if (!mdObject) { + if (CKR_OK != *pError) { + goto done; + } + + /* All done. */ + fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects, + fwFindObjects->mdSession, fwFindObjects->fwSession, + fwFindObjects->mdToken, fwFindObjects->fwToken, + fwFindObjects->mdInstance, fwFindObjects->fwInstance); + fwFindObjects->mdfo1 = (NSSCKMDFindObjects *)NULL; + } else { + goto wrap; + } } + } - /* All done. */ - fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects, - fwFindObjects->mdSession, fwFindObjects->fwSession, - fwFindObjects->mdToken, fwFindObjects->fwToken, - fwFindObjects->mdInstance, fwFindObjects->fwInstance); - fwFindObjects->mdfo2 = (NSSCKMDFindObjects *)NULL; - } else { - goto wrap; - } + if (fwFindObjects->mdfo2) { + if (fwFindObjects->mdfo2->Next) { + fwFindObjects->mdFindObjects = fwFindObjects->mdfo2; + mdObject = fwFindObjects->mdfo2->Next(fwFindObjects->mdfo2, + fwFindObjects, fwFindObjects->mdSession, fwFindObjects->fwSession, + fwFindObjects->mdToken, fwFindObjects->fwToken, + fwFindObjects->mdInstance, fwFindObjects->fwInstance, + arenaOpt, pError); + if (!mdObject) { + if (CKR_OK != *pError) { + goto done; + } + + /* All done. */ + fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects, + fwFindObjects->mdSession, fwFindObjects->fwSession, + fwFindObjects->mdToken, fwFindObjects->fwToken, + fwFindObjects->mdInstance, fwFindObjects->fwInstance); + fwFindObjects->mdfo2 = (NSSCKMDFindObjects *)NULL; + } else { + goto wrap; + } + } } - } - - /* No more objects */ - *pError = CKR_OK; - goto done; - - wrap: - /* + + /* No more objects */ + *pError = CKR_OK; + goto done; + +wrap: + /* * This seems is less than ideal-- we should determine if it's a token * object or a session object, and use the appropriate arena. * But that duplicates logic in nssCKFWObject_IsTokenObject. @@ -336,26 +321,26 @@ nssCKFWFindObjects_Next * exist in the cache from their initial creation). So this code is correct, * but it depends on nssCKFWObject_Create caching all objects. */ - objArena = nssCKFWToken_GetArena(fwFindObjects->fwToken, pError); - if (!objArena) { - if( CKR_OK == *pError ) { - *pError = CKR_HOST_MEMORY; + objArena = nssCKFWToken_GetArena(fwFindObjects->fwToken, pError); + if (!objArena) { + if (CKR_OK == *pError) { + *pError = CKR_HOST_MEMORY; + } + goto done; } - goto done; - } - - fwObject = nssCKFWObject_Create(objArena, mdObject, - NULL, fwFindObjects->fwToken, - fwFindObjects->fwInstance, pError); - if (!fwObject) { - if( CKR_OK == *pError ) { - *pError = CKR_GENERAL_ERROR; + + fwObject = nssCKFWObject_Create(objArena, mdObject, + NULL, fwFindObjects->fwToken, + fwFindObjects->fwInstance, pError); + if (!fwObject) { + if (CKR_OK == *pError) { + *pError = CKR_GENERAL_ERROR; + } } - } - done: - (void)nssCKFWMutex_Unlock(fwFindObjects->mutex); - return fwObject; +done: + (void)nssCKFWMutex_Unlock(fwFindObjects->mutex); + return fwObject; } /* @@ -364,16 +349,14 @@ nssCKFWFindObjects_Next */ NSS_EXTERN NSSCKMDFindObjects * -NSSCKFWFindObjects_GetMDFindObjects -( - NSSCKFWFindObjects *fwFindObjects -) +NSSCKFWFindObjects_GetMDFindObjects( + NSSCKFWFindObjects *fwFindObjects) { #ifdef DEBUG - if( CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects) ) { - return (NSSCKMDFindObjects *)NULL; - } + if (CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects)) { + return (NSSCKMDFindObjects *)NULL; + } #endif /* DEBUG */ - return nssCKFWFindObjects_GetMDFindObjects(fwFindObjects); + return nssCKFWFindObjects_GetMDFindObjects(fwFindObjects); } |