Dear opensc developers, I would like to propose the following simplification of the internal 'struct sc_pkcs15_card'.
typedef struct sc_pkcs15_card { sc_card_t *card; unsigned int flags; unsigned int magic; unsigned int pin_cache_counter; sc_file_t *file_app; sc_file_t *file_odf; sc_file_t *file_tokeninfo; sc_file_t *file_unusedspace; sc_pkcs15_df_t *df_list; sc_pkcs15_object_t *obj_list; sc_pkcs15_tokeninfo_t *tokeninfo; sc_pkcs15_unusedspace_t *unusedspace_list; void *dll_handle; struct sc_pkcs15_operations ops; } sc_pkcs15_card_t; The main difference to the current definition is, that everything that belongs to tokeninfo would be accessible through p15card->tokeninfo. In my opinion, grouping all tokeninfo related attributes under p15card->tokeninfo better reflects the meaning of these attributes. The purpose of this redefinition is maintains only and can be seen as a follow up to changeset [2872][1] by Ludovic Rousseau, who introduced the dedicated structure sc_pkcs15_tokeninfo_t. And since the upcoming 0.12 release will break (internal) pkcs15 API anyway, inclusion of this modification should not harm. I will prepare the patch, if reception of this proposal is positive. Some additional thoughts: 1. there exists already the data type sc_pkcs15_tokeninfo_t but the current definition of sc_pkcs15_card_t duplicates all its attributes [2][3] 2. the attribute 'flags' is overused, because it holds flags from two completely different domains (pkcs15 and internal flags mixed) [4][5] 3. use_file_cache, use_pin_cache are actually flags and could be defined as such 4. the current definition has evolved from the very beginning of opensc with more and more additions of attributes [6] 5. OpenSC source code is almost uncommented, therefore over complex data structures should be avoided Kind Regards Andre Zepezauer [1] http://www.opensc-project.org/opensc/changeset/2872#file1 [2] http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/pkcs15.h#L416 [3] http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/pkcs15.c#L728 [4] http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/pkcs15.h#L473 [5] http://www.opensc-project.org/opensc/browser/trunk/src/pkcs15init/pkcs15-lib.c#L2419 [6] http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/pkcs15.h?rev=571&annotate=blame _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel