Skip to content

abbrev/rabbitsign

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RabbitSign 2.1

RabbitSign is a free implementation of the algorithms used to digitally sign software for the Texas Instruments TI-73, TI-83 Plus, TI-84 Plus, TI-89, TI-92 Plus, and Voyage 200 calculators.

RabbitSign can handle a variety of common input file formats, including GraphLink files as well as "plain" hex and binary files. It is quite a lot faster than the official application signing programs from TI, and unlike those programs, does not have any arbitrary limitations on file names or contents. It also has the ability (unique as far as I know) to re-sign applications that have been signed previously.

Finally, of course, RabbitSign is free software, and should be able to run on any modern system with an ANSI C compiler.

I have NOT received any assistance from TI on this, nor have I attempted to reverse-engineer any of their programs. The details of the application format and signing algorithm were determined purely by my analysis of the output of TI's and Peter-Martijn Kuipers' appsign tools.

Installing

RabbitSign makes extensive use of high-precision integer arithmetic, which can be made substantially faster through the use of the GNU MP library (http://gmplib.org/). Installing this library is optional but recommended. (Users of Debian, Ubuntu, and related systems will need the libgmp3-dev package; users of RPM-based distributions will need gmp-devel. GMP version 4.1 or later is required.)

To compile, test, and install RabbitSign, from the main package directory, run:

./configure

make

make check

sudo make install

This will install RabbitSign in /usr/local/bin. To install in a different location, specify the '--prefix' argument when you run configure. Run './configure --help' for more information.

Using

In order to sign an application or OS, you need to have an appropriate signing key. The signing key for "shareware" TI-83/84 Plus apps, 0104.key, is included in this package. (The corresponding keys for the TI-73, TI-89, and TI-92 Plus have not been released, so only TI can sign applications for those calculators.)

In addition, this package includes an unofficial signing key, 05.key, which can be used for TI-83/84 Plus operating systems. To install an OS that has been signed using this key, you must first install the corresponding certificate, which can be done using Brandon Wilson's Free83P utility.

To sign a hex or binary app file, use a command such as

rabbitsign -g myapp.hex

This will search for the key specified in the app header (using the 801x field.) It will then sign the app and write the result in GraphLink format to myapp.8xk.

To use a specific key file, use the -k option:

rabbitsign -g -k foo.key myapp.hex

Run 'man rabbitsign' for more information.

A word of caution

If you do somehow acquire a valid signing key for the TI-89 or TI-92 Plus, you should be able to use RabbitSign to sign applications for those calculators. However, keep in mind that on those calculators, it is possible (in fact, quite easy) to seriously break the system merely by installing a buggy Flash app. So be sure to test your app in an emulator before trying to install it on a real calculator!

(Of course, testing your app before installing it is a good idea on the TI-83 Plus as well!)

History

version 2.1 -- July 25, 2009

  • Added the unofficial "05" key, which can be used in combination with Brandon Wilson's Free83P to sign TI-83/84 Plus OSes.

version 2.0 -- July 19, 2009

  • Added the RSA algorithm; RabbitSign now allows signing and validating OS upgrades and 68k applications. (You still need, of course, to obtain a valid signing key somehow.)
  • RabbitSign now checks that no app page begins with FFh. (App pages that begin with FFh will cause problems when defragmenting.)
  • Added the -P option, which allows you to sign apps that come very close to filling the last page. (This means adding an extra page to hold the signature. It's still not a good idea most of the time.)
  • Added the -f option, which forces apps to be signed even if they contain problematic data or headers.
  • The 0104 public and private keys, along with various other known public keys, are now included in the RabbitSign library; key files are no longer required (you can still use your own key files, if necessary.)
  • Improved performance a little bit when using mpz.c.
  • mpz.c will now work correctly on 64-bit (and larger) systems.
  • Major API changes to provide various new features, and generally to make RabbitSign easier to integrate into other software.

version 1.2 -- July 24, 2007

  • Avoid setting app length to 55 modulo 64. (Such apps do not validate correctly on the TI-73 or 83+ BE, due to a bug in the boot code.)

version 1.1 -- May 31, 2007

  • OMIT_FINAL_NEWLINE and PAD_OUTPUT are now default, to work around bugs in tifiles2 and TI-Connect respectively.
  • Padding added won't span a page boundary.
  • Corrected the warning message when re-signing a too-long app.
  • Just in case it wasn't fast enough, it now uses mpz_gcdext(). Try it with Niels Möller's subquadratic GCD code...
  • Just in case it was too fast, a set of simple, slow arithmetic routines is included for people too lazy to get GMP.
  • Unless suppressed with -q, warnings result in an exit status of 1.
  • Test code now compiles on old and/or dumb systems that provide rand() and not random().

version 1.0 -- February 3, 2006

  • First public release.

Legal stuff

RabbitSign is copyright (C) 2004-2009 Benjamin Moody.

This program is free software; you can redistribute and/or modify it under the terms of the GNU General Public License version 3 or later. There is no warranty of any kind. See the included 'COPYING' for details.

The MD5 calculating code (md5.c and md5.h) comes from GNU md5sum, which was written by Ulrich Drepper and is copyright 1995-96 by the Free Software Foundation. GNU md5sum is part of the GNU Coreutils package; see http://www.gnu.org/software/coreutils/ for more information.

Author

Benjamin Moody / floppusmaximus@users.sf.net

Bug reports, please.

About

RabbitSign by Benjamin Moody

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published