mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package macaroons
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
var (
|
|
// RootKeyIDContextKey is the key to get rootKeyID from context.
|
|
RootKeyIDContextKey = contextKey{"rootkeyid"}
|
|
|
|
// ErrContextRootKeyID is used when the supplied context doesn't have
|
|
// a root key ID.
|
|
ErrContextRootKeyID = fmt.Errorf("failed to read root key ID " +
|
|
"from context")
|
|
)
|
|
|
|
// contextKey is the type we use to identify values in the context.
|
|
type contextKey struct {
|
|
Name string
|
|
}
|
|
|
|
// ContextWithRootKeyID passes the root key ID value to context.
|
|
func ContextWithRootKeyID(ctx context.Context,
|
|
value interface{}) context.Context {
|
|
|
|
return context.WithValue(ctx, RootKeyIDContextKey, value)
|
|
}
|
|
|
|
// RootKeyIDFromContext retrieves the root key ID from context using the key
|
|
// RootKeyIDContextKey.
|
|
func RootKeyIDFromContext(ctx context.Context) ([]byte, error) {
|
|
id, ok := ctx.Value(RootKeyIDContextKey).([]byte)
|
|
if !ok {
|
|
return nil, ErrContextRootKeyID
|
|
}
|
|
|
|
// Check that the id is not empty.
|
|
if len(id) == 0 {
|
|
return nil, ErrMissingRootKeyID
|
|
}
|
|
|
|
return id, nil
|
|
}
|