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: done
73    attributes:
74      -
75        name: status
76        type: u32
77      -
78        name: sockfd
79        type: u32
80      -
81        name: remote-auth
82        type: u32
83        multi-attr: true
84
85operations:
86  list:
87    -
88      name: ready
89      doc: Notify handlers that a new handshake request is waiting
90      notify: accept
91    -
92      name: accept
93      doc: Handler retrieves next queued handshake request
94      attribute-set: accept
95      flags: [ admin-perm ]
96      do:
97        request:
98          attributes:
99            - handler-class
100        reply:
101          attributes:
102            - sockfd
103            - message-type
104            - timeout
105            - auth-mode
106            - peer-identity
107            - certificate
108    -
109      name: done
110      doc: Handler reports handshake completion
111      attribute-set: done
112      do:
113        request:
114          attributes:
115            - status
116            - sockfd
117            - remote-auth
118
119mcast-groups:
120  list:
121    -
122      name: none
123    -
124      name: tlshd
125