ec: Avoid exposing internal function

This commit is contained in:
Léo Lam 2018-05-15 21:24:45 +02:00
parent b9dd94b9b2
commit e83591f188
3 changed files with 12 additions and 4 deletions

View File

@ -313,7 +313,7 @@ static void point_add(u8* r, const u8* p, const u8* q)
elt_add(ry, s, rx); elt_add(ry, s, rx);
} }
void point_mul(u8* d, const u8* a, const u8* b) // a is bignum static void point_mul(u8* d, const u8* a, const u8* b) // a is bignum
{ {
u32 i; u32 i;
u8 mask; u8 mask;
@ -410,6 +410,12 @@ void ec_priv_to_pub(const u8* k, u8* Q)
point_mul(Q, k, ec_G); point_mul(Q, k, ec_G);
} }
std::array<u8, 60> ComputeSharedSecret(const u8* private_key, const u8* public_key)
{
std::array<u8, 60> shared_secret;
point_mul(shared_secret.data(), private_key, public_key);
return shared_secret;
}
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(pop) #pragma warning(pop)
#endif #endif

View File

@ -4,10 +4,12 @@
#pragma once #pragma once
#include <array>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
void generate_ecdsa(u8* R, u8* S, const u8* k, const u8* hash); void generate_ecdsa(u8* R, u8* S, const u8* k, const u8* hash);
void ec_priv_to_pub(const u8* k, u8* Q); void ec_priv_to_pub(const u8* k, u8* Q);
void point_mul(u8* d, const u8* a, const u8* b); std::array<u8, 60> ComputeSharedSecret(const u8* private_key, const u8* public_key);

View File

@ -250,8 +250,8 @@ ReturnCode IOSC::ComputeSharedKey(Handle dest_handle, Handle private_handle, Han
} }
// Calculate the ECC shared secret. // Calculate the ECC shared secret.
std::array<u8, 0x3c> shared_secret; const std::array<u8, 0x3c> shared_secret =
point_mul(shared_secret.data(), private_entry->data.data(), public_entry->data.data()); ComputeSharedSecret(private_entry->data.data(), public_entry->data.data());
std::array<u8, 20> sha1; std::array<u8, 20> sha1;
mbedtls_sha1(shared_secret.data(), shared_secret.size() / 2, sha1.data()); mbedtls_sha1(shared_secret.data(), shared_secret.size() / 2, sha1.data());