Merge pull request #5308 from lioncash/rsa

core/hw/rsa: Minor cleanup
This commit is contained in:
Pengfei Zhu 2020-05-02 08:01:58 +08:00 committed by GitHub
commit 59984df603
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 9 deletions

View file

@ -223,7 +223,7 @@ void LoadNativeFirmKeysOld3DS() {
return; return;
} }
auto rsa = RSA::GetSlot(0); const auto rsa = RSA::GetSlot(0);
if (!rsa) { if (!rsa) {
LOG_ERROR(HW_AES, "RSA slot is missing"); LOG_ERROR(HW_AES, "RSA slot is missing");
return; return;

View file

@ -31,7 +31,7 @@ std::vector<u8> HexToBytes(const std::string& hex) {
constexpr std::size_t SlotSize = 4; constexpr std::size_t SlotSize = 4;
std::array<RsaSlot, SlotSize> rsa_slots; std::array<RsaSlot, SlotSize> rsa_slots;
std::vector<u8> RsaSlot::GetSignature(const std::vector<u8>& message) { std::vector<u8> RsaSlot::GetSignature(const std::vector<u8>& message) const {
CryptoPP::Integer sig = CryptoPP::Integer sig =
CryptoPP::ModularExponentiation(CryptoPP::Integer(message.data(), message.size()), CryptoPP::ModularExponentiation(CryptoPP::Integer(message.data(), message.size()),
CryptoPP::Integer(exponent.data(), exponent.size()), CryptoPP::Integer(exponent.data(), exponent.size()),
@ -74,7 +74,7 @@ void InitSlots() {
std::vector<u8> exponent(256); std::vector<u8> exponent(256);
file.ReadArray(exponent.data(), exponent.size()); file.ReadArray(exponent.data(), exponent.size());
rsa_slots[0] = RsaSlot(exponent, modulus); rsa_slots[0] = RsaSlot(std::move(exponent), std::move(modulus));
// TODO(B3N30): Initalize the other slots. But since they aren't used at all, we can skip them // TODO(B3N30): Initalize the other slots. But since they aren't used at all, we can skip them
// for now // for now
} }

View file

@ -11,18 +11,18 @@ namespace HW::RSA {
class RsaSlot { class RsaSlot {
public: public:
RsaSlot() : init(false) {} RsaSlot() = default;
RsaSlot(const std::vector<u8>& exponent, const std::vector<u8>& modulus) RsaSlot(std::vector<u8> exponent, std::vector<u8> modulus)
: init(true), exponent(exponent), modulus(modulus) {} : init(true), exponent(std::move(exponent)), modulus(std::move(modulus)) {}
std::vector<u8> GetSignature(const std::vector<u8>& message); std::vector<u8> GetSignature(const std::vector<u8>& message) const;
operator bool() const { explicit operator bool() const {
// TODO(B3N30): Maybe check if exponent and modulus are vailid // TODO(B3N30): Maybe check if exponent and modulus are vailid
return init; return init;
} }
private: private:
bool init; bool init = false;
std::vector<u8> exponent; std::vector<u8> exponent;
std::vector<u8> modulus; std::vector<u8> modulus;
}; };