@@ -447,12 +447,20 @@ int secp256k1_rangeproof_create_exact(const secp256k1_context* ctx, unsigned cha
447
447
448
448
/* Now we have to make a Schnorr signature in (e, s) form. */
449
449
450
- /* 1. Compute random k */
450
+ /* 1. Compute slow/overwrought commitment to proof params */
451
451
secp256k1_sha256_initialize (& sha2 );
452
- secp256k1_sha256_write ( & sha2 , blind , 32 );
453
- secp256k1_sha256_write (& sha2 , proof , offset );
452
+ secp256k1_rangeproof_serialize_point ( tmpch , & commitp );
453
+ secp256k1_sha256_write (& sha2 , tmpch , 33 );
454
454
secp256k1_rangeproof_serialize_point (tmpch , & genp );
455
455
secp256k1_sha256_write (& sha2 , tmpch , 33 );
456
+ secp256k1_sha256_write (& sha2 , proof , offset );
457
+ secp256k1_sha256_finalize (& sha2 , pp_comm );
458
+
459
+ /* 2. Compute random k */
460
+ secp256k1_sha256_initialize (& sha2 );
461
+ secp256k1_sha256_write (& sha2 , blind , 32 );
462
+ secp256k1_sha256_write (& sha2 , proof , offset );
463
+ secp256k1_sha256_write (& sha2 , pp_comm , 32 );
456
464
secp256k1_sha256_finalize (& sha2 , tmpch );
457
465
secp256k1_scalar_set_b32 (& ks , tmpch , & overflow );
458
466
if (overflow || secp256k1_scalar_is_zero (& ks )) {
@@ -461,19 +469,10 @@ int secp256k1_rangeproof_create_exact(const secp256k1_context* ctx, unsigned cha
461
469
return 0 ;
462
470
}
463
471
464
- /* 2 . Compute R = kG */
472
+ /* 3 . Compute R = kG */
465
473
secp256k1_ecmult_gen (& ctx -> ecmult_gen_ctx , & tmpj , & ks );
466
474
secp256k1_ge_set_gej (& tmpp , & tmpj );
467
475
468
- /* 3. Compute slow/overwrought commitment to proof params */
469
- secp256k1_sha256_initialize (& sha2 );
470
- secp256k1_rangeproof_serialize_point (tmpch , & commitp );
471
- secp256k1_sha256_write (& sha2 , tmpch , 33 );
472
- secp256k1_rangeproof_serialize_point (tmpch , & genp );
473
- secp256k1_sha256_write (& sha2 , tmpch , 33 );
474
- secp256k1_sha256_write (& sha2 , proof , offset );
475
- secp256k1_sha256_finalize (& sha2 , pp_comm );
476
-
477
476
/* 4. Compute e0 = H(R || proof params) and serialize it into the proof */
478
477
secp256k1_sha256_initialize (& sha2 );
479
478
secp256k1_eckey_pubkey_serialize (& tmpp , tmpch , & sz , 1 );
0 commit comments