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