Source file pkcs11_CK_INFO.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
open Ctypes
open Ctypes_helpers

type _t
type t = _t structure

let ck_info : t typ = structure "CK_INFO"

let (-:) ty label = smart_field ck_info label ty

let cryptoki_version = Pkcs11_CK_VERSION.ck_version -: "cryptokiVersion"
let manufacturer_id = array 32 char -: "manufacturerID"
let flags = ulong -: "flags"
let library_description = array 32 char -: "libraryDescription"
let library_version = Pkcs11_CK_VERSION.ck_version -: "libraryVersion"
let () = seal ck_info

let view c =
  let open P11_info in
  { cryptokiVersion = Pkcs11_CK_VERSION.view (getf c cryptoki_version)
  ; manufacturerID = string_from_carray (getf c manufacturer_id)
  ; flags = getf c flags
  ; libraryDescription = string_from_carray (getf c library_description)
  ; libraryVersion = Pkcs11_CK_VERSION.view (getf c library_version)
  }

let make u =
  let open P11_info in
  let t = Ctypes.make ck_info in
  setf t cryptoki_version (Pkcs11_CK_VERSION.make u.cryptokiVersion);
  setf t manufacturer_id (carray_from_string (blank_padded ~length:32 u.manufacturerID));
  setf t flags u.flags;
  setf t library_description
    (carray_from_string (blank_padded ~length:32 u.libraryDescription));
  setf t library_version (Pkcs11_CK_VERSION.make u.libraryVersion);
  t