|
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 |
};
|