package krb

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

Source file ticket.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
open! Core

module Raw = struct
  type t

  external kvno : t -> int = "caml_krb5_ticket_kvno"
  external free : Context.t -> t -> unit = "caml_krb5_free_ticket"
  external decode : Data.t -> t Krb_result.t = "caml_krb5_decode_ticket"
  external enctype : t -> int = "caml_krb5_ticket_enctype"
end

type t = Raw.t

let kvno t = Raw.kvno t
let enctype t = Or_error.try_with (fun () -> Enctype.of_int (Raw.enctype t))

let decode data =
  let open Or_error.Let_syntax in
  let info = "[krb5_decode_ticket]" in
  let%bind ticket = Raw.decode data |> Krb_result.to_or_error ~info in
  Context_sequencer.add_finalizer ticket ~f:Raw.free;
  return ticket
;;
OCaml

Innovation. Community. Security.