diff options
| author | StevenWdV <stevenwdv@gmail.com> | 2021-11-20 18:09:09 +0100 |
|---|---|---|
| committer | StevenWdV <stevenwdv@gmail.com> | 2021-11-22 12:37:33 +0100 |
| commit | 8878d8705f0b0fcddb3979194340ca39df897580 (patch) | |
| tree | 6c920d0b9d40584dfe6bf7e5b2e865acff72e72f /exports | |
| parent | b8d368b93479233a8ecbeba3daf4b10bee8f0a4a (diff) | |
Add C bindings and a C# wrapper
Diffstat (limited to 'exports')
| -rw-r--r-- | exports/.gitignore | 3 | ||||
| -rw-r--r-- | exports/Makefile | 12 | ||||
| -rw-r--r-- | exports/exports.go | 28 |
3 files changed, 43 insertions, 0 deletions
diff --git a/exports/.gitignore b/exports/.gitignore new file mode 100644 index 0000000..a95b306 --- /dev/null +++ b/exports/.gitignore @@ -0,0 +1,3 @@ +*.dll +*.so +*.h diff --git a/exports/Makefile b/exports/Makefile new file mode 100644 index 0000000..94781be --- /dev/null +++ b/exports/Makefile @@ -0,0 +1,12 @@ +.PHONY: build + +ifeq ($(OS),Windows_NT) + lib_suffix := .dll +else + lib_suffix := .so +endif + +build: eduvpn_verify$(lib_suffix) + +eduvpn_verify.dll eduvpn_verify.so: exports.go ../verify.go + go build -o $@ -buildmode=c-shared $< diff --git a/exports/exports.go b/exports/exports.go new file mode 100644 index 0000000..f841eca --- /dev/null +++ b/exports/exports.go @@ -0,0 +1,28 @@ +package main + +import "C" + +import "eduvpn-common" + +// Functions here should not take string parameters, see https://pkg.go.dev/cmd/cgo#hdr-C_references_to_Go + +// Verify verifies a signature on a JSON file. See eduvpn_verify.Verify for more details. +// It returns 0 for a valid signature and a nonzero eduvpn_verify.VerifyErrorCode otherwise. +//export Verify +func Verify(signatureFileContent []byte, signedJson []byte, expectedFileName []byte, minSignTime uint64) int { + valid, err := eduvpn_verify.Verify(string(signatureFileContent), signedJson, string(expectedFileName), minSignTime) + if valid { + return 0 + } else { + return int(err.(eduvpn_verify.VerifyError).Code) + } +} + +// InsecureTestingSetExtraKey adds an extra allowed key for verification with Verify. +// ONLY USE FOR TESTING. Not Thread-safe. Do not call in parallel to Verify. +//export InsecureTestingSetExtraKey +func InsecureTestingSetExtraKey(keyString []byte) { + eduvpn_verify.InsecureTestingSetExtraKey(string(keyString)) +} + +func main() { panic("compile with -buildmode=c-shared") } |
