Hi Greg, > My question is: what does the support for this card look like today, > and what can I do to help develop it. I'm new to smart cards and to > opensc, but I've spent a lot of time reading through the ACOS5 > documentation and about smart cards in general. > > I feel confident that I could develop the code if I had any idea where > to start and what needs to be done to make this card useful on the > non-Windows platforms. If anyone can help get me started, I'll be > happy to get the project complete and contribute a patch back.
wow, great! I will try to help the best I can. in general cards need a low level driver with functions like "create this file, write this data, etc." and high level functions that decide how to implement something, and a profile how the structures should look like at the end. the current code can be simply deleted / not much in there. if you look at well working drivers like cardos of flex, you will see the same basic skeleton there. IIRC the acos5 cards are a bit special, since in manufacturing mode no access control is enforced. one way to handle this would be to create a main folder with a key to protect it and put the card in operational use. thus at first every pkcs15-init would need that key. this would be similar to the cryptoflex transport key mechanism (a special card key that can be used to erase a card, even without knowing the PINS in the pkcs#15 profile). cardos also has something like that, they have the startkey, packagekey and systemload key or something like that, three special vendor keys that can be used to format the card and to upload firmware etc. maybe this could be implemented in some tool, or directly inside opensc. once that is done, opensc would do normal pkcs#15 create work: create file 2f00, create directory 5015, create files and directories inside that directory, create pin objects and rsa key etc. but this would be quite similar to the other cards I guess, and can be written down from the manual I hope. what do you think? I think the hardest part is to get started, i.e. create some MF with a secure but functional setup. once that exists, it will be much easier to start from there. a dummy driver could implement all functions with something that creates a debug entry and returns an error code. that way one by one you could see which function is called, the parameters, and slowly implement what is needed. but I haven't written a full driver from scratch, so I guess other people have much better advice. Regards, Andreas _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel