You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.5 KiB

3 years ago
  1. package blindsecp256k1
  2. import (
  3. "math/big"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestFlow(t *testing.T) {
  8. // signer: create new signer key pair
  9. sk := NewPrivateKey()
  10. signerPubK := sk.Public()
  11. // signer: when user requests new R parameter to blind a new msg,
  12. // create new signerR (public) with its secret k
  13. k, signerR := NewRequestParameters()
  14. // user: blinds the msg using signer's R
  15. msg := new(big.Int).SetBytes([]byte("test"))
  16. msgBlinded, userSecretData := Blind(msg, signerR)
  17. // signer: signs the blinded message using its private key & secret k
  18. sBlind := sk.BlindSign(msgBlinded, k)
  19. // user: unblinds the blinded signature
  20. sig := Unblind(sBlind, msg, userSecretData)
  21. // signature can be verified with signer PublicKey
  22. verified := Verify(msg, sig, signerPubK)
  23. assert.True(t, verified)
  24. }
  25. // func TestPointCompressDecompress(t *testing.T) {
  26. // // x := big.NewInt(25)
  27. // // f := big.NewInt(1)
  28. // // fmt.Println("f", f)
  29. // // f = squareMul(f, x, true)
  30. // // fmt.Println("f", f)
  31. // // f = squareMul(f, x, true)
  32. // // fmt.Println("f", f)
  33. // // f = squareMul(f, x, true)
  34. // // fmt.Println("f", f)
  35. // // f = squareMul(f, x, true)
  36. // // fmt.Println("f", f)
  37. // // f = squareMul(f, x, true)
  38. // // require.Equal(t, "21684043449710088680149056017398834228515625", f.String())
  39. // // fmt.Println("f", f, x)
  40. // // f = squareMul(f, x, true)
  41. // // fmt.Println("f", f, x)
  42. // // require.Equal(t, "72482250313621475425650965409810619910529643899145444686122770647178269858429", f.String())
  43. // // f = squareMul(f, x, true)
  44. // // fmt.Println("f", f, x)
  45. // // f = squareMul(f, x, true)
  46. // // fmt.Println("f", f, x)
  47. //
  48. // // sqrtQ
  49. // // r := sqrtQ(big.NewInt(25))
  50. // // assert.Equal(t, "115792089237316195423570985008687907853269984665640564039457584007908834671658", r.String())
  51. // fmt.Println(N)
  52. //
  53. // //
  54. // // p := G.Mul(big.NewInt(1234))
  55. // p := G
  56. // // p := &Point{
  57. // // X: big.NewInt(3),
  58. // // Y: big.NewInt(3),
  59. // // }
  60. // fmt.Println("eX", p.X)
  61. // fmt.Println("eY", p.Y)
  62. // b := p.Compress()
  63. // // fmt.Println("hex", hex.EncodeToString(b[:]))
  64. //
  65. // // var p2 *Point
  66. // // err := p2.Decompress(b)
  67. // p2, err := Decompress(b)
  68. // require.Nil(t, err)
  69. // assert.Equal(t, p, p2)
  70. // }