diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-haccrypto.spec | 227 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 229 insertions, 0 deletions
@@ -0,0 +1 @@ +/haccrypto-0.1.2.tar.gz diff --git a/python-haccrypto.spec b/python-haccrypto.spec new file mode 100644 index 0000000..fa176d3 --- /dev/null +++ b/python-haccrypto.spec @@ -0,0 +1,227 @@ +%global _empty_manifest_terminate_build 0 +Name: python-haccrypto +Version: 0.1.2 +Release: 1 +Summary: Nintendo Switch XTSN crypto for Python +License: MIT +URL: https://github.com/luigoalma/haccrypto +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/26/98/5b33610edb4a288f3ace3baeaceeae1ceb5e1bc571a72704c8bdd24b8f4e/haccrypto-0.1.2.tar.gz + + +%description +# haccrypto + +haccrypto is the Nintendo Switch XTSN crypto for Python, originally from ninfs and now standalone. + +## Usage + +You can import `XTSN` class and `parse_biskeydump` method from `haccrypto.crypto`. `XTSN` requires the crypt key and tweak when declaring an instance of it, it will provide you with the `encrypt` and `decrypt` methods. `parse_biskeydump` will provide you with crypt keys and tweaks from a bis key dump. + +### Example usage + +```python +# import the crypto module +from haccrypto.crypto import parse_biskeydump, XTSN + +# getting your bis keys +# returns a list of 4 lists, each list containing crypt and tweak, for bis keys 0 to 3 +with open("switch-keys.txt", "r") as o: + bis_keys = parse_biskeydump(o.read()) + +# lets use bis key 0's crypt and tweak +bis0xtsn = XTSN(bis_keys[0][0], bis_keys[0][1]) + +# lets see it in action +# lets encrypt a 0 filled buffer of bytes +# and let's say its from sector offset 0, for example sake +# default sector size = 0x200 +zeros = b'\0'*32 + +enc_zeros = bis0xtsn.encrypt(zeros, 0) + +# now lets decrypt, got to tell the same sector offset +# internal key and tweak are still the same +dec_zeros = bis0xtsn.decrypt(enc_zeros, 0) + +# this should be always true +# otherwise there's something wrong +# that can happen if the openssl dll provided is not proper, or something arbitrary happened +if zeros == dec_zeros: + print("XTSN ran correctly!") +else: + print("XTSN has made a bad crypto operation.") +``` + +# Licenses + +* `haccrypto` is under the MIT license. + * `hac/aes.cpp` and `hac/aes.hpp` are from @openluopworld's [aes_128](https://github.com/openluopworld/aes_128) commit `b5b7f55`, and uses the MIT License. + * `hac/_crypto.cpp` AES-XTS part by me(@luigoalma), based on @plutooo's [crypto module](https://gist.github.com/plutooo/fd4b22e7f533e780c1759057095d7896). + * `hac/crypto.py` written by @ihaveamac, falls under MIT license as well. + + + + +%package -n python3-haccrypto +Summary: Nintendo Switch XTSN crypto for Python +Provides: python-haccrypto +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-cffi +BuildRequires: gcc +BuildRequires: gdb +%description -n python3-haccrypto +# haccrypto + +haccrypto is the Nintendo Switch XTSN crypto for Python, originally from ninfs and now standalone. + +## Usage + +You can import `XTSN` class and `parse_biskeydump` method from `haccrypto.crypto`. `XTSN` requires the crypt key and tweak when declaring an instance of it, it will provide you with the `encrypt` and `decrypt` methods. `parse_biskeydump` will provide you with crypt keys and tweaks from a bis key dump. + +### Example usage + +```python +# import the crypto module +from haccrypto.crypto import parse_biskeydump, XTSN + +# getting your bis keys +# returns a list of 4 lists, each list containing crypt and tweak, for bis keys 0 to 3 +with open("switch-keys.txt", "r") as o: + bis_keys = parse_biskeydump(o.read()) + +# lets use bis key 0's crypt and tweak +bis0xtsn = XTSN(bis_keys[0][0], bis_keys[0][1]) + +# lets see it in action +# lets encrypt a 0 filled buffer of bytes +# and let's say its from sector offset 0, for example sake +# default sector size = 0x200 +zeros = b'\0'*32 + +enc_zeros = bis0xtsn.encrypt(zeros, 0) + +# now lets decrypt, got to tell the same sector offset +# internal key and tweak are still the same +dec_zeros = bis0xtsn.decrypt(enc_zeros, 0) + +# this should be always true +# otherwise there's something wrong +# that can happen if the openssl dll provided is not proper, or something arbitrary happened +if zeros == dec_zeros: + print("XTSN ran correctly!") +else: + print("XTSN has made a bad crypto operation.") +``` + +# Licenses + +* `haccrypto` is under the MIT license. + * `hac/aes.cpp` and `hac/aes.hpp` are from @openluopworld's [aes_128](https://github.com/openluopworld/aes_128) commit `b5b7f55`, and uses the MIT License. + * `hac/_crypto.cpp` AES-XTS part by me(@luigoalma), based on @plutooo's [crypto module](https://gist.github.com/plutooo/fd4b22e7f533e780c1759057095d7896). + * `hac/crypto.py` written by @ihaveamac, falls under MIT license as well. + + + + +%package help +Summary: Development documents and examples for haccrypto +Provides: python3-haccrypto-doc +%description help +# haccrypto + +haccrypto is the Nintendo Switch XTSN crypto for Python, originally from ninfs and now standalone. + +## Usage + +You can import `XTSN` class and `parse_biskeydump` method from `haccrypto.crypto`. `XTSN` requires the crypt key and tweak when declaring an instance of it, it will provide you with the `encrypt` and `decrypt` methods. `parse_biskeydump` will provide you with crypt keys and tweaks from a bis key dump. + +### Example usage + +```python +# import the crypto module +from haccrypto.crypto import parse_biskeydump, XTSN + +# getting your bis keys +# returns a list of 4 lists, each list containing crypt and tweak, for bis keys 0 to 3 +with open("switch-keys.txt", "r") as o: + bis_keys = parse_biskeydump(o.read()) + +# lets use bis key 0's crypt and tweak +bis0xtsn = XTSN(bis_keys[0][0], bis_keys[0][1]) + +# lets see it in action +# lets encrypt a 0 filled buffer of bytes +# and let's say its from sector offset 0, for example sake +# default sector size = 0x200 +zeros = b'\0'*32 + +enc_zeros = bis0xtsn.encrypt(zeros, 0) + +# now lets decrypt, got to tell the same sector offset +# internal key and tweak are still the same +dec_zeros = bis0xtsn.decrypt(enc_zeros, 0) + +# this should be always true +# otherwise there's something wrong +# that can happen if the openssl dll provided is not proper, or something arbitrary happened +if zeros == dec_zeros: + print("XTSN ran correctly!") +else: + print("XTSN has made a bad crypto operation.") +``` + +# Licenses + +* `haccrypto` is under the MIT license. + * `hac/aes.cpp` and `hac/aes.hpp` are from @openluopworld's [aes_128](https://github.com/openluopworld/aes_128) commit `b5b7f55`, and uses the MIT License. + * `hac/_crypto.cpp` AES-XTS part by me(@luigoalma), based on @plutooo's [crypto module](https://gist.github.com/plutooo/fd4b22e7f533e780c1759057095d7896). + * `hac/crypto.py` written by @ihaveamac, falls under MIT license as well. + + + + +%prep +%autosetup -n haccrypto-0.1.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-haccrypto -f filelist.lst +%dir %{python3_sitearch}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 0.1.2-1 +- Package Spec generated @@ -0,0 +1 @@ +f043060f2fe6b8701a5ad80bd226e7fe haccrypto-0.1.2.tar.gz |