onion_store: remove tor V2 + use new OnionStore

The target version of the tor.OnionStore interface methods do not accept
onion type as an argument. Further, tor V2 was depreciated in October
2021. We can therefore remove support for tor V2.
This commit is contained in:
ffranr
2023-01-23 17:53:42 +00:00
parent a5659a82cb
commit 158eb0bed1

View File

@@ -2,7 +2,6 @@ package aperture
import (
"context"
"fmt"
"strings"
"github.com/lightningnetwork/lnd/tor"
@@ -14,32 +13,15 @@ const (
// related information.
onionDir = "onion"
// onionV2Dir is the directory we'll use to store a v2 onion service's
// private key, such that it can be restored after restarts.
onionV2Dir = "v2"
// onionV2Dir is the directory we'll use to store a v3 onion service's
// onionV3Dir is the directory we'll use to store a v3 onion service's
// private key, such that it can be restored after restarts.
onionV3Dir = "v3"
)
// onionPath returns the full path to an onion service's private key of the
// given type.
func onionPath(onionType tor.OnionType) (string, error) {
var typeDir string
switch onionType {
case tor.V2:
typeDir = onionV2Dir
case tor.V3:
typeDir = onionV3Dir
default:
return "", fmt.Errorf("unknown onion type %v", onionType)
}
return strings.Join(
[]string{topLevelKey, onionDir, typeDir}, etcdKeyDelimeter,
), nil
}
// onionPath is the full path to an onion service's private key.
var onionPath = strings.Join(
[]string{topLevelKey, onionDir, onionV3Dir}, etcdKeyDelimeter,
)
// onionStore is an etcd-based implementation of tor.OnionStore.
type onionStore struct {
@@ -55,26 +37,14 @@ func newOnionStore(client *clientv3.Client) *onionStore {
}
// StorePrivateKey stores the given private key.
func (s *onionStore) StorePrivateKey(onionType tor.OnionType,
privateKey []byte) error {
onionPath, err := onionPath(onionType)
if err != nil {
return err
}
_, err = s.Client.Put(context.Background(), onionPath, string(privateKey))
func (s *onionStore) StorePrivateKey(privateKey []byte) error {
_, err := s.Client.Put(context.Background(), onionPath, string(privateKey))
return err
}
// PrivateKey retrieves a stored private key. If it is not found, then
// ErrNoPrivateKey should be returned.
func (s *onionStore) PrivateKey(onionType tor.OnionType) ([]byte, error) {
onionPath, err := onionPath(onionType)
if err != nil {
return nil, err
}
func (s *onionStore) PrivateKey() ([]byte, error) {
resp, err := s.Get(context.Background(), onionPath)
if err != nil {
return nil, err
@@ -87,12 +57,7 @@ func (s *onionStore) PrivateKey(onionType tor.OnionType) ([]byte, error) {
}
// DeletePrivateKey securely removes the private key from the store.
func (s *onionStore) DeletePrivateKey(onionType tor.OnionType) error {
onionPath, err := onionPath(onionType)
if err != nil {
return err
}
_, err = s.Client.Delete(context.Background(), onionPath)
func (s *onionStore) DeletePrivateKey() error {
_, err := s.Client.Delete(context.Background(), onionPath)
return err
}