goc25519sm_blocklist_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // Copyright © 2021 Jeffrey H. Johnson <trnsz@pobox.com>.
  2. // Copyright © 2021 Gridfinity, LLC.
  3. // Copyright © 2020 Frank Denis <j at pureftpd dot org>.
  4. // Copyright © 2012 The Go Authors.
  5. //
  6. // All rights reserved.
  7. //
  8. // Use of this source code is governed by the BSD-style
  9. // license that can be found in the LICENSE file.
  10. package goc25519sm
  11. import (
  12. crand "crypto/rand"
  13. "fmt"
  14. "testing"
  15. u "github.com/johnsonjh/leaktestfe"
  16. )
  17. func TestBlocklistPoint(
  18. t *testing.T,
  19. ) {
  20. defer u.Leakplug(
  21. t,
  22. )
  23. var x [X25519Size]byte
  24. var err error
  25. point := make(
  26. []byte,
  27. X25519Size,
  28. )
  29. tpoint := point
  30. copy(
  31. x[:],
  32. point,
  33. )
  34. if _, err = crand.Read(
  35. tpoint,
  36. ); err != nil {
  37. t.Fatal(
  38. fmt.Sprintf(
  39. "\ngoc25519sm_blocklist_test.TestBlocklist.crand.Read FAILURE:\n %v",
  40. err,
  41. ),
  42. )
  43. }
  44. for i, p := range blocklist {
  45. var out [X25519Size]byte
  46. err = OldScalarMult(
  47. &out,
  48. &x,
  49. &p,
  50. )
  51. if err == nil {
  52. t.Errorf(
  53. "\ngoc25519sm_blocklist_test.TestBlocklist.OldScalarMult FAILURE:\n BLOCKLIST TEST %v FAILED TO DETECT BAD INPUT POINT P\n out=%v\n x=%v\n p=%v\n %v",
  54. i,
  55. out,
  56. x,
  57. p,
  58. err,
  59. )
  60. }
  61. }
  62. }
  63. func TestBlocklistScalar(
  64. t *testing.T,
  65. ) {
  66. defer u.Leakplug(
  67. t,
  68. )
  69. var p [X25519Size]byte
  70. var err error
  71. scalar := make(
  72. []byte,
  73. X25519Size,
  74. )
  75. tscalar := scalar
  76. copy(
  77. p[:],
  78. tscalar,
  79. )
  80. if _, err = crand.Read(
  81. tscalar,
  82. ); err != nil {
  83. t.Fatal(
  84. fmt.Sprintf(
  85. "\ngoc25519sm_blocklist_test.TestBlocklist.crand.Read FAILURE:\n %v",
  86. err,
  87. ),
  88. )
  89. }
  90. for i, x := range blocklist {
  91. var out [X25519Size]byte
  92. err = OldScalarMult(
  93. &out,
  94. &x,
  95. &p,
  96. )
  97. if err == nil {
  98. t.Errorf(
  99. "\ngoc25519sm_blocklist_test.TestBlocklist.OldScalarMult FAILURE:\n BLOCKLIST TEST %v FAILED TO DETECT BAD INPUT SCALAR X\n out=%v\n x=%v\n p=%v\n %v",
  100. i,
  101. out,
  102. x,
  103. p,
  104. err,
  105. )
  106. }
  107. }
  108. }