security/nss/lib/ckfw/capi/cinst.c
author Ryan VanderMeulen <ryanvm@gmail.com>
Wed, 01 May 2013 16:05:10 -0400
changeset 130538 05275490b9c18457c4459057a117afd6d6c9226d
parent 130535 0314d200873a8962e8556a656bbf9e4b26e23cfc
child 130699 c6f5c1bbcf761369c0d51f85ba1bb110f2f40fd8
permissions -rw-r--r--
Backed out changeset 0314d200873a (bug 858231) for Windows build bustage. CLOSED TREE

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifdef DEBUG
static const char CVS_ID[] = "@(#) $RCSfile$ $Revision$ $Date$";
#endif /* DEBUG */

#include "ckcapi.h"

/*
 * ckcapi/cinstance.c
 *
 * This file implements the NSSCKMDInstance object for the 
 * "capi" cryptoki module.
 */

/*
 * NSSCKMDInstance methods
 */

static CK_ULONG
ckcapi_mdInstance_GetNSlots
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance,
  CK_RV *pError
)
{
  return (CK_ULONG)1;
}

static CK_VERSION
ckcapi_mdInstance_GetCryptokiVersion
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance
)
{
  return nss_ckcapi_CryptokiVersion;
}

static NSSUTF8 *
ckcapi_mdInstance_GetManufacturerID
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance,
  CK_RV *pError
)
{
  return (NSSUTF8 *)nss_ckcapi_ManufacturerID;
}

static NSSUTF8 *
ckcapi_mdInstance_GetLibraryDescription
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance,
  CK_RV *pError
)
{
  return (NSSUTF8 *)nss_ckcapi_LibraryDescription;
}

static CK_VERSION
ckcapi_mdInstance_GetLibraryVersion
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance
)
{
  return nss_ckcapi_LibraryVersion;
}

static CK_RV
ckcapi_mdInstance_GetSlots
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance,
  NSSCKMDSlot *slots[]
)
{
  slots[0] = (NSSCKMDSlot *)&nss_ckcapi_mdSlot;
  return CKR_OK;
}

static CK_BBOOL
ckcapi_mdInstance_ModuleHandlesSessionObjects
(
  NSSCKMDInstance *mdInstance,
  NSSCKFWInstance *fwInstance
)
{
  /* we don't want to allow any session object creation, at least
   * until we can investigate whether or not we can use those objects
   */
  return CK_TRUE;
}

NSS_IMPLEMENT_DATA const NSSCKMDInstance
nss_ckcapi_mdInstance = {
  (void *)NULL, /* etc */
  NULL, /* Initialize */
  NULL, /* Finalize */
  ckcapi_mdInstance_GetNSlots,
  ckcapi_mdInstance_GetCryptokiVersion,
  ckcapi_mdInstance_GetManufacturerID,
  ckcapi_mdInstance_GetLibraryDescription,
  ckcapi_mdInstance_GetLibraryVersion,
  ckcapi_mdInstance_ModuleHandlesSessionObjects, 
  /*NULL, /* HandleSessionObjects */
  ckcapi_mdInstance_GetSlots,
  NULL, /* WaitForSlotEvent */
  (void *)NULL /* null terminator */
};