# Readme pynkode is a tutorial of how nkode works. There are jupyter notebooks in /notebooks covering these topics: - dispersion - nkode enrollment, login, and renewal - split shuffle ## Installation - Python version 3.10 or greater is required - Install pyenv or conda for environment management ### Option 1: Using conda ```bash # Create a new conda environment named pynkode conda create -n pynkode python=3.10 # Activate the environment conda activate pynkode # Install the requirements pip install -r requirements.txt ``` ### Option 2: Using pyenv ```bash # Install Python 3.10 using pyenv pyenv install 3.10.0 # Create a virtualenv named pynkode pyenv virtualenv 3.10.0 pynkode # Set the local version to pynkode pyenv local pynkode # Install the requirements pip install -r requirements.txt ``` ## Starting a Jupyter Notebook ### Option 1: Using classic Jupyter Notebook ```bash # Ensure your environment is activated # For conda: conda activate pynkode # For pyenv: (should be automatic if in the directory) # Start the Jupyter Notebook server jupyter notebook ``` ### Option 2: Using JupyterLab ```bash # Ensure your environment is activated # Start JupyterLab jupyter lab ``` ## Explore the Docs You can find documentation in the [docs](docs) folder. 1. [Enrollment](docs/enrollment_diagram.md) 2. [Login](docs/login_diagram.md) 3. [nKode Cipher](docs/encipher_decipher_renew_nkode.md#nkode-cipher) 4. [nKode Validation](docs/encipher_decipher_renew_nkode.md#validate-nkode) 5. [Renew](docs/encipher_decipher_renew_nkode.md#renew-nkode) ### Tutorials You can find tutorials in the [notebooks](notebooks) directory. Recommended order: 1. [Enrollment_Login_Renewal_Simplified.ipynb](notebooks/Enrollment_Login_Renewal_Simplified.ipynb) - Learn the basics of the nKode API 2. [Enrollment_Login_Renewal_Detailed.ipynb](notebooks/Enrollment_Login_Renewal_Detailed.ipynb) - Learn the nKode API in detail 3. [Dispersion.ipynb](notebooks/Dispersion.ipynb)- Understand the basic concepts of dispersion in nkode 4. [Split_Shuffle.ipynb](notebooks/Split_Shuffle.ipynb) - Explore the split shuffle functionality