package krb
A library for using Kerberos for both Rpc and Tcp communication
Install
Dune Dependency
Authors
Maintainers
Sources
krb-v0.16.0.tar.gz
sha256=353675621e4c5a888f2483dc1bb7281bd17ce4ed7dfd2f40142257f98db7c77d
doc/src/krb.internal/keytab.ml.html
Source file keytab.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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
open! Core open Async module Raw = struct type t type keytab = t module Cursor = struct type t external create : Context.t -> keytab -> t Krb_result.t = "caml_krb5_kt_start_seq_get" external advance : Context.t -> keytab -> t -> Keytab_entry.t option Krb_result.t = "caml_krb5_kt_next_entry" external free : Context.t -> keytab -> t -> unit Krb_result.t = "caml_krb5_kt_end_seq_get" end external resolve : Context.t -> string -> t Krb_result.t = "caml_krb5_kt_resolve" external free : Context.t -> t -> unit = "caml_krb5_kt_close" external add_entry : Context.t -> t -> Keytab_entry.t -> unit Krb_result.t = "caml_krb5_kt_add_entry" external remove_entry : Context.t -> t -> Keytab_entry.t -> unit Krb_result.t = "caml_krb5_kt_remove_entry" end type t = { raw : Raw.t ; path : string } [@@deriving fields] let sexp_of_t t = [%sexp { path = (t.path : string Sexp_opaque_when_testing.t) }] let to_raw = raw let load path = let tag_arguments = lazy [%message (path : string)] in let info = Krb_info.create ~tag_arguments "[krb5_kt_resolve]" in Context_sequencer.enqueue_job_with_info ~info ~f:(fun c -> Raw.resolve c path) >>|? fun raw -> Context_sequencer.add_finalizer raw ~f:Raw.free; { raw; path } ;; let add_entry t entry = let tag_arguments = lazy [%message "" ~keytab:(t : t)] in let info = Krb_info.create ~tag_arguments "[krb5_kt_add_entry]" in Context_sequencer.enqueue_job_with_info ~info ~f:(fun c -> Raw.add_entry c t.raw entry) ;; let remove_entry t entry = let tag_arguments = lazy [%message "" ~keytab:(t : t)] in let info = Krb_info.create ~tag_arguments "[krb5_kt_remove_entry]" in Context_sequencer.enqueue_job_with_info ~info ~f:(fun c -> Raw.remove_entry c t.raw entry) ;; module Keytab_cursor = Cursor.Make (struct module Container = struct type raw = Raw.t type nonrec t = t [@@deriving sexp_of] let tag t = [%message "" ~keytab:(t : t)] let to_raw = to_raw end module Item = struct type raw = Keytab_entry.t type t = raw let of_raw = Deferred.Or_error.return let free = Keytab_entry.Raw.free end module Cursor = struct type t = Raw.Cursor.t let start = Raw.Cursor.create let advance = Raw.Cursor.advance let finish = Raw.Cursor.free end let info = "[krb5_kt_start_seq_get//krb5_kt_next_entry//krb5_kt_end_seq_get]" end) let entries t = Keytab_cursor.get_all t
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>