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