minidriver: fix compilation warnings on x64 (size_t <> DWORD)
This commit is contained in:
parent
2f6d1b5c97
commit
aede9b164b
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* minidriver.c: OpenSC minidriver
|
* minidriver.c: OpenSC minidriver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009,2010 francois.leblanc@cev-sa.com
|
* Copyright (C) 2009,2010 francois.leblanc@cev-sa.com
|
||||||
|
@ -140,7 +140,7 @@ struct md_pkcs15_container {
|
||||||
struct sc_pkcs15_id id;
|
struct sc_pkcs15_id id;
|
||||||
char guid[MAX_CONTAINER_NAME_LEN + 1];
|
char guid[MAX_CONTAINER_NAME_LEN + 1];
|
||||||
unsigned flags;
|
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;
|
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);
|
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 line[74];
|
||||||
char *c;
|
char *c;
|
||||||
|
@ -917,7 +917,7 @@ md_pkcs15_update_containers(PCARD_DATA pCardData, unsigned char *blob, size_t si
|
||||||
|
|
||||||
vs = pCardData->pvVendorSpecific;
|
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)
|
if (nn_records > MD_MAX_KEY_CONTAINERS)
|
||||||
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++);
|
id.len = *(ddata->data + offs++);
|
||||||
memcpy(id.value, ddata->data + offs, id.len);
|
memcpy(id.value, ddata->data + offs, id.len);
|
||||||
offs += id.len;
|
offs += (int) id.len;
|
||||||
|
|
||||||
if (*(ddata->data + offs++) != 0x02) {
|
if (*(ddata->data + offs++) != 0x02) {
|
||||||
sc_pkcs15_free_data_object(ddata);
|
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;
|
int rv, ii, cert_num;
|
||||||
struct sc_pkcs15_object *prkey_objs[MD_MAX_KEY_CONTAINERS];
|
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) {
|
if (!hCertStore) {
|
||||||
dwret = GetLastError();
|
dwret = GetLastError();
|
||||||
goto Ret;
|
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);
|
logprintf(pCardData, 2, "Cannot read certificate idx:%i: sc-error %d\n", ii, rv);
|
||||||
continue;
|
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) {
|
if (wincert) {
|
||||||
CertAddCertificateContextToStore(hCertStore, wincert, CERT_STORE_ADD_REPLACE_EXISTING, NULL);
|
CertAddCertificateContextToStore(hCertStore, wincert, CERT_STORE_ADD_REPLACE_EXISTING, NULL);
|
||||||
CertFreeCertificateContext(wincert);
|
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);
|
mbstowcs((p+ii)->wszGuid, vs->p15_containers[ii].guid, MAX_CONTAINER_NAME_LEN + 1);
|
||||||
(p+ii)->bFlags = vs->p15_containers[ii].flags;
|
(p+ii)->bFlags = vs->p15_containers[ii].flags;
|
||||||
(p+ii)->wSigKeySizeBits = vs->p15_containers[ii].size_sign;
|
(p+ii)->wSigKeySizeBits = (WORD) vs->p15_containers[ii].size_sign;
|
||||||
(p+ii)->wKeyExchangeKeySizeBits = vs->p15_containers[ii].size_key_exchange;
|
(p+ii)->wKeyExchangeKeySizeBits = (WORD) vs->p15_containers[ii].size_key_exchange;
|
||||||
|
|
||||||
if (vs->p15_containers[ii].cert_obj) {
|
if (vs->p15_containers[ii].cert_obj) {
|
||||||
char k_name[6];
|
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(&pub_args, 0, sizeof(pub_args));
|
||||||
memset(&keygen_args, 0, sizeof(keygen_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) {
|
if (key_type == AT_SIGNATURE) {
|
||||||
keygen_args.prkey_args.key.algorithm = SC_ALGORITHM_RSA;
|
keygen_args.prkey_args.key.algorithm = SC_ALGORITHM_RSA;
|
||||||
|
@ -2226,7 +2227,7 @@ md_dialog_perform_pin_operation_thread(PVOID lpParameter)
|
||||||
{
|
{
|
||||||
/* unstack the parameters */
|
/* unstack the parameters */
|
||||||
LONG_PTR* parameter = (LONG_PTR*) lpParameter;
|
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_card *p15card = (struct sc_pkcs15_card *) parameter[1];
|
||||||
struct sc_pkcs15_object *pin_obj = (struct sc_pkcs15_object *) parameter[2];
|
struct sc_pkcs15_object *pin_obj = (struct sc_pkcs15_object *) parameter[2];
|
||||||
const u8 *pin1 = (const u8 *) parameter[3];
|
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) */
|
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);
|
result = DialogBoxParam(g_inst, MAKEINTRESOURCE(IDD_PINPAD), pv->hwndParent, md_dialog_proc, (LPARAM) parameter);
|
||||||
SecureZeroMemory(parameter, sizeof(parameter));
|
SecureZeroMemory(parameter, sizeof(parameter));
|
||||||
return result;
|
return (int) result;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD md_translate_OpenSC_to_Windows_error(int OpenSCerror, DWORD dwDefaulCode)
|
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) {
|
if (pubkey_der.len && pubkey_der.value) {
|
||||||
sz = 0; /* get size */
|
sz = 0; /* get size */
|
||||||
CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB,
|
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) {
|
if (cont->size_sign) {
|
||||||
PUBKEYSTRUCT_BASE *oh = (PUBKEYSTRUCT_BASE *)pCardData->pfnCspAlloc(sz);
|
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;
|
return SCARD_E_NO_MEMORY;
|
||||||
|
|
||||||
CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB,
|
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;
|
oh->publickeystruc.aiKeyAlg = CALG_RSA_SIGN;
|
||||||
pContainerInfo->cbSigPublicKey = sz;
|
pContainerInfo->cbSigPublicKey = sz;
|
||||||
|
@ -2670,7 +2671,7 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine
|
||||||
return SCARD_E_NO_MEMORY;
|
return SCARD_E_NO_MEMORY;
|
||||||
|
|
||||||
CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB,
|
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;
|
oh->publickeystruc.aiKeyAlg = CALG_RSA_KEYX;
|
||||||
pContainerInfo->cbKeyExPublicKey = sz;
|
pContainerInfo->cbKeyExPublicKey = sz;
|
||||||
|
@ -2974,7 +2975,7 @@ DWORD WINAPI CardReadFile(__in PCARD_DATA pCardData,
|
||||||
*ppbData = pCardData->pfnCspAlloc(file->size);
|
*ppbData = pCardData->pfnCspAlloc(file->size);
|
||||||
if(!*ppbData)
|
if(!*ppbData)
|
||||||
return SCARD_E_NO_MEMORY;
|
return SCARD_E_NO_MEMORY;
|
||||||
*pcbData = file->size;
|
*pcbData = (DWORD) file->size;
|
||||||
memcpy(*ppbData, file->blob, file->size);
|
memcpy(*ppbData, file->blob, file->size);
|
||||||
|
|
||||||
logprintf(pCardData, 7, "returns '%s' content:\n", NULLSTR(pszFileName));
|
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;
|
return SCARD_E_NO_MEMORY;
|
||||||
|
|
||||||
CopyMemory(*pmszFileNames, mstr, offs);
|
CopyMemory(*pmszFileNames, mstr, offs);
|
||||||
*pdwcbFileName = offs;
|
*pdwcbFileName = (DWORD) offs;
|
||||||
return SCARD_S_SUCCESS;
|
return SCARD_S_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3137,7 +3138,7 @@ DWORD WINAPI CardGetFileInfo(__in PCARD_DATA pCardData,
|
||||||
}
|
}
|
||||||
|
|
||||||
pCardFileInfo->dwVersion = CARD_FILE_INFO_CURRENT_VERSION;
|
pCardFileInfo->dwVersion = CARD_FILE_INFO_CURRENT_VERSION;
|
||||||
pCardFileInfo->cbFileSize = file->size;
|
pCardFileInfo->cbFileSize = (DWORD) file->size;
|
||||||
pCardFileInfo->AccessCondition = file->acl;
|
pCardFileInfo->AccessCondition = file->acl;
|
||||||
|
|
||||||
return SCARD_S_SUCCESS;
|
return SCARD_S_SUCCESS;
|
||||||
|
@ -3281,7 +3282,7 @@ DWORD WINAPI CardRSADecrypt(__in PCARD_DATA pCardData,
|
||||||
loghex(pCardData, 7, pbuf, pInfo->cbData);
|
loghex(pCardData, 7, pbuf, pInfo->cbData);
|
||||||
|
|
||||||
prkey_info = (struct sc_pkcs15_prkey_info *)(pkey->data);
|
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) {
|
if (!alg_info) {
|
||||||
logprintf(pCardData, 2, "Cannot get appropriate RSA card algorithm for key size %i\n", prkey_info->modulus_length);
|
logprintf(pCardData, 2, "Cannot get appropriate RSA card algorithm for key size %i\n", prkey_info->modulus_length);
|
||||||
pCardData->pfnCspFree(pbuf);
|
pCardData->pfnCspFree(pbuf);
|
||||||
|
@ -3309,8 +3310,10 @@ DWORD WINAPI CardRSADecrypt(__in PCARD_DATA pCardData,
|
||||||
if (pInfo->dwVersion >= CARD_RSA_KEY_DECRYPT_INFO_VERSION_TWO) {
|
if (pInfo->dwVersion >= CARD_RSA_KEY_DECRYPT_INFO_VERSION_TWO) {
|
||||||
logprintf(pCardData, 2, "sc_pkcs15_decipher: DECRYPT-INFO dwVersion=%u\n", pInfo->dwVersion);
|
logprintf(pCardData, 2, "sc_pkcs15_decipher: DECRYPT-INFO dwVersion=%u\n", pInfo->dwVersion);
|
||||||
if (pInfo->dwPaddingType == CARD_PADDING_PKCS1) {
|
if (pInfo->dwPaddingType == CARD_PADDING_PKCS1) {
|
||||||
|
size_t temp = pInfo->cbData;
|
||||||
logprintf(pCardData, 2, "sc_pkcs15_decipher: stripping PKCS1 padding\n");
|
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) {
|
if (r < 0) {
|
||||||
logprintf(pCardData, 2, "Cannot strip PKCS1 padding: %i\n", r);
|
logprintf(pCardData, 2, "Cannot strip PKCS1 padding: %i\n", r);
|
||||||
pCardData->pfnCspFree(pbuf);
|
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;
|
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);
|
logprintf(pCardData, 3, "pInfo->cbSignedData = %d\n", pInfo->cbSignedData);
|
||||||
|
|
||||||
if(!(pInfo->dwSigningFlags&CARD_BUFFER_SIZE_ONLY)) {
|
if(!(pInfo->dwSigningFlags&CARD_BUFFER_SIZE_ONLY)) {
|
||||||
|
@ -4038,7 +4041,7 @@ DWORD WINAPI CardGetProperty(__in PCARD_DATA pCardData,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdwDataLen)
|
if (pdwDataLen)
|
||||||
*pdwDataLen = cardid->size;
|
*pdwDataLen = (DWORD) cardid->size;
|
||||||
if (cbData < cardid->size)
|
if (cbData < cardid->size)
|
||||||
return ERROR_INSUFFICIENT_BUFFER;
|
return ERROR_INSUFFICIENT_BUFFER;
|
||||||
|
|
||||||
|
@ -4058,7 +4061,7 @@ DWORD WINAPI CardGetProperty(__in PCARD_DATA pCardData,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdwDataLen)
|
if (pdwDataLen)
|
||||||
*pdwDataLen = buf_len;
|
*pdwDataLen = (DWORD) buf_len;
|
||||||
if (cbData < buf_len)
|
if (cbData < buf_len)
|
||||||
return ERROR_INSUFFICIENT_BUFFER;
|
return ERROR_INSUFFICIENT_BUFFER;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue