ec_wii: Amend function casing
This commit is contained in:
parent
650071c3e4
commit
926c9f995a
|
@ -491,8 +491,8 @@ IPCCommandResult ES::ESGetDeviceID(const IOCtlVRequest& request)
|
||||||
_dbg_assert_msg_(IOS_ES, request.io_vectors.size() == 1, "IOCTL_ES_GETDEVICEID no io vectors");
|
_dbg_assert_msg_(IOS_ES, request.io_vectors.size() == 1, "IOCTL_ES_GETDEVICEID no io vectors");
|
||||||
|
|
||||||
const EcWii& ec = EcWii::GetInstance();
|
const EcWii& ec = EcWii::GetInstance();
|
||||||
INFO_LOG(IOS_ES, "IOCTL_ES_GETDEVICEID %08X", ec.getNgId());
|
INFO_LOG(IOS_ES, "IOCTL_ES_GETDEVICEID %08X", ec.GetNGID());
|
||||||
Memory::Write_U32(ec.getNgId(), request.io_vectors[0].address);
|
Memory::Write_U32(ec.GetNGID(), request.io_vectors[0].address);
|
||||||
return GetDefaultReply(IPC_SUCCESS);
|
return GetDefaultReply(IPC_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1247,7 +1247,7 @@ IPCCommandResult ES::GetDeviceCertificate(const IOCtlVRequest& request)
|
||||||
u8* destination = Memory::GetPointer(request.io_vectors[0].address);
|
u8* destination = Memory::GetPointer(request.io_vectors[0].address);
|
||||||
|
|
||||||
const EcWii& ec = EcWii::GetInstance();
|
const EcWii& ec = EcWii::GetInstance();
|
||||||
get_ng_cert(destination, ec.getNgId(), ec.getNgKeyId(), ec.getNgPriv(), ec.getNgSig());
|
MakeNGCert(destination, ec.GetNGID(), ec.GetNGKeyID(), ec.GetNGPriv(), ec.GetNGSig());
|
||||||
return GetDefaultReply(IPC_SUCCESS);
|
return GetDefaultReply(IPC_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1260,8 +1260,7 @@ IPCCommandResult ES::Sign(const IOCtlVRequest& request)
|
||||||
u8* sig_out = Memory::GetPointer(request.io_vectors[0].address);
|
u8* sig_out = Memory::GetPointer(request.io_vectors[0].address);
|
||||||
|
|
||||||
const EcWii& ec = EcWii::GetInstance();
|
const EcWii& ec = EcWii::GetInstance();
|
||||||
get_ap_sig_and_cert(sig_out, ap_cert_out, m_TitleID, data, data_size, ec.getNgPriv(),
|
MakeAPSigAndCert(sig_out, ap_cert_out, m_TitleID, data, data_size, ec.GetNGPriv(), ec.GetNGID());
|
||||||
ec.getNgId());
|
|
||||||
|
|
||||||
return GetDefaultReply(IPC_SUCCESS);
|
return GetDefaultReply(IPC_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,7 @@ IPCCommandResult NetKDRequest::IOCtl(const IOCtlRequest& request)
|
||||||
u8 hardware_model = GetHardwareModel(model);
|
u8 hardware_model = GetHardwareModel(model);
|
||||||
|
|
||||||
const EcWii& ec = EcWii::GetInstance();
|
const EcWii& ec = EcWii::GetInstance();
|
||||||
u32 HollywoodID = ec.getNgId();
|
u32 HollywoodID = ec.GetNGID();
|
||||||
u64 UserID = 0;
|
u64 UserID = 0;
|
||||||
|
|
||||||
s32 ret = NWC24MakeUserID(&UserID, HollywoodID, id_ctr, hardware_model, area_code);
|
s32 ret = NWC24MakeUserID(&UserID, HollywoodID, id_ctr, hardware_model, area_code);
|
||||||
|
|
|
@ -36,7 +36,18 @@ static u8 default_NG_sig[] = {
|
||||||
0xB8, 0xA8, 0x90, 0x1F, 0xA8, 0x2A, 0x0E, 0x4E, 0x76, 0xEF, 0x44, 0x72, 0x99, 0xF8,
|
0xB8, 0xA8, 0x90, 0x1F, 0xA8, 0x2A, 0x0E, 0x4E, 0x76, 0xEF, 0x44, 0x72, 0x99, 0xF8,
|
||||||
};
|
};
|
||||||
|
|
||||||
// get_ng_cert
|
static void MakeBlankSigECCert(u8* cert_out, const char* signer, const char* name,
|
||||||
|
const u8* private_key, u32 key_id)
|
||||||
|
{
|
||||||
|
memset(cert_out, 0, 0x180);
|
||||||
|
*(u32*)cert_out = Common::swap32(0x10002);
|
||||||
|
|
||||||
|
strncpy((char*)cert_out + 0x80, signer, 0x40);
|
||||||
|
*(u32*)(cert_out + 0xc0) = Common::swap32(2);
|
||||||
|
strncpy((char*)cert_out + 0xc4, name, 0x40);
|
||||||
|
*(u32*)(cert_out + 0x104) = Common::swap32(key_id);
|
||||||
|
ec_priv_to_pub(private_key, cert_out + 0x108);
|
||||||
|
}
|
||||||
|
|
||||||
// ng_cert_out is a pointer to a 0x180 byte buffer that will contain the device-unique certificate
|
// ng_cert_out is a pointer to a 0x180 byte buffer that will contain the device-unique certificate
|
||||||
// NG_id is the device-unique id to use
|
// NG_id is the device-unique id to use
|
||||||
|
@ -45,7 +56,7 @@ static u8 default_NG_sig[] = {
|
||||||
// NG_sig is the device-unique signature blob (from issuer) to use
|
// NG_sig is the device-unique signature blob (from issuer) to use
|
||||||
// if NG_priv iis nullptr or NG_sig is nullptr or NG_id is 0 or NG_key_id is 0, default values
|
// if NG_priv iis nullptr or NG_sig is nullptr or NG_id is 0 or NG_key_id is 0, default values
|
||||||
// will be used for all of them
|
// will be used for all of them
|
||||||
void get_ng_cert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, const u8* NG_sig)
|
void MakeNGCert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, const u8* NG_sig)
|
||||||
{
|
{
|
||||||
char name[64];
|
char name[64];
|
||||||
if ((NG_id == 0) || (NG_key_id == 0) || (NG_priv == nullptr) || (NG_sig == nullptr))
|
if ((NG_id == 0) || (NG_key_id == 0) || (NG_priv == nullptr) || (NG_sig == nullptr))
|
||||||
|
@ -57,7 +68,7 @@ void get_ng_cert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, c
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(name, "NG%08x", NG_id);
|
sprintf(name, "NG%08x", NG_id);
|
||||||
make_blanksig_ec_cert(ng_cert_out, "Root-CA00000001-MS00000002", name, NG_priv, NG_key_id);
|
MakeBlankSigECCert(ng_cert_out, "Root-CA00000001-MS00000002", name, NG_priv, NG_key_id);
|
||||||
memcpy(ng_cert_out + 4, NG_sig, 60);
|
memcpy(ng_cert_out + 4, NG_sig, 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,8 +83,8 @@ void get_ng_cert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, c
|
||||||
// NG_priv is the device-unique private key to use
|
// NG_priv is the device-unique private key to use
|
||||||
// NG_id is the device-unique id to use
|
// NG_id is the device-unique id to use
|
||||||
// if NG_priv is nullptr or NG_id is 0, it will use builtin defaults
|
// if NG_priv is nullptr or NG_id is 0, it will use builtin defaults
|
||||||
void get_ap_sig_and_cert(u8* sig_out, u8* ap_cert_out, u64 title_id, u8* data, u32 data_size,
|
void MakeAPSigAndCert(u8* sig_out, u8* ap_cert_out, u64 title_id, u8* data, u32 data_size,
|
||||||
const u8* NG_priv, u32 NG_id)
|
const u8* NG_priv, u32 NG_id)
|
||||||
{
|
{
|
||||||
u8 hash[20];
|
u8 hash[20];
|
||||||
u8 ap_priv[30];
|
u8 ap_priv[30];
|
||||||
|
@ -96,7 +107,7 @@ void get_ap_sig_and_cert(u8* sig_out, u8* ap_cert_out, u64 title_id, u8* data, u
|
||||||
|
|
||||||
sprintf(signer, "Root-CA00000001-MS00000002-NG%08x", NG_id);
|
sprintf(signer, "Root-CA00000001-MS00000002-NG%08x", NG_id);
|
||||||
sprintf(name, "AP%08x%08x", (u32)(title_id >> 32), (u32)(title_id & 0xffffffff));
|
sprintf(name, "AP%08x%08x", (u32)(title_id >> 32), (u32)(title_id & 0xffffffff));
|
||||||
make_blanksig_ec_cert(ap_cert_out, signer, name, ap_priv, 0);
|
MakeBlankSigECCert(ap_cert_out, signer, name, ap_priv, 0);
|
||||||
|
|
||||||
mbedtls_sha1(ap_cert_out + 0x80, 0x100, hash);
|
mbedtls_sha1(ap_cert_out + 0x80, 0x100, hash);
|
||||||
generate_ecdsa(ap_cert_out + 4, ap_cert_out + 34, NG_priv, hash);
|
generate_ecdsa(ap_cert_out + 4, ap_cert_out + 34, NG_priv, hash);
|
||||||
|
@ -105,19 +116,6 @@ void get_ap_sig_and_cert(u8* sig_out, u8* ap_cert_out, u64 title_id, u8* data, u
|
||||||
generate_ecdsa(sig_out, sig_out + 30, ap_priv, hash);
|
generate_ecdsa(sig_out, sig_out + 30, ap_priv, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void make_blanksig_ec_cert(u8* cert_out, const char* signer, const char* name,
|
|
||||||
const u8* private_key, u32 key_id)
|
|
||||||
{
|
|
||||||
memset(cert_out, 0, 0x180);
|
|
||||||
*(u32*)cert_out = Common::swap32(0x10002);
|
|
||||||
|
|
||||||
strncpy((char*)cert_out + 0x80, signer, 0x40);
|
|
||||||
*(u32*)(cert_out + 0xc0) = Common::swap32(2);
|
|
||||||
strncpy((char*)cert_out + 0xc4, name, 0x40);
|
|
||||||
*(u32*)(cert_out + 0x104) = Common::swap32(key_id);
|
|
||||||
ec_priv_to_pub(private_key, cert_out + 0x108);
|
|
||||||
}
|
|
||||||
|
|
||||||
EcWii::EcWii()
|
EcWii::EcWii()
|
||||||
{
|
{
|
||||||
bool init = true;
|
bool init = true;
|
||||||
|
@ -160,22 +158,22 @@ EcWii::~EcWii()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 EcWii::getNgId() const
|
u32 EcWii::GetNGID() const
|
||||||
{
|
{
|
||||||
return Common::swap32(BootMiiKeysBin.ng_id);
|
return Common::swap32(BootMiiKeysBin.ng_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 EcWii::getNgKeyId() const
|
u32 EcWii::GetNGKeyID() const
|
||||||
{
|
{
|
||||||
return Common::swap32(BootMiiKeysBin.ng_key_id);
|
return Common::swap32(BootMiiKeysBin.ng_key_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8* EcWii::getNgPriv() const
|
const u8* EcWii::GetNGPriv() const
|
||||||
{
|
{
|
||||||
return BootMiiKeysBin.ng_priv;
|
return BootMiiKeysBin.ng_priv;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8* EcWii::getNgSig() const
|
const u8* EcWii::GetNGSig() const
|
||||||
{
|
{
|
||||||
return BootMiiKeysBin.ng_sig;
|
return BootMiiKeysBin.ng_sig;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,12 +26,9 @@
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
|
||||||
void get_ng_cert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, const u8* NG_sig);
|
void MakeNGCert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, const u8* NG_sig);
|
||||||
void get_ap_sig_and_cert(u8* sig_out, u8* ap_cert_out, u64 title_id, u8* data, u32 data_size,
|
void MakeAPSigAndCert(u8* sig_out, u8* ap_cert_out, u64 title_id, u8* data, u32 data_size,
|
||||||
const u8* NG_priv, u32 NG_id);
|
const u8* NG_priv, u32 NG_id);
|
||||||
|
|
||||||
void make_blanksig_ec_cert(u8* cert_out, const char* signer, const char* name,
|
|
||||||
const u8* private_key, u32 key_id);
|
|
||||||
|
|
||||||
class EcWii
|
class EcWii
|
||||||
{
|
{
|
||||||
|
@ -39,10 +36,10 @@ public:
|
||||||
EcWii();
|
EcWii();
|
||||||
~EcWii();
|
~EcWii();
|
||||||
static EcWii& GetInstance();
|
static EcWii& GetInstance();
|
||||||
u32 getNgId() const;
|
u32 GetNGID() const;
|
||||||
u32 getNgKeyId() const;
|
u32 GetNGKeyID() const;
|
||||||
const u8* getNgPriv() const;
|
const u8* GetNGPriv() const;
|
||||||
const u8* getNgSig() const;
|
const u8* GetNGSig() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitDefaults();
|
void InitDefaults();
|
||||||
|
|
Loading…
Reference in New Issue