Most fko functions return an integer value that corresponds to either success (0), or one of the non-zero values thar corresponds to a number of possible errors. libfko provides a function to get a descriptive string for the given error code.
const char * fko_errstr (int err_code) ¶The function fko_errstr returns a pointer to a statically
allocated string containing the description of the error.
The list of the possible error codes and their corresponding descriptions as
returned by fko_errstr follows:
int error_code ¶FKO_SUCCESSSuccess
FKO_ERROR_CTX_NOT_INITIALIZEDFKO Context is not initialized
FKO_ERROR_MEMORY_ALLOCATIONUnable to allocate memory
FKO_ERROR_FILESYSTEM_OPERATIONRead/write bytes mismatch
FKO_ERROR_INVALID_DATAArgs contain invalid data
FKO_ERROR_INVALID_DATA_CLIENT_TIMEOUT_NEGATIVEInvalid data: negative timeout value
FKO_ERROR_INVALID_DATA_DECODE_MSGLEN_VALIDFAILInvalid data: invalid message length
FKO_ERROR_INVALID_DATA_DECODE_NON_ASCIIInvalid data: contains non-ascii characters
FKO_ERROR_INVALID_DATA_DECODE_LT_MIN_FIELDSInvalid data: insufficient number of data fields
FKO_ERROR_INVALID_DATA_DECODE_GT_MAX_FIELDSInvalid data: too many data fields
FKO_ERROR_INVALID_DATA_DECODE_WRONG_NUM_FIELDSInvalid data: invalid number of fields
FKO_ERROR_INVALID_DATA_DECODE_ENC_MSG_LEN_MT_T_SIZEInvalid data: decode: encoded message - digest size is not valid
FKO_ERROR_INVALID_DATA_DECODE_RAND_MISSINGInvalid data: decode: missing random data
FKO_ERROR_INVALID_DATA_DECODE_USERNAME_MISSINGInvalid data: decode: missing username
FKO_ERROR_INVALID_DATA_DECODE_USERNAME_TOOBIGInvalid data: decode: username to large
FKO_ERROR_INVALID_DATA_DECODE_USERNAME_DECODEFAILInvalid data: decode: failed to decode username
FKO_ERROR_INVALID_DATA_DECODE_USERNAME_VALIDFAILInvalid data: decode: invalid username
FKO_ERROR_INVALID_DATA_DECODE_TIMESTAMP_MISSINGInvalid data: decode: missing timestamp
FKO_ERROR_INVALID_DATA_DECODE_TIMESTAMP_TOOBIGInvalid data: decode: timestamp too large
FKO_ERROR_INVALID_DATA_DECODE_TIMESTAMP_DECODEFAILInvalid data: decode: failed to decode timestamp
FKO_ERROR_INVALID_DATA_DECODE_VERSION_MISSINGInvalid data: decode: missing version data
FKO_ERROR_INVALID_DATA_DECODE_VERSION_TOOBIGInvalid data: decode: version data is too large
FKO_ERROR_INVALID_DATA_DECODE_MSGTYPE_MISSINGInvalid data: decode: missing message type
FKO_ERROR_INVALID_DATA_DECODE_MSGTYPE_TOOBIGInvalid data: decode: message type is too large
FKO_ERROR_INVALID_DATA_DECODE_MSGTYPE_DECODEFAILInvalid data: decode: failed to decode message type
FKO_ERROR_INVALID_DATA_DECODE_MESSAGE_MISSINGInvalid data: decode: missing message data
FKO_ERROR_INVALID_DATA_DECODE_MESSAGE_TOOBIGInvalid data: decode: message data is too large
FKO_ERROR_INVALID_DATA_DECODE_MESSAGE_DECODEFAILInvalid data: decode: failed to decode message data
FKO_ERROR_INVALID_DATA_DECODE_MESSAGE_VALIDFAILInvalid data: decode: invalid message data
FKO_ERROR_INVALID_DATA_DECODE_ACCESS_VALIDFAILInvalid data: decode: invliad access data
FKO_ERROR_INVALID_DATA_DECODE_NATACCESS_MISSINGInvalid data: decode: missing NAT access data
FKO_ERROR_INVALID_DATA_DECODE_NATACCESS_TOOBIGInvalid data: decode: NAT access data is too large
FKO_ERROR_INVALID_DATA_DECODE_NATACCESS_DECODEFAILInvalid data: decode: failed to decode NAT access data
FKO_ERROR_INVALID_DATA_DECODE_NATACCESS_VALIDFAILInvalid data: decode: invalid NAT access
FKO_ERROR_INVALID_DATA_DECODE_SRVAUTH_MISSINGInvalid data: decode: missing server auth
FKO_ERROR_INVALID_DATA_DECODE_SRVAUTH_DECODEFAILInvalid data: decode: server auth decode fail
FKO_ERROR_INVALID_DATA_DECODE_SPA_EXTRA_TOOBIGInvalid data: decode: SPA extra too large
FKO_ERROR_INVALID_DATA_DECODE_EXTRA_TOOBIGInvalid data: decode: extra too large
FKO_ERROR_INVALID_DATA_DECODE_EXTRA_DECODEFAILInvalid data: decode: extra decode failed
FKO_ERROR_INVALID_DATA_DECODE_TIMEOUT_MISSINGInvalid data: decode: missing timeout
FKO_ERROR_INVALID_DATA_DECODE_TIMEOUT_TOOBIGInvalid data: decode timeout value is too large
FKO_ERROR_INVALID_DATA_DECODE_TIMEOUT_VALIDFAILInvalid data: decode invalid timeout
FKO_ERROR_INVALID_DATA_DECODE_TIMEOUT_DECODEFAILInvalid data: decode: timeout decode failed
FKO_ERROR_INVALID_DATA_ENCODE_MESSAGE_TOOBIGInvalid data: encode: message is too large
FKO_ERROR_INVALID_DATA_ENCODE_MSGLEN_VALIDFAILInvalid data: encode: invalid message length
FKO_ERROR_INVALID_DATA_ENCODE_DIGEST_VALIDFAILInvalid data: encode: invalid digest
FKO_ERROR_INVALID_DATA_ENCODE_DIGEST_TOOBIGInvalid data: encode: digest is too large
FKO_ERROR_INVALID_DATA_ENCODE_NOTBASE64Invalid data: encoded data is not Base64
FKO_ERROR_INVALID_DATA_ENCRYPT_MSGLEN_VALIDFAILInvalid data: encrypt: invalid message length
FKO_ERROR_INVALID_DATA_ENCRYPT_DIGESTLEN_VALIDFAILInvalid data: encrypt: invalid digest length
FKO_ERROR_INVALID_DATA_ENCRYPT_PTLEN_VALIDFAILInvalid data: encrypt: invalid plaintext length
FKO_ERROR_INVALID_DATA_ENCRYPT_RESULT_MSGLEN_VALIDFAILInvalid data: encrypt: invalid encrypt result message length
FKO_ERROR_INVALID_DATA_ENCRYPT_CIPHERLEN_DECODEFAILInvalid data: encrypt: decode cipher length failed
FKO_ERROR_INVALID_DATA_ENCRYPT_CIPHERLEN_VALIDFAILInvalid data: encrypt: invalid cipher length
FKO_ERROR_INVALID_DATA_ENCRYPT_DECRYPTED_MESSAGE_MISSINGInvalid data: encrypt: missing decrypted message
FKO_ERROR_INVALID_DATA_ENCRYPT_DECRYPTED_MSGLEN_VALIDFAILInvalid data: encrypt: invalid decrypted message length
FKO_ERROR_INVALID_DATA_ENCRYPT_TYPE_VALIDFAILInvalid data: encrypt: invalid encryption type
FKO_ERROR_INVALID_DATA_ENCRYPT_MODE_VALIDFAILInvalid data: encrypt: invalid encryption mode
FKO_ERROR_INVALID_DATA_ENCRYPT_TYPE_UNKNOWNInvalid data: encrypt: unknown encryption type
FKO_ERROR_INVALID_DATA_FUNCS_NEW_ENCMSG_MISSINGInvalid data: missing encoded message
FKO_ERROR_INVALID_DATA_FUNCS_NEW_MSGLEN_VALIDFAILInvalid data: invalid message length from new
FKO_ERROR_INVALID_DATA_FUNCS_GEN_KEYLEN_VALIDFAILInvalid data: invalid key length from gen_keylen
FKO_ERROR_INVALID_DATA_FUNCS_GEN_HMACLEN_VALIDFAILInvalid data: gen_hmaclen failure
FKO_ERROR_INVALID_DATA_FUNCS_GEN_KEY_ENCODEFAILInvalid data: gen_key: encode failure
FKO_ERROR_INVALID_DATA_FUNCS_GEN_HMAC_ENCODEFAILInvalid data: gen_hmac: encode failure
FKO_ERROR_INVALID_DATA_FUNCS_SET_MSGLEN_VALIDFAILInvalid data: set_spa_data: invalid message length
FKO_ERROR_INVALID_DATA_HMAC_MSGLEN_VALIDFAILInvalid data: invalid HMAC msglen
FKO_ERROR_INVALID_DATA_HMAC_ENCMSGLEN_VALIDFAILInvalid data: invalid length for encrypted message
FKO_ERROR_INVALID_DATA_HMAC_COMPAREFAILInvalid data: HMAC comparison failed
FKO_ERROR_INVALID_DATA_HMAC_TYPE_VALIDFAILInvalid data: invalid HMAC type
FKO_ERROR_INVALID_DATA_HMAC_LEN_VALIDFAILInvalid data: invalid HMAC length
FKO_ERROR_INVALID_DATA_MESSAGE_PORT_MISSINGInvalid data: missing port
FKO_ERROR_INVALID_DATA_MESSAGE_TYPE_VALIDFAILInvalid data: invalid message type
FKO_ERROR_INVALID_DATA_MESSAGE_EMPTYInvalid data: empty data message
FKO_ERROR_INVALID_DATA_MESSAGE_CMD_MISSINGInvalid data: missing command message
FKO_ERROR_INVALID_DATA_MESSAGE_ACCESS_MISSINGInvalid data: missing access message
FKO_ERROR_INVALID_DATA_MESSAGE_NAT_MISSINGInvalid data: missing NAT data
FKO_ERROR_INVALID_DATA_MESSAGE_PORTPROTO_MISSINGInvalid data: missing proto/port data
FKO_ERROR_INVALID_DATA_NAT_EMPTYInvalid data: empty NAT value
FKO_ERROR_INVALID_DATA_RAND_LEN_VALIDFAILInvalid data: invalid random data length
FKO_ERROR_INVALID_DATA_SRVAUTH_MISSINGInvalid data: server auth missing
FKO_ERROR_INVALID_DATA_TIMESTAMP_VALIDFAILInvalid data: invalid timestamp value
FKO_ERROR_INVALID_DATA_USER_MISSINGInvalid data: missing user data
FKO_ERROR_INVALID_DATA_USER_FIRSTCHAR_VALIDFAILInvalid data: user first char not valid
FKO_ERROR_INVALID_DATA_USER_REMCHAR_VALIDFAILInvalid data: user remchar not valid
FKO_ERROR_INVALID_DATA_UTIL_STRTOL_LT_MINInvalid data: util conversion to long less than minimum
FKO_ERROR_INVALID_DATA_UTIL_STRTOL_GT_MAXInvalid data: util conversion to long greater than maximum
FKO_ERROR_DATA_TOO_LARGEValue or Size of the data exceeded the max allowed
FKO_ERROR_INVALID_KEY_LENInvalid key length
FKO_ERROR_USERNAME_UNKNOWNUnable to determine username
FKO_ERROR_INCOMPLETE_SPA_DATAMissing or incomplete SPA data
FKO_ERROR_MISSING_ENCODED_DATAThere is no encoded data to process
FKO_ERROR_INVALID_DIGEST_TYPEInvalid digest type
FKO_ERROR_INVALID_ALLOW_IPInvalid allow IP address in the SPA message data
FKO_ERROR_INVALID_SPA_COMMAND_MSGInvalid SPA command message format
FKO_ERROR_INVALID_SPA_ACCESS_MSGInvalid SPA access message format
FKO_ERROR_INVALID_SPA_NAT_ACCESS_MSGInvalid SPA nat_access message format
FKO_ERROR_INVALID_ENCRYPTION_TYPEInvalid encryption type
FKO_ERROR_WRONG_ENCRYPTION_TYPEWrong or inappropriate encryption type for this operation
FKO_ERROR_DECRYPTION_SIZEUnexpected or invalid size for decrypted data
FKO_ERROR_DECRYPTION_FAILUREDecryption failed or decrypted data is invalid
FKO_ERROR_DIGEST_VERIFICATION_FAILEDThe computed digest did not match the digest in the spa data
FKO_ERROR_INVALID_HMAC_KEY_LENInvalid HMAC key length
FKO_ERROR_UNSUPPORTED_HMAC_MODEUnsupported HMAC mode (default: SHA256)
FKO_ERROR_UNSUPPORTED_FEATUREUnsupported or unimplemented feature or function
FKO_ERROR_ZERO_OUT_DATACould not zero out sensitive data
FKO_ERROR_UNKNOWNUnknown/Unclassified error
If GPG support is available, there are additional possible error conditions and error codes. The GPG support is implemented via GPGME. The libfko error handling code wraps many of the GPGME error codes that may be encountered while using libfko’s GPG related functions. These are:
int error_code (gpgme support only) ¶FKO_ERROR_MISSING_GPG_KEY_DATAMissing GPG key data (signer or recipient not set)
FKO_ERROR_GPGME_NO_OPENPGPThis GPGME implementation does not support OpenPGP
FKO_ERROR_GPGME_CONTEXTUnable to create GPGME context
FKO_ERROR_GPGME_PLAINTEXT_DATA_OBJError creating the plaintext data object
FKO_ERROR_GPGME_SET_PROTOCOLUnable to set GPGME to use OpenPGP protocol
FKO_ERROR_GPGME_CIPHER_DATA_OBJError creating the encrypted data data object
FKO_ERROR_GPGME_BAD_PASSPHRASEThe GPG passphrase was not valid
FKO_ERROR_GPGME_ENCRYPT_SIGNError during the encrypt and sign operation
FKO_ERROR_GPGME_CONTEXT_SIGNER_KEYUnable to create GPGME context for the signer key
FKO_ERROR_GPGME_SIGNER_KEYLIST_STARTError from signer keylist start operation
FKO_ERROR_GPGME_SIGNER_KEY_NOT_FOUNDThe key for the given signer was not found
FKO_ERROR_GPGME_SIGNER_KEY_AMBIGUOUSAmbiguous name/id for the signer key (multiple matches)
FKO_ERROR_GPGME_ADD_SIGNERError adding the signer key to the gpgme context
FKO_ERROR_GPGME_CONTEXT_RECIPIENT_KEYUnable to create GPGME context for the recipient key
FKO_ERROR_GPGME_RECIPIENT_KEYLIST_STARTError from signer keylist start operation
FKO_ERROR_GPGME_RECIPIENT_KEY_NOT_FOUNDThe key for the given recipient was not found
FKO_ERROR_GPGME_RECIPIENT_KEY_AMBIGUOUSAmbiguous name/id for the recipient key (multiple matches)
FKO_ERROR_GPGME_DECRYPT_FAILEDDecryption operation failed
FKO_ERROR_GPGME_BAD_GPG_EXEUnable to stat the given GPG executable
FKO_ERROR_GPGME_BAD_HOME_DIRUnable to stat the given GPG home directory
FKO_ERROR_GPGME_SET_HOME_DIRUnable to set the given GPG home directory
FKO_ERROR_GPGME_NO_SIGNATUREMissing GPG signature
FKO_ERROR_GPGME_BAD_SIGNATUREBad GPG signature
FKO_ERROR_GPGME_SIGNATURE_VERIFY_DISABLEDTrying to check signature with verification disabled
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_MESSAGE_VALIDFAILInvalid data: encrypt: invalid GPG-encrypt message
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_DIGEST_VALIDFAILInvalid data: encrypt: invalid GPG digest
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_MSGLEN_VALIDFAILInvalid data: encrypt: invalid GPG message length
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_RESULT_MSGLEN_VALIDFAILInvalid data: encrypt: invalid GPG result message length
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_CIPHER_DECODEFAILInvalid data: encrypt: GPG cipher failed
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_ENCODEDMSG_NULLInvalid data: encrypt: GPG-encoded message is NULL
FKO_ERROR_INVALID_DATA_ENCRYPT_GPG_ENCODEDMSGLEN_VALIDFAILInvalid data: encrypt: invalid GPG-encrypted message length
You can use the IS_GPGME_ERROR(err_code) macro to determine whether
or not an error id GPGME related. If the macro evaluates to a
true value, you may be able to get additional information about the error
using the following function:
const char * fko_gpg_errstr (int err_code) ¶The function fko_errstr returns a pointer to a statically
allocated string containing the description of the GPGME error.
Note: For some errors, this function may return an empty string.