Skip to content

Instantly share code, notes, and snippets.

@Anaminus
Last active September 21, 2023 20:18
Show Gist options
  • Save Anaminus/245a7752e49d2fb4baa72301e800dbf9 to your computer and use it in GitHub Desktop.
Save Anaminus/245a7752e49d2fb4baa72301e800dbf9 to your computer and use it in GitHub Desktop.
// Structure and purpose based on theory. Nothing yet verified.
// keyIndex is an index known internally by Roblox, corresponding to a private
// key. An FFlag configures Studio to select a specific index.
//
// Possible FFlag candidate is "KeyRing". Currently, it has a value of 10, while
// DataModelPatch.rbxm contains signatures for indices 9 to 12.
struct Signature {
u32 version; // Zeroed. Possibly version reserved for format changes.
u32 keyIndex; // Possibly index of private key.
u32 reserved; // Zeroed. Possibly high bits of keyIndex.
u32 length; // Length of signature value.
u8 value[length]; // Possibly the signature value itself.
};
// Contains signatures of signed data for multiple private keys.
struct Signatures {
u32 length;
Signature signatures[length];
};
// Standard RBXL chunk format. Typically uncompressed.
struct ChunkSIGN {
char sig[4];
if (sig != "SIGN") {
error("entrypoint must start at SIGN chunk signature");
}
u32 compressedLength;
u64 uncompressedLength;
Signatures payload;
};
// For DataModelPatch.rbxm of Studio version-2ba85a75f8114838
ChunkSIGN main @ 0x0058C81D;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment