CAVP crypto 113.10.09
Implements various cryptographic algorithms for CAVP validation.
 
Loading...
Searching...
No Matches
myEcdsa.c File Reference
#include <tomcrypt.h>
#include <tommath.h>
#include "myEcdsa.h"
#include "utils.h"

Functions

void ecdsaKeyPair (int keypairCurve)
 產生ECDSA的key pair
 
int ecdsaKeyVerify (int keypairCurve, char *qx, char *qy)
 驗證ECDSA的key pair
 
void hash_message (char *message, unsigned long messageLen, int hashAlgorithm, unsigned char *out, unsigned long *outlen)
 
void ecdsaSignatureGenerate (int keypairCurve, int hashAlgorithm, char *d, char *message)
 產生ECDSA的簽章
 
int ecdsaSignatureVerify (int keypairCurve, int hashAlgorithm, char *qx, char *qy, char *r, char *s, char *message)
 驗證ECDSA的簽章
 

Variables

const int ECDSA_CURVE_P256 = 1
 
const int ECDSA_CURVE_P384 = 2
 
const int ECDSA_CURVE_P521 = 3
 
const int ECDSA_HASH_SHA2_256 = 1
 
const int ECDSA_HASH_SHA2_384 = 2
 
const int ECDSA_HASH_SHA2_512 = 3
 
const int ECDSA_HASH_SHA3_256 = 4
 
const int ECDSA_HASH_SHA3_384 = 5
 
const int ECDSA_HASH_SHA3_512 = 6
 
const int ECDSA_HASH_SHAKE128 = 7
 
const int ECDSA_HASH_SHAKE256 = 8
 

Function Documentation

◆ ecdsaKeyPair()

void ecdsaKeyPair ( int keypairCurve)

產生ECDSA的key pair

產生ECDSA的key pair,可以選擇不同的curve 使用範例:

const int ECDSA_CURVE_P256
Definition myEcdsa.c:7
void ecdsaKeyPair(int keypairCurve)
產生ECDSA的key pair
Definition myEcdsa.c:11
Parameters
keypairCurveECDSA_CURVE_P256, ECDSA_CURVE_P384, ECDSA_CURVE_P521

◆ ecdsaKeyVerify()

int ecdsaKeyVerify ( int keypairCurve,
char * qx,
char * qy )

驗證ECDSA的key pair

驗證ECDSA的key pair,可以選擇不同的curve 使用範例:

char* qx = "B5524388413982F4A4DDF018240EA61270EA0524F4B7675654AF9B9E754AB8F07B10D80CE44722679E35B4A25B64B09C";
char* qy = "F739CF6189E6B750054EA5182E42399780BBB39D1A4BF70DB853857B8E9BA077B77C15D8A8BD0D645D70CDA4D50BF7D5";
int result = ecdsaKeyVerify(ECDSA_CURVE_P384, qx, qy); //1
printf("result: %d\n", result);
const int ECDSA_CURVE_P384
Definition myEcdsa.c:8
int ecdsaKeyVerify(int keypairCurve, char *qx, char *qy)
驗證ECDSA的key pair
Definition myEcdsa.c:106
Parameters
keypairCurveECDSA_CURVE_P256, ECDSA_CURVE_P384, ECDSA_CURVE_P521
qx公鑰的x座標
qy公鑰的y座標
Returns
1:成功 0:失敗

◆ ecdsaSignatureGenerate()

void ecdsaSignatureGenerate ( int keypairCurve,
int hashAlgorithm,
char * d,
char * message )

產生ECDSA的簽章

產生ECDSA的簽章,可以選擇不同的curve及hash演算法
使用範例:

char* d = "419C5769809C963614837F0B90119BDB403FC71100E08235EA143B9E78C1FE42";
char* message = "97F4CBB1A874F3F4F87B14411F97CCC2D02A5B0DB67C5BB"
"01557D74230A05F9578527215FF5E0020A0CA5C6E401E53"
"BD65841AAA9EDE31090ACA0FA99494BF54E9555F7254314"
"7EAD5F9ECE785667B25006CD6EFF549EBD7C5C6474648D5"
"198DB1E2D4BC4454293C730FF389B6F6D05110587FAE217"
"137BE11A3C77D6DBAFAC8";
void ecdsaSignatureGenerate(int keypairCurve, int hashAlgorithm, char *d, char *message)
產生ECDSA的簽章
Definition myEcdsa.c:353
const int ECDSA_HASH_SHA2_256
Definition myEcdsa.c:226
mp_int d
Definition myRsa.c:192
Parameters
keypairCurveECDSA_CURVE_P256, ECDSA_CURVE_P384, ECDSA_CURVE_P521
hashAlgorithmECDSA_HASH_SHA2_256, ECDSA_HASH_SHA2_384, ECDSA_HASH_SHA2_512, ECDSA_HASH_SHA3_256, ECDSA_HASH_SHA3_384, ECDSA_HASH_SHA3_512, ECDSA_HASH_SHAKE128, ECDSA_HASH_SHAKE256
d私鑰
message訊息

◆ ecdsaSignatureVerify()

int ecdsaSignatureVerify ( int keypairCurve,
int hashAlgorithm,
char * qx,
char * qy,
char * r,
char * s,
char * message )

驗證ECDSA的簽章

驗證ECDSA的簽章,可以選擇不同的curve及hash演算法 使用範例:

char* qx = "765AFA3EEEE046FD5BDA99F7DE707D313C04F29E15579A50C18E193F527EDA87";
char* qy = "00A80C57E3E3A416750D5CB936AE3F1BFC75BB4263620DDA272DD3FB26AD4E6507";
char* r = "D6B69ED0200EC563CBD3F12240809D7613EFE712A0D95DEB1EFBBD21CB868B42";
char* s = "236ADAAE2DCE176EB3EA0193CC4E45EA7CDDF5315ADEC71DFA6062DDD9D0DBE6";
char* message = "97F4CBB1A874F3F4F87B14411F97CCC2D02A5B0DB67C5BB01557D74230A05F9578527215FF5E00"
"20A0CA5C6E401E53BD65841AAA9EDE31090ACA0FA99494BF54E9555F72543147EAD5F9ECE78566"
"7B25006CD6EFF549EBD7C5C6474648D5198DB1E2D4BC4454293C730FF389B6F6D05110587FAE217"
"137BE11A3C77D6DBAFAC8";
int ecdsaSignatureVerify(int keypairCurve, int hashAlgorithm, char *qx, char *qy, char *r, char *s, char *message)
驗證ECDSA的簽章
Definition myEcdsa.c:496
Parameters
keypairCurveECDSA_CURVE_P256, ECDSA_CURVE_P384, ECDSA_CURVE_P521
hashAlgorithmECDSA_HASH_SHA2_256, ECDSA_HASH_SHA2_384, ECDSA_HASH_SHA2_512, ECDSA_HASH_SHA3_256, ECDSA_HASH_SHA3_384, ECDSA_HASH_SHA3_512, ECDSA_HASH_SHAKE128, ECDSA_HASH_SHAKE256
qx公鑰的x座標
qy公鑰的y座標
r簽章的r值
s簽章的s值
message訊息
Returns
1:成功 0:失敗

◆ hash_message()

void hash_message ( char * message,
unsigned long messageLen,
int hashAlgorithm,
unsigned char * out,
unsigned long * outlen )

Variable Documentation

◆ ECDSA_CURVE_P256

const int ECDSA_CURVE_P256 = 1

◆ ECDSA_CURVE_P384

const int ECDSA_CURVE_P384 = 2

◆ ECDSA_CURVE_P521

const int ECDSA_CURVE_P521 = 3

◆ ECDSA_HASH_SHA2_256

const int ECDSA_HASH_SHA2_256 = 1

◆ ECDSA_HASH_SHA2_384

const int ECDSA_HASH_SHA2_384 = 2

◆ ECDSA_HASH_SHA2_512

const int ECDSA_HASH_SHA2_512 = 3

◆ ECDSA_HASH_SHA3_256

const int ECDSA_HASH_SHA3_256 = 4

◆ ECDSA_HASH_SHA3_384

const int ECDSA_HASH_SHA3_384 = 5

◆ ECDSA_HASH_SHA3_512

const int ECDSA_HASH_SHA3_512 = 6

◆ ECDSA_HASH_SHAKE128

const int ECDSA_HASH_SHAKE128 = 7

◆ ECDSA_HASH_SHAKE256

const int ECDSA_HASH_SHAKE256 = 8