xref: /freebsd/contrib/libfido2/src/fido/err.h (revision 2ccfa855)
1 /*
2  * Copyright (c) 2018 Yubico AB. All rights reserved.
3  * SPDX-License-Identifier: BSD-2-Clause
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *    1. Redistributions of source code must retain the above copyright
10  *       notice, this list of conditions and the following disclaimer.
11  *    2. Redistributions in binary form must reproduce the above copyright
12  *       notice, this list of conditions and the following disclaimer in
13  *       the documentation and/or other materials provided with the
14  *       distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef _FIDO_ERR_H
30 #define _FIDO_ERR_H
31 
32 #define FIDO_ERR_SUCCESS		0x00
33 #define FIDO_ERR_INVALID_COMMAND	0x01
34 #define FIDO_ERR_INVALID_PARAMETER	0x02
35 #define FIDO_ERR_INVALID_LENGTH		0x03
36 #define FIDO_ERR_INVALID_SEQ		0x04
37 #define FIDO_ERR_TIMEOUT		0x05
38 #define FIDO_ERR_CHANNEL_BUSY		0x06
39 #define FIDO_ERR_LOCK_REQUIRED		0x0a
40 #define FIDO_ERR_INVALID_CHANNEL	0x0b
41 #define FIDO_ERR_CBOR_UNEXPECTED_TYPE	0x11
42 #define FIDO_ERR_INVALID_CBOR		0x12
43 #define FIDO_ERR_MISSING_PARAMETER	0x14
44 #define FIDO_ERR_LIMIT_EXCEEDED		0x15
45 #define FIDO_ERR_UNSUPPORTED_EXTENSION	0x16
46 #define FIDO_ERR_FP_DATABASE_FULL	0x17
47 #define FIDO_ERR_LARGEBLOB_STORAGE_FULL	0x18
48 #define FIDO_ERR_CREDENTIAL_EXCLUDED	0x19
49 #define FIDO_ERR_PROCESSING		0x21
50 #define FIDO_ERR_INVALID_CREDENTIAL	0x22
51 #define FIDO_ERR_USER_ACTION_PENDING	0x23
52 #define FIDO_ERR_OPERATION_PENDING	0x24
53 #define FIDO_ERR_NO_OPERATIONS		0x25
54 #define FIDO_ERR_UNSUPPORTED_ALGORITHM	0x26
55 #define FIDO_ERR_OPERATION_DENIED	0x27
56 #define FIDO_ERR_KEY_STORE_FULL		0x28
57 #define FIDO_ERR_NOT_BUSY		0x29
58 #define FIDO_ERR_NO_OPERATION_PENDING	0x2a
59 #define FIDO_ERR_UNSUPPORTED_OPTION	0x2b
60 #define FIDO_ERR_INVALID_OPTION		0x2c
61 #define FIDO_ERR_KEEPALIVE_CANCEL	0x2d
62 #define FIDO_ERR_NO_CREDENTIALS		0x2e
63 #define FIDO_ERR_USER_ACTION_TIMEOUT	0x2f
64 #define FIDO_ERR_NOT_ALLOWED		0x30
65 #define FIDO_ERR_PIN_INVALID		0x31
66 #define FIDO_ERR_PIN_BLOCKED		0x32
67 #define FIDO_ERR_PIN_AUTH_INVALID	0x33
68 #define FIDO_ERR_PIN_AUTH_BLOCKED	0x34
69 #define FIDO_ERR_PIN_NOT_SET		0x35
70 #define FIDO_ERR_PIN_REQUIRED		0x36
71 #define FIDO_ERR_PIN_POLICY_VIOLATION	0x37
72 #define FIDO_ERR_PIN_TOKEN_EXPIRED	0x38
73 #define FIDO_ERR_REQUEST_TOO_LARGE	0x39
74 #define FIDO_ERR_ACTION_TIMEOUT		0x3a
75 #define FIDO_ERR_UP_REQUIRED		0x3b
76 #define FIDO_ERR_UV_BLOCKED		0x3c
77 #define FIDO_ERR_UV_INVALID		0x3f
78 #define FIDO_ERR_UNAUTHORIZED_PERM	0x40
79 #define FIDO_ERR_ERR_OTHER		0x7f
80 #define FIDO_ERR_SPEC_LAST		0xdf
81 
82 /* defined internally */
83 #define FIDO_OK				FIDO_ERR_SUCCESS
84 #define FIDO_ERR_TX			-1
85 #define FIDO_ERR_RX			-2
86 #define FIDO_ERR_RX_NOT_CBOR		-3
87 #define FIDO_ERR_RX_INVALID_CBOR	-4
88 #define FIDO_ERR_INVALID_PARAM		-5
89 #define FIDO_ERR_INVALID_SIG		-6
90 #define FIDO_ERR_INVALID_ARGUMENT	-7
91 #define FIDO_ERR_USER_PRESENCE_REQUIRED	-8
92 #define FIDO_ERR_INTERNAL		-9
93 #define FIDO_ERR_NOTFOUND		-10
94 #define FIDO_ERR_COMPRESS		-11
95 
96 #ifdef __cplusplus
97 extern "C" {
98 #endif /* __cplusplus */
99 
100 const char *fido_strerr(int);
101 
102 #ifdef __cplusplus
103 } /* extern "C" */
104 #endif /* __cplusplus */
105 
106 #endif /* _FIDO_ERR_H */
107