From aede9b164beeb35cba493f3e00bb2136c455ee44 Mon Sep 17 00:00:00 2001 From: vletoux Date: Sat, 25 Apr 2015 23:29:03 +0200 Subject: [PATCH] minidriver: fix compilation warnings on x64 (size_t <> DWORD) --- src/minidriver/minidriver.c | 49 ++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/src/minidriver/minidriver.c b/src/minidriver/minidriver.c index 637e38ab..ddc5f6e6 100644 --- a/src/minidriver/minidriver.c +++ b/src/minidriver/minidriver.c @@ -1,4 +1,4 @@ -/* +/* * minidriver.c: OpenSC minidriver * * Copyright (C) 2009,2010 francois.leblanc@cev-sa.com @@ -140,7 +140,7 @@ struct md_pkcs15_container { struct sc_pkcs15_id id; char guid[MAX_CONTAINER_NAME_LEN + 1]; unsigned flags; - unsigned size_key_exchange, size_sign; + size_t size_key_exchange, size_sign; struct sc_pkcs15_object *cert_obj, *prkey_obj, *pubkey_obj; }; @@ -261,7 +261,7 @@ static void logprintf(PCARD_DATA pCardData, int level, _Printf_format_string_ co va_end(arg); } -static void loghex(PCARD_DATA pCardData, int level, PBYTE data, int len) +static void loghex(PCARD_DATA pCardData, int level, PBYTE data, size_t len) { char line[74]; char *c; @@ -917,7 +917,7 @@ md_pkcs15_update_containers(PCARD_DATA pCardData, unsigned char *blob, size_t si vs = pCardData->pvVendorSpecific; - nn_records = size/sizeof(CONTAINER_MAP_RECORD); + nn_records = (int) size/sizeof(CONTAINER_MAP_RECORD); if (nn_records > MD_MAX_KEY_CONTAINERS) nn_records = MD_MAX_KEY_CONTAINERS; @@ -969,7 +969,7 @@ md_pkcs15_update_container_from_do(PCARD_DATA pCardData, struct sc_pkcs15_object } id.len = *(ddata->data + offs++); memcpy(id.value, ddata->data + offs, id.len); - offs += id.len; + offs += (int) id.len; if (*(ddata->data + offs++) != 0x02) { sc_pkcs15_free_data_object(ddata); @@ -1176,7 +1176,7 @@ md_fs_read_msroot_file(PCARD_DATA pCardData, char *parent, struct md_file *file) int rv, ii, cert_num; struct sc_pkcs15_object *prkey_objs[MD_MAX_KEY_CONTAINERS]; - hCertStore = CertOpenStore(CERT_STORE_PROV_MEMORY, X509_ASN_ENCODING, NULL, 0, NULL); + hCertStore = CertOpenStore(CERT_STORE_PROV_MEMORY, X509_ASN_ENCODING, (HCRYPTPROV_LEGACY) NULL, 0, NULL); if (!hCertStore) { dwret = GetLastError(); goto Ret; @@ -1200,7 +1200,7 @@ md_fs_read_msroot_file(PCARD_DATA pCardData, char *parent, struct md_file *file) logprintf(pCardData, 2, "Cannot read certificate idx:%i: sc-error %d\n", ii, rv); continue; } - wincert = CertCreateCertificateContext(X509_ASN_ENCODING, cert->data.value, cert->data.len); + wincert = CertCreateCertificateContext(X509_ASN_ENCODING, cert->data.value, (DWORD) cert->data.len); if (wincert) { CertAddCertificateContextToStore(hCertStore, wincert, CERT_STORE_ADD_REPLACE_EXISTING, NULL); CertFreeCertificateContext(wincert); @@ -1598,8 +1598,8 @@ md_set_cmapfile(PCARD_DATA pCardData, struct md_file *file) mbstowcs((p+ii)->wszGuid, vs->p15_containers[ii].guid, MAX_CONTAINER_NAME_LEN + 1); (p+ii)->bFlags = vs->p15_containers[ii].flags; - (p+ii)->wSigKeySizeBits = vs->p15_containers[ii].size_sign; - (p+ii)->wKeyExchangeKeySizeBits = vs->p15_containers[ii].size_key_exchange; + (p+ii)->wSigKeySizeBits = (WORD) vs->p15_containers[ii].size_sign; + (p+ii)->wKeyExchangeKeySizeBits = (WORD) vs->p15_containers[ii].size_key_exchange; if (vs->p15_containers[ii].cert_obj) { char k_name[6]; @@ -1858,7 +1858,8 @@ md_pkcs15_generate_key(PCARD_DATA pCardData, DWORD idx, DWORD key_type, DWORD ke memset(&pub_args, 0, sizeof(pub_args)); memset(&keygen_args, 0, sizeof(keygen_args)); - keygen_args.prkey_args.label = keygen_args.pubkey_label = "TODO: key label"; + keygen_args.prkey_args.label = "TODO: key label"; + keygen_args.pubkey_label = "TODO: key label"; if (key_type == AT_SIGNATURE) { keygen_args.prkey_args.key.algorithm = SC_ALGORITHM_RSA; @@ -2226,7 +2227,7 @@ md_dialog_perform_pin_operation_thread(PVOID lpParameter) { /* unstack the parameters */ LONG_PTR* parameter = (LONG_PTR*) lpParameter; - int operation = parameter[0]; + int operation = (int) parameter[0]; struct sc_pkcs15_card *p15card = (struct sc_pkcs15_card *) parameter[1]; struct sc_pkcs15_object *pin_obj = (struct sc_pkcs15_object *) parameter[2]; const u8 *pin1 = (const u8 *) parameter[3]; @@ -2328,7 +2329,7 @@ md_dialog_perform_pin_operation(PCARD_DATA pCardData, int operation, struct sc_p this is the only way to display a modal dialog attached to a parent (hwndParent != 0) */ result = DialogBoxParam(g_inst, MAKEINTRESOURCE(IDD_PINPAD), pv->hwndParent, md_dialog_proc, (LPARAM) parameter); SecureZeroMemory(parameter, sizeof(parameter)); - return result; + return (int) result; } DWORD md_translate_OpenSC_to_Windows_error(int OpenSCerror, DWORD dwDefaulCode) @@ -2647,7 +2648,7 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine if (pubkey_der.len && pubkey_der.value) { sz = 0; /* get size */ CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB, - pubkey_der.value, pubkey_der.len, 0, NULL, &sz); + pubkey_der.value, (DWORD) pubkey_der.len, 0, NULL, &sz); if (cont->size_sign) { PUBKEYSTRUCT_BASE *oh = (PUBKEYSTRUCT_BASE *)pCardData->pfnCspAlloc(sz); @@ -2655,7 +2656,7 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine return SCARD_E_NO_MEMORY; CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB, - pubkey_der.value, pubkey_der.len, 0, oh, &sz); + pubkey_der.value, (DWORD) pubkey_der.len, 0, oh, &sz); oh->publickeystruc.aiKeyAlg = CALG_RSA_SIGN; pContainerInfo->cbSigPublicKey = sz; @@ -2670,7 +2671,7 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine return SCARD_E_NO_MEMORY; CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB, - pubkey_der.value, pubkey_der.len, 0, oh, &sz); + pubkey_der.value, (DWORD) pubkey_der.len, 0, oh, &sz); oh->publickeystruc.aiKeyAlg = CALG_RSA_KEYX; pContainerInfo->cbKeyExPublicKey = sz; @@ -2974,7 +2975,7 @@ DWORD WINAPI CardReadFile(__in PCARD_DATA pCardData, *ppbData = pCardData->pfnCspAlloc(file->size); if(!*ppbData) return SCARD_E_NO_MEMORY; - *pcbData = file->size; + *pcbData = (DWORD) file->size; memcpy(*ppbData, file->blob, file->size); logprintf(pCardData, 7, "returns '%s' content:\n", NULLSTR(pszFileName)); @@ -3111,7 +3112,7 @@ DWORD WINAPI CardEnumFiles(__in PCARD_DATA pCardData, return SCARD_E_NO_MEMORY; CopyMemory(*pmszFileNames, mstr, offs); - *pdwcbFileName = offs; + *pdwcbFileName = (DWORD) offs; return SCARD_S_SUCCESS; } @@ -3137,7 +3138,7 @@ DWORD WINAPI CardGetFileInfo(__in PCARD_DATA pCardData, } pCardFileInfo->dwVersion = CARD_FILE_INFO_CURRENT_VERSION; - pCardFileInfo->cbFileSize = file->size; + pCardFileInfo->cbFileSize = (DWORD) file->size; pCardFileInfo->AccessCondition = file->acl; return SCARD_S_SUCCESS; @@ -3281,7 +3282,7 @@ DWORD WINAPI CardRSADecrypt(__in PCARD_DATA pCardData, loghex(pCardData, 7, pbuf, pInfo->cbData); prkey_info = (struct sc_pkcs15_prkey_info *)(pkey->data); - alg_info = sc_card_find_rsa_alg(vs->p15card->card, prkey_info->modulus_length); + alg_info = sc_card_find_rsa_alg(vs->p15card->card, (unsigned int) prkey_info->modulus_length); if (!alg_info) { logprintf(pCardData, 2, "Cannot get appropriate RSA card algorithm for key size %i\n", prkey_info->modulus_length); pCardData->pfnCspFree(pbuf); @@ -3309,8 +3310,10 @@ DWORD WINAPI CardRSADecrypt(__in PCARD_DATA pCardData, if (pInfo->dwVersion >= CARD_RSA_KEY_DECRYPT_INFO_VERSION_TWO) { logprintf(pCardData, 2, "sc_pkcs15_decipher: DECRYPT-INFO dwVersion=%u\n", pInfo->dwVersion); if (pInfo->dwPaddingType == CARD_PADDING_PKCS1) { + size_t temp = pInfo->cbData; logprintf(pCardData, 2, "sc_pkcs15_decipher: stripping PKCS1 padding\n"); - r = sc_pkcs1_strip_02_padding(vs->ctx, pbuf2, pInfo->cbData, pbuf2, &pInfo->cbData); + r = sc_pkcs1_strip_02_padding(vs->ctx, pbuf2, pInfo->cbData, pbuf2, &temp); + pInfo->cbData = (DWORD) temp; if (r < 0) { logprintf(pCardData, 2, "Cannot strip PKCS1 padding: %i\n", r); pCardData->pfnCspFree(pbuf); @@ -3532,7 +3535,7 @@ DWORD WINAPI CardSignData(__in PCARD_DATA pCardData, __inout PCARD_SIGNING_INFO } opt_crypt_flags = SC_ALGORITHM_RSA_PAD_PKCS1 | SC_ALGORITHM_RSA_HASH_NONE; - pInfo->cbSignedData = prkey_info->modulus_length / 8; + pInfo->cbSignedData = (DWORD) prkey_info->modulus_length / 8; logprintf(pCardData, 3, "pInfo->cbSignedData = %d\n", pInfo->cbSignedData); if(!(pInfo->dwSigningFlags&CARD_BUFFER_SIZE_ONLY)) { @@ -4038,7 +4041,7 @@ DWORD WINAPI CardGetProperty(__in PCARD_DATA pCardData, } if (pdwDataLen) - *pdwDataLen = cardid->size; + *pdwDataLen = (DWORD) cardid->size; if (cbData < cardid->size) return ERROR_INSUFFICIENT_BUFFER; @@ -4058,7 +4061,7 @@ DWORD WINAPI CardGetProperty(__in PCARD_DATA pCardData, } if (pdwDataLen) - *pdwDataLen = buf_len; + *pdwDataLen = (DWORD) buf_len; if (cbData < buf_len) return ERROR_INSUFFICIENT_BUFFER;