summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-crt-php/ext/crc.c
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-crt-php/ext/crc.c')
-rw-r--r--vendor/aws/aws-crt-php/ext/crc.c32
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));
+}