TrustCore SDK NanoCrypto API reference  version 7.0
keyblob.h
Go to the documentation of this file.
1 /*
2  * keyblob.h
3  *
4  * Functions for serializing key blobs
5  *
6  * Copyright 2019-2024 DigiCert, Inc. All Rights Reserved.
7  * Proprietary and Confidential Material.
8  *
9  */
10 
34 /*------------------------------------------------------------------*/
35 
36 #ifndef __KEYBLOB_HEADER__
37 #define __KEYBLOB_HEADER__
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 
44 /*------------------------------------------------------------------*/
45 
46 /* these values are serialized -- add but don't modify */
47 /* these values correspond to the AsymmetricKey types */
48 typedef enum
49 {
50  keyblob_type_undefined = 0, /* keep it 0 -> static var are correctly initialized */
51  /* as undefined */
52  keyblob_type_rsa = 0x01, /* must be same as akt_rsa in ca_mgmt.h */
53  keyblob_type_ecc = 0x02, /* must be same as akt_ecc in ca_mgmt.h */
54  keyblob_type_dsa = 0x03, /* must be same as akt_dsa in ca_mgmt.h */
55  keyblob_type_rsa_pss = 0x05, /* must be same as akt_rsa_pss in ca_mgmt.h */
56 
57  keyblob_type_custom = 0x65, /* must be same as akt_custom in ca_mgmt.h */
58  keyblob_type_moc = 0x66, /* must be same as akt_moc in ca_mgmt.h */
59 
60  keyblob_type_ecc_ed = 112, /* must be same as akt_ecc_ed in ca_mgmt.h */
61  keyblob_type_hybrid = 113, /* must be same as akt_hybrid in ca_mgmt.h */
62 
63  /* HSM types */
64  keyblob_type_hsm_rsa = 0x010001,
65  keyblob_type_hsm_ecc = 0x010002,
66 
67  keyblob_tap_rsa = 0x00020001,
68  keyblob_tap_ecc = 0x00020002
69 
70 } KEYBLOB_TYPE;
71 
72 
73 /*------------------------------------------------------------------*/
74 
75 struct AsymmetricKey;
76 
77 #ifdef __PUBCRYPTO_HEADER__
78 
83 MOC_EXTERN MSTATUS KEYBLOB_makeKeyBlobEx(const AsymmetricKey *pKey, ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength);
89 MOC_EXTERN MSTATUS KEYBLOB_extractKeyBlobEx(const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey* pKey);
95 MOC_EXTERN MSTATUS KEYBLOB_extractKeyBlobTypeEx(const ubyte *pKeyBlob, ubyte4 keyBlobLength, ubyte4 *pRetKeyType);
101 MOC_EXTERN MSTATUS KEYBLOB_extractPublicKey(const ubyte *pKeyBlob, ubyte4 keyBlobLength, ubyte **ppRetPublicKeyBlob, ubyte4 *pRetPublicKeyBlobLength, ubyte4 *pRetKeyType);
102 #endif /* __PUBCRYPTO_HEADER__ */
103 
109 MOC_EXTERN MSTATUS
110 KEYBLOB_makeRSAKeyBlob(MOC_RSA(hwAccelDescr hwAccelCtx)
111  RSAKey *pRSAContext, ubyte **ppRetKeyBlob,
112  ubyte4 *pRetKeyLength);
113 
114 #ifdef __ENABLE_MOCANA_DSA__
115 
120 MOC_EXTERN MSTATUS
121 KEYBLOB_makeDSAKeyBlob(MOC_DSA(hwAccelDescr hwAccelCtx)
122  DSAKey *pDSAContext, ubyte **ppRetKeyBlob,
123  ubyte4 *pRetKeyLength);
124 #endif
125 
126 #ifdef __ENABLE_MOCANA_ECC__
127 
132 MOC_EXTERN MSTATUS
133 KEYBLOB_makeECCKeyBlob(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pECCKey, ubyte4 curveId,
134  ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength);
135 
136 #ifdef __ENABLE_MOCANA_QS__
137 MOC_EXTERN MSTATUS
138 KEYBLOB_makeHybridBlob(ECCKey *pECCKey, QS_CTX *pCtx,
139  ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength);
140 #endif
141 #endif
142 
143 #if defined(__ENABLE_MOCANA_HW_SECURITY_MODULE__)
144 
149 MOC_EXTERN MSTATUS
150 KEYBLOB_makeHSMRSAKeyBlob(RSAKey *pRSAKey, ubyte **ppRetKeyBlob,
151  ubyte4 *pRetKeyLength);
152 #endif
153 
154 
155 #if (defined(__ENABLE_MOCANA_DSA__))
156 
161 MOC_EXTERN MSTATUS
162 KEYBLOB_readDSAKeyPart(MOC_DSA(hwAccelDescr hwAccelCtx) const ubyte *pKeyBlob, ubyte4 keyBlobLength,
163  AsymmetricKey* pKey);
164 #endif
165 
166 #if (defined(__ENABLE_MOCANA_ECC__))
167 
172 MOC_EXTERN MSTATUS
173 KEYBLOB_readECCKeyPart(MOC_ECC(hwAccelDescr hwAccelCtx) const ubyte *pKeyBlob, ubyte4 keyBlobLength,
174  AsymmetricKey* pKey);
175 #endif
176 
182 MOC_EXTERN MSTATUS
183 KEYBLOB_readOldRSAKeyBlob(MOC_RSA(hwAccelDescr hwAccelCtx)
184  const ubyte *pKeyBlob, ubyte4 keyBlobLength,
185  AsymmetricKey* pKey);
186 
192 MOC_EXTERN MSTATUS
193 KEYBLOB_readRSAKeyPart(MOC_RSA(hwAccelDescr hwAccelCtx)
194  const ubyte *pKeyBlob, ubyte4 keyBlobLength,
195  AsymmetricKey* pKey);
196 
197 #if defined(__ENABLE_MOCANA_HW_SECURITY_MODULE__)
198 
203 MOC_EXTERN MSTATUS
204 KEYBLOB_readHSMRSAKeyPart(const ubyte *pKeyBlob, ubyte4 keyBlobLength,
205  AsymmetricKey* pKey);
206 #endif
207 
208 MOC_EXTERN MSTATUS KEYBLOB_parseHeader(
209  const ubyte *pKeyBlob,
210  ubyte4 keyBlobLen,
211  ubyte4 *pKeyType,
212  ubyte4 *pVersion
213  );
214 
215 #ifdef __cplusplus
216 }
217 #endif
218 
219 #endif /* __KEYBLOB_HEADER__ */
MOC_EXTERN MSTATUS KEYBLOB_makeHSMRSAKeyBlob(RSAKey *pRSAKey, ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_makeRSAKeyBlob(MOC_RSA(hwAccelDescr hwAccelCtx) RSAKey *pRSAContext, ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_extractKeyBlobTypeEx(const ubyte *pKeyBlob, ubyte4 keyBlobLength, ubyte4 *pRetKeyType)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_readDSAKeyPart(MOC_DSA(hwAccelDescr hwAccelCtx) const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey *pKey)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_makeKeyBlobEx(const AsymmetricKey *pKey, ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_readRSAKeyPart(MOC_RSA(hwAccelDescr hwAccelCtx) const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey *pKey)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_makeECCKeyBlob(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pECCKey, ubyte4 curveId, ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_extractKeyBlobEx(const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey *pKey)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_readOldRSAKeyBlob(MOC_RSA(hwAccelDescr hwAccelCtx) const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey *pKey)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_readHSMRSAKeyPart(const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey *pKey)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_readECCKeyPart(MOC_ECC(hwAccelDescr hwAccelCtx) const ubyte *pKeyBlob, ubyte4 keyBlobLength, AsymmetricKey *pKey)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_extractPublicKey(const ubyte *pKeyBlob, ubyte4 keyBlobLength, ubyte **ppRetPublicKeyBlob, ubyte4 *pRetPublicKeyBlobLength, ubyte4 *pRetKeyType)
This is an old function.
MOC_EXTERN MSTATUS KEYBLOB_makeDSAKeyBlob(MOC_DSA(hwAccelDescr hwAccelCtx) DSAKey *pDSAContext, ubyte **ppRetKeyBlob, ubyte4 *pRetKeyLength)
This is an old function.