mirror of
https://github.com/chatmail/core.git
synced 2026-05-23 00:36:32 +03:00
Refactor keypair handling and expose storing keypairs on ffi
The user-visible change here is that it allows the FFI API to save keys in the database for a context. This is primarily intended for testing purposes as it allows you to get a key without having to generate it. Internally the most important change is to start using the SignedPublicKey and SignedPrivateKey types from rpgp instead of wrapping them into a single Key object. This allows APIs to be specific about which they want instead of having to do runtime checks like .is_public() or so. This means some of the functionality of the Key impl now needs to be a trait. A thid API change is to introduce the KeyPair struct, which binds together the email address, public and private key for a keypair. All these changes result in a bunch of cleanups, though more more should be done to completely replace the Key type with the SignedPublicKye/SignedPrivateKey + traits. But this change is large enough already. Testing-wise this adds two new keys which can be loaded from disk and and avoids a few more key-generating tests. The encrypt/decrypt tests are moved from the stress tests into the pgp tests and split up.
This commit is contained in:
committed by
Floris Bruynooghe
parent
c7eca8deb3
commit
98b3151c5f
@@ -852,6 +852,27 @@ void dc_interrupt_smtp_idle (dc_context_t* context);
|
||||
void dc_maybe_network (dc_context_t* context);
|
||||
|
||||
|
||||
/**
|
||||
* Save a keypair as the default keys for the user.
|
||||
*
|
||||
* This API is only for testing purposes and should not be used as part of a
|
||||
* normal application, use the import-export APIs instead.
|
||||
*
|
||||
* This saves a public/private keypair as the default keypair in the context.
|
||||
* It allows avoiding having to generate a secret key for unittests which need
|
||||
* one.
|
||||
*
|
||||
* @memberof dc_context_t
|
||||
* @param context The context as created by dc_context_new().
|
||||
* @param addr The email address of the user. This must match the
|
||||
* configured_addr setting of the context as well as the UID of the key.
|
||||
* @param public_data The public key as base64.
|
||||
* @param secret_data The secret key as base64.
|
||||
* @return 1 on success, 0 on failure.
|
||||
*/
|
||||
int _dc_save_self_keypair (dc_context_t* context, const char *addr, const char *public_data, const char *secret_data);
|
||||
|
||||
|
||||
// handle chatlists
|
||||
|
||||
#define DC_GCL_ARCHIVED_ONLY 0x01
|
||||
|
||||
Reference in New Issue
Block a user