Created
April 30, 2020 06:21
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/libopensc/asn1.c b/src/libopensc/asn1.c | |
index ad841934..9a077d3a 100644 | |
--- a/src/libopensc/asn1.c | |
+++ b/src/libopensc/asn1.c | |
@@ -1506,7 +1506,7 @@ static int asn1_decode_entry(sc_context_t *ctx,struct sc_asn1_entry *entry, | |
case SC_ASN1_INTEGER: | |
case SC_ASN1_ENUMERATED: | |
if (parm != NULL) { | |
- r = sc_asn1_decode_integer(obj, objlen, (int *) entry->parm, 0); | |
+ r = sc_asn1_decode_integer(obj, objlen, (int *)entry->parm, 0); | |
sc_debug(ctx, SC_LOG_DEBUG_ASN1, "%*.*sdecoding '%s' returned %d\n", depth, depth, "", | |
entry->name, *((int *) entry->parm)); | |
} | |
diff --git a/src/libopensc/card-cardos.c b/src/libopensc/card-cardos.c | |
index b7602443..a7648326 100644 | |
--- a/src/libopensc/card-cardos.c | |
+++ b/src/libopensc/card-cardos.c | |
@@ -44,19 +44,19 @@ static struct sc_card_driver cardos_drv = { | |
}; | |
static const struct sc_atr_table cardos_atrs[] = { | |
- /* 4.0 */ | |
- { "3b:e2:00:ff:c1:10:31:fe:55:c8:02:9c", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL }, | |
- /* cardos m4.2 and above */ | |
- { "3b:f2:18:00:ff:c1:0a:31:fe:55:c8:06:8a", "ff:ff:0f:ff:00:ff:00:ff:ff:00:00:00:00", NULL, SC_CARD_TYPE_CARDOS_M4_2, 0, NULL }, | |
- /* CardOS 4.4 */ | |
- { "3b:d2:18:02:c1:0a:31:fe:58:c8:0d:51", NULL, NULL, SC_CARD_TYPE_CARDOS_M4_4, 0, NULL}, | |
- /* CardOS v5.0 */ | |
- { "3b:d2:18:00:81:31:fe:58:c9:01:14", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_0, 0, NULL}, | |
- /* CardOS v5.3 */ | |
- { "3b:d2:18:00:81:31:fe:58:c9:02:17", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_3, 0, NULL}, | |
- { "3b:d2:18:00:81:31:fe:58:c9:03:16", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_3, 0, NULL}, | |
- { NULL, NULL, NULL, 0, 0, NULL } | |
-}; | |
+ /* 4.0 */ | |
+ {"3b:e2:00:ff:c1:10:31:fe:55:c8:02:9c", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL}, | |
+ /* cardos m4.2 and above */ | |
+ {"3b:f2:18:00:ff:c1:0a:31:fe:55:c8:06:8a", "ff:ff:0f:ff:00:ff:00:ff:ff:00:00:00:00", NULL, SC_CARD_TYPE_CARDOS_M4_2, | |
+ 0, NULL}, | |
+ /* CardOS 4.4 */ | |
+ {"3b:d2:18:02:c1:0a:31:fe:58:c8:0d:51", NULL, NULL, SC_CARD_TYPE_CARDOS_M4_4, 0, NULL}, | |
+ /* CardOS v5.0 */ | |
+ {"3b:d2:18:00:81:31:fe:58:c9:01:14", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_0, 0, NULL}, | |
+ /* CardOS v5.3 */ | |
+ {"3b:d2:18:00:81:31:fe:58:c9:02:17", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_3, 0, NULL}, | |
+ {"3b:d2:18:00:81:31:fe:58:c9:03:16", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_3, 0, NULL}, | |
+ {NULL, NULL, NULL, 0, 0, NULL}}; | |
/* private date for cardos driver */ | |
typedef struct cardos_data { | |
@@ -67,13 +67,11 @@ typedef struct cardos_data { | |
unsigned long ec_flags; | |
unsigned long ext_flags; | |
int rsa_2048; | |
- const sc_security_env_t * sec_env; | |
+ const sc_security_env_t *sec_env; | |
} cardos_data_t; | |
/* copied from iso7816.c */ | |
-static void fixup_transceive_length(const struct sc_card *card, | |
- struct sc_apdu *apdu) | |
-{ | |
+static void fixup_transceive_length(const struct sc_card *card, struct sc_apdu *apdu) { | |
if (card == NULL || apdu == NULL) { | |
return; | |
} | |
@@ -157,8 +155,8 @@ static int cardos_match_card(sc_card_t *card) | |
static int cardos_have_2048bit_package(sc_card_t *card) | |
{ | |
sc_apdu_t apdu; | |
- u8 rbuf[SC_MAX_APDU_BUFFER_SIZE]; | |
- int r; | |
+ u8 rbuf[SC_MAX_APDU_BUFFER_SIZE]; | |
+ int r; | |
const u8 *p = rbuf, *q; | |
size_t len, tlen = 0, ilen = 0; | |
@@ -190,18 +188,16 @@ static int cardos_have_2048bit_package(sc_card_t *card) | |
return 0; | |
} | |
- | |
/* Called from cardos_init for old cards, from cardos_cardctl_parsed_token_info for new cards */ | |
/* TODO see if works from old cards too */ | |
-static int cardos_add_algs(sc_card_t *card, unsigned long flags, unsigned long ec_flags, unsigned long ext_flags) | |
-{ | |
+static int cardos_add_algs(sc_card_t *card, unsigned long flags, unsigned long ec_flags, unsigned long ext_flags) { | |
- cardos_data_t * priv = (cardos_data_t *)card->drv_data; | |
+ cardos_data_t *priv = (cardos_data_t *)card->drv_data; | |
SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE); | |
- _sc_card_add_rsa_alg(card, 512, flags, 0); | |
- _sc_card_add_rsa_alg(card, 768, flags, 0); | |
+ _sc_card_add_rsa_alg(card, 512, flags, 0); | |
+ _sc_card_add_rsa_alg(card, 768, flags, 0); | |
_sc_card_add_rsa_alg(card, 1024, flags, 0); | |
if (priv->rsa_2048 == 1) { | |
_sc_card_add_rsa_alg(card, 1280, flags, 0); | |
@@ -219,8 +215,8 @@ static int cardos_add_algs(sc_card_t *card, unsigned long flags, unsigned long e | |
/* TODO need to get sizes from supported_algos too */ | |
if (ec_flags != 0) { | |
- _sc_card_add_ec_alg(card, 256, ec_flags, priv->ext_flags, NULL); | |
- _sc_card_add_ec_alg(card, 384, ec_flags, priv->ext_flags, NULL); | |
+ _sc_card_add_ec_alg(card, 256, ec_flags, priv->ext_flags, NULL); | |
+ _sc_card_add_ec_alg(card, 384, ec_flags, priv->ext_flags, NULL); | |
} | |
return 0; | |
@@ -228,7 +224,7 @@ static int cardos_add_algs(sc_card_t *card, unsigned long flags, unsigned long e | |
static int cardos_init(sc_card_t *card) | |
{ | |
- cardos_data_t * priv = NULL; | |
+ cardos_data_t *priv = NULL; | |
unsigned long flags = 0; | |
size_t data_field_length; | |
sc_apdu_t apdu; | |
@@ -248,22 +244,18 @@ static int cardos_init(sc_card_t *card) | |
/* let user override flags and type from opensc.conf */ | |
/* user can override card->type too.*/ | |
if (card->flags) { | |
- flags = card->flags; | |
+ flags = card->flags; | |
} else { | |
/* Set up algorithm info. */ | |
flags = 0; | |
if (card->type == SC_CARD_TYPE_CARDOS_V5_0) { | |
flags |= SC_ALGORITHM_RSA_PAD_PKCS1; | |
- } else if(card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
- flags |= SC_ALGORITHM_RSA_RAW | |
- | SC_ALGORITHM_RSA_HASH_NONE | |
- | SC_ALGORITHM_ONBOARD_KEY_GEN; | |
+ } else if (card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
+ flags |= SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_HASH_NONE | SC_ALGORITHM_ONBOARD_KEY_GEN; | |
} else { | |
- flags |= SC_ALGORITHM_RSA_RAW | |
- | SC_ALGORITHM_RSA_HASH_NONE | |
- | SC_ALGORITHM_NEED_USAGE | |
- | SC_ALGORITHM_ONBOARD_KEY_GEN; | |
+ flags |= SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_HASH_NONE | SC_ALGORITHM_NEED_USAGE | |
+ | SC_ALGORITHM_ONBOARD_KEY_GEN; | |
} | |
} | |
@@ -276,12 +268,9 @@ static int cardos_init(sc_card_t *card) | |
if (r == 1) | |
priv->rsa_2048 = 1; | |
card->caps |= SC_CARD_CAP_APDU_EXT; | |
- } else if (card->type == SC_CARD_TYPE_CARDOS_M4_3 | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_2B | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_2C | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_4 | |
- || card->type == SC_CARD_TYPE_CARDOS_V5_0 | |
- || card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
+ } else if (card->type == SC_CARD_TYPE_CARDOS_M4_3 || card->type == SC_CARD_TYPE_CARDOS_M4_2B | |
+ || card->type == SC_CARD_TYPE_CARDOS_M4_2C || card->type == SC_CARD_TYPE_CARDOS_M4_4 | |
+ || card->type == SC_CARD_TYPE_CARDOS_V5_0 || card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
priv->rsa_2048 = 1; | |
card->caps |= SC_CARD_CAP_APDU_EXT; | |
/* TODO check this. EC only if in supported_algo */ | |
@@ -314,14 +303,15 @@ static int cardos_init(sc_card_t *card) | |
/* Use Min card sizes and reader too. for V5_3 at least*/ | |
if (card->type == SC_CARD_TYPE_CARDOS_V5_0 || card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
- sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "data_field_length:%"SC_FORMAT_LEN_SIZE_T"u " | |
- "card->reader->max_send_size:%"SC_FORMAT_LEN_SIZE_T"u " | |
- "card->reader->max_recv_size:%"SC_FORMAT_LEN_SIZE_T"u %s", | |
- data_field_length, card->reader->max_send_size, card->reader->max_recv_size, | |
- (card->caps & SC_CARD_CAP_APDU_EXT) ? "SC_CARD_CAP_APDU_EXT" : " "); | |
+ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, | |
+ "data_field_length:%" SC_FORMAT_LEN_SIZE_T "u " | |
+ "card->reader->max_send_size:%" SC_FORMAT_LEN_SIZE_T "u " | |
+ "card->reader->max_recv_size:%" SC_FORMAT_LEN_SIZE_T "u %s", | |
+ data_field_length, card->reader->max_send_size, card->reader->max_recv_size, | |
+ (card->caps & SC_CARD_CAP_APDU_EXT) ? "SC_CARD_CAP_APDU_EXT" : " "); | |
if (card->caps & SC_CARD_CAP_APDU_EXT) { | |
- card->max_send_size = data_field_length - 6; | |
+ card->max_send_size = data_field_length - 6; | |
#ifdef _WIN32 | |
/* Windows does not support PCSC PART_10 and may have forced reader to 255/256 | |
* https://github.com/OpenSC/OpenSC/commit/eddea6f3c2d3dafc2c09eba6695c745a61b5186f | |
@@ -358,18 +348,16 @@ static int cardos_init(sc_card_t *card) | |
return 0; | |
} | |
- | |
/* | |
* Called from sc_pkcs15_bind_internal by cardctl after tokininfo is parsed. | |
* Create new flags based on supported_algos. | |
*/ | |
-int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_token_info * ptr) | |
-{ | |
- cardos_data_t * priv = (cardos_data_t *)card->drv_data; | |
- unsigned long new_flags= 0; | |
+int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_token_info *ptr) { | |
+ cardos_data_t *priv = (cardos_data_t *)card->drv_data; | |
+ unsigned long new_flags = 0; | |
unsigned long new_ec_flags = 0; | |
int i; | |
- struct sc_supported_algo_info (*saa)[SC_MAX_SUPPORTED_ALGORITHMS]; | |
+ struct sc_supported_algo_info(*saa)[SC_MAX_SUPPORTED_ALGORITHMS]; | |
struct sc_supported_algo_info *sa; | |
assert(ptr != NULL && ptr->tokeninfo != NULL); | |
@@ -377,7 +365,8 @@ int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_t | |
saa = &(ptr->tokeninfo->supported_algos); | |
SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE); | |
- sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Original Flags: 0x%8.8lx card->flags:0x%8.8lx", priv->flags, card->flags); | |
+ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Original Flags: 0x%8.8lx card->flags:0x%8.8lx", priv->flags, | |
+ card->flags); | |
if (card->flags) { | |
new_flags = card->flags; /* from card_atr flags */ | |
@@ -385,13 +374,14 @@ int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_t | |
for (i = 0, sa = saa[0]; i < SC_MAX_SUPPORTED_ALGORITHMS; i++, sa++) { | |
- if (sa->reference == 0 && sa->reference == 0 && sa->mechanism == 0 | |
- && sa->operations == 0 && sa->algo_ref == 0) | |
+ if (sa->reference == 0 && sa->reference == 0 && sa->mechanism == 0 && sa->operations == 0 | |
+ && sa->algo_ref == 0) | |
break; | |
- sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "supported_algos[%d] mechamism:0x%8.8x", i, sa->mechanism); | |
- switch(sa->mechanism) { | |
- case 0x01 : | |
+ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "supported_algos[%d] mechamism:0x%8.8x", i, | |
+ sa->mechanism); | |
+ switch (sa->mechanism) { | |
+ case 0x01: | |
/* | |
* Card appears to use lower 4 bits of reference as key, and upper | |
* 4 bits as mech for card. | |
@@ -401,17 +391,15 @@ int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_t | |
*/ | |
if (sa->reference & 0x10) { | |
sc_log(card->ctx, "Changeing mechanism to CKM_RSA_X_509 based on reference"); | |
- new_flags |= SC_ALGORITHM_RSA_RAW | |
- | SC_ALGORITHM_RSA_PAD_NONE; | |
+ new_flags |= SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_NONE; | |
sa->mechanism = 0x03; | |
} else | |
- new_flags |= SC_ALGORITHM_RSA_PAD_PKCS1; | |
+ new_flags |= SC_ALGORITHM_RSA_PAD_PKCS1; | |
break; | |
- case 0x03 : | |
- new_flags |= SC_ALGORITHM_RSA_RAW | |
- | SC_ALGORITHM_RSA_PAD_NONE; | |
+ case 0x03: | |
+ new_flags |= SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_NONE; | |
break; | |
- case 0x06 : | |
+ case 0x06: | |
new_flags |= SC_ALGORITHM_RSA_HASH_SHA1; | |
break; | |
case 0x1041: | |
@@ -423,7 +411,8 @@ int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_t | |
sc_debug(card->ctx, SC_LOG_DEBUG_VERBOSE, "UNKNOWN MECH: 0x%8.8x", sa->mechanism); | |
} | |
- sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "New_flags 0x%8.8lx New_ec_flags: 0x%8.8lx", new_flags, new_ec_flags); | |
+ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "New_flags 0x%8.8lx New_ec_flags: 0x%8.8lx", new_flags, | |
+ new_ec_flags); | |
} | |
if (new_flags == 0) { | |
@@ -435,15 +424,15 @@ int cardos_cardctl_parsed_token_info(sc_card_t *card, struct sc_cardctl_parsed_t | |
} | |
} | |
- sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"Final New_flags 0x%8.8lx New_ec_flags: 0x%8.8lx", new_flags, new_ec_flags); | |
+ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Final New_flags 0x%8.8lx New_ec_flags: 0x%8.8lx", new_flags, | |
+ new_ec_flags); | |
cardos_add_algs(card, new_flags, new_ec_flags, priv->ext_flags); | |
LOG_FUNC_RETURN(card->ctx, 0); | |
} | |
-static int cardos_finish(sc_card_t *card) | |
-{ | |
+static int cardos_finish(sc_card_t *card) { | |
int r = 0; | |
if (card) | |
@@ -460,68 +449,65 @@ static int cardos_finish(sc_card_t *card) | |
SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, r); | |
} | |
- | |
- | |
static const struct sc_card_error cardos_errors[] = { | |
-/* some error inside the card */ | |
-/* i.e. nothing you can do */ | |
-{ 0x6581, SC_ERROR_MEMORY_FAILURE, "EEPROM error; command aborted"}, | |
-{ 0x6fff, SC_ERROR_CARD_CMD_FAILED, "internal assertion error"}, | |
-{ 0x6700, SC_ERROR_WRONG_LENGTH, "LC invalid"}, | |
-{ 0x6985, SC_ERROR_CARD_CMD_FAILED, "no random number available"}, | |
-{ 0x6f81, SC_ERROR_CARD_CMD_FAILED, "file invalid, maybe checksum error"}, | |
-{ 0x6f82, SC_ERROR_CARD_CMD_FAILED, "not enough memory in xram"}, | |
-{ 0x6f84, SC_ERROR_CARD_CMD_FAILED, "general protection fault"}, | |
- | |
-/* the card doesn't know this combination of ins+cla+p1+p2 */ | |
-/* i.e. command will never work */ | |
-{ 0x6881, SC_ERROR_NO_CARD_SUPPORT, "logical channel not supported"}, | |
-{ 0x6a86, SC_ERROR_INCORRECT_PARAMETERS,"p1/p2 invalid"}, | |
-{ 0x6d00, SC_ERROR_INS_NOT_SUPPORTED, "ins invalid"}, | |
-{ 0x6e00, SC_ERROR_CLASS_NOT_SUPPORTED, "class invalid (hi nibble)"}, | |
- | |
-/* known command, but incorrectly used */ | |
-/* i.e. command could work, but you need to change something */ | |
-{ 0x6981, SC_ERROR_CARD_CMD_FAILED, "command cannot be used for file structure"}, | |
-{ 0x6a80, SC_ERROR_INCORRECT_PARAMETERS,"invalid parameters in data field"}, | |
-{ 0x6a81, SC_ERROR_NOT_SUPPORTED, "function/mode not supported"}, | |
-{ 0x6a85, SC_ERROR_INCORRECT_PARAMETERS,"lc does not fit the tlv structure"}, | |
-{ 0x6986, SC_ERROR_INCORRECT_PARAMETERS,"no current ef selected"}, | |
-{ 0x6a87, SC_ERROR_INCORRECT_PARAMETERS,"lc does not fit p1/p2"}, | |
-{ 0x6c00, SC_ERROR_WRONG_LENGTH, "le does not fit the data to be sent"}, | |
-{ 0x6f83, SC_ERROR_CARD_CMD_FAILED, "command must not be used in transaction"}, | |
- | |
-/* (something) not found */ | |
-{ 0x6987, SC_ERROR_INCORRECT_PARAMETERS,"key object for sm not found"}, | |
-{ 0x6f86, SC_ERROR_CARD_CMD_FAILED, "key object not found"}, | |
-{ 0x6a82, SC_ERROR_FILE_NOT_FOUND, "file not found"}, | |
-{ 0x6a83, SC_ERROR_RECORD_NOT_FOUND, "record not found"}, | |
-{ 0x6a88, SC_ERROR_CARD_CMD_FAILED, "object not found"}, | |
- | |
-/* (something) invalid */ | |
-{ 0x6884, SC_ERROR_CARD_CMD_FAILED, "chaining error"}, | |
-{ 0x6984, SC_ERROR_CARD_CMD_FAILED, "bs object has invalid format"}, | |
-{ 0x6988, SC_ERROR_INCORRECT_PARAMETERS,"key object used for sm has invalid format"}, | |
- | |
-/* (something) deactivated */ | |
-{ 0x6283, SC_ERROR_CARD_CMD_FAILED, "file is deactivated"}, | |
-{ 0x6983, SC_ERROR_AUTH_METHOD_BLOCKED, "bs object blocked"}, | |
- | |
-/* access denied */ | |
-{ 0x6300, SC_ERROR_SECURITY_STATUS_NOT_SATISFIED,"authentication failed"}, | |
-{ 0x6982, SC_ERROR_SECURITY_STATUS_NOT_SATISFIED,"required access right not granted"}, | |
- | |
-/* other errors */ | |
-{ 0x6a84, SC_ERROR_CARD_CMD_FAILED, "not enough memory"}, | |
- | |
-/* command ok, execution failed */ | |
-{ 0x6f00, SC_ERROR_CARD_CMD_FAILED, "technical error (see eToken developers guide)"}, | |
- | |
-/* no error, maybe a note */ | |
-{ 0x9000, SC_SUCCESS, NULL}, | |
-{ 0x9001, SC_SUCCESS, "success, but eeprom weakness detected"}, | |
-{ 0x9850, SC_SUCCESS, "over/underflow using in/decrease"} | |
-}; | |
+ /* some error inside the card */ | |
+ /* i.e. nothing you can do */ | |
+ {0x6581, SC_ERROR_MEMORY_FAILURE, "EEPROM error; command aborted"}, | |
+ {0x6fff, SC_ERROR_CARD_CMD_FAILED, "internal assertion error"}, | |
+ {0x6700, SC_ERROR_WRONG_LENGTH, "LC invalid"}, | |
+ {0x6985, SC_ERROR_CARD_CMD_FAILED, "no random number available"}, | |
+ {0x6f81, SC_ERROR_CARD_CMD_FAILED, "file invalid, maybe checksum error"}, | |
+ {0x6f82, SC_ERROR_CARD_CMD_FAILED, "not enough memory in xram"}, | |
+ {0x6f84, SC_ERROR_CARD_CMD_FAILED, "general protection fault"}, | |
+ | |
+ /* the card doesn't know this combination of ins+cla+p1+p2 */ | |
+ /* i.e. command will never work */ | |
+ {0x6881, SC_ERROR_NO_CARD_SUPPORT, "logical channel not supported"}, | |
+ {0x6a86, SC_ERROR_INCORRECT_PARAMETERS, "p1/p2 invalid"}, | |
+ {0x6d00, SC_ERROR_INS_NOT_SUPPORTED, "ins invalid"}, | |
+ {0x6e00, SC_ERROR_CLASS_NOT_SUPPORTED, "class invalid (hi nibble)"}, | |
+ | |
+ /* known command, but incorrectly used */ | |
+ /* i.e. command could work, but you need to change something */ | |
+ {0x6981, SC_ERROR_CARD_CMD_FAILED, "command cannot be used for file structure"}, | |
+ {0x6a80, SC_ERROR_INCORRECT_PARAMETERS, "invalid parameters in data field"}, | |
+ {0x6a81, SC_ERROR_NOT_SUPPORTED, "function/mode not supported"}, | |
+ {0x6a85, SC_ERROR_INCORRECT_PARAMETERS, "lc does not fit the tlv structure"}, | |
+ {0x6986, SC_ERROR_INCORRECT_PARAMETERS, "no current ef selected"}, | |
+ {0x6a87, SC_ERROR_INCORRECT_PARAMETERS, "lc does not fit p1/p2"}, | |
+ {0x6c00, SC_ERROR_WRONG_LENGTH, "le does not fit the data to be sent"}, | |
+ {0x6f83, SC_ERROR_CARD_CMD_FAILED, "command must not be used in transaction"}, | |
+ | |
+ /* (something) not found */ | |
+ {0x6987, SC_ERROR_INCORRECT_PARAMETERS, "key object for sm not found"}, | |
+ {0x6f86, SC_ERROR_CARD_CMD_FAILED, "key object not found"}, | |
+ {0x6a82, SC_ERROR_FILE_NOT_FOUND, "file not found"}, | |
+ {0x6a83, SC_ERROR_RECORD_NOT_FOUND, "record not found"}, | |
+ {0x6a88, SC_ERROR_CARD_CMD_FAILED, "object not found"}, | |
+ | |
+ /* (something) invalid */ | |
+ {0x6884, SC_ERROR_CARD_CMD_FAILED, "chaining error"}, | |
+ {0x6984, SC_ERROR_CARD_CMD_FAILED, "bs object has invalid format"}, | |
+ {0x6988, SC_ERROR_INCORRECT_PARAMETERS, "key object used for sm has invalid format"}, | |
+ | |
+ /* (something) deactivated */ | |
+ {0x6283, SC_ERROR_CARD_CMD_FAILED, "file is deactivated"}, | |
+ {0x6983, SC_ERROR_AUTH_METHOD_BLOCKED, "bs object blocked"}, | |
+ | |
+ /* access denied */ | |
+ {0x6300, SC_ERROR_SECURITY_STATUS_NOT_SATISFIED, "authentication failed"}, | |
+ {0x6982, SC_ERROR_SECURITY_STATUS_NOT_SATISFIED, "required access right not granted"}, | |
+ | |
+ /* other errors */ | |
+ {0x6a84, SC_ERROR_CARD_CMD_FAILED, "not enough memory"}, | |
+ | |
+ /* command ok, execution failed */ | |
+ {0x6f00, SC_ERROR_CARD_CMD_FAILED, "technical error (see eToken developers guide)"}, | |
+ | |
+ /* no error, maybe a note */ | |
+ {0x9000, SC_SUCCESS, NULL}, | |
+ {0x9001, SC_SUCCESS, "success, but eeprom weakness detected"}, | |
+ {0x9850, SC_SUCCESS, "over/underflow using in/decrease"}}; | |
static int cardos_check_sw(sc_card_t *card, unsigned int sw1, unsigned int sw2) | |
{ | |
@@ -530,14 +516,13 @@ static int cardos_check_sw(sc_card_t *card, unsigned int sw1, unsigned int sw2) | |
for (i = 0; i < err_count; i++) { | |
if (cardos_errors[i].SWs == ((sw1 << 8) | sw2)) { | |
- if ( cardos_errors[i].errorstr ) | |
- sc_log(card->ctx, "%s\n", | |
- cardos_errors[i].errorstr); | |
+ if (cardos_errors[i].errorstr) | |
+ sc_log(card->ctx, "%s\n", cardos_errors[i].errorstr); | |
return cardos_errors[i].errorno; | |
} | |
} | |
- sc_log(card->ctx, "Unknown SWs; SW1=%02X, SW2=%02X\n", sw1, sw2); | |
+ sc_log(card->ctx, "Unknown SWs; SW1=%02X, SW2=%02X\n", sw1, sw2); | |
return SC_ERROR_CARD_CMD_FAILED; | |
} | |
@@ -696,10 +681,7 @@ static void parse_sec_attr(sc_file_t *file, const u8 *buf, size_t len) | |
add_acl_entry(file, idx[i], (u8)((i < len) ? buf[i] : 0xFF)); | |
} | |
-static int cardos_select_file(sc_card_t *card, | |
- const sc_path_t *in_path, | |
- sc_file_t **file) | |
-{ | |
+static int cardos_select_file(sc_card_t *card, const sc_path_t *in_path, sc_file_t **file) { | |
int r; | |
SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE); | |
@@ -985,14 +967,10 @@ cardos_restore_security_env(sc_card_t *card, int se_num) | |
* with the same ID. | |
* XXX Need to find out how the Aladdin drivers do it. | |
*/ | |
-static int | |
-cardos_set_security_env(sc_card_t *card, | |
- const sc_security_env_t *env, | |
- int se_num) | |
-{ | |
- cardos_data_t* priv = (cardos_data_t*)card->drv_data; | |
+static int cardos_set_security_env(sc_card_t *card, const sc_security_env_t *env, int se_num) { | |
+ cardos_data_t *priv = (cardos_data_t *)card->drv_data; | |
sc_apdu_t apdu; | |
- u8 data[9]; | |
+ u8 data[9]; | |
int key_id, r; | |
assert(card != NULL && env != NULL); | |
@@ -1095,7 +1073,7 @@ cardos_set_security_env(sc_card_t *card, | |
sc_log(card->ctx, "reference=%d, mechanism=%d, operations=%d, algo_ref=%d", | |
alg.reference, alg.mechanism, alg.operations, alg.algo_ref); | |
} | |
- priv -> algorithm_ids_in_tokeninfo_count = algorithm_id_count; | |
+ priv->algorithm_ids_in_tokeninfo_count = algorithm_id_count; | |
} while (0); | |
LOG_FUNC_RETURN(card->ctx, r); | |
@@ -1106,10 +1084,7 @@ cardos_set_security_env(sc_card_t *card, | |
*/ | |
/* internal function to do the actual signature computation */ | |
-static int | |
-do_compute_signature(sc_card_t *card, const u8 *data, size_t datalen, | |
- u8 *out, size_t outlen) | |
-{ | |
+static int do_compute_signature(sc_card_t *card, const u8 *data, size_t datalen, u8 *out, size_t outlen) { | |
/* cardos_data_t* priv = (cardos_data_t*)card->drv_dataa */; | |
int r; | |
sc_apdu_t apdu; | |
@@ -1139,7 +1114,7 @@ static int | |
cardos_compute_signature(sc_card_t *card, const u8 *data, size_t datalen, | |
u8 *out, size_t outlen) | |
{ | |
- cardos_data_t* priv; | |
+ cardos_data_t *priv; | |
int r; | |
sc_context_t *ctx; | |
int do_rsa_pure_sig = 0; | |
@@ -1149,7 +1124,7 @@ cardos_compute_signature(sc_card_t *card, const u8 *data, size_t datalen, | |
assert(card != NULL && data != NULL && out != NULL); | |
ctx = card->ctx; | |
- priv = (cardos_data_t*)card->drv_data; | |
+ priv = (cardos_data_t *)card->drv_data; | |
SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_VERBOSE); | |
/* sec_env has algorithm_flags set from sc_get_encoding_flags sec_flags | |
@@ -1252,7 +1227,7 @@ cardos_decipher(struct sc_card *card, | |
const u8 * crgram, size_t crgram_len, | |
u8 * out, size_t outlen) | |
{ | |
- cardos_data_t* priv = (cardos_data_t*)card->drv_data; | |
+ cardos_data_t *priv = (cardos_data_t *)card->drv_data; | |
int r; | |
size_t card_max_send_size = card->max_send_size; | |
size_t reader_max_send_size = card->reader->max_send_size; | |
@@ -1278,8 +1253,8 @@ cardos_decipher(struct sc_card *card, | |
/* removed padding is always > 1 byte */ | |
/* add back missing leading zero if card dropped it */ | |
if (rsize == crgram_len - 1 && rsize < outlen) { | |
- memmove(out+1, out, rsize); | |
- out[0] =0x00; | |
+ memmove(out + 1, out, rsize); | |
+ out[0] = 0x00; | |
r++; | |
} | |
} | |
@@ -1521,9 +1496,8 @@ cardos_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr) | |
case SC_CARDCTL_CARDOS_GENERATE_KEY: | |
return cardos_generate_key(card, | |
(struct sc_cardctl_cardos_genkey_info *) ptr); | |
- case SC_CARDCTL_PARSED_TOKEN_INFO: | |
- return cardos_cardctl_parsed_token_info(card, | |
- (struct sc_cardctl_parsed_token_info *) ptr); | |
+ case SC_CARDCTL_PARSED_TOKEN_INFO: | |
+ return cardos_cardctl_parsed_token_info(card, (struct sc_cardctl_parsed_token_info *)ptr); | |
case SC_CARDCTL_LIFECYCLE_GET: | |
return cardos_lifecycle_get(card, (int *) ptr); | |
case SC_CARDCTL_LIFECYCLE_SET: | |
@@ -1574,14 +1548,10 @@ cardos_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data, | |
static int | |
cardos_logout(sc_card_t *card) | |
{ | |
- if (card->type == SC_CARD_TYPE_CARDOS_M4_01 | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_2 | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_2B | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_2C | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_3 | |
- || card->type == SC_CARD_TYPE_CARDOS_M4_4 | |
- || card->type == SC_CARD_TYPE_CARDOS_V5_0 | |
- || card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
+ if (card->type == SC_CARD_TYPE_CARDOS_M4_01 || card->type == SC_CARD_TYPE_CARDOS_M4_2 | |
+ || card->type == SC_CARD_TYPE_CARDOS_M4_2B || card->type == SC_CARD_TYPE_CARDOS_M4_2C | |
+ || card->type == SC_CARD_TYPE_CARDOS_M4_3 || card->type == SC_CARD_TYPE_CARDOS_M4_4 | |
+ || card->type == SC_CARD_TYPE_CARDOS_V5_0 || card->type == SC_CARD_TYPE_CARDOS_V5_3) { | |
sc_apdu_t apdu; | |
int r; | |
sc_path_t path; | |
diff --git a/src/libopensc/cardctl.h b/src/libopensc/cardctl.h | |
index 632be2fd..9ddb5c6f 100644 | |
--- a/src/libopensc/cardctl.h | |
+++ b/src/libopensc/cardctl.h | |
@@ -72,7 +72,7 @@ enum { | |
/* | |
* TCOS specific calls | |
*/ | |
- SC_CARDCTL_TCOS_BASE = _CTL_PREFIX('T','C','S'), | |
+ SC_CARDCTL_TCOS_BASE = _CTL_PREFIX('T', 'C', 'S'), | |
SC_CARDCTL_TCOS_SETPERM, | |
/* | |
@@ -127,11 +127,11 @@ enum { | |
SC_CARDCTL_INCRYPTO34_GENERATE_KEY, | |
SC_CARDCTL_INCRYPTO34_CHANGE_KEY_DATA, | |
SC_CARDCTL_INCRYPTO34_ERASE_FILES, | |
- | |
+ | |
/* | |
* Muscle specific calls | |
*/ | |
- SC_CARDCTL_MUSCLE_BASE = _CTL_PREFIX('M','S','C'), | |
+ SC_CARDCTL_MUSCLE_BASE = _CTL_PREFIX('M', 'S', 'C'), | |
SC_CARDCTL_MUSCLE_GENERATE_KEY, | |
SC_CARDCTL_MUSCLE_EXTRACT_KEY, | |
SC_CARDCTL_MUSCLE_IMPORT_KEY, | |
@@ -140,26 +140,26 @@ enum { | |
/* | |
* ASEPCOS specific calls | |
*/ | |
- SC_CARDCTL_ASEPCOS_BASE = _CTL_PREFIX('A','S','E'), | |
+ SC_CARDCTL_ASEPCOS_BASE = _CTL_PREFIX('A', 'S', 'E'), | |
SC_CARDCTL_ASEPCOS_CHANGE_KEY, | |
SC_CARDCTL_ASEPCOS_AKN2FILEID, | |
SC_CARDCTL_ASEPCOS_SET_SATTR, | |
SC_CARDCTL_ASEPCOS_ACTIVATE_FILE, | |
- /* | |
+ /* | |
* ruToken specific calls | |
*/ | |
- SC_CARDCTL_RUTOKEN_BASE = _CTL_PREFIX('R', 'T', 'K'), | |
- /* PUT_DATA */ | |
- SC_CARDCTL_RUTOKEN_CREATE_DO, | |
- SC_CARDCTL_RUTOKEN_CHANGE_DO, | |
- SC_CARDCTL_RUTOKEN_GENERATE_KEY_DO, | |
- SC_CARDCTL_RUTOKEN_DELETE_DO, | |
- SC_CARDCTL_RUTOKEN_GET_INFO, | |
- /* NON STANDARD */ | |
- SC_CARDCTL_RUTOKEN_GET_DO_INFO, | |
- SC_CARDCTL_RUTOKEN_GOST_ENCIPHER, | |
- SC_CARDCTL_RUTOKEN_GOST_DECIPHER, | |
+ SC_CARDCTL_RUTOKEN_BASE = _CTL_PREFIX('R', 'T', 'K'), | |
+ /* PUT_DATA */ | |
+ SC_CARDCTL_RUTOKEN_CREATE_DO, | |
+ SC_CARDCTL_RUTOKEN_CHANGE_DO, | |
+ SC_CARDCTL_RUTOKEN_GENERATE_KEY_DO, | |
+ SC_CARDCTL_RUTOKEN_DELETE_DO, | |
+ SC_CARDCTL_RUTOKEN_GET_INFO, | |
+ /* NON STANDARD */ | |
+ SC_CARDCTL_RUTOKEN_GET_DO_INFO, | |
+ SC_CARDCTL_RUTOKEN_GOST_ENCIPHER, | |
+ SC_CARDCTL_RUTOKEN_GOST_DECIPHER, | |
SC_CARDCTL_RUTOKEN_FORMAT_INIT, | |
SC_CARDCTL_RUTOKEN_FORMAT_END, | |
@@ -223,14 +223,14 @@ enum { | |
SC_CARDCTL_CAC_FINAL_GET_CERT_OBJECTS, | |
SC_CARDCTL_CAC_GET_ACA_PATH, | |
- /* | |
+ /* | |
* AuthentIC v3 | |
*/ | |
- SC_CARDCTL_AUTHENTIC_BASE = _CTL_PREFIX('A','V','3'), | |
- SC_CARDCTL_AUTHENTIC_SDO_CREATE, | |
- SC_CARDCTL_AUTHENTIC_SDO_DELETE, | |
- SC_CARDCTL_AUTHENTIC_SDO_STORE, | |
- SC_CARDCTL_AUTHENTIC_SDO_GENERATE, | |
+ SC_CARDCTL_AUTHENTIC_BASE = _CTL_PREFIX('A', 'V', '3'), | |
+ SC_CARDCTL_AUTHENTIC_SDO_CREATE, | |
+ SC_CARDCTL_AUTHENTIC_SDO_DELETE, | |
+ SC_CARDCTL_AUTHENTIC_SDO_STORE, | |
+ SC_CARDCTL_AUTHENTIC_SDO_GENERATE, | |
/* | |
* Coolkey specific calls | |
@@ -243,13 +243,13 @@ enum { | |
SC_CARDCTL_COOLKEY_GET_TOKEN_INFO, | |
SC_CARDCTL_COOLKEY_FIND_OBJECT, | |
- /* | |
+ /* | |
* IAS/ECC | |
*/ | |
- SC_CARDCTL_IASECC_BASE = _CTL_PREFIX('E','C','C'), | |
+ SC_CARDCTL_IASECC_BASE = _CTL_PREFIX('E', 'C', 'C'), | |
SC_CARDCTL_IASECC_GET_FREE_KEY_REFERENCE, | |
- SC_CARDCTL_IASECC_SDO_MAGIC = _CTL_PREFIX('S','D','O') | 'M', | |
- SC_CARDCTL_IASECC_SDO_MAGIC_PUT_DATA = _CTL_PREFIX('S','D','O') | 'P', | |
+ SC_CARDCTL_IASECC_SDO_MAGIC = _CTL_PREFIX('S', 'D', 'O') | 'M', | |
+ SC_CARDCTL_IASECC_SDO_MAGIC_PUT_DATA = _CTL_PREFIX('S', 'D', 'O') | 'P', | |
SC_CARDCTL_IASECC_SDO_PUT_DATA, | |
SC_CARDCTL_IASECC_SDO_KEY_RSA_PUT_DATA, | |
SC_CARDCTL_IASECC_SDO_GET_DATA, | |
@@ -277,21 +277,21 @@ enum { | |
/* | |
* DNIe specific calls | |
*/ | |
- SC_CARDCTL_DNIE_BASE = _CTL_PREFIX('D', 'N', 'I'), | |
+ SC_CARDCTL_DNIE_BASE = _CTL_PREFIX('D', 'N', 'I'), | |
SC_CARDCTL_DNIE_GENERATE_KEY, | |
SC_CARDCTL_DNIE_GET_INFO, | |
/* | |
* isoApplet Java Card Applet | |
*/ | |
- SC_CARDCTL_ISOAPPLET_BASE = _CTL_PREFIX('I','S','O'), | |
+ SC_CARDCTL_ISOAPPLET_BASE = _CTL_PREFIX('I', 'S', 'O'), | |
SC_CARDCTL_ISOAPPLET_GENERATE_KEY, | |
SC_CARDCTL_ISOAPPLET_IMPORT_KEY, | |
/* | |
* GIDS cards | |
*/ | |
- SC_CARDCTL_GIDS_BASE = _CTL_PREFIX('G','I','D'), | |
+ SC_CARDCTL_GIDS_BASE = _CTL_PREFIX('G', 'I', 'D'), | |
SC_CARDCTL_GIDS_GET_ALL_CONTAINERS, | |
SC_CARDCTL_GIDS_GET_CONTAINER_DETAIL, | |
SC_CARDCTL_GIDS_SELECT_KEY_REFERENCE, | |
@@ -356,7 +356,7 @@ typedef struct sc_cardctl_pkcs11_init_pin { | |
*/ | |
struct sc_cardctl_parsed_token_info { | |
unsigned int flags; | |
- struct sc_pkcs15_tokeninfo * tokeninfo; | |
+ struct sc_pkcs15_tokeninfo *tokeninfo; | |
}; | |
/* | |
diff --git a/src/libopensc/cards.h b/src/libopensc/cards.h | |
index 8d58fb93..5a9797f7 100644 | |
--- a/src/libopensc/cards.h | |
+++ b/src/libopensc/cards.h | |
@@ -119,7 +119,7 @@ enum { | |
SC_CARD_TYPE_OBERTHUR_32K_BIO, | |
SC_CARD_TYPE_OBERTHUR_64K, | |
/* Oberthur 'COSMO v7' with applet 'AuthentIC v3.2' */ | |
- SC_CARD_TYPE_OBERTHUR_AUTHENTIC_3_2 = 11100, | |
+ SC_CARD_TYPE_OBERTHUR_AUTHENTIC_3_2 = 11100, | |
/* belpic driver */ | |
SC_CARD_TYPE_BELPIC_BASE = 12000, | |
@@ -213,9 +213,9 @@ enum { | |
/* Spanish DNIe card */ | |
SC_CARD_TYPE_DNIE_BASE = 27000, | |
- SC_CARD_TYPE_DNIE_BLANK, /* ATR LC byte: 00 */ | |
- SC_CARD_TYPE_DNIE_ADMIN, /* ATR LC byte: 01 */ | |
- SC_CARD_TYPE_DNIE_USER, /* ATR LC byte: 03 */ | |
+ SC_CARD_TYPE_DNIE_BLANK, /* ATR LC byte: 00 */ | |
+ SC_CARD_TYPE_DNIE_ADMIN, /* ATR LC byte: 01 */ | |
+ SC_CARD_TYPE_DNIE_USER, /* ATR LC byte: 03 */ | |
SC_CARD_TYPE_DNIE_TERMINATED, /* ATR LC byte: 0F */ | |
/* JavaCards with isoApplet */ | |
diff --git a/src/libopensc/pkcs15-prkey.c b/src/libopensc/pkcs15-prkey.c | |
index a6c05415..a56822c7 100644 | |
--- a/src/libopensc/pkcs15-prkey.c | |
+++ b/src/libopensc/pkcs15-prkey.c | |
@@ -52,24 +52,23 @@ | |
*/ | |
#define C_ASN1_SUPPORTED_ALGORITHMS_SIZE (SC_MAX_SUPPORTED_ALGORITHMS + 1) | |
static const struct sc_asn1_entry c_asn1_supported_algorithms[C_ASN1_SUPPORTED_ALGORITHMS_SIZE] = { | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { NULL, 0, 0, 0, NULL, NULL } | |
-}; | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {NULL, 0, 0, 0, NULL, NULL}}; | |
#define C_ASN1_COM_KEY_ATTR_SIZE 7 | |
static const struct sc_asn1_entry c_asn1_com_key_attr[C_ASN1_COM_KEY_ATTR_SIZE] = { | |
diff --git a/src/libopensc/pkcs15-skey.c b/src/libopensc/pkcs15-skey.c | |
index 4e58355a..a3b35dd1 100644 | |
--- a/src/libopensc/pkcs15-skey.c | |
+++ b/src/libopensc/pkcs15-skey.c | |
@@ -32,24 +32,23 @@ | |
*/ | |
#define C_ASN1_SUPPORTED_ALGORITHMS_SIZE (SC_MAX_SUPPORTED_ALGORITHMS + 1) | |
static const struct sc_asn1_entry c_asn1_supported_algorithms[C_ASN1_SUPPORTED_ALGORITHMS_SIZE] = { | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { NULL, 0, 0, 0, NULL, NULL } | |
-}; | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmReference", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {NULL, 0, 0, 0, NULL, NULL}}; | |
#define C_ASN1_COM_KEY_ATTR_SIZE 7 | |
static const struct sc_asn1_entry c_asn1_com_key_attr[C_ASN1_COM_KEY_ATTR_SIZE] = { | |
diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c | |
index 7f0c2251..1b5bc0ed 100644 | |
--- a/src/libopensc/pkcs15.c | |
+++ b/src/libopensc/pkcs15.c | |
@@ -28,11 +28,11 @@ | |
#include <assert.h> | |
#include <ctype.h> | |
-#include "internal.h" | |
-#include "cardctl.h" | |
-#include "pkcs15.h" | |
#include "asn1.h" | |
+#include "cardctl.h" | |
#include "common/libscdl.h" | |
+#include "internal.h" | |
+#include "pkcs15.h" | |
#ifdef ENABLE_OPENSSL | |
#include <openssl/sha.h> | |
@@ -67,24 +67,23 @@ static const struct sc_asn1_entry c_asn1_algorithm_info_parameters[3] = { | |
* in src/libopensc/types.h SC_MAX_SUPPORTED_ALGORITHMS defined as 16 | |
*/ | |
static const struct sc_asn1_entry c_asn1_supported_algorithms[SC_MAX_SUPPORTED_ALGORITHMS + 1] = { | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { "algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL }, | |
- { NULL, 0, 0, 0, NULL, NULL } | |
-}; | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {"algorithmInfo", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_OPTIONAL, NULL, NULL}, | |
+ {NULL, 0, 0, 0, NULL, NULL}}; | |
#define C_ASN1_LAST_UPDATE_SIZE 3 | |
static const struct sc_asn1_entry c_asn1_last_update[C_ASN1_LAST_UPDATE_SIZE] = { | |
@@ -318,11 +317,10 @@ sc_pkcs15_encode_tokeninfo(sc_context_t *ctx, sc_pkcs15_tokeninfo_t *ti, | |
sc_format_asn1_entry(asn1_algo_infos[ii] + 1, &ti->supported_algos[ii].mechanism, &mechanism_len, 1); | |
sc_format_asn1_entry(asn1_algo_infos[ii] + 2, | |
asn1_algo_infos_parameters[ii], NULL, 1); | |
- if (!sc_valid_oid(&ti->supported_algos[ii].parameters)) { | |
+ if (!sc_valid_oid(&ti->supported_algos[ii].parameters)) { | |
sc_format_asn1_entry(asn1_algo_infos_parameters[ii] + 0, | |
NULL, NULL, 1); | |
- } | |
- else { | |
+ } else { | |
sc_format_asn1_entry(asn1_algo_infos_parameters[ii] + 1, | |
&ti->supported_algos[ii].parameters, ¶meter_len, 0); | |
} | |
@@ -1168,7 +1166,7 @@ sc_pkcs15_bind_internal(struct sc_pkcs15_card *p15card, struct sc_aid *aid) | |
/* If card has not created algorithms, let it look at token info */ | |
sc_log(ctx, " card->algorithms:%p card->algorithm_count:%d", card->algorithms, card->algorithm_count); | |
if (!card->algorithms && card->algorithm_count == 0) { | |
- struct sc_cardctl_parsed_token_info parsed_token_info; | |
+ struct sc_cardctl_parsed_token_info parsed_token_info; | |
sc_log(ctx, " passing sc_cardctl_parsed_token_info "); | |
/* TODO could set flags here */ | |
@@ -1177,7 +1175,6 @@ sc_pkcs15_bind_internal(struct sc_pkcs15_card *p15card, struct sc_aid *aid) | |
sc_card_ctl(p15card->card, SC_CARDCTL_PARSED_TOKEN_INFO, &parsed_token_info); | |
} | |
- | |
if (!p15card->tokeninfo->serial_number && 0 == card->serialnr.len) { | |
sc_card_ctl(p15card->card, SC_CARDCTL_GET_SERIALNR, &card->serialnr); | |
} | |
diff --git a/src/libopensc/types.h b/src/libopensc/types.h | |
index 17035b55..c564189d 100644 | |
--- a/src/libopensc/types.h | |
+++ b/src/libopensc/types.h | |
@@ -56,7 +56,7 @@ typedef unsigned char u8; | |
* src/libopensc/pkcs15-prkey.c and src/libopensc/pkcs15-skey.c | |
* `grep "src/libopensc/types.h SC_MAX_SUPPORTED_ALGORITHMS defined as"' | |
*/ | |
-#define SC_MAX_SUPPORTED_ALGORITHMS 16 | |
+#define SC_MAX_SUPPORTED_ALGORITHMS 16 | |
struct sc_lv_data { | |
unsigned char *value; | |
diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c | |
index b1674a76..a497ebf7 100644 | |
--- a/src/tools/pkcs11-tool.c | |
+++ b/src/tools/pkcs11-tool.c | |
@@ -5045,7 +5045,7 @@ static int test_signature(CK_SESSION_HANDLE sess) | |
if (firstMechType == CKM_RSA_X_509) { | |
/* make sure our data is smaller than the modulus - 11 */ | |
- memset(data, 0, 11); /* in effect is zero padding */ | |
+ memset(data, 0, 11); /* in effect is zero padding */ | |
} | |
ck_mech.mechanism = firstMechType; | |
diff --git a/src/tools/pkcs15-tool.c b/src/tools/pkcs15-tool.c | |
index 363bfb82..467f6c6a 100644 | |
--- a/src/tools/pkcs15-tool.c | |
+++ b/src/tools/pkcs15-tool.c | |
@@ -54,10 +54,10 @@ typedef unsigned __int32 uint32_t; | |
#endif | |
#include <limits.h> | |
-#include "libopensc/pkcs15.h" | |
#include "libopensc/asn1.h" | |
-#include "util.h" | |
+#include "libopensc/pkcs15.h" | |
#include "pkcs11/pkcs11-display.h" | |
+#include "util.h" | |
static const char *app_name = "pkcs15-tool"; | |
@@ -640,11 +640,11 @@ static void print_prkey_info(const struct sc_pkcs15_object *obj) | |
printf("\n"); | |
printf("\tAlgo_refs : "); | |
/* zero may be valid and don't know how many were read print at least 1*/ | |
- for (i = 0; i< SC_MAX_SUPPORTED_ALGORITHMS; i++) { | |
+ for (i = 0; i < SC_MAX_SUPPORTED_ALGORITHMS; i++) { | |
if (prkey->algo_refs[i] != 0) | |
last_algo_refs = i; | |
} | |
- for (i = 0; i< last_algo_refs + 1; i++) { | |
+ for (i = 0; i < last_algo_refs + 1; i++) { | |
printf("%s%u", (i == 0) ? "" : ", ", prkey->algo_refs[i]); | |
} | |
printf("\n"); | |
@@ -1658,15 +1658,18 @@ static int list_apps(FILE *fout) | |
return 0; | |
} | |
- | |
static void print_supported_algo_info_operations(unsigned int operation) | |
{ | |
size_t i; | |
- const char *operations[] = { | |
- "compute_checksum", "compute_signature", "verify_checksum", "verify_signature", | |
- "encipher", "decipher", "hash", "generate/derive_key" | |
- }; | |
+ const char *operations[] = {"compute_checksum", | |
+ "compute_signature", | |
+ "verify_checksum", | |
+ "verify_signature", | |
+ "encipher", | |
+ "decipher", | |
+ "hash", | |
+ "generate/derive_key"}; | |
const size_t operations_count = NELEMENTS(operations); | |
for (i = 0; i < operations_count; i++) | |
if (operation & (1 << i)) | |
@@ -1706,30 +1709,30 @@ static void list_info(void) | |
} | |
printf("\n"); | |
for (i = 0; i < SC_MAX_SUPPORTED_ALGORITHMS; i++) { | |
- struct sc_supported_algo_info * sa = &p15card->tokeninfo->supported_algos[i]; | |
+ struct sc_supported_algo_info *sa = &p15card->tokeninfo->supported_algos[i]; | |
- if (sa->reference == 0 && sa->reference == 0 && sa->mechanism == 0 | |
- && sa->operations == 0 && sa->algo_ref == 0) | |
- break; | |
+ if (sa->reference == 0 && sa->reference == 0 && sa->mechanism == 0 && sa->operations == 0 | |
+ && sa->algo_ref == 0) | |
+ break; | |
printf("\t\t sc_supported_algo_info[%d]:\n", i); | |
printf("\t\t\t reference : %u (0x%02x)\n", sa->reference, sa->reference); | |
printf("\t\t\t mechanism : [0x%02x] %s\n", sa->mechanism, lookup_enum(MEC_T, sa->mechanism)); | |
if (sc_valid_oid(&sa->parameters)) { | |
printf("\t\t\t parameters: %i", sa->parameters.value[0]); | |
- for (idx = 1; idx < SC_MAX_OBJECT_ID_OCTETS && sa->parameters.value[idx] != -1 ; idx++) | |
+ for (idx = 1; idx < SC_MAX_OBJECT_ID_OCTETS && sa->parameters.value[idx] != -1; idx++) | |
printf(".%i", sa->parameters.value[idx]); | |
printf("\n"); | |
} | |
- printf("\t\t\t operations : [0x%2.2x]",sa->operations); | |
+ printf("\t\t\t operations : [0x%2.2x]", sa->operations); | |
print_supported_algo_info_operations(sa->operations); | |
printf("\n"); | |
- if (sc_valid_oid((const struct sc_object_id*)&sa->algo_id)) { | |
+ if (sc_valid_oid((const struct sc_object_id *)&sa->algo_id)) { | |
printf("\t\t\t algo_id : %i", sa->algo_id.value[0]); | |
- for (idx = 1; idx < SC_MAX_OBJECT_ID_OCTETS && sa->algo_id.value[idx] != -1 ; idx++) | |
+ for (idx = 1; idx < SC_MAX_OBJECT_ID_OCTETS && sa->algo_id.value[idx] != -1; idx++) | |
printf(".%i", sa->algo_id.value[idx]); | |
printf("\n"); | |
} | |
- printf("\t\t\t algo_ref : [0x%02x]\n",sa->algo_ref); | |
+ printf("\t\t\t algo_ref : [0x%02x]\n", sa->algo_ref); | |
} | |
printf((compact) ? "\n" : "\n\n"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment