From a8d5432fd5ba7d2f47a6b76f96abd3d57c7fbb6e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 1 Feb 2016 11:52:57 +0100 Subject: [PATCH] init --- LICENSE | 54 ++++++++++++++++++++++++++++++++++ README.md | 3 ++ assets/colorwheel.png | Bin 0 -> 42933 bytes assets/font.png | Bin 0 -> 951 bytes assets/trezor.png | Bin 0 -> 3304 bytes docs/README.md | 3 ++ docs/api.md | 67 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 127 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/colorwheel.png create mode 100644 assets/font.png create mode 100644 assets/trezor.png create mode 100644 docs/README.md create mode 100644 docs/api.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..65e30d3d4f --- /dev/null +++ b/LICENSE @@ -0,0 +1,54 @@ +TREZOR LICENSE +============== + +This license governs use of the accompanying software. If you use the software, +you accept this license. If you do not accept the license, do not use the +software. + +1. Definitions +-------------- + +The terms "reproduce," "reproduction" and "distribution" have the same meaning +here as under U.S. copyright law. + +"You" means the licensee of the software. + +"Your company" means the company you worked for when you downloaded the +software. + +"Reference use" means use of the software within your company as a reference, +in read only form, for the sole purposes of debugging your products, +maintaining your products, or enhancing the interoperability of your products +with the software, and specifically excludes the right to distribute the +software outside of your company. + +"Licensed patents" means any Licensor patent claims which read directly on the +software as distributed by the Licensor under this license. + +2. Grant of Rights +------------------ + +(A) Copyright Grant - Subject to the terms of this license, the Licensor grants +you a non-transferable, non-exclusive, worldwide, royalty-free copyright +license to reproduce the software for reference use. + +(B) Patent Grant - Subject to the terms of this license, the Licensor grants +you a non-transferable, non-exclusive, worldwide, royalty-free patent license +under licensed patents for reference use. + +3. Limitations +-------------- + +(A) No Trademark License - This license does not grant you any rights to use +the Licensor's name, logo, or trademarks. + +(B) If you begin patent litigation against the Licensor over patents that you +think may apply to the software (including a cross-claim or counterclaim in a +lawsuit), your license to the software ends automatically. + +(C) The software is licensed "as-is." You bear the risk of using it. The +Licensor gives no express warranties, guarantees or conditions. You may have +additional consumer rights under your local laws which this license cannot +change. To the extent permitted under your local laws, the Licensor excludes +the implied warranties of merchantability, fitness for a particular purpose and +non-infringement. diff --git a/README.md b/README.md new file mode 100644 index 0000000000..dfb10214bf --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +#TREZOR OS + +WIP diff --git a/assets/colorwheel.png b/assets/colorwheel.png new file mode 100644 index 0000000000000000000000000000000000000000..713e4876662e63271352fd6e65837d9cd0a451e6 GIT binary patch literal 42933 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 B!)5>g literal 0 HcmV?d00001 diff --git a/assets/font.png b/assets/font.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa147cf3a2a0aaab7b11ae225f8b0e181104ebc GIT binary patch literal 951 zcmV;o14#UdP)005u@0{{R3_Mwly00009P)t-s00030 z0RR90|G6Au?*IS;X-PyuR9M69md$GGFc5|1fWh`&`?O%V>C@;222?$b69_nWuf0<+ z#D2DGO^iDLI{xW+Vjrt0nmx8;6V73%g-9qrV6#Q5U z_IE*A__rLKMzB}^UDVqg%~mf1ty<{OZTt^=T%P07s$Ks8e1&&lG;1hgZF(8{}l)M)@K zj~};WQU?9hW2N02W$AYwjestKwYJ*;jyawfOu4pMXxmW5p~tGzDJUMXSbNt~&&A-? zQ_o--tM<=Ort-2$Ca0^0kxju`&H;(89Quv$L1o%#Fz!H&-gi`ZJYnq+z=pwsum;dZ zux5|g^*n$nZ^w~0{75d3pv3y4#hH`%5iHnaLv|NI38(^yMVKUnjvnXWbpkr}XvZA8 zp=v!=4Nx+X(6MUv2mzuBUrbAT3^xXQ@%RK~O3S;4G8K!Ww3U72I!uE)_Pu^f?S@p5 z8j+$4rtslOz#~9&)j%3jia`}W=iy03uwZbjHv(oi9uJ=$-xyR{4IYzwpm?lxCScLt z_c+V3DkaCE>VlsH+;G)Oz!O*9x3{9eh$y`n52SyFGDvU3Ii@5#io}QPxkq*cbLJ$t zXBy5P2f3YrICUN%4qX#o}~z=FZc6huCV&!KS?VYUI3sxMqMhN6<5X;=!hhG^6d zQb;q&Tniq5UYU}6vEZYC0nnjLdBy2DkdcYow{lR_X%6P`Rp$B(#N8lWh#|oZm{2&G z;!!4*D&;G{VIYdhX*l5r9-jb@seE9MW6vaWa5o3d=#g_ATH#xdLyqjxjUEpJ7;~Jq zOUJcI&q)34SoO~<6Qc6G%wrNb6fu*ObL2t#{usom#~?2wC_^G6bYT)V>Z-$j=s6e` zIl{2lbpRW0_y$J&dISr;P6R|tp$mCZ9X~_Aj-dF8a+JFW9!u`H1ou9A zMlK{=WV5OTl&ZT))j^&%{HxIa!hg+=%nCjRS7laZ)(u~kS(RCpS(RCpS(RCpS;1dd Z=0A;f0wlv-MqB^@002ovPDHLkV1nqlx8MK( literal 0 HcmV?d00001 diff --git a/assets/trezor.png b/assets/trezor.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ac1a937f7dbfac1287dd113eb68ff9a6d47b55 GIT binary patch literal 3304 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 L(^aj!WgYe(P(LVO literal 0 HcmV?d00001 diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..cd1b9ad9f7 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +#TREZOR OS documentation + +* [TREZOR OS API](api.md) diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 0000000000..c5a67dbf9e --- /dev/null +++ b/docs/api.md @@ -0,0 +1,67 @@ +#TREZOR OS API + +##trezor.crypto + +###trezor.crypto.ed25519 + +``` +def to_public(bytes[32] secret_key) => bytes[32] public_key + +def sign(bytes message, bytes[32] secret_key, bytes[32] public_key = None) => bytes[64] signature + +def verify(bytes message, bytes[32] public_key, bytes[64] signature) => bool valid +``` + +###trezor.crypto.func + +``` +aes() +base58() +hmac() +sha256() +ripemd160() +pbkdf2() +``` + +###trezor.crypto.hd + +###trezor.crypto.mnemonic + +###trezor.crypto.nistp256 + +``` +def to_public() + +def sign() + +def verify() +``` + +###trezor.crypto.secp256k1 + +``` +def to_public() + +def sign() + +def verify() +``` + +##trezor.hw + +###trezor.hw.button + +###trezor.hw.display + +##trezor.qrenc + +``` +enum QRLEVEL { + L = 0, + M = 1, + Q = 2, + H = 3, +} + +def encode(bytes source, qrlevel level = QRLEVEL.H) => bool[][] qrcode +```