xref: /openbsd-src/lib/libfido2/src/fido/err.h (revision c4a807ed13283181a6a84fdf571f4571a1b25eac)
1d75efeb7Sdjm /*
2d75efeb7Sdjm  * Copyright (c) 2018 Yubico AB. All rights reserved.
3d75efeb7Sdjm  * Use of this source code is governed by a BSD-style
4d75efeb7Sdjm  * license that can be found in the LICENSE file.
5d75efeb7Sdjm  */
6d75efeb7Sdjm 
7d75efeb7Sdjm #ifndef _FIDO_ERR_H
8d75efeb7Sdjm #define _FIDO_ERR_H
9d75efeb7Sdjm 
10d75efeb7Sdjm #define FIDO_ERR_SUCCESS		0x00
11d75efeb7Sdjm #define FIDO_ERR_INVALID_COMMAND	0x01
12d75efeb7Sdjm #define FIDO_ERR_INVALID_PARAMETER	0x02
13d75efeb7Sdjm #define FIDO_ERR_INVALID_LENGTH		0x03
14d75efeb7Sdjm #define FIDO_ERR_INVALID_SEQ		0x04
15d75efeb7Sdjm #define FIDO_ERR_TIMEOUT		0x05
16d75efeb7Sdjm #define FIDO_ERR_CHANNEL_BUSY		0x06
17d75efeb7Sdjm #define FIDO_ERR_LOCK_REQUIRED		0x0a
18d75efeb7Sdjm #define FIDO_ERR_INVALID_CHANNEL	0x0b
19d75efeb7Sdjm #define FIDO_ERR_CBOR_UNEXPECTED_TYPE	0x11
20d75efeb7Sdjm #define FIDO_ERR_INVALID_CBOR		0x12
21d75efeb7Sdjm #define FIDO_ERR_MISSING_PARAMETER	0x14
22d75efeb7Sdjm #define FIDO_ERR_LIMIT_EXCEEDED		0x15
23d75efeb7Sdjm #define FIDO_ERR_UNSUPPORTED_EXTENSION	0x16
24739189a3Sdjm #define FIDO_ERR_FP_DATABASE_FULL	0x17
25*c4a807edSdjm #define FIDO_ERR_LARGEBLOB_STORAGE_FULL	0x18
26d75efeb7Sdjm #define FIDO_ERR_CREDENTIAL_EXCLUDED	0x19
27d75efeb7Sdjm #define FIDO_ERR_PROCESSING		0x21
28d75efeb7Sdjm #define FIDO_ERR_INVALID_CREDENTIAL	0x22
29d75efeb7Sdjm #define FIDO_ERR_USER_ACTION_PENDING	0x23
30d75efeb7Sdjm #define FIDO_ERR_OPERATION_PENDING	0x24
31d75efeb7Sdjm #define FIDO_ERR_NO_OPERATIONS		0x25
32d75efeb7Sdjm #define FIDO_ERR_UNSUPPORTED_ALGORITHM	0x26
33d75efeb7Sdjm #define FIDO_ERR_OPERATION_DENIED	0x27
34d75efeb7Sdjm #define FIDO_ERR_KEY_STORE_FULL		0x28
35d75efeb7Sdjm #define FIDO_ERR_NOT_BUSY		0x29
36d75efeb7Sdjm #define FIDO_ERR_NO_OPERATION_PENDING	0x2a
37d75efeb7Sdjm #define FIDO_ERR_UNSUPPORTED_OPTION	0x2b
38d75efeb7Sdjm #define FIDO_ERR_INVALID_OPTION		0x2c
39d75efeb7Sdjm #define FIDO_ERR_KEEPALIVE_CANCEL	0x2d
40d75efeb7Sdjm #define FIDO_ERR_NO_CREDENTIALS		0x2e
41d75efeb7Sdjm #define FIDO_ERR_USER_ACTION_TIMEOUT	0x2f
42d75efeb7Sdjm #define FIDO_ERR_NOT_ALLOWED		0x30
43d75efeb7Sdjm #define FIDO_ERR_PIN_INVALID		0x31
44d75efeb7Sdjm #define FIDO_ERR_PIN_BLOCKED		0x32
45d75efeb7Sdjm #define FIDO_ERR_PIN_AUTH_INVALID	0x33
46d75efeb7Sdjm #define FIDO_ERR_PIN_AUTH_BLOCKED	0x34
47d75efeb7Sdjm #define FIDO_ERR_PIN_NOT_SET		0x35
48d75efeb7Sdjm #define FIDO_ERR_PIN_REQUIRED		0x36
49d75efeb7Sdjm #define FIDO_ERR_PIN_POLICY_VIOLATION	0x37
50d75efeb7Sdjm #define FIDO_ERR_PIN_TOKEN_EXPIRED	0x38
51d75efeb7Sdjm #define FIDO_ERR_REQUEST_TOO_LARGE	0x39
52d75efeb7Sdjm #define FIDO_ERR_ACTION_TIMEOUT		0x3a
53d75efeb7Sdjm #define FIDO_ERR_UP_REQUIRED		0x3b
54739189a3Sdjm #define FIDO_ERR_UV_BLOCKED		0x3c
55*c4a807edSdjm #define FIDO_ERR_UV_INVALID		0x3f
56*c4a807edSdjm #define FIDO_ERR_UNAUTHORIZED_PERM	0x40
57d75efeb7Sdjm #define FIDO_ERR_ERR_OTHER		0x7f
58d75efeb7Sdjm #define FIDO_ERR_SPEC_LAST		0xdf
59d75efeb7Sdjm 
60d75efeb7Sdjm /* defined internally */
61d75efeb7Sdjm #define FIDO_OK				FIDO_ERR_SUCCESS
62d75efeb7Sdjm #define FIDO_ERR_TX			-1
63d75efeb7Sdjm #define FIDO_ERR_RX			-2
64d75efeb7Sdjm #define FIDO_ERR_RX_NOT_CBOR		-3
65d75efeb7Sdjm #define FIDO_ERR_RX_INVALID_CBOR	-4
66d75efeb7Sdjm #define FIDO_ERR_INVALID_PARAM		-5
67d75efeb7Sdjm #define FIDO_ERR_INVALID_SIG		-6
68d75efeb7Sdjm #define FIDO_ERR_INVALID_ARGUMENT	-7
69d75efeb7Sdjm #define FIDO_ERR_USER_PRESENCE_REQUIRED	-8
70d75efeb7Sdjm #define FIDO_ERR_INTERNAL		-9
71*c4a807edSdjm #define FIDO_ERR_NOTFOUND		-10
72*c4a807edSdjm #define FIDO_ERR_COMPRESS		-11
73d75efeb7Sdjm 
74739189a3Sdjm #ifdef __cplusplus
75739189a3Sdjm extern "C" {
76739189a3Sdjm #endif /* __cplusplus */
77739189a3Sdjm 
78d75efeb7Sdjm const char *fido_strerr(int);
79d75efeb7Sdjm 
80739189a3Sdjm #ifdef __cplusplus
81739189a3Sdjm } /* extern "C" */
82739189a3Sdjm #endif /* __cplusplus */
83739189a3Sdjm 
84d75efeb7Sdjm #endif /* _FIDO_ERR_H */
85