Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Bug 1636771 - Fix incorrect call to Chacha20Poly1305 by PKCS11. r=jcj…
…,kjacobs,rrelyea

Differential Revision: https://phabricator.services.mozilla.com/D74801

--HG--
branch : NSS_3_53_BRANCH
extra : transplant_source : %A5%E8.%40%F0%3E%24%94%1EX%90%FB%B0%05n%E9%0C%0A%40%26
  • Loading branch information
beurdouche committed Jul 18, 2020
1 parent 4d767bf commit 632249f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
11 changes: 9 additions & 2 deletions gtests/pk11_gtest/pk11_chacha20poly1305_unittest.cc
Expand Up @@ -45,7 +45,7 @@ class Pkcs11ChaCha20Poly1305Test
SECItem params = {siBuffer, reinterpret_cast<unsigned char*>(&aead_params),
sizeof(aead_params)};

// Encrypt with bad parameters.
// Encrypt with bad parameters (TagLen is too long).
unsigned int encrypted_len = 0;
std::vector<uint8_t> encrypted(data_len + aead_params.ulTagLen);
aead_params.ulTagLen = 158072;
Expand All @@ -54,9 +54,16 @@ class Pkcs11ChaCha20Poly1305Test
&encrypted_len, encrypted.size(), data, data_len);
EXPECT_EQ(SECFailure, rv);
EXPECT_EQ(0U, encrypted_len);
aead_params.ulTagLen = 16;

// Encrypt with bad parameters (TagLen is too short).
aead_params.ulTagLen = 2;
rv = PK11_Encrypt(key.get(), kMech, &params, encrypted.data(),
&encrypted_len, encrypted.size(), data, data_len);
EXPECT_EQ(SECFailure, rv);
EXPECT_EQ(0U, encrypted_len);

// Encrypt.
aead_params.ulTagLen = 16;
rv = PK11_Encrypt(key.get(), kMech, &params, encrypted.data(),
&encrypted_len, encrypted.size(), data, data_len);

Expand Down
2 changes: 1 addition & 1 deletion lib/freebl/chacha20poly1305.c
Expand Up @@ -81,7 +81,7 @@ ChaCha20Poly1305_InitContext(ChaCha20Poly1305Context *ctx,
PORT_SetError(SEC_ERROR_BAD_KEY);
return SECFailure;
}
if (tagLen == 0 || tagLen > 16) {
if (tagLen != 16) {
PORT_SetError(SEC_ERROR_INPUT_LEN);
return SECFailure;
}
Expand Down

0 comments on commit 632249f

Please sign in to comment.