func makeSigner(context *pkcs11.Ctx) (*signer, error) { slot, err := getSlot(context, *tokenLabel) if err != nil { return nil, err } session, err := context.OpenSession(slot, pkcs11.CKF_SERIAL_SESSION) if err != nil { return nil, err } if err = context.Login(session, pkcs11.CKU_USER, *pin); err != nil { context.CloseSession(session) return nil, err } privateKey, err := getPrivateKey(context, session, *privateKeyLabel) if err != nil { context.CloseSession(session) return nil, err } return &signer{context, session, privateKey}, nil }
func cleanup(ctx *pkcs11.Ctx, session pkcs11.SessionHandle) { ctx.Destroy() ctx.Finalize() ctx.CloseSession(session) ctx.Logout(session) }