Each calculator has a certificate which is stored on the certification page. This is page 1E on the 83P, 3E on the 84P regular, and 7E on the 83P SE and 84P SE. The certification page is actually two physical sectors of the flash chip, each 8 KB in size. Only one sector is used for the certificate at a time, and new certificates are loaded into the currently unused sector.
Every signed calculator variable has a header; this includes both the OS and apps. The header always comes before the variable and tells important information like the size of the variable and also the developer key used to sign it. The reason that the certificate and headers are grouped together is because they are both made up of fields.
Each field has the same general format. They all include the type of field, the size of the field, and usually, data.
The general format is: TT TS [SS] [SS] [SS] [SS] [SS] [DD] [DD] [DD] ... [DD]
Where T is the type, S is the size, D is data, and bracketed bytes are optional.
These 12 bits are where the name of the field originates.
- Certificate start with a 0, then the group number, and finally the field within that group.
- OS and app header fields usually start with 80 and their specific type is the final nibble.
The size bits indicate the number of bytes in the data field. The fist nibble can be any number from 0-F but D, E, and F are special case.
- 0-C - This is the literal size of the data. If the nibble is 5, there are five data bytes following.
- D - This means that there is a one byte size following.
- E - This means that there are two size bytes following and the size of the data is stored in big endian.
- F - F is rarely used. It is always the size byte of the initial field and indicates four size bytes following in big endian. There is really no reason to use F other than starting an OS or an app.
The data for the field is purely data. It's format depends on the field type. All that is really important is that the amount of data is equal to the amount indicated by the size bits.
The certificate and header and nothing more than several fields nested within each other. Here is a list of the known fields.
Certificates are split into header fields similar to application header fields. Field types are as follows:
- 010 - certificate revision number
- 030 - certification group
- 032 - date stamp
- 040 - calculator ID number
- 041 - validation number
- 050 - about screen data
- 051 - about screen text
- 070 - certificate list group
- 071 - certificate ID type
- 073 - certificate key/sig
- 0A1 - calculator ID number
The calculator ID number is organized as follows: PPHSS-SSSSS-VVVV
- P - product number
- H - hardware revision
- S - serial number
- V - validation code
Product numbers are as follows:
- 01 - TI-92 Plus
- 02 - TI-73
- 03 - TI-89
- 04 - TI-83 Plus
- 08 - Voyage 200
- 09 - TI-89 Titanium
- 0A - TI-84 Plus
- 0E - TI-Nspire
Some entry points useful for working with certificates: