diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
new file mode 100644
index 0000000..f9f764c
--- /dev/null
+++ b/.github/workflows/CI.yml
@@ -0,0 +1,20 @@
+name: CI
+on: [push, pull_request]
+
+jobs:
+ ununtu:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Decrypt snk
+ uses: shinhwagk/actions-crypto@0.0.9
+ with:
+ crypto-path: nacl.net.snk.enc
+ crypto-action: dec
+ crypto-password: ${{ secrets.SNK_SECRET }}
+ - run: dotnet restore .
+ - name: build
+ run: dotnet build .
+ - name: test
+ run: dotnet test NaCl.net.Tests
+
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..0af360e
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,30 @@
+name: release
+on:
+ release:
+ types: [published]
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ if: "!github.event.release.prerelease"
+ steps:
+ - uses: actions/checkout@v2
+ - name: Decrypt snk
+ uses: shinhwagk/actions-crypto@0.0.9
+ with:
+ crypto-path: nacl.net.snk.enc
+ crypto-action: dec
+ crypto-password: ${{ secrets.SNK_SECRET }}
+ - name: Get the version
+ id: get_version
+ run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
+ shell: bash
+ - run: echo ${{ steps.get_version.outputs.VERSION }}
+ - run: dotnet restore .
+ - run: dotnet pack NaCl.net -o . -c Release /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} /p:Version=${{ steps.get_version.outputs.VERSION }} /p:ContinuousIntegrationBuild=true
+ - run: dotnet nuget push *.nupkg -k $NUGET_API_KEY -s https://api.nuget.org/v3/index.json
+ env:
+ NUGET_API_KEY: ${{ secrets.NuGetAPIKey }}
+ shell: bash
+
+
diff --git a/NaCl.net/NaCl.net.csproj b/NaCl.net/NaCl.net.csproj
index 4fe9184..d3fdaea 100644
--- a/NaCl.net/NaCl.net.csproj
+++ b/NaCl.net/NaCl.net.csproj
@@ -15,6 +15,11 @@