Skip to content

Commit 14671fe

Browse files
authored
Merge pull request #11 from olastor/10-asymmetric-encryption
feat: add and implement updated specification v2
2 parents 41cc4b7 + 73ec6bb commit 14671fe

39 files changed

+2471
-1481
lines changed

.github/workflows/build-and-test.yml

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: Build and Test
2+
3+
on:
4+
release:
5+
types: [ "published" ]
6+
push:
7+
branches: [ "main" ]
8+
pull_request:
9+
branches: [ "main" ]
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
strategy:
15+
matrix:
16+
include:
17+
- {GOOS: linux, GOARCH: amd64}
18+
- {GOOS: linux, GOARCH: arm, GOARM: 6}
19+
- {GOOS: linux, GOARCH: arm64}
20+
- {GOOS: darwin, GOARCH: amd64}
21+
- {GOOS: darwin, GOARCH: arm64}
22+
- {GOOS: windows, GOARCH: amd64}
23+
- {GOOS: freebsd, GOARCH: amd64}
24+
steps:
25+
- uses: actions/checkout@v3
26+
27+
- name: Set up Go
28+
uses: actions/setup-go@v4
29+
with:
30+
go-version: '1.22'
31+
32+
- name: Install libfido2
33+
run: sudo apt install libfido2-1 libfido2-dev libfido2-doc fido2-tools
34+
35+
- name: Build
36+
run: |
37+
VERSION="$(git describe --tags --always)"
38+
go build -ldflags "-X main.Version=$VERSION" -v ./cmd/...
39+
40+
- name: Test
41+
run: go test -v ./...
42+
43+
- name: Package
44+
run: |
45+
VERSION="$(git describe --tags --always)"
46+
DIR="$(mktemp -d)"
47+
mkdir "$DIR/age-plugin-fido2-hmac"
48+
cp LICENSE "$DIR/age-plugin-fido2-hmac"
49+
mv age-plugin-fido2-hmac "$DIR/age-plugin-fido2-hmac"
50+
if [ "$GOOS" == "windows" ]; then
51+
( cd "$DIR"; zip age-plugin-fido2-hmac.zip -r age-plugin-fido2-hmac )
52+
mv "$DIR/age-plugin-fido2-hmac.zip" "age-plugin-fido2-hmac-$VERSION-$GOOS-$GOARCH.zip"
53+
else
54+
tar -cvzf "age-plugin-fido2-hmac-$VERSION-$GOOS-$GOARCH.tar.gz" -C "$DIR" age-plugin-fido2-hmac
55+
fi
56+
env:
57+
GOOS: ${{ matrix.GOOS }}
58+
GOARCH: ${{ matrix.GOARCH }}
59+
GOARM: ${{ matrix.GOARM }}
60+
61+
- name: Upload workflow artifacts
62+
uses: actions/upload-artifact@v2
63+
with:
64+
name: plugin-binaries
65+
path: age-plugin-fido2-hmac*
66+
67+
release:
68+
name: Upload release binaries
69+
if: github.event_name == 'release'
70+
needs: build
71+
permissions:
72+
contents: write
73+
runs-on: ubuntu-latest
74+
steps:
75+
- name: Download workflow artifacts
76+
uses: actions/download-artifact@v2
77+
with:
78+
name: plugin-binaries
79+
- name: Upload release artifacts
80+
run: gh release upload "$GITHUB_REF_NAME" age-plugin-fido2-hmac*
81+
env:
82+
GH_REPO: ${{ github.repository }}
83+
GH_TOKEN: ${{ github.token }}

.github/workflows/lint-and-test.yml

-27
This file was deleted.

.github/workflows/release.yml

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Build and Test
2+
3+
on:
4+
release:
5+
types: [published]
6+
push:
7+
branches: [ "main" ]
8+
pull_request:
9+
branches: [ "main" ]
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
strategy:
15+
matrix:
16+
include:
17+
- {GOOS: linux, GOARCH: amd64}
18+
- {GOOS: linux, GOARCH: arm, GOARM: 6}
19+
- {GOOS: linux, GOARCH: arm64}
20+
- {GOOS: darwin, GOARCH: amd64}
21+
- {GOOS: darwin, GOARCH: arm64}
22+
- {GOOS: windows, GOARCH: amd64}
23+
- {GOOS: freebsd, GOARCH: amd64}
24+
steps:
25+
- uses: actions/checkout@v3
26+
27+
- name: Set up Go
28+
uses: actions/setup-go@v4
29+
with:
30+
go-version: '1.22'
31+
32+
- name: Install libfido2
33+
run: sudo apt install libfido2-1 libfido2-dev libfido2-doc fido2-tools
34+
35+
- name: Build
36+
run: go build -v ./cmd/...
37+
38+
- name: Test
39+
run: go test -v ./...

.gitignore

+18-154
Original file line numberDiff line numberDiff line change
@@ -1,160 +1,24 @@
1-
# Byte-compiled / optimized / DLL files
2-
__pycache__/
3-
*.py[cod]
4-
*$py.class
5-
6-
# C extensions
1+
# If you prefer the allow list template instead of the deny list, see community template:
2+
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
3+
#
4+
# Binaries for programs and plugins
5+
*.exe
6+
*.exe~
7+
*.dll
78
*.so
9+
*.dylib
810

9-
# Distribution / packaging
10-
.Python
11-
build/
12-
develop-eggs/
13-
dist/
14-
downloads/
15-
eggs/
16-
.eggs/
17-
lib/
18-
lib64/
19-
parts/
20-
sdist/
21-
var/
22-
wheels/
23-
share/python-wheels/
24-
*.egg-info/
25-
.installed.cfg
26-
*.egg
27-
MANIFEST
28-
29-
# PyInstaller
30-
# Usually these files are written by a python script from a template
31-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32-
*.manifest
33-
*.spec
34-
35-
# Installer logs
36-
pip-log.txt
37-
pip-delete-this-directory.txt
38-
39-
# Unit test / coverage reports
40-
htmlcov/
41-
.tox/
42-
.nox/
43-
.coverage
44-
.coverage.*
45-
.cache
46-
nosetests.xml
47-
coverage.xml
48-
*.cover
49-
*.py,cover
50-
.hypothesis/
51-
.pytest_cache/
52-
cover/
53-
54-
# Translations
55-
*.mo
56-
*.pot
57-
58-
# Django stuff:
59-
*.log
60-
local_settings.py
61-
db.sqlite3
62-
db.sqlite3-journal
63-
64-
# Flask stuff:
65-
instance/
66-
.webassets-cache
67-
68-
# Scrapy stuff:
69-
.scrapy
70-
71-
# Sphinx documentation
72-
docs/_build/
73-
74-
# PyBuilder
75-
.pybuilder/
76-
target/
77-
78-
# Jupyter Notebook
79-
.ipynb_checkpoints
80-
81-
# IPython
82-
profile_default/
83-
ipython_config.py
84-
85-
# pyenv
86-
# For a library or package, you might want to ignore these files since the code is
87-
# intended to run in multiple environments; otherwise, check them in:
88-
# .python-version
89-
90-
# pipenv
91-
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92-
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93-
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94-
# install all needed dependencies.
95-
#Pipfile.lock
96-
97-
# poetry
98-
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99-
# This is especially recommended for binary packages to ensure reproducibility, and is more
100-
# commonly ignored for libraries.
101-
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102-
#poetry.lock
103-
104-
# pdm
105-
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106-
#pdm.lock
107-
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108-
# in version control.
109-
# https://pdm.fming.dev/#use-with-ide
110-
.pdm.toml
111-
112-
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113-
__pypackages__/
114-
115-
# Celery stuff
116-
celerybeat-schedule
117-
celerybeat.pid
118-
119-
# SageMath parsed files
120-
*.sage.py
121-
122-
# Environments
123-
.env
124-
.venv
125-
env/
126-
venv/
127-
ENV/
128-
env.bak/
129-
venv.bak/
130-
131-
# Spyder project settings
132-
.spyderproject
133-
.spyproject
134-
135-
# Rope project settings
136-
.ropeproject
137-
138-
# mkdocs documentation
139-
/site
140-
141-
# mypy
142-
.mypy_cache/
143-
.dmypy.json
144-
dmypy.json
11+
# Test binary, built with `go test -c`
12+
*.test
14513

146-
# Pyre type checker
147-
.pyre/
14+
# Output of the go coverage tool, specifically when used with LiteIDE
15+
*.out
14816

149-
# pytype static type analyzer
150-
.pytype/
17+
# Dependency directories (remove the comment below to include it)
18+
# vendor/
15119

152-
# Cython debug symbols
153-
cython_debug/
20+
# Go workspace file
21+
go.work
15422

155-
# PyCharm
156-
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157-
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158-
# and can be added to the global gitignore or merged into this file. For a more nuclear
159-
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
160-
#.idea/
23+
./age-plugin-fido2-hmac
24+
*.enc

LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2024 https://github.com/olastor/
3+
Copyright (c) 2024 https://github.com/olastor
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

Makefile

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
build:
2+
go build ./cmd/...
3+
4+
test: build
5+
go test -v ./...
6+
7+
test-e2e: build
8+
testscript ./cmd/age-plugin-fido2-hmac/testdata/*.txtar
9+
10+
format:
11+
go fmt ./pkg/... ./cmd/...
12+
13+
clean:
14+
rm -f age-plugin-fido2-hmac

0 commit comments

Comments
 (0)