diff options
Diffstat (limited to 'vendor/aws/aws-crt-php/ext/crc.c')
-rw-r--r-- | vendor/aws/aws-crt-php/ext/crc.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/aws/aws-crt-php/ext/crc.c b/vendor/aws/aws-crt-php/ext/crc.c new file mode 100644 index 0000000..8e520f8 --- /dev/null +++ b/vendor/aws/aws-crt-php/ext/crc.c @@ -0,0 +1,32 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include "php_aws_crt.h" + +PHP_FUNCTION(aws_crt_crc32) { + zend_ulong prev = 0; + const char *input = NULL; + size_t len = 0; + + aws_php_parse_parameters("sl", &input, &len, &prev); + + if (prev > UINT32_MAX) { + aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX"); + } + RETURN_LONG((zend_ulong)aws_crt_crc32((const uint8_t *)input, len, prev)); +} + +PHP_FUNCTION(aws_crt_crc32c) { + zend_ulong prev = 0; + const char *input = NULL; + size_t len = 0; + + aws_php_parse_parameters("sl", &input, &len, &prev); + + if (prev > UINT32_MAX) { + aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX"); + } + RETURN_LONG((zend_ulong)aws_crt_crc32c((const uint8_t *)input, len, prev)); +} |