diff options
| author | J08nY | 2020-07-14 22:46:20 +0200 |
|---|---|---|
| committer | J08nY | 2020-07-14 22:46:20 +0200 |
| commit | e22ca41a68a5f6c717d9b526906b56dafc2f1ca1 (patch) | |
| tree | 0124828717c56f69f4de82f45845588baf54c088 /codegen.ipynb | |
| parent | 260f0305d6ccb5825c3d0872c25d49e616773225 (diff) | |
| download | pyecsca-notebook-e22ca41a68a5f6c717d9b526906b56dafc2f1ca1.tar.gz pyecsca-notebook-e22ca41a68a5f6c717d9b526906b56dafc2f1ca1.tar.zst pyecsca-notebook-e22ca41a68a5f6c717d9b526906b56dafc2f1ca1.zip | |
Cleanup notebooks.
Diffstat (limited to 'codegen.ipynb')
| -rw-r--r-- | codegen.ipynb | 671 |
1 files changed, 79 insertions, 592 deletions
diff --git a/codegen.ipynb b/codegen.ipynb index 76a12ab..54fe0c9 100644 --- a/codegen.ipynb +++ b/codegen.ipynb @@ -2,12 +2,7 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "collapsed": true, - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "# Code generation\n", "\n", @@ -17,131 +12,29 @@ }, { "cell_type": "code", - "execution_count": 1, - "outputs": [ - { - "data": { - "text/plain": "['HOST', 'XMEGA', 'STM32F0', 'STM32F3']" - }, - "metadata": {}, - "output_type": "execute_result", - "execution_count": 1 - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from pyecsca.codegen.common import Platform\n", "\n", "\n", "Platform.names()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "To generate an implementation we need an actual configuration which the implementation should\n", "implement, which is stored inside the `Configuration` and `DeviceConfiguration` classes. " - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 2, - "outputs": [ - { - "name": "stdout", - "text": [ - "model <class 'pyecsca.ec.model.CurveModel'>\n", - " A model(form) of an elliptic curve.\n", - "\n", - "coords <class 'pyecsca.ec.coordinates.CoordinateModel'>\n", - " A coordinate system for a particular model(form) of an elliptic curve.\n", - "\n", - "formulas typing.Set[pyecsca.ec.formula.Formula]\n", - " A formula operating on points.\n", - "\n", - "scalarmult <class 'pyecsca.ec.mult.ScalarMultiplier'>\n", - " \n", - " A scalar multiplication algorithm.\n", - "\n", - " :param short_circuit: Whether the use of formulas will be guarded by short-circuit on inputs\n", - " of the point at infinity.\n", - " :param formulas: Formulas this instance will use.\n", - " \n", - "\n", - "hash_type <enum 'HashType'>\n", - " Hash algorithm used in ECDH and ECDSA.\n", - " NONE\n", - " SHA1\n", - " SHA224\n", - " SHA256\n", - " SHA384\n", - " SHA512\n", - "\n", - "mod_rand <enum 'RandomMod'>\n", - " Method of sampling a uniform integer modulo order.\n", - " SAMPLE\n", - " REDUCE\n", - "\n", - "mult <enum 'Multiplication'>\n", - " Base multiplication algorithm to use.\n", - " TOOM_COOK\n", - " KARATSUBA\n", - " COMBA\n", - " BASE\n", - "\n", - "sqr <enum 'Squaring'>\n", - " Base squaring algorithm to use.\n", - " TOOM_COOK\n", - " KARATSUBA\n", - " COMBA\n", - " BASE\n", - "\n", - "red <enum 'Reduction'>\n", - " Modular reduction method used.\n", - " BARRETT\n", - " MONTGOMERY\n", - " BASE\n", - "\n", - "platform <enum 'Platform'>\n", - " Platform to build for.\n", - " HOST\n", - " XMEGA\n", - " STM32F0\n", - " STM32F3\n", - "\n", - "keygen <class 'bool'>\n", - " \n", - "\n", - "ecdh <class 'bool'>\n", - " \n", - "\n", - "ecdsa <class 'bool'>\n", - " \n", - "\n" - ], - "output_type": "stream" - }, - { - "data": { - "text/plain": "()" - }, - "metadata": {}, - "output_type": "execute_result", - "execution_count": 2 - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from typing import get_args\n", "from pyecsca.codegen.common import DeviceConfiguration\n", @@ -162,17 +55,11 @@ "\t\t\tprint(\" \", enum_name)\n", "\tprint()\n", "()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "The `DeviceConfiguration` class contains a few additional attributes apart from those\n", "in the `Configuration` class: `platform`, `keygen`, `ecdh` and `ecdsa`.\n", @@ -180,38 +67,22 @@ "The `platform` attribute defines for which target the implementation\n", "should be built. The other boolean attributes specify whether particular\n", "functionality should be implemented and enabled in the implementation." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Generating\n", "\n", "We will first create a `DeviceConfiguration`, which we will then generate and build." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": 3, - "outputs": [ - { - "data": { - "text/plain": "DeviceConfiguration(model=ShortWeierstrassModel(), coords=EFDCoordinateModel(\"projective\" on short Weierstrass curves), formulas=[AdditionEFDFormula(add-1998-cmo for EFDCoordinateModel(\"projective\" on short Weierstrass curves)), DoublingEFDFormula(dbl-1998-cmo for EFDCoordinateModel(\"projective\" on short Weierstrass curves)), ScalingEFDFormula(z for EFDCoordinateModel(\"projective\" on short Weierstrass curves))], scalarmult=<pyecsca.ec.mult.LTRMultiplier object at 0x7f071c2cd4c0>, hash_type=HASH_SHA1, mod_rand=MOD_RAND_REDUCE, mult=MUL_BASE, sqr=SQR_BASE, red=RED_BASE, platform=CW308_STM32F3, keygen=True, ecdh=True, ecdsa=True)" - }, - "metadata": {}, - "output_type": "execute_result", - "execution_count": 3 - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from pyecsca.ec.model import ShortWeierstrassModel\n", "from pyecsca.ec.mult import LTRMultiplier\n", @@ -237,250 +108,85 @@ "\t\t\t\t\t\t\t platform, True, True, True)\n", "\n", "config" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "Now we can render the configuration, which will generate the source files into a\n", "randomly created temporary directory, and return the path to the directory as\n", "well as names of the elf and hex files which will be built in that directory." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 4, - "outputs": [ - { - "name": "stdout", - "text": [ - "/tmp/tmp1wtoeyhk\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from pyecsca.codegen.builder import render\n", "\n", "directory, elf_name, hex_name = render(config)\n", "\n", "print(directory)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Building\n", "\n", "When we have the implementation rendered, we can build it using make." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 5, - "outputs": [ - { - "name": "stdout", - "text": [ - "rm -f -- pyecsca-codegen-CW308_STM32F3.hex\n", - "rm -f -- pyecsca-codegen-CW308_STM32F3.eep\n", - "rm -f -- pyecsca-codegen-CW308_STM32F3.cof\n", - "rm -f -- pyecsca-codegen-CW308_STM32F3.elf\n", - "rm -f -- pyecsca-codegen-CW308_STM32F3.map\n", - "rm -f -- pyecsca-codegen-CW308_STM32F3.sym\n", - "rm -f -- pyecsca-codegen-CW308_STM32F3.lss\n", - "rm -f -- objdir/*.o\n", - "rm -f -- objdir/*.lst\n", - "rm -f -- main.s bn/bn.s asn1/asn1.s hash/hash.s prng/prng.s gen/curve.s gen/formula_add.s gen/formula_dbl.s gen/formulas.s gen/formula_scl.s gen/mult.s gen/point.s simpleserial.s stm32f3_hal.s stm32f3_hal_lowlevel.s stm32f3_sysmem.s\n", - "rm -f -- main.d bn/bn.d asn1/asn1.d hash/hash.d prng/prng.d gen/curve.d gen/formula_add.d gen/formula_dbl.d gen/formulas.d gen/formula_scl.d gen/mult.d gen/point.d simpleserial.d stm32f3_hal.d stm32f3_hal_lowlevel.d stm32f3_sysmem.d\n", - "rm -f -- main.i bn/bn.i asn1/asn1.i hash/hash.i prng/prng.i gen/curve.i gen/formula_add.i gen/formula_dbl.i gen/formulas.i gen/formula_scl.i gen/mult.i gen/point.i simpleserial.i stm32f3_hal.i stm32f3_hal_lowlevel.i stm32f3_sysmem.i\n", - "mkdir objdir objdir/hash objdir/prng objdir/asn1 objdir/bn objdir/gen\n", - "mkdir .dep\n", - ".\n", - "-------- begin --------\n", - "arm-none-eabi-gcc (Arch Repository) 9.2.0\n", - "Copyright (C) 2019 Free Software Foundation, Inc.\n", - "This is free software; see the source for copying conditions. There is NO\n", - "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", - "\n", - ".\n", - "Compiling C: main.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/main.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o objdir/main.o \n", - ".\n", - "Compiling C: bn/bn.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/bn.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/bn.o.d bn/bn.c -o objdir/bn/bn.o \n", - ".\n", - "Compiling C: asn1/asn1.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/asn1.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/asn1.o.d asn1/asn1.c -o objdir/asn1/asn1.o \n", - ".\n", - "Compiling C: hash/hash.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/hash.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/hash.o.d hash/hash.c -o objdir/hash/hash.o \n", - ".\n", - "Compiling C: prng/prng.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/prng.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/prng.o.d prng/prng.c -o objdir/prng/prng.o \n", - ".\n", - "Compiling C: gen/curve.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/curve.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/curve.o.d gen/curve.c -o objdir/gen/curve.o \n", - ".\n", - "Compiling C: gen/formula_add.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formula_add.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/formula_add.o.d gen/formula_add.c -o objdir/gen/formula_add.o \n", - ".\n", - "Compiling C: gen/formula_dbl.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formula_dbl.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/formula_dbl.o.d gen/formula_dbl.c -o objdir/gen/formula_dbl.o \n", - ".\n", - "Compiling C: gen/formulas.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formulas.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/formulas.o.d gen/formulas.c -o objdir/gen/formulas.o \n", - ".\n", - "Compiling C: gen/formula_scl.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formula_scl.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/formula_scl.o.d gen/formula_scl.c -o objdir/gen/formula_scl.o \n", - ".\n", - "Compiling C: gen/mult.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/mult.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/mult.o.d gen/mult.c -o objdir/gen/mult.o \n", - ".\n", - "Compiling C: gen/point.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/point.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/point.o.d gen/point.c -o objdir/gen/point.o \n", - ".\n", - "Compiling C: ./simpleserial/simpleserial.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/simpleserial.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/simpleserial.o.d ./simpleserial/simpleserial.c -o objdir/simpleserial.o \n", - ".\n", - "Compiling C: ./hal/stm32f3/stm32f3_hal.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/stm32f3_hal.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/stm32f3_hal.o.d ./hal/stm32f3/stm32f3_hal.c -o objdir/stm32f3_hal.o \n", - ".\n", - "Compiling C: ./hal/stm32f3/stm32f3_hal_lowlevel.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/stm32f3_hal_lowlevel.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/stm32f3_hal_lowlevel.o.d ./hal/stm32f3/stm32f3_hal_lowlevel.c -o objdir/stm32f3_hal_lowlevel.o \n", - ".\n", - "Compiling C: ./hal/stm32f3/stm32f3_sysmem.c\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/stm32f3_sysmem.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/stm32f3_sysmem.o.d ./hal/stm32f3/stm32f3_sysmem.c -o objdir/stm32f3_sysmem.o \n", - ".\n", - "Assembling: ./hal/stm32f3/stm32f3_startup.S\n", - "arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -x assembler-with-cpp -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -DF_CPU=7372800 -Wa,-gstabs,-adhlns=objdir/stm32f3_startup.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy ./hal/stm32f3/stm32f3_startup.S -o objdir/stm32f3_startup.o\n", - ".\n", - "Linking: pyecsca-codegen-CW308_STM32F3.elf\n", - "arm-none-eabi-gcc -mcpu=cortex-m4 -I. -DMP_NO_DEV_URANDOM -DMP_32BIT -DMP_LOW_MEM -DMP_PREC=10 -mthumb -mfloat-abi=soft -mfpu=fpv4-sp-d16 -fmessage-length=0 -ffunction-sections -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL=HAL_stm32f3 -DPLATFORM=CW308_STM32F3 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/main.o -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/stm32f3 -I./hal/stm32f3/CMSIS -I./hal/stm32f3/CMSIS/core -I./hal/stm32f3/CMSIS/device -I./hal/stm32f4/Legacy -std=gnu99 -MMD -MP -MF .dep/pyecsca-codegen-CW308_STM32F3.elf.d objdir/main.o objdir/bn/bn.o objdir/asn1/asn1.o objdir/hash/hash.o objdir/prng/prng.o objdir/gen/curve.o objdir/gen/formula_add.o objdir/gen/formula_dbl.o objdir/gen/formulas.o objdir/gen/formula_scl.o objdir/gen/mult.o objdir/gen/point.o objdir/simpleserial.o objdir/stm32f3_hal.o objdir/stm32f3_hal_lowlevel.o objdir/stm32f3_sysmem.o objdir/stm32f3_startup.o --output pyecsca-codegen-CW308_STM32F3.elf tommath/libtommath-CW308_STM32F3.a --specs=nano.specs -T ./hal/stm32f3/LinkerScript.ld -Wl,--gc-sections -lm -Wl,-Map=pyecsca-codegen-CW308_STM32F3.map,--cref -lm \n", - ".\n", - "Creating load file for Flash: pyecsca-codegen-CW308_STM32F3.hex\n", - "arm-none-eabi-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature pyecsca-codegen-CW308_STM32F3.elf pyecsca-codegen-CW308_STM32F3.hex\n", - ".\n", - "Creating load file for EEPROM: pyecsca-codegen-CW308_STM32F3.eep\n", - "arm-none-eabi-objcopy -j .eeprom --set-section-flags=.eeprom=\"alloc,load\" \\\n", - "--change-section-lma .eeprom=0 --no-change-warnings -O ihex pyecsca-codegen-CW308_STM32F3.elf pyecsca-codegen-CW308_STM32F3.eep || exit 0\n", - ".\n", - "Creating Extended Listing: pyecsca-codegen-CW308_STM32F3.lss\n", - "arm-none-eabi-objdump -h -S -z pyecsca-codegen-CW308_STM32F3.elf > pyecsca-codegen-CW308_STM32F3.lss\n", - ".\n", - "Creating Symbol Table: pyecsca-codegen-CW308_STM32F3.sym\n", - "arm-none-eabi-nm -n pyecsca-codegen-CW308_STM32F3.elf > pyecsca-codegen-CW308_STM32F3.sym\n", - "Size after:\n", - " text\t data\t bss\t dec\t hex\tfilename\n", - " 29144\t 128\t 2592\t 31864\t 7c78\tpyecsca-codegen-CW308_STM32F3.elf\n", - "+--------------------------------------------------------\n", - "+ Built for platform CW308T: STM32F3 Target\n", - "+--------------------------------------------------------\n", - "\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from subprocess import run\n", "\n", "res = run([\"make\"], cwd=directory, capture_output=True)\n", "print(res.stdout.decode())" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "Now the files `elf_name` and `hex_name` in the directory contain the ELF file and HEX file built.\n" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 6, - "outputs": [ - { - "name": "stdout", - "text": [ - "pyecsca-codegen-CW308_STM32F3.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, with debug_info, not stripped\n", - "\n", - "pyecsca-codegen-CW308_STM32F3.hex: ASCII text, with CRLF line terminators\n", - "\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "res = run([\"file\", elf_name], cwd=directory, capture_output=True)\n", "print(res.stdout.decode())\n", "\n", "res = run([\"file\", hex_name], cwd=directory, capture_output=True)\n", "print(res.stdout.decode())" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Running\n", "\n", "We will now run key generation using the generated implementation on\n", "the `STM32F3` target." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "from pyecsca.codegen.client import DeviceTarget\n", @@ -488,262 +194,79 @@ "\n", "params = get_params(\"secg\", \"secp128r1\", \"projective\")\n", "target = DeviceTarget(params.curve.model, params.curve.coordinate_model, Platform.STM32F3, timeout=10000)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "Flash the implementation." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 8, - "outputs": [ - { - "name": "stdout", - "text": [ - "Serial baud rate = 115200\n", - "Detected known STMF32: STM32F302xB(C)/303xB(C)\n", - "Extended erase (0x44), this can take ten seconds or more\n", - "Attempting to program 29271 bytes at 0x8000000\n", - "STM32F Programming flash...\n", - "STM32F Reading flash...\n", - "Verified flash OK, 29271 bytes\n", - "Serial baud rate = 38400\n" - ], - "output_type": "stream" - }, - { - "data": { - "text/plain": "True" - }, - "metadata": {}, - "output_type": "execute_result", - "execution_count": 8 - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from os.path import join\n", "\n", "target.flash(join(directory, hex_name))\n" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "Run the key generation." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 9, - "outputs": [ - { - "name": "stdout", - "text": [ - "Serial baud rate = 38400\n", - "Serial baud rate = 115200\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "target.connect()\n", "target.set_params(params)\n", "priv, pub = target.generate()\n", "target.disconnect()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "And we can check that the generated keypair is valid." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "name": "stdout", - "text": [ - "True\n", - "189359030463681349816366610478560039051\n", - "[x=122835813094999453922649270086793500655, y=326514220558629293368386081113307347349]\n", - "[x=122835813094999453922649270086793500655, y=326514220558629293368386081113307347349]\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(params.curve.is_on_curve(pub))\n", "\n", "print(priv)\n", "print(pub)\n", "print(params.curve.affine_multiply(params.generator.to_affine(), priv))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Running on the host\n", "\n", "We can also run the implementation on the host." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 11, - "outputs": [ - { - "name": "stdout", - "text": [ - "rm -f -- pyecsca-codegen-HOST.hex\n", - "rm -f -- pyecsca-codegen-HOST.eep\n", - "rm -f -- pyecsca-codegen-HOST.cof\n", - "rm -f -- pyecsca-codegen-HOST.elf\n", - "rm -f -- pyecsca-codegen-HOST.map\n", - "rm -f -- pyecsca-codegen-HOST.sym\n", - "rm -f -- pyecsca-codegen-HOST.lss\n", - "rm -f -- objdir/*.o\n", - "rm -f -- objdir/*.lst\n", - "rm -f -- main.s bn/bn.s asn1/asn1.s hash/hash.s prng/prng.s gen/curve.s gen/formula_add.s gen/formula_dbl.s gen/formulas.s gen/formula_scl.s gen/mult.s gen/point.s simpleserial.s uart.s host_hal.s\n", - "rm -f -- main.d bn/bn.d asn1/asn1.d hash/hash.d prng/prng.d gen/curve.d gen/formula_add.d gen/formula_dbl.d gen/formulas.d gen/formula_scl.d gen/mult.d gen/point.d simpleserial.d uart.d host_hal.d\n", - "rm -f -- main.i bn/bn.i asn1/asn1.i hash/hash.i prng/prng.i gen/curve.i gen/formula_add.i gen/formula_dbl.i gen/formulas.i gen/formula_scl.i gen/mult.i gen/point.i simpleserial.i uart.i host_hal.i\n", - "mkdir objdir objdir/hash objdir/prng objdir/asn1 objdir/bn objdir/gen\n", - "mkdir .dep\n", - ".\n", - "-------- begin --------\n", - "gcc (Arch Linux 9.2.1+20200130-2) 9.2.1 20200130\n", - "Copyright (C) 2019 Free Software Foundation, Inc.\n", - "This is free software; see the source for copying conditions. There is NO\n", - "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", - "\n", - ".\n", - "Compiling C: main.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/main.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o objdir/main.o \n", - ".\n", - "Compiling C: bn/bn.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/bn.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/bn.o.d bn/bn.c -o objdir/bn/bn.o \n", - ".\n", - "Compiling C: asn1/asn1.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/asn1.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/asn1.o.d asn1/asn1.c -o objdir/asn1/asn1.o \n", - ".\n", - "Compiling C: hash/hash.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/hash.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/hash.o.d hash/hash.c -o objdir/hash/hash.o \n", - ".\n", - "Compiling C: prng/prng.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/prng.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/prng.o.d prng/prng.c -o objdir/prng/prng.o \n", - ".\n", - "Compiling C: gen/curve.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/curve.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/curve.o.d gen/curve.c -o objdir/gen/curve.o \n", - ".\n", - "Compiling C: gen/formula_add.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formula_add.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/formula_add.o.d gen/formula_add.c -o objdir/gen/formula_add.o \n", - ".\n", - "Compiling C: gen/formula_dbl.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formula_dbl.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/formula_dbl.o.d gen/formula_dbl.c -o objdir/gen/formula_dbl.o \n", - ".\n", - "Compiling C: gen/formulas.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formulas.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/formulas.o.d gen/formulas.c -o objdir/gen/formulas.o \n", - ".\n", - "Compiling C: gen/formula_scl.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/formula_scl.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/formula_scl.o.d gen/formula_scl.c -o objdir/gen/formula_scl.o \n", - ".\n", - "Compiling C: gen/mult.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/mult.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/mult.o.d gen/mult.c -o objdir/gen/mult.o \n", - ".\n", - "Compiling C: gen/point.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/point.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/point.o.d gen/point.c -o objdir/gen/point.o \n", - ".\n", - "Compiling C: ./simpleserial/simpleserial.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/simpleserial.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/simpleserial.o.d ./simpleserial/simpleserial.c -o objdir/simpleserial.o \n", - ".\n", - "Compiling C: ./hal/host/uart.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/uart.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/uart.o.d ./hal/host/uart.c -o objdir/uart.o \n", - ".\n", - "Compiling C: ./hal/host/host_hal.c\n", - "gcc -c -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/host_hal.lst -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/host_hal.o.d ./hal/host/host_hal.c -o objdir/host_hal.o \n", - ".\n", - "Linking: pyecsca-codegen-HOST.elf\n", - "gcc -I. -DMP_NO_DEV_URANDOM -DMP_LOW_MEM -DMP_PREC=10 -gdwarf-2 -DHASH=HASH_SHA1 -DMOD_RAND=MOD_RAND_REDUCE -DHAL=HAL_host -DPLATFORM=HOST -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/main.o -Ihash -Iprng -Iasn1 -Ibn -Igen -Itommath -I./simpleserial/ -I./hal -I./hal/host -std=gnu99 -MMD -MP -MF .dep/pyecsca-codegen-HOST.elf.d objdir/main.o objdir/bn/bn.o objdir/asn1/asn1.o objdir/hash/hash.o objdir/prng/prng.o objdir/gen/curve.o objdir/gen/formula_add.o objdir/gen/formula_dbl.o objdir/gen/formulas.o objdir/gen/formula_scl.o objdir/gen/mult.o objdir/gen/point.o objdir/simpleserial.o objdir/uart.o objdir/host_hal.o --output pyecsca-codegen-HOST.elf tommath/libtommath-HOST.a -Wl,-Map=pyecsca-codegen-HOST.map,--cref -lm \n", - ".\n", - "Creating load file for Flash: pyecsca-codegen-HOST.hex\n", - "objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature pyecsca-codegen-HOST.elf pyecsca-codegen-HOST.hex\n", - ".\n", - "Creating load file for EEPROM: pyecsca-codegen-HOST.eep\n", - "objcopy -j .eeprom --set-section-flags=.eeprom=\"alloc,load\" \\\n", - "--change-section-lma .eeprom=0 --no-change-warnings -O ihex pyecsca-codegen-HOST.elf pyecsca-codegen-HOST.eep || exit 0\n", - ".\n", - "Creating Extended Listing: pyecsca-codegen-HOST.lss\n", - "objdump -h -S -z pyecsca-codegen-HOST.elf > pyecsca-codegen-HOST.lss\n", - ".\n", - "Creating Symbol Table: pyecsca-codegen-HOST.sym\n", - "nm -n pyecsca-codegen-HOST.elf > pyecsca-codegen-HOST.sym\n", - "Size after:\n", - " text\t data\t bss\t dec\t hex\tfilename\n", - " 82632\t 728\t 2592\t 85952\t 14fc0\tpyecsca-codegen-HOST.elf\n", - "+--------------------------------------------------------\n", - "+ Built for platform HOST: Host machine target\n", - "+--------------------------------------------------------\n", - "\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "config = DeviceConfiguration(model, coords, formulas, scalarmult, \n", "\t\t\t\t\t\t\t hash_type, mod_rand, mult, sqr, red,\n", @@ -752,80 +275,44 @@ "directory, elf_name, hex_name = render(config)\n", "res = run([\"make\"], cwd=directory, capture_output=True)\n", "print(res.stdout.decode())" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "from pyecsca.codegen.client import HostTarget\n", "from os.path import join\n", "\n", "target = HostTarget(params.curve.model, params.curve.coordinate_model, binary=join(directory, elf_name))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "target.connect()\n", "target.set_params(params)\n", "priv, pub = target.generate()\n", "target.disconnect()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] }, { "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "name": "stdout", - "text": [ - "True\n", - "162938999268550597445809790209592423458\n", - "[x=111810799217268384317536017529141796945, y=309320541414531923178173772704935971498]\n", - "[x=111810799217268384317536017529141796945, y=309320541414531923178173772704935971498]\n" - ], - "output_type": "stream" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(params.curve.is_on_curve(pub))\n", "\n", "print(priv)\n", "print(pub)\n", "print(params.curve.affine_multiply(params.generator.to_affine(), priv))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": false - } - } + ] } ], "metadata": { @@ -849,13 +336,13 @@ "pycharm": { "stem_cell": { "cell_type": "raw", - "source": [], "metadata": { "collapsed": false - } + }, + "source": [] } } }, "nbformat": 4, "nbformat_minor": 4 -}
\ No newline at end of file +} |
