Skip to content

denisign-ph/denisign-native

Repository files navigation

denisign-native

A C++20 implementation of the denisign algorithm for embedding ML-DSA signatures in JPEG images for non-repudiation cryptography and deniable steganography purposes.

Building and Running

Make sure you have libjpeg or libjpeg-turbo installed.

I recommend using libjpeg-turbo. Download and install it from here.

Building

If you are using Jetbrains CLion, you can run denisign_native configuration instead, but you still have to make sure to set the environment variable or the dynamic library of libjpeg might not be found.

On Linux,

#Specify libjpeg binaries location
export JPEG_ROOT="/find/where/your/libjpeg/is/installed/"

#Build static library
cmake --target denisign

On Windows CMD,

#Specify libjpeg binaries location
set JPEG_ROOT="/find/where/your/libjpeg/is/installed/"

#Build static library
cmake.exe --target denisign

Building for Android (On Windows WSL)

Default Parameters:

  • NDK 29.0.14033849
  • Android API 24
  • ABIs "arm64-v8a" "armeabi-v7a" "x86" "x86_64"

Requirements:

  • CMake (Installed using Android Studio or with a standalone Android SDK).
  • Android SDK path set to ANDROID_HOME system environment variable.
  • Windows Subsystem for Linux (WSL).

Run ./wsl_build_android.sh using the WSL shell to build all the ABIs. The build outputs will be in androidLibs and androidHeaders directories. Copy them to your Android JNI project.

If you want to change the NDK version, change the value set in the variable NDK_VERSION.

Building for Android (On Windows CMD)

Default Parameters:

  • NDK 29.0.14033849
  • Android API 24
  • ABIs arm64-v8a armeabi-v7a x86 x86_64

Requirements:

  • CMake (Installed using Android Studio or with a standalone Android SDK).
  • Android SDK path set to ANDROID_HOME system environment variable.

Run .\win_build_android.bat using the CMD shell to build all the ABIs. The build outputs will be in androidLibs and androidHeaders directories. Copy them to your Android JNI project.

If you want to change the NDK version, change the value set in the variable NDK_VERSION.

Running

If you are using Jetbrains CLion, you can run test_runner configuration instead, but you still have to make sure to set the environment variable or the dynamic library of libjpeg might not be found.

On Linux,

#Specify libjpeg binaries location
export JPEG_ROOT="/find/where/your/libjpeg/is/installed/"

#Build executable
cmake --build ./cmake-build-debug --target test_runner

#Run executable
./cmake-build-debug/test_runner

On Windows,

#Specify libjpeg binaries location
set JPEG_ROOT="/find/where/your/libjpeg/is/installed/"

#Build executable
cmake.exe --build ./cmake-build-debug --target test_runner

#Run executable
./cmake-build-debug/test_runner.exe

Contributors

Ron Lauren Hombre (ronhombre)

Main contributor, project maintainer, and research lead for Denisign.

Reinier Anthony Casimiro (reinieeeer)

Contributor for get_ac and part of the research team for Denisign.

John Michael Almazan (jm-almazan)

Contributor for retrieve_bytes and part of the research team for Denisign.

Sander Melvert Gervacio (mlvrt-ph)

Contributor for embed_bytes and part of the research team for Denisign.

Licenses

Mozilla Public License 2.0

Solely for cjpeglib directory in this project attributed to Martin Benes from the University of Innsbruck and doesn't apply to other parts of this project that use the code stored in that directory.

GPLv2

Denisign Algorithm to embed ML-DSA signatures into JPEG images using the MDE algorithm.
Copyright (C) 2025  Ron Lauren Hombre, Sander Melvert Gervacio, Reinier Anthony Casimiro, John Michael Almazan

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, see
<https://www.gnu.org/licenses/>.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •