MCPcopy Create free account
hub / github.com/ashvardanian/StringZilla / Str_like_sha256

Function Str_like_sha256

python/stringzilla.c:1573–1603  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1571 " TypeError: If the argument is not string-like or incorrect number of arguments is provided.";
1572
1573static PyObject *Str_like_sha256(PyObject *self, PyObject *const *args, Py_ssize_t positional_args_count,
1574 PyObject *args_names_tuple) {
1575 // Check minimum arguments
1576 int is_member = self != NULL && PyObject_TypeCheck(self, &StrType);
1577 if (positional_args_count < !is_member || positional_args_count > !is_member + 1 || args_names_tuple) {
1578 PyErr_SetString(PyExc_TypeError, "sha256() expects exactly one positional argument");
1579 return NULL;
1580 }
1581
1582 PyObject *text_obj = is_member ? self : args[0];
1583 sz_string_view_t text;
1584
1585 // Validate and convert `text`
1586 if (!sz_py_export_string_like(text_obj, &text.start, &text.length)) {
1587 wrap_current_exception("The text argument must be string-like");
1588 return NULL;
1589 }
1590
1591 // Initialize SHA256 state
1592 sz_sha256_state_t state;
1593 sz_sha256_state_init(&state);
1594
1595 // Update with data
1596 sz_sha256_state_update(&state, text.start, text.length);
1597
1598 // Compute final digest
1599 sz_u8_t digest[32];
1600 sz_sha256_state_digest(&state, digest);
1601
1602 return PyBytes_FromStringAndSize((char const *)digest, 32);
1603}
1604
1605static char const doc_hmac_sha256[] = //
1606 "Compute HMAC-SHA256 authentication code.\n"

Callers

nothing calls this directly

Calls 5

sz_py_export_string_likeFunction · 0.85
wrap_current_exceptionFunction · 0.85
sz_sha256_state_initFunction · 0.50
sz_sha256_state_updateFunction · 0.50
sz_sha256_state_digestFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…