Arcadible ROM
An Arcadible ROM is a ZIP file with a special header and the .arc
file extension, used by Arcadible, the Arcadible CLI, and a number of other systems for the distribution and installation of Arcadible packages.
ROM Header
The header contains the author's public key and the ROM's signature. The signature is generated from the ZIP file using SHA-1 with the author's private key. The header requires a little-endian byte ordering with 4-byte alignment. The following table describes the fields of the .arc
header in order:
Field | Type | Length | Value | Description |
---|---|---|---|---|
magic number | char[] | 32 bits | Ar18 | Arcadible requires this constant at the beginning of every .arc package. |
version | unsigned int | 32 bits | 1 | The version of the *.arc file format used (currently 1). |
public key length | unsigned int | 32 bits | pubkey.length | The length of the RSA public key in bytes. |
signature length | unsigned int | 32 bits | sig.length | The length of the signature in bytes. |
public key | byte[] | pubkey.length | pubkey.contents | The contents of the author's RSA public key, formatted as an X.509 SubjectPublicKeyInfo block. |
signature | byte[] | sig.length | sig.contents | The signature of the ZIP content using the author's private key. The signature is created using the RSA algorithm with the SHA-1 hash function. |
ROM Contents
Every ROM must contain, at the very minimum, a root-level Arcadible ROM Manifest, which describes essential information about its' contents. The ROM's ZIP file is appended to the *.arc
package after the header. This should be the same ZIP file that the signature in the header was generated from.