aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:45:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:01 +0300
commit2d37894b1b037cf24231090eda8589bbb44fb6fc (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c
parent718c552901d703c502ccbefdfc3c9028d608b947 (diff)
downloadydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c')
-rw-r--r--contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c320
1 files changed, 160 insertions, 160 deletions
diff --git a/contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c b/contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c
index baed622b78..4f049af86a 100644
--- a/contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c
+++ b/contrib/restricted/aws/s2n/pq-crypto/bike_r2/utilities.c
@@ -1,160 +1,160 @@
-/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- * SPDX-License-Identifier: Apache-2.0"
- *
- * Written by Nir Drucker and Shay Gueron
- * AWS Cryptographic Algorithms Group.
- * (ndrucker@amazon.com, gueron@amazon.com)
- */
-
-#include "utilities.h"
-#include <inttypes.h>
-
-#define BITS_IN_QW 64ULL
-#define BITS_IN_BYTE 8ULL
-
-// Print a new line only if we prints in qw blocks
-_INLINE_ void
-print_newline(IN const uint64_t qw_pos)
-{
-#ifndef NO_NEWLINE
- if((qw_pos % 4) == 3)
- {
- printf("\n ");
- }
-#endif
-}
-
-// This function is stitched for R_BITS vector
-uint64_t
-r_bits_vector_weight(IN const r_t *in)
-{
- uint64_t acc = 0;
- for(size_t i = 0; i < (R_SIZE - 1); i++)
- {
- acc += __builtin_popcount(in->raw[i]);
- }
-
- acc += __builtin_popcount(in->raw[R_SIZE - 1] & LAST_R_BYTE_MASK);
- return acc;
-}
-
-// Prints a QW in LE/BE in win/linux format
-_INLINE_ void
-print_uint64(IN const uint64_t val)
-{
-// If printing in BE is required swap the order of bytes
-#ifdef PRINT_IN_BE
- uint64_t tmp = bswap_64(val);
-#else
- uint64_t tmp = val;
-#endif
-
- printf("%.16" PRIx64, tmp);
-
-#ifndef NO_SPACE
- printf(" ");
-#endif
-}
-
-// Last block requires a special handling as we should zero mask all the bits
-// above the desired number endien - 0 - BE, 1 - LE Return 1 if last block was
-// printed else 0
-_INLINE_ uint8_t
-print_last_block(IN const uint8_t *last_bytes,
- IN const uint32_t bits_num,
- IN const uint32_t endien)
-{
- // Floor of bits/64 the reminder is in the next QW
- const uint32_t qw_num = bits_num / BITS_IN_QW;
-
- // How many bits to pad with zero
- const uint32_t rem_bits = bits_num - (BITS_IN_QW * qw_num);
-
- // We read byte byte and not the whole QW to avoid reading bad memory address
- const uint32_t bytes_num = ((rem_bits % 8) == 0) ? rem_bits / BITS_IN_BYTE
- : 1 + rem_bits / BITS_IN_BYTE;
-
- // Must be signed for the LE loop
- int i;
-
- if(0 == rem_bits)
- {
- return 0;
- }
-
- // Mask unneeded bits
- const uint8_t last_byte = (rem_bits % 8 == 0)
- ? last_bytes[bytes_num - 1]
- : last_bytes[bytes_num - 1] & MASK(rem_bits % 8);
- // BE
- if(0 == endien)
- {
- for(i = 0; (uint32_t)i < (bytes_num - 1); i++)
- {
- printf("%.2x", last_bytes[i]);
- }
-
- printf("%.2x", last_byte);
-
- for(i++; (uint32_t)i < sizeof(uint64_t); i++)
- {
- printf("__");
- }
- }
- else
- {
- for(i = sizeof(uint64_t) - 1; (uint32_t)i >= bytes_num; i--)
- {
- printf("__");
- }
-
- printf("%.2x", last_byte);
-
- for(i--; i >= 0; i--)
- {
- printf("%.2x", last_bytes[i]);
- }
- }
-
-#ifndef NO_SPACE
- printf(" ");
-#endif
-
- return 1;
-}
-
-void
-print_LE(IN const uint64_t *in, IN const uint32_t bits_num)
-{
- const uint32_t qw_num = bits_num / BITS_IN_QW;
-
- // Print the MSB QW
- uint32_t qw_pos = print_last_block((const uint8_t *)&in[qw_num], bits_num, 1);
-
- // Print each 8 bytes separated by space (if required)
- for(int i = ((int)qw_num) - 1; i >= 0; i--, qw_pos++)
- {
- print_uint64(in[i]);
- print_newline(qw_pos);
- }
-
- printf("\n");
-}
-
-void
-print_BE(IN const uint64_t *in, IN const uint32_t bits_num)
-{
- const uint32_t qw_num = bits_num / BITS_IN_QW;
-
- // Print each 16 numbers separatly
- for(uint32_t i = 0; i < qw_num; ++i)
- {
- print_uint64(in[i]);
- print_newline(i);
- }
-
- // Print the MSB QW
- print_last_block((const uint8_t *)&in[qw_num], bits_num, 0);
-
- printf("\n");
-}
+/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0"
+ *
+ * Written by Nir Drucker and Shay Gueron
+ * AWS Cryptographic Algorithms Group.
+ * (ndrucker@amazon.com, gueron@amazon.com)
+ */
+
+#include "utilities.h"
+#include <inttypes.h>
+
+#define BITS_IN_QW 64ULL
+#define BITS_IN_BYTE 8ULL
+
+// Print a new line only if we prints in qw blocks
+_INLINE_ void
+print_newline(IN const uint64_t qw_pos)
+{
+#ifndef NO_NEWLINE
+ if((qw_pos % 4) == 3)
+ {
+ printf("\n ");
+ }
+#endif
+}
+
+// This function is stitched for R_BITS vector
+uint64_t
+r_bits_vector_weight(IN const r_t *in)
+{
+ uint64_t acc = 0;
+ for(size_t i = 0; i < (R_SIZE - 1); i++)
+ {
+ acc += __builtin_popcount(in->raw[i]);
+ }
+
+ acc += __builtin_popcount(in->raw[R_SIZE - 1] & LAST_R_BYTE_MASK);
+ return acc;
+}
+
+// Prints a QW in LE/BE in win/linux format
+_INLINE_ void
+print_uint64(IN const uint64_t val)
+{
+// If printing in BE is required swap the order of bytes
+#ifdef PRINT_IN_BE
+ uint64_t tmp = bswap_64(val);
+#else
+ uint64_t tmp = val;
+#endif
+
+ printf("%.16" PRIx64, tmp);
+
+#ifndef NO_SPACE
+ printf(" ");
+#endif
+}
+
+// Last block requires a special handling as we should zero mask all the bits
+// above the desired number endien - 0 - BE, 1 - LE Return 1 if last block was
+// printed else 0
+_INLINE_ uint8_t
+print_last_block(IN const uint8_t *last_bytes,
+ IN const uint32_t bits_num,
+ IN const uint32_t endien)
+{
+ // Floor of bits/64 the reminder is in the next QW
+ const uint32_t qw_num = bits_num / BITS_IN_QW;
+
+ // How many bits to pad with zero
+ const uint32_t rem_bits = bits_num - (BITS_IN_QW * qw_num);
+
+ // We read byte byte and not the whole QW to avoid reading bad memory address
+ const uint32_t bytes_num = ((rem_bits % 8) == 0) ? rem_bits / BITS_IN_BYTE
+ : 1 + rem_bits / BITS_IN_BYTE;
+
+ // Must be signed for the LE loop
+ int i;
+
+ if(0 == rem_bits)
+ {
+ return 0;
+ }
+
+ // Mask unneeded bits
+ const uint8_t last_byte = (rem_bits % 8 == 0)
+ ? last_bytes[bytes_num - 1]
+ : last_bytes[bytes_num - 1] & MASK(rem_bits % 8);
+ // BE
+ if(0 == endien)
+ {
+ for(i = 0; (uint32_t)i < (bytes_num - 1); i++)
+ {
+ printf("%.2x", last_bytes[i]);
+ }
+
+ printf("%.2x", last_byte);
+
+ for(i++; (uint32_t)i < sizeof(uint64_t); i++)
+ {
+ printf("__");
+ }
+ }
+ else
+ {
+ for(i = sizeof(uint64_t) - 1; (uint32_t)i >= bytes_num; i--)
+ {
+ printf("__");
+ }
+
+ printf("%.2x", last_byte);
+
+ for(i--; i >= 0; i--)
+ {
+ printf("%.2x", last_bytes[i]);
+ }
+ }
+
+#ifndef NO_SPACE
+ printf(" ");
+#endif
+
+ return 1;
+}
+
+void
+print_LE(IN const uint64_t *in, IN const uint32_t bits_num)
+{
+ const uint32_t qw_num = bits_num / BITS_IN_QW;
+
+ // Print the MSB QW
+ uint32_t qw_pos = print_last_block((const uint8_t *)&in[qw_num], bits_num, 1);
+
+ // Print each 8 bytes separated by space (if required)
+ for(int i = ((int)qw_num) - 1; i >= 0; i--, qw_pos++)
+ {
+ print_uint64(in[i]);
+ print_newline(qw_pos);
+ }
+
+ printf("\n");
+}
+
+void
+print_BE(IN const uint64_t *in, IN const uint32_t bits_num)
+{
+ const uint32_t qw_num = bits_num / BITS_IN_QW;
+
+ // Print each 16 numbers separatly
+ for(uint32_t i = 0; i < qw_num; ++i)
+ {
+ print_uint64(in[i]);
+ print_newline(i);
+ }
+
+ // Print the MSB QW
+ print_last_block((const uint8_t *)&in[qw_num], bits_num, 0);
+
+ printf("\n");
+}