Files
llgo/c/openssl/_demo/chmacdemo/hmac.go
tsingbx f7bf671050 add openssl hmac
delete GetMD and HMAC function

delete macro

tidy code

add hmac
2024-08-05 16:57:47 +08:00

46 lines
1018 B
Go

package main
import (
"fmt"
"unsafe"
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/c/openssl"
)
func main() {
str := "Hello, World!"
key := "123456"
var lenKey = len(key)
var digest = make([]byte, openssl.EVP_MAX_MD_SIZE)
var digestLen c.Uint
ctx := openssl.NewHMAC_CTX()
if ctx == nil {
c.Fprintf(c.Stderr, c.Str("%s\n"), c.Str("Error creating HMAC_CTX"))
return
}
defer ctx.Free()
var ret c.Int = ctx.InitEx(unsafe.Pointer(unsafe.StringData(key)), c.Int(lenKey), openssl.EVP_sha256(), nil)
if ret == 0 {
c.Fprintf(c.Stderr, c.Str("%s\n"), c.Str("Error initializing HMAC_CTX"))
return
}
ret = ctx.UpdateString(str)
if ret == 0 {
c.Fprintf(c.Stderr, c.Str("%s\n"), c.Str("Error updating HMAC_CTX"))
return
}
ret = ctx.Final(unsafe.SliceData(digest), &digestLen)
if ret == 0 {
c.Fprintf(c.Stderr, c.Str("%s\n"), c.Str("Error finalizing HMAC_CTX"))
return
}
fmt.Print("HMAC: ")
for i := 0; i < int(digestLen); i++ {
fmt.Printf("%02x", digest[i])
}
fmt.Print("\n")
}