func cMechanismList(m []*Mechanism) (C.CK_MECHANISM_PTR, C.CK_ULONG) { if len(m) == 0 { return nil, 0 } pm := make([]C.CK_MECHANISM, len(m)) for i := 0; i < len(m); i++ { pm[i].mechanism = C.CK_MECHANISM_TYPE(m[i].Mechanism) if m[i].Parameter == nil { continue } pm[i].pParameter = C.CK_VOID_PTR(&(m[i].Parameter[0])) pm[i].ulParameterLen = C.CK_ULONG(len(m[i].Parameter)) } return C.CK_MECHANISM_PTR(&pm[0]), C.CK_ULONG(len(m)) }
// cAttribute returns the start address and the length of an attribute list. func cAttributeList(a []*Attribute) (C.CK_ATTRIBUTE_PTR, C.CK_ULONG) { if len(a) == 0 { return nil, 0 } pa := make([]C.CK_ATTRIBUTE, len(a)) for i := 0; i < len(a); i++ { pa[i]._type = C.CK_ATTRIBUTE_TYPE(a[i].Type) if a[i].Value == nil { continue } pa[i].pValue = C.CK_VOID_PTR((&a[i].Value[0])) pa[i].ulValueLen = C.CK_ULONG(len(a[i].Value)) } return C.CK_ATTRIBUTE_PTR(&pa[0]), C.CK_ULONG(len(a)) }
/* Initialize initializes the Cryptoki library. */ func (c *Ctx) Initialize() error { args := &C.CK_C_INITIALIZE_ARGS{nil, nil, nil, nil, C.CKF_OS_LOCKING_OK, nil} e := C.Initialize(c.ctx, C.CK_VOID_PTR(args)) return toError(e) }
func (a *arena) Allocate(obj []byte) (C.CK_VOID_PTR, C.CK_ULONG) { cobj := C.calloc(C.size_t(len(obj)), 1) *a = append(*a, cobj) C.memmove(cobj, unsafe.Pointer(&obj[0]), C.size_t(len(obj))) return C.CK_VOID_PTR(cobj), C.CK_ULONG(len(obj)) }