pkcs11
1.0.0
이것은 PKCS#11 API의 GO 구현입니다. 라이브러리를 면밀히 감싸지만 이해가되는 관용구를 사용합니다. softhsm으로 테스트되었습니다.
사용자 정의 구성 파일 export SOFTHSM_CONF=$PWD/softhsm.conf 사용하십시오
그런 다음 softhsm 사용하여 시작하십시오
softhsm --init-token --slot 0 --label test --pin 1234
그런 다음 libsofthsm2.so 사용하여 pkcs11 모듈로 사용하십시오.
p := pkcs11 . New ( "/usr/lib/softhsm/libsofthsm2.so" )스켈레톤 프로그램은 이와 같은 것처럼 보일 것입니다 (예, PKCS#11은 장점) :
p := pkcs11 . New ( "/usr/lib/softhsm/libsofthsm2.so" )
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 ()추가 예제가 테스트에 포함되어 있습니다.
crypto.signer 인터페이스를 사용하여 PKCS#11 키를 노출하려면 github.com/thalesignite/crypto11을 참조하십시오.