changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/ffi/keyutils/keyctl.lisp

changeset 698: 96958d3eb5b0
parent: bc0ea6a5c252
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
506
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; keyctl.lisp --- Keyctl API Functions
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;; 
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 (in-package :keyutils)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 (macrolet ((def (name &rest args)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
                `(progn
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
                   (define-alien-routine ,name key-serial-t ,@args)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
                   ,@(if (atom name)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
                         `((export ',name))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
                         `((export ',(cadr name))))))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
            (defint (name &rest args)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
              `(progn
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
                 (define-alien-routine ,name int ,@args)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
                 (export ',name)))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
            (deflong (name &rest args)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
              `(progn
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
                 (define-alien-routine ,name long ,@args)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
                 (export ',name))))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
   (def add-key (type c-string) (description c-string) (payload (* t)) (plen size-t) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
   (def request-key (type c-string) (description c-string) (callout-info c-string) (destringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
   ;; variadic? ... prob not supported by sb-alien
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
   (deflong keyctl (cmd int))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
   (def ("keyctl_get_keyring_ID" keyctl-get-keyring-id) (id key-serial-t) (create int))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
   (def keyctl-join-session-keyring (name c-string))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
   (deflong keyctl-update (id key-serial-t) (payload (* t)) (plen size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
   (deflong keyctl-revoke (id key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
   (deflong keyctl-chown (id key-serial-t) (uid sb-unix:uid-t) (gid sb-unix:gid-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
   (deflong keyctl-setperm (id key-serial-t) (perm key-perm-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
   (deflong keyctl-describe (id key-serial-t) (buffer c-string) (buflen size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
   (deflong keyctl-clear (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
   (deflong keyctl-link (id key-serial-t) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
   (deflong keyctl-unlink (id key-serial-t) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
   (deflong keyctl-search (ringid key-serial-t) (type c-string) (description c-string) (destringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37
   (deflong keyctl-read (id key-serial-t) (buffer c-string) (buflen size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
   (deflong keyctl-instantiate (id key-serial-t) (payload (* t)) (plen size-t) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
   (deflong keyctl-negate (id key-serial-t) (timeout unsigned) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
   (deflong keyctl-set-reqkey-keyring (reqkey-defl int))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
   (deflong keyctl-set-timeout (key key-serial-t) (timeout unsigned))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
   (deflong keyctl-assume-authority (key key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
   (deflong keyctl-get-security (key key-serial-t) (buffer c-string) (buflen size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
   (deflong keyctl-session-to-parent)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
   (deflong keyctl-reject (id key-serial-t) (timeout unsigned) (error unsigned) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
   (deflong keyctl-instantiate-iov (id key-serial-t) (payload-iov (* iovec)) (ioc unsigned) (ringid key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
   (deflong keyctl-invalidate (id key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
   (deflong keyctl-get-persistent (uid sb-unix:uid-t) (id key-serial-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
   (deflong keyctl-dh-compute (priv key-serial-t) (prime key-serial-t)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
     (base key-serial-t) (buffer c-string) (buflen size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
   (deflong keyctl-dh-compute-kdf (priv key-serial-t) (prime key-serial-t) (base key-serial-t) (hashname c-string)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
     (otherinfo c-string) (otherinfolen size-t) (buffer c-string) (buflen size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
   (deflong keyctl-pkey-query (key-id key-serial-t) (info c-string) (result (* keyctl-pkey-query)))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
54
   (deflong keyctl-pkey-encrypt (key-id key-serial-t) (info c-string) (data (* t)) (data-len size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
   (deflong keyctl-pkey-decrypt (key-id key-serial-t) (info c-string) (enc (* t)) (enc-len size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
   (deflong keyctl-pkey-sign (key-id key-serial-t) (info c-string) (data (* t)) (data-len size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
   (deflong keyctl-pkey-verify (key-id key-serial-t) (info c-string) (data (* t)) (data-len size-t)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
     (sig (* t)) (sig-len size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
59
   (deflong keyctl-move (id key-serial-t) (from-ringid key-serial-t) (to-ringid key-serial-t) (flags unsigned-int))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
   (deflong keyctl-capabilities (buffer c-string) (len size-t))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
   (deflong keyctl-watch-key (id key-serial-t) (watch-queue-fd int) (watch-id int))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
   ;; utils
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
   (defint keyctl-describe-alloc (id key-serial-t) (buffer (* c-string)))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
   (defint keyctl-read-alloc (id key-serial-t) (%buffer (* (* t))))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
   (defint keyctl-get-security-alloc (id key-serial-t) (%buffer (* (* t))))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
66
   (defint keyctl-dh-compute-alloc (priv key-serial-t) (prime key-serial-t)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
     (base key-serial-t) (%buffer (* (* t))))
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
   ;; (defint recursive-key-scan)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69
   ;; (defint recursive-session-key-scan)
bc0ea6a5c252 keyctl api
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
70
   (def find-key-by-type-and-desc (type c-string) (desc c-string) (destringid key-serial-t)))