aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2024-07-16 17:21:44 +0200
committerJ08nY2024-07-16 17:21:44 +0200
commit835aaf27b0d19a22e753b060142aa992ebb648eb (patch)
tree8d9329fc28b3df00aa999bfc2a0edd7073035a13
parent47d7ca6738909ff7e897acad3e2b97b71fa31c90 (diff)
downloadpyecsca-835aaf27b0d19a22e753b060142aa992ebb648eb.tar.gz
pyecsca-835aaf27b0d19a22e753b060142aa992ebb648eb.tar.zst
pyecsca-835aaf27b0d19a22e753b060142aa992ebb648eb.zip
-rw-r--r--MANIFEST.in1
-rw-r--r--docs/index.rst8
-rw-r--r--docs/installation.rst90
3 files changed, 86 insertions, 13 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index f3de4f2..9cca32a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,4 +1,5 @@
include README.md
+include docs/_static/logo_black_full.png
graft pyecsca/ec/efd/
graft pyecsca/ec/std/
global-exclude .git*
diff --git a/docs/index.rst b/docs/index.rst
index 67fd929..34abac6 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -19,9 +19,7 @@ pyecsca [pɪɛtska]
**pyecsca** aims to fill a gap in SCA tooling for Elliptic Curve Cryptography, it focuses on
black-box implementations of ECC and presents a way to extract implementation information
-about a black-box implementation of ECC through side-channels. The main goal of **pyecsca**
-is to be able to reverse engineer the curve model, coordinate system, addition formulas, scalar
-multiplier and even finite-field implementation details.
+about a black-box implementation of ECC through side-channels.
It currently provides:
@@ -64,12 +62,12 @@ It currently provides:
.. grid-item-card:: Core
- The `core <https://github.com/J08nY/pyecsca>`_ package contains the core of the
+ The `core <https://github.com/J08nY/pyecsca>`_ repository contains the core of the
functionality, except the code generation and notebooks.
.. grid-item-card:: Codegen
- The `codegen <https://github.com/J08nY/pyecsca-codegen>`_ package contains
+ The `codegen <https://github.com/J08nY/pyecsca-codegen>`_ repository contains
the code generation functionality.
.. grid-item-card:: Notebook
diff --git a/docs/installation.rst b/docs/installation.rst
index 55277a6..551fd5f 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -2,8 +2,64 @@
:fas:`screwdriver-wrench;fa-fw` Installation
============================================
+**pyecsca** consists of three repositories:
+
+.. grid:: 1 1 3 3
+
+ .. grid-item-card:: Core
+
+ The `core <https://github.com/J08nY/pyecsca>`_ repository contains the core of the
+ functionality, except the code generation and notebooks.
+
+ .. grid-item-card:: Codegen
+
+ The `codegen <https://github.com/J08nY/pyecsca-codegen>`_ repository contains
+ the code generation functionality.
+
+ .. grid-item-card:: Notebook
+
+ The `notebook <https://github.com/J08nY/pyecsca-notebook>`_ repository contains
+ example notebooks that showcase functionality of the toolkit.
+
+
+Core
+====
+
+The core package can be installed either from `pypi <https://pypi.org/project/pyecsca/>`__ or from the
+`source repository <https://github.com/J08nY/pyecsca>`__. There are several extras that can be installed:
+
+- `picoscope_sdk` to enable support for PicoScope oscilloscopes using the picosdk_ package.
+- `picoscope_alt` to enable support for PicoScope oscilloscopes using the picoscope_ package.
+- `chipwhisperer` to enable support for ChipWhisperer_ targets and oscilloscopes.
+- `smartcard` to enable support for smartcard targets using the pyscard_ package.
+- `leia` to enable support for smartcard targets using the leia_ (smartleia) package.
+- `gmp` to enable arithmetic via gmpy2_ (which may or may not be faster).
+- `flint` to enable arithmetic via python-flint_ (which may or may not be faster).
+- `pari` to enable faster division polynomial computation using cypari2_.
+- `dev` to install several packages used in development.
+- `test` to install several packages used for testing.
+- `doc` to install several packages used for building documentation.
+
+You can install these extras like this:
+
+.. code-block:: shell
+
+ pip install pyecsca[smartcard,gmp]
+
+.. note::
+
+ The core repository uses git submodules, make sure to check them out after cloning with: ``git submodule update --init``.
+
+
+The core package contains data from the `Explicit-Formulas Database`_ by Daniel J. Bernstein and Tanja Lange.
+The data was partially changed, to make working with it easier. It is available on Github at `crocs-muni/efd`_.
+
+It uses `ChipWhisperer`_ as one of its targets. It also supports working with Riscure_ Inspector trace sets, which are of a proprietary format.
+
+Optionally, you can Cythonize the ``pyecsca/ec/mod`` subpackage and sometimes gain a performance benefit, YMMV.
+
Requirements
-============
+------------
.. dropdown:: General
:open:
@@ -43,13 +99,6 @@ Requirements
- python-flint_ (and also Flint library)
- cypari2_ (and also PARI library)
- *pyecsca* contains data from the `Explicit-Formulas Database`_ by Daniel J. Bernstein and Tanja Lange.
- The data was partially changed, to make working with it easier. It is available on Github at `crocs-muni/efd`_.
-
- It uses `ChipWhisperer`_ as one of its targets. It also supports working with Riscure_ Inspector trace sets, which are of a proprietary format.
-
- Optionally, you can Cythonize the `pyecsca/ec/mod` subpackage and sometimes gain a performance benefit, YMMV.
-
.. dropdown:: Testing & Development
See the Makefile for tests, performance measurement, codestyle and type checking commands.
@@ -73,6 +122,31 @@ Requirements
- sphinx-paramlinks_
- sphinx-design_
+Codegen
+=======
+
+The codegen package requires (and bundles in ``ext/libtommath`` as a git submodule) a version
+of the libtommath library. The package can be either installed from `pypi <https://pypi.org/project/pyecsca-codegen/>`__ or from the
+`source repository <https://github.com/J08nY/pyecsca-codegen>`__. Note that currently, the pypi project
+contains the built package for x86_64 Linux only. Thus, installation from source is preferable.
+
+Assuming you have ``make``, a C compiler and a C cross-compiler for ```arm-none-eabi`` you can just run:
+
+.. code-block:: shell
+
+ pip install .
+
+inside the codegen repository and it should be built and installed automatically.
+
+.. note::
+
+ The codegen repository uses git submodules, make sure to check them out after cloning with: ``git submodule update --init``.
+
+Notebooks
+=========
+
+The notebook repository is included as a submodule in the core repository.
+However, this version can get outdated during active development.
.. _Numpy: https://www.numpy.org
.. _Scipy: https://www.scipy.org