Card Minidriver Certification Kit

Note  This content applies to the Windows Logo Kit (WLK). For the latest information using the new Windows Hardware Certification Kit (HCK), see Windows HCK User's Guide on the Windows Hardware Dev Center.

Type: Automated Test

Overview

This test tool verifies the operation of smart card minidrivers and associated cards. Smart card minidrivers are software DLLs that are loaded by the Microsoft Base Cryptographic Service Provider (Base CSP) and the Microsoft Smart Card Key Storage Provider (SCKSP) that enable access to the functionality of the associated smart card. For smart card vendors, these minidrivers provide a simpler way to implement smart card functionality on Microsoft Windows operating systems than by developing a traditional Cryptographic Service Provider (CSP). (Historically smart card minidrivers were also referred to as smart card modules or smartcard card modules.)

Details

The Card Minidriver Certification Kit performs functional, stress, performance, and reliability testing on a smart card minidriver. This kit calls the Microsoft BaseCSP and the Microsoft Smart Card Key Storage Provider and accesses the card minidriver methods directly to test the correctness of operation of the card minidriver and the associated card. The kit also uses the Smart Card Resource Manager to access the card directly.

Run Time: 6 hours

Log File: cmck_log.xml

System Restart Required: No

Supported operating systems for Logo or Signature:

  • Windows 7

  • Windows Server 2008

  • Windows Vista

  • Windows Server 2003

  • Windows XP

Requirements

Software Requirements

The test tool requires the following software:

  • Supported operating system (see list above).

  • Software components included with the device that is being tested.

Hardware Requirements

  • Device to be tested

  • Computer that meets the minimum software requirements

  • Windows keyboard

  • Color display monitor capable of at least 1024 by 768 resolution, 32-bits per pixel, 60 Hz

  • Hard drive with a minimum of 20 GB available on partition C:

  • WHQL-certified smart card readers

Processor

  • x86

  • x64

  • Itanium

Running Card Minidriver Certification Kit

The test exists in Driver Test Manager (DTM) as a single job, although you can run the tool from outside of the DTM environment as well. Copy the binaries from the location that is specified below to a directory of your choice and you can run the test tool from there. You might also need to copy the Wttlog.dll shared library to your run directory. This DLL is installed with the DTM client.

Running the test tool outside of the DTM enables greater flexibility than running through the DTM because you can select tests individually. For more information, see the command line description later in this document.

If you are running the test from within the DTM, you need only one client computer. The DTM documentation explains how to set up the DTM controller, DTM Studio, and DTM client machines.

The following information applies to the machine that the test is being run on, regardless of whether you are running the tests inside or outside the DTM environment.

To run the test, you must have your smart card minidriver installed on the computer and registered in the registry. (Also, for more information about certifying on a 64-bit version of the operating system, see the next section, "Certifying on a 64-bit version of the operating system"). And if your smart card device has the ISO 7816 ID-1 form factor, you must use a PC/SC compliant, WHQL-certified smart card reader for certification.

When you run this test on Windows Server 2003 or Windows XP, you will first need to install MSXML 6.0 on the client computer.

To run the tests, you must have two identical smart cards on the computer, and both must be in the prepared state, where prepared is defined by the Smart Card Minidriver Specification for Windows Base Cryptographic Service Provider (Base CSP) and Smart Card Key Storage Provider (KSP).

The tests that are run depend on the capabilities of the smart card minidriver. The capability of the smart card minidriver can be defined for the test tool in a specific configuration file called cmck_config.xml, which you must put in the C:\SmartCardMinidriverTest directory. The description of this file and a sample are provided below.

In a typical test run, if no configuration file is found, the test will ask you for confirmation to proceed by using default values. For a logo submission however, you must supply a configuration file that matches the capability of your minidriver and card combination.

The default key values are as follows:

  • The default user pin is 0000.

  • The default administration key for challenge/response is all zeros.

Certifying on a 64-bit version of the operating system

When you certify on a 64-bit version of the operating system, you must also have the 32-bit version of your minidriver DLL installed on the system. You can put the DLL in the %systemroot%\syswow64 subdirectory. You must put registry entries for the 32-bit version of the DLL under HKEY_LOCAL_MACHINE\SOFTWARE\wow6432Node\Microsoft\Cryptography\Calais\SmartCards.

When a 32-bit application that uses the minidriver is executed, it loads the 32-bit version of the minidriver.

INF file for a smart card minidriver

When you make a certification submission, you must supply an .inf file. Here is the sample .inf file for x86 architecture:

NOTE: Some of the changes that you will have to make are marked in yellow.

[Version]
Signature="$Windows NT$"
Class=SmartCard
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
Provider=%ProviderName%
CatalogFile=delta.cat
DriverVer=06/21/2006,6.1.6473.1
 
[DefaultInstall]
CopyFiles=System32_CopyFiles
AddReg=MiniDriver_AddReg
 
[Manufacturer]
%ProviderName%=CompanyName,NTx86,NTx86.6.1
 
[CompanyName.NTx86]
%ScSuperCardDeviceName%=ScSuperCard_Install,SCFILTER\CID_51FF0800
 
[CompanyName.NTx86.6.1]
%ScSuperCardDeviceName%=ScSuperCard61_Install,SCFILTER\CID_51FF0800
 
[SourceDisksFiles]
supercm.dll=1
 
[SourceDisksNames]
1 = %MediaDescription%
 
[ScSuperCard_Install.NT]
CopyFiles=System32_CopyFiles
AddReg=MiniDriver_AddReg
 
[ScSuperCard61_Install.NT]
CopyFiles=System32_CopyFiles
AddReg=MiniDriver_AddReg
 
[SCSuperCard61_Install.NT.Services]
AddService = UMPass, 0x00000002, UMPassService_Install
 
[UMPassService_Install]
DisplayName    = %umpass.SVCDESC%     ; Friendly Name of the Service
ServiceType    = 1                    ; SERVICE_KERNEL_DRIVER
StartType      = 3                    ; SERVICE_DEMAND_START 
ErrorControl   = 1                    ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\umpass.sys
LoadOrderGroup = Extended Base
 
[System32_CopyFiles]
supercm.dll
 
[MiniDriver_AddReg]
HKLM, %SmartCardName%,"ATR",0x00000001,3b,04,51,ff,08,00
HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff
HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardName%,"80000001",0x00000000,%SmartCardCardModule%
 
[DestinationDirs]
System32_CopyFiles=10,system32
 
[FriendlyName]
ScFriendlyName="Super Card"
 
; =================== Generic ==================================
 
[Strings]
ProviderName="ACME"
MediaDescription="Super Card Mini Driver Installation Disk"
SCSuperCardDeviceName="Super Card Mini-driver"
SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Super Card"
SmartCardCardModule="supercm.dll"
umpass.SVCDESC = "Microsoft UMPass Driver"
 
Inf file sample for x64 architecture:
 
[Version]
Signature="$Windows NT$"
Class=SmartCard
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
Provider=%ProviderName%
CatalogFile=delta.cat
DriverVer=06/21/2006,6.1.6473.1
 
[DefaultInstall]
CopyFiles=System32_CopyFiles
CopyFiles=Syswow64_CopyFiles
AddReg=MiniDriver_AddReg
 
[Manufacturer]
%ProviderName%=CompanyName,NTamd64,NTamd64.6.1
 
[CompanyName.NTamd64]
%ScSuperCardDeviceName%=ScSuperCard_Install,SCFILTER\CID_51FF0800
 
[CompanyName.NTamd64.6.1]
%ScSuperCardDeviceName%=ScSuperCard61_Install,SCFILTER\CID_51FF0800
 
[SourceDisksFiles]
supercm64.dll=1
supercm.dll=1
 
[SourceDisksNames]
1 = %MediaDescription%
 
[ScSuperCard_Install.NT]
CopyFiles=System32_CopyFiles
CopyFiles=Syswow64_CopyFiles
AddReg=MiniDriver_AddReg
 
[ScSuperCard61_Install.NT]
CopyFiles=System32_CopyFiles
CopyFiles=Syswow64_CopyFiles
AddReg=MiniDriver_AddReg
 
[SCSuperCard61_Install.NT.Services]
AddService = UMPass, 0x00000002, UMPassService_Install
 
[UMPassService_Install]
DisplayName    = %umpass.SVCDESC%     ; Friendly Name of the Service
ServiceType    = 1                    ; SERVICE_KERNEL_DRIVER
StartType      = 3                    ; SERVICE_DEMAND_START 
ErrorControl   = 1                    ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\umpass.sys
LoadOrderGroup = Extended Base
 
[System32_CopyFiles]
supercm.dll,supercm64.dll
 
[Syswow64_CopyFiles]
supercm.dll
 
[MiniDriver_AddReg]
HKLM, %SmartCardName%,"ATR",0x00000001,3b,04,51,ff,08,00
HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff
HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardName%,"80000001",0x00000000,%SmartCardCardModule%
HKLM, %SmartCardNameWOW64%,"ATR",0x00000001,3b,04,51,ff,08,00
HKLM, %SmartCardNameWOW64%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff
HKLM, %SmartCardNameWOW64%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardNameWOW64%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardNameWOW64%,"80000001",0x00000000,%SmartCardCardModule%
 
[DestinationDirs]
System32_CopyFiles=10,system32
Syswow64_CopyFiles=10,syswow64
 
[FriendlyName]
ScFriendlyName="Super Card"
 
; =================== Generic ==================================
 
[Strings]
ProviderName="ACME"
MediaDescription="Super Card Mini Driver Installation Disk"
SCSuperCardDeviceName="Super Card Mini-driver"
SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Super Card"
SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Microsoft Virtual Card"
SmartCardCardModule="supercm.dll"
SmartCardCardModule64="supercm64.dll"
umpass.SVCDESC = "Microsoft UMPass Driver"

Smart Card Minidriver Configuration File Description (cmck_config.xml)

CMCK_config.xml consists of below sections for V5, V6, and V7, depending on the versions V5/V6/V7 your minidriver supported. Please note: V5/V6/V7 keywords are uppercased.

<CMCKConfig>

<V5>

.........

</V5>

<V6>

.........

</V6>

<V7>

.........

</V7>

</CMCKConfig>

Each section is filled up with the XML tags described below. Please also note each section may have different settings which depends on what the minidriver supports for that versions.

You can set the following values in each section of the configuration file (in the structure as shown):

  • <Version> is a mandatory field that defines the configuration file's version number. Currently, the expected version is "2" of the CMCK XML configuration file for V6 and V7 sections, and "1" for V5 section.

  • <CardDefaults> contains parameters that are used both for the certification run and for regular test runs.

    • <DefaultPins> - pin values to be used for authentication-related functions

      <PinEntry><RoleID> - allowed value: 1 - 7

      <PinEntry><Type> - allowed value: "AlphanumericPinType", "ChallengeResponsePinType", "EmptyPinType", "ExternalPinType"

      <PinEntry><Value> - list of space-separated hex bytes of the pin. Default value: "0x30 0x30 0x30 0x30" (i.e. "0000")

      <PinEntry><Blocking> [BOOLEAN] - states if the card supports blocking the card for this type of user when the wrong pin is presented too many times. Default "True".

      <PinEntry><Linking> [BOOLEAN] - states if this pin is linked to another pin, i.e changing one pin will make the other one changed. Default "False".

      <PinEntry><AllowZeroLength> [BOOLEAN] - states if the card allows the pin to be empty. Default "False".

  • <CardSupports> -defines optional features that are supported by the card or card minidriver, such as algorithms, key types, and so on. The test will cover the supported features.

    • <MinimumVersion> [DWORD] contains the minimum version of the context CARD_DATA structure that the card minidriver supports. For more information, see the Smart Card Minidriver specification. The allowed value is "4," "5," "6," "7".
    • <CurrentVersion> [DWORD] contains the version of the context CARD_DATA structure for which the card minidriver was designed. For more information, see the Smart Card Minidriver specification. The allowed value is "5," "6," "7".
    • <LoadingUnderCAPI> [BOOLEAN] is "True" if the card minidriver supports being loaded under CAPI and is "False" otherwise.
    • <LoadingUnderCNG> [BOOLEAN] is "True" if the card minidriver supports being loaded under CNG and is "False" otherwise. Note that at least one of the two attributes must be "True" (CAPI and/or CNG).
    • <KeyImport> [BOOLEAN] is "True" if the card minidriver supports key import and is "False" otherwise.
    • <KeyTypes> contains space-separated list of key types that the card minidriver supports. The allowed values are "AT_ECDH_P256", "AT_ECDH_P384", "AT_ECDH_P521", "AT_ECDSA_P256", "AT_ECDSA_P384", or "AT_ECDSA_P521" for ECC keys and "AT_SIGNATURE" or "AT_KEYEXCHANGE" for RSA keys.
    • <OnCardPadding> [BOOLEAN] is "True" if on-card padding is supported and is "False" otherwise.
    • <PaddingAlgorithms> contains a space-separated list of supported on-card padding algorithms (only valid when <OnCardPadding> is "True"). The allowed values are "CARD_PADDING_NONE", "CARD_PADDING_PKCS1", and "CARD_PADDING_PSS".
    • <SignHashAlgorithms> contains a space-separated list of hash algorithms that the card minidriver supports for signing (aiHashAlg in the CARD_SIGNING_INFO structure). Allowed values are "CALG_MD2", "CALG_MD4", "CALG_MD5", "CALG_SHA", "CALG_SHA1", "CALG_SHA_256", CALG_SHA_384" and CALG_SHA_512". For more details, see the Smart Card Minidriver specification.
    • <SignHashFlags> contains a space-separated list of CryptSignHash flags that the card minidriver supports. The allowed values are "CRYPT_NOHASHOID" and "CRYPT_X931_FORMAT".
    • <SignReturnBufferSize> [BOOLEAN] is "True" when the card minidriver supports the CARD_BUFFER_SIZE_ONLY value for dwSigningFlags in the CARD_SIGNING_INFO structure. For more information, see the Smart Card Minidriver specification.
    • <KDFTypes> contains a space-separated list of key derive functions that the card minidriver supports. The allowed values are "HASH", "HMAC", "TLS_PRF", and "SP800_56A_CONCAT". For more information, see the Smart Card Minidriver specification.
    • <KDFHashAlgorithms> contains a space-separated list of hash algorithms that the card minidriver supports for the key derivation functions (KDF). The Smart Card Minidriver specification contains more details. The allowed values are defined in the bcrypt.h header file and are the values for BCRYPT_XXXX_ALGORITHM defines (for example, "SHA256" (BCRYPT_SHA256_ALGORITHM) or "MD5" (BCRYPT_MD5_ALGORITHM)).
    • <Uses2Key3DES> [BOOLEAN] is "True" if the card minidriver ONLY supports 2 key 3DES. When this value is "False", it indicates the card minidriver use default 3 key 3DES. Default value is "False".
    • <KDFHMACFlag> [BOOLEAN] is "True" if the card minidriver supports the BCRYPT_KDF_HMAC key derive function with the KDF_USE_SECRET_AS_HMAC_KEY_FLAG flag (see the Crypto Next Generation (CNG) documentation available on MSDN CNG for details). When this value is "False", the test will provide an explicit HMAC key and will not set the KDF_USE_SECRET_AS_HMAC_KEY_FLAG flag for affected tests.
    • <ChallengePadding>[BOOLEAN] is "True" if the return of card challenge data contains a padding bit. Default value is "False".
    • <SupportsCardGetChallenge> [BOOLEAN] - "True" if CM supports CardGetChallenge API (this is used for read only cards).
    • <SupportsCardAuthenticateChallenge> [BOOLEAN] - "True" if CM supports CardAuthenticateChallenge API (this is used for read only cards).
    • <SupportsCardGetChallengeEx> [BOOLEAN] - "True" if CM supports CardGetChallengeEx API (this is used for read only cards).
    • <SupportsCardUnblockPin> [BOOLEAN] - "True" if CM supports CardUnblockPin API (this is used for read only cards).
    • <SupportsCardChangeAuthenticator> [BOOLEAN] - "True" if CM supports CardChangeAuthenticator API (this is used for read only cards).
    • <SupportsCardChangeAuthenticatorEx> [BOOLEAN] - "True" if CM supports CardChangeAuthenticatorEx API (this is used for read only cards).
  • <TestSuiteDefaults> contains parameters that influence the test runs only. (The certification run uses its own default values.)

    • <INF> contains information about INF file used in smartcard PnP.
      • <INFFile> contains the location and file name for the smartcard PnP INF file, which matches the smartcard/minidriver to be tested. This is mandatory for all minidrivers other than in-box PIV/GICS class minidriver.
    • <Logging> contains logging options that apply to the test runs
      • <LogFile> contains the location and file name for the XML log file. The default is "CMCK_log.xml" (which means that the file will be created in the current directory). Note that the log file will be overwritten.
      • <LogToConsole> [BOOLEAN] is "True" when the logs will be displayed on the console along with writing to the log file. The default value is "True".
      • <CertifyLogLevel> specifies the log level (0, 1, or 2). 0 means minimal logging, 1 logs function entry and exit, and 2 means full logging. Full logging is always used when running tests individually and is mainly to help with development. When you are making a logo submission, we recommend setting the log level to 0.

Configuration File Structure

The following code example shows a sample configure file.

 <CMCKConfig>
<V6>
  <Version>2</Version> 
 <CardDefaults>
 <DefaultPins>
 <PinEntry>
  <RoleID>1</RoleID> 
  <Type>AlphaNumericPinType</Type> 
  <Value>0x30 0x30 0x30 0x30</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
 <PinEntry>
  <RoleID>2</RoleID> 
  <Type>ChallengeResponsePinType</Type> 
  <Value>0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
 <PinEntry>
  <RoleID>3</RoleID> 
  <Type>AlphaNumericPinType</Type> 
  <Value>0x30 0x30 0x30 0x30</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
 <PinEntry>
  <RoleID>4</RoleID> 
  <Type>AlphaNumericPinType</Type> 
  <Value>0x30 0x30 0x30 0x30</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
 <PinEntry>
  <RoleID>5</RoleID> 
  <Type>AlphaNumericPinType</Type> 
  <Value>0x30 0x30 0x30 0x30</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
 <PinEntry>
  <RoleID>6</RoleID> 
  <Type>AlphaNumericPinType</Type> 
  <Value>0x30 0x30 0x30 0x30</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
 <PinEntry>
  <RoleID>7</RoleID> 
  <Type>AlphaNumericPinType</Type> 
  <Value>0x30 0x30 0x30 0x30</Value> 
  <Blocking>True</Blocking> 
  <AllowZeroLength>False</AllowZeroLength> 
  </PinEntry>
  </DefaultPins>
 <CardSupports>
  <MinimumVersion>4</MinimumVersion> 
  <CurrentVersion>6</CurrentVersion> 
  <LoadingUnderCAPI>True</LoadingUnderCAPI> 
  <LoadingUnderCNG>True</LoadingUnderCNG> 
  <KeyImport>True</KeyImport> 
  <KeyTypes>AT_SIGNATURE AT_KEYEXCHANGE</KeyTypes> 
  <OnCardPadding>False</OnCardPadding> 
  <PaddingAlgorithms>CARD_PADDING_PKCS1</PaddingAlgorithms> 
  <SignHashAlgorithms>CALG_MD5 CALG_SHA CALG_SHA1 CALG_SHA_256 CALG_SHA_384 CALG_SHA_512</SignHashAlgorithms> 
  <SignHashFlags /> 
  <SignReturnBufferSize>True</SignReturnBufferSize> 
  <KDFTypes>HASH</KDFTypes> 
  <KDFHashAlgorithms>SHA1 SHA256 SHA384 SHA512</KDFHashAlgorithms> 
  <KDFHMACflag>False</KDFHMACflag> 
 
  <SupportsCardGetChallenge>True</SupportsCardGetChallenge> 
  <SupportsCardAuthenticateChallenge>True</SupportsCardAuthenticateChallenge> 
  <SupportsCardGetChallengeEx>True</SupportsCardGetChallengeEx> 
  <SupportsCardUnblockPin>True</SupportsCardUnblockPin> 
  <SupportsCardChangeAuthenticator>True</SupportsCardChangeAuthenticator> 
  <SupportsCardChangeAuthenticatorEx>True</SupportsCardChangeAuthenticatorEx> 
  </CardSupports>
  </CardDefaults>
 <TestSuiteDefaults>
      <INF>
 <INFFile>C:\SmartcardMinidriverTest\minidriver.inf</INFFile>
      </INF>
 <Logging>
  <LogFile>CMCK_log.xml</LogFile> 
  <LogToConsole>True</LogToConsole> 
  </Logging>
 <TestParams>
 <TestParam>
  <Test>MultiThreaded</Test> 
  <Name>t</Name> 
  <Value>5</Value> 
  </TestParam>
 <TestParam>
  <Test>MultiThreaded</Test> 
  <Name>n</Name> 
  <Value>5</Value> 
  </TestParam>
 <TestParam>
  <Test>NonRepeatingChallenge</Test> 
  <Name>n</Name> 
  <Value>300</Value> 
  </TestParam>
  </TestParams>
  </TestSuiteDefaults>
</V6>
 
<V5>   
  <Version>1</Version>
  
  <CardDefaults>
    <DefaultPins>
        <PinEntry>
            <Type>User</Type>
            <Value>0x30 0x30 0x30 0x30</Value>
            <Blocking>True</Blocking>
            <AllowZeroLength>False</AllowZeroLength>
        </PinEntry>
    </DefaultPins>
 
    <DefaultKeys>
        <KeyEntry>
            <Type>Admin</Type>
            <Algorithm>3DES</Algorithm>
            <Mode>ECB</Mode>
            <Blocking>True</Blocking>
            <Value>0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00</Value>
        </KeyEntry>
    </DefaultKeys>
 
    <CardSupports>
        <MinimumVersion>4</MinimumVersion>
        <CurrentVersion>6</CurrentVersion>
        <LoadingUnderCAPI>True</LoadingUnderCAPI>
        <LoadingUnderCNG>True</LoadingUnderCNG>
        <KeyImport>True</KeyImport>
        <KeyTypes>AT_SIGNATURE AT_KEYEXCHANGE</KeyTypes>
        <OnCardPadding>False</OnCardPadding>
        <PaddingAlgorithms>CARD_PADDING_NONE</PaddingAlgorithms>
        <SignHashAlgorithms>CALG_MD5 CALG_SHA CALG_SHA1</SignHashAlgorithms>
        <SignHashFlags>CRYPT_NOHASHOID</SignHashFlags>
        <SignReturnBufferSize>False</SignReturnBufferSize>        
        <KDFTypes>HASH</KDFTypes>
        <KDFHashAlgorithms>SHA1 SHA256 SHA384 SHA512</KDFHashAlgorithms>
        <KDFHMACflag>False</KDFHMACflag>
    </CardSupports>
  </CardDefaults>
 
  <TestSuiteDefaults>
      <INF>
 <INFFile>C:\SmartcardMinidriverTest\minidriver.inf</INFFile>
      </INF>
      <Logging>
          <LogFile>CMCK_log.xml</LogFile>
          <LogToConsole>True</LogToConsole>
      </Logging>
 
      <TestParams>
          <TestParam>
              <Test>MultiThreaded</Test>
              <Name>t</Name>
              <Value>5</Value>
          </TestParam>
          <TestParam>
              <Test>MultiThreaded</Test>
              <Name>n</Name>
              <Value>5</Value>
          </TestParam>
          <TestParam>
              <Test>NonRepeatingChallenge</Test>
              <Name>n</Name>
              <Value>300</Value>
          </TestParam>
      </TestParams>
  </TestSuiteDefaults>
 </V5>
 </CMCKConfig>

Command Syntax

Command option Description

cmck.exe <command> [options]

cmck.exe help

 

Troubleshooting

For more information, see the following Web sites:

Smart Card Minidriver SpecificationSmart Card Minidriver Certification Requirements

Code Tour

File Manifest

File Location

cmck.exe

...\tests\%ARCHITECTURE%\nttest\SmartCardModules

cmck_simuse.exe

...\tests\%ARCHITECTURE%\nttest\SmartCardModules

intrcptr.dll

...\tests\%ARCHITECTURE%\nttest\SmartCardModules

 

Test Assertions

Windows Logo Program: INPUT-0030 Smart Card Minidrivers meet Windows Card Minidriver Specifications and Certification Criteria

 

 

Build date: 9/14/2012