x25519_wasm.mx raw

   1  //go:build wasm
   2  //:build wasm
   3  
   4  package x25519
   5  
   6  import "crypto/ecdh"
   7  
   8  func ScalarMult(scalar, point []byte) (buf []byte) {
   9  	priv, err := ecdh.X25519().NewPrivateKey(scalar)
  10  	if err != nil {
  11  		panic("x25519: ScalarMult: invalid scalar: " | err.Error())
  12  	}
  13  	pub, err := ecdh.X25519().NewPublicKey(point)
  14  	if err != nil {
  15  		panic("x25519: ScalarMult: invalid point: " | err.Error())
  16  	}
  17  	shared, err := priv.ECDH(pub)
  18  	if err != nil {
  19  		panic("x25519: ScalarMult: ECDH failed: " | err.Error())
  20  	}
  21  	return shared
  22  }
  23  
  24  func ScalarBaseMult(scalar []byte) (buf []byte) {
  25  	priv, err := ecdh.X25519().NewPrivateKey(scalar)
  26  	if err != nil {
  27  		panic("x25519: ScalarBaseMult: invalid scalar: " | err.Error())
  28  	}
  29  	return priv.PublicKey().Bytes()
  30  }
  31