static CK_VERSION nss_dbm_mdToken_GetHardwareVersion( NSSCKMDToken *mdToken, NSSCKFWToken *fwToken, NSSCKMDInstance *mdInstance, NSSCKFWInstance *fwInstance) { nss_dbm_token_t *token = (nss_dbm_token_t *)mdToken->etc; return nss_dbm_db_get_format_version(token->slot->token_db); }
NSS_IMPLEMENT nss_dbm_db_t * nss_dbm_db_open ( NSSArena *arena, NSSCKFWInstance *fwInstance, char *filename, int flags, CK_RV *pError ) { nss_dbm_db_t *rv; CK_VERSION db_version; rv = nss_ZNEW(arena, nss_dbm_db_t); if( (nss_dbm_db_t *)NULL == rv ) { *pError = CKR_HOST_MEMORY; return (nss_dbm_db_t *)NULL; } rv->db = dbopen(filename, flags, 0600, DB_HASH, (const void *)NULL); if( (DB *)NULL == rv->db ) { *pError = CKR_TOKEN_NOT_PRESENT; return (nss_dbm_db_t *)NULL; } rv->crustylock = NSSCKFWInstance_CreateMutex(fwInstance, arena, pError); if( (NSSCKFWMutex *)NULL == rv->crustylock ) { return (nss_dbm_db_t *)NULL; } db_version = nss_dbm_db_get_format_version(rv); if( db_version.major != nss_dbm_db_format_version.major ) { nss_dbm_db_close(rv); *pError = CKR_TOKEN_NOT_RECOGNIZED; return (nss_dbm_db_t *)NULL; } return rv; }