diff options
author | Neal H. Walfield <neal@pep.foundation> | 2018-11-22 11:15:53 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@pep.foundation> | 2018-11-22 11:18:02 +0100 |
commit | d42f3db864d2b4df1cda82b4f8f79dda7c48acab (patch) | |
tree | 6f392a0780e9fe29d4ba6a900c22f66d12d49f2c /ffi/include | |
parent | 6cd2428c93f45b04b4ccad345970ab56a56a8eeb (diff) |
ffi: Wrap the Decrypt and Verifier interfaces.
Diffstat (limited to 'ffi/include')
-rw-r--r-- | ffi/include/sequoia/openpgp.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/ffi/include/sequoia/openpgp.h b/ffi/include/sequoia/openpgp.h index 1d11a113..0c7a67b9 100644 --- a/ffi/include/sequoia/openpgp.h +++ b/ffi/include/sequoia/openpgp.h @@ -1321,4 +1321,71 @@ typedef struct sq_secret *sq_secret_t; /*/ sq_secret_t sq_secret_cached(uint8_t algo, uint8_t *session_key, size_t session_key_len); + +typedef struct sq_verification_results *sq_verification_results_t; +typedef struct sq_verification_result *sq_verification_result_t; + +void sq_verification_results_at_level(sq_verification_results_t results, + size_t level, + sq_verification_result_t **r, + size_t *r_count); + + +typedef enum sq_verification_result_code { + SQ_VERIFICATION_RESULT_CODE_GOOD_CHECKSUM = 1, + SQ_VERIFICATION_RESULT_CODE_MISSING_KEY = 2, + SQ_VERIFICATION_RESULT_CODE_BAD_CHECKSUM = 3, + + /* Dummy value to make sure the enumeration has a defined size. Do + not use this value. */ + SQ_VERIFICATION_RESULT_CODE_FORCE_WIDTH = INT_MAX, +} sq_verification_result_code_t; + +/*/ +/// Returns the verification result code. +/*/ +sq_verification_result_code_t sq_verification_result_code( + sq_verification_result_t r); + +/*/ +/// Returns a reference to the signature. +/// +/// Do not modify the signature nor free it. +/*/ +sq_signature_t sq_verification_result_signature( + sq_verification_result_t r); + +/*/ +/// Returns the signature's level. +/// +/// A level of zero means that the data was signed, a level of one +/// means that one or more signatures were notarized, etc. +/*/ +int sq_verification_result_level(sq_verification_result_t r); + +typedef sq_status_t (*sq_sequoia_decrypt_get_public_keys_cb_t) (void *, + sq_keyid_t *, size_t, + sq_tpk_t **, size_t *, + void (**free)(void *)); + +typedef sq_status_t (*sq_sequoia_decrypt_get_secret_keys_cb_t) (void *, + sq_pkesk_t *, size_t, + sq_skesk_t *, size_t, + sq_secret_t *); + +typedef sq_status_t (*sq_sequoia_decrypt_check_signatures_cb_t) (void *, + sq_verification_results_t, + size_t); + +sq_status_t sq_decrypt (sq_context_t ctx, sq_reader_t input, sq_writer_t output, + sq_sequoia_decrypt_get_public_keys_cb_t get_public_keys, + sq_sequoia_decrypt_get_secret_keys_cb_t get_secret_keys, + sq_sequoia_decrypt_check_signatures_cb_t check_signatures, + void *cookie); + +sq_status_t sq_verify (sq_context_t ctx, sq_reader_t input, sq_writer_t output, + sq_sequoia_decrypt_get_public_keys_cb_t get_public_keys, + sq_sequoia_decrypt_check_signatures_cb_t check_signatures, + void *cookie); + #endif |