mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-07-17 14:22:13 +02:00
No more acid sigchecks
This commit is contained in:
parent
14287d833b
commit
eefa783f12
@ -61,40 +61,37 @@ namespace ams::ldr {
|
|||||||
}
|
}
|
||||||
R_UNLESS(!(npdm->flags & mask), ResultInvalidMeta());
|
R_UNLESS(!(npdm->flags & mask), ResultInvalidMeta());
|
||||||
|
|
||||||
/* Validate Acid extents. */
|
/* Validate Acid extents go brrr */
|
||||||
R_TRY(ValidateSubregion(sizeof(Npdm), size, npdm->acid_offset, npdm->acid_size, sizeof(Acid)));
|
|
||||||
|
|
||||||
/* Validate Aci extends. */
|
/* Validate Aci extends. */
|
||||||
R_TRY(ValidateSubregion(sizeof(Npdm), size, npdm->aci_offset, npdm->aci_size, sizeof(Aci)));
|
// R_TRY(ValidateSubregion(sizeof(Npdm), size, npdm->aci_offset, npdm->aci_size, sizeof(Aci)));
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ValidateAcid(const Acid *acid, size_t size) {
|
Result ValidateAcid(const Acid *acid, size_t size) {
|
||||||
/* Validate magic. */
|
/* Validate magic. */
|
||||||
R_UNLESS(acid->magic == Acid::Magic, ResultInvalidMeta());
|
// R_UNLESS(acid->magic == Acid::Magic, ResultInvalidMeta());
|
||||||
|
|
||||||
/* Validate that the acid is for production if not development. */
|
/* Validate that the acid is for production if not development. */
|
||||||
if (!IsDevelopmentForAcidProductionCheck()) {
|
// if (!IsDevelopmentForAcidProductionCheck()) {
|
||||||
R_UNLESS((acid->flags & Acid::AcidFlag_Production) != 0, ResultInvalidMeta());
|
// R_UNLESS((acid->flags & Acid::AcidFlag_Production) != 0, Resul
|
||||||
}
|
|
||||||
|
|
||||||
/* Validate Fac, Sac, Kac. */
|
/* Validate Fac, Sac, Kac. */
|
||||||
R_TRY(ValidateSubregion(sizeof(Acid), size, acid->fac_offset, acid->fac_size));
|
// R_TRY(ValidateSubregion(sizeof(Acid), size, acid->fac_offset, acid->fac_size));
|
||||||
R_TRY(ValidateSubregion(sizeof(Acid), size, acid->sac_offset, acid->sac_size));
|
// R_TRY(ValidateSubregion(sizeof(Acid), size, acid->sac_offset, acid->sac_size));
|
||||||
R_TRY(ValidateSubregion(sizeof(Acid), size, acid->kac_offset, acid->kac_size));
|
// R_TRY(ValidateSubregion(sizeof(Acid), size, acid->kac_offset, acid->kac_size));
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ValidateAci(const Aci *aci, size_t size) {
|
Result ValidateAci(const Aci *aci, size_t size) {
|
||||||
/* Validate magic. */
|
/* Validate magic. */
|
||||||
R_UNLESS(aci->magic == Aci::Magic, ResultInvalidMeta());
|
// R_UNLESS(aci->magic == Aci::Magic, ResultInvalidMeta());
|
||||||
|
|
||||||
/* Validate Fah, Sac, Kac. */
|
/* Validate Fah, Sac, Kac. */
|
||||||
R_TRY(ValidateSubregion(sizeof(Aci), size, aci->fah_offset, aci->fah_size));
|
// R_TRY(ValidateSubregion(sizeof(Aci), size, aci->fah_offset, aci->fah_size));
|
||||||
R_TRY(ValidateSubregion(sizeof(Aci), size, aci->sac_offset, aci->sac_size));
|
// R_TRY(ValidateSubregion(sizeof(Aci), size, aci->sac_offset, aci->sac_size));
|
||||||
R_TRY(ValidateSubregion(sizeof(Aci), size, aci->kac_offset, aci->kac_size));
|
// R_TRY(ValidateSubregion(sizeof(Aci), size, aci->kac_offset, aci->kac_size));
|
||||||
|
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
}
|
}
|
||||||
@ -117,16 +114,16 @@ namespace ams::ldr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Verify the signature. */
|
/* Verify the signature. */
|
||||||
const u8 *sig = meta->acid->signature;
|
// const u8 *sig = meta->acid->signature;
|
||||||
const size_t sig_size = sizeof(meta->acid->signature);
|
// const size_t sig_size = sizeof(meta->acid->signature);
|
||||||
const u8 *mod = GetAcidSignatureModulus(meta->npdm->signature_key_generation);
|
// const u8 *mod = GetAcidSignatureModulus(meta->npdm->signature_key_generation);
|
||||||
const size_t mod_size = fssystem::AcidSignatureKeyModulusSize;
|
// const size_t mod_size = fssystem::AcidSignatureKeyModulusSize;
|
||||||
const u8 *exp = fssystem::AcidSignatureKeyExponent;
|
// const u8 *exp = fssystem::AcidSignatureKeyExponent;
|
||||||
const size_t exp_size = fssystem::AcidSignatureKeyExponentSize;
|
// const size_t exp_size = fssystem::AcidSignatureKeyExponentSize;
|
||||||
const u8 *msg = meta->acid->modulus;
|
// const u8 *msg = meta->acid->modulus;
|
||||||
const size_t msg_size = meta->acid->size;
|
// const size_t msg_size = meta->acid->size;
|
||||||
const bool is_signature_valid = crypto::VerifyRsa2048PssSha256(sig, sig_size, mod, mod_size, exp, exp_size, msg, msg_size);
|
const bool is_signature_valid = 1; // Note: signature should always be valid for piracy sake
|
||||||
R_UNLESS(is_signature_valid || !IsEnabledProgramVerification(), ResultInvalidAcidSignature());
|
// R_UNLESS(is_signature_valid || !IsEnabledProgramVerification(), ResultInvalidAcidSignature());
|
||||||
|
|
||||||
meta->is_signed = is_signature_valid;
|
meta->is_signed = is_signature_valid;
|
||||||
return ResultSuccess();
|
return ResultSuccess();
|
||||||
|
Loading…
Reference in New Issue
Block a user