Blame nss/lib/ckfw/capi/ctoken.c

Packit 40b132
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit 40b132
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit 40b132
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit 40b132
Packit 40b132
#include "ckcapi.h"
Packit 40b132
Packit 40b132
/*
Packit 40b132
 * ckcapi/ctoken.c
Packit 40b132
 *
Packit 40b132
 * This file implements the NSSCKMDToken object for the
Packit 40b132
 * "nss to capi" cryptoki module.
Packit 40b132
 */
Packit 40b132
Packit 40b132
static NSSUTF8 *
Packit 40b132
ckcapi_mdToken_GetLabel
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  CK_RV *pError
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return (NSSUTF8 *)nss_ckcapi_TokenLabel;
Packit 40b132
}
Packit 40b132
Packit 40b132
static NSSUTF8 *
Packit 40b132
ckcapi_mdToken_GetManufacturerID
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  CK_RV *pError
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return (NSSUTF8 *)nss_ckcapi_ManufacturerID;
Packit 40b132
}
Packit 40b132
Packit 40b132
static NSSUTF8 *
Packit 40b132
ckcapi_mdToken_GetModel
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  CK_RV *pError
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return (NSSUTF8 *)nss_ckcapi_TokenModel;
Packit 40b132
}
Packit 40b132
Packit 40b132
static NSSUTF8 *
Packit 40b132
ckcapi_mdToken_GetSerialNumber
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  CK_RV *pError
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return (NSSUTF8 *)nss_ckcapi_TokenSerialNumber;
Packit 40b132
}
Packit 40b132
Packit 40b132
static CK_BBOOL
Packit 40b132
ckcapi_mdToken_GetIsWriteProtected
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return CK_FALSE;
Packit 40b132
}
Packit 40b132
Packit 40b132
/* fake out Mozilla so we don't try to initialize the token */
Packit 40b132
static CK_BBOOL
Packit 40b132
ckcapi_mdToken_GetUserPinInitialized
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return CK_TRUE;
Packit 40b132
}
Packit 40b132
Packit 40b132
static CK_VERSION
Packit 40b132
ckcapi_mdToken_GetHardwareVersion
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return nss_ckcapi_HardwareVersion;
Packit 40b132
}
Packit 40b132
Packit 40b132
static CK_VERSION
Packit 40b132
ckcapi_mdToken_GetFirmwareVersion
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return nss_ckcapi_FirmwareVersion;
Packit 40b132
}
Packit 40b132
Packit 40b132
static NSSCKMDSession *
Packit 40b132
ckcapi_mdToken_OpenSession
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  NSSCKFWSession *fwSession,
Packit 40b132
  CK_BBOOL rw,
Packit 40b132
  CK_RV *pError
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return nss_ckcapi_CreateSession(fwSession, pError);
Packit 40b132
}
Packit 40b132
Packit 40b132
static CK_ULONG
Packit 40b132
ckcapi_mdToken_GetMechanismCount
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  return (CK_ULONG)1;
Packit 40b132
}
Packit 40b132
Packit 40b132
static CK_RV
Packit 40b132
ckcapi_mdToken_GetMechanismTypes
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  CK_MECHANISM_TYPE types[]
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  types[0] = CKM_RSA_PKCS;
Packit 40b132
  return CKR_OK;
Packit 40b132
}
Packit 40b132
Packit 40b132
static NSSCKMDMechanism *
Packit 40b132
ckcapi_mdToken_GetMechanism
Packit 40b132
(
Packit 40b132
  NSSCKMDToken *mdToken,
Packit 40b132
  NSSCKFWToken *fwToken,
Packit 40b132
  NSSCKMDInstance *mdInstance,
Packit 40b132
  NSSCKFWInstance *fwInstance,
Packit 40b132
  CK_MECHANISM_TYPE which,
Packit 40b132
  CK_RV *pError
Packit 40b132
)
Packit 40b132
{
Packit 40b132
  if (which != CKM_RSA_PKCS) {
Packit 40b132
    *pError = CKR_MECHANISM_INVALID;
Packit 40b132
    return (NSSCKMDMechanism *)NULL;
Packit 40b132
  }
Packit 40b132
  return (NSSCKMDMechanism *)&nss_ckcapi_mdMechanismRSA;
Packit 40b132
}
Packit 40b132
Packit 40b132
NSS_IMPLEMENT_DATA const NSSCKMDToken
Packit 40b132
nss_ckcapi_mdToken = {
Packit 40b132
  (void *)NULL, /* etc */
Packit 40b132
  NULL, /* Setup */
Packit 40b132
  NULL, /* Invalidate */
Packit 40b132
  NULL, /* InitToken -- default errs */
Packit 40b132
  ckcapi_mdToken_GetLabel,
Packit 40b132
  ckcapi_mdToken_GetManufacturerID,
Packit 40b132
  ckcapi_mdToken_GetModel,
Packit 40b132
  ckcapi_mdToken_GetSerialNumber,
Packit 40b132
  NULL, /* GetHasRNG -- default is false */
Packit 40b132
  ckcapi_mdToken_GetIsWriteProtected,
Packit 40b132
  NULL, /* GetLoginRequired -- default is false */
Packit 40b132
  ckcapi_mdToken_GetUserPinInitialized,
Packit 40b132
  NULL, /* GetRestoreKeyNotNeeded -- irrelevant */
Packit 40b132
  NULL, /* GetHasClockOnToken -- default is false */
Packit 40b132
  NULL, /* GetHasProtectedAuthenticationPath -- default is false */
Packit 40b132
  NULL, /* GetSupportsDualCryptoOperations -- default is false */
Packit 40b132
  NULL, /* GetMaxSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
Packit 40b132
  NULL, /* GetMaxRwSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
Packit 40b132
  NULL, /* GetMaxPinLen -- irrelevant */
Packit 40b132
  NULL, /* GetMinPinLen -- irrelevant */
Packit 40b132
  NULL, /* GetTotalPublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
Packit 40b132
  NULL, /* GetFreePublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
Packit 40b132
  NULL, /* GetTotalPrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
Packit 40b132
  NULL, /* GetFreePrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
Packit 40b132
  ckcapi_mdToken_GetHardwareVersion,
Packit 40b132
  ckcapi_mdToken_GetFirmwareVersion,
Packit 40b132
  NULL, /* GetUTCTime -- no clock */
Packit 40b132
  ckcapi_mdToken_OpenSession,
Packit 40b132
  ckcapi_mdToken_GetMechanismCount,
Packit 40b132
  ckcapi_mdToken_GetMechanismTypes,
Packit 40b132
  ckcapi_mdToken_GetMechanism,
Packit 40b132
  (void *)NULL /* null terminator */
Packit 40b132
};