INNER CODE UNIT · C

c_len

jedisct1/libsodium-php · libsodium.c:4016

    c_len = msg_len + crypto_secretstream_xchacha20poly1305_ABYTES;
    c = zend_string_checked_alloc((size_t) c_len, 0);
    if (crypto_secretstream_xchacha20poly1305_push
        ((void *) state, (unsigned char *) ZSTR_VAL(c), &c_real_len,
         msg, (unsigned long long) msg_len, ad, (unsigned long long) ad_len,
         (unsigned char) tag) != 0) {
        zend_string_free(c);
        zend_throw_exception(sodium_exception_ce, "internal error", 0);
        return;
    }
    if (c_real_len <= 0U || c_real_len >= SIZE_MAX || c_real_len > c_len) {
        zend_string_free(c);
        zend_throw_exception(sodium_exception_ce, "arithmetic overflow", 0);
        return;
    }
    PHP_SODIUM_ZSTR_TRUNCATE(c, (size_t) c_real_len);

    RETURN_STR(c);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…