diff --git a/.gitmodules b/.gitmodules
index df2855a2ba2a61524e2da190e208fb8574d5ec1c..a21dc049a14f22cdefc6a9cd09fc38c3a542404c 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,6 +4,9 @@
 [submodule "lib/micropython/micropython-lib"]
 	path = lib/micropython/micropython-lib
 	url = https://github.com/micropython/micropython-lib.git
-[submodule "lib/tiny-AES-c/tiny-AES-c"]
-	path = lib/tiny-AES-c/tiny-AES-c
+[submodule "lib/crypto/tiny-AES-c"]
+	path = lib/crypto/tiny-AES-c
 	url = https://github.com/kokke/tiny-AES-c
+[submodule "lib/crypto/SHA256"]
+	path = lib/crypto/SHA256
+	url = https://github.com/ilvn/SHA256
diff --git a/bootstrap.sh b/bootstrap.sh
index 0b8fa173990c4e4697220fe071e770c45c8826a3..f8fb29bfb7dd948006697347a19ac061986af66f 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -4,7 +4,7 @@ set -xe
 cd "$(dirname "$0")"
 test -d build/ && rm -r build/
 
-# Get external libs (MicroPython, tiny-AES-c)
+# Get external libs (MicroPython, tiny-AES-c, SHA256)
 git submodule update --init ./lib
 meson --cross-file card10-cross.ini build/ "$@"
 
diff --git a/epicardium/meson.build b/epicardium/meson.build
index f82d56bcdebccbb90918b6945af89c85b83ce604..1966750b038090dfd7a5ca7b35405256efbc9e18 100644
--- a/epicardium/meson.build
+++ b/epicardium/meson.build
@@ -91,7 +91,7 @@ elf = executable(
   l0der_sources,
   ble_sources,
   version_hdr,
-  dependencies: [libcard10, max32665_startup_core0, maxusb, libff13, ble, bhy1, libtinyAESc],
+  dependencies: [libcard10, max32665_startup_core0, maxusb, libff13, ble, bhy1, libcrypto],
   link_with: [api_dispatcher_lib, freertos],
   link_whole: [max32665_startup_core0_lib, board_card10_lib, newlib_heap_lib],
   include_directories: [freertos_includes],
diff --git a/lib/crypto/SHA256 b/lib/crypto/SHA256
new file mode 160000
index 0000000000000000000000000000000000000000..1c9e3886f69f9ca83c1af49968d8e4389035ff44
--- /dev/null
+++ b/lib/crypto/SHA256
@@ -0,0 +1 @@
+Subproject commit 1c9e3886f69f9ca83c1af49968d8e4389035ff44
diff --git a/lib/tiny-AES-c/meson.build b/lib/crypto/meson.build
similarity index 63%
rename from lib/tiny-AES-c/meson.build
rename to lib/crypto/meson.build
index 159f0ddb12cbec690ac4fa1500159735b3f26fd3..d5eea1f34f6d95423306a4931ff01fbf709b331a 100644
--- a/lib/tiny-AES-c/meson.build
+++ b/lib/crypto/meson.build
@@ -4,18 +4,17 @@ includes = include_directories(
 
 sources = files(
   './tiny-AES-c/aes.c',
+  './SHA256/mark2/sha256.c',
 )
 
 lib = static_library(
-  'tinyAESc',
+  'crypto',
   sources,
   include_directories: includes,
-  #dependencies: [periphdriver, mx25lba],
   c_args: '-w',
 )
 
-libtinyAESc = declare_dependency(
+libcrypto = declare_dependency(
   include_directories: includes,
   link_with: lib,
-  #dependencies: [periphdriver, mx25lba],
 )
diff --git a/lib/tiny-AES-c/tiny-AES-c b/lib/crypto/tiny-AES-c
similarity index 100%
rename from lib/tiny-AES-c/tiny-AES-c
rename to lib/crypto/tiny-AES-c
diff --git a/lib/meson.build b/lib/meson.build
index 3138f5407013dbbf5f87dc10dfe181d96733de79..a51f0c69fca1d1dbe75ad842ef8ce71491e4a81d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -10,7 +10,7 @@ subdir('./gfx/')
 subdir('./FreeRTOS/')
 subdir('./FreeRTOS-Plus/')
 subdir('./micropython/')
-subdir('./tiny-AES-c/')
+subdir('./crypto/')
 
 subdir('./card10/')
 subdir('./mx25lba/')