| // Copyright 2022 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "libhwsec-foundation/crypto/scrypt.h" |
| |
| #include <openssl/rsa.h> |
| |
| #include <base/base64.h> |
| #include <base/check.h> |
| #include <brillo/secure_blob.h> |
| #include <crypto/scoped_openssl_types.h> |
| #include <gtest/gtest.h> |
| |
| #include "libhwsec-foundation/crypto/secure_blob_util.h" |
| |
| using brillo::SecureBlob; |
| |
| namespace hwsec_foundation { |
| |
| TEST(ScryptTest, DeriveSecretsScrypt) { |
| brillo::SecureBlob passkey("passkey"); |
| brillo::SecureBlob salt("salt"); |
| |
| const size_t secret_size = 16; |
| brillo::SecureBlob result1(secret_size), result2(secret_size), |
| result3(secret_size); |
| |
| EXPECT_TRUE( |
| DeriveSecretsScrypt(passkey, salt, {&result1, &result2, &result3})); |
| |
| EXPECT_NE(brillo::SecureBlob(), result1); |
| EXPECT_NE(brillo::SecureBlob(), result2); |
| EXPECT_NE(brillo::SecureBlob(), result3); |
| } |
| |
| TEST(ScryptTest, DeriveSecretsScryptEmptySecrets) { |
| brillo::SecureBlob passkey("passkey"); |
| brillo::SecureBlob salt("salt"); |
| |
| std::vector<brillo::SecureBlob*> gen_secrets; |
| EXPECT_FALSE(DeriveSecretsScrypt(passkey, salt, gen_secrets)); |
| |
| brillo::SecureBlob empty_blob; |
| EXPECT_FALSE(DeriveSecretsScrypt(passkey, salt, {&empty_blob})); |
| } |
| |
| } // namespace hwsec_foundation |