J'essaie d'utiliser wincrypt pour générer la clé privée en utilisant les valeurs P et G. Je reçois ERROR_INVALID_PARAMETER Je ne suis pas sûr de ce qui ne va pas dans mon code. C'est la même implémentation que dans l'exemple de code donné sur le site web de Microsoft. https://msdn.microsoft.com/en-us/library/aa381969(VS.85).aspx#exchanging_diffie-hellman_keysWincrypt Diffie Hellman erreur
int err, gen_fld_sz, fld_sz, salt_len;
const char *generator = ""; // generator as string
const char *prime = ""; // prime as string
BYTE* g_rgbPrime = new BYTE[fld_sz+1];
memcpy(g_rgbPrime, prime, fld_sz+1); // Prime conta
BYTE* g_rgbGenerator = new BYTE[gen_fld_sz+1];
memcpy(g_rgbGenerator, generator, gen_fld_sz+1);
BYTE* g_rgbData = new BYTE[key_len+1];
memcpy(g_rgbData, str_server_pub_key, key_len);
BOOL fReturn;
HCRYPTPROV hProvParty1 = NULL;
HCRYPTPROV hProvParty2 = NULL;
DATA_BLOB P;
DATA_BLOB G;
DATA_BLOB S;
HCRYPTKEY hPrivateKey1 = NULL;
HCRYPTKEY hPrivateKey2 = NULL;
PBYTE pbKeyBlob1 = NULL;
PBYTE pbKeyBlob2 = NULL;
HCRYPTKEY hSessionKey1 = NULL;
HCRYPTKEY hSessionKey2 = NULL;
PBYTE pbData = NULL;
/************************
Construct data BLOBs for the prime and generator. The P and G
values, represented by the g_rgbPrime and g_rgbGenerator arrays
respectively, are shared values that have been agreed to by both
parties.
************************/
P.cbData = fld_sz+1;
P.pbData = (BYTE*)(g_rgbPrime);
G.cbData = gen_fld_sz+1;
G.pbData = (BYTE*)(g_rgbGenerator);
// Acquire a provider handle for party 1.
fReturn = CryptAcquireContext(
&hProvParty1,
NULL,
MS_ENH_DSS_DH_PROV,
PROV_DSS_DH,
CRYPT_VERIFYCONTEXT);
if (!fReturn)
{
log_error("error in setting CryptAcquireContext " << GetLastError());
goto ErrorExit;
}
// Set the prime for party 1's private key.
fReturn = CryptSetKeyParam(
hPrivateKey1,
KP_P,
(PBYTE)&P,
0);
if (!fReturn)
{
log_error("error in setting CryptSetKeyParam " << GetLastError());
goto ErrorExit;
}
Je reçois une erreur dans la dernière CryptSetKeyParam. Veuillez nous conseiller
Merci d'avance.
J'ai essayé de l'ajouter et j'ai l'erreur ci-dessous. erreur dans le réglage CryptSetKeyParam 2148073477 –