#include <stdint.h>
#include <string.h>
#include "sharekit_api.h"

// 空回调:仅满足接口参数要求,无业务逻辑
static void dummy_load_rsa_key(RsaKeyData *k) { (void)k; }
static void dummy_store_rsa_key(RsaKeyData *k) { (void)k; }

// 仅测试 InitShareKit 接口,无其他任何逻辑
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
    // 最小化参数构造:仅填充必要回调,其余置零
    InitContext init_ctx = {0};
    // 模糊控制回调是否为空
    if (size > 0 && data[0] % 2 == 0) {
        init_ctx.rsaKeyCallback.LoadRsaKey = dummy_load_rsa_key;
        init_ctx.rsaKeyCallback.StoreRsaKey = dummy_store_rsa_key;
    } else {
        init_ctx.rsaKeyCallback.LoadRsaKey = NULL;
        init_ctx.rsaKeyCallback.StoreRsaKey = NULL;
    }
    InitShareKit(&init_ctx);

    return 0;
}