1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package market
import (
"context"
"crypto/sha256"
"encoding/hex"
"errors"
"strings"
)
const (
CapabilitySessionOwners = "market.sessionowners"
SessionOwnerLabel = "apps.socialweb.computer/session-owner"
SessionOwnerIdentityPrefix = "owner"
SessionOwnerRequesterPrefix = "requester"
DefaultMaxSessionOwners = 64
)
var ErrSessionOwnersFull = errors.New("market: every signed-in account slot of this ssh gateway is taken")
type SessionOwnerIntents interface {
EnsureSessionOwner(ctx context.Context, did string) error
DeleteSessionOwner(ctx context.Context, did string) error
}
func SessionOwnerName(prefix, did string) string {
sum := sha256.Sum256([]byte(strings.TrimSpace(did)))
return prefix + "-" + hex.EncodeToString(sum[:8])
}