mirror of
https://github.com/rwinkhart/cmutton.git
synced 2026-08-27 20:36:31 -04:00
Use platform-specific implementations of securePtrOverwriteAndFree
This commit is contained in:
@@ -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() {}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user