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