Welcome to mirror list, hosted at ThFree Co, Russian Federation.

readme.txt « PKA_ECCscalarMultiplication « PKA « Examples « P-NUCLEO-WB55.Nucleo « Projects - github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2bcc189da9112be4a15123a6fa325aaedd4d8174 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/**
  @page PKA_ECCscalarMultiplication Elliptic Curve Cryptography scalar multiplication example
  
  @verbatim
  ******************************************************************************
  * @file    PKA/PKA_ECCscalarMultiplication/readme.txt 
  * @author  MCD Application Team
  * @brief   Description of the ECC scalar multiplication example
  ******************************************************************************
  *
  * Copyright (c) 2019 STMicroelectronics. All rights reserved.
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                       opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  @endverbatim

@par Example Description 

How to use the PKA peripheral to execute ECC scalar multiplication. This 
allows generating a public key from a private key.

For this example, a .pem file has been created using openssl external tool. (https://www.openssl.org)
This file is located under Src/ecdsa_priv_prime256v1.pem.
To ease the usage of this .pem files, 2 files, Src/ecdsa_priv_prime256v1.c and Inc/ecdsa_priv_prime256v1.h 
are present to reflect its content. The explanation of how to create those file from a .pem is embedded in 
Src/ecdsa_priv_prime256v1.c.

The selected curve for this example is P-256 (ECDSA-256) published by NIST in 
Federal Information Processing Standards Publication FIPS PUB 186-4. The description
of this curve is present in file Src/prime256v1.c. 

Those two information are provided to PKA using the PKA_ECCMulInTypeDef "in" variable.

The result of the operation is the public key part of the .pem file. So the example compare the computed
result to the content of the .pem file to ensure the validity of the operation.

In case of success, the LED2 (GREEN) is ON.
In case of any error, the LED2 (GREEN) is toggling slowly.

@note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds)
      based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from
      a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower)
      than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
      To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function.
      
@note The application needs to ensure that the SysTick time base is always set to 1 millisecond
      to have correct HAL operation.

@par Keywords

Security, PKA, FIPS PUB 186-4, ECC scalar multiplication

@par Directory contents 
  
  - PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_hal_conf.h      HAL configuration file
  - PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_it.h            Interrupt handlers header file
  - PKA/PKA_ECCscalarMultiplication/Inc/main.h                    Header for main.c module
  - PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_it.c            Interrupt handlers
  - PKA/PKA_ECCscalarMultiplication/Src/main.c                    Main program
  - PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_hal_msp.c       HAL MSP module 
  - PKA/PKA_ECCscalarMultiplication/Src/system_stm32wbxx.c        STM32WBxx system source file
  - PKA/PKA_ECCscalarMultiplication/Src/prime256v1.c              Description of P-256 (ECDSA-256)
  - PKA/PKA_ECCscalarMultiplication/Inc/prime256v1.h              Header for prime256v1.c
  - PKA/PKA_ECCscalarMultiplication/Src/ecdsa_priv_prime256v1.pem ecdsa private key generated using openssl
  - PKA/PKA_ECCscalarMultiplication/Src/ecdsa_priv_prime256v1.c   Reflect the content of ecdsa_priv_prime256v1.pem in array format
  - PKA/PKA_ECCscalarMultiplication/Inc/ecdsa_priv_prime256v1.h   Header for ecdsa_priv_prime256v1.c

@par Hardware and Software environment

  - This example runs on STM32WB55RGVx devices.
  
  - This example has been tested with an STMicroelectronics P-NUCLEO-WB55
    board and can be easily tailored to any other supported device 
    and development board.

@par How to use it ? 

In order to make the program work, you must do the following:
 - Open your preferred toolchain 
 - Rebuild all files and load your image into target memory
 - Run the example
 
 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */