dolphin/Source/Core/Common/Crypto/ec.h

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

31 lines
920 B
C
Raw Normal View History

2014-02-28 04:41:10 -07:00
// Copyright 2007,2008 Segher Boessenkool <segher@kernel.crashing.org>
// SPDX-License-Identifier: GPL-2.0-or-later
2014-02-28 04:41:10 -07:00
#pragma once
2018-05-15 13:24:45 -06:00
#include <array>
2014-02-28 04:41:10 -07:00
#include "Common/CommonTypes.h"
namespace Common::ec
{
using Signature = std::array<u8, 60>;
using PublicKey = std::array<u8, 60>;
/// Generate a signature using ECDSA.
Signature Sign(const u8* key, const u8* hash);
/// Check a signature using ECDSA.
///
/// @param public_key 30 byte ECC public key
/// @param signature 60 byte signature
/// @param hash Message hash
bool VerifySignature(const u8* public_key, const u8* signature, const u8* hash);
/// Compute a shared secret from a private key (30 bytes) and public key (60 bytes).
2018-05-15 13:24:45 -06:00
std::array<u8, 60> ComputeSharedSecret(const u8* private_key, const u8* public_key);
/// Convert a ECC private key (30 bytes) to a public key (60 bytes).
PublicKey PrivToPub(const u8* key);
} // namespace Common::ec