fdellanna f14d2a5be7 17549 | 2 months ago | |
---|---|---|
archives | 7 months ago | |
code | 2 months ago | |
scripts | 2 months ago | |
.gitignore | 8 months ago | |
README.md | 7 months ago |
This repository contains an implementation of Xoron cryptography. The software is currently not supported on Windows platforms.
The scripts can be used to generate the following outputs:
The static libraries for both 128 and 256 bits implementations (xrnlib-128.a, xrnlib-256.a).
The dynamic libraries for both 128 and 256 bits implementations (xrnlib-128.so, xrnlib-256.so).
The interactive command line interface, which internally loads the two dynamic libraries (xrnlib-cli).
The interactive command line interface to convert Xoron files to standard files and vice-versa (xrnconv-cli)
Python libraries (_xrnlib128.so, xrnlib128.py, _xrnlib256.so, xrnlib256.py).
Both C and Python code examples (examples-128, examples-256).
Tests for each implemented function (tests-128, tests-256).
The project can cloned using the following command:
git clone https://github.com/yourusername/xrn_lib.git
All the front facing scripts can be found in the scripts directory. All the scripts should be run from the scripts directory.
cd ./xrn_lib/scripts
All the scripts are written assuming "sudo" as the command for privilege escalation, and "apt" as package manager. To change this behavior you can edit the initialize_host.sh, install_dependencies.sh, install.sh and uninstall.sh scripts, changing the privilege_escalation, install_cmd, update_cmd, and user_developer variables accordingly.
We recommend to run the following commands in order as shown below:
cd ./xrn_lib/scripts
./install_dependencies.sh
./initialize_host.sh
python compile_code.py
./install.sh
source $HOME/.local/xoronos/source.sh
To install the required dependencies, you can run the install_dependencies.sh script as below.
./install_dependencies.sh
To initialize the host operating system you can run the following command.
./initialize_host.sh
The script is used to extract all the archives present in the repository, to create directories ($HOME/.local/xoronos, $HOME/.local/cache/xoronos), and copy files in the host operating system.
This step is required to generate working scripts and code examples while running the following commands, after the program has been installed
xrnlib-cli --example command
xrnlib-cli --script command
Furthermore, this step is required to compile documentation. We recommend each user to run the initialize_host.sh script, all the files can be removed later by running the uninstall.sh script.
To compile all the static and dynamic libraries for both C and Python, and all the outputs to install you can run:
python compile_code.py
The script will first compile a program to generate or restore secrets to be compiled in the program. The tool is used to generate:
The permutation key.
The initial encoding parameters.
If you type "generate" and "random" for both the options when prompted, which is recommended for new users, you will see on the screen the two keys that can be used to recompile in a deterministic way the Xoronos utilities.
The generated or restored secrets will be used to compile all the other outputs.
Programs that have different permutation keys will be by default incompatible with each other. This behavior can be circumvented by disabling the permutation layer at run time, for example if the xrnlib-cli program is installed you can specify the --permutation-conf -no-permutation-key option to disable the permutation layer. Programs that have different encoding parameters will be by incompatible if the --decoding-conf -compiled-param or --encoding-conf -compiled-param options are specified.
To replicate the compilation you can chose "restore" instead of "generate" while prompted, you will than requested to write up the secret keys as they appeared on the screen.
To install all the compiled outputs you can run the following command:
./install.sh
To remove all the files generated by the initialize_host.sh and install.st scripts on your system, you can run the uninstalling script as below.
./uninstall.sh
After the installation, all the Xoronos files can be found in the /etc/bash_completiiton.d/ /usr/lib/xoronos /usr/local/bin directories. If you have pandoc installed you can find the Xoronos template in /usr/share/pandoc/data/templates directory.
To get tab auto complete for the xrnlib-cli command, to update the PYTHONPATH, LD_LIBRARY_PATH, TEXMFHOME variables you can run the following command.
source $HOME/.local/xoronos/source.sh
You can run the command also from the script directory as:
source ./source.sh
This step is important to make available shared libraries in C, and the import xrnlib256 or the import xrnlib128 instructions in python, and to compile the documentation.
To clean the environment from Xoronos paths you can run the following command:
source $HOME/.local/xoronos/unsource.sh
You can run the command also from the script directory as:
source ./unsource.sh
To compile examples you can run the following command:
python compile_code.py examples-256
The compile_code.py removes all the outputs generated by previous compilations.
To get the list of examples you can run the following command.
python run.py
To run the first example you can run the following command.
python run.py 0
We provide only the 256 bits architecture for code examples. The code implementation for the 128 bits is identical to the provided 256 bits implementation. The directory for all the code examples can be found in xrn_lib/code/app/examples/c/src/.
To compile examples you can run the following command:
python compile_code.py swigpy-256
The compile_code.py removes all the outputs generated by previous compilations.
To get the list of examples you can run the following command.
python run.py
To run the first example you can run the following command.
python run.py 0
We provide only the 256 bits architecture for code examples. The code implementation for the 128 bits is identical to the provided 256 bits implementation. The directory for all the code examples can be found in xrn_lib/code/app/examples/py/.
To compile tests using a 256 bits architecture you can run the following command:
python compile_code.py tests-256
To compile tests using a 128 bits architecture you can run the following command:
python compile_code.py tests-128
To run all the tests you can run:
python run.py
To run the documentation you should first:
Install the required dependencies by editing and running the install_dependencies.sh script, changing the user_developer variable to "developer".
Initialize the host operating system by running the initialize_host.sh script.
Source the source.sh script to update the TEXMFHOME global variable.
A summary for all the scripts can be found below.
cd scripts
./install_dependencies.sh
./initialize_host.sh
sources ./sources.sh
To compile the documentation you can run the following command.
python compile_documentation.py
The result of the compilation can be found in the xrn_lib/build/doc directory.
cd ../build/doc
The best way to learn about the library is to use the xrnlib-cli tool.
To get the list of possible commands you can run one of the following instructions.
xrnlib-cli --help
xrnlib-cli --example
xrnlib-cli --script
The output of the previous three commands is a list of commands that can be run with comments.
The help command is used to get all the options and commands related to one instruction. One example can be found below.
xrnlib-cli --help encrypt-symmetric
The example command is used to get a working example related to one instruction.
xrnlib-cli --example encrypt-symmetric
The example command can be randomized as below.
xrnlib-cli --example -rnd encrypt-symmetric
The script command is used to generate a working script with the specified instruction included.
xrnlib-cli --scripts encrypt-symmetric
The scripts command can be randomized as below.
xrnlib-cli --scripts -rnd encrypt-symmetric
The code provided in this repository is licensed under the GPL3.
We do not accept direct external code contributions to the project. We are open for constructive feedback and bug reports. The best way to report a bug is to contact us directly.
For any question or feedback, you can contact us at support@xoronos.com