Commit 691fcebf authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

bcrypt: Ignore the size parameter in BCRYPT_CHAINING_MODE setters.

parent d2c518e5
...@@ -518,24 +518,24 @@ static NTSTATUS set_alg_property( struct algorithm *alg, const WCHAR *prop, UCHA ...@@ -518,24 +518,24 @@ static NTSTATUS set_alg_property( struct algorithm *alg, const WCHAR *prop, UCHA
case ALG_ID_AES: case ALG_ID_AES:
if (!strcmpW( prop, BCRYPT_CHAINING_MODE )) if (!strcmpW( prop, BCRYPT_CHAINING_MODE ))
{ {
if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_ECB, size )) if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_ECB ))
{ {
alg->mode = MODE_ID_ECB; alg->mode = MODE_ID_ECB;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_CBC, size )) else if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_CBC ))
{ {
alg->mode = MODE_ID_CBC; alg->mode = MODE_ID_CBC;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_GCM, size )) else if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_GCM ))
{ {
alg->mode = MODE_ID_GCM; alg->mode = MODE_ID_GCM;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else else
{ {
FIXME( "unsupported mode %s\n", debugstr_wn( (WCHAR *)value, size ) ); FIXME( "unsupported mode %s\n", debugstr_w((WCHAR *)value) );
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
} }
......
...@@ -369,24 +369,24 @@ NTSTATUS key_set_property( struct key *key, const WCHAR *prop, UCHAR *value, ULO ...@@ -369,24 +369,24 @@ NTSTATUS key_set_property( struct key *key, const WCHAR *prop, UCHAR *value, ULO
{ {
if (!strcmpW( prop, BCRYPT_CHAINING_MODE )) if (!strcmpW( prop, BCRYPT_CHAINING_MODE ))
{ {
if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_ECB, size )) if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_ECB ))
{ {
key->u.s.mode = MODE_ID_ECB; key->u.s.mode = MODE_ID_ECB;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_CBC, size )) else if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_CBC ))
{ {
key->u.s.mode = MODE_ID_CBC; key->u.s.mode = MODE_ID_CBC;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_GCM, size )) else if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_GCM ))
{ {
key->u.s.mode = MODE_ID_GCM; key->u.s.mode = MODE_ID_GCM;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else else
{ {
FIXME( "unsupported mode %s\n", debugstr_wn( (WCHAR *)value, size ) ); FIXME( "unsupported mode %s\n", debugstr_w((WCHAR *)value) );
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
} }
......
...@@ -48,19 +48,19 @@ NTSTATUS key_set_property( struct key *key, const WCHAR *prop, UCHAR *value, ULO ...@@ -48,19 +48,19 @@ NTSTATUS key_set_property( struct key *key, const WCHAR *prop, UCHAR *value, ULO
{ {
if (!strcmpW( prop, BCRYPT_CHAINING_MODE )) if (!strcmpW( prop, BCRYPT_CHAINING_MODE ))
{ {
if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_ECB, size )) if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_ECB ))
{ {
key->u.s.mode = MODE_ID_ECB; key->u.s.mode = MODE_ID_ECB;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else if (!strncmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_CBC, size )) else if (!strcmpW( (WCHAR *)value, BCRYPT_CHAIN_MODE_CBC ))
{ {
key->u.s.mode = MODE_ID_CBC; key->u.s.mode = MODE_ID_CBC;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
else else
{ {
FIXME( "unsupported mode %s\n", debugstr_wn( (WCHAR *)value, size ) ); FIXME( "unsupported mode %s\n", debugstr_w((WCHAR *)value) );
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
} }
......
...@@ -639,7 +639,7 @@ static void test_aes(void) ...@@ -639,7 +639,7 @@ static void test_aes(void)
ok(key_lengths.dwIncrement == 64, "Expected 64, got %d\n", key_lengths.dwIncrement); ok(key_lengths.dwIncrement == 64, "Expected 64, got %d\n", key_lengths.dwIncrement);
memcpy(mode, BCRYPT_CHAIN_MODE_GCM, sizeof(BCRYPT_CHAIN_MODE_GCM)); memcpy(mode, BCRYPT_CHAIN_MODE_GCM, sizeof(BCRYPT_CHAIN_MODE_GCM));
ret = pBCryptSetProperty(alg, BCRYPT_CHAINING_MODE, mode, sizeof(mode), 0); ret = pBCryptSetProperty(alg, BCRYPT_CHAINING_MODE, mode, 0, 0);
ok(ret == STATUS_SUCCESS, "got %08x\n", ret); ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
size = 0; size = 0;
...@@ -694,6 +694,25 @@ static void test_BCryptGenerateSymmetricKey(void) ...@@ -694,6 +694,25 @@ static void test_BCryptGenerateSymmetricKey(void)
sizeof(BCRYPT_CHAIN_MODE_CBC), 0); sizeof(BCRYPT_CHAIN_MODE_CBC), 0);
ok(ret == STATUS_SUCCESS, "got %08x\n", ret); ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
size = 0;
memset(mode, 0, sizeof(mode));
ret = pBCryptGetProperty(key, BCRYPT_CHAINING_MODE, mode, sizeof(mode), &size, 0);
ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
ok(!lstrcmpW((const WCHAR *)mode, BCRYPT_CHAIN_MODE_CBC), "got %s\n", wine_dbgstr_w((const WCHAR *)mode));
ok(size == 64, "got %u\n", size);
ret = pBCryptSetProperty(key, BCRYPT_CHAINING_MODE, (UCHAR *)BCRYPT_CHAIN_MODE_ECB, 0, 0);
ok(ret == STATUS_SUCCESS || broken(ret == STATUS_NOT_SUPPORTED) /* < Win 8 */, "got %08x\n", ret);
if (ret == STATUS_SUCCESS)
{
size = 0;
memset(mode, 0, sizeof(mode));
ret = pBCryptGetProperty(key, BCRYPT_CHAINING_MODE, mode, sizeof(mode), &size, 0);
ok(ret == STATUS_SUCCESS, "got %08x\n", ret);
ok(!lstrcmpW((const WCHAR *)mode, BCRYPT_CHAIN_MODE_ECB), "got %s\n", wine_dbgstr_w((const WCHAR *)mode));
ok(size == 64, "got %u\n", size);
}
ret = pBCryptSetProperty(key, BCRYPT_CHAINING_MODE, (UCHAR *)BCRYPT_CHAIN_MODE_CBC, ret = pBCryptSetProperty(key, BCRYPT_CHAINING_MODE, (UCHAR *)BCRYPT_CHAIN_MODE_CBC,
sizeof(BCRYPT_CHAIN_MODE_CBC), 0); sizeof(BCRYPT_CHAIN_MODE_CBC), 0);
ok(ret == STATUS_SUCCESS || broken(ret == STATUS_NOT_SUPPORTED) /* < Win 8 */, "got %08x\n", ret); ok(ret == STATUS_SUCCESS || broken(ret == STATUS_NOT_SUPPORTED) /* < Win 8 */, "got %08x\n", ret);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment