assert(signature != NULL);
assert(signature_len != NULL);
- ret = yaca_sign_update(ctx, data, data_len);
- if (ret != YACA_ERROR_NONE)
- return ret;
+ if (data_len > 0) {
+ ret = yaca_sign_update(ctx, data, data_len);
+ if (ret != YACA_ERROR_NONE)
+ return ret;
+ }
ret = yaca_context_get_output_length(ctx, 0, signature_len);
if (ret != YACA_ERROR_NONE)
int ret;
yaca_context_h ctx = YACA_CONTEXT_NULL;
+ if ((data == NULL && data_len > 0) || (data != NULL && data_len == 0) ||
+ signature == NULL || signature_len == NULL)
+ return YACA_ERROR_INVALID_PARAMETER;
+
ret = yaca_sign_initialize(&ctx, algo, key);
if (ret != YACA_ERROR_NONE)
return ret;
int ret;
yaca_context_h ctx = YACA_CONTEXT_NULL;
+ if ((data == NULL && data_len > 0) || (data != NULL && data_len == 0) ||
+ signature == NULL || signature_len == 0)
+ return YACA_ERROR_INVALID_PARAMETER;
+
ret = yaca_verify_initialize(&ctx, algo, key);
if (ret != YACA_ERROR_NONE)
return ret;
- ret = yaca_verify_update(ctx, data, data_len);
- if (ret != YACA_ERROR_NONE)
- goto exit;
+ if (data_len > 0) {
+ ret = yaca_verify_update(ctx, data, data_len);
+ if (ret != YACA_ERROR_NONE)
+ goto exit;
+ }
ret = yaca_verify_finalize(ctx, signature, signature_len);
int ret;
yaca_context_h ctx = YACA_CONTEXT_NULL;
+ if ((data == NULL && data_len > 0) || (data != NULL && data_len == 0) ||
+ mac == NULL || mac_len == NULL)
+ return YACA_ERROR_INVALID_PARAMETER;
+
ret = yaca_sign_initialize_hmac(&ctx, algo, key);
if (ret != YACA_ERROR_NONE)
return ret;
int ret;
yaca_context_h ctx = YACA_CONTEXT_NULL;
+ if ((data == NULL && data_len > 0) || (data != NULL && data_len == 0) ||
+ mac == NULL || mac_len == NULL)
+ return YACA_ERROR_INVALID_PARAMETER;
+
ret = yaca_sign_initialize_cmac(&ctx, algo, key);
if (ret != YACA_ERROR_NONE)
return ret;