Skip to content

Commit

Permalink
Autogenerate C and Go wrappers (#259)
Browse files Browse the repository at this point in the history
* autogenerate C and Go wrappers

* fix variadic check

* fix variadic

* verify go generate leaves no changes

* use int32

* abort if c function can't be loaded

* remove unnecessary castings

* fix macro

* Update cmd/mkcgo/main.go

Co-authored-by: Davis Goodin <[email protected]>

* Update cmd/checkheader/main.go

Co-authored-by: Davis Goodin <[email protected]>

* add comments

* use __attribute__ and reuse parsing

* fix variadic

* fix variadic

* make shims.h more readable

* simplify code

* simplify type handling

* deduplicate code

* simplify autogenerated Go code

* use ubuntu 22.04

* simplify mkcgo

* normalize params

* support not ending attributes

* revert backwards scan

* Update shims.h

Co-authored-by: Davis Goodin <[email protected]>

* Update internal/mkcgo/mkcgo.go

Co-authored-by: Davis Goodin <[email protected]>

* code review feedback

* autogenerate renamed functions

* support multiple tags in checkheader

* map signed char to int8

---------

Co-authored-by: Davis Goodin <[email protected]>
  • Loading branch information
qmuntal and dagood authored Mar 5, 2025
1 parent 1439a8c commit 4e98212
Show file tree
Hide file tree
Showing 34 changed files with 4,324 additions and 1,366 deletions.
7 changes: 5 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
matrix:
go-version: [1.23.x, 1.24.x]
openssl-version: [1.1.0, 1.1.1, 3.0.1, 3.0.13, 3.1.5, 3.2.1, 3.3.0, 3.3.1]
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Install build tools
run: sudo apt-get install -y build-essential
Expand All @@ -17,13 +17,16 @@ jobs:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v4
- name: Verify go generate leaves no changes
run: |
go generate .
git diff --exit-code
- name: Install OpenSSL
run: sudo sh ./scripts/openssl.sh ${{ matrix.openssl-version }}
- name: Check headers
working-directory: ./cmd/checkheader
run: |
go run . --ossl-include /usr/local/src/openssl-${{ matrix.openssl-version }}/include -shim ../../shims.h
go run . --ossl-include /usr/local/src/openssl-${{ matrix.openssl-version }}/include -shim ../../const.go
- name: Set OpenSSL config and prove FIPS
run: |
sudo cp ./scripts/openssl-3.cnf /usr/local/ssl/openssl.cnf
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
**/.DS_Store
.vscode/
1 change: 0 additions & 1 deletion aes.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

package openssl

// #include "goopenssl.h"
import "C"
import (
"crypto/cipher"
Expand Down
48 changes: 24 additions & 24 deletions cgo_go124.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,29 +14,29 @@ package openssl
// expected to meet the noescape/nocallback criteria.

/*
#cgo noescape go_openssl_RAND_bytes
#cgo nocallback go_openssl_RAND_bytes
#cgo noescape go_openssl_EVP_EncryptUpdate
#cgo nocallback go_openssl_EVP_EncryptUpdate
#cgo noescape go_openssl_EVP_EncryptFinal_ex
#cgo nocallback go_openssl_EVP_EncryptFinal_ex
#cgo noescape go_openssl_EVP_DecryptFinal_ex
#cgo nocallback go_openssl_EVP_DecryptFinal_ex
#cgo noescape go_openssl_EVP_DecryptUpdate
#cgo nocallback go_openssl_EVP_DecryptUpdate
#cgo noescape go_openssl_EVP_CipherUpdate
#cgo nocallback go_openssl_EVP_CipherUpdate
#cgo noescape go_openssl_EVP_PKEY_derive
#cgo nocallback go_openssl_EVP_PKEY_derive
#cgo noescape go_openssl_EVP_PKEY_get_raw_public_key
#cgo nocallback go_openssl_EVP_PKEY_get_raw_public_key
#cgo noescape go_openssl_EVP_PKEY_get_raw_private_key
#cgo nocallback go_openssl_EVP_PKEY_get_raw_private_key
#cgo noescape go_openssl_EVP_DigestSign
#cgo nocallback go_openssl_EVP_DigestSign
#cgo noescape go_openssl_EVP_Digest
#cgo nocallback go_openssl_EVP_Digest
#cgo noescape go_openssl_EVP_DigestUpdate
#cgo nocallback go_openssl_EVP_DigestUpdate
#cgo noescape RAND_bytes
#cgo nocallback RAND_bytes
#cgo noescape EVP_EncryptUpdate
#cgo nocallback EVP_EncryptUpdate
#cgo noescape EVP_EncryptFinal_ex
#cgo nocallback EVP_EncryptFinal_ex
#cgo noescape EVP_DecryptFinal_ex
#cgo nocallback EVP_DecryptFinal_ex
#cgo noescape EVP_DecryptUpdate
#cgo nocallback EVP_DecryptUpdate
#cgo noescape EVP_CipherUpdate
#cgo nocallback EVP_CipherUpdate
#cgo noescape EVP_PKEY_derive
#cgo nocallback EVP_PKEY_derive
#cgo noescape EVP_PKEY_get_raw_public_key
#cgo nocallback EVP_PKEY_get_raw_public_key
#cgo noescape EVP_PKEY_get_raw_private_key
#cgo nocallback EVP_PKEY_get_raw_private_key
#cgo noescape EVP_DigestSign
#cgo nocallback EVP_DigestSign
#cgo noescape EVP_Digest
#cgo nocallback EVP_Digest
#cgo noescape EVP_DigestUpdate
#cgo nocallback EVP_DigestUpdate
*/
import "C"
Loading

0 comments on commit 4e98212

Please sign in to comment.