mirror of
https://github.com/rwinkhart/cmutton.git
synced 2026-09-05 16:47:28 -04:00
Use platform-specific implementations of securePtrOverwriteAndFree
This commit is contained in:
@@ -97,10 +97,4 @@ func safeBoolDeref(b *bool) bool {
|
|||||||
return *b
|
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() {}
|
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) {
|
func SetPrivKeyDataAndEraseFreeInput(privKeyData C.PascalString) {
|
||||||
privKeyDataPtr := unsafe.Pointer(privKeyData.data)
|
privKeyDataPtr := unsafe.Pointer(privKeyData.data)
|
||||||
privkey.SetBytes(C.GoBytes(privKeyDataPtr, privKeyData.len))
|
privkey.SetBytes(C.GoBytes(privKeyDataPtr, privKeyData.len))
|
||||||
securePtrOverwriteAndFree(privKeyDataPtr, privKeyData.len)
|
securePtrOverwriteAndFree(privKeyDataPtr, C.size_t(privKeyData.len))
|
||||||
FreePascalString(privKeyData)
|
FreePascalString(privKeyData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,6 +46,6 @@ func GetPrivKeyDataAndEraseGoCopy() C.PascalString {
|
|||||||
//
|
//
|
||||||
//export EraseFreePrivKeyPascal
|
//export EraseFreePrivKeyPascal
|
||||||
func EraseFreePrivKeyPascal(privKeyPascal C.PascalString) {
|
func EraseFreePrivKeyPascal(privKeyPascal C.PascalString) {
|
||||||
securePtrOverwriteAndFree(unsafe.Pointer(privKeyPascal.data), privKeyPascal.len)
|
securePtrOverwriteAndFree(unsafe.Pointer(privKeyPascal.data), C.size_t(privKeyPascal.len))
|
||||||
FreePascalString(privKeyPascal)
|
FreePascalString(privKeyPascal)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user