x25519_wasm.mx raw

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