diff options
| author | James Mills <prologic@shortcircuit.net.au> | 2020-03-21 08:20:16 +1000 |
|---|---|---|
| committer | James Mills <prologic@shortcircuit.net.au> | 2020-03-21 08:20:16 +1000 |
| commit | d7a1eab5beba4241dab4402c5cd268432d7b46cd (patch) | |
| tree | 6383b4ebf511b58597d827dc5af00b71c72caf38 /vendor/github.com/wybiral/torgo/ed25519.go | |
| parent | 13ffd7117180d1a3093ff291481caeb07a8b71de (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.go | 57 |
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] -} |
