ECCTK (Elliptic Curve Cryptographic ToolKit): Référence du fichier ecctk-ecc.h

# Référence du fichier ecctk-ecc.h

## Description détaillée

Ce fichier contiend les références des fonctions disponibles pour la mise en oeuvre des algorithmes directement basés sur les courbes elliptiques (signature, échange de clefs, authentification, ...).

Auteur:
  Ludovic FLAMENT <ludovic.flament@free.fr>

Avertissement:
  L'utilisation et/ou la redistribution de ce code (avec ou sans modification), ainsi que de tous les composants du produit (librairies, documentation, exemples, ...) est soumise aux termes de la licence qui vous est attribuée par son auteur.

## Macros
#define | ECCTK_CURVE_CERTICOM_131 0x1311
#define | ECCTK_CURVE_SEC1_131 0x1312
#define | ECCTK_CURVE_SEC2_131 0x1313
#define | ECCTK_CURVE_CERTICOM_PRIME_131 0x1314
#define | ECCTK_CURVE_SEC_PRIME_160 0x1601
#define | ECCTK_CURVE_CERTICOM_163 0x1631
#define | ECCTK_CURVE_SEC1_163 0x1632
#define | ECCTK_CURVE_SEC2_163 0x1633
#define | ECCTK_CURVE_CERTICOM_PRIME_163 0x1634
#define | ECCTK_CURVE_CERTICOM_191 0x1911
#define | ECCTK_CURVE_CERTICOM_PRIME_191 0x1912
#define | ECCTK_CURVE_SEC_PRIME_192 0x1921
#define | ECCTK_CURVE_SEC1_193 0x1931
#define | ECCTK_CURVE_SEC2_193 0x1932
#define | ECCTK_CURVE_SEC_PRIME_224 0x2241
#define | ECCTK_CURVE_SEC_233 0x2331
#define | ECCTK_CURVE_CERTICOM_239 0x2391
#define | ECCTK_CURVE_SEC_PRIME_256 0x2561
#define | ECCTK_CURVE_SEC_283 0x2831
#define | ECCTK_CURVE_CERTICOM_359 0x3591
#define | ECCTK_CURVE_SEC_PRIME_384 0x3841
#define | ECCTK_CURVE_SEC_409 0x4091
#define | ECCTK_CURVE_SEC_PRIME_521 0x5211
#define | ECCTK_CURVE_SEC_571 0x5711
#define | ECCTK_ECC_ALGO_ECIES 0x01
#define | ECCTK_ECC_ALGO_PSEC3 0x02
#define | ECCTK_ECC_ALGO_ECDSA 0x03
#define | ECCTK_ECC_ALGO_ECNR 0x04
#define | ECCTK_ECC_ALGO_DHKA 0x05
#define | ECCTK_ECC_ALGO_MQVKA 0x06
#define | ECCTK_COMPRESS_ON 0x01
#define | ECCTK_COMPRESS_OFF 0x02
#define | ECCTK_ECC_SECRET_SHARING_SECRET_MAX_SIZE 63
#define | ECCTK_ECC_NO_ERROR 0
#define | ECCTK_ECC_ERROR_INTERNAL -1
#define | ECCTK_ECC_ERROR_OPEN_FILE -2
#define | ECCTK_ECC_ERROR_TMPFILE -3
#define | ECCTK_ECC_ERROR_NULL_ARG -4
#define | ECCTK_ECC_ERROR_OUT_TOO_SMALL -5
#define | ECCTK_ECC_ERROR_KPUB_CTX -6
#define | ECCTK_ECC_ERROR_KPRV_CTX -7
#define | ECCTK_ECC_ERROR_CIPHER_CTX -8
#define | ECCTK_ECC_ERROR_PSEC3_CTX -9
#define | ECCTK_ECC_ERROR_ECIES_CTX -10
#define | ECCTK_ECC_ERROR_READ_SIGN -11
#define | ECCTK_ECC_ERROR_VERIFY -12
#define | ECCTK_ECC_ERROR_HASH_FILE -13
#define | ECCTK_ECC_ERROR_HASH_BUF -14
#define | ECCTK_ECC_ERROR_READ_KA -15
#define | ECCTK_ECC_ERROR_COMPRESS -16
#define | ECCTK_ECC_ERROR_DECOMPRESS -17
#define | ECCTK_ECC_ERROR_PSEC3 -18
#define | ECCTK_ECC_ERROR_ECIES -19
#define | ECCTK_ECC_ERROR_ENCRYPT -20
#define | ECCTK_ECC_ERROR_DECRYPT -21
#define | ECCTK_ECC_ERROR_GENKEY -22
#define | ECCTK_ECC_ERROR_WRITE_FILE -23
#define | ECCTK_ECC_ERROR_BAD_ALGORITHM -24
#define | ECCTK_ECC_ERROR_DER_PEM -25
#define | ECCTK_ECC_ERROR_GENERATE_CURVE -26
#define | ECCTK_ECC_ERROR_GF2M_NOT_INIT -27
#define | ECCTK_ECC_ERROR_GFP_NOT_INIT -28
## Typedefs
typedef kprv_ctx | KPRV_CTX
typedef kpub_ctx | KPUB_CTX
typedef sign_ctx | SIGN_CTX
typedef psec3_ctx | PSEC3_CTX
typedef ecies_ctx | ECIES_CTX
typedef ka_ctx | KA_CTX
typedef sharing_ctx | SHARING_CTX
typedef ecc_cipher_ctx | ECC_CIPHER_CTX
## Fonctions
void | KprvCtxFree (KPRV_CTX *Ctx)
| Effacement et libération d'un context de clef privée.
KPRV_CTX * | ReadStreamKprvCtx (u1byte *Buffer, u4byte Size)
| Permet de lire une clef privée dans un buffer mémoire.
KPRV_CTX * | ReadFileKprvCtx (s1byte *File)
| Permet de lire une clef privée dans un fichier.
s2byte | WriteFileKprvCtx (s1byte *File, KPRV_CTX *Ctx)
| Permet d'écrire un context de clef privée dans un fichier.
s2byte | WriteStreamKprvCtx (u1byte *Buffer, u4byte *Size, KPRV_CTX *Ctx)
| Permet d'écrire un context de clef privée dans un buffer mémoire.
KPRV_CTX * | PemReadFileKprvCtx (s1byte *File)
| Permet de lire une clef privée au format PEM dans un fichier.
KPRV_CTX * | PemReadStreamKprvCtx (s1byte *Buffer)
| Permet de lire une clef privée au format PEM dans un buffer mémoire.
s2byte | PemWriteFileKprvCtx (s1byte *File, KPRV_CTX *Ctx)
| Permet d'écrire au format PEM un context de clef privée dans un fichier.
s1byte * | PemWriteStreamKprvCtx (KPRV_CTX *Ctx)
| Permet d'écrire au format PEM un context de clef privée dans un buffer mémoire.
KPRV_CTX * | GeneratePrivateKey (u2byte Curve, s1byte *Password)
| Permet de générer une clef privée.
void | KpubCtxFree (KPUB_CTX *Ctx)
| Effacement et libération d'un context de clef publique.
KPUB_CTX * | ReadStreamKpubCtx (u1byte *Buffer, u4byte Size)
| Permet de lire une clef publique dans un buffer mémoire.
KPUB_CTX * | ReadFileKpubCtx (s1byte *File)
| Permet de lire une clef publique dans un fichier.
s2byte | WriteFileKpubCtx (s1byte *File, KPUB_CTX *Ctx)
| Permet d'écrire un context de clef publique dans un fichier.
s2byte | WriteStreamKpubCtx (u1byte *Buffer, u4byte *Size, KPUB_CTX *Ctx)
| Permet d'écrire un context de clef publique dans un buffer mémoire.
KPUB_CTX * | PemReadFileKpubCtx (s1byte *File)
| Permet de lire une clef publique au format PEM dans un fichier.
KPUB_CTX * | PemReadStreamKpubCtx (s1byte *Buffer)
| Permet de lire une clef publique au format PEM dans un buffer mémoire.
s2byte | PemWriteFileKpubCtx (s1byte *File, KPUB_CTX *Ctx)
| Permet d'écrire au format PEM un context de clef publique dans un fichier.
s1byte * | PemWriteStreamKpubCtx (KPUB_CTX *Ctx)
| Permet d'écrire au format PEM un context de clef publique dans un buffer mémoire.
KPUB_CTX * | GeneratePublicKey (KPRV_CTX *Ctx, s1byte *Password)
| Permet de générer une clef publique à partir d'une clef privée.
void | SignCtxFree (SIGN_CTX *Ctx)
| Effacement et libération d'un context de signature.
SIGN_CTX * | ReadStreamSignCtx (u1byte *Buffer, u4byte Size)
| Permet de lire une signature dans un buffer mémoire.
SIGN_CTX * | ReadFileSignCtx (s1byte *File)
| Permet de lire une signature dans un fichier.
s2byte | WriteFileSignCtx (s1byte *File, SIGN_CTX *Ctx)
| Permet d'écrire un context de signature dans un fichier.
s2byte | WriteStreamSignCtx (u1byte *Buffer, u4byte *Size, SIGN_CTX *Ctx)
| Permet d'écrire un context de signature dans un buffer mémoire.
SIGN_CTX * | PemReadFileSignCtx (s1byte *File)
| Permet de lire une signature au format PEM dans un fichier.
SIGN_CTX * | PemReadStreamSignCtx (s1byte *Buffer)
| Permet de lire une signature au format PEM dans un buffer mémoire.
s2byte | PemWriteFileSignCtx (s1byte *File, SIGN_CTX *Ctx)
| Permet d'écrire au format PEM un context de signature dans un fichier.
s1byte * | PemWriteStreamSignCtx (SIGN_CTX *Ctx)
| Permet d'écrire au format PEM un context de signature dans un buffer mémoire.
SIGN_CTX * | SignFileEcdsa (s1byte *File, s2byte Algo, KPRV_CTX *Ctx, s1byte *Password)
| Permet de signer un fichier en utilisant l'algorithme ECDSA.
s2byte | VerifyFileEcdsa (s1byte *File, SIGN_CTX *Sctx, KPUB_CTX *Kctx)
| Permet de vérifier la signature d'un fichier en utilisant l'algorithme ECDSA.
SIGN_CTX * | SignStreamEcdsa (u1byte *Buffer, u4byte Size, s2byte Algo, KPRV_CTX *Ctx, s1byte *Password)
| Permet de signer un buffer mémoire en utilisant l'algorithme ECDSA.
s2byte | VerifyStreamEcdsa (u1byte *Buffer, u4byte Size, SIGN_CTX *Sctx, KPUB_CTX *Kctx)
| Permet de vérifier la signature d'un fichier en utilisant l'algorithme ECDSA.
SIGN_CTX * | SignFileEcnr (s1byte *File, s2byte Algo, KPRV_CTX *Ctx, s1byte *Password)
| Permet de signer un fichier en utilisant l'algorithme ECNR.
s2byte | VerifyFileEcnr (s1byte *File, SIGN_CTX *Sctx, KPUB_CTX *Kctx)
| Permet de vérifier la signature d'un fichier en utilisant l'algorithme ECNR.
SIGN_CTX * | SignStreamEcnr (u1byte *Buffer, u4byte Size, s2byte Algo, KPRV_CTX *Ctx, s1byte *Password)
| Permet de signer un buffer mémoire en utilisant l'algorithme ECNR.
s2byte | VerifyStreamEcnr (u1byte *Buffer, u4byte Size, SIGN_CTX *Sctx, KPUB_CTX *Kctx)
| Permet de vérifier la signature d'un fichier en utilisant l'algorithme ECNR.
void | EccCipherCtxFree (ECC_CIPHER_CTX *Ctx)
| Effacement et libération d'un context de chiffrement.
ECC_CIPHER_CTX * | CreateEccCipherCtx (u1byte Algo, u1byte Mode, u1byte Compress, u2byte Keysize, u2byte IVsize, u1byte *IV)
| Permet de créer un context de chiffrement.
ECC_CIPHER_CTX * | ReadStreamEccCipherCtx (u1byte *Buffer, u4byte Size)
| Permet de lire une structure de chiffrement dans un buffer mémoire.
ECC_CIPHER_CTX * | ReadFileEccCipherCtx (s1byte *File)
| Permet de lire une structure de chiffrement dans un fichier.
s2byte | WriteFileEccCipherCtx (s1byte *File, ECC_CIPHER_CTX *Ctx)
| Permet d'écrire un context de chiffrement dans un fichier.
s2byte | WriteStreamEccCipherCtx (u1byte *Buffer, u4byte *Size, ECC_CIPHER_CTX *Ctx)
| Permet d'écrire un context de chiffrement dans un buffer mémoire.
ECC_CIPHER_CTX * | PemReadFileEccCipherCtx (s1byte *File)
| Permet de lire une structure de chiffrement au format PEM dans un fichier.
ECC_CIPHER_CTX * | PemReadStreamEccCipherCtx (s1byte *Buffer)
| Permet de lire une structure de chiffrement au format PEM dans un buffer mémoire.
s2byte | PemWriteFileEccCipherCtx (s1byte *File, ECC_CIPHER_CTX *Ctx)
| Permet d'écrire au format PEM un context de chiffrement dans un fichier.
s1byte * | PemWriteStreamEccCipherCtx (ECC_CIPHER_CTX *Ctx)
| Permet d'écrire au format PEM un context de chiffrement dans un buffer mémoire.
s2byte | DecryptFilePsec3 (s1byte *EncryptFile, s1byte *DecryptFile, KPRV_CTX *Ctx, s1byte *Password)
| Permet de déchiffrer un fichier en utilisant l'algorithme PSEC3.
s2byte | EncryptFilePsec3 (s1byte *PlainFile, s1byte *EncryptFile, s2byte Algo, KPUB_CTX *Kctx, ECC_CIPHER_CTX *Cctx)
| Permet de chiffrer un fichier en utilisant l'algorithme PSEC3.
u1byte * | DecryptStreamPsec3 (u1byte *BufferIn, u4byte BufferInSize, s4byte *BufferOutSize, KPRV_CTX *Ctx, s1byte *Password)
| Permet de déchiffrer un buffer mémoire en utilisant l'algorithme PSEC3.
u1byte * | EncryptStreamPsec3 (u1byte *BufferIn, u4byte BufferInSize, s4byte *BufferOutSize, s2byte Algo, KPUB_CTX *Kctx, ECC_CIPHER_CTX *Cctx)
| Permet de chiffrer un buffer mémoire en utilisant l'algorithme PSEC3.
s2byte | DecryptFileEcies (s1byte *EncryptFile, s1byte *DecryptFile, KPRV_CTX *Ctx, s1byte *Password)
| Permet de déchiffrer un fichier en utilisant l'algorithme ECIES.
s2byte | EncryptFileEcies (s1byte *PlainFile, s1byte *EncryptFile, s2byte Algo, KPUB_CTX *Kctx, ECC_CIPHER_CTX *Cctx)
| Permet de chiffrer un fichier en utilisant l'algorithme ECIES.
u1byte * | DecryptStreamEcies (u1byte *BufferIn, u4byte BufferInSize, s4byte *BufferOutSize, KPRV_CTX *Ctx, s1byte *Password)
| Permet de déchiffrer un buffer mémoire en utilisant l'algorithme ECIES.
u1byte * | EncryptStreamEcies (u1byte *BufferIn, u4byte BufferInSize, s4byte *BufferOutSize, s2byte Algo, KPUB_CTX *Kctx, ECC_CIPHER_CTX *Cctx)
| Permet de chiffrer un buffer mémoire en utilisant l'algorithme ECIES.
void | SharingPtFree (SHARING_CTX **Ctx)
| Effacement et libération d'un pointeur sur des context de partage de secret.
SHARING_CTX ** | SharingPtInit (int m)
| Allcation d'un pointeur sur des context de partage de secret.
void | SharingCtxFree (SHARING_CTX *Ctx)
| Effacement et libération d'un context de partage de secret.
SHARING_CTX * | ReadStreamSharingCtx (u1byte *Buffer, u4byte Size)
| Permet de lire une structure de partage de secret dans un buffer mémoire.
SHARING_CTX * | ReadFileSharingCtx (s1byte *File)
| Permet de lire une structure de partage de secret dans un fichier.
s2byte | WriteFileSharingCtx (s1byte *File, SHARING_CTX *Ctx)
| Permet d'écrire un context de partage de secret dans un fichier.
s2byte | WriteStreamSharingCtx (u1byte *Buffer, u4byte *Size, SHARING_CTX *Ctx)
| Permet d'écrire un context de partage de secret dans un buffer mémoire.
SHARING_CTX * | PemReadFileSharingCtx (s1byte *File)
| Permet de lire un context de partage de secret au format PEM dans un fichier.
SHARING_CTX * | PemReadStreamSharingCtx (s1byte *Buffer)
| Permet de lire un context de partage de secret au format PEM dans un buffer mémoire.
s2byte | PemWriteFileSharingCtx (s1byte *File, SHARING_CTX *Ctx)
| Permet d'écrire au format PEM un context de partage de secret dans un fichier.
s1byte * | PemWriteStreamSharingCtx (SHARING_CTX *Ctx)
| Permet d'écrire au format PEM un context de partage de secret dans un buffer mémoire.
u1byte * | ResolveSecretSharingCtx (SHARING_CTX **Ctx, u2byte *Size)
| Permet de retrouver un secret à partir des secrets partagés.
SHARING_CTX ** | CreateSecretSharingCtx (u1byte *Secret, u2byte Size, u2byte Nb, u2byte NbGen)
| Permet de créer des secrets partagés à partir d'un secret.
void | KaCtxFree (KA_CTX *Ctx)
| Effacement et libération d'un context d'authentification.
KA_CTX * | ReadStreamKaCtx (u1byte *Buffer, u4byte Size)
| Permet de lire une structure d'authentification dans un buffer mémoire.
KA_CTX * | ReadFileKaCtx (s1byte *File)
| Permet de lire une structure d'authentification dans un fichier.
s2byte | WriteFileKaCtx (s1byte *File, KA_CTX *Ctx)
| Permet d'écrire un context d'authentification dans un fichier.
s2byte | WriteStreamKaCtx (u1byte *Buffer, u4byte *Size, KA_CTX *Ctx)
| Permet d'écrire un context d'authentification dans un buffer mémoire.
KA_CTX * | PemReadFileKaCtx (s1byte *File)
| Permet de lire un context d'authentification au format PEM dans un fichier.
KA_CTX * | PemReadStreamKaCtx (s1byte *Buffer)
| Permet de lire un context d'authentification au format PEM dans un buffer mémoire.
s2byte | PemWriteFileKaCtx (s1byte *File, KA_CTX *Ctx)
| Permet d'écrire au format PEM un context d'authentification dans un fichier.
s1byte * | PemWriteStreamKaCtx (KA_CTX *Ctx)
| Permet d'écrire au format PEM un context d'authentification dans un buffer mémoire.
KA_CTX * | CreateDHKeyAgreement (KPUB_CTX *KpubCtx, KPRV_CTX *KprvCtx, s1byte *Password)
| Permet de créer un context pour l'authentification Diffie-Hellman.
KA_CTX * | CreateMQVKeyAgreement (KPRV_CTX *Sctx, KPRV_CTX *U_ctx, KPUB_CTX *V_ctx, KPUB_CTX *Wprime_ctx, KPUB_CTX *Vprime_ctx, s1byte *Spassword, s1byte *Upassword)
| Permet de créer un context pour l'authentification Menezes-Qu-Vanstone.
s2byte | VerifyKeyAgreement (KA_CTX *Ka1, KA_CTX *Ka2)
| Permet d'effectuer une authentification Diffie-Hellman ou Menezes-Qu-Vanstone.
u1byte * | GenerateRandom (u4byte Size)
| Permet de générer une valeur pseudo-aléatoire d'une taille donnée (algorithme Mersenne Twister).
u1byte * | GenerateRandomFips186 (u4byte Size)
| Permet de générer une valeur pseudo-aléatoire d'une taille donnée (algorithme du standard FIPS-186).
u1byte * | GenerateRandomAnsiX9_17 (u4byte Size)
| Permet de générer une valeur pseudo-aléatoire d'une taille donnée (algorithme du standard ANSI X9.17).
s2byte | SecureReadPassword (s1byte *Buffer, u2byte Size)
| Permet de lire de manière sécurisé un password sur une console.
void | EcctkEccInfo (char *Information, u2byte Size)
| Permet d'obtenir des informations sur la librairie.
s2byte | InitializeEcctkGf2m ()
| Permet de mettre en place les paramètres nécessaires aux opérations sur GF(2^m).
void | FreeEcctkGf2m ()
| Permet de libérer la mémoire utilisée par les paramètres nécessaires aux opérations sur GF(2^m).
s2byte | InitializeEcctkGfp ()
| Permet de mettre en place les paramètres nécessaires aux opérations sur GF(p).
void | FreeEcctkGfp ()
| Permet de libérer la mémoire utilisée par les paramètres nécessaires aux opérations sur GF(p).
s2byte | InitializeEcctkAll ()
| Permet de mettre en place les paramètres nécessaires aux opérations sur GF(2^m) & GF(p).
void | FreeEcctkAll ()
| Permet de libérer la mémoire utilisée par les paramètres nécessaires aux opérations sur GF(2^m) & GF(p).