package pkcs11

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file p11_object_class.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
type raw = Unsigned.ULong.t
[@@deriving ord]

let equal_raw = Pervasives.(=)

type t =
  | CKO_DATA
  | CKO_CERTIFICATE
  | CKO_PUBLIC_KEY
  | CKO_PRIVATE_KEY
  | CKO_SECRET_KEY
  | CKO_HW_FEATURE
  | CKO_DOMAIN_PARAMETERS
  | CKO_MECHANISM
  | CKO_OTP_KEY
  | CKO_VENDOR_DEFINED
  (* This is a catch-all case that makes it possible to deal with
     vendor-specific/non-standard CKO. *)
  | CKO_CS_UNKNOWN of raw
[@@deriving eq,ord]

let to_string =
  function
    | CKO_DATA  -> "CKO_DATA"
    | CKO_CERTIFICATE  -> "CKO_CERTIFICATE"
    | CKO_PUBLIC_KEY  -> "CKO_PUBLIC_KEY"
    | CKO_PRIVATE_KEY  -> "CKO_PRIVATE_KEY"
    | CKO_SECRET_KEY  -> "CKO_SECRET_KEY"
    | CKO_HW_FEATURE  -> "CKO_HW_FEATURE"
    | CKO_DOMAIN_PARAMETERS  -> "CKO_DOMAIN_PARAMETERS"
    | CKO_MECHANISM  -> "CKO_MECHANISM"
    | CKO_OTP_KEY  -> "CKO_OTP_KEY"
    | CKO_VENDOR_DEFINED  -> "CKO_VENDOR_DEFINED"
    | CKO_CS_UNKNOWN x -> Unsigned.ULong.to_string x

let of_string =
  function
    | "CKO_DATA" -> CKO_DATA
    | "CKO_CERTIFICATE" -> CKO_CERTIFICATE
    | "CKO_PUBLIC_KEY" -> CKO_PUBLIC_KEY
    | "CKO_PRIVATE_KEY" -> CKO_PRIVATE_KEY
    | "CKO_SECRET_KEY" -> CKO_SECRET_KEY
    | "CKO_HW_FEATURE" -> CKO_HW_FEATURE
    | "CKO_DOMAIN_PARAMETERS" -> CKO_DOMAIN_PARAMETERS
    | "CKO_MECHANISM" -> CKO_MECHANISM
    | "CKO_OTP_KEY" -> CKO_OTP_KEY
    | "CKO_VENDOR_DEFINED" -> CKO_VENDOR_DEFINED
    | x ->
        (try CKO_CS_UNKNOWN (Unsigned.ULong.of_string x)
         with | Sys.Break  as e -> raise e
              | _ ->
                  invalid_arg
                    ("Pkcs11_CK_OBJECT_CLASS.of_string" ^ (": cannot find " ^ x)))

let to_yojson object_class =
  `String (to_string object_class)

let of_yojson = P11_helpers.of_json_string ~typename:"object class" of_string