github.com/gopherjs/gopherjs@v1.19.0-beta1.0.20240506212314-27071a8796e4/compiler/natives/src/crypto/internal/nistec/wrapper.go (about)

     1  //go:build js
     2  // +build js
     3  
     4  package nistec
     5  
     6  type WrappedPoint interface {
     7  	Bytes() []byte
     8  	SetBytes(b []byte) (WrappedPoint, error)
     9  	Add(w1, w2 WrappedPoint) WrappedPoint
    10  	Double(w1 WrappedPoint) WrappedPoint
    11  	ScalarMult(w1 WrappedPoint, scalar []byte) (WrappedPoint, error)
    12  	ScalarBaseMult(scalar []byte) (WrappedPoint, error)
    13  }
    14  
    15  type p224Wrapper struct {
    16  	point *P224Point
    17  }
    18  
    19  func wrapP224(point *P224Point) WrappedPoint {
    20  	return p224Wrapper{point: point}
    21  }
    22  
    23  func NewP224WrappedPoint() WrappedPoint {
    24  	return wrapP224(NewP224Point())
    25  }
    26  
    27  func NewP224WrappedGenerator() WrappedPoint {
    28  	return wrapP224(NewP224Generator())
    29  }
    30  
    31  func (w p224Wrapper) Bytes() []byte {
    32  	return w.point.Bytes()
    33  }
    34  
    35  func (w p224Wrapper) SetBytes(b []byte) (WrappedPoint, error) {
    36  	p, err := w.point.SetBytes(b)
    37  	return wrapP224(p), err
    38  }
    39  
    40  func (w p224Wrapper) Add(w1, w2 WrappedPoint) WrappedPoint {
    41  	return wrapP224(w.point.Add(w1.(p224Wrapper).point, w2.(p224Wrapper).point))
    42  }
    43  
    44  func (w p224Wrapper) Double(w1 WrappedPoint) WrappedPoint {
    45  	return wrapP224(w.point.Double(w1.(p224Wrapper).point))
    46  }
    47  
    48  func (w p224Wrapper) ScalarMult(w1 WrappedPoint, scalar []byte) (WrappedPoint, error) {
    49  	p, err := w.point.ScalarMult(w1.(p224Wrapper).point, scalar)
    50  	return wrapP224(p), err
    51  }
    52  
    53  func (w p224Wrapper) ScalarBaseMult(scalar []byte) (WrappedPoint, error) {
    54  	p, err := w.point.ScalarBaseMult(scalar)
    55  	return wrapP224(p), err
    56  }
    57  
    58  type p256Wrapper struct {
    59  	point *P256Point
    60  }
    61  
    62  func wrapP256(point *P256Point) WrappedPoint {
    63  	return p256Wrapper{point: point}
    64  }
    65  
    66  func NewP256WrappedPoint() WrappedPoint {
    67  	return wrapP256(NewP256Point())
    68  }
    69  
    70  func NewP256WrappedGenerator() WrappedPoint {
    71  	return wrapP256(NewP256Generator())
    72  }
    73  
    74  func (w p256Wrapper) Bytes() []byte {
    75  	return w.point.Bytes()
    76  }
    77  
    78  func (w p256Wrapper) SetBytes(b []byte) (WrappedPoint, error) {
    79  	p, err := w.point.SetBytes(b)
    80  	return wrapP256(p), err
    81  }
    82  
    83  func (w p256Wrapper) Add(w1, w2 WrappedPoint) WrappedPoint {
    84  	return wrapP256(w.point.Add(w1.(p256Wrapper).point, w2.(p256Wrapper).point))
    85  }
    86  
    87  func (w p256Wrapper) Double(w1 WrappedPoint) WrappedPoint {
    88  	return wrapP256(w.point.Double(w1.(p256Wrapper).point))
    89  }
    90  
    91  func (w p256Wrapper) ScalarMult(w1 WrappedPoint, scalar []byte) (WrappedPoint, error) {
    92  	p, err := w.point.ScalarMult(w1.(p256Wrapper).point, scalar)
    93  	return wrapP256(p), err
    94  }
    95  
    96  func (w p256Wrapper) ScalarBaseMult(scalar []byte) (WrappedPoint, error) {
    97  	p, err := w.point.ScalarBaseMult(scalar)
    98  	return wrapP256(p), err
    99  }
   100  
   101  type p521Wrapper struct {
   102  	point *P521Point
   103  }
   104  
   105  func wrapP521(point *P521Point) WrappedPoint {
   106  	return p521Wrapper{point: point}
   107  }
   108  
   109  func NewP521WrappedPoint() WrappedPoint {
   110  	return wrapP521(NewP521Point())
   111  }
   112  
   113  func NewP521WrappedGenerator() WrappedPoint {
   114  	return wrapP521(NewP521Generator())
   115  }
   116  
   117  func (w p521Wrapper) Bytes() []byte {
   118  	return w.point.Bytes()
   119  }
   120  
   121  func (w p521Wrapper) SetBytes(b []byte) (WrappedPoint, error) {
   122  	p, err := w.point.SetBytes(b)
   123  	return wrapP521(p), err
   124  }
   125  
   126  func (w p521Wrapper) Add(w1, w2 WrappedPoint) WrappedPoint {
   127  	return wrapP521(w.point.Add(w1.(p521Wrapper).point, w2.(p521Wrapper).point))
   128  }
   129  
   130  func (w p521Wrapper) Double(w1 WrappedPoint) WrappedPoint {
   131  	return wrapP521(w.point.Double(w1.(p521Wrapper).point))
   132  }
   133  
   134  func (w p521Wrapper) ScalarMult(w1 WrappedPoint, scalar []byte) (WrappedPoint, error) {
   135  	p, err := w.point.ScalarMult(w1.(p521Wrapper).point, scalar)
   136  	return wrapP521(p), err
   137  }
   138  
   139  func (w p521Wrapper) ScalarBaseMult(scalar []byte) (WrappedPoint, error) {
   140  	p, err := w.point.ScalarBaseMult(scalar)
   141  	return wrapP521(p), err
   142  }
   143  
   144  type p384Wrapper struct {
   145  	point *P384Point
   146  }
   147  
   148  func wrapP384(point *P384Point) WrappedPoint {
   149  	return p384Wrapper{point: point}
   150  }
   151  
   152  func NewP384WrappedPoint() WrappedPoint {
   153  	return wrapP384(NewP384Point())
   154  }
   155  
   156  func NewP384WrappedGenerator() WrappedPoint {
   157  	return wrapP384(NewP384Generator())
   158  }
   159  
   160  func (w p384Wrapper) Bytes() []byte {
   161  	return w.point.Bytes()
   162  }
   163  
   164  func (w p384Wrapper) SetBytes(b []byte) (WrappedPoint, error) {
   165  	p, err := w.point.SetBytes(b)
   166  	return wrapP384(p), err
   167  }
   168  
   169  func (w p384Wrapper) Add(w1, w2 WrappedPoint) WrappedPoint {
   170  	return wrapP384(w.point.Add(w1.(p384Wrapper).point, w2.(p384Wrapper).point))
   171  }
   172  
   173  func (w p384Wrapper) Double(w1 WrappedPoint) WrappedPoint {
   174  	return wrapP384(w.point.Double(w1.(p384Wrapper).point))
   175  }
   176  
   177  func (w p384Wrapper) ScalarMult(w1 WrappedPoint, scalar []byte) (WrappedPoint, error) {
   178  	p, err := w.point.ScalarMult(w1.(p384Wrapper).point, scalar)
   179  	return wrapP384(p), err
   180  }
   181  
   182  func (w p384Wrapper) ScalarBaseMult(scalar []byte) (WrappedPoint, error) {
   183  	p, err := w.point.ScalarBaseMult(scalar)
   184  	return wrapP384(p), err
   185  }