Use platform-specific implementations of securePtrOverwriteAndFree

This commit is contained in:
2026-02-07 23:29:11 -05:00
parent bfc6d97773
commit 904c084711
4 changed files with 30 additions and 8 deletions
-6
View File
@@ -97,10 +97,4 @@ func safeBoolDeref(b *bool) bool {
return *b
}
// securePtrOverwrite securely overwrites the memory at the input pointer and then frees it.
func securePtrOverwriteAndFree(input unsafe.Pointer, length C.int) {
C.explicit_bzero(input, C.size_t(length))
C.free(input)
}
func main() {}
+14
View File
@@ -0,0 +1,14 @@
//go:build !ios
package main
// #include <string.h>
// #include <stdlib.h>
import "C"
import "unsafe"
// securePtrOverwriteAndFree securely overwrites the memory at the input pointer and then frees it.
func securePtrOverwriteAndFree(input unsafe.Pointer, length C.size_t) {
C.explicit_bzero(input, C.size_t(length))
C.free(input)
}
+14
View File
@@ -0,0 +1,14 @@
//go:build ios
package main
// #include <string.h>
// #include <stdlib.h>
import "C"
import "unsafe"
// securePtrOverwriteAndFree securely overwrites the memory at the input pointer and then frees it.
func securePtrOverwriteAndFree(input unsafe.Pointer, length C.size_t) {
C.memset_s(input, length, 0, length)
C.free(input)
}
+2 -2
View File
@@ -20,7 +20,7 @@ import (
func SetPrivKeyDataAndEraseFreeInput(privKeyData C.PascalString) {
privKeyDataPtr := unsafe.Pointer(privKeyData.data)
privkey.SetBytes(C.GoBytes(privKeyDataPtr, privKeyData.len))
securePtrOverwriteAndFree(privKeyDataPtr, privKeyData.len)
securePtrOverwriteAndFree(privKeyDataPtr, C.size_t(privKeyData.len))
FreePascalString(privKeyData)
}
@@ -46,6 +46,6 @@ func GetPrivKeyDataAndEraseGoCopy() C.PascalString {
//
//export EraseFreePrivKeyPascal
func EraseFreePrivKeyPascal(privKeyPascal C.PascalString) {
securePtrOverwriteAndFree(unsafe.Pointer(privKeyPascal.data), privKeyPascal.len)
securePtrOverwriteAndFree(unsafe.Pointer(privKeyPascal.data), C.size_t(privKeyPascal.len))
FreePascalString(privKeyPascal)
}