From 0a903522b81ff54057d53f2bbe0abfaadbd689bd Mon Sep 17 00:00:00 2001 From: Peter Marschall Date: Tue, 1 Jan 2019 17:51:12 +0100 Subject: [PATCH] OpenPGP: get rid of "magic" constants in pgp_build_extended_header_list() Use defined symbolic names for well-known DOs to copy data to a correctly defined buffer 'data' using ulong2bebytes() instead of relying on "magic" constants. --- src/libopensc/card-openpgp.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/libopensc/card-openpgp.c b/src/libopensc/card-openpgp.c index 603386c6..b8b6b28f 100644 --- a/src/libopensc/card-openpgp.c +++ b/src/libopensc/card-openpgp.c @@ -2819,21 +2819,20 @@ pgp_build_extended_header_list(sc_card_t *card, sc_cardctl_openpgp_keystore_info LOG_TEST_GOTO_ERR(ctx, SC_ERROR_NOT_ENOUGH_MEMORY, "Not enough memory."); switch (key_info->key_id) { - case SC_OPENPGP_KEY_SIGN: - data[0] = 0xB6; - break; - case SC_OPENPGP_KEY_ENCR: - data[0] = 0xB8; - break; - case SC_OPENPGP_KEY_AUTH: - data[0] = 0xA4; - break; - default: - sc_log(ctx, "Unknown key type %d.", key_info->key_id); - r = SC_ERROR_INVALID_ARGUMENTS; - goto err; + case SC_OPENPGP_KEY_SIGN: + ushort2bebytes(data, DO_SIGN); + break; + case SC_OPENPGP_KEY_ENCR: + ushort2bebytes(data, DO_ENCR); + break; + case SC_OPENPGP_KEY_AUTH: + ushort2bebytes(data, DO_AUTH); + break; + default: + sc_log(ctx, "Unknown key id %d.", key_info->key_id); + LOG_TEST_GOTO_ERR(ctx, SC_ERROR_INVALID_ARGUMENTS, "Invalid key id"); } - memcpy(data + 2, tlv_7f48, tlvlen_7f48); + memcpy(data + 2, tlv_7f48, tlvlen_7f48); memcpy(data + 2 + tlvlen_7f48, tlv_5f48, tlvlen_5f48); r = pgp_build_tlv(ctx, 0x4D, data, len, &tlvblock, &tlvlen); LOG_TEST_GOTO_ERR(ctx, r, "Cannot build TLV for Extended Header list");