@@ -212,6 +212,12 @@ pub fn do_addr_humanize<A: BackendApi, S: Storage, Q: Querier>(
212
212
}
213
213
}
214
214
215
+ /// Return code (error code) for a valid signature
216
+ const SECP256K1_VERIFY_CODE_VALID : u32 = 0 ;
217
+
218
+ /// Return code (error code) for an invalid signature
219
+ const SECP256K1_VERIFY_CODE_INVALID : u32 = 1 ;
220
+
215
221
pub fn do_secp256k1_verify < A : BackendApi , S : Storage , Q : Querier > (
216
222
env : & Environment < A , S , Q > ,
217
223
hash_ptr : u32 ,
@@ -225,9 +231,15 @@ pub fn do_secp256k1_verify<A: BackendApi, S: Storage, Q: Querier>(
225
231
let gas_info = GasInfo :: with_cost ( env. gas_config . secp256k1_verify_cost ) ;
226
232
process_gas_info :: < A , S , Q > ( env, gas_info) ?;
227
233
let result = secp256k1_verify ( & hash, & signature, & pubkey) ;
228
- #[ allow( clippy:: bool_to_int_with_if) ]
229
- Ok ( result. map_or_else (
230
- |err| match err {
234
+ let code = match result {
235
+ Ok ( valid) => {
236
+ if valid {
237
+ SECP256K1_VERIFY_CODE_VALID
238
+ } else {
239
+ SECP256K1_VERIFY_CODE_INVALID
240
+ }
241
+ }
242
+ Err ( err) => match err {
231
243
CryptoError :: InvalidHashFormat { .. }
232
244
| CryptoError :: InvalidPubkeyFormat { .. }
233
245
| CryptoError :: InvalidSignatureFormat { .. }
@@ -236,8 +248,8 @@ pub fn do_secp256k1_verify<A: BackendApi, S: Storage, Q: Querier>(
236
248
panic ! ( "Error must not happen for this call" )
237
249
}
238
250
} ,
239
- |valid| if valid { 0 } else { 1 } ,
240
- ) )
251
+ } ;
252
+ Ok ( code )
241
253
}
242
254
243
255
pub fn do_secp256k1_recover_pubkey < A : BackendApi , S : Storage , Q : Querier > (
@@ -273,6 +285,12 @@ pub fn do_secp256k1_recover_pubkey<A: BackendApi, S: Storage, Q: Querier>(
273
285
}
274
286
}
275
287
288
+ /// Return code (error code) for a valid signature
289
+ const ED25519_VERIFY_CODE_VALID : u32 = 0 ;
290
+
291
+ /// Return code (error code) for an invalid signature
292
+ const ED25519_VERIFY_CODE_INVALID : u32 = 1 ;
293
+
276
294
pub fn do_ed25519_verify < A : BackendApi , S : Storage , Q : Querier > (
277
295
env : & Environment < A , S , Q > ,
278
296
message_ptr : u32 ,
@@ -286,9 +304,15 @@ pub fn do_ed25519_verify<A: BackendApi, S: Storage, Q: Querier>(
286
304
let gas_info = GasInfo :: with_cost ( env. gas_config . ed25519_verify_cost ) ;
287
305
process_gas_info :: < A , S , Q > ( env, gas_info) ?;
288
306
let result = ed25519_verify ( & message, & signature, & pubkey) ;
289
- #[ allow( clippy:: bool_to_int_with_if) ]
290
- Ok ( result. map_or_else (
291
- |err| match err {
307
+ let code = match result {
308
+ Ok ( valid) => {
309
+ if valid {
310
+ ED25519_VERIFY_CODE_VALID
311
+ } else {
312
+ ED25519_VERIFY_CODE_INVALID
313
+ }
314
+ }
315
+ Err ( err) => match err {
292
316
CryptoError :: InvalidPubkeyFormat { .. }
293
317
| CryptoError :: InvalidSignatureFormat { .. }
294
318
| CryptoError :: GenericErr { .. } => err. code ( ) ,
@@ -298,8 +322,8 @@ pub fn do_ed25519_verify<A: BackendApi, S: Storage, Q: Querier>(
298
322
panic ! ( "Error must not happen for this call" )
299
323
}
300
324
} ,
301
- |valid| if valid { 0 } else { 1 } ,
302
- ) )
325
+ } ;
326
+ Ok ( code )
303
327
}
304
328
305
329
pub fn do_ed25519_batch_verify < A : BackendApi , S : Storage , Q : Querier > (
@@ -336,8 +360,15 @@ pub fn do_ed25519_batch_verify<A: BackendApi, S: Storage, Q: Querier>(
336
360
let gas_info = GasInfo :: with_cost ( max ( gas_cost, env. gas_config . ed25519_verify_cost ) ) ;
337
361
process_gas_info :: < A , S , Q > ( env, gas_info) ?;
338
362
let result = ed25519_batch_verify ( & messages, & signatures, & public_keys) ;
339
- Ok ( result. map_or_else (
340
- |err| match err {
363
+ let code = match result {
364
+ Ok ( valid) => {
365
+ if valid {
366
+ ED25519_VERIFY_CODE_VALID
367
+ } else {
368
+ ED25519_VERIFY_CODE_INVALID
369
+ }
370
+ }
371
+ Err ( err) => match err {
341
372
CryptoError :: BatchErr { .. }
342
373
| CryptoError :: InvalidPubkeyFormat { .. }
343
374
| CryptoError :: InvalidSignatureFormat { .. }
@@ -346,8 +377,8 @@ pub fn do_ed25519_batch_verify<A: BackendApi, S: Storage, Q: Querier>(
346
377
panic ! ( "Error must not happen for this call" )
347
378
}
348
379
} ,
349
- |valid| ( !valid ) . into ( ) ,
350
- ) )
380
+ } ;
381
+ Ok ( code )
351
382
}
352
383
353
384
/// Prints a debug message to console.
0 commit comments