@@ -38,15 +38,103 @@ class SoftwareATSEClass
38
38
long random (long max);
39
39
int random (byte data[], size_t length);
40
40
41
+ /* * generatePrivateKey
42
+ *
43
+ * Create a new ECCurve_NIST_P256 keypair and stores it in the WiFi chip NVS.
44
+ * Public key X Y values will be available inside publicKey buffer that should
45
+ * be at least 64 bytes long.
46
+ *
47
+ * | Public key X Y values (64 bytes) |
48
+ *
49
+ * @param[in] slot objectID where to store the private key
50
+ * @param[out] publicKey Buffer containing the public key X Y values
51
+ *
52
+ * @return 0 on Failure 1 on Success
53
+ */
41
54
int generatePrivateKey (int slot, byte publicKey[]);
55
+
56
+ /* * generatePublicKey
57
+ *
58
+ * Reads ECCurve_NIST_P256 public key from KeyID. Public key X Y values will be available
59
+ * inside publicKey buffer that should be at least 64 bytes long.
60
+ *
61
+ * | Public key X Y values (64 bytes) |
62
+ *
63
+ * @param[in] slot objectID where is stored the keypair
64
+ * @param[out] pubkey Buffer containing the public key X Y values
65
+ *
66
+ * @return 0 on Failure 1 on Success
67
+ */
42
68
int generatePublicKey (int slot, byte publicKey[]);
43
69
70
+ /* * ecdsaVerify
71
+ *
72
+ * Verify ECDSA signature using public key.
73
+ *
74
+ * Input SHA256
75
+ * ? Match ?
76
+ * Signature -> public Key -> Original SHA256
77
+ *
78
+ * @param[in] message Input SHA256 used to compute the signature 32 bytes
79
+ * @param[in] sig Input buffer containint the signature R S values 64bytes
80
+ * @param[in] pubkey Public key X Y values 64bytes
81
+ *
82
+ * @return 0 on Failure (Not match) 1 on Success (Match)
83
+ */
44
84
int ecdsaVerify (const byte message[], const byte signature[], const byte pubkey[]);
85
+
86
+ /* * ecSign
87
+ *
88
+ * Computes ECDSA signature using key stored in KeyID SE050 object.
89
+ * Output signature buffer is filled with the signature R S values
90
+ * and should be at least 64 bytes long:
91
+ *
92
+ * | R values 32 bytes | S values 32 bytes |
93
+ *
94
+ * SHA256 -> private Key -> Signature
95
+ *
96
+ * @param[in] slot object ID containing the key
97
+ * @param[in] message Input SHA256 used to compute the signature 32 bytes
98
+ * @param[out] signature Output buffer containint the signature 64 bytes
99
+ *
100
+ * @return 0 on Failure 1 on Success
101
+ */
45
102
int ecSign (int slot, const byte message[], byte signature[]);
46
103
104
+ /* * SHA256
105
+ *
106
+ * One-shot SHA256
107
+ *
108
+ * @param[in] buffer Input data buffer
109
+ * @param[in] size Input data length
110
+ * @param[out] digest Output buffer should be at least 32 bytes long
111
+ *
112
+ * @return 0 on Failure 1 on Success
113
+ */
47
114
int SHA256 (const uint8_t *buffer, size_t size, uint8_t *digest);
48
115
116
+ /* * readSlot
117
+ *
118
+ * Reads binary data from Software AT Secure Element object.
119
+ *
120
+ * @param[in] slot object ID containing data
121
+ * @param[out] data Output data buffer
122
+ * @param[in] length Number of bytes to read
123
+ *
124
+ * @return 0 on Failure 1 on Success
125
+ */
49
126
int readSlot (int slot, byte data[], int length);
127
+
128
+ /* * writeSlot
129
+ *
130
+ * Writes binary data into Software AT Secure Element object.
131
+ *
132
+ * @param[in] slot object ID
133
+ * @param[in] data Input data buffer
134
+ * @param[in] length Number of bytes to write
135
+ *
136
+ * @return 0 on Failure 1 on Success
137
+ */
50
138
int writeSlot (int slot, const byte data[], int length);
51
139
52
140
inline int locked () { return 1 ; }
0 commit comments