From 8878d8705f0b0fcddb3979194340ca39df897580 Mon Sep 17 00:00:00 2001 From: StevenWdV Date: Sat, 20 Nov 2021 18:09:09 +0100 Subject: Add C bindings and a C# wrapper --- exports/exports.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 exports/exports.go (limited to 'exports/exports.go') 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") } -- cgit v1.2.3