gd32w5xx_crypto_pkc.c
Go to the documentation of this file.
General definitions for cryptographic algorithms.
Curve25519 elliptic curve (constant-time implementation)
void curve448Red(uint32_t *r, const uint32_t *a, uint32_t h)
Modular reduction.
Definition: curve448.c:368
Curve448 elliptic curve (constant-time implementation)
Debugging facilities.
ECC (Elliptic Curve Cryptography)
ECDSA (Elliptic Curve Digital Signature Algorithm)
error_t mpiMul(Mpi *r, const Mpi *a, const Mpi *b)
Multiple precision multiplication.
Definition: esp32_crypto_pkc.c:75
error_t mpiExpMod(Mpi *r, const Mpi *a, const Mpi *e, const Mpi *p)
Modular exponentiation.
Definition: esp32_crypto_pkc.c:202
GD32W5 hardware cryptographic accelerator.
void pkcauImportArray(const uint8_t *src, size_t srcLen, uint_t destLen, uint_t offset)
Import byte array.
Definition: gd32w5xx_crypto_pkc.c:85
error_t pkcauRsaCrtExp(const RsaPrivateKey *key, const Mpi *c, Mpi *m)
Modular exponentiation with CRT.
Definition: gd32w5xx_crypto_pkc.c:312
error_t ecMult(const EcDomainParameters *params, EcPoint *r, const Mpi *d, const EcPoint *s)
Scalar multiplication.
Definition: gd32w5xx_crypto_pkc.c:512
error_t rsadp(const RsaPrivateKey *key, const Mpi *c, Mpi *m)
RSA decryption primitive.
Definition: gd32w5xx_crypto_pkc.c:471
error_t pkcauExportMpi(Mpi *r, uint_t length, uint_t offset)
Export multiple-precision integer.
Definition: gd32w5xx_crypto_pkc.c:182
void curve448Mul(uint32_t *r, const uint32_t *a, const uint32_t *b)
Modular multiplication.
Definition: gd32w5xx_crypto_pkc.c:969
error_t rsaep(const RsaPublicKey *key, const Mpi *m, Mpi *c)
RSA encryption primitive.
Definition: gd32w5xx_crypto_pkc.c:441
void curve25519Mul(uint32_t *r, const uint32_t *a, const uint32_t *b)
Modular multiplication.
Definition: gd32w5xx_crypto_pkc.c:847
error_t pkcauModExp(Mpi *r, const Mpi *a, const Mpi *e, const Mpi *p)
Modular exponentiation.
Definition: gd32w5xx_crypto_pkc.c:232
error_t ecdsaGenerateSignature(const PrngAlgo *prngAlgo, void *prngContext, const EcDomainParameters *params, const EcPrivateKey *privateKey, const uint8_t *digest, size_t digestLen, EcdsaSignature *signature)
ECDSA signature generation.
Definition: gd32w5xx_crypto_pkc.c:608
error_t ecdsaVerifySignature(const EcDomainParameters *params, const EcPublicKey *publicKey, const uint8_t *digest, size_t digestLen, const EcdsaSignature *signature)
ECDSA signature verification.
Definition: gd32w5xx_crypto_pkc.c:733
void pkcauImportMpi(const Mpi *a, uint_t length, uint_t offset)
Import multiple-precision integer.
Definition: gd32w5xx_crypto_pkc.c:146
GD32W5 public-key hardware accelerator (PKCAU)
#define PKCAU_RSA_CRT_EXP_IN_MOD_LEN
Definition: gd32w5xx_crypto_pkc.h:70
#define PKCAU_ECDSA_SIGN_IN_ORDER_LEN
Definition: gd32w5xx_crypto_pkc.h:92
#define PKCAU_ECDSA_VERIF_IN_MOD_LEN
Definition: gd32w5xx_crypto_pkc.h:109
#define PKCAU_ECDSA_VERIF_IN_ORDER_LEN
Definition: gd32w5xx_crypto_pkc.h:108
error_t mpiMulMod(Mpi *r, const Mpi *a, const Mpi *b, const Mpi *p)
Modular multiplication.
Definition: mimxrt1160_crypto_pkc.c:60
error_t mpiRandRange(Mpi *r, const Mpi *p, const PrngAlgo *prngAlgo, void *prngContext)
Generate a random value in the range 1 to p-1.
Definition: mpi.c:564
error_t mpiSetValue(Mpi *r, int_t a)
Set the value of a multiple precision integer.
Definition: mpi.c:484
error_t mpiSub(Mpi *r, const Mpi *a, const Mpi *b)
Multiple precision subtraction.
Definition: mpi.c:864
int_t mpiCompInt(const Mpi *a, int_t b)
Compare a multiple precision integer with an integer.
Definition: mpi.c:382
int_t mpiComp(const Mpi *a, const Mpi *b)
Compare two multiple precision integers.
Definition: mpi.c:338
error_t mpiGrow(Mpi *r, uint_t size)
Adjust the size of multiple precision integer.
Definition: mpi.c:94
void osAcquireMutex(OsMutex *mutex)
Acquire ownership of the specified mutex object.
Definition: os_port_chibios.c:388
void osReleaseMutex(OsMutex *mutex)
Release ownership of the specified mutex object.
Definition: os_port_chibios.c:400
RSA public-key cryptography standard.