security/nss/lib/ckfw/nssmkey/mtoken.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #include "ckmk.h"
     7 /*
     8  * nssmkey/mtoken.c
     9  *
    10  * This file implements the NSSCKMDToken object for the
    11  * "nssmkey" cryptoki module.
    12  */
    14 static NSSUTF8 *
    15 ckmk_mdToken_GetLabel
    16 (
    17   NSSCKMDToken *mdToken,
    18   NSSCKFWToken *fwToken,
    19   NSSCKMDInstance *mdInstance,
    20   NSSCKFWInstance *fwInstance,
    21   CK_RV *pError
    22 )
    23 {
    24   return (NSSUTF8 *)nss_ckmk_TokenLabel;
    25 }
    27 static NSSUTF8 *
    28 ckmk_mdToken_GetManufacturerID
    29 (
    30   NSSCKMDToken *mdToken,
    31   NSSCKFWToken *fwToken,
    32   NSSCKMDInstance *mdInstance,
    33   NSSCKFWInstance *fwInstance,
    34   CK_RV *pError
    35 )
    36 {
    37   return (NSSUTF8 *)nss_ckmk_ManufacturerID;
    38 }
    40 static NSSUTF8 *
    41 ckmk_mdToken_GetModel
    42 (
    43   NSSCKMDToken *mdToken,
    44   NSSCKFWToken *fwToken,
    45   NSSCKMDInstance *mdInstance,
    46   NSSCKFWInstance *fwInstance,
    47   CK_RV *pError
    48 )
    49 {
    50   return (NSSUTF8 *)nss_ckmk_TokenModel;
    51 }
    53 static NSSUTF8 *
    54 ckmk_mdToken_GetSerialNumber
    55 (
    56   NSSCKMDToken *mdToken,
    57   NSSCKFWToken *fwToken,
    58   NSSCKMDInstance *mdInstance,
    59   NSSCKFWInstance *fwInstance,
    60   CK_RV *pError
    61 )
    62 {
    63   return (NSSUTF8 *)nss_ckmk_TokenSerialNumber;
    64 }
    66 static CK_BBOOL
    67 ckmk_mdToken_GetIsWriteProtected
    68 (
    69   NSSCKMDToken *mdToken,
    70   NSSCKFWToken *fwToken,
    71   NSSCKMDInstance *mdInstance,
    72   NSSCKFWInstance *fwInstance
    73 )
    74 {
    75   return CK_FALSE;
    76 }
    78 /* fake out Mozilla so we don't try to initialize the token */
    79 static CK_BBOOL
    80 ckmk_mdToken_GetUserPinInitialized
    81 (
    82   NSSCKMDToken *mdToken,
    83   NSSCKFWToken *fwToken,
    84   NSSCKMDInstance *mdInstance,
    85   NSSCKFWInstance *fwInstance
    86 )
    87 {
    88   return CK_TRUE;
    89 }
    91 static CK_VERSION
    92 ckmk_mdToken_GetHardwareVersion
    93 (
    94   NSSCKMDToken *mdToken,
    95   NSSCKFWToken *fwToken,
    96   NSSCKMDInstance *mdInstance,
    97   NSSCKFWInstance *fwInstance
    98 )
    99 {
   100   return nss_ckmk_HardwareVersion;
   101 }
   103 static CK_VERSION
   104 ckmk_mdToken_GetFirmwareVersion
   105 (
   106   NSSCKMDToken *mdToken,
   107   NSSCKFWToken *fwToken,
   108   NSSCKMDInstance *mdInstance,
   109   NSSCKFWInstance *fwInstance
   110 )
   111 {
   112   return nss_ckmk_FirmwareVersion;
   113 }
   115 static NSSCKMDSession *
   116 ckmk_mdToken_OpenSession
   117 (
   118   NSSCKMDToken *mdToken,
   119   NSSCKFWToken *fwToken,
   120   NSSCKMDInstance *mdInstance,
   121   NSSCKFWInstance *fwInstance,
   122   NSSCKFWSession *fwSession,
   123   CK_BBOOL rw,
   124   CK_RV *pError
   125 )
   126 {
   127   return nss_ckmk_CreateSession(fwSession, pError);
   128 }
   130 static CK_ULONG
   131 ckmk_mdToken_GetMechanismCount
   132 (
   133   NSSCKMDToken *mdToken,
   134   NSSCKFWToken *fwToken,
   135   NSSCKMDInstance *mdInstance,
   136   NSSCKFWInstance *fwInstance
   137 )
   138 {
   139   return (CK_ULONG)1;
   140 }
   142 static CK_RV
   143 ckmk_mdToken_GetMechanismTypes
   144 (
   145   NSSCKMDToken *mdToken,
   146   NSSCKFWToken *fwToken,
   147   NSSCKMDInstance *mdInstance,
   148   NSSCKFWInstance *fwInstance,
   149   CK_MECHANISM_TYPE types[]
   150 )
   151 {
   152   types[0] = CKM_RSA_PKCS;
   153   return CKR_OK;
   154 }
   156 static NSSCKMDMechanism *
   157 ckmk_mdToken_GetMechanism
   158 (
   159   NSSCKMDToken *mdToken,
   160   NSSCKFWToken *fwToken,
   161   NSSCKMDInstance *mdInstance,
   162   NSSCKFWInstance *fwInstance,
   163   CK_MECHANISM_TYPE which,
   164   CK_RV *pError
   165 )
   166 {
   167   if (which != CKM_RSA_PKCS) {
   168     *pError = CKR_MECHANISM_INVALID;
   169     return (NSSCKMDMechanism *)NULL;
   170   }
   171   return (NSSCKMDMechanism *)&nss_ckmk_mdMechanismRSA;
   172 }
   174 NSS_IMPLEMENT_DATA const NSSCKMDToken
   175 nss_ckmk_mdToken = {
   176   (void *)NULL, /* etc */
   177   NULL, /* Setup */
   178   NULL, /* Invalidate */
   179   NULL, /* InitToken -- default errs */
   180   ckmk_mdToken_GetLabel,
   181   ckmk_mdToken_GetManufacturerID,
   182   ckmk_mdToken_GetModel,
   183   ckmk_mdToken_GetSerialNumber,
   184   NULL, /* GetHasRNG -- default is false */
   185   ckmk_mdToken_GetIsWriteProtected,
   186   NULL, /* GetLoginRequired -- default is false */
   187   ckmk_mdToken_GetUserPinInitialized,
   188   NULL, /* GetRestoreKeyNotNeeded -- irrelevant */
   189   NULL, /* GetHasClockOnToken -- default is false */
   190   NULL, /* GetHasProtectedAuthenticationPath -- default is false */
   191   NULL, /* GetSupportsDualCryptoOperations -- default is false */
   192   NULL, /* GetMaxSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
   193   NULL, /* GetMaxRwSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
   194   NULL, /* GetMaxPinLen -- irrelevant */
   195   NULL, /* GetMinPinLen -- irrelevant */
   196   NULL, /* GetTotalPublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
   197   NULL, /* GetFreePublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
   198   NULL, /* GetTotalPrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
   199   NULL, /* GetFreePrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
   200   ckmk_mdToken_GetHardwareVersion,
   201   ckmk_mdToken_GetFirmwareVersion,
   202   NULL, /* GetUTCTime -- no clock */
   203   ckmk_mdToken_OpenSession,
   204   ckmk_mdToken_GetMechanismCount,
   205   ckmk_mdToken_GetMechanismTypes,
   206   ckmk_mdToken_GetMechanism,
   207   (void *)NULL /* null terminator */
   208 };

mercurial