Compare commits

...

39 Commits

Author SHA1 Message Date
Bernd Schoolmann
695ba111ab
Merge pull request #177 from quexten/feature/persistent-autotype-permission
Add experimental persistent autotype
2024-04-28 22:05:09 +02:00
Bernd Schoolmann
bb354b99c7
Add experimental persistent autotype permission 2024-04-28 21:50:22 +02:00
Bernd Schoolmann
7265154b9a
Merge pull request #176 from quexten/fix/browser-biometric-setup
Fix browser biometric setup
2024-04-28 19:58:28 +02:00
Bernd Schoolmann
35a3307113
Fix browser biometric setup 2024-04-28 19:56:02 +02:00
Bernd Schoolmann
3ee8c722ef
Fix release pipeline builds for windows and mac 2024-04-28 18:10:54 +02:00
Bernd Schoolmann
8faaa026cb
Update PKGBUILD 2024-04-28 17:59:18 +02:00
Bernd Schoolmann
cdcdcbbbd7
Update com.quexten.Goldwarden.metainfo.xml 2024-04-28 17:58:48 +02:00
Bernd Schoolmann
33e3ad558a
Merge pull request #174 from quexten/fix/update-toolchain
Update toolchain version
2024-04-28 17:45:20 +02:00
Bernd Schoolmann
e8b3c9d817
Update _typos.toml 2024-04-28 17:44:08 +02:00
Bernd Schoolmann
887d2621ed
Update _typos.toml 2024-04-28 17:42:10 +02:00
Bernd Schoolmann
b0cb96e940
Update typos.yaml 2024-04-28 17:39:01 +02:00
Bernd Schoolmann
803c45cb77
Update toolchain version 2024-04-28 17:37:29 +02:00
Bernd Schoolmann
1feeb102e6
Merge pull request #169 from quexten/fix/spelling
Fix symmetric crypto key spelling
2024-04-28 17:36:32 +02:00
Bernd Schoolmann
f87e328ed7
Update typos.yaml 2024-04-28 17:35:22 +02:00
Bernd Schoolmann
12dbd23d1f
Merge pull request #170 from quexten/quexten-patch-2
Create _typos.toml
2024-04-28 17:33:27 +02:00
Bernd Schoolmann
5cbf9982b5
Create _typos.toml 2024-04-28 17:33:16 +02:00
Bernd Schoolmann
a404bba9d8
Fix cipher spelling 2024-04-28 17:27:55 +02:00
Bernd Schoolmann
69e79980e5
Fix bufer spelling 2024-04-28 17:25:37 +02:00
Bernd Schoolmann
7ba5d466c5
Fix asymetric spelling 2024-04-28 17:24:56 +02:00
Bernd Schoolmann
4d43e6f133
Fix symmetric crypto key spelling 2024-04-28 17:21:33 +02:00
Bernd Schoolmann
d67bc68c25
Merge pull request #168 from quexten/revert-167-quexten-patch-1
Revert "Create issue_label_bot.yaml"
2024-04-28 17:16:23 +02:00
Bernd Schoolmann
d1f2f9c597
Revert "Create issue_label_bot.yaml" 2024-04-28 17:16:14 +02:00
Bernd Schoolmann
b6a9ee90ea
Merge pull request #167 from quexten/quexten-patch-1
Create issue_label_bot.yaml
2024-04-28 17:14:45 +02:00
Bernd Schoolmann
8159b189c3
Create issue_label_bot.yaml 2024-04-28 17:14:33 +02:00
Bernd Schoolmann
4efa949c88
Create typos.yaml 2024-04-28 17:06:42 +02:00
Bernd Schoolmann
6b0f4ca5e4
Update pipeline go version for flatpak 2024-04-28 16:42:16 +02:00
Bernd Schoolmann
ae6d15045e
Update pipeline go version 2024-04-28 16:39:57 +02:00
Bernd Schoolmann
2734ac76ec
Update dependencies 2024-04-28 16:37:38 +02:00
Bernd Schoolmann
2449d57504
Merge pull request #165 from quexten/dependabot/go_modules/github.com/Microsoft/go-winio-0.6.2
Bump github.com/Microsoft/go-winio from 0.6.1 to 0.6.2
2024-04-28 16:07:03 +02:00
dependabot[bot]
aeb988b232
Bump github.com/Microsoft/go-winio from 0.6.1 to 0.6.2
Bumps [github.com/Microsoft/go-winio](https://github.com/Microsoft/go-winio) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/Microsoft/go-winio/releases)
- [Commits](https://github.com/Microsoft/go-winio/compare/v0.6.1...v0.6.2)

---
updated-dependencies:
- dependency-name: github.com/Microsoft/go-winio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-28 14:05:51 +00:00
Bernd Schoolmann
c4e7f77ec6
Merge pull request #163 from quexten/dependabot/go_modules/github.com/google/uuid-1.6.0
Bump github.com/google/uuid from 1.5.0 to 1.6.0
2024-04-28 16:05:31 +02:00
Bernd Schoolmann
c1df8d4f11
Merge pull request #162 from quexten/dependabot/go_modules/github.com/awnumar/memguard-0.22.5
Bump github.com/awnumar/memguard from 0.22.4 to 0.22.5
2024-04-28 16:05:19 +02:00
Bernd Schoolmann
cc29e159c9
Merge pull request #161 from quexten/dependabot/go_modules/golang.org/x/crypto-0.22.0
Bump golang.org/x/crypto from 0.17.0 to 0.22.0
2024-04-28 16:05:09 +02:00
Bernd Schoolmann
bbafde07fa
Merge pull request #160 from olastor/fix-macos-build-amd64
fix: pin macos-13 as os for building amd64 binary
2024-04-28 16:04:41 +02:00
dependabot[bot]
a5bc1a09f2
Bump github.com/google/uuid from 1.5.0 to 1.6.0
Bumps [github.com/google/uuid](https://github.com/google/uuid) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/google/uuid/releases)
- [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/uuid/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: github.com/google/uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-28 14:02:23 +00:00
dependabot[bot]
b06db43b50
Bump github.com/awnumar/memguard from 0.22.4 to 0.22.5
Bumps [github.com/awnumar/memguard](https://github.com/awnumar/memguard) from 0.22.4 to 0.22.5.
- [Release notes](https://github.com/awnumar/memguard/releases)
- [Commits](https://github.com/awnumar/memguard/compare/v0.22.4...v0.22.5)

---
updated-dependencies:
- dependency-name: github.com/awnumar/memguard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-28 14:02:18 +00:00
dependabot[bot]
8f60b37acf
Bump golang.org/x/crypto from 0.17.0 to 0.22.0
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.17.0 to 0.22.0.
- [Commits](https://github.com/golang/crypto/compare/v0.17.0...v0.22.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-28 14:02:18 +00:00
Bernd Schoolmann
07aa9a5932
Create dependabot.yaml 2024-04-28 16:01:48 +02:00
Sebastian
7b00d56c66 fix: pin macos-13 as os for building amd64 binary 2024-04-28 14:10:33 +02:00
18 changed files with 221 additions and 96 deletions

6
.github/dependabot.yaml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: gomod
directory: /
schedule:
interval: monthly

8
.github/workflows/_typos.toml vendored Normal file
View File

@ -0,0 +1,8 @@
[default]
extend-ignore-identifiers-re = [
# upstream go library issue
".*Encrypter",
]
[files]
extend-exclude = ["go.mod"]

View File

@ -5,7 +5,7 @@ on:
pull_request:
branches: [main]
env:
GO_VERSION: '1.20'
GO_VERSION: '1.22'
jobs:
build_daemon:
runs-on: ubuntu-latest
@ -45,4 +45,4 @@ jobs:
bundle: goldwarden.flatpak
manifest-path: com.quexten.Goldwarden.yml
cache-key: flatpak-builder-${{ github.sha }}
arch: ${{ matrix.arch }}
arch: ${{ matrix.arch }}

View File

@ -7,7 +7,7 @@ on:
branches: [ "main" ]
env:
GO_VERSION: '1.20'
GO_VERSION: '1.22'
jobs:
build_linux_x86_64_debug:
@ -77,7 +77,7 @@ jobs:
path: ./goldwarden_linux_x86
build_macos_x86_64:
runs-on: macos-latest
runs-on: macos-13
steps:
- name: Checkout
uses: actions/checkout@v1
@ -90,13 +90,13 @@ jobs:
uses: Homebrew/actions/setup-homebrew@master
- name: Fido2
run: brew install libfido2
- name: Build
- name: Build
run: go build -o "goldwarden_macos_x86_64" -v .
- uses: actions/upload-artifact@v3
with:
name: goldwarden-macos_x86_64
path: ./goldwarden_macos_x86_64
build_macos_aarch64:
runs-on: macos-14
steps:
@ -111,13 +111,13 @@ jobs:
uses: Homebrew/actions/setup-homebrew@master
- name: Fido2
run: brew install libfido2
- name: Build
- name: Build
run: go build -o "goldwarden_macos_aarch64" -v .
- uses: actions/upload-artifact@v3
with:
name: goldwarden-macos_aarch64
path: ./goldwarden_macos_aarch64
path: ./goldwarden_macos_aarch64
build_windows_x86_64:
runs-on: windows-latest
steps:
@ -132,13 +132,13 @@ jobs:
run: |
scoop bucket add keys.pub https://github.com/keys-pub/scoop-bucket
scoop install libfido2
- name: Build
- name: Build
run: go build -o "goldwarden_windows_x86_64.exe" -v .
- uses: actions/upload-artifact@v3
with:
name: goldwarden-windows_x86_64.exe
path: ./goldwarden_windows_x86_64.exe
build_windows_aarch64:
runs-on: windows-latest
steps:
@ -148,7 +148,7 @@ jobs:
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Build
- name: Build
run: set GOARCH=arm64 && go build -tags nofido2 -o "goldwarden_windows_aarch64.exe" -v .
- uses: actions/upload-artifact@v3
with:

View File

@ -7,7 +7,7 @@ permissions:
packages: write
env:
GO_VERSION: '1.20'
GO_VERSION: '1.22'
jobs:
merge_release:
@ -128,7 +128,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
go-version: ${{ env.GO_VERSION }}
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
@ -149,7 +149,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
go-version: ${{ env.GO_VERSION }}
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
@ -170,7 +170,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
go-version: ${{ env.GO_VERSION }}
- uses: MinoruSekine/setup-scoop@v2
- name: Fido2
run: |
@ -191,7 +191,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
go-version: ${{ env.GO_VERSION }}
- name: Build
run: set GOARCH=arm64 && go build -tags nofido2 -o "goldwarden_windows_aarch64.exe" -v .
- uses: AButler/upload-release-assets@v2.0

15
.github/workflows/typos.yaml vendored Normal file
View File

@ -0,0 +1,15 @@
name: Check for Typos
on: [pull_request]
jobs:
run:
name: Spell Check with Typos
runs-on: ubuntu-latest
steps:
- name: Checkout Actions Repository
uses: actions/checkout@v4
- name: Check spelling
uses: crate-ci/typos@master
with:
config: './.github/workflows/_typos.toml'

View File

@ -1,5 +1,5 @@
pkgname=goldwarden
pkgver=0.2.13
pkgver=0.2.14
pkgrel=1
pkgdesc='A feature-packed Bitwarden compatible desktop integration'
arch=('x86_64' 'aarch64')

View File

@ -64,17 +64,17 @@ func sync(ctx context.Context, vault *vault.Vault, cfg *config.Config) bool {
return false
}
var protectedUserSymetricKey crypto.SymmetricEncryptionKey
var protectedUserSymmetricKey crypto.SymmetricEncryptionKey
if vault.Keyring.IsMemguard {
protectedUserSymetricKey, err = crypto.MemguardSymmetricEncryptionKeyFromBytes(userSymmetricKey)
protectedUserSymmetricKey, err = crypto.MemguardSymmetricEncryptionKeyFromBytes(userSymmetricKey)
} else {
protectedUserSymetricKey, err = crypto.MemorySymmetricEncryptionKeyFromBytes(userSymmetricKey)
protectedUserSymmetricKey, err = crypto.MemorySymmetricEncryptionKeyFromBytes(userSymmetricKey)
}
if err != nil {
return false
}
err = bitwarden.DoFullSync(context.WithValue(ctx, bitwarden.AuthToken{}, token.AccessToken), vault, cfg, &protectedUserSymetricKey, true)
err = bitwarden.DoFullSync(context.WithValue(ctx, bitwarden.AuthToken{}, token.AccessToken), vault, cfg, &protectedUserSymmetricKey, true)
if err != nil {
return false
}

View File

@ -106,11 +106,11 @@ func handleLogin(msg messages.IPCMessage, cfg *config.Config, vault *vault.Vault
err = cfg.SetUserSymmetricKey(vault.Keyring.GetAccountKey().Bytes())
err = cfg.SetMasterPasswordHash([]byte(masterpasswordHash))
err = cfg.SetMasterKey([]byte(masterKey.GetBytes()))
var protectedUserSymetricKey crypto.SymmetricEncryptionKey
var protectedUserSymmetricKey crypto.SymmetricEncryptionKey
if vault.Keyring.IsMemguard {
protectedUserSymetricKey, err = crypto.MemguardSymmetricEncryptionKeyFromBytes(vault.Keyring.GetAccountKey().Bytes())
protectedUserSymmetricKey, err = crypto.MemguardSymmetricEncryptionKeyFromBytes(vault.Keyring.GetAccountKey().Bytes())
} else {
protectedUserSymetricKey, err = crypto.MemorySymmetricEncryptionKeyFromBytes(vault.Keyring.GetAccountKey().Bytes())
protectedUserSymmetricKey, err = crypto.MemorySymmetricEncryptionKeyFromBytes(vault.Keyring.GetAccountKey().Bytes())
}
if err != nil {
defer func() {
@ -129,7 +129,7 @@ func handleLogin(msg messages.IPCMessage, cfg *config.Config, vault *vault.Vault
}
return
}
err = bitwarden.DoFullSync(context.WithValue(ctx, bitwarden.AuthToken{}, token.AccessToken), vault, cfg, &protectedUserSymetricKey, false)
err = bitwarden.DoFullSync(context.WithValue(ctx, bitwarden.AuthToken{}, token.AccessToken), vault, cfg, &protectedUserSymmetricKey, false)
response, err = messages.IPCMessageFromPayload(messages.ActionResponse{
Success: true,

View File

@ -29,9 +29,9 @@ func handleAddSSH(msg messages.IPCMessage, cfg *config.Config, vault *vault.Vaul
actionsLog.Warn(err.Error())
}
ctx := context.WithValue(context.TODO(), bitwarden.AuthToken{}, token.AccessToken)
ciph, err := bitwarden.PostCipher(ctx, cipher, cfg)
postedCipher, err := bitwarden.PostCipher(ctx, cipher, cfg)
if err == nil {
vault.AddOrUpdateSecureNote(ciph)
vault.AddOrUpdateSecureNote(postedCipher)
} else {
actionsLog.Warn("Error posting ssh key cipher: " + err.Error())
}

View File

@ -113,11 +113,11 @@ func (key MemguardSymmetricEncryptionKey) MacKeyBytes() ([]byte, error) {
return keyBytes, nil
}
func MemoryAssymmetricEncryptionKeyFromBytes(key []byte) (MemoryAsymmetricEncryptionKey, error) {
func MemoryAsymmetricEncryptionKeyFromBytes(key []byte) (MemoryAsymmetricEncryptionKey, error) {
return MemoryAsymmetricEncryptionKey{key}, nil
}
func MemguardAssymmetricEncryptionKeyFromBytes(key []byte) (MemguardAsymmetricEncryptionKey, error) {
func MemguardAsymmetricEncryptionKeyFromBytes(key []byte) (MemguardAsymmetricEncryptionKey, error) {
k := memguard.NewEnclave(key)
return MemguardAsymmetricEncryptionKey{k}, nil
}

View File

@ -72,7 +72,7 @@ func CreateAuthResponse(ctx context.Context, authRequest AuthRequestData, keyrin
if err != nil {
return AuthRequestResponseData{}, err
}
requesterKey, err := crypto.MemoryAssymmetricEncryptionKeyFromBytes(publicKey)
requesterKey, err := crypto.MemoryAsymmetricEncryptionKeyFromBytes(publicKey)
if err != nil {
return AuthRequestResponseData{}, err
}

View File

@ -16,11 +16,11 @@ func SetPin(useMemguard bool, pin []byte) {
func GetPin() ([]byte, error) {
approved := biometrics.CheckBiometrics(biometrics.SSHKey)
if approved {
bufer, err := cachedPin.Open()
buffer, err := cachedPin.Open()
if err != nil {
return nil, err
}
return bufer.Bytes(), nil
return buffer.Bytes(), nil
} else {
return nil, errors.New("biometrics not approved")
}

View File

@ -4,6 +4,8 @@ package autotype
import (
"fmt"
"io/ioutil"
"os"
"time"
"github.com/godbus/dbus/v5"
@ -16,6 +18,47 @@ const autoTypeDelay = 1 * time.Millisecond
var log = logging.GetLogger("Goldwarden", "Autotype")
// todo need to store this encrypted. will be done when migrating this file to python
func persistToken(token string) error {
tokenPath := ""
userHome, err := os.UserHomeDir()
if err != nil {
return err
}
if _, err := os.Stat("/.flatpak-info"); err == nil {
tokenPath = userHome + "/.var/app/com.quexten.Goldwarden/config/autotype_token.txt"
} else {
tokenPath = userHome + "/.config/goldwarden/autotype_token.txt"
}
err = ioutil.WriteFile(tokenPath, []byte(token), 0644)
if err != nil {
return err
}
return nil
}
func readToken() (string, error) {
tokenPath := ""
userHome, err := os.UserHomeDir()
if err != nil {
return "", err
}
if _, err := os.Stat("/.flatpak-info"); err == nil {
tokenPath = userHome + "/.var/app/com.quexten.Goldwarden/config/autotype_token.txt"
} else {
tokenPath = userHome + "/.config/goldwarden/autotype_token.txt"
}
token, err := ioutil.ReadFile(tokenPath)
if err != nil {
return "", err
}
return string(token), nil
}
func TypeString(textToType string) {
log.Info("Starting to Type String")
bus, err := dbus.SessionBus()
@ -49,9 +92,16 @@ func TypeString(textToType string) {
result := message.Body[1].(map[string]dbus.Variant)
resultSessionHandle := result["session_handle"]
sessionHandle = dbus.ObjectPath(resultSessionHandle.String()[1 : len(resultSessionHandle.String())-1])
res := obj.Call("org.freedesktop.portal.RemoteDesktop.SelectDevices", 0, sessionHandle, map[string]dbus.Variant{
"types": dbus.MakeVariant(uint32(1)),
})
options := map[string]dbus.Variant{
"types": dbus.MakeVariant(uint32(1)),
"persist_mode": dbus.MakeVariant(uint32(2)),
}
if token, err := readToken(); err == nil {
log.Info("Restoring token, no confirmation prompt")
options["restore_token"] = dbus.MakeVariant(token)
}
res := obj.Call("org.freedesktop.portal.RemoteDesktop.SelectDevices", 0, sessionHandle, options)
if res.Err != nil {
log.Error("Error selecting devices: %s", res.Err.Error())
}
@ -64,6 +114,19 @@ func TypeString(textToType string) {
}
state = 2
case 2:
// try to cast to interface array
if len(message.Body) == 2 {
if resMap, ok := message.Body[1].(map[string]dbus.Variant); ok {
// check if restore token in response
if restoreToken, ok := resMap["restore_token"]; ok {
token := restoreToken.Value().(string)
if err := persistToken(token); err != nil {
log.Error("Error persisting token: %s", err.Error())
}
}
}
}
log.Info("Performing Typing")
time.Sleep(1000 * time.Millisecond)
for _, char := range textToType {

View File

@ -126,21 +126,26 @@ func detectAndInstallBrowsers(startPath string) error {
fmt.Printf("Found mozilla-like browser: %s\n", path)
fmt.Println("Removing old manifest and proxy script")
err = os.Chown(path+"/com.8bit.bitwarden.json", 7, 7)
if err != nil {
return err
if _, err := os.Stat(path + "/com.8bit.bitwarden.json"); err == nil {
err = os.Chmod(path+"/com.8bit.bitwarden.json", 755)
if err != nil {
return err
}
err = os.Remove(path + "/com.8bit.bitwarden.json")
if err != nil {
return err
}
}
err = os.Remove(path + "/com.8bit.bitwarden.json")
if err != nil {
return err
}
err = os.Chown(path+"/goldwarden-proxy.sh", 7, 7)
if err != nil {
return err
}
err = os.Remove(path + "/goldwarden-proxy.sh")
if err != nil {
return err
if _, err := os.Stat(path + "/goldwarden-proxy.sh"); err == nil {
err = os.Chmod(path+"/goldwarden-proxy.sh", 755)
if err != nil {
return err
}
err = os.Remove(path + "/goldwarden-proxy.sh")
if err != nil {
return err
}
}
fmt.Println("Writing new manifest")
@ -159,21 +164,26 @@ func detectAndInstallBrowsers(startPath string) error {
fmt.Printf("Found chrome-like browser: %s\n", path)
fmt.Println("Removing old manifest and proxy script")
err = os.Chown(path+"/com.8bit.bitwarden.json", 7, 7)
if err != nil {
return err
if _, err := os.Stat(path + "/com.8bit.bitwarden.json"); err == nil {
err = os.Chmod(path+"/com.8bit.bitwarden.json", 755)
if err != nil {
return err
}
err = os.Remove(path + "/com.8bit.bitwarden.json")
if err != nil {
return err
}
}
err = os.Remove(path + "/com.8bit.bitwarden.json")
if err != nil {
return err
}
err = os.Chown(path+"/goldwarden-proxy.sh", 7, 7)
if err != nil {
return err
}
err = os.Remove(path + "/goldwarden-proxy.sh")
if err != nil {
return err
if _, err := os.Stat(path + "/goldwarden-proxy.sh"); err == nil {
err = os.Chmod(path+"/goldwarden-proxy.sh", 755)
if err != nil {
return err
}
err = os.Remove(path + "/goldwarden-proxy.sh")
if err != nil {
return err
}
}
fmt.Println("Writing new manifest")

30
go.mod
View File

@ -1,19 +1,21 @@
module github.com/quexten/goldwarden
go 1.20
go 1.22
toolchain go1.22.1
require (
github.com/LlamaNite/llamalog v0.2.1
github.com/Microsoft/go-winio v0.6.1
github.com/Microsoft/go-winio v0.6.2
github.com/amenzhinsky/go-polkit v0.0.0-20210519083301-ee6a51849123
github.com/atotto/clipboard v0.1.4
github.com/awnumar/memguard v0.22.4
github.com/awnumar/memguard v0.22.5
github.com/gen2brain/beeep v0.0.0-20240112042604-c7bb2cd88fea
github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4
github.com/google/uuid v1.5.0
github.com/google/uuid v1.6.0
github.com/gorilla/websocket v1.5.1
github.com/icza/gox v0.0.0-20230924165045-adcb03233bb5
github.com/keybase/client/go v0.0.0-20240202160538-668db6be75e4
github.com/keybase/client/go v0.0.0-20240424154521-52f30ea26cb1
github.com/lox/go-touchid v0.0.0-20170712105233-619cc8e578d0
github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a
github.com/mitchellh/go-ps v1.0.0
@ -22,25 +24,23 @@ require (
github.com/tink-crypto/tink-go/v2 v2.1.0
github.com/twpayne/go-pinentry v0.3.0
github.com/vmihailenco/msgpack/v5 v5.4.1
golang.org/x/crypto v0.17.0
golang.org/x/exp v0.0.0-20231219180239-dc181d75b848
golang.org/x/sys v0.16.0
golang.org/x/crypto v0.22.0
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f
golang.org/x/sys v0.19.0
)
require (
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/keybase/backoff v1.0.1-0.20160517061000-726b63b835ec // indirect
github.com/keybase/clockwork v0.1.1-0.20161209210251-976f45f4a979 // indirect
github.com/keybase/go-codec v0.0.0-20180928230036-164397562123 // indirect
github.com/keybase/go-framed-msgpack-rpc v0.0.0-20230103225103-1f052922b096 // indirect
github.com/keybase/go-framed-msgpack-rpc v0.0.0-20231213201819-78fffcb30e42 // indirect
github.com/keybase/go-jsonw v0.0.0-20200325173637-df90f282c233 // indirect
github.com/keybase/go-logging v0.0.0-20231213204715-4b3ff33ba5b6 // indirect
github.com/keybase/msgpackzip v0.0.0-20221220225959-4abf538d2b9c // indirect
github.com/keybase/msgpackzip v0.0.0-20231213201432-ee2f464d1f46 // indirect
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect
golang.org/x/mod v0.14.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/tools v0.16.1 // indirect
golang.org/x/net v0.24.0 // indirect
)
require (
@ -51,7 +51,7 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/rs/zerolog v1.31.0 // indirect
github.com/rs/zerolog v1.32.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
)

56
go.sum
View File

@ -1,23 +1,28 @@
github.com/LlamaNite/llamalog v0.2.1 h1:k9XugHmyQqJhCrogca808Jl2rrEKIWMtWyLKX+xX9Mg=
github.com/LlamaNite/llamalog v0.2.1/go.mod h1:zopgmWk8utZPfZCPa/uvQkv99Lan3pRrw/9inbIYZeo=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=
github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/amenzhinsky/go-polkit v0.0.0-20210519083301-ee6a51849123 h1:VdNhe94PF9yn6KudYnpcBb6bH7l+wsEy9yn6Ulm1/j8=
github.com/amenzhinsky/go-polkit v0.0.0-20210519083301-ee6a51849123/go.mod h1:CdMR3dsiNi5M2BbtFlMo85mRbNt6LiMw04UBzJmoVEU=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/awnumar/memcall v0.2.0 h1:sRaogqExTOOkkNwO9pzJsL8jrOV29UuUW7teRMfbqtI=
github.com/awnumar/memcall v0.2.0/go.mod h1:S911igBPR9CThzd/hYQQmTc9SWNu3ZHIlCGaWsWsoJo=
github.com/awnumar/memguard v0.22.4 h1:1PLgKcgGPeExPHL8dCOWGVjIbQUBgJv9OL0F/yE1PqQ=
github.com/awnumar/memguard v0.22.4/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE=
github.com/awnumar/memguard v0.22.5 h1:PH7sbUVERS5DdXh3+mLo8FDcl1eIeVjJVYMnyuYpvuI=
github.com/awnumar/memguard v0.22.5/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/gen2brain/beeep v0.0.0-20240112042604-c7bb2cd88fea h1:oWUHxzaBvwkRWiINbBOY39XIF+n9b4RJEPHdQ8waJUo=
github.com/gen2brain/beeep v0.0.0-20240112042604-c7bb2cd88fea/go.mod h1:0W7dI87PvXJ1Sjs0QPvWXKcQmNERY77e8l7GFhZB/s4=
github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4 h1:qZNfIGkIANxGv/OqtnntR4DfOY2+BgwR60cAcu/i3SE=
@ -26,11 +31,13 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/icza/gox v0.0.0-20230924165045-adcb03233bb5 h1:K7KEFpKgVcjj98jOu2Z3xMBTtTwfYVT90Zmo3ZuWmbE=
github.com/icza/gox v0.0.0-20230924165045-adcb03233bb5/go.mod h1:VbcN86fRkkUMPX2ufM85Um8zFndLZswoIW1eYtpAcVk=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@ -39,18 +46,24 @@ github.com/keybase/backoff v1.0.1-0.20160517061000-726b63b835ec h1:D6qL2WCnAuxuc
github.com/keybase/backoff v1.0.1-0.20160517061000-726b63b835ec/go.mod h1:jeBKj+20GIDry3doFsAMYH9n7Y3l7ajE3xJrKvVB23s=
github.com/keybase/client/go v0.0.0-20240202160538-668db6be75e4 h1:MPUIAszF69Y8gZicAYxzDfrL5G3z/aKyfag8nPSq3js=
github.com/keybase/client/go v0.0.0-20240202160538-668db6be75e4/go.mod h1:V3kb71GXhlWkJjB906M5xyiCqO7ygb4R6peCA+CMHtw=
github.com/keybase/client/go v0.0.0-20240424154521-52f30ea26cb1 h1:toSyN3iQ996iZzFWHYfiXN20wzcavqQUJ171t+n6LqI=
github.com/keybase/client/go v0.0.0-20240424154521-52f30ea26cb1/go.mod h1:NHwdggxLBh4RNQzpCcI0PNArhokrX4Oj4TpnZ8/YIEM=
github.com/keybase/clockwork v0.1.1-0.20161209210251-976f45f4a979 h1:WABVkjKJ3UjbSTgGayemkXfUyZrDwFShivsoIikbM3c=
github.com/keybase/clockwork v0.1.1-0.20161209210251-976f45f4a979/go.mod h1:2j97e0ZjlWYV7dDdV8BjKwMUmBbXu6zZF8FAa9gXRss=
github.com/keybase/go-codec v0.0.0-20180928230036-164397562123 h1:yg56lYPqh9suJepqxOMd/liFgU/x+maRPiB30JNYykM=
github.com/keybase/go-codec v0.0.0-20180928230036-164397562123/go.mod h1:r/eVVWCngg6TsFV/3HuS9sWhDkAzGG8mXhiuYA+Z/20=
github.com/keybase/go-framed-msgpack-rpc v0.0.0-20230103225103-1f052922b096 h1:rMDGkwIszgGP7HodB/YdMVT39mMI5s+LUI6DOrJO0DE=
github.com/keybase/go-framed-msgpack-rpc v0.0.0-20230103225103-1f052922b096/go.mod h1:XO67nMjltHJ8OsBWnFiDU1F67wR+rtJB21NXtb1TKyA=
github.com/keybase/go-framed-msgpack-rpc v0.0.0-20231213201819-78fffcb30e42 h1:r1ZY/j20qhaxcnLXRYf4YJ1hVHxOUqkcXW1AWbtlwRc=
github.com/keybase/go-framed-msgpack-rpc v0.0.0-20231213201819-78fffcb30e42/go.mod h1:oJqYYlOzuyghCL4YfZ0hDLZOyJYcjpRYc2S79aitIBE=
github.com/keybase/go-jsonw v0.0.0-20200325173637-df90f282c233 h1:zLk+cB/0ShMCBcgBOXYgellLZiZahXFicJleKyrlqiM=
github.com/keybase/go-jsonw v0.0.0-20200325173637-df90f282c233/go.mod h1:lofKQwj13L0/7ji5VYaY0257JDlQE2BRRf+rI2Vk1rU=
github.com/keybase/go-logging v0.0.0-20231213204715-4b3ff33ba5b6 h1:H4IvZdHXpeK963LgCMbTcEviEal4891UGf2iOqOGL94=
github.com/keybase/go-logging v0.0.0-20231213204715-4b3ff33ba5b6/go.mod h1:0yOEB+QF1Ega1Cr7oMKb3yUAc3C9/eg6fBHB5HLP7AA=
github.com/keybase/msgpackzip v0.0.0-20221220225959-4abf538d2b9c h1:PRG2AXSelSy7MiDI+PwJR2QSqI1N3OybRUutsMiHtpo=
github.com/keybase/msgpackzip v0.0.0-20221220225959-4abf538d2b9c/go.mod h1:DkylHDco/FLr1+GM6wg0GF4E3CCKov54MSYojKYAbS0=
github.com/keybase/msgpackzip v0.0.0-20231213201432-ee2f464d1f46 h1:HZwgh9xppsgOtC/KFuPOUKqtR70tmqoZKDdzFzMgofk=
github.com/keybase/msgpackzip v0.0.0-20231213201432-ee2f464d1f46/go.mod h1:yBUdIgz7FWt9P/poJyPJ75v9WPDITnKGfwive77P8O4=
github.com/keys-pub/go-libfido2 v1.5.4-0.20230628153049-536daffdd394 h1:zf+3yRJH5NIVOhLceS4P6AVQWEgQPhMCpxgMSB46HdI=
github.com/keys-pub/go-libfido2 v1.5.4-0.20230628153049-536daffdd394/go.mod h1:92J9LtSBl0UyUWljElJpTbMMNhC6VeY8dshsu40qjjo=
github.com/lox/go-touchid v0.0.0-20170712105233-619cc8e578d0 h1:m81erW+1MD5vl3lKQ/+TYPHJ6Y9/C1COqxXPE51FkDk=
@ -72,10 +85,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/reiver/go-oi v1.0.0 h1:nvECWD7LF+vOs8leNGV/ww+F2iZKf3EYjYZ527turzM=
github.com/reiver/go-oi v1.0.0/go.mod h1:RrDBct90BAhoDTxB1fenZwfykqeGvhI6LsNfStJoEkI=
github.com/reiver/go-telnet v0.0.0-20180421082511-9ff0b2ab096e h1:quuzZLi72kkJjl+f5AQ93FMcadG19WkS7MO6TXFOSas=
github.com/reiver/go-telnet v0.0.0-20180421082511-9ff0b2ab096e/go.mod h1:+5vNVvEWwEIx86DB9Ke/+a5wBI464eDRo3eF0LcfpWg=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
@ -84,6 +101,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk=
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af/go.mod h1:4F09kP5F+am0jAwlQLddpoMDM+iewkxxt6nxUQ5nq5o=
github.com/tailscale/peercred v0.0.0-20240214030740-b535050b2aa4 h1:Gz0rz40FvFVLTBk/K8UNAenb36EbDSnh+q7Z9ldcC8w=
@ -96,25 +114,29 @@ github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IU
github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/exp v0.0.0-20231219180239-dc181d75b848 h1:+iq7lrkxmFNBM7xx+Rae2W6uyPfhPeDWD+n+JgppptE=
golang.org/x/exp v0.0.0-20231219180239-dc181d75b848/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY=
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

View File

@ -36,6 +36,7 @@
<developer_name>Bernd Schoolmann</developer_name>
<update_contact>mail@quexten.com</update_contact>
<releases>
<release version="0.2.14" date="2024-04-28"/>
<release version="0.2.13" date="2024-02-23"/>
<release version="0.2.12" date="2024-02-17"/>
<release version="0.2.9" date="2024-01-04"/>