diff --git a/.github/actions/go-test-setup/action.yml b/.github/actions/go-test-setup/action.yml
index 54a5152..6b15ea0 100644
--- a/.github/actions/go-test-setup/action.yml
+++ b/.github/actions/go-test-setup/action.yml
@@ -11,6 +11,7 @@ runs:
       shell: bash
       if: ${{ runner.os == 'Windows' }}
       run: |
+        pacman -S --noconfirm mingw-w64-x86_64-toolchain mingw-w64-i686-toolchain
         echo '/c/msys64/mingw64/bin' >> $GITHUB_PATH
         echo 'PATH_386=/c/msys64/mingw32/bin:${{ env.PATH_386 }}' >> $GITHUB_ENV
     - name: Linux setup
diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml
index 44fad65..3833fc2 100644
--- a/.github/workflows/automerge.yml
+++ b/.github/workflows/automerge.yml
@@ -1,53 +1,11 @@
 # File managed by web3-bot. DO NOT EDIT.
 # See https://github.com/protocol/.github/ for details.
 
-# Automatically merge pull requests opened by web3-bot, as soon as (and only if) all tests pass.
-# This reduces the friction associated with updating with our workflows.
-
-on: [ pull_request ]
 name: Automerge
+on: [ pull_request ]
 
 jobs:
-  automerge-check:
-    if: github.event.pull_request.user.login == 'web3-bot'
-    runs-on: ubuntu-latest
-    outputs:
-      status: ${{ steps.should-automerge.outputs.status }}
-    steps:
-    - uses: actions/checkout@v2
-      with:
-        fetch-depth: 0
-    - name: Check if we should automerge
-      id: should-automerge
-      run: |
-        for commit in $(git rev-list --first-parent origin/${{ github.event.pull_request.base.ref }}..${{ github.event.pull_request.head.sha }}); do
-          committer=$(git show --format=$'%ce' -s $commit)
-          echo "Committer: $committer"
-          if [[ "$committer" != "web3-bot@users.noreply.github.com" ]]; then
-            echo "Commit $commit wasn't committed by web3-bot, but by $committer."
-            echo "::set-output name=status::false"
-            exit
-          fi
-        done
-        echo "::set-output name=status::true"
   automerge:
-    needs: automerge-check
-    runs-on: ubuntu-latest
-    # The check for the user is redundant here, as this job depends on the automerge-check job,
-    # but it prevents this job from spinning up, just to be skipped shortly after.
-    if: github.event.pull_request.user.login == 'web3-bot' && needs.automerge-check.outputs.status == 'true'
-    steps:
-    - name: Wait on tests
-      uses: lewagon/wait-on-check-action@bafe56a6863672c681c3cf671f5e10b20abf2eaa # v0.2
-      with:
-        ref: ${{ github.event.pull_request.head.sha }}
-        repo-token: ${{ secrets.GITHUB_TOKEN }}
-        wait-interval: 10
-        running-workflow-name: 'automerge' # the name of this job
-    - name: Merge PR
-      uses: pascalgn/automerge-action@741c311a47881be9625932b0a0de1b0937aab1ae # v0.13.1
-      env:
-        GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
-        MERGE_LABELS: ""
-        MERGE_METHOD: "squash"
-        MERGE_DELETE_BRANCH: true
+    uses: protocol/.github/.github/workflows/automerge.yml@master
+    with:
+      job: 'automerge'
diff --git a/.github/workflows/go-check.yml b/.github/workflows/go-check.yml
index e127cf1..25e1afd 100644
--- a/.github/workflows/go-check.yml
+++ b/.github/workflows/go-check.yml
@@ -16,7 +16,7 @@ jobs:
           submodules: recursive
       - uses: actions/setup-go@v2
         with:
-          go-version: "1.17.x"
+          go-version: "1.18.x"
       - name: Run repo-specific setup
         uses: ./.github/actions/go-check-setup
         if: hashFiles('./.github/actions/go-check-setup') != ''
@@ -27,7 +27,7 @@ jobs:
             echo "RUNGOGENERATE=true" >> $GITHUB_ENV
           fi
       - name: Install staticcheck
-        run: go install honnef.co/go/tools/cmd/staticcheck@c8caa92bad8c27ae734c6725b8a04932d54a147b # 2021.1.2 (v0.2.2)
+        run: go install honnef.co/go/tools/cmd/staticcheck@d7e217c1ff411395475b2971c0824e1e7cc1af98 # 2022.1 (v0.3.0)
       - name: Check that go.mod is tidy
         uses: protocol/multiple-go-modules@v1.2
         with:
@@ -71,4 +71,3 @@ jobs:
               git status --short
               exit 1
             fi
-
diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml
index 5f77540..b86241a 100644
--- a/.github/workflows/go-test.yml
+++ b/.github/workflows/go-test.yml
@@ -10,7 +10,7 @@ jobs:
       fail-fast: false
       matrix:
         os: [ "ubuntu", "windows", "macos" ]
-        go: [ "1.16.x", "1.17.x" ]
+        go: [ "1.17.x", "1.18.x" ]
     env:
       COVERAGES: ""
     runs-on: ${{ format('{0}-latest', matrix.os) }}
diff --git a/ctx.go b/ctx.go
index 28d1655..3bebf0d 100644
--- a/ctx.go
+++ b/ctx.go
@@ -365,12 +365,12 @@ func (c *Ctx) LoadVerifyLocations(ca_file string, ca_path string) error {
 type Version int
 
 const (
-	SSL3_VERSION Version = C.SSL3_VERSION
-	TLS1_VERSION Version = C.TLS1_VERSION
-	TLS1_1_VERSION Version = C.TLS1_1_VERSION
-	TLS1_2_VERSION Version = C.TLS1_2_VERSION
-	TLS1_3_VERSION Version = C.TLS1_3_VERSION
-	DTLS1_VERSION Version = C.DTLS1_VERSION
+	SSL3_VERSION    Version = C.SSL3_VERSION
+	TLS1_VERSION    Version = C.TLS1_VERSION
+	TLS1_1_VERSION  Version = C.TLS1_1_VERSION
+	TLS1_2_VERSION  Version = C.TLS1_2_VERSION
+	TLS1_3_VERSION  Version = C.TLS1_3_VERSION
+	DTLS1_VERSION   Version = C.DTLS1_VERSION
 	DTLS1_2_VERSION Version = C.DTLS1_2_VERSION
 )
 
diff --git a/go.mod b/go.mod
index e09148a..f5d7268 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,8 @@ module github.com/libp2p/go-openssl
 require (
 	github.com/mattn/go-pointer v0.0.1
 	github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572
-	golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb // indirect
 )
 
-go 1.16
+require golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb // indirect
+
+go 1.17
diff --git a/net.go b/net.go
index 769c634..b2293c7 100644
--- a/net.go
+++ b/net.go
@@ -89,7 +89,7 @@ func Dial(network, addr string, ctx *Ctx, flags DialFlags) (*Conn, error) {
 // parameters.
 func DialTimeout(network, addr string, timeout time.Duration, ctx *Ctx,
 	flags DialFlags) (*Conn, error) {
-	d := net.Dialer {Timeout: timeout}
+	d := net.Dialer{Timeout: timeout}
 	return dialSession(d, network, addr, ctx, flags, nil)
 }
 
@@ -109,7 +109,7 @@ func DialTimeout(network, addr string, timeout time.Duration, ctx *Ctx,
 func DialSession(network, addr string, ctx *Ctx, flags DialFlags,
 	session []byte) (*Conn, error) {
 	var d net.Dialer
-	return dialSession(d, network, addr, ctx, flags, session);
+	return dialSession(d, network, addr, ctx, flags, session)
 }
 
 func dialSession(d net.Dialer, network, addr string, ctx *Ctx, flags DialFlags,