| 425 | } |
| 426 | |
| 427 | napi_value sha256API(napi_env env, napi_callback_info info) { |
| 428 | size_t argc = 1; |
| 429 | napi_value args[1]; |
| 430 | napi_get_cb_info(env, info, &argc, args, NULL, NULL); |
| 431 | |
| 432 | // Get buffer info for data (zero-copy) |
| 433 | void *buffer_data; |
| 434 | size_t buffer_length; |
| 435 | napi_status status = napi_get_buffer_info(env, args[0], &buffer_data, &buffer_length); |
| 436 | if (status != napi_ok) { |
| 437 | napi_throw_error(env, NULL, "Argument must be a Buffer"); |
| 438 | return NULL; |
| 439 | } |
| 440 | |
| 441 | // Compute SHA-256 using StringZilla |
| 442 | sz_u8_t digest[32]; |
| 443 | sz_sha256_state_t state; |
| 444 | sz_sha256_state_init(&state); |
| 445 | sz_sha256_state_update(&state, (sz_cptr_t)buffer_data, buffer_length); |
| 446 | sz_sha256_state_digest(&state, digest); |
| 447 | |
| 448 | // Convert result to JavaScript Buffer |
| 449 | napi_value js_result; |
| 450 | void *result_data; |
| 451 | napi_create_buffer_copy(env, 32, digest, &result_data, &js_result); |
| 452 | |
| 453 | return js_result; |
| 454 | } |
| 455 | |
| 456 | static void sha256_hasher_cleanup(napi_env env, void *data, void *hint) { free(data); } |
| 457 | typedef struct { |
nothing calls this directly
no test coverage detected
searching dependent graphs…