85
85
/*****************************************************************************
86
86
* GLOBAL VARIABLES
87
87
*****************************************************************************/
88
- stark_curve stark256 = {
89
- .prime = /* .prime */ {/*.val =*/ {0x3ffffc2f ,
90
- 0x3ffffffb ,
91
- 0x3fffffff ,
92
- 0x3fffffff ,
93
- 0x3fffffff ,
94
- 0x3fffffff ,
95
- 0x3fffffff ,
96
- 0x3fffffff ,
97
- 0xffff }},
98
-
99
- // /* G */
100
- // {/*.x =*/{/*.val =*/{0x16f81798,
101
- // 0x27ca056c,
102
- // 0x1ce28d95,
103
- // 0x26ff36cb,
104
- // 0x70b0702,
105
- // 0x18a573a,
106
- // 0xbbac55a,
107
- // 0x199fbe77,
108
- // 0x79be}},
109
- // /*.y =*/{/*.val =*/{0x3b10d4b8,
110
- // 0x311f423f,
111
- // 0x28554199,
112
- // 0x5ed1229,
113
- // 0x1108a8fd,
114
- // 0x13eff038,
115
- // 0x3c4655da,
116
- // 0x369dc9a8,
117
- // 0x483a}}},
118
-
119
- // /* order */
120
- // {/*.val =*/{0x10364141,
121
- // 0x3f497a33,
122
- // 0x348a03bb,
123
- // 0x2bb739ab,
124
- // 0x3ffffeba,
125
- // 0x3fffffff,
126
- // 0x3fffffff,
127
- // 0x3fffffff,
128
- // 0xffff}},
129
-
130
- /* order_half */
131
- .order_half = {/*.val =*/ {0x281b20a0 ,
132
- 0x3fa4bd19 ,
133
- 0x3a4501dd ,
134
- 0x15db9cd5 ,
135
- 0x3fffff5d ,
136
- 0x3fffffff ,
137
- 0x3fffffff ,
138
- 0x3fffffff ,
139
- 0x7fff }},
140
-
141
- // /* a */
142
- // {},
143
-
144
- // /* b */ {/*.val =*/{7}}
145
- };
146
-
147
- stark_pedersen pedersen ;
88
+ const stark_curve * starkCurve ;
89
+ const stark_pedersen * starkPts ;
148
90
149
91
/*****************************************************************************
150
92
* STATIC FUNCTIONS
151
93
*****************************************************************************/
94
+ static void stark_curve_init ();
95
+ static void stark_pedersen_init ();
96
+ static void print_stark_curve ();
97
+ static void print_stark_perdersen ();
152
98
153
99
/*****************************************************************************
154
100
* GLOBAL FUNCTIONS
155
101
*****************************************************************************/
156
- void starknet_curve_init () {
157
- char str [65 ] = "" ;
102
+
103
+ void starknet_init () {
104
+ stark_curve_init ();
105
+ stark_pedersen_init ();
106
+ }
107
+
108
+ static void stark_curve_init () {
109
+ stark_curve stark256 ;
110
+ char str [STARK_BN_LEN ] = {0 };
158
111
159
112
/* stark_curve_params ref:
160
113
https://github.com/xJonathanLEI/starknet-rs/blob/f31e426a65225b9830bbf3c148f7ea05bf9dc257/starknet-curve/src/curve_params.rs
@@ -167,23 +120,21 @@ void starknet_curve_init() {
167
120
*/
168
121
169
122
// Prime
170
- // bignum_from_int(
171
- // &stark256.prime,
172
- // "",
173
- // STARK_BN_LEN);
174
-
175
- // bignum_to_string()
123
+ bignum_from_string (
124
+ & stark256 .prime ,
125
+ "0800000000000011000000000000000000000000000000000000000000000001" ,
126
+ STARK_BN_LEN );
176
127
177
128
// Generator_point x
178
129
bignum_from_string (
179
130
& stark256 .G .x ,
180
- "01ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca " ,
131
+ "01EF15C18599971B7BECED415A40F0C7DEACFD9B0D1819E03D723D8BC943CFCA " ,
181
132
STARK_BN_LEN );
182
133
183
134
// Generator_point y
184
135
bignum_from_string (
185
136
& stark256 .G .y ,
186
- "005668060aa49730b7be4801df46ec62de53ecd11abe43a32873000c36e8dc1f " ,
137
+ "005668060AA49730B7BE4801DF46EC62DE53ECD11ABE43A32873000C36E8DC1F " ,
187
138
STARK_BN_LEN );
188
139
189
140
// Order
@@ -193,10 +144,10 @@ void starknet_curve_init() {
193
144
STARK_BN_LEN );
194
145
195
146
// Order half
196
- // bignum_from_string(
197
- // &stark256.order_half,
198
- // " ",
199
- // STARK_BN_LEN);
147
+ bignum_from_string (
148
+ & stark256 .order_half ,
149
+ "06F21413EFBE40DE150E596D72F7A8C5609AD26C15C915C1F4CDFCB99CEE9E89 " ,
150
+ STARK_BN_LEN );
200
151
201
152
// Alpha
202
153
bignum_from_string (
@@ -211,11 +162,15 @@ void starknet_curve_init() {
211
162
STARK_BN_LEN );
212
163
213
164
print_stark_curve ();
165
+
166
+ starkCurve = & stark256 ;
214
167
}
215
168
216
- void starknet_pedersen_init () {
169
+ static void stark_pedersen_init () {
217
170
// Ref: https://docs.starkware.co/starkex/crypto/pedersen-hash-function.html
218
- char str [65 ] = "" ;
171
+
172
+ stark_pedersen pedersen ;
173
+ char str [STARK_BN_LEN ] = {0 };
219
174
220
175
// Shift_point
221
176
// x
@@ -278,41 +233,44 @@ void starknet_pedersen_init() {
278
233
STARK_BN_LEN );
279
234
280
235
print_stark_perdersen ();
236
+
237
+ starkPts = & pedersen ;
281
238
}
282
239
283
- void print_stark_curve () {
240
+ static void print_stark_curve () {
284
241
char str [STARK_BN_LEN ];
285
242
286
- bignum_to_string (& stark256 .prime , str , STARK_BN_LEN );
287
- print_hex_array ("\nPrime" , str , STARK_BN_LEN / 2 );
243
+ bignum_to_string (& starkCurve -> prime , str , STARK_BN_LEN );
244
+ printf ("\nPrime: %s" , str );
245
+
246
+ bignum_to_string (& starkCurve -> G .x , str , STARK_BN_LEN );
247
+ printf ("\nG x: %s" , str );
288
248
289
- bignum_to_string (& stark256 .G .x , str , STARK_BN_LEN );
290
- print_hex_array ("G (Generator Point) x" , str , STARK_BN_LEN / 2 );
291
- bignum_to_string (& stark256 .G .y , str , STARK_BN_LEN );
292
- print_hex_array ("G (Generator Point) y" , str , STARK_BN_LEN / 2 );
249
+ bignum_to_string (& starkCurve -> G .y , str , STARK_BN_LEN );
250
+ printf ("\nG y: %s" , str );
293
251
294
- bignum_to_string (& stark256 . order , str , STARK_BN_LEN );
295
- print_hex_array ( "Order " , str , STARK_BN_LEN / 2 );
252
+ bignum_to_string (& starkCurve -> order , str , STARK_BN_LEN );
253
+ printf ( "\nOrder: %s " , str );
296
254
297
- bignum_to_string (& stark256 . order_half , str , STARK_BN_LEN );
298
- print_hex_array ( "Order half" , str , STARK_BN_LEN / 2 );
255
+ bignum_to_string (& starkCurve -> order_half , str , STARK_BN_LEN );
256
+ printf ( "\nOrder half: %s " , str );
299
257
300
- bignum_to_string (& stark256 . a , str , STARK_BN_LEN );
301
- print_hex_array ( "Alpha " , str , STARK_BN_LEN / 2 );
258
+ bignum_to_string (& starkCurve -> a , str , STARK_BN_LEN );
259
+ printf ( "\nAlpha: %s " , str );
302
260
303
- bignum_to_string (& stark256 . b , str , STARK_BN_LEN );
304
- print_hex_array ( "Beta " , str , STARK_BN_LEN / 2 );
261
+ bignum_to_string (& starkCurve -> b , str , STARK_BN_LEN );
262
+ printf ( "\nBeta: %s " , str );
305
263
}
306
264
307
- void print_stark_perdersen () {
265
+ static void print_stark_perdersen () {
308
266
char str [STARK_BN_LEN ];
309
267
310
268
for (int i = 0 ; i < 5 ; i ++ ) {
311
- bignum_to_string (& pedersen . P [i ].x , str , STARK_BN_LEN );
312
- print_hex_array ("P (Pedersen Point) x" , str , STARK_BN_LEN / 2 );
269
+ bignum_to_string (& starkPts -> P [i ].x , str , STARK_BN_LEN );
270
+ printf ("P%d (Pedersen Point) x" , i , str );
313
271
314
- bignum_to_string (& pedersen . P [i ].y , str , STARK_BN_LEN );
315
- print_hex_array ("P (Pedersen Point) y" , str , STARK_BN_LEN / 2 );
272
+ bignum_to_string (& starkPts -> P [i ].y , str , STARK_BN_LEN );
273
+ printf ("P%d (Pedersen Point) y" , i , str );
316
274
}
317
275
}
318
276
@@ -404,7 +362,7 @@ int stark_point_is_negative_of(const stark_point *p, const stark_point *q) {
404
362
void private_to_public_key (const uint8_t * private , uint8_t * public_65 ) {
405
363
stark_point R = {0 }, temp = {0 };
406
364
407
- const stark_curve * curve = & stark256 ;
365
+ const stark_curve * curve = starkCurve ;
408
366
stark_point_set_infinity (& R );
409
367
stark_point_copy (& curve -> G , & temp );
410
368
0 commit comments