diff --git a/Ryujinx.HLE/HOS/Services/Ro/Types/NRRCertification.cs b/Ryujinx.HLE/HOS/Services/Ro/Types/NRRCertification.cs new file mode 100644 index 0000000000..a95f44f8b2 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Ro/Types/NRRCertification.cs @@ -0,0 +1,23 @@ +using System.Runtime.InteropServices; + +namespace Ryujinx.HLE.HOS.Services.Ro +{ + [StructLayout(LayoutKind.Explicit, Size = 0x220)] + unsafe struct NRRCertification + { + [FieldOffset(0)] + public ulong ApplicationIdMask; + + [FieldOffset(0x8)] + public ulong ApplicationIdPattern; + + [FieldOffset(0x10)] + public fixed byte Reserved[0x10]; + + [FieldOffset(0x20)] + public fixed byte Modulus[0x100]; + + [FieldOffset(0x120)] + public fixed byte Signature[0x100]; + } +} diff --git a/Ryujinx.HLE/HOS/Services/Ro/Types/NrrHeader.cs b/Ryujinx.HLE/HOS/Services/Ro/Types/NrrHeader.cs index ec06feb436..af692628e3 100644 --- a/Ryujinx.HLE/HOS/Services/Ro/Types/NrrHeader.cs +++ b/Ryujinx.HLE/HOS/Services/Ro/Types/NrrHeader.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; namespace Ryujinx.HLE.HOS.Services.Ro { @@ -8,31 +8,37 @@ namespace Ryujinx.HLE.HOS.Services.Ro [FieldOffset(0)] public uint Magic; + [FieldOffset(0x4)] + public uint CertificationSignatureKeyGeneration; // 9.0.0+ + + [FieldOffset(0x8)] + public ulong Reserved; + [FieldOffset(0x10)] - public ulong TitleIdMask; - - [FieldOffset(0x18)] - public ulong TitleIdPattern; - - [FieldOffset(0x30)] - public fixed byte Modulus[0x100]; - - [FieldOffset(0x130)] - public fixed byte FixedKeySignature[0x100]; + public NRRCertification Certification; [FieldOffset(0x230)] public fixed byte NrrSignature[0x100]; [FieldOffset(0x330)] - public ulong TitleIdMin; + public ulong TitleId; [FieldOffset(0x338)] public uint NrrSize; + [FieldOffset(0x33C)] + public byte Type; // 7.0.0+ + + [FieldOffset(0x33D)] + public fixed byte Reserved2[0x3]; + [FieldOffset(0x340)] public uint HashOffset; [FieldOffset(0x344)] public uint HashCount; + + [FieldOffset(0x348)] + public ulong Reserved3; } -} \ No newline at end of file +}