static int imptypes_selection;
static int exptypes_selection;
static int query_id;
+static int key_deleted;
struct fake_rsa_keydata {
int selection;
int status;
};
+void fake_rsa_restore_store_state(void)
+{
+ key_deleted = 0;
+}
+
static void *fake_rsa_keymgmt_new(void *provctx)
{
struct fake_rsa_keydata *key;
static OSSL_FUNC_store_load_fn fake_rsa_st_load;
static OSSL_FUNC_store_eof_fn fake_rsa_st_eof;
static OSSL_FUNC_store_close_fn fake_rsa_st_close;
+static OSSL_FUNC_store_delete_fn fake_rsa_st_delete;
static const char fake_rsa_scheme[] = "fake_rsa:";
switch (*storectx) {
case 0:
+ if (key_deleted == 1) {
+ *storectx = 1;
+ break;
+ }
+
/* Construct a new key using our keymgmt functions */
if (!TEST_ptr(key = fake_rsa_keymgmt_new(NULL)))
break;
TEST_info("fake_rsa_load called - rv: %d", rv);
- if (rv == 0) {
+ if (rv == 0 && key_deleted == 0) {
fake_rsa_keymgmt_free(key);
*storectx = 2;
}
return rv;
}
+static int fake_rsa_st_delete(void *loaderctx, const char *uri,
+ const OSSL_PARAM params[],
+ OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)
+{
+ key_deleted = 1;
+ return 1;
+}
+
static int fake_rsa_st_eof(void *loaderctx)
{
unsigned char *storectx = loaderctx;
{ OSSL_FUNC_STORE_LOAD, (void (*)(void))fake_rsa_st_load },
{ OSSL_FUNC_STORE_EOF, (void (*)(void))fake_rsa_st_eof },
{ OSSL_FUNC_STORE_CLOSE, (void (*)(void))fake_rsa_st_close },
+ { OSSL_FUNC_STORE_DELETE, (void (*)(void))fake_rsa_st_delete },
OSSL_DISPATCH_END,
};