TrustCore SDK NanoCrypto API reference  version 7.0
ecc_edwards_dsa.h
Go to the documentation of this file.
1 /*
2  * ecc_edwards_dsa.h
3  *
4  * Header for Edward's Curve Digital Signature (edDSA) operations.
5  *
6  * Copyright 2019-2024 DigiCert, Inc. All Rights Reserved.
7  * Proprietary and Confidential Material.
8  *
9  */
10 
27 /*------------------------------------------------------------------*/
28 
29 #ifndef __ECC_EDWARDS_DSA_HEADER__
30 #define __ECC_EDWARDS_DSA_HEADER__
31 
32 #include "../crypto/ecc_edwards_keys.h"
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 /* verifyStatus bit positions for edDSA_VerifySignature */
39 #define MOCANA_EDDSA_VERIFY_FAIL 0x00000001
40 #define MOCANA_EDDSA_VERIFY_R_INVALID 0x00000002
41 #define MOCANA_EDDSA_VERIFY_S_INVALID 0x00000004
42 #define MOCANA_EDDSA_VERIFY_PUB_KEY_INVALID 0x00000008
43 
44 typedef struct edDSA_CTX
45 {
46 
47  ubyte *pPubKey;
48  union
49  {
50  ubyte *pPrivKey; /* needed for sign only */
51  ubyte *pSignature; /* needed for verify only */
52  };
53  ubyte *pCtx;
54  ubyte4 ctxLen;
55  edECCCurve curve;
56  BulkHashAlgo shaSuite;
57  union
58  {
59  void *pShaCtx;
60  void *pECCKey; /* access for alternative implementations */
61  };
62  ubyte4 verifyStatus; /* needed for verify only */
63  byteBoolean initialized;
64  byteBoolean preHash;
65  ubyte4 enabled; /* flag for alternative implementations */
66 
67 } edDSA_CTX;
68 
69 
95 MOC_EXTERN MSTATUS edDSA_Sign(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pMessage, ubyte4 messageLen, ubyte *pSignature,
96  ubyte4 bufferSize, ubyte4 *pSignatureLen, BulkHashAlgo *pShaSuite, byteBoolean preHash, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx);
97 
126 MOC_EXTERN MSTATUS edDSA_VerifySignature(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pMessage, ubyte4 messageLen, ubyte *pSignature,
127  ubyte4 signatureLen, ubyte4 *pVerifyStatus, BulkHashAlgo *pShaSuite, byteBoolean preHash, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx);
128 
129 
151 MOC_EXTERN MSTATUS edDSA_initSignPreHash(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, edECCKey *pKey, BulkHashAlgo *pShaSuite, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx);
152 
175 MOC_EXTERN MSTATUS edDSA_initVerify(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, edECCKey *pKey, ubyte *pSignature,
176  ubyte4 signatureLen, BulkHashAlgo *pShaSuite, byteBoolean preHash, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx);
177 
192 MOC_EXTERN MSTATUS edDSA_update(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, ubyte *pMessage, ubyte4 messageLen, void *pExtCtx);
193 
209 MOC_EXTERN MSTATUS edDSA_finalSign(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, ubyte *pSignature, ubyte4 bufferSize, ubyte4 *pSignatureLen, void *pExtCtx);
210 
227 MOC_EXTERN MSTATUS edDSA_finalVerify(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, ubyte4 *pVerifyStatus, void *pExtCtx);
228 
229 #ifdef __cplusplus
230 }
231 #endif
232 
233 #endif /* __ECC_EDWARDS_DSA_HEADER__ */
MOC_EXTERN MSTATUS edDSA_finalVerify(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, ubyte4 *pVerifyStatus, void *pExtCtx)
Finalizes an edDSA_CTX context and writes the verify status.
Structure to hold function pointers to hashing or extenable output methods.
Definition: crypto.h:133
MOC_EXTERN MSTATUS edDSA_finalSign(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, ubyte *pSignature, ubyte4 bufferSize, ubyte4 *pSignatureLen, void *pExtCtx)
Finalizes an edDSA_CTX and outputs the signature.
MOC_EXTERN MSTATUS edDSA_initSignPreHash(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, edECCKey *pKey, BulkHashAlgo *pShaSuite, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx)
Initializes an edDSA_CTX for use in the EdDSA sign algorithm.
MOC_EXTERN MSTATUS edDSA_Sign(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pMessage, ubyte4 messageLen, ubyte *pSignature, ubyte4 bufferSize, ubyte4 *pSignatureLen, BulkHashAlgo *pShaSuite, byteBoolean preHash, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx)
Signs a message via the EdDSA algorithm.
MOC_EXTERN MSTATUS edDSA_update(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, ubyte *pMessage, ubyte4 messageLen, void *pExtCtx)
Updates an edDSA_CTX with data.
edECCCurve
Identifiers for the Edward's form curves and algorithms.
Definition: ecc_edwards_keys.h:52
MOC_EXTERN MSTATUS edDSA_VerifySignature(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pMessage, ubyte4 messageLen, ubyte *pSignature, ubyte4 signatureLen, ubyte4 *pVerifyStatus, BulkHashAlgo *pShaSuite, byteBoolean preHash, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx)
A one shot verify of a message via the EdDSA algorithm.
MOC_EXTERN MSTATUS edDSA_initVerify(MOC_ECC(hwAccelDescr hwAccelCtx) edDSA_CTX *pEdDSA_ctx, edECCKey *pKey, ubyte *pSignature, ubyte4 signatureLen, BulkHashAlgo *pShaSuite, byteBoolean preHash, ubyte *pCtx, ubyte4 ctxLen, void *pExtCtx)
Initializes an edDSA_CTX for use in the EdDSA verify algorithm.