1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2#
3# Author: Chuck Lever <chuck.lever@oracle.com>
4#
5# Copyright (c) 2023, Oracle and/or its affiliates.
6#
7
8name: handshake
9
10protocol: genetlink
11
12doc: Netlink protocol to request a transport layer security handshake.
13
14definitions:
15  -
16    type: enum
17    name: handler-class
18    value-start: 0
19    entries: [ none, tlshd, max ]
20  -
21    type: enum
22    name: msg-type
23    value-start: 0
24    entries: [ unspec, clienthello, serverhello ]
25  -
26    type: enum
27    name: auth
28    value-start: 0
29    entries: [ unspec, unauth, psk, x509 ]
30
31attribute-sets:
32  -
33    name: x509
34    attributes:
35      -
36        name: cert
37        type: u32
38      -
39        name: privkey
40        type: u32
41  -
42    name: accept
43    attributes:
44      -
45        name: sockfd
46        type: u32
47      -
48        name: handler-class
49        type: u32
50        enum: handler-class
51      -
52        name: message-type
53        type: u32
54        enum: msg-type
55      -
56        name: timeout
57        type: u32
58      -
59        name: auth-mode
60        type: u32
61        enum: auth
62      -
63        name: peer-identity
64        type: u32
65        multi-attr: true
66      -
67        name: certificate
68        type: nest
69        nested-attributes: x509
70        multi-attr: true
71      -
72        name: peername
73        type: string
74  -
75    name: done
76    attributes:
77      -
78        name: status
79        type: u32
80      -
81        name: sockfd
82        type: u32
83      -
84        name: remote-auth
85        type: u32
86        multi-attr: true
87
88operations:
89  list:
90    -
91      name: ready
92      doc: Notify handlers that a new handshake request is waiting
93      notify: accept
94    -
95      name: accept
96      doc: Handler retrieves next queued handshake request
97      attribute-set: accept
98      flags: [ admin-perm ]
99      do:
100        request:
101          attributes:
102            - handler-class
103        reply:
104          attributes:
105            - sockfd
106            - message-type
107            - timeout
108            - auth-mode
109            - peer-identity
110            - certificate
111            - peername
112    -
113      name: done
114      doc: Handler reports handshake completion
115      attribute-set: done
116      do:
117        request:
118          attributes:
119            - status
120            - sockfd
121            - remote-auth
122
123mcast-groups:
124  list:
125    -
126      name: none
127    -
128      name: tlshd
129