On Wednesday 24. October 2012 10:45:12 you wrote:
> On 10/24/2012 9:44 AM, Mathias Tausig wrote:
> > Hy!
> > 
> > OK, I did install 0.13.0pre1 and patched with your patch, ran pkcs11-tool
> > very verbose. Still no success, but at least a little improvement:
> > 
> > Oct 24 16:35:40 off17 pcscd[4490]: 00006361 APDU: 00 A4 08 0C 02 50 15
> > Oct 24 16:35:40 off17 pcscd[4490]: 00013633 SW: 6A 82
> > Oct 24 16:35:40 off17 pcscd[4490]: 00000390 APDU: 00 A4 08 00 02 50 31 00
> > Oct 24 16:35:40 off17 pcscd[4490]: 00013839 SW: 6A 82
> > Oct 24 16:35:40 off17 pcscd[4490]: 00000499 APDU: 00 A4 08 00 02 2F 02 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00013895 SW: 6A 82
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000453 APDU: 00 A4 08 0C 04 50 4B 00
> > 01 Oct 24 16:35:41 off17 pcscd[4490]: 00014052 SW: 6A 82
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000495 APDU: 00 A4 08 0C 04 30 00 00
> > 01 Oct 24 16:35:41 off17 pcscd[4490]: 00014010 SW: 6A 82
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000434 APDU: 00 A4 08 00 04 10 03 B2
> > 00 00 Oct 24 16:35:41 off17 pcscd[4490]: 00014184 SW: 6A 82
> > Oct 24 16:35:41 off17 pcscd[4490]: 00007703 APDU: 00 A4 08 0C 02 1F FF
> > Oct 24 16:35:41 off17 pcscd[4490]: 00022255 SW: 90 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000243 APDU: 00 20 00 81 06 31 32 33
> > 34 35 36
> > Oct 24 16:35:41 off17 pcscd[4490]: 00040760 SW: 90 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00009640 APDU: 00 A4 08 0C 02 1F FF
> > Oct 24 16:35:41 off17 pcscd[4490]: 00019360 SW: 90 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000359 APDU: 00 20 00 81 06 31 32 33
> > 34 35 36
> > Oct 24 16:35:41 off17 pcscd[4490]: 00040640 SW: 90 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00002532 APDU: 00 A4 08 0C 02 1F FF
> > Oct 24 16:35:41 off17 pcscd[4490]: 00016460 SW: 90 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000383 APDU: 00 22 01 B6 03 83 01 02
> > Oct 24 16:35:41 off17 pcscd[4490]: 00010609 SW: 90 00
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000477 APDU: 00 2A 9E 9A 80 00 01 FF
> > FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> > FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> > FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> > FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 30 21 30 09 06 05
> > 2B 0E 03 02 1A 05 00 04 14 04 75 95 D0 FA E9 72 FB ED 0C 51 B4 A4 1C 7A
> > 34 9E 0C 47 BB 80
> > Oct 24 16:35:41 off17 pcscd[4490]: 00048524 SW: 67 00
> 
> Actually here is the problem. The above 67 00 is wrong length. The
> card-cardos.c tried this:
> 0xb721d900 16:35:41.223 [opensc-pkcs11]
> card-cardos.c:836:cardos_compute_signature: trying RSA_PURE_SIG (padded
> DigestInfo)
> 
> but it failed, so it tries again:
> 0xb721d900 16:35:41.272 [opensc-pkcs11]
> card-cardos.c:842:cardos_compute_signature: trying RSA_SIG (just the
> DigestInfo)
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000378 APDU: 00 2A 9E 9A 23 30 21 30
> > 09 06 05 2B 0E 03 02 1A 05 00 04 14 04 75 95 D0 FA E9 72 FB ED 0C 51 B4
> > A4 1C 7A 34 9E 0C 47 BB 80
> > Oct 24 16:35:41 off17 pcscd[4490]: 00023629 SW: 69 82
> 
> The 69 82 is Command not allowed, Security Status not satisfied (i.e.
> user_consent)
> 
> The question is why does it try the padded DigestInfo first?
> See the comments in card-cardos.c at line 821.
> If the right FLAGS are set, it should get it right the first time.
 
You are right! Reselecting the signature DF keeps the security status active 
(I tried it). I looked at the source code of the corresponding part (card-
cardos.c, line 821), and the commentary gives it away:

/* XXX As we don't know what operations are allowed with a
         * certain key, let's try RSA_PURE etc. and see which operation
         * succeeds (this is not really beautiful, but currently the
         * only way I see) -- Nils
         *
         * We also check for several caps flags here to pervent generating
         * invalid signatures with duplicated hash prefixes with some cards
         */

This is wrong. You can read those informations from the supportedAlgorithms 
sequence in the TokenInfo file (I have to lines there with RSA_PKCS and 
SHA1_RSA_PKCS as mechanisms and both with RSA2_SIG for the algorithm (which is 
also the algorithm of the key)).

> There are 4 other pkcs15-*.c modules that use the card-cardos.c driver.
> It looks like your card is not one of them. This is were others on the list
> with CardOS cards could help.

I don't understand that. Do you mean, that it selects the wrong card driver?
I have manually created the PKCS#15 application to reference a seperate 
signature application.

> 
> > Oct 24 16:35:41 off17 pcscd[4490]: 00000377 APDU: 00 2A 9E 9A 14 04 75 95
> > D0 FA E9 72 FB ED 0C 51 B4 A4 1C 7A 34 9E 0C 47 BB 80
> > Oct 24 16:35:41 off17 pcscd[4490]: 00015614 SW: 69 82
> 
> It tried a third time, but the Security status is not satisfied.
> 
> > Now it doesn't change back to the PKCS#15 DF anymore, but it reselects the
> > signature DF anyhow, with the same result.
> > 
> > The decicsive lines in the debug log appear to be those:
> > 
> > 0xb721d900 16:35:41.195 [opensc-pkcs11] pkcs15-
> > sec.c:479:sc_pkcs15_compute_signature: Private key path '3f001fff'
> > 0xb721d900 16:35:41.195 [opensc-pkcs11] pkcs15-sec.c:42:select_key_file:
> > called 0xb721d900 16:35:41.195 [opensc-pkcs11] card.c:610:sc_select_file:
> > called; type=2, path=3f001fff
> > 0xb721d900 16:35:41.195 [opensc-pkcs11]
> > card-cardos.c:439:cardos_select_file: called
> > 
> > It seems like sc_pkcs15_compute_signature selects the path of the private
> > key without a prior check, if it is already there. Do you agree?
> > 
> > cheers
> > Mathias
> > 
> > P.S.: Did you exclude the mailing list on purpose?
> 
> No sorry, must have just hit reply vs reply all.
> 
> Getting others involved would be a good idea, as there
> are a number of cards that use the same code, and it looks
> like user_consent was not considered when the sc_pkcs11_compute_signature
> was written.
> 
> If you want, send your response to this message to the list.
> 

Done ;-)

cheers
Mathias

> > On Wednesday 24. October 2012 08:56:35 you wrote:
> >> On 10/24/2012 7:31 AM, Mathias Tausig wrote:
> >>> On Tuesday 23. October 2012 09:42:51 Douglas E. Engert wrote:
> >>>> On 10/23/2012 3:43 AM, Mathias Tausig wrote:
> >>>>> On Monday 22. October 2012 13:45:36 Douglas E. Engert wrote:
> >>>>>> Based on the information in this thread, it looks like
> >>>>>> pkcs11-tool is is missing two lines that would check
> >>>>>> if the CKA_ALWAYS_AUTHENTICATE is set for the key
> >>>>>> in the sign_data routine.
> >>>>>> 
> >>>>>> Can you try the attached patch?
> >>>> 
> >>>> The patch I sent you was for 0.13.0pre1.
> >>>> 
> >>>> It looks like you applied it to some earlier version, as
> >>>> 0.12.2 and above have:
> >>>> 
> >>>> ATTR_METHOD(ALWAYS_AUTHENTICATE, CK_BBOOL);
> >>>> which is equivelent to the line you added:
> >>>> static CK_BBOOL getALWAYS_AUTHENTICATE (CK_SESSION_HANDLE sess,
> >>>> CK_OBJECT_HANDLE obj);
> >>> 
> >>> OK. Do you think it would be useful to try out the 0.13 beta version?
> >> 
> >> Depending on you needs you could try with 0.12.2 or 0.13.0pre1.
> >> but any fixes will only go into 0.13.
> >> 
> >> OK, so it looks like the card is enforcing user_consent.
> >> The best thing to do is modify the opensc.conf something like:
> >> 
> >> debug_level = 7;
> >> debug_file = /tmp/opensc-debug.log;
> >> 
> >> If you then use the modified pkcs11-tool with the pkcs11-spy,
> >> add a -v or maybe -v -v -v -v -v -v -v, as pkcs11-tool may
> >> modify the debug_level.
> >> 
> >> The card-cardos.c may be called by at least 4 different
> >> pkcs15-*.c  modules. I suspect that the card-cardos.c is being
> >> over conservative in re-selecting the 50 15 and 1F FF files
> >> when it does not need to. The trace will show
> >> what modules are involved in this select.
> >> 
> >>>> the C_Sign really does C_SignInit, C_SignUpdate, C_SignFinal.
> >>>> 
> >>>> Two things might be happening here. Depending on how the card driver
> >>>> 
> >>>>     was written I suspect it is in the card driver or opensc , that is
> >>>> 
> >>>> reselecting the 50 15 and 1F FF file each time (case (B) issue):
> >>>> 
> >>>> (A) login(session,CKU_CONTEXT_SPECIFIC); may need to be done just
> >>>> before
> >>>> the C_SignFinal, to put it just before the crypto operation.
> >>>> In the PKCS11-spy output, line 16 should be between lines 18 and 19.
> >>>> 
> >>>> (B) Even doing (A) is not good enough as the card driver is sending
> >>>> some select commands between the pin and the crypto operation.
> >>>> In the ADPU trace the order need to be:
> >>>> 
> >>>> (1) APDU: 00 A4 08 00 02 50 15
> >>>> (2) APDU: 00 A4 08 00 02 1F FF
> >>>> (3) APDU: 00 22 01 B6 03 83 01 02
> >>>> 
> >>>> (4) APDU: 00 20 00 81 06 31 32 33 34 35 36
> >>>> 
> >>>> (5) APDU: 00 2A 9E 9A 80 00 01 FF FF FF...
> >>>> 
> >>>> 
> >>>> Or maybe (4) could be between (2) and (3)
> >>>> 
> >>>> You could test if this is correct by using multiple -s options
> >>>> with the opensc-tool adding  a -s option for each of the APDUs
> >>>> listed in your trace and using : between bytes.
> >>>> 
> >>>>     opensc-tool -s 00:A4:08:00:02:50:15 \
> >>>>     
> >>>>                 -s 00:A4:08:00:02:1F:FF \
> >>>>                 -s 00:22:01:B6:03:83:01:02 \
> >>>>                 -s 00:20:00:81:06:31:32:33:34:35:36 \
> >>>>                 -s 00:2A:9E:9A:80:00:01:FF:FF:(and add the rest ov the
> >>>>                 line)
> >>> 
> >>> Yes, those are the correct commands. Select the signature DF, set the
> >>> security>
> >>> environment, verify the pin and issue the sign command. Here is the
> > 
> > output:
> >>>    opensc-tool -s 00:A4:08:00:02:50:15 \
> >>>    
> >>>                 -s 00:A4:08:00:02:1F:FF \
> >>>                 -s 00:22:01:B6:03:83:01:02  \
> >>>                
> >>>                -s 00:20:00:81:06:31:32:33:34:35:36  \
> >>>                -s "00 2A 9E 9A 14 70 37 80 71 98 C2 2A 7D 2B 08 07 37 1D
> >>>                76
> >>>                37
> >>> 
> >>> 79 A8 4F DF CF 80"
> >>> Using reader with a card: Cherry SmartBoard XX44 00 00
> >>> Sending: 00 A4 08 00 02 50 15
> >>> Received (SW1=0x90, SW2=0x00)
> >>> Sending: 00 A4 08 00 02 1F FF
> >>> Received (SW1=0x90, SW2=0x00)
> >>> Sending: 00 22 01 B6 03 83 01 02
> >>> Received (SW1=0x90, SW2=0x00)
> >>> Sending: 00 20 00 81 06 31 32 33 34 35 36
> >>> Received (SW1=0x90, SW2=0x00)
> >>> Sending: 00 2A 9E 9A 14 70 37 80 71 98 C2 2A 7D 2B 08 07 37 1D 76 37 79
> >>> A8
> >>> 4F DF CF 80
> >>> Received (SW1=0x90, SW2=0x00):
> >>> 43 B9 4E 55 83 FF 74 3C 14 62 40 92 B2 73 99 A0 C.NU..t<.b@..s..
> >>> AE 0E BD 34 CE 2F 65 0B 1A 39 88 80 26 89 58 A7 ...4./e..9..&.X.
> >>> 75 C3 61 A8 B6 38 14 B8 88 BD 05 59 CE B8 DF C3 u.a..8.....Y....
> >>> 58 9D E2 A4 AC 64 01 D4 90 82 E8 21 FF A4 44 98 X....d.....!..D.
> >>> 5E F2 DB 26 55 91 96 0D E3 E5 A4 3B D6 36 F2 52 ^..&U......;.6.R
> >>> 25 4C F6 44 A5 44 AD 42 03 F0 0A 9B 4F EC DE EB %L.D.D.B....O...
> >>> 99 94 44 8F 66 9B FD E2 D9 71 C6 FC 3E 8A 3C 50 ..D.f....q..>.<P
> >>> FC F9 C5 D2 2F 4C 66 3B 45 2D B0 D7 7E 46 A0 93 ..../Lf;E-..~F..
> >>> 
> >>> I tried to make it work by using the PKCS#11 library directly (without
> >>> pkcs11- tool), but that didn't help either.  Just calling OpenSession ->
> >>> Login -> FindObject -> SignInit -> Sign does the very same thing (switch
> >>> DF after verifying). Trying to issue another C_Login before and/or after
> >>> C_SignInit fails even earlier, as it returns a
> >>> CKR_USER_ALREADY_LOGGED_IN
> >>> error.>
> >>> 
> >>>> If that does not work, try moving the PIN up one line.
> >>>> 
> >>>>> I tried it out and had to adapt it a little bit to make it compile
> >>>>> (the
> >>>>> getALWAYS_AUTHENTICATE function needed a forward declaration). But I'm
> >>>>> afraid it didn't help. It did do an extra C_Login call:
> >>>>> 
> >>>>> 12: C_FindObjectsFinal
> >>>>> [in] hSession = 0x92c5f10
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 13: C_SignInit
> >>>>> [in] hSession = 0x92c5f10
> >>>>> pMechanism->type=CKM_SHA1_RSA_PKCS
> >>>>> [in] hKey = 0x92c09e8
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 14: C_GetAttributeValue
> >>>>> [in] hSession = 0x92c5f10
> >>>>> [in] hObject = 0x92c09e8
> >>>>> 
> >>>>> [in] pTemplate[1]:
> >>>>>        CKA_ALWAYS_AUTHENTICATE  bfa0ef23 / 1
> >>>>> 
> >>>>> [out] pTemplate[1]:
> >>>>>        CKA_ALWAYS_AUTHENTICATE  True
> >>>>> 
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 15: C_GetTokenInfo
> >>>>> [in] slotID = 0x1
> >>>>> 
> >>>>> [out] pInfo:
> >>>>>          label:                  'GLOBALTRUST test card (Signatur '
> >>>>>          manufacturerID:         'CardOS V4.4 (C) Siemens AG 1994-'
> >>>>>          model:                  'PKCS#15         '
> >>>>>          serialNumber:           '910E207A1616152D'
> >>>>>          ulMaxSessionCount:       0
> >>>>>          ulSessionCount:          0
> >>>>>          ulMaxRwSessionCount:     0
> >>>>>          ulRwSessionCount:        0
> >>>>>          ulMaxPinLen:             8
> >>>>>          ulMinPinLen:             6
> >>>>>          ulTotalPublicMemory:     -1
> >>>>>          ulFreePublicMemory:      -1
> >>>>>          ulTotalPrivateMemory:    -1
> >>>>>          ulFreePrivateMemory:     -1
> >>>>>          hardwareVersion:         0.0
> >>>>>          firmwareVersion:         0.0
> >>>>>          time:                   '                '
> >>>>>          flags:                   50c
> >>>>>          
> >>>>>            CKF_LOGIN_REQUIRED
> >>>>>            CKF_USER_PIN_INITIALIZED
> >>>>>            CKF_PROTECTED_AUTHENTICATION_PATH
> >>>>>            CKF_TOKEN_INITIALIZED
> >>>>> 
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 16: C_Login
> >>>>> [in] hSession = 0x92c5f10
> >>>>> [in] userType = CKU_CONTEXT_SPECIFIC
> >>>>> [in] pPin[ulPinLen] bfa1109d / 6
> >>>>> 
> >>>>>        31323334 3536
> >>>>> 
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 17: C_Sign
> >>>>> [in] hSession = 0x92c5f10
> >>>>> [in] pData[ulDataLen] bfa0f348 / 4
> >>>>> 
> >>>>>        626C610A
> >>>>> 
> >>>>> Returned:  257 CKR_USER_NOT_LOGGED_IN
> >>>>> 
> >>>>> 
> >>>>> 18: C_SignInit
> >>>>> [in] hSession = 0x92c5f10
> >>>>> pMechanism->type=CKM_SHA1_RSA_PKCS
> >>>>> [in] hKey = 0x92c09e8
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 19: C_SignUpdate
> >>>>> [in] hSession = 0x92c5f10
> >>>>> [in] pPart[ulPartLen] bfa0f348 / 4
> >>>>> 
> >>>>>        626C610A
> >>>>> 
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> 20: C_SignFinal
> >>>>> [in] hSession = 0x92c5f10
> >>>>> Returned:  257 CKR_USER_NOT_LOGGED_IN
> >>>>> 
> >>>>> 
> >>>>> 21: C_Finalize
> >>>>> Returned:  0 CKR_OK
> >>>>> 
> >>>>> 
> >>>>> Here are the coresponding APDUs
> >>>>> 
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00008338 APDU: 00 A4 08 00 02 1F FF
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00020184 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00001183 APDU: 00 20 00 81 06 31 32
> >>>>> 33
> >>>>> 34 35 36
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00047776 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00007895 APDU: 00 A4 08 00 02 1F FF
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00022121 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00001175 APDU: 00 20 00 81 06 31 32
> >>>>> 33
> >>>>> 34 35 36
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00048801 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00009766 APDU: 00 A4 08 00 02 50 15
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00020231 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00000181 APDU: 00 A4 08 00 02 1F FF
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00020820 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00000128 APDU: 00 22 01 B6 03 83 01
> >>>>> 02
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00018865 SW: 90 00
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00000169 APDU: 00 2A 9E 9A 80 00 01
> >>>>> FF
> >>>>> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> >>>>> FF
> >>>>> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> >>>>> FF
> >>>>> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> >>>>> FF
> >>>>> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 30 21 30 09 06
> >>>>> 05
> >>>>> 2B 0E 03 02 1A 05 00 04 14 04 75 95 D0 FA E9 72 FB ED 0C 51 B4 A4 1C
> >>>>> 7A
> >>>>> 34 9E 0C 47 BB 80
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00039823 SW: 69 82
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00000132 APDU: 00 2A 9E 9A 23 30 21
> >>>>> 30
> >>>>> 09 06 05 2B 0E 03 02 1A 05 00 04 14 04 75 95 D0 FA E9 72 FB ED 0C 51
> >>>>> B4
> >>>>> A4 1C 7A 34 9E 0C 47 BB 80
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00016864 SW: 69 82
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00000982 APDU: 00 2A 9E 9A 14 04 75
> >>>>> 95
> >>>>> D0 FA E9 72 FB ED 0C 51 B4 A4 1C 7A 34 9E 0C 47 BB 80
> >>>>> Oct 23 10:38:15 off17 pcscd[4499]: 00015032 SW: 69 82
> >>>>> 
> >>>>> The problem remains the same: After verifiying the PIN, the PKCS#15 DF
> >>>>> is
> >>>>> selected without doing anything there, and then the signature DF is
> >>>>> reselected and the authentication is lost in the process. This
> >>>>> behaviour
> >>>>> makes me think, that the problem is rathe in opensc-pkcs11.so and not
> >>>>> in
> >>>>> pkcs11-tool. I also tried to use the pinpad to enter the pin (instead
> >>>>> of
> >>>>> specifying it on the command line), but the outcome was the same.
> >>>>> 
> >>>>> cheers
> >>>>> Mathias
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>> _______________________________________________
> >>>>> 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
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to