Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bind out crc64 #105

Merged
merged 14 commits into from
Oct 21, 2024
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Checkout Source
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
Expand Down
9 changes: 9 additions & 0 deletions aws-crt-checksums/Crc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,14 @@ public delegate UInt32 aws_dotnet_crc32([In, MarshalAs(UnmanagedType.LPArray, Si
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate UInt32 aws_dotnet_crc32c([In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2, ArraySubType = UnmanagedType.U1)] byte[] buffer,
Int32 length, UInt32 previous);

[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate UInt64 aws_dotnet_crc64nvme([In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2, ArraySubType = UnmanagedType.U1)] byte[] buffer,
Int32 length, UInt64 previous);

public static aws_dotnet_crc32 crc32 = NativeAPI.Bind<aws_dotnet_crc32>();
public static aws_dotnet_crc32c crc32c = NativeAPI.Bind<aws_dotnet_crc32c>();
public static aws_dotnet_crc64nvme crc64nvme = NativeAPI.Bind<aws_dotnet_crc64nvme>();
}
public static uint crc32(byte[] buffer, uint previous = 0)
{
Expand All @@ -30,5 +35,9 @@ public static uint crc32c(byte[] buffer, uint previous = 0)
{
return API.crc32c(buffer, buffer.Length, previous);
}
public static ulong crc64nvme(byte[] buffer, ulong previous = 0)
{
return API.crc64nvme(buffer, buffer.Length, previous);
}
}
}
2 changes: 1 addition & 1 deletion crt/aws-c-common
Submodule aws-c-common updated 95 files
+1 −1 .clang-tidy
+17 −8 .github/workflows/ci.yml
+4 −7 .github/workflows/clang-format.yml
+6 −5 .github/workflows/proof_ci_resources/config.yaml
+10 −1 CMakeLists.txt
+2 −1 README.md
+26 −0 THIRD-PARTY-LICENSES.txt
+19 −4 cmake/AwsCheckHeaders.cmake
+73 −0 cmake/AwsPrebuildDependency.cmake
+7 −1 cmake/AwsSIMD.cmake
+6 −4 cmake/AwsSanitizers.cmake
+47 −0 format-check.py
+0 −24 format-check.sh
+1 −1 include/aws/common/array_list.inl
+2 −4 include/aws/common/atomics.h
+1 −1 include/aws/common/byte_buf.h
+449 −0 include/aws/common/cbor.h
+2 −4 include/aws/common/condition_variable.h
+7 −2 include/aws/common/error.h
+68 −1 include/aws/common/json.h
+3 −2 include/aws/common/logging.h
+19 −1 include/aws/common/macros.h
+8 −1 include/aws/common/math.inl
+2 −4 include/aws/common/mutex.h
+19 −0 include/aws/common/private/byte_buf.h
+7 −3 include/aws/common/private/external_module_impl.h
+2 −4 include/aws/common/rw_lock.h
+1 −1 include/aws/common/statistics.h
+1 −2 include/aws/common/thread.h
+129 −0 scripts/import_libcbor.py
+8 −3 scripts/latest_submodules.py
+1 −1 source/allocator.c
+3 −1 source/android/logging.c
+19 −0 source/byte_buf.c
+647 −0 source/cbor.c
+12 −2 source/common.c
+19 −0 source/external/libcbor/allocators.c
+425 −0 source/external/libcbor/cbor.c
+74 −0 source/external/libcbor/cbor.h
+131 −0 source/external/libcbor/cbor/arrays.c
+137 −0 source/external/libcbor/cbor/arrays.h
+119 −0 source/external/libcbor/cbor/bytestrings.c
+150 −0 source/external/libcbor/cbor/bytestrings.h
+121 −0 source/external/libcbor/cbor/callbacks.c
+189 −0 source/external/libcbor/cbor/callbacks.h
+14 −0 source/external/libcbor/cbor/cbor_export.h
+163 −0 source/external/libcbor/cbor/common.c
+339 −0 source/external/libcbor/cbor/common.h
+46 −0 source/external/libcbor/cbor/configuration.h
+264 −0 source/external/libcbor/cbor/data.h
+200 −0 source/external/libcbor/cbor/encoding.c
+140 −0 source/external/libcbor/cbor/encoding.h
+189 −0 source/external/libcbor/cbor/floats_ctrls.c
+240 −0 source/external/libcbor/cbor/floats_ctrls.h
+422 −0 source/external/libcbor/cbor/internal/builder_callbacks.c
+85 −0 source/external/libcbor/cbor/internal/builder_callbacks.h
+98 −0 source/external/libcbor/cbor/internal/encoders.c
+41 −0 source/external/libcbor/cbor/internal/encoders.h
+80 −0 source/external/libcbor/cbor/internal/loaders.c
+43 −0 source/external/libcbor/cbor/internal/loaders.h
+57 −0 source/external/libcbor/cbor/internal/memory_utils.c
+50 −0 source/external/libcbor/cbor/internal/memory_utils.h
+33 −0 source/external/libcbor/cbor/internal/stack.c
+53 −0 source/external/libcbor/cbor/internal/stack.h
+95 −0 source/external/libcbor/cbor/internal/unicode.c
+33 −0 source/external/libcbor/cbor/internal/unicode.h
+190 −0 source/external/libcbor/cbor/ints.c
+211 −0 source/external/libcbor/cbor/ints.h
+125 −0 source/external/libcbor/cbor/maps.c
+121 −0 source/external/libcbor/cbor/maps.h
+368 −0 source/external/libcbor/cbor/serialization.c
+168 −0 source/external/libcbor/cbor/serialization.h
+600 −0 source/external/libcbor/cbor/streaming.c
+37 −0 source/external/libcbor/cbor/streaming.h
+142 −0 source/external/libcbor/cbor/strings.c
+183 −0 source/external/libcbor/cbor/strings.h
+46 −0 source/external/libcbor/cbor/tags.c
+74 −0 source/external/libcbor/cbor/tags.h
+51 −42 source/json.c
+1 −1 source/posix/clock.c
+19 −0 source/posix/thread.c
+1 −1 source/priority_queue.c
+2 −18 source/windows/device_random.c
+1 −0 source/windows/thread.c
+11 −0 tests/CMakeLists.txt
+2 −0 tests/assert_test.c
+58 −1 tests/byte_buf_test.c
+489 −0 tests/cbor_test.c
+18 −14 tests/condition_variable_test.c
+9 −7 tests/error_test.c
+87 −0 tests/fuzz/cbor_decoding_transitive.c
+66 −0 tests/fuzz/cbor_double_encode_decode.c
+12 −7 tests/json_test.c
+212 −184 verification/cbmc/proofs/Makefile.common
+4 −1 verification/cbmc/sources/utils.c
9 changes: 7 additions & 2 deletions native/src/crc.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,15 @@

AWS_DOTNET_API
uint32_t aws_dotnet_crc32(const uint8_t *input, int length, uint32_t previous) {
return aws_checksums_crc32(input, length, previous);
return aws_checksums_crc32_ex(input, (size_t)length, previous);
}

AWS_DOTNET_API
uint32_t aws_dotnet_crc32c(const uint8_t *input, int length, uint32_t previous) {
return aws_checksums_crc32c(input, length, previous);
return aws_checksums_crc32c_ex(input, (size_t)length, previous);
}

AWS_DOTNET_API
uint64_t aws_dotnet_crc64nvme(const uint8_t *input, int length, uint64_t previous) {
return aws_checksums_crc64nvme_ex(input, (size_t)length, previous);
}
18 changes: 18 additions & 0 deletions tests/CrcTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,23 @@ public void TestCrc32cLargeBuffer()
uint expected = 0xfb5b991d;
Assert.Equal(expected, res);
}
[Fact]
public void TestCrc64NVMEZeroes()
{
byte[] zeroes = new byte[32];
ulong res = Crc.crc64nvme(zeroes);
ulong expected = 0xCF3473434D4ECF3B;
Assert.Equal(expected, res);
}
[Fact]
public void TestCrc64NVMEZeroesIterated()
{
ulong res = 0;
for (int i = 0; i < 32; i++) {
res = Crc.crc64nvme(new byte[1], res);
}
ulong expected = 0xCF3473434D4ECF3B;
Assert.Equal(expected, res);
}
}
}
Loading