mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-26 15:49:50 -06:00
IOS/ESFormats: Add ParseCertChain
This will be used to avoid duplicating cert chain parsing code.
This commit is contained in:
@ -681,5 +681,23 @@ std::vector<u8> CertReader::GetPublicKey() const
|
|||||||
const auto key_begin = m_bytes.begin() + info.first;
|
const auto key_begin = m_bytes.begin() + info.first;
|
||||||
return std::vector<u8>(key_begin, key_begin + info.second);
|
return std::vector<u8>(key_begin, key_begin + info.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::map<std::string, CertReader> ParseCertChain(const std::vector<u8>& chain)
|
||||||
|
{
|
||||||
|
std::map<std::string, CertReader> certs;
|
||||||
|
|
||||||
|
size_t processed = 0;
|
||||||
|
while (processed != chain.size())
|
||||||
|
{
|
||||||
|
CertReader cert_reader{std::vector<u8>(chain.begin() + processed, chain.end())};
|
||||||
|
if (!cert_reader.IsValid())
|
||||||
|
return certs;
|
||||||
|
|
||||||
|
processed += cert_reader.GetBytes().size();
|
||||||
|
const std::string name = cert_reader.GetName();
|
||||||
|
certs.emplace(std::move(name), std::move(cert_reader));
|
||||||
|
}
|
||||||
|
return certs;
|
||||||
|
}
|
||||||
} // namespace ES
|
} // namespace ES
|
||||||
} // namespace IOS
|
} // namespace IOS
|
||||||
|
@ -284,5 +284,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
bool m_is_valid = false;
|
bool m_is_valid = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::map<std::string, CertReader> ParseCertChain(const std::vector<u8>& chain);
|
||||||
} // namespace ES
|
} // namespace ES
|
||||||
} // namespace IOS
|
} // namespace IOS
|
||||||
|
Reference in New Issue
Block a user