summaryrefslogtreecommitdiff
path: root/vendor/github.com/wybiral/torgo/ed25519.go
diff options
context:
space:
mode:
authorJames Mills <prologic@shortcircuit.net.au>2020-03-21 08:20:16 +1000
committerJames Mills <prologic@shortcircuit.net.au>2020-03-21 08:20:16 +1000
commitd7a1eab5beba4241dab4402c5cd268432d7b46cd (patch)
tree6383b4ebf511b58597d827dc5af00b71c72caf38 /vendor/github.com/wybiral/torgo/ed25519.go
parent13ffd7117180d1a3093ff291481caeb07a8b71de (diff)
Migrate to Go111Modules, Add Dockerfile and GoRelaser support
Diffstat (limited to 'vendor/github.com/wybiral/torgo/ed25519.go')
-rw-r--r--vendor/github.com/wybiral/torgo/ed25519.go57
1 files changed, 0 insertions, 57 deletions
diff --git a/vendor/github.com/wybiral/torgo/ed25519.go b/vendor/github.com/wybiral/torgo/ed25519.go
deleted file mode 100644
index bbdd0c7..0000000
--- a/vendor/github.com/wybiral/torgo/ed25519.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package torgo
-
-import (
- "crypto/sha512"
- "encoding/base32"
- "encoding/base64"
- "errors"
- "strings"
-
- "golang.org/x/crypto/ed25519"
- "golang.org/x/crypto/sha3"
-)
-
-// OnionFromEd25519 returns an Onion instance from an ED25519 private key which
-// can be used to start a hidden service with controller.AddOnion.
-func OnionFromEd25519(pri ed25519.PrivateKey) (*Onion, error) {
- pub, ok := pri.Public().(ed25519.PublicKey)
- if !ok {
- return nil, errors.New("torgo: unable to extract ed25519.PublicKey")
- }
- serviceID, err := ServiceIDFromEd25519(pub)
- if err != nil {
- return nil, err
- }
- h := sha512.Sum512(pri[:32])
- // Set bits so that h[:32] is private scalar "a"
- h[0] &= 248
- h[31] &= 127
- h[31] |= 64
- // Since h[32:] is RH, h is now (a || RH)
- key := base64.StdEncoding.EncodeToString(h[:])
- return &Onion{
- Ports: make(map[int]string),
- ServiceID: serviceID,
- PrivateKey: key,
- PrivateKeyType: "ED25519-V3",
- }, nil
-}
-
-// ServiceIDFromEd25519 calculates a Tor service ID from an ed25519.PublicKey.
-func ServiceIDFromEd25519(pub ed25519.PublicKey) (string, error) {
- checkdigits := ed25519Checkdigits(pub)
- combined := pub[:]
- combined = append(combined, checkdigits...)
- combined = append(combined, 0x03)
- serviceID := base32.StdEncoding.EncodeToString(combined)
- return strings.ToLower(serviceID), nil
-}
-
-// ed25519Checkdigits calculates tje check digits used to create service ID.
-func ed25519Checkdigits(pub ed25519.PublicKey) []byte {
- checkstr := []byte(".onion checksum")
- checkstr = append(checkstr, pub...)
- checkstr = append(checkstr, 0x03)
- checksum := sha3.Sum256(checkstr)
- return checksum[:2]
-}