Sha256: 7359c01cd5cadec5249dbc08b90093a8ce0a832f8b3e48d885617d8a11494073

Contents?: true

Size: 648 Bytes

Versions: 177

Compression:

Stored size: 648 Bytes

Contents

package diffiehellman

import (
	"math/big"
	"math/rand"
	"time"
)

const testVersion = 1

var r = rand.New(rand.NewSource(time.Now().Unix()))
var two = big.NewInt(2)

func PrivateKey(p *big.Int) *big.Int {
	private := new(big.Int).Sub(p, two)
	return private.Add(two, private.Rand(r, private))
}

func PublicKey(private, p *big.Int, g int64) *big.Int {
	return new(big.Int).Exp(big.NewInt(g), private, p)
}

func NewPair(p *big.Int, g int64) (private, public *big.Int) {
	private = PrivateKey(p)
	return private, PublicKey(private, p, g)
}

func SecretKey(private1, public2, p *big.Int) *big.Int {
	return new(big.Int).Exp(public2, private1, p)
}

Version data entries

177 entries across 177 versions & 1 rubygems

Version Path
trackler-2.0.8.13 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.12 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.11 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.10 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.9 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.8 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.7 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.6 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.5 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.4 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.3 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.2 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.8.1 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.7.0 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.6.44 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.6.43 tracks/go/exercises/diffie-hellman/example.go
trackler-2.0.6.42 tracks/go/exercises/diffie-hellman/example.go