libs: begin adding capacity for doing crypto on generic os (using externally-preset keys)

This commit is contained in:
Michael Scire
2022-03-07 09:21:13 -08:00
committed by SciresM
parent 6368d8063a
commit 706b8492fd
28 changed files with 1305 additions and 33 deletions

View File

@@ -23,7 +23,7 @@
namespace ams::crypto::impl {
template<typename Hash> /* requires HashFunction<Hash> */
template<HashFunction Hash>
class HmacImpl {
NON_COPYABLE(HmacImpl);
NON_MOVEABLE(HmacImpl);
@@ -61,7 +61,7 @@ namespace ams::crypto::impl {
void GetMac(void *dst, size_t dst_size);
};
template<typename Hash>
template<HashFunction Hash>
inline void HmacImpl<Hash>::Initialize(const void *key, size_t key_size) {
/* Clear the key storage. */
std::memset(m_key, 0, sizeof(m_key));
@@ -88,14 +88,14 @@ namespace ams::crypto::impl {
m_state = State_Initialized;
}
template<typename Hash>
template<HashFunction Hash>
inline void HmacImpl<Hash>::Update(const void *data, size_t data_size) {
AMS_ASSERT(m_state == State_Initialized);
m_hash_function.Update(data, data_size);
}
template<typename Hash>
template<HashFunction Hash>
inline void HmacImpl<Hash>::GetMac(void *dst, size_t dst_size) {
AMS_ASSERT(m_state == State_Initialized || m_state == State_Done);
AMS_ASSERT(dst_size >= MacSize);