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