Skip to content

Autogenerate C and Go wrappers #259

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 30 commits into from
Mar 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
aa96998
autogenerate C and Go wrappers
qmuntal Feb 28, 2025
b739547
fix variadic check
qmuntal Feb 28, 2025
a3cfb42
fix variadic
qmuntal Feb 28, 2025
ad6f0df
verify go generate leaves no changes
qmuntal Feb 28, 2025
ac1c6c9
use int32
qmuntal Feb 28, 2025
5061492
abort if c function can't be loaded
qmuntal Mar 3, 2025
57d4cf9
remove unnecessary castings
qmuntal Mar 3, 2025
5bf6636
fix macro
qmuntal Mar 3, 2025
d725082
Update cmd/mkcgo/main.go
qmuntal Mar 3, 2025
5048f43
Update cmd/checkheader/main.go
qmuntal Mar 4, 2025
e978724
add comments
qmuntal Mar 4, 2025
f2ce9bc
use __attribute__ and reuse parsing
qmuntal Mar 4, 2025
ba54293
fix variadic
qmuntal Mar 4, 2025
55abf91
fix variadic
qmuntal Mar 4, 2025
e0f7a03
make shims.h more readable
qmuntal Mar 4, 2025
0fc1d6a
simplify code
qmuntal Mar 4, 2025
6ac0abc
simplify type handling
qmuntal Mar 4, 2025
173c2b0
deduplicate code
qmuntal Mar 4, 2025
9515ff4
simplify autogenerated Go code
qmuntal Mar 4, 2025
5e59690
use ubuntu 22.04
qmuntal Mar 4, 2025
91752bb
simplify mkcgo
qmuntal Mar 4, 2025
abdc6e6
normalize params
qmuntal Mar 4, 2025
5a86b08
support not ending attributes
qmuntal Mar 4, 2025
d94bb7d
revert backwards scan
qmuntal Mar 4, 2025
cebaf6b
Update shims.h
qmuntal Mar 5, 2025
c9cd7b4
Update internal/mkcgo/mkcgo.go
qmuntal Mar 5, 2025
4975f61
code review feedback
qmuntal Mar 5, 2025
a3c0336
autogenerate renamed functions
qmuntal Mar 5, 2025
366285e
support multiple tags in checkheader
qmuntal Mar 5, 2025
71baf73
map signed char to int8
qmuntal Mar 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading