Re: Help needed in finding the correct object in token

Muziket via Opensc-devel <[email protected]> Fri, 10 Sep 2021 15:09:09 +0000 (UTC)
Newsgroups gmane.comp.encryption.opensc.devel
Message-ID <[email protected]>
--===============5064750703925034282==
Content-Type: multipart/alternative; 
	boundary="----=_Part_3736784_580047497.1631286549009"
Content-Length: 16050

------=_Part_3736784_580047497.1631286549009
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

 Thanks Douglas for the explanation!
I managed to solve my issue.
    On Friday, 10 September 2021, 12:11:08 am SGT, Douglas E Engert <deenge=
[email protected]> wrote: =20
=20
 I don't think the problem is the -d 03. They look the same to me. Note in =
pkcs11-tool:

=C2=A0 807=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 opt_object_id_len =3D sizeof(opt_object_id);
=C2=A0 808=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 if (!hex_to_bin(optarg, opt_object_id, &opt_object_id_=
len)) {

this takes the optarg "03" and expects it to be a hex string and converts t=
o binary 0x03 with length opt_object_id_len=3D1;


On 9/9/2021 7:20 AM, Muziket via Opensc-devel wrote:
> Hi,
>=20
> I've been fiddling the codes of pkcs11-tool to understand opensc pkcs11 m=
odule.
>=20
> I installed a RSA and ECC key onto my token. My ECC key is identified wit=
h ID: 03 and using pkcs11-tool.exe:
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pkcs11-tool.exe -l -derive --input-fi=
le my_ecc_ephemeral_pubkey.der -d 03
> And I could get my token to derive a shared secret.
>=20
> I then tried to write a sample application by reusing some of the snippet=
s in pkcs11-tool.c with the opensc-libpkcs11.dll.
> It replied:
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0C_DeriveKey failed: rv =3D CKR_FUNCTI=
ON_NOT_SUPPORTED (0x54)
>=20
> I dived into the logs produced by pkcs11-spy and noticed that the CKA_ID =
is different from when I used the pkcs11-tool.exe:
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A044: C_FindObjectsInit
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A02021-09-09 19:57:08.162
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0[in] hSession =3D 0x12c7bf0
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0[in] pTemplate[2]:
>=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0CKA_CLASS=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0CKO_PRIVATE_KEY
>=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0CKA_ID *00000000004a6080 */ 1
>=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A000000000=C2=A0 03=C2=A0=20


the "/ 1" says it has length 1.
"0000000 03" is a hex dump starting at offset 000000 for 1 byte which is 0x=
03
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.
>=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0Returned:=C2=A0 0 CKR_OK
>=20
> In my sample application, instead of using getopt, I chose to hardcode th=
e id to opt_object_id[0], which essentially, gives the same value as when p=
kcs11-tool.exe was used by looking at the=20
> pkcs11-tool.c codes.
> Hence, I'm not sure what translations are required to identify the correc=
t ECC object for the shared secret derivation.
>=20
> Any insight is appreciated.

This works for me:
pkcs11-tool --slot 0 --module /opt/ossl-1.1.1k/lib/pkcs11-spy.so -l --deriv=
e -m ECDH1-COFACTOR-DERIVE -O -d 03 -i /tmp/derive.2810.other.pubkey.der

Try adding the=C2=A0 equivelent to -m ECDH1-COFACTOR-DERIVE

so the C_DeriveKey looks something like this:

10: C_DeriveKey
2021-09-09 10:36:30.335
[in] hSession =3D 0x55d971f544a0
[in] pMechanism->type =3D CKM_ECDH1_COFACTOR_DERIVE
[in] pMechanism->pParameter->kdf =3D CKD_NULL
[in] pMechanism->pParameter->pSharedData[ulSharedDataLen] =3D NULL [size : =
0x0 (0)]
[in] pMechanism->pParameter->pPublicData[ulPublicDataLen] =3D 000055d971f55=
6d0 / 97
=C2=A0 =C2=A0 00000000=C2=A0 04 71 11 01 1A 31 3E C9 C7 2A E2 38 6A 35 1C A=
D=C2=A0 .q...1>..*.8j5..
=C2=A0 =C2=A0 00000010=C2=A0 FC 61 18 C9 D9 38 B3 47 D4 26 61 A4 52 E7 ED B=
3=C2=A0 .a...8.G.&a.R...
=C2=A0 =C2=A0 00000020=C2=A0 B4 B7 08 62 10 2E B1 9F CB 69 49 59 70 69 0C 8=
9=C2=A0 ...b.....iIYpi..
=C2=A0 =C2=A0 00000030=C2=A0 24 BA 55 AB 17 A1 74 75 95 C5 6E 16 2C 48 5C 8=
1=C2=A0 $.U...tu..n.,H\.
=C2=A0 =C2=A0 00000040=C2=A0 04 75 EA 14 EF 27 95 6F A1 15 AF DD C7 09 C3 F=
B=C2=A0 .u...'.o........
=C2=A0 =C2=A0 00000050=C2=A0 2F A6 3D 39 CF 65 7D 9D 3D E7 EA 1D 7B AD 89 1=
6=C2=A0 /.=3D9.e}.=3D...{...
=C2=A0 =C2=A0 00000060=C2=A0 88=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .
[in] hBaseKey =3D 0x55d971f514f0
[in] pTemplate[10]:
=C2=A0 =C2=A0 CKA_TOKEN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 False
=C2=A0 =C2=A0 CKA_CLASS=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CKO_SECRET=
_KEY
=C2=A0 =C2=A0 CKA_KEY_TYPE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CKK_GENERIC_SE=
CRET
=C2=A0 =C2=A0 CKA_SENSITIVE=C2=A0 =C2=A0 =C2=A0 =C2=A0 False
=C2=A0 =C2=A0 CKA_EXTRACTABLE=C2=A0 =C2=A0 =C2=A0 True
=C2=A0 =C2=A0 CKA_ENCRYPT=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 True
=C2=A0 =C2=A0 CKA_DECRYPT=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 True
=C2=A0 =C2=A0 CKA_WRAP=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 True
=C2=A0 =C2=A0 CKA_UNWRAP=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 True
=C2=A0 =C2=A0 CKA_VALUE_LEN=C2=A0 =C2=A0 =C2=A0 =C2=A0 00007ffd54a6dcc0 / 8
=C2=A0 =C2=A0 00000000=C2=A0 30 00 00 00 00 00 00 00=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0....=
...
[out] hKey =3D 0x55d971f558a0
Returned:=C2=A0 0 CKR_OK

The pPublicData[ulPublicDataLen] in this case is the compressed public key =
from 384 bit EC key i.e. CKA_EC_POINT
Its the key of the peer, in your case from the "my_ecc_ephemeral_pubkey.der=
"
See
http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cs01/pkcs11-curr-v2.40-=
cs01.pdf or other versions as
v2.20 did not specify the format of the parameter.


>=20
> Thank you.
> Muziket
>=20
>=20
>=20
>=20
> _______________________________________________
> Opensc-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensc-devel
>=20

--=20

=C2=A0 Douglas E. Engert=C2=A0 <[email protected]>



_______________________________________________
Opensc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensc-devel
 =20
------=_Part_3736784_580047497.1631286549009
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body><div class=3D"ydpd1842940yahoo-style-wrap" style=
=3D"font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px=
;"><div></div>
        <div dir=3D"ltr" data-setdir=3D"false">Thanks Douglas for the expla=
nation!</div><div dir=3D"ltr" data-setdir=3D"false"><br></div><div dir=3D"l=
tr" data-setdir=3D"false">I managed to solve my issue.</div><div><br></div>
       =20
        </div><div id=3D"yahoo_quoted_1508612453" class=3D"yahoo_quoted">
            <div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s=
ans-serif;font-size:13px;color:#26282a;">
               =20
                <div>
                    On Friday, 10 September 2021, 12:11:08 am SGT, Douglas =
E Engert &lt;[email protected]&gt; wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div dir=3D"ltr">I don't think the problem is the -d 0=
3. They look the same to me. Note in pkcs11-tool:<br clear=3D"none"><br cle=
ar=3D"none">&nbsp;  807&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nb=
sp; &nbsp; &nbsp; &nbsp; &nbsp;  opt_object_id_len =3D sizeof(opt_object_id=
);<br clear=3D"none">&nbsp;  808&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &=
nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if (!hex_to_bin(optarg, opt_objec=
t_id, &amp;opt_object_id_len)) {<br clear=3D"none"><br clear=3D"none">this =
takes the optarg "03" and expects it to be a hex string and converts to bin=
ary 0x03 with length opt_object_id_len=3D1;<br clear=3D"none"><br clear=3D"=
none"><br clear=3D"none">On 9/9/2021 7:20 AM, Muziket via Opensc-devel wrot=
e:<br clear=3D"none">&gt; Hi,<br clear=3D"none">&gt; <br clear=3D"none">&gt=
; I've been fiddling the codes of pkcs11-tool to understand opensc pkcs11 m=
odule.<br clear=3D"none">&gt; <br clear=3D"none">&gt; I installed a RSA and=
 ECC key onto my token. My ECC key is identified with ID: 03 and using pkcs=
11-tool.exe:<br clear=3D"none">&gt;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pkc=
s11-tool.exe -l -derive --input-file my_ecc_ephemeral_pubkey.der -d 03<br c=
lear=3D"none">&gt; And I could get my token to derive a shared secret.<br c=
lear=3D"none">&gt; <br clear=3D"none">&gt; I then tried to write a sample a=
pplication by reusing some of the snippets in pkcs11-tool.c with the opensc=
-libpkcs11.dll.<br clear=3D"none">&gt; It replied:<br clear=3D"none">&gt;&n=
bsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C_DeriveKey failed: rv =3D CKR_FUNCTION_=
NOT_SUPPORTED (0x54)<br clear=3D"none">&gt; <br clear=3D"none">&gt; I dived=
 into the logs produced by pkcs11-spy and noticed that the CKA_ID is differ=
ent from when I used the pkcs11-tool.exe:<br clear=3D"none">&gt;&nbsp; &nbs=
p;&nbsp;&nbsp;&nbsp;44: C_FindObjectsInit<br clear=3D"none">&gt;&nbsp; &nbs=
p;&nbsp;&nbsp;&nbsp;2021-09-09 19:57:08.162<br clear=3D"none">&gt;&nbsp; &n=
bsp;&nbsp;&nbsp;&nbsp;[in] hSession =3D 0x12c7bf0<br clear=3D"none">&gt;&nb=
sp; &nbsp;&nbsp;&nbsp;&nbsp;[in] pTemplate[2]:<br clear=3D"none">&gt;&nbsp;=
 &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;CKA_CLASS&nbsp; &nbsp; &nbsp; &nbsp;=
 &nbsp; &nbsp; &nbsp;CKO_PRIVATE_KEY<br clear=3D"none">&gt;&nbsp; &nbsp; &n=
bsp; &nbsp;&nbsp;&nbsp;&nbsp;CKA_ID *00000000004a6080 */ 1<br clear=3D"none=
">&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;00000000&nbsp; 03&nbsp; =
<br clear=3D"none"><br clear=3D"none"><br clear=3D"none">the "/ 1" says it =
has length 1.<br clear=3D"none">"0000000 03" is a hex dump starting at offs=
et 000000 for 1 byte which is 0x03<br clear=3D"none"> &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp=
; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.<br clear=
=3D"none">&gt;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;Returned:&nbsp; 0 CKR_OK<br cl=
ear=3D"none">&gt; <br clear=3D"none">&gt; In my sample application, instead=
 of using getopt, I chose to hardcode the id to opt_object_id[0], which ess=
entially, gives the same value as when pkcs11-tool.exe was used by looking =
at the <br clear=3D"none">&gt; pkcs11-tool.c codes.<br clear=3D"none">&gt; =
Hence, I'm not sure what translations are required to identify the correct =
ECC object for the shared secret derivation.<br clear=3D"none">&gt; <br cle=
ar=3D"none">&gt; Any insight is appreciated.<br clear=3D"none"><br clear=3D=
"none">This works for me:<br clear=3D"none">pkcs11-tool --slot 0 --module /=
opt/ossl-1.1.1k/lib/pkcs11-spy.so -l --derive -m ECDH1-COFACTOR-DERIVE -O -=
d 03 -i /tmp/derive.2810.other.pubkey.der<br clear=3D"none"><br clear=3D"no=
ne">Try adding the&nbsp; equivelent to -m ECDH1-COFACTOR-DERIVE<br clear=3D=
"none"><br clear=3D"none">so the C_DeriveKey looks something like this:<br =
clear=3D"none"><br clear=3D"none">10: C_DeriveKey<br clear=3D"none">2021-09=
-09 10:36:30.335<br clear=3D"none">[in] hSession =3D 0x55d971f544a0<br clea=
r=3D"none">[in] pMechanism-&gt;type =3D CKM_ECDH1_COFACTOR_DERIVE<br clear=
=3D"none">[in] pMechanism-&gt;pParameter-&gt;kdf =3D CKD_NULL<br clear=3D"n=
one">[in] pMechanism-&gt;pParameter-&gt;pSharedData[ulSharedDataLen] =3D NU=
LL [size : 0x0 (0)]<br clear=3D"none">[in] pMechanism-&gt;pParameter-&gt;pP=
ublicData[ulPublicDataLen] =3D 000055d971f556d0 / 97<br clear=3D"none">&nbs=
p; &nbsp;  00000000&nbsp; 04 71 11 01 1A 31 3E C9 C7 2A E2 38 6A 35 1C AD&n=
bsp; .q...1&gt;..*.8j5..<br clear=3D"none">&nbsp; &nbsp;  00000010&nbsp; FC=
 61 18 C9 D9 38 B3 47 D4 26 61 A4 52 E7 ED B3&nbsp; .a...8.G.&amp;a.R...<br=
 clear=3D"none">&nbsp; &nbsp;  00000020&nbsp; B4 B7 08 62 10 2E B1 9F CB 69=
 49 59 70 69 0C 89&nbsp; ...b.....iIYpi..<br clear=3D"none">&nbsp; &nbsp;  =
00000030&nbsp; 24 BA 55 AB 17 A1 74 75 95 C5 6E 16 2C 48 5C 81&nbsp; $.U...=
tu..n.,H\.<br clear=3D"none">&nbsp; &nbsp;  00000040&nbsp; 04 75 EA 14 EF 2=
7 95 6F A1 15 AF DD C7 09 C3 FB&nbsp; .u...'.o........<br clear=3D"none">&n=
bsp; &nbsp;  00000050&nbsp; 2F A6 3D 39 CF 65 7D 9D 3D E7 EA 1D 7B AD 89 16=
&nbsp; /.=3D9.e}.=3D...{...<br clear=3D"none">&nbsp; &nbsp;  00000060&nbsp;=
 88&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &n=
bsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp;  .<br clear=3D"none">[in] hBaseKey =3D 0x55d971f514f0<br clea=
r=3D"none">[in] pTemplate[10]:<br clear=3D"none">&nbsp; &nbsp;  CKA_TOKEN&n=
bsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  False<br clear=3D"none">&nbsp; &nb=
sp;  CKA_CLASS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  CKO_SECRET_KEY<br =
clear=3D"none">&nbsp; &nbsp;  CKA_KEY_TYPE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp=
; CKK_GENERIC_SECRET<br clear=3D"none">&nbsp; &nbsp;  CKA_SENSITIVE&nbsp; &=
nbsp; &nbsp; &nbsp;  False<br clear=3D"none">&nbsp; &nbsp;  CKA_EXTRACTABLE=
&nbsp; &nbsp; &nbsp;  True<br clear=3D"none">&nbsp; &nbsp;  CKA_ENCRYPT&nbs=
p; &nbsp; &nbsp; &nbsp; &nbsp;  True<br clear=3D"none">&nbsp; &nbsp;  CKA_D=
ECRYPT&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  True<br clear=3D"none">&nbsp; &nb=
sp;  CKA_WRAP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; True<br clear=
=3D"none">&nbsp; &nbsp;  CKA_UNWRAP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp=
; True<br clear=3D"none">&nbsp; &nbsp;  CKA_VALUE_LEN&nbsp; &nbsp; &nbsp; &=
nbsp;  00007ffd54a6dcc0 / 8<br clear=3D"none">&nbsp; &nbsp;  00000000&nbsp;=
 30 00 00 00 00 00 00 00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &n=
bsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.......<br clear=3D"none">[out] hK=
ey =3D 0x55d971f558a0<br clear=3D"none">Returned:&nbsp; 0 CKR_OK<br clear=
=3D"none"><br clear=3D"none">The pPublicData[ulPublicDataLen] in this case =
is the compressed public key from 384 bit EC key i.e. CKA_EC_POINT<br clear=
=3D"none">Its the key of the peer, in your case from the "my_ecc_ephemeral_=
pubkey.der"<br clear=3D"none">See<br clear=3D"none"><a shape=3D"rect" href=
=3D"http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cs01/pkcs11-curr-v2=
.40-cs01.pdf " target=3D"_blank">http://docs.oasis-open.org/pkcs11/pkcs11-c=
urr/v2.40/cs01/pkcs11-curr-v2.40-cs01.pdf </a>or other versions as<br clear=
=3D"none">v2.20 did not specify the format of the parameter.<div class=3D"y=
qt8417572595" id=3D"yqtfd42649"><br clear=3D"none"><br clear=3D"none"><br c=
lear=3D"none">&gt; <br clear=3D"none">&gt; Thank you.<br clear=3D"none">&gt=
; Muziket</div><br clear=3D"none">&gt; <br clear=3D"none">&gt; <br clear=3D=
"none">&gt; <br clear=3D"none">&gt; <br clear=3D"none">&gt; _______________=
________________________________<br clear=3D"none">&gt; Opensc-devel mailin=
g list<br clear=3D"none">&gt; <a shape=3D"rect" ymailto=3D"mailto:Opensc-de=
[email protected]" href=3D"mailto:[email protected]=
t">[email protected]</a><br clear=3D"none">&gt; <a shape=
=3D"rect" href=3D"https://lists.sourceforge.net/lists/listinfo/opensc-devel=
" target=3D"_blank">https://lists.sourceforge.net/lists/listinfo/opensc-dev=
el</a><br clear=3D"none">&gt; <br clear=3D"none"><br clear=3D"none">-- <br =
clear=3D"none"><br clear=3D"none">&nbsp; Douglas E. Engert&nbsp; &lt;<a sha=
pe=3D"rect" ymailto=3D"mailto:[email protected]" href=3D"mailto:DEEngert@g=
mail.com">[email protected]</a>&gt;<br clear=3D"none"><br clear=3D"none"><=
br clear=3D"none"><br clear=3D"none">______________________________________=
_________<br clear=3D"none">Opensc-devel mailing list<br clear=3D"none"><a =
shape=3D"rect" ymailto=3D"mailto:[email protected]" href=
=3D"mailto:[email protected]">[email protected]=
ge.net</a><br clear=3D"none"><a shape=3D"rect" href=3D"https://lists.source=
forge.net/lists/listinfo/opensc-devel" target=3D"_blank">https://lists.sour=
ceforge.net/lists/listinfo/opensc-devel</a><div class=3D"yqt8417572595" id=
=3D"yqtfd92834"><br clear=3D"none"></div></div></div>
            </div>
        </div></body></html>
------=_Part_3736784_580047497.1631286549009--


--===============5064750703925034282==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============5064750703925034282==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Opensc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensc-devel

--===============5064750703925034282==--