Forum: Mikrocontroller und Digitale Elektronik STM32F437 HAL Crypt Library verwenden


von Franz Sauerdorf (Gast)


Lesenswert?

Liebe Forengemeinde,
ich möchte die HAL Crypt Library verwenden, um Daten mit AES CBC und 
einem 256 Bit Schlüssel zu ver- und zu entschlüsseln. Dies soll mit 
Polling (also ohne Interrupt) und ohne DMA realisiert werden.

Dazu sind folgende Funktionen notwendig:
1
  HAL_CRYP_Init();
2
  HAL_CRYP_AESCBC_Encrypt();
3
  HAL_CRYP_AESCBC_Decrypt();

Jedoch ist mir nicht ganz klar, wie ich der Init Funktion das 
Struct-Paket an Daten übermitteln soll. In der Library steht dazu:
1
typedef struct
2
{
3
      CRYP_TypeDef             *Instance;        /*!< CRYP registers base address */
4
5
      CRYP_InitTypeDef         Init;             /*!< CRYP required parameters */
6
7
      uint8_t                  *pCrypInBuffPtr;  /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
8
9
      uint8_t                  *pCrypOutBuffPtr; /*!< Pointer to CRYP processing (encryption, decryption,...) buffer */
10
11
      __IO uint16_t            CrypInCount;      /*!< Counter of inputed data */
12
13
      __IO uint16_t            CrypOutCount;     /*!< Counter of output data */
14
15
      HAL_StatusTypeDef        Status;           /*!< CRYP peripheral status */
16
17
      HAL_PhaseTypeDef         Phase;            /*!< CRYP peripheral phase */
18
19
      DMA_HandleTypeDef        *hdmain;          /*!< CRYP In DMA handle parameters */
20
21
      DMA_HandleTypeDef        *hdmaout;         /*!< CRYP Out DMA handle parameters */
22
23
      HAL_LockTypeDef          Lock;             /*!< CRYP locking object */
24
25
   __IO  HAL_CRYP_STATETypeDef State;            /*!< CRYP peripheral state */
26
}CRYP_HandleTypeDef;

Leider kann ich damit echt wenig anfangen und finde keinerlei Beispiele 
oder Code-Schnipsel. Über ein paar Gedankenanstöße, womit ich 
weitermachen kann, wären großartig.
Vielen Dank!

von pegel (Gast)


Lesenswert?

In der F7 Hal Lib sind einige Beispiele drin.
Habe aber selbst keine Erfahrung.

von Franz Sauerdorf (Gast)


Lesenswert?

Hallo, danke für den Hinweis. Ich habe mal ein Testprojekt mit einem F7 
erzeugt und in die Bib geschaut, finde jedoch keine Beispiele. Wo kann 
ich die Hal Bib mit den Beispielen finden? Vielleicht sogar als 
Download?
Grüße

von pegel (Gast)


Lesenswert?

Auch in der F4 Lib findet sich etwas wenn du nach 
HAL_CRYP_AESCBC_Encrypt suchst.

Jeweils die main.c in:

STM32Cube_FW_F4_V1.15.0/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESMod 
es/Src/

STM32Cube_FW_F4_V1.15.0/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESMo 
des/Src/

STM32Cube_FW_F4_V1.15.0/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESMo 
des/Src/

von Franz Sauerdorf (Gast)


Lesenswert?

Danke, meine Toolchain (Eclipse + GCC) hat die Bibliotheken, jedoch 
nicht die Beispiele.
Ich habe mir daher die Bibliothek aus github heruntergeladen und die 
Beispiele angeschaut.
Leider habe ich direkt Fehler, beim Versuch die Funktionen aufzurufen.
1
CRYP_HandleTypeDef     CrypHandle;
2
CrypHandle.Init.DataType = CRYP_DATATYPE_8B;
3
CrypHandle.Init.KeySize   = CRYP_KEYSIZE_256B;
4
CrypHandle.Init.pKey      = aAES256key;
5
CrypHandle.Init.pInitVect = aInitVector;
6
if(HAL_CRYP_Init(&CrypHandle) != HAL_OK)
7
      {
Fehlermeldung: undefined reference to "HAL_CRYP_Init", jedoch findet der 
die Funktion und öffnet auch die Bibliothek dazu. Auch wenn ich die 
Funktion eintippe, wird mir diese vorgeschlagen. Die gleiche 
Fehlermeldung habe ich bei der HAL_CRYP_AESCBC_Decrypt und Encrypt.

Woran kann das liegen?

von pegel (Gast)


Lesenswert?

Franz Sauerdorf schrieb:
> undefined reference to

Sagt immer das die c Datei nicht compiliert bzw. nicht richtig 
eingebunden wurde.

In dem Fall die stm32f4xx_hal_cryp.c
#include ist die stm32f4xx_hal_cryp.h

von Daniel (Gast)


Lesenswert?

Hast du in der stm32f4xx_hal_conf.h die Auskommentierung des Define

#define HAL_CRYP_MODULE_ENABLED

gelöscht? Ohne diesen Define werden die notwendigen Funktionen nicht 
eingebunden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.