summaryrefslogtreecommitdiff
path: root/crypto/secp256k1/panic_cb.go
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/secp256k1/panic_cb.go')
-rw-r--r--crypto/secp256k1/panic_cb.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/crypto/secp256k1/panic_cb.go b/crypto/secp256k1/panic_cb.go
new file mode 100644
index 000000000..5da2bea37
--- /dev/null
+++ b/crypto/secp256k1/panic_cb.go
@@ -0,0 +1,24 @@
+// Copyright 2015 Jeffrey Wilcke, Felix Lange, Gustav Simonsson. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+// +build !gofuzz
+// +build cgo
+
+package secp256k1
+
+import "C"
+import "unsafe"
+
+// Callbacks for converting libsecp256k1 internal faults into
+// recoverable Go panics.
+
+//export secp256k1GoPanicIllegal
+func secp256k1GoPanicIllegal(msg *C.char, data unsafe.Pointer) {
+ panic("illegal argument: " + C.GoString(msg))
+}
+
+//export secp256k1GoPanicError
+func secp256k1GoPanicError(msg *C.char, data unsafe.Pointer) {
+ panic("internal error: " + C.GoString(msg))
+}