我正在做一个使用PKCS11的CGO代码,在启用CGO和一些错误,测试和更正之后,我发现了一个我从未见过的新错误。无论我使用“go build”还是“go run main.go”,错误仍然出现。有人知道如何修复它吗?
package main
import (
"fmt"
"github.com/miekg/pkcs11"
)
func main() {
p := pkcs11.New("aetpkss1.dll")
err := p.Initialize()
if err != nil {
panic(err)
}
defer p.Destroy()
defer p.Finalize()
slots, err := p.GetSlotList(true)
if err != nil {
panic(err)
}
session, err := p.OpenSession(slots[0], pkcs11.CKF_SERIAL_SESSION|pkcs11.CKF_RW_SESSION)
if err != nil {
panic(err)
}
defer p.CloseSession(session)
err = p.Login(session, pkcs11.CKU_USER, "1234")
if err != nil {
panic(err)
}
defer p.Logout(session)
p.DigestInit(session, []*pkcs11.Mechanism{pkcs11.NewMechanism(pkcs11.CKM_SHA_1, nil)})
hash, err := p.Digest(session, []byte("this is a string"))
if err != nil {
panic(err)
}
for _, d := range hash {
fmt.Printf("%x", d)
}
fmt.Println()
}
C:\Users\user\Desktop\Teste2> go run main.go
# runtime/cgo
cc1.exe: error: C:\src\github.com\miekg\pkcs11\pkcs11.h: not a directory [-Werror]
cc1.exe: all warnings being treated as errors
1条答案
按热度按时间xuo3flqw1#
你需要安装包pkcs11,你可以这样命令
字符串
你需要在你的系统上有aetpkss1.dll PKCS#11库。它在正确的位置并正确安装。
检查环境变量CGO_ENABLED和CC是否正确设置。您可能需要设置这些变量以指定要使用和启用CGO的C编译器。例如:
型