diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bd5ec8..b377737 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,7 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/olm/inbound_group_session.h ${CMAKE_CURRENT_SOURCE_DIR}/include/olm/pk.h ${CMAKE_CURRENT_SOURCE_DIR}/include/olm/sas.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/olm/error.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/olm) if (UNIX AND NOT APPLE) diff --git a/include/olm/inbound_group_session.h b/include/olm/inbound_group_session.h index 9b2f9df..af86b71 100644 --- a/include/olm/inbound_group_session.h +++ b/include/olm/inbound_group_session.h @@ -18,6 +18,8 @@ #include #include +#include "olm/error.h" + #ifdef __cplusplus extern "C" { #endif @@ -43,6 +45,13 @@ const char *olm_inbound_group_session_last_error( const OlmInboundGroupSession *session ); +/** + * An error code describing the most recent error to happen to a group + * session */ +enum OlmErrorCode olm_inbound_group_session_last_error_code( + const OlmInboundGroupSession *session +); + /** Clears the memory used to back this group session */ size_t olm_clear_inbound_group_session( OlmInboundGroupSession *session diff --git a/include/olm/olm.h b/include/olm/olm.h index 777007b..0d3ea94 100644 --- a/include/olm/olm.h +++ b/include/olm/olm.h @@ -19,6 +19,7 @@ #include #include +#include "olm/error.h" #include "olm/inbound_group_session.h" #include "olm/outbound_group_session.h" @@ -71,19 +72,34 @@ size_t olm_error(void); /** A null terminated string describing the most recent error to happen to an * account */ const char * olm_account_last_error( - OlmAccount * account + const OlmAccount * account +); + +/** An error code describing the most recent error to happen to an account */ +enum OlmErrorCode olm_account_last_error_code( + const OlmAccount * account ); /** A null terminated string describing the most recent error to happen to a * session */ const char * olm_session_last_error( - OlmSession * session + const OlmSession * session +); + +/** An error code describing the most recent error to happen to a session */ +enum OlmErrorCode olm_session_last_error_code( + const OlmSession * session ); /** A null terminated string describing the most recent error to happen to a * utility */ const char * olm_utility_last_error( - OlmUtility * utility + const OlmUtility * utility +); + +/** An error code describing the most recent error to happen to a utility */ +enum OlmErrorCode olm_utility_last_error_code( + const OlmUtility * utility ); /** Clears the memory used to back this account */ diff --git a/include/olm/outbound_group_session.h b/include/olm/outbound_group_session.h index eafaf80..fa227b6 100644 --- a/include/olm/outbound_group_session.h +++ b/include/olm/outbound_group_session.h @@ -18,6 +18,8 @@ #include #include +#include "olm/error.h" + #ifdef __cplusplus extern "C" { #endif @@ -43,6 +45,13 @@ const char *olm_outbound_group_session_last_error( const OlmOutboundGroupSession *session ); +/** + * An error code describing the most recent error to happen to a group + * session */ +enum OlmErrorCode olm_outbound_group_session_last_error_code( + const OlmOutboundGroupSession *session +); + /** Clears the memory used to back this group session */ size_t olm_clear_outbound_group_session( OlmOutboundGroupSession *session diff --git a/include/olm/pk.h b/include/olm/pk.h index d6476f2..ddeedca 100644 --- a/include/olm/pk.h +++ b/include/olm/pk.h @@ -19,6 +19,8 @@ #include #include +#include "olm/error.h" + #ifdef __cplusplus extern "C" { #endif @@ -37,7 +39,13 @@ OlmPkEncryption *olm_pk_encryption( /** A null terminated string describing the most recent error to happen to an * encryption object */ const char * olm_pk_encryption_last_error( - OlmPkEncryption * encryption + const OlmPkEncryption * encryption +); + +/** An error code describing the most recent error to happen to an encryption + * object */ +enum OlmErrorCode olm_pk_encryption_last_error_code( + const OlmPkEncryption * encryption ); /** Clears the memory used to back this encryption object */ @@ -104,7 +112,13 @@ OlmPkDecryption *olm_pk_decryption( /** A null terminated string describing the most recent error to happen to a * decription object */ const char * olm_pk_decryption_last_error( - OlmPkDecryption * decryption + const OlmPkDecryption * decryption +); + +/** An error code describing the most recent error to happen to a decription + * object */ +enum OlmErrorCode olm_pk_decryption_last_error_code( + const OlmPkDecryption * decryption ); /** Clears the memory used to back this decryption object */ @@ -221,7 +235,13 @@ OlmPkSigning *olm_pk_signing( /** A null terminated string describing the most recent error to happen to a * signing object */ const char * olm_pk_signing_last_error( - OlmPkSigning * sign + const OlmPkSigning * sign +); + +/** A null terminated string describing the most recent error to happen to a + * signing object */ +enum OlmErrorCode olm_pk_signing_last_error_code( + const OlmPkSigning * sign ); /** Clears the memory used to back this signing object */ diff --git a/include/olm/sas.h b/include/olm/sas.h index effa2cf..c455435 100644 --- a/include/olm/sas.h +++ b/include/olm/sas.h @@ -19,6 +19,8 @@ #include +#include "olm/error.h" + #ifdef __cplusplus extern "C" { #endif @@ -34,7 +36,13 @@ typedef struct OlmSAS OlmSAS; /** A null terminated string describing the most recent error to happen to an * SAS object. */ const char * olm_sas_last_error( - OlmSAS * sas + const OlmSAS * sas +); + +/** An error code describing the most recent error to happen to an SAS + * object. */ +enum OlmErrorCode olm_sas_last_error_code( + const OlmSAS * sas ); /** The size of an SAS object in bytes. */ diff --git a/src/inbound_group_session.c b/src/inbound_group_session.c index 7e96294..4d8e770 100644 --- a/src/inbound_group_session.c +++ b/src/inbound_group_session.c @@ -76,6 +76,12 @@ const char *olm_inbound_group_session_last_error( return _olm_error_to_string(session->last_error); } +enum OlmErrorCode olm_inbound_group_session_last_error_code( + const OlmInboundGroupSession *session +) { + return session->last_error; +} + size_t olm_clear_inbound_group_session( OlmInboundGroupSession *session ) { diff --git a/src/olm.cpp b/src/olm.cpp index 50742cc..b8896c7 100644 --- a/src/olm.cpp +++ b/src/olm.cpp @@ -42,14 +42,26 @@ static olm::Account * from_c(OlmAccount * account) { return reinterpret_cast(account); } +static const olm::Account * from_c(const OlmAccount * account) { + return reinterpret_cast(account); +} + static olm::Session * from_c(OlmSession * session) { return reinterpret_cast(session); } +static const olm::Session * from_c(const OlmSession * session) { + return reinterpret_cast(session); +} + static olm::Utility * from_c(OlmUtility * utility) { return reinterpret_cast(utility); } +static const olm::Utility * from_c(const OlmUtility * utility) { + return reinterpret_cast(utility); +} + static std::uint8_t * from_c(void * bytes) { return reinterpret_cast(bytes); } @@ -110,27 +122,44 @@ size_t olm_error(void) { const char * olm_account_last_error( - OlmAccount * account + const OlmAccount * account ) { auto error = from_c(account)->last_error; return _olm_error_to_string(error); } +enum OlmErrorCode olm_account_last_error_code( + const OlmAccount * account +) { + return from_c(account)->last_error; +} const char * olm_session_last_error( - OlmSession * session + const OlmSession * session ) { auto error = from_c(session)->last_error; return _olm_error_to_string(error); } +enum OlmErrorCode olm_session_last_error_code( + const OlmSession * session +) { + return from_c(session)->last_error; +} + const char * olm_utility_last_error( - OlmUtility * utility + const OlmUtility * utility ) { auto error = from_c(utility)->last_error; return _olm_error_to_string(error); } +enum OlmErrorCode olm_utility_last_error_code( + const OlmUtility * utility +) { + return from_c(utility)->last_error; +} + size_t olm_account_size(void) { return sizeof(olm::Account); } diff --git a/src/outbound_group_session.c b/src/outbound_group_session.c index 74ce68d..6acad5a 100644 --- a/src/outbound_group_session.c +++ b/src/outbound_group_session.c @@ -61,6 +61,12 @@ const char *olm_outbound_group_session_last_error( return _olm_error_to_string(session->last_error); } +enum OlmErrorCode olm_outbound_group_session_last_error_code( + const OlmOutboundGroupSession *session +) { + return session->last_error; +} + size_t olm_clear_outbound_group_session( OlmOutboundGroupSession *session ) { diff --git a/src/pk.cpp b/src/pk.cpp index 05d5db1..99882db 100644 --- a/src/pk.cpp +++ b/src/pk.cpp @@ -37,12 +37,18 @@ struct OlmPkEncryption { }; const char * olm_pk_encryption_last_error( - OlmPkEncryption * encryption + const OlmPkEncryption * encryption ) { auto error = encryption->last_error; return _olm_error_to_string(error); } +OlmErrorCode olm_pk_encryption_last_error_code( + const OlmPkEncryption * encryption +) { + return encryption->last_error; +} + size_t olm_pk_encryption_size(void) { return sizeof(OlmPkEncryption); } @@ -162,12 +168,18 @@ struct OlmPkDecryption { }; const char * olm_pk_decryption_last_error( - OlmPkDecryption * decryption + const OlmPkDecryption * decryption ) { auto error = decryption->last_error; return _olm_error_to_string(error); } +OlmErrorCode olm_pk_decryption_last_error_code( + const OlmPkDecryption * decryption +) { + return decryption->last_error; +} + size_t olm_pk_decryption_size(void) { return sizeof(OlmPkDecryption); } @@ -446,11 +458,15 @@ OlmPkSigning *olm_pk_signing(void * memory) { return new(memory) OlmPkSigning; } -const char * olm_pk_signing_last_error(OlmPkSigning * sign) { +const char * olm_pk_signing_last_error(const OlmPkSigning * sign) { auto error = sign->last_error; return _olm_error_to_string(error); } +OlmErrorCode olm_pk_signing_last_error_code(const OlmPkSigning * sign) { + return sign->last_error; +} + size_t olm_clear_pk_signing(OlmPkSigning *sign) { /* Clear the memory backing the signing */ olm::unset(sign, sizeof(OlmPkSigning)); diff --git a/src/sas.c b/src/sas.c index 9a84233..765a4a6 100644 --- a/src/sas.c +++ b/src/sas.c @@ -27,11 +27,17 @@ struct OlmSAS { }; const char * olm_sas_last_error( - OlmSAS * sas + const OlmSAS * sas ) { return _olm_error_to_string(sas->last_error); } +enum OlmErrorCode olm_sas_last_error_code( + const OlmSAS * sas +) { + return sas->last_error; +} + size_t olm_sas_size(void) { return sizeof(OlmSAS); }