jbop1626 / ninty-233

C99 library of ECC operations for the Nintendo Wii and iQue Player

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ninty-233

ninty-233 is a C99 library for ECC operations using sect233r1 / NIST B-233, the curve used in the iQue Player and Nintendo Wii.

It can be used for ECDH (used to create some encryption keys on the iQue Player) and ECDSA signing/verification (used to sign game saves on both consoles and to sign recrypt.sys on the iQue Player).

ninty-233 should NOT be expected to be secure; it is intended to be used as a tool for working with keys and/or data that are already known (made obvious by the fact that there is no function provided for generating keys). In its current state, I expect it to be vulnerable to various attacks (e.g. the GF(2^m) element and elliptic curve point arithmetic operations are not resistant to timing analysis). The generate_k() function in particular is not cryptographically secure, and is simply a trivial implementation that will allow, for example, signing homebrew apps.

ninty-233 currently requires an architecture with unsigned integer types of exactly 8 and 32 bits - that is, both uint8_t and uint32_t must be defined. This likely isn't a problem for literally anyone, but it's probably good to know before compiling for a calculator or something.

Arbitrary-precision arithmetic is done using the GNU MP library in the form of mini-gmp, a standalone subset of GMP.

The SHA1 implementation is a slightly modified version of the public domain WjCryptLib implementation from WaterJuice et al.

ninty-233 is licensed under the GPLv3 or (at your option) any later version (and I've opted to use GMP under the same license).

About

C99 library of ECC operations for the Nintendo Wii and iQue Player

License:GNU General Public License v3.0


Languages

Language:C 98.9%Language:Makefile 1.1%