summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-haccrypto.spec227
-rw-r--r--sources1
3 files changed, 229 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..7b97134 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..6f8ea8b
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+f043060f2fe6b8701a5ad80bd226e7fe haccrypto-0.1.2.tar.gz