%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 - 0.1.2-1 - Package Spec generated