Hello,
I would like to introduce the placeholder for the non-PIN authentication
objects.
So that there will be possibility to develop the support of the 'biometric',
'authKey' authentication types.
The general idea is to replace the 'sc_pkcs15_pin_info' structure by the more
general data type
where the actual pin-info would be as a sub-type.
The total patch is rather trivial but huge,
so here in attachment there is only the difference between existing and
proposed data types.
On the same occasion I propose to remove the 'magic' member.
If no objections, I will commit it after release.
Kind wishes,
Viktor.
Index: src/libopensc/pkcs15.h
===================================================================
--- src/libopensc/pkcs15.h (révision 5446)
+++ src/libopensc/pkcs15.h (copie de travail)
@@ -73,21 +73,32 @@
#define SC_PKCS15_PIN_AUTH_TYPE_AUTH_KEY 1
#define SC_PKCS15_PIN_AUTH_TYPE_SM_KEY 2
-struct sc_pkcs15_pin_info {
- struct sc_pkcs15_id auth_id;
- int reference;
- unsigned int flags, type;
- unsigned int auth_method;
- size_t min_length, stored_length, max_length;
- u8 pad_char;
- struct sc_path path;
- int tries_left;
- int max_tries;
+struct sc_pkcs15_pin_attributes {
+ unsigned int flags, type;
+ size_t min_length, stored_length, max_length;
+ int reference;
+ u8 pad_char;
+ };
+struct sc_pkcs15_authkey_attributes {
+ int derived;
+ struct sc_pkcs15_id skey_id;
+ };
+struct sc_pkcs15_biometric_attributes {
+ };
+struct sc_pkcs15_auth_info {
+ struct sc_pkcs15_id auth_id;
+ struct sc_path path;
+ unsigned auth_type;
+ union {
+ struct sc_pkcs15_pin_attributes pin;
+ struct sc_pkcs15_biometric_attributes bio;
+ struct sc_pkcs15_authkey_attributes authkey;
+ } attrs;
+ unsigned int auth_method;
+ int tries_left, max_tries;
+ };
+typedef struct sc_pkcs15_auth_info sc_pkcs15_auth_info_t;
- unsigned int magic;
-};
-typedef struct sc_pkcs15_pin_info sc_pkcs15_pin_info_t;
-
#define SC_PKCS15_ALGO_OP_COMPUTE_CHECKSUM 0x01
#define SC_PKCS15_ALGO_OP_COMPUTE_SIGNATURE 0x02
#define SC_PKCS15_ALGO_OP_VERIFY_CHECKSUM 0x04
@@ -753,7 +764,7 @@
void sc_pkcs15_free_pubkey_info(sc_pkcs15_pubkey_info_t *key);
void sc_pkcs15_free_cert_info(sc_pkcs15_cert_info_t *cert);
void sc_pkcs15_free_data_info(sc_pkcs15_data_info_t *data);
-void sc_pkcs15_free_pin_info(sc_pkcs15_pin_info_t *pin);
+void sc_pkcs15_free_auth_info(sc_pkcs15_auth_info_t *auth_info);
void sc_pkcs15_free_object(sc_pkcs15_object_t *obj);
/* File content wrapping */
@@ -846,7 +857,7 @@
const sc_pkcs15_object_t *, const void *);
/* some wrapper functions for sc_pkcs15emu_object_add */
int sc_pkcs15emu_add_pin_obj(sc_pkcs15_card_t *,
- const sc_pkcs15_object_t *, const sc_pkcs15_pin_info_t *);
+ const sc_pkcs15_object_t *, const sc_pkcs15_auth_info_t *);
int sc_pkcs15emu_add_rsa_prkey(sc_pkcs15_card_t *,
const sc_pkcs15_object_t *, const sc_pkcs15_prkey_info_t *);
int sc_pkcs15emu_add_rsa_pubkey(sc_pkcs15_card_t *,
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel