On Wed, 2010-09-29 at 16:25 -0500, Douglas E. Engert wrote: > > On 9/29/2010 3:05 PM, Andre Zepezauer wrote: > > On Wed, 2010-09-29 at 13:35 -0500, Douglas E. Engert wrote: > >> > >> On 9/29/2010 9:51 AM, Andre Zepezauer wrote: > >>> Hello Douglas, > >>> > >>> in my opinion the usage of OpenSSL in libopensc.so should be removed > >>> altogether. If cryptography is needed by some cards (i.e. for > >>> ), then this should be done by dedicated > >>> tools. CardOS is a good example. It requires encrypted APDU:s for the > >>> delete_MF and create_MF commands. This is done by cardos-tool, which has > >>> to be executed only before personalisation. Looking at the code of > >>> entersafe, gpk and oberthur I came to the conclusion, that a similar > >>> approach could work for these drivers too. > >> > >> I agree. The PIV card only needs 3DES for initialization/personalization > >> today. The piv-tool was designed to allow for initializing test cards, with > >> the intent that production cards would be issued by card management > >> stations > >> run by others as the NIST standards only cover a few of the commands needed > >> for initialization, leaving the rest up to the card vendors. (i.e. one can > >> generate a key ipair on the card, but you can not load a private key on the > >> card.) Thus the ordinary user would not require OpenSSL. > >> > >>> > >>> If parsing of certificates is the reason for using OpenSSL, then the > >>> missing functionality of pkcs15-cert.c should be determined and > >>> corresponding tickets should be created. > >> > >> What has happened as some card driver authors have found it easier to > >> just use OpenSSL, and have added routines like: sc_pkcs15_pubkey_from_cert > >> into pkcs11-pubkey.c Because the parse_x509_cert only works with RSA. > >> > >> But to get this code replaced, will take the will of the community > >> to get this done. > > > > I don't think so, because the function sc_pkcs15_pubkey_from_cert is > > called only at pkcs15init/pkcs15-lib.c#L2030 > > > > The same holds for sc_pkcs15_pubkey_from_prvkey, which is called at > > pkcs15init/pkcs15-lib.c#L2036 and nowhere else. > > > > That shows (at least to me), that these two functions belonging to the > > tools section of OpenSC and should be placed there. > > But parse_x509_cert also get the pubkey from a cert. So why are there two > routines? Because parse_x509_cert only works with RSA? Where as > sc_pkcs15_pubkey_from_cert could easily work with more the RSA. > > So we have duplicate code, using different methods. We could do a better > and implement sc_pkcs15_pubkey_from_cert without OpenSSL, and use it from > parse_x509_cert. > > I am interested in expanding OpenSC to work with EC keys, with at least > named-curves. (The OID of the curve is the parameter.) parse_x509_cert does > not obtain the algorithm parameters, which for RSA are null, and the > pkcs15-piv.c needs to get the public key from the cert in normal use. This > will require a modified parse_x509_cert or sc_pkcs15_pubkey_from_cert. > > (Since the PIV specs for EC only require the use of prime256v1 or secp384r1 > so I could take a shortcut, and use the size of the point to get the curve, > but in the future, other cards may support EC for other curves or even > explicit > parameters.) All the code for EC is in OpenSSL, making it very tempting > to just use OpenSSL. > > The gostr3410 [1][2] algorithm is also based on EC, but has its own OID > {iso(1) member-body(2) ru(643) rans(2) cryptopro(2)} and requires parameters, > and it looks like the way it is used does not require parsing the cert to get > a public key so has not been added to parse_x509_cert. > > Much of gost is in OpenSSL too, as a separate engine
Can you point out the place where OpenSSL is called for GOST computation. This is of interest, because host-side decryption/signing is definitely subject for removal. _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel