I will work on it this week.

Between, how do you test your minidriver besides the command certutil -scinfo?
Card Minidriver Certification Kit?

Thanks Douglas.




On Wed, Jul 11, 2012 at 11:27 PM, Douglas E. Engert <deeng...@anl.gov> wrote:
>
>
> On 7/10/2012 8:19 PM, Galoh Haron wrote:
>>
>> Douglas,
>>
>> here is the changes list that i have made for the opensc-minidrver.inf
>> and .minidriver-westcos.reg
>>
>> .inf
>>
>> [Minidriver.NTamd64]
>> + %CardDeviceName%=Minidriver64_Install,SCFILTER\CID_7320006C009000
>> - %CardDeviceName%=Minidriver64_Install,SCFILTER\CID_00640181010c829000
>>
>> [Minidriver.NTx86]
>> + %CardDeviceName%=Minidriver32_Install,SCFILTER\CID_7320006C009000
>> - %CardDeviceName%=Minidriver32_Install,SCFILTER\CID_00640181010c829000
>>
>> [Minidriver.NTamd64.6.1]
>> + %CardDeviceName%=Minidriver64_61_Install,SCFILTER\CID_7320006C009000
>> - %CardDeviceName%=Minidriver64_61_Install,SCFILTER\CID_00640181010c829000
>>
>> [AddRegWOW64]
>> + HKLM,
>> %SmartCardNameWOW64%,"ATR",0x00000001,3b,67,00,00,73,20,00,6c,00,90,00
>> - HKLM,
>> %SmartCardNameWOW64%,"ATR",0x00000001,3f,69,00,00,00,64,01,00,00,00,80,90,00
>> - HKLM,
>> %SmartCardNameWOW64%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,00,00,00,f0,ff,ff
>>
>> [Strings]
>> +SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\MyKAD"
>> - SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Cev
>> Westcos"
>>
>> +SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\MyKAD"
>> -
>> SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Cev
>> Westcos"
>>
>> .reg
>> Windows Registry Editor Version 5.00
>>
>> +
>> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\MyKAD]
>> -
>> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\CEV
>> WESTCOS]
>> + "ATR"=hex:3b,67,00,00,73,20,00,6c,00,90,00
>> - "ATR"=hex:3f,69,00,00,00,64,01,00,00,00,80,90,00
>> - "ATRMask"=hex:ff,ff,ff,ff,ff,ff,ff,00,00,00,f0,ff,ff
>>
>> I have attached the cardmod.log if you required it.
>>
>
> In line 85 of the trace:
>
> P:13632 T:14000 pCardData:0048E4D8 CardReadFile
> pszDirectoryName = mscp, pszFileName = cmapfile, dwFlags = 0, pcbData=0,
> *ppbData=0
> check_reader_status
> pCardData->hSCardCtx:0xCD010002 hScard:0xEA020000
> check_reader_status r=5 flags 0x00000005
> sc_pkcs15_read_certificate return 0
>
> There is no cmapfile returned, and shortly after, the CardDeleteContext
> is called.
>
>
> In my version that may be out of date from 5/26/2011,
> when I last  looked at this code, a cmapfile is returned,
> My trace was from  a smart card login, and not from certutil.exe
>
> P:816 T:820 pCardData:00F15700 CardReadFile
>
> pszDirectoryName = mscp, pszFileName = cmapfile, dwFlags = 0, pcbData=0,
> *ppbData=0
> check_reader_status
> pCardData->hSCardCtx:0xCD010002 hScard:0xEA010001
>
> check_reader_status r=5 flags 0x00000005
> sc_pkcs15_read_certificate return 0
> Guid={31323334-3536-3738-390c-075480510916}
> cmapfile entry 0 --- 00F1FB68:86
>  0000  7B003300 31003300 32003300 33003300  34002D00 33003500 33003600
> 2D003300
>  0020  37003300 38002D00 33003900 30006300  2D003000 37003500 34003800
> 30003500
>
> After this things progress to passing he certificate back.
>
> So it looks like some of the minidriver is not creating the cmapfile,
> maybe because it can not find something form your card.
>
>
> Look at line 832 in minidriver.c (opensc-0.12.2 version)
>  if(pubkey->algorithm == SC_ALGORITHM_RSA)
> is true.
>
>
>
>> Thank you.
>>
>>
>>
>> On Tue, Jul 10, 2012 at 9:20 PM, Douglas E. Engert <deeng...@anl.gov>
>> wrote:
>>>
>>>
>>>
>>> On 7/10/2012 3:35 AM, Galoh Haron wrote:
>>>>
>>>> hello all,
>>>>
>>>> I found errors in running certutil -scinfo
>>>> 1) Can't open the AT_SIGNATURE key for reader
>>>> 2) Can't open the At_KEYEXCHANGE key for reader
>>>> 3) Cannot open the key for reader
>>>>
>>>> A pops dialog show .." A smart card was detected but is not the one
>>>> required for the current operation. The smart card you are using may
>>>> be missing required driver software or a required certificate".
>>>
>>>
>>> Sounds like  the MS code is having problems using the minidriver.
>>> This could be because your registry is not configured correctly
>>> or you code is doing something that does not work under the minidriver.
>>> The minidriver may be called during login by more then one process,
>>> and by more then one thread. Depending on how your code is written this
>>> may
>>> cause problems.  The minidriver may stay loaded by more then one process
>>> for long times. During login, there is no HKLU registry as there is no
>>> current user. This also implies that access to files is limited.
>>>
>>>>
>>>> i can view the certificate in mozilla web browser.
>>>>
>>>> to minidrive everything
>>>> 1) I configure the registry as per minidriver-westcost.reg
>>>
>>>    Send your changes to the list.
>>>
>>>> 2) I configure the opensc-minidriver.inf and change the device ID
>>>> according to the historical atr bytes
>>>> 3) install the inf accordingly
>>>
>>>
>>> Send the inf changes to the list.
>>>
>>>>
>>>> what else should i do.?
>>>
>>>
>>> You could compile the mindriver with the CARDMOD_LOW_LEVEL_DEBUG
>>> See minidriver.c around line 100. Its only for debugging.
>>> You will need to create the C:\tmp\cardmod.log and make it writable
>>> by everyone.
>>>
>>>
>>>>
>>>>
>>>> On Wed, Jul 4, 2012 at 6:20 PM, Viktor Tarasov
>>>> <viktor.tara...@gmail.com> wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> Le 04/07/2012 03:16, Galoh Haron a écrit :
>>>>>>
>>>>>> I guess i need to clarify the question on pkcs#15 emulator again.
>>>>>>
>>>>>> 1) I have created pkcs15-thecard.c and work on
>>>>>> sc_pks15emu-thecard_init_ex
>>>>>> 2) With some code's modification, the command  of opensc-tool -i,
>>>>>> opensc-tool -a opensc -s work.
>>>>>> 3) Any other steps missing for the emulator to work or perhaps a tiny
>>>>>> miny write up for developers to work on the emulator ?
>>>>>
>>>>>
>>>>>
>>>>> I would start from implementing the card driver with the basic
>>>>> 'sc_card_operations' handlers
>>>>> and testing all the stuff with the opensc-explorer .
>>>>>
>>>>> Then make a list of the pre-existing objects (PINs, Pub/Priv keys,
>>>>> certs, data) that you wish to see exposed with the libopensc/pkcs15 API as
>>>>> the PKCS#15 objects.
>>>>>
>>>>> After that take as example some existing emulator to see how to prepare
>>>>> data before calling the 'sc_pkcs15emu_add_**' functions
>>>>> and host to register your 'init_ex' procedure in pkcs15-syn.c .
>>>>>
>>>>> Then your can start the testing with the pkcs15-* tools, and finally
>>>>> minidriver.
>>>>>
>>>>>
>>>>>>
>>>>>> I am trying to get the minidriver to work with the pkcs#15 emulator.
>>>>>> Thank you.
>>>>>
>>>>>
>>>>> Kind regards,
>>>>> Viktor.
>>>>>
>>>>>
>>>>>>
>>>>>> On Mon, Jul 2, 2012 at 10:11 PM, Galoh Haron <grha...@gmail.com
>>>>>> <mailto:grha...@gmail.com>> wrote:
>>>>>>
>>>>>>       Hello,
>>>>>>
>>>>>>       I am trying to emulate a non pkcs#15  smart card with no support
>>>>>> for MF selection.
>>>>>>       How to test the emulation works?
>>>>>>       Because when i tried to run command pkcs15-tool -r 00, i
>>>>>> received
>>>>>>       "Certificate read failed: Invalid ASN.1 object"
>>>>>>
>>>>>>       Based on the log,
>>>>>>
>>>>>>       2012-07-02 22:06:20.293 [pkcs15-tool]
>>>>>> reader-pcsc.c:176:pcsc_internal_transmit: called
>>>>>>       2012-07-02 22:06:20.340
>>>>>>       Incoming APDU data [   17 bytes]
>>>>>> =====================================
>>>>>>       84 E4 6C BA 08 7C 97 35 05 07 F1 DA 37 4E B2 90 ..l..|.5....7N..
>>>>>>       00                                              .
>>>>>>
>>>>>> ======================================================================
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] card.c:330:sc_unlock:
>>>>>> called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> card-mykad.c:506:mykad_check_sw: called
>>>>>>       2012-07-02 22:06:20.340 certificate size is 1035
>>>>>>       2012-07-02 22:06:20.340 called, left=1031, depth 0
>>>>>>       2012-07-02 22:06:20.340 Looking for 'tbsCertificate', tag
>>>>>> 0x1000010
>>>>>>       2012-07-02 22:06:20.340 decoding 'tbsCertificate'
>>>>>>       2012-07-02 22:06:20.340  called, left=880, depth 1
>>>>>>       2012-07-02 22:06:20.340 Looking for 'version', tag 0x21000000,
>>>>>> OPTIONAL
>>>>>>       2012-07-02 22:06:20.340  decoding 'version'
>>>>>>       2012-07-02 22:06:20.340   called, left=3, depth 2
>>>>>>       2012-07-02 22:06:20.340 Looking for 'version', tag 0x2
>>>>>>       2012-07-02 22:06:20.340   decoding 'version'
>>>>>>       2012-07-02 22:06:20.340   decoding 'version' returned 2
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 Looking for 'serialNumber', tag 0x2
>>>>>>       2012-07-02 22:06:20.340  decoding 'serialNumber'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'signature', tag 0x1000010
>>>>>>       2012-07-02 22:06:20.340  decoding 'signature'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'issuer', tag 0x1000010
>>>>>>       2012-07-02 22:06:20.340  decoding 'issuer'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'validity', tag 0x1000010
>>>>>>       2012-07-02 22:06:20.340  decoding 'validity'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'subject', tag 0x1000010
>>>>>>       2012-07-02 22:06:20.340  decoding 'subject'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'subjectPublicKeyInfo', tag
>>>>>> 0x1000010
>>>>>>       2012-07-02 22:06:20.340  decoding 'subjectPublicKeyInfo'
>>>>>>       2012-07-02 22:06:20.340 sc_pkcs15_pubkey_from_spki 013C1CEF:157
>>>>>>       2012-07-02 22:06:20.340 called, left=157, depth 0
>>>>>>       2012-07-02 22:06:20.340 Looking for 'algorithm', tag 0x1000010
>>>>>>       2012-07-02 22:06:20.340 decoding 'algorithm'
>>>>>>       2012-07-02 22:06:20.340  called, left=13, depth 1
>>>>>>       2012-07-02 22:06:20.340 Looking for 'algorithm', tag 0x6
>>>>>>       2012-07-02 22:06:20.340  decoding 'algorithm'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'nullParam', tag 0x5,
>>>>>> OPTIONAL
>>>>>>       2012-07-02 22:06:20.340  decoding 'nullParam'
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 Looking for 'subjectPublicKey', tag 0x3
>>>>>>       2012-07-02 22:06:20.340 decoding 'subjectPublicKey'
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 DEE pk_alg.algorithm=0
>>>>>>       2012-07-02 22:06:20.340 called, left=138, depth 0
>>>>>>       2012-07-02 22:06:20.340 Looking for 'publicKeyCoefficients', tag
>>>>>> 0x1000010, OPTIONAL
>>>>>>       2012-07-02 22:06:20.340 decoding 'publicKeyCoefficients'
>>>>>>       2012-07-02 22:06:20.340  called, left=135, depth 1
>>>>>>       2012-07-02 22:06:20.340 Looking for 'modulus', tag 0x2
>>>>>>       2012-07-02 22:06:20.340  decoding 'modulus'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'exponent', tag 0x2
>>>>>>       2012-07-02 22:06:20.340  decoding 'exponent'
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 Looking for 'extensions', tag
>>>>>> 0x21000003, OPTIONAL
>>>>>>       2012-07-02 22:06:20.340  decoding 'extensions'
>>>>>>       2012-07-02 22:06:20.340   called, left=328, depth 2
>>>>>>       2012-07-02 22:06:20.340 Looking for 'x509v3', tag 0x1000010,
>>>>>> OPTIONAL
>>>>>>       2012-07-02 22:06:20.340   decoding 'x509v3'
>>>>>>       2012-07-02 22:06:20.340    called, left=324, depth 3
>>>>>>       2012-07-02 22:06:20.340 Looking for 'certificatePolicies', tag
>>>>>> 0x1000010, OPTIONAL
>>>>>>       2012-07-02 22:06:20.340    decoding 'certificatePolicies'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'subjectKeyIdentifier', tag
>>>>>> 0x1000010, OPTIONAL
>>>>>>       2012-07-02 22:06:20.340    decoding 'subjectKeyIdentifier'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'crlDistributionPoints', tag
>>>>>> 0x1000010, OPTIONAL
>>>>>>       2012-07-02 22:06:20.340    decoding 'crlDistributionPoints'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'authorityKeyIdentifier',
>>>>>> tag 0x1000010, OPTIONAL
>>>>>>       2012-07-02 22:06:20.340    decoding 'authorityKeyIdentifier'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'keyUsage', tag 0x1000010,
>>>>>> OPTIONAL
>>>>>>       2012-07-02 22:06:20.340    decoding 'keyUsage'
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 Looking for 'signatureAlgorithm', tag
>>>>>> 0x1000010
>>>>>>       2012-07-02 22:06:20.340 decoding 'signatureAlgorithm'
>>>>>>       2012-07-02 22:06:20.340  called, left=13, depth 1
>>>>>>       2012-07-02 22:06:20.340 Looking for 'algorithm', tag 0x6
>>>>>>       2012-07-02 22:06:20.340  decoding 'algorithm'
>>>>>>       2012-07-02 22:06:20.340 Looking for 'nullParam', tag 0x5,
>>>>>> OPTIONAL
>>>>>>       2012-07-02 22:06:20.340  decoding 'nullParam'
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 Looking for 'signatureValue', tag 0x3
>>>>>>       2012-07-02 22:06:20.340 decoding 'signatureValue'
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] asn1.c:1394:asn1_decode:
>>>>>> returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 encoding 'serialNumber'
>>>>>>       2012-07-02 22:06:20.340 type=4, tag=0x02, parm=013C0380, len=16
>>>>>>       2012-07-02 22:06:20.340 length of encoded item=18
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] card.c:330:sc_unlock:
>>>>>> called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> pkcs15.c:959:sc_pkcs15_bind: returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> pkcs15-cert.c:156:sc_pkcs15_read_certificate: called
>>>>>>       2012-07-02 22:06:20.340 X.509 certificate not found
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> pkcs15.c:969:sc_pkcs15_unbind: called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> pkcs15-pin.c:596:sc_pkcs15_pincache_clear: called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool] card.c:330:sc_unlock:
>>>>>> called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> reader-pcsc.c:548:pcsc_unlock: called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> card.c:242:sc_disconnect_card: called
>>>>>>       2012-07-02 22:06:20.340 [pkcs15-tool]
>>>>>> reader-pcsc.c:498:pcsc_disconnect: called
>>>>>>       2012-07-02 22:06:20.542 [pkcs15-tool]
>>>>>> card.c:258:sc_disconnect_card: returning with: 0 (Success)
>>>>>>       2012-07-02 22:06:20.542 [pkcs15-tool]
>>>>>> ctx.c:738:sc_release_context: called
>>>>>>       2012-07-02 22:06:20.542 [pkcs15-tool]
>>>>>> reader-pcsc.c:736:pcsc_finish: called
>>>>>>
>>>>>>       Obviously I can't used the sc_pkcs15_read_certificate. My card
>>>>>> does not support pkcs15.
>>>>>>       Or did i misunderstand the whole pkcs#15 emulator concept?
>>>>>>
>>>>>>       -galoh
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> opensc-devel mailing list
>>>>>> opensc-devel@lists.opensc-project.org
>>>>>> http://www.opensc-project.org/mailman/listinfo/opensc-devel
>>>>>
>>>>>
>>>> _______________________________________________
>>>> opensc-devel mailing list
>>>> opensc-devel@lists.opensc-project.org
>>>> http://www.opensc-project.org/mailman/listinfo/opensc-devel
>>>>
>>>>
>>>
>>> --
>>>
>>>    Douglas E. Engert  <deeng...@anl.gov>
>>>    Argonne National Laboratory
>>>    9700 South Cass Avenue
>>>    Argonne, Illinois  60439
>>>    (630) 252-5444
>>>
>>>
>>> _______________________________________________
>>> opensc-devel mailing list
>>> opensc-devel@lists.opensc-project.org
>>> http://www.opensc-project.org/mailman/listinfo/opensc-devel
>
>
> --
>
>  Douglas E. Engert  <deeng...@anl.gov>
>  Argonne National Laboratory
>  9700 South Cass Avenue
>  Argonne, Illinois  60439
>  (630) 252-5444
>
>
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to